【问题标题】:How to change the color of an in three.js loaded object with JSONLoader如何使用 JSONLoader 更改在 three.js 中加载的对象的颜色
【发布时间】: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


【解决方案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);

【讨论】:

  • 如果我想让子对象cube= object.getObjectByName("3DSMesh_1", true); 像一盏灯一样发光,你知道我该怎么做吗?我已经可以访问孩子并创建一个 DirectionalLight。但是我怎样才能将光设置到立方体上以使整个立方体发光呢?我必须测试立方体的坐标还是可以将光添加到立方体?其次,您认为 DirectionalLight 还是 PointLight 更好? (这只是我希望汽车的前灯/背光灯发光的项目的一个示例)
  • 我认为最好在 SO 上提出另一个问题
  • 好的,谢谢!我昨天做了:link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2015-10-15
  • 2013-04-27
  • 2018-11-26
  • 2015-11-22
  • 2012-06-30
  • 1970-01-01
相关资源
最近更新 更多