如何用JSONLoader改变在js中加载的对象的颜色

How to change the color of an in three.js loaded object with JSONLoader

本文关键字:加载 对象 颜色 js 何用 JSONLoader 改变      更新时间:2023-09-26

我用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对象有"子","name":"3DSMesh_0"answers"name":"3DSMesh_1"。我如何使用它们来操作对象的一部分而不是整个对象?

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

最好举个例子来回答你上次的评论。

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);