2015-12-31 62 views
1

光线投射选择对于我的静态网格物体工作正常,但对于动画网格物体,光线选择似乎看不到网格物体的运动,只响应网格物体的非动画(原始)职位。Three.js使用动画进行光线投射物体选择

我的选择代码如下:

element.addEventListener('mouseup', function (event) 
{ 

    var vector = new THREE.Vector3((event.clientX/window.innerWidth) * 2 - 1, -(event.clientY/window.innerHeight) * 2 + 1, 0.5); 
    vector = vector.unproject(camera); 
    var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); 
    var intersects = raycaster.intersectObjects(pickable_objects, true); 

    if (intersects.length > 0) 
    { 
     //I change the object's material colour so that I can see the selection 
    } 
} 

哪里pickable_objects是可选择,这些不带动画的信息,据我所知three.js所网格对象的数组,这样的结果我抱怨对一些人来说可能并不令人惊讶。

我没有在这里包含颜色变化代码或JSON网格读取器代码,因为我不相信它是相关的。

静态

所以啮合的光线投射是非常准确的,但对于动画网格我有对象的中心单击或找到它的原始非动画的位置,使评选工作。

回答

1

如果你看一下在GitHub库,特别是Raycaster.js的源代码,你会看到实际执行的几何对象。例如,Mesh.js通过遍历其三角形并检查光线是否与其中任何一个相交来实现光线投射,但SkinnedMesh.js不覆盖此方法。

最后,在问题页面中快速搜索显示这实际上是一个已知的限制 - https://github.com/mrdoob/three.js/issues/6440

你似乎留下了2个选项 - 在github中碰到问题,并要求ETA或自己实现(并希望后来发送拉请求)。

+0

谢谢您的回答,这是很烦人的,我会检查出来的源和压到git的页面。 –