Javascript 在three.js中遍历JSON对象

Javascript 在three.js中遍历JSON对象,javascript,json,Javascript,Json,我正在学习使用遍历来更改JSON对象的颜色。可以找到im使用的JSON对象。我的代码如下: <script> var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); var controls = new

我正在学习使用遍历来更改JSON对象的颜色。可以找到im使用的JSON对象。我的代码如下:

<script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, 
window.innerWidth/window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
var controls = new THREE.OrbitControls( camera );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild(renderer.domElement);

var loader = new THREE.ObjectLoader();
    loader.load ("models/shoe4.json", function (obj) {

    obj.traverse( function (child){
        if (child.materials.name == "material-fabric"){
            child.materials.color = new THREE.Color( 0xff0000 );
        }
    })

    scene.add (obj);
});


camera.position.z = 100;

var render = function(){
    requestAnimationFrame( render );
    renderer.render( scene, camera );
}
render();


</script>

我把鞋子放回屏幕上。遍历部分有什么问题吗?

的可能重复我认为它是重复的。
child.materials
是一个数组,因此没有
.name
属性。您必须执行另一个循环,通过
子.materials
数组循环以实现您想要的结果
 obj.traverse( function (child){
    if (child.materials.name == "material-fabric"){
        child.materials.color = new THREE.Color( 0xff0000 );
    }
})