随笔-2  评论-7  文章-2  trackbacks-0

昨天花了一天时间做了GPU Gems中的环境遮蔽的预处理程序
遗憾的是处理的结果及其糟糕,几乎所有顶点的遮蔽信息都是完全遮蔽,
今天又花了不少时间调试发现那段从网上找来的射线与三角形相交检测的函数有问题,
又Google了一番发现D3DX果然是带了这个功能的函数的,具体声明如下:

BOOL ::D3DXIntersectTri(const D3DXVECTOR3 *p0,
const D3DXVECTOR3 *p1,
const D3DXVECTOR3 *p2,
const D3DXVECTOR3 *position,
const D3DXVECTOR3 *direction,
float *u,
float *v,
float *distance);


其中p0, p1, p2分别指向三角形的三个顶点,position为射线起点,direction为射线方向向量,u,v,为交点重心坐标(我是没弄明白这是个什么东东),distance为起点到交点距离
成功返回TRUE,失败返回FALSE。

代到程序里一试,果然成功了~~~于是把这个贴出来,不知道的人看到也能少走点弯路~
另外希望把代码贴到网上的人也应该先确认其正确性了再贴。

posted on 2009-08-26 19:51 Vertexer 阅读(1463) 评论(2)  编辑 收藏 引用

评论:
# re: D3D中射线与三角形相交检测[未登录] 2010-01-03 17:30 | David
D3D使用的是Moller(他好像是real-time rendering的第一作者)的Ray/Triangle Intersection Algorithm。So,u,v是三角形的重心坐标。所得的交点坐标是u*p0+v*p1+(1-u-v)*p2.  回复  更多评论
  
# re: D3D中射线与三角形相交检测[未登录] 2010-01-26 22:33 | 寰子
多谢,找了很久了。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理