【发布时间】:2017-03-19 22:38:05
【问题描述】:
我使用 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 对象有“孩子”,“名字”:“3DSMesh_0”和“名字”:“3DSMesh_1”。如何访问它们以仅操作对象的一部分而不是整个对象?
如果您能帮助我,我将非常感激,因为我是 Javascript 的初学者。
【问题讨论】:
-
尝试
var part1 = object.getObjectByName('3DSmesh_1');,然后part1.material.color.setHex(...); -
谢谢,我通过 getObjectByName() 实现了对子节点的操作。但是使用 part1.material.color.setHex(0x666666);例如对象的颜色不会改变。
-
那里有什么类型的材料?喜欢
console.log(part1.material);。 -
谢谢我想通了。你知道如何访问加载器之外的对象吗?例如,我想访问该对象以使用它创建函数。我尝试使用“loader1.load('...', function (object) { return object;}”并尝试在加载器外部使用“scene.add(object);”但它没有用。
-
声明一个全局变量,例如
var myObj;,然后在onLoad()里面的回调集就是myObj = object
标签: javascript json three.js