社区
游戏开发
帖子详情
D3D中MESH是否被1个平面所分割MESH与1个平面相交的检测判断的代码如何做?
renxu350
2011-04-12 08:48:09
如题,D3D中MESH与1个平面相交的检测判断如何做?
也就是MESH是否被1个平面所分割,
常用的,通常的做法有什么具体的详细的函数,代码什么的?
...全文
137
3
打赏
收藏
D3D中MESH是否被1个平面所分割MESH与1个平面相交的检测判断的代码如何做?
如题,D3D中MESH与1个平面相交的检测判断如何做? 也就是MESH是否被1个平面所分割, 常用的,通常的做法有什么具体的详细的函数,代码什么的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sou2012
2011-04-13
打赏
举报
回复
可以把mesh生成一个包围盒, 然后再和平面做检测。
Sou2012
2011-04-13
打赏
举报
回复
虑3D中由极值点pmin和pmax定义的AABB和以标准方式定义的平面:p . n = d,其中n为单位向量,平面与AABB必须处于相同的坐标系中。
一种简单的静态测试方法是,计算矩形边界框顶点和n的点积,通过比较点积和d,来检测边界框的顶点是否完全在平面的一边,或是在另外一边。如果所有点积都大于d,那么整个边界框就在平面的正面所指的一侧;如果所有的点积都小于d,那么整个边界框就在平面的反面所指的一侧。
实际上,不需要检测全部的8个顶点,可以用和变换AABB类似的技巧,例如,如果nx > 0,点积最小的顶点是x = xmin,点积最大的顶点是x= xmax。如果nx < 0,则得出的是相反的结论。对ny、nz也有同样的结论。我们计算最小和最大点积的值,如果最小点积大于d或最大点积小于d,说明它们不相交;否则,两个点在平面的两边,说明边界框与平面相交。
接下来进行动态测试,我们假设平面是静止的(以一个移动物体为参考来考虑它们的相交性检测会比较简单)。边界框的位移由单位向量d和长度L定义,和前面一样,先求得点积最大和最小的顶点,并在t=0时作一次相交性检测,如果边界框和平面最初没有相交,那么一定是离平面最近的顶点先接触平面,它可能就是前一步检测出的两个顶点之一。如果只对与平面的"正面"碰撞感兴趣,那么总是使用点积最小的顶点。一旦检测出先接触到平面的顶点,就可以利用射线与平面的相交性测试来解决问题。
IONPhantom
2011-04-13
打赏
举报
回复
如果不需要非常精确的话就用包围盒,检测8个点是否在平面的两侧,如果都在一侧就无穿越
检测点在一个平面的某一侧总不能不会吧
D
3D
X
中
Mesh
以及Boundsphered应用
这两个数据结构对于优化性能至关重要,因为它们允许我们快速地
判断
两个物体
是否
可能
相交
,或者一个物体
是否
在相机的视野内,而无需对每个单独的顶点进行比较。 在博文链接
中
提到的“110621-ice
Mesh
”可能是某个特定...
DIRECTX.9.0.
3D
游戏开发编程基础.pdf
射线与
平面
的
相交
小结 第Ⅱ部分 Direct
3D
基础 第1章 初始化Direct
3D
1.1 Direct
3D
概述 1.1.1 REF设备 1.1.2 D
3D
DEVTYPE 1.2 COM(组件对象模型) 1.3 预备知识 1.3.1 表面 1.3.2 多重采样 1.3.3 像素...
Introduction to
3D
Game Programming with DirectX 9.0
射线与
平面
的
相交
32 小结 32 第Ⅱ部分 Direct
3D
基础 第1章 初始化Direct
3D
37 1.1 Direct
3D
概述 37 1.1.1 REF设备 38 1.1.2 D
3D
DEVTYPE 38 1.2 COM(组件对象模型) 38 1.3 预备知识 39 1.3.1 表面 39 ...
PCL 计算一个
平面
与包围盒体素的
相交
线
PCL 计算一个
平面
与包围盒体素的
相交
线
PCL 计算一个
平面
与一个包围盒的
相交
线
PCL 计算一个
平面
与一个包围盒的
相交
线
游戏开发
8,325
社区成员
23,684
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章