3D圆环的射线拾取算法
来源:互联网 发布:油蜡皮沙发价格知乎 编辑:程序博客网 时间:2024/04/25 08:34
通常的射线拾取为了保证精度,最后都需要三角形碰撞检测,在圆环体中如果采用这种方法,当曲线平滑度很高时,小三角形的数量膨胀会降低这种算法的效率,本文介绍一种基于球体碰撞的拾取算法。
原理: 圆环体可以视为由环绕圆环球心一周的一个个圆组成,把这个圆视为一个小球体的过球心的切面时,圆环体可看成一个个的小球组成,射线与圆环碰撞,就会与这些小球碰撞,计算射线与圆环的碰撞点,可以转换为寻找碰撞点最佳的小球。通过观察,我们可以知道射线与球体碰撞点到射线原点距离最短的球体为最佳碰撞小球。(至于证明。。。应该是从比较碰撞点到圆环体距离这个方面入手吧,因为如果碰撞点距离教短时,距离圆环体表面越近,无线接近时,可认为碰撞发生在圆环体表面)
原理: 圆环体可以视为由环绕圆环球心一周的一个个圆组成,把这个圆视为一个小球体的过球心的切面时,圆环体可看成一个个的小球组成,射线与圆环碰撞,就会与这些小球碰撞,计算射线与圆环的碰撞点,可以转换为寻找碰撞点最佳的小球。通过观察,我们可以知道射线与球体碰撞点到射线原点距离最短的球体为最佳碰撞小球。(至于证明。。。应该是从比较碰撞点到圆环体距离这个方面入手吧,因为如果碰撞点距离教短时,距离圆环体表面越近,无线接近时,可认为碰撞发生在圆环体表面)
下面截图是基于此算法实现的一个3D圆环控件:(截图纹理效果没出来,不知道什么原因?)
demo 参考:https://github.com/fallgold/hdr_software_stabilization 或者
http://download.csdn.net/detail/fallgold/6551105
- 3D圆环的射线拾取算法
- 3D射线拾取算法揭秘
- 3D射线拾取算法揭秘
- UE4的射线拾取
- 3D拾取算法--共同探讨
- OGRE最简单的射线拾取详解
- OGRE最简单的射线拾取详解
- OGRE最简单的射线拾取详解
- DirectX 3D_基础之拾取 屏幕到投影窗口的变换 对射线进行变换 射线/物体相交判断
- 3D拾取技术
- Unity 2D射线与 3D射线 UI射线
- 3D模型下的鼠标拣选和碰撞检测-射线与圆的相交算法
- 3D空间中射线与三角形的交叉检测算法
- 3D空间中射线与轴向包围盒AABB的交叉检测算法
- 3D空间中射线与轴向包围盒AABB的交叉检测算法
- 3D空间中射线与三角形的交叉检测算法
- 3D空间中射线与轴向包围盒AABB的交叉检测算法
- 3D空间中射线与三角形的交叉检测算法
- VC++操作word
- poj2407 Relatives 欧拉函数基本应用
- Remove Nth Node From End of List
- Polygon获取中心点坐标
- 【C++】容器list的用法
- 3D圆环的射线拾取算法
- SpringMVC+Mybatis 基于maven archetype 模板项目搭建
- JasperReport学习时的demo
- 大话数据结构--串string
- DirectX 绘制
- VC中进行Office编程
- 利用继承设计管理出版物的类与老师与学生的类
- 一个简单的eclipse + axis1.4 开发webserver
- 单例模式在Java和C#中的实现