四叶参

首页 » 常识 » 预防 » Verge3D射线检测拼图的功能和用法
TUhjnbcbe - 2020/10/7 17:42:00
儿童得白癜风的原因 http://baidianfeng.39.net/a_zzzl/140513/4387800.html
射线检测

Verge3D3.4版场景(Scene)拼图下新增了一个raycast拼图,我们可以叫它射线或射线检测拼图,该拼图能够从源点发射一条无限长的射线,并且贯穿三维场景中的任何物体,它能够获取经过物体的名称、源点与交点的距离、交点的三维坐标、交点法线坐标、交点UV坐标等信息。基于该拼图能够实现很多高级功能:

自定义三维交互事件(如双击)

相机传送

吸附物体表面

物体遮挡判断

碰撞检测...

如何使用

我们一起来了解一下这个新拼图吧。

raycast拼图有3个插槽:源点、方向、相交物体。

源点就是发射射线的源点,可以是任何物体;

方向是一个矢量,可以是物体的方向(使用getobjectdirection拼图),相机的方向(使用getcameradirection拼图),也可以是通过矢量运算得到的方向;

相交物体是限制与场景中的哪些物体相交,保持None或Scene表示没有限制。

该拼图返回的数据稍微有些复杂,与其它大多数拼图返回一个静态数据不同,它会返回一组动态数据。

如果射线不与场景中的任何物体相交,它会返回一个空的列表,打印到控制台会输出:[]。

如果射线与一个物体相交,它会返回一个包含一个字典的列表,这个字典中包含以下数据项:

object-相交物体名称

distance-源点与交点的距离

point-交点的三维坐标

normal-交点法线坐标

uv-交点UV坐标

如果射线与多个物体相交,它会返回一个包含多个字典的列表,字典数据项与上面的相同,每个字典按相交物体的远近排序,近的在前。

所以,在处理返回数据时要做一个判断,根据列表是否为空或列表长度,做不同的处理。

以下拼图可以实现当点击场景中任何物体时,让立方体定位到点击位置,这是《用户手册》中的示例:

更进一步

需要提示一下,这个示例拼图虽然是开发团队提供的,但是也存在优化空间,我会在进阶课中演示正确的做法,还有前面提到的一些功能,比如实现三维中双击事件,传送,吸附表面等等。

1
查看完整版本: Verge3D射线检测拼图的功能和用法