在一个three.js场景中选择和修改素材。

问题描述 投票:1回答:2

我有一个scene(object)json文件,里面有这个结构,我用ObjectLoader加载。enter image description here一旦添加到场景中,我想修改纹理,添加参数,如THREE.SmoothShading,添加一个envMap...我知道如何找到一个对象: var obj = scene.getObjectByName( "bas", true );但我不知道如何选择一个材质,并使用这个材质对所有对象进行修改。

在网上找不到任何东西,有人能帮助吗?

问候

javascript select three.js key-value
2个回答
0
投票

这就是你如何遍历你的场景和设置 castShadow 标志的对象上。你可以在这里添加更多的检查。

object.traverse( function ( child ) {

    if ( child instanceof THREE.Mesh ) {

        child.castShadow = true;

    }
});

0
投票

好吧,首先,当一个场景对象被加载到three.js中时,它不再有相同的结构。

THREE.Scene {id: 1, uuid: "EF1E7D35-66B9-466E-98B6-E62FC4A7AF46", name: "", parent: undefined, children: Array[1]…}
  __lights: Array[3]
    0: THREE.DirectionalLight
    1: THREE.DirectionalLight
    2: THREE.DirectionalLight
  length: 3
  __proto__: Array[0]
  __objectsAdded: Array[0]
  __objectsRemoved: Array[0]
  __webglFlares: Array[0]
  __webglObjects: Array[17]
  __webglObjectsImmediate: Array[0]
  __webglSprites: Array[0]
  .....

所以,如果你想修改第一盏灯,你可以做的是

scene.__lights[0].castShadow << true;

或者我想

scene.__lights[0] << {castShadow: true}

更多的了解后马上就来。

© www.soinside.com 2019 - 2024. All rights reserved.