Zed*_*Bee 3 textures webgl three.js
我试图将纹理添加到我转换为json并从3ds Max导入的模型.我搜索但没有找到任何在线使用three.js r53将纹理应用于json模型的代码.我想Three.js处理纹理的方式与以前的版本有所不同.任何指导?
以下是我的代码:
var texloader = new THREE.TextureLoader();
var tex=texloader.load("second.jpg");
var mat = new THREE.MeshBasicMaterial({ map: tex });
loader = new THREE.JSONLoader();
loader.load( "js/JsonModels/toothz.js", function( geometry, mat ) {
mat[0].shading = THREE.SmoothShading;
var material = new THREE.MeshFaceMaterial( mat);
mesh = new THREE.Mesh( geometry, material );
mesh.scale.set( 3, 3, 3 );
mesh.position.y = 0;
mesh.position.x = 0;
scene.add( mesh );
} );
Run Code Online (Sandbox Code Playgroud)
可能是旧版本的另一个答案,这就是我的工作方式
var textureLoader = new THREE.TextureLoader();
textureLoader.load(url);
// Add the event listener
textureLoader.addEventListener('load', function(event){
// The actual texture is returned in the event.content
sphere.material.map = event.content;
});
Run Code Online (Sandbox Code Playgroud)
编辑:当我回答这篇文章时,这篇文章已经有一年了,似乎我的答案在API改变之前很快就被发布了.这个答案是行不通的(相信Kumar Sanket Sahu的话,没有经过测试)
即使这个年龄超过一年,因为我现在在寻找解决方案时来到现在:
textureloader在加载纹理后为您提供回调:
var texloader = new THREE.TextureLoader();
texloader.load("second.jpg", function(tex) {
var mat = new THREE.MeshBasicMaterial({ map: tex });
var loader = new THREE.JSONLoader();
loader.load( "js/JsonModels/toothz.js", function( geometry, mat ) {
mat[0].shading = THREE.SmoothShading;
material = new THREE.MeshFaceMaterial( mat);
mesh = new THREE.Mesh( geometry, material );
mesh.scale.set( 3, 3, 3 );
mesh.position.y = 0;
mesh.position.x = 0;
scene.add( mesh );
} );
});
Run Code Online (Sandbox Code Playgroud)
这适用于该示例.