我有一个scene(object)json文件,里面有这个结构,我用ObjectLoader加载。一旦添加到场景中,我想修改纹理,添加参数,如THREE.SmoothShading,添加一个envMap...我知道如何找到一个对象: var obj = scene.getObjectByName( "bas", true );但我不知道如何选择一个材质,并使用这个材质对所有对象进行修改。
在网上找不到任何东西,有人能帮助吗?
问候
这就是你如何遍历你的场景和设置 castShadow
标志的对象上。你可以在这里添加更多的检查。
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.castShadow = true;
}
});
好吧,首先,当一个场景对象被加载到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}
更多的了解后马上就来。