寻找教育/示例教育自己在每个多维3D碰撞
我一直在寻找一个关于3D每顶点碰撞系统的教程(使用C#和XNA,因为我已经可用),但只有能够放在一起的零碎。在这一点上我有一个很好的理解,但是我的理解中有一个相当大的,明显的漏洞。寻找教育/示例教育自己在每个多维3D碰撞
基本上,我的问题归结为:我如何获得多晶硅和他们的信息?
有没有人有任何好的参考?
注意:虽然我使用XNA并且对该系统最感兴趣,但这更像是一种自我教育的练习,而且我对如何在其他系统中执行此操作感兴趣(如OpenGL,等等)
澄清: 我的意思是“如何获得多晶硅”,如果我有一个3D对象,甚至是应用于该对象的动画,是否有一个系统用于检索渲染的多晶硅'测试的信息(职位等)?最合理的做法是在poly信息被渲染后检索poly信息,但这听起来非常昂贵,我不知道如何去做这件事。我不确定是否有更好的方法,或者如果在该级别检索提供的信息甚至是可能的。
您可以从模型中获取多边形信息。将会有一组调用和/或方法返回你的东西,如点列表,法线,纹理坐标等,以及引用这些其他数组的面的列表。
一旦将数据发送到显卡进行渲染,它可能(以前很好)很难获得。同样,一旦它被渲染,信息是在2D而不是3D。
如果仅因为即使是中度复杂的模型也可能包含数百个(如果不是数千个)多边形,则每个多边形碰撞都很昂贵。第一步是通过执行边界框碰撞尝试并消除大部分信息。这些会告诉你,场景中的大多数物体不会相互碰撞。然后,您可以专注于边界框以某种方式相交的情况。使用边界球是另一种方式,可能会给你更少的误报,因为球体会比盒子更紧密地约束物体。虽然计算可能会更贵一些。
下一步是将测试对象中的每个多边形取出并与其他对象进行核对。再次从边界框/球体测试开始,然后检查其他对象中的所有多边形。
你需要的数学应该涵盖在任何像样的3d图形书籍上。
碰撞检测是完全独立于XNA/OpenGL /等。我并不确定你的意思是“如何获得多边形及其信息?”,你可以从任何你想要的地方(模型,文件,大脑等)获得多边形。 – Zifre 2009-07-09 14:41:32