首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

请教怎么确定空间一点是否在视锥之内

2012-02-15 
请问如何确定空间一点是否在视锥之内?感觉直观的方法就是直接求点是否在6个面组成的空间体内。D3D中有没有

请问如何确定空间一点是否在视锥之内?
感觉直观的方法就是直接求点是否在6个面组成的空间体内。

D3D中有没有更直接、高效的方法呢?   谢谢!

[解决办法]
有更简单的吗?

一般都是把视锥从clip space转到view space或者world space中,然后优化一下判断什么的

d3dx提供了更好的函数?不知道
[解决办法]
利用硬件功能?

点不在视锥内,所以不会写到frame buffer中,又比如利用stencil buffer?
如何让app知道?回读?查询?
[解决办法]
判断6个视平面 和点的距离
[解决办法]
从该点发射一条射线,如果这条射线没有穿过或者穿过2次视锥,那么说明这个点在视锥外
[解决办法]
补充一个:
点经过复合变换(world*view*projection)后,看看是不是落在[-1,1]x[-1,1]x[...]内...

[解决办法]
最简单的办法,用Occlusion Query,但是对于多个点,很耗时间
具体的办法要看你的应用了,如果做view frustum culling,那么要提取6个视锥面,然后分别判断点到面的距离。
如果你只是看一看,那么把点画大一些,背景刷成和点不同的颜色,然后用眼看就行了。
[解决办法]
D3D没有现成的函数
[解决办法]
直接投影到screen coordinate system就知道是不是在视锥里了。
[解决办法]
把你这个视锥作四面体分割吧,就是全部分割成四面体,然后判定点与这些四面体的位置关系就好了。

热点排行