如何使用JSONLoader更改three.js加载对象的颜色

时间:2016-11-06 14:56:56

标签: javascript json three.js

我使用AssimpJSONLoader在Three.js中加载了一个对象。 对象cube_cone是一个简单的3D模型,它包含一个立方体,顶部有一个圆锥体。

var loader1 = new THREE.AssimpJSONLoader(); 
loader1.load( 'models/assimp/cube_cone.json', function ( object ) {
        object.scale.multiplyScalar( 1 );
        object.material.color.setHex(0x666666);
        scene.add( object );

}, onProgress, onError );

首先,我想改变对象的颜色。我该怎么做?我尝试过:" object.material.color.setHex(...);"。

其次,我只想操纵子对象的颜色,例如只是锥形。 test_cone.json对象有" children"使用" name":" 3DSMesh_0"和"名称":" 3DSMesh_1"。我怎样才能访问它们来操纵对象的一部分而不是整个?

如果你能帮助我,我将非常感激,因为我是Javascript的初学者。

1 个答案:

答案 0 :(得分:1)

最好以一个例子作为你最后评论的答案。

var myObj = new THREE.Group(); //global variable
...
var loader1 = new THREE.AssimpJSONLoader(); 
loader1.load( 'models/assimp/cube_cone.json', function ( object ) {//onLoad callback
    myObj = object; //assign object to the global variable inside the callback
}, onProgress, onError );
...
function animate(){
    ...
    myObj.rotation.y += 0.1;// using the global variable in your animation function
    ...
}

您也可以指定object的孩子,例如

myObj = object.getObjectByName("3DSMesh_1", true);