带有BackSide材料的Raycaster内盒不起作用

时间:2017-02-03 14:49:49

标签: three.js box raycasting

我正在Tree.js上做一个项目(NICE lib!)。

我有问题。当光线在盒子内部制作时,rayCaster不起作用。

我在这里有一个例子:https://jsfiddle.net/manumid/7sqd6xzs/7/ (摘自https://github.com/mrdoob/three.js/issues/3969)。

盒子材料是THREE.BackSide,我正在使用MultiMaterial因为我需要代表一个具有不同纹理的房间。材料是这样的:

var materials = [
    new THREE.MeshBasicMaterial({color:0xff0000,
                                 side:THREE.BackSide}), // Right
    new THREE.MeshBasicMaterial({color:0x00ff00,
                                 side:THREE.BackSide}), // Left
    new THREE.MeshBasicMaterial({color:0x0000ff,
                                 side:THREE.BackSide}), // Top
    new THREE.MeshBasicMaterial({color:0x222222, 
                                 side:THREE.BackSide}), // Bottom
    new THREE.MeshBasicMaterial({color:0xffff00, 
                                 side:THREE.BackSide}), // Back
    new THREE.MeshBasicMaterial({color:0x00ffff, 
                                 side:THREE.BackSide}), // Front
];

var cubeSidesMaterial = new THREE.MultiMaterial(materials);
var roomGeometry = new THREE.BoxGeometry(4, 4, 4);

var newRoom = new THREE.Mesh(roomGeometry, cubeSidesMaterial);

当光线是从外面制作时,有交叉点,但是与盒子的外表面相对(它可能是一个错误吗?外部面没有纹理!)。这可以从交叉口的距离看出。

无论如何,作为一个时间解决方案,我可以将个别平面加入一个小组。

谢谢!

0 个答案:

没有答案