我使用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的初学者。
答案 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);