【发布时间】:2013-10-19 21:10:53
【问题描述】:
我有一个场景。 https://dl.dropboxusercontent.com/u/8913924/test2/index.html
大多数对象都是从单个 .obj 文件加载的。 加上 2 个手工制作的立方体。
点击对象 - 它应该改变它的颜色。
立方体没问题。 来自 obj 文件的对象一次更改其颜色(但它们不应该,这是我当前的问题)。 (对象上的所有点击都被正确检测到。检查 debug concole。)
需要您的帮助和建议。
添加 2 个手工制作的红色方块:
var geometry = new THREE.CubeGeometry(10,10,10);
var material = new THREE.MeshBasicMaterial({color: 0xff0000});
mesh = new THREE.Mesh(geometry, material);
mesh.position.z = 125;
mesh.name = 'cube1';
scene.add(mesh);
geometry = new THREE.CubeGeometry(10,10,10);
material = new THREE.MeshBasicMaterial({color: 0xff0000});
mesh = new THREE.Mesh(geometry, material);
mesh.position.z = 175;
mesh.name = 'cube2';
scene.add(mesh);
从 .obj 加载对象:
var loader = new THREE.OBJMTLLoader();
loader.addEventListener( 'load', function ( event ) {
var object = event.content;
// cubes are already here
scene.add(object);
}); loader.load( 'qwerty.obj', 'qwerty.mtl' );
更改适当对象的颜色:
var intersects = raycaster.intersectObjects( scene.__objects );
if (intersects.length > 0) {
// got the correct object with proper id
intersects[0].object.material.color.setHex(Math.random() * 0xffffff);
}
【问题讨论】:
-
您必须为几何的顶点/多边形定义不同的颜色
-
我是新手,我没抓住重点。什么网格的几何形状? (我真的不明白为什么立方体和其他对象之间的不同行为——对我来说,它们都是不相关的网格。例子、文章或其他东西都可以。
-
“大多数对象都是从单个 obj 文件加载的”,即网格信息。网格只是收集的多边形。您正在谈论的每个“对象”都是它自己的多边形集合。如果您想要更具体的答案,您将不得不发布代码并专门讨论您想要实现的目标以及不适合您的内容。我不是谷歌。想要教程,google一下。如果您能提供具体问题,我会帮助您解决具体问题。
-
据我所知,您已经为整个几何体分配了相同的材质,而不仅仅是带有 ID 的“对象”。