我查看了文档以及许多示例,但无法找到将材料分配给Collada .dae或OBJLoader .obj文件的正确语法。
在创建Mesh
并将加载器作为几何和材质作为集合材质时,Json文件似乎正常工作。
这样的代码
var loader = new THREE.JSONLoader();
loader.load( "modelPath.js", function(geometry){
var material = new THREE.MeshLambertMaterial({color: 0x666666});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
});
这不起作用
var loader = new THREE.ColladaLoader();
loader.load( "modelPath.dae", function(geometry){
var material = new THREE.MeshLambertMaterial({color: 0x666666});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
});
这不起作用
var loader = new THREE.OBJLoader();
loader.load( "modelPath.obj", function(geometry){
var material = new THREE.MeshLambertMaterial({color: 0x666666});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
});
我还在geometry.material = new THREE.MeshLambertMaterial({ color: 0xff0000});
内尝试function(geometry)
但没有成功。
.Dae格式似乎直接保留了像Cinema这样的3D节目的素材颜色。如何正确设置这些装载机的材料?如果这是可能的话。
答案 0 :(得分:4)
对OBJLoader
:
var loader = new THREE.OBJLoader();
loader.load( 'model.obj', function ( object ) {
var material = new THREE.MeshLambertMaterial( { color: 0x666666 } );
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material = material;
}
} );
scene.add( object );
} );
对于ColladaLoader
,模式类似。
var loader = new THREE.ColladaLoader();
loader.load( 'model.dae', function ( collada ) {
var dae = collada.scene;
scene.add( dae );
} );
three.js r.62