【问题标题】:Raycasting direction relative to global coordinate system , not local相对于全局坐标系的光线投射方向,而不是局部坐标系
【发布时间】:2013-05-04 18:53:50
【问题描述】:

我使用光线投射方法来检测轨道两侧的不同颜色条带,并通过计算距离将我的汽车对象保持在适当的位置。但问题是光线始终指向全局坐标系中的恒定方向,并且不会随着汽车物体的移动(旋转)而改变。如果光线方向在汽车的参考系中,我可能无法弄清楚该怎么做。目前我正在这样做

var ray = new THREE.RayCaster(car.position, new THREE.Vector3(-1,0,0),0,50);

汽车的运动是在X-Z平面上

有人可以指出解决方案吗?

【问题讨论】:

    标签: javascript three.js raycasting


    【解决方案1】:

    您的光线投射是在世界空间中完成的,因此您需要正确的世界空间矢量。

    我假设汽车是场景的子对象,而不是其他旋转对象。

    要构造一个指向汽车在世界坐标系中行驶方向的单位矢量,首先要构造一个指向汽车在其本地坐标系中行驶方向的单位矢量——无论发生在哪个坐标系中你的情况:

    var vector = new THREE.Vector3( -1, 0, 0 );
    

    然后对该向量应用与应用于汽车相同的旋转。

    vector.applyQuaternion( car.quaternion );
    

    编辑:更新到 three.js r.66

    【讨论】:

    • 非常感谢@WestLangley .. 问题已得到解决.. 但正在检测的条带与预期的 wat 相反,即使用 Vector3 检测到世界空间 -ve x 上的条带(1,0,0) 反之亦然.. 我仍然可以在我的逻辑中使用它们,但我想知道它为什么会发生
    • 如果您有其他问题,您需要发布另一个问题。我建议你提供一个简单的活生生的例子(jsfiddle.net)来演示这个问题。
    • Ok ... thnx ... 会提出另一个问题
    猜你喜欢
    • 2014-06-28
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多