3

我查看了文档以及许多示例,但无法找到将材料分配给 Collada .dae 或 OBJLoader .obj 文件的正确语法。

MeshJson 文件在创建 a并将加载器作为几何体和材料作为设置材料时似乎可以正常工作。

像这样的代码有效

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 程序的材质颜色。如何正确为这些装载机设置材料?如果这甚至是可能的。

4

1 回答 1

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 );

} );

三.js r.62

于 2013-10-24T02:19:58.930 回答