我有一个场景。 https://dl.dropboxusercontent.com/u/8913924/test2/index.html
大多数对象都是从单个 .obj 文件加载的。加上 2 个手工制作的立方体。
点击对象 - 它应该改变它的颜色。
立方体没问题。来自 obj 文件的对象一次更改其颜色(但它们不应该,这是我当前的问题)。(正确检测到对象的所有点击。检查调试控制台。)
需要你的帮助和建议。
添加 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 加载 objectcts:
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);
}