3D圆环的射线拾取算法

来源:互联网 发布:油蜡皮沙发价格知乎 编辑:程序博客网 时间:2024/04/25 08:34
  通常的射线拾取为了保证精度,最后都需要三角形碰撞检测,在圆环体中如果采用这种方法,当曲线平滑度很高时,小三角形的数量膨胀会降低这种算法的效率,本文介绍一种基于球体碰撞的拾取算法。


  原理: 圆环体可以视为由环绕圆环球心一周的一个个圆组成,把这个圆视为一个小球体的过球心的切面时,圆环体可看成一个个的小球组成,射线与圆环碰撞,就会与这些小球碰撞,计算射线与圆环的碰撞点,可以转换为寻找碰撞点最佳的小球。通过观察,我们可以知道射线与球体碰撞点到射线原点距离最短的球体为最佳碰撞小球。(至于证明。。。应该是从比较碰撞点到圆环体距离这个方面入手吧,因为如果碰撞点距离教短时,距离圆环体表面越近,无线接近时,可认为碰撞发生在圆环体表面)


 下面截图是基于此算法实现的一个3D圆环控件:(截图纹理效果没出来,不知道什么原因?)

demo 参考:https://github.com/fallgold/hdr_software_stabilization 或者

http://download.csdn.net/detail/fallgold/6551105