【问题标题】:How to assign a material to ColladaLoader or OBJLoader如何将材质分配给 ColladaLoader 或 OBJLoader
【发布时间】:2013-10-24 10:19:58
【问题描述】:

我查看了文档以及许多示例,但无法找到将材料分配给 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);
});

我也在function(geometry) 中尝试了geometry.material = new THREE.MeshLambertMaterial({ color: 0xff0000});,但没有成功。

.Dae 格式似乎直接保留了来自 3D 程序(如 Cinema)的材质颜色。如何正确为这些装载机设置材料?如果这是可能的。

【问题讨论】:

    标签: javascript 3d three.js


    【解决方案1】:

    对于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

    【讨论】:

    • 我得到了错误,TypeError: collada.traverse is not a functioncollada.traverse( function ( child ) {
    • 我的代码中对网格的引用不正确,您的答案是可行的解决方案。
    猜你喜欢
    • 2013-04-18
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多