【问题标题】:Targeting specific material by name in the imported model在导入的模型中按名称定位特定材料
【发布时间】:2014-07-14 21:56:11
【问题描述】:

我正在尝试在 Three.js 中的导入模型(通过 Collada 加载器)中选择特定材料。我知道这可以通过getChildByName 方法完成,但它对我不起作用。我也找不到包含此方法的任何工作示例。

我在这里做错了什么?

loader = new THREE.ColladaLoader();
loader.load('myModel.dae', function ( collada ) {
    model = collada.scene;

    var myMaterial = model.getChildByName( 'materialName', true );
    myMaterial.material = new THREE.MeshBasicMaterial( { wireframe: true } );
});

【问题讨论】:

    标签: three.js


    【解决方案1】:

    我想这就是你所追求的。

    collada.scene.traverse( function ( child ) {
    
        if ( child.material && child.material.name === 'materialName' ) {
    
            child.material = new THREE.MeshBasicMaterial( { wireframe: true } );
    
        }
    
    } );
    

    【讨论】:

    • 谢谢,这(显然)有效。你介意解释一下在什么情况下应该使用getChildByName方法?
    • 嗨@mrdoop 它说THREE.SceneUtils.traverseHierarchy is not a function 我必须做什么??
    • 更新了 API 最新版本的答案。
    猜你喜欢
    • 2018-02-17
    • 2011-07-29
    • 2022-08-05
    • 2017-11-14
    • 2020-07-01
    • 2021-12-29
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多