社区
游戏开发
帖子详情
有关View Frustum检测的困惑
xiaolizi
2003-07-31 10:01:23
如果我们的场景中有N个(n>1000)object,如果不考虑场景管理,就简单的做一下基于object的view frustum的检测,怎么做比较快捷? (就是object的bound box和view frustum做检测)
前面有帖子讨论到类似两个长方体的检测,这是一种方法,因为每条边都要做一次检测,这样是不是很慢?
大家有好的建议吗?或者有好的paper,resource可以借鉴?大家讨论讨论。。。
...全文
108
9
打赏
收藏
有关View Frustum检测的困惑
如果我们的场景中有N个(n>1000)object,如果不考虑场景管理,就简单的做一下基于object的view frustum的检测,怎么做比较快捷? (就是object的bound box和view frustum做检测) 前面有帖子讨论到类似两个长方体的检测,这是一种方法,因为每条边都要做一次检测,这样是不是很慢? 大家有好的建议吗?或者有好的paper,resource可以借鉴?大家讨论讨论。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaolizi
2003-08-20
打赏
举报
回复
最近很忙,先把帖子结了,以后有问题再贴出来。
^_^
xiaolizi
2003-08-04
打赏
举报
回复
To ttmmdd(老孩子) , happy__888([顾问团]寻开心)
多谢两位!!!
我去看看看源代码,如果有问题再来请教大家^_^
寻开心
2003-08-04
打赏
举报
回复
上面的两个例子都是做了精确的判断,如果你希望简单,完全可以简化到,只检测盒子的所有顶点是否都在某一个视锥面的一侧。这样做虽然有的时候在视锥外的物体也被包含进来,认为是可见物体了,但是这也没有大碍,毕竟这不是经常发生的。
寻开心
2003-08-04
打赏
举报
回复
http://www.markmorley.com/opengl/frustumculling.html
这里面是OPENGL的例子而且有说明和代码
寻开心
2003-08-04
打赏
举报
回复
Source: DXSDK\Samples\Multimedia\D3D\Cull
DXSDK 8.1当中有样板,就是上面这个工程
看CULL.CPP当中CullObject哪个函数
实际上是多一个面做的切割。
ttmmdd
2003-08-04
打赏
举报
回复
代码在此!
不过没注释,
将就着看把,
会少裁减,能看出来么?
不过问题不大,概率很小.
E_GEOM_RELATION Frustum::Intersect (const Box & AABB )
{
bool isect = false;
Vector3 neg,pos;
Vector3 bMin (AABB.min_p);
Vector3 bMax (AABB.max_p);
for (int i = 0; i < 6; i++)
{
if (planes[i].a > 0.0f)
{
if (planes[i].b > 0.0f)
{
if (planes[i].c> 0.0f)
{
pos.x = bMax.x; pos.y = bMax.y; pos.z = bMax.z;
neg.x = bMin.x; neg.y = bMin.y; neg.z = bMin.z;
}
else
{
pos.x = bMax.x; pos.y = bMax.y; pos.z = bMin.z;
neg.x = bMin.x; neg.y = bMin.y; neg.z = bMax.z;
}
}
else
{
if (planes[i].c > 0.0f)
{
pos.x = bMax.x; pos.y = bMin.y; pos.z = bMax.z;
neg.x = bMin.x; neg.y = bMax.y; neg.z = bMin.z;
}
else
{
pos.x = bMax.x; pos.y = bMin.y; pos.z = bMin.z;
neg.x = bMin.x; neg.y = bMax.y; neg.z = bMax.z;
}
}
}
else
{
if (planes[i].b > 0.0f)
{
if (planes[i].c > 0.0f)
{
pos.x = bMin.x; pos.y = bMax.y; pos.z = bMax.z;
neg.x = bMax.x; neg.y = bMin.y; neg.z = bMin.z;
}
else
{
pos.x = bMin.x; pos.y = bMax.y; pos.z = bMin.z;
neg.x = bMax.x; neg.y = bMin.y; neg.z = bMax.z;
}
}
else
{
if (planes[i].c > 0.0f)
{
pos.x = bMin.x; pos.y = bMin.y; pos.z = bMax.z;
neg.x = bMax.x; neg.y = bMax.y; neg.z = bMin.z;
}
else
{
pos.x = bMin.x; pos.y = bMin.y; pos.z = bMin.z;
neg.x = bMax.x; neg.y = bMax.y; neg.z = bMax.z;
}
}
}
Vector3 normal(this->planes[i].a , this->planes[i].b,this->planes[i].c);
if
(
normal.Dot(pos)+planes[i].d<0.0f
)
return E_GR_SEPERATE ;
else if (normal.Dot(neg)+planes[i].d<0) isect = true;
}
if (isect) return E_GR_INTERSECT;
return E_GR_INCLUDE;
}
xiaolizi
2003-08-01
打赏
举报
回复
To happy__888([顾问团]寻开心)
恭喜升“*“拉。
可以讲的详细些吗?我需要的是具体可以操作的思路,就是说可以直接编码实现的拉。
”使用视锥的六个裁剪面进行检测“ ---> 这个可以详细些吗? 怎么进行检测?是用object的bound box的8个顶点做检测还是bound box的边线做检测?以及检测的方法。。。
不好意思,我的要求比较多。^_^
寻开心
2003-08-01
打赏
举报
回复
视锥裁剪没有什么特殊的地方啊。
都是变换到视空间后,使用视锥的六个裁剪面进行检测,由于在视空间当中视锥的四个侧面都经过原点,前后裁剪面是固定数值,所以检测比较方便。
检测结果有三种情况,物体完全在视锥外部,不显示;完全在视锥内部不用使用D3D的裁剪; 一半在内一半在外才打开D3D的裁剪状态。
xiaolizi
2003-07-31
打赏
举报
回复
也~~~我的帖子怎么看不到,给自己up一下
^_^
F
rust
um
PointNets for 3D Object Detection from RGB-D Data 论文学习笔记
Abstract 论文中直接通过对RGB-D的原始扫描图来对原始点云进行处理。这个方法的关键挑战是如何在大规模场景的点云中对物体进行定位(region Proposal) 相较于只使用3D图的proposal,我们的方法在物体定位中使用了成熟的2D物体
检测
器和额外的3D深度学习。这使得我们的模型在高效的基础上获得很高的召回率(recall 指正例被预测正确的比例) 得益于直接对原始的3D点云进行处理,我们的方法也能够精准的估计3D bonding box,即便是在很高的遮挡率和很稀疏的点云的情况下 Intr
OpenGL 视椎体剔除算法
视椎体剔除算法1. 前言2. 四叉/八叉树/六面体
检测
2.1 概述2.2 算法3. 球/圆锥
检测
3.1 概述3.2 算法 1. 前言 时至今日,许多刚刚下海的3D引擎程序员仍不了解视锥剔除(F
rust
um
Culling)的重要性和益处,这让我和我的小伙伴们感到很震♂惊.我在Flipcode...
F-PointNets
F-PointNets 论文:《F
rust
um
PointNets for 3D Object Detection from RGB-D Data》 Abstract 利用RGB-D进行目标
检测
。尽管之前的方法集中在图像或者3D体素上,常常掩盖自然3D模式和3D数据的不变体,但是我们通过RGB-D扫面直接操作原始点云。但是,这个方法的关键在于如何在大范围扫描(区域候选框)的点云中高效的局部化物体。相比于单独依赖于3D候选区域,我们的方法利用预训练好的2D目标
检测
器和先进的3D深度学习来进行目标局部化,达到即
[3D图形学]视锥剔除入门(翻译)
翻译转载自:https://my.oschina.net/u/999400/blog/170062 英文原文:http://www.flipcode.com/archives/F
rust
um
_Culling.shtml 时至今日,许多刚刚下海的3D引擎程序员仍不了解视锥剔除(F
rust
um
Culling)的重要性和益处,这让我和我的小伙伴们感到很震♂惊.我在Flipcode的论坛中发现尽管网
【转】模型视图矩阵和投影矩阵(webgl笔记)
这段时间在做游戏3D场景生成和2D/3D切换的时候对模型视图矩阵和投影矩阵很头疼,直到看到这篇文章才豁然开朗,这篇文章讲的非常详细易懂,特地转来。 最近在学习WebGL技术的过程中,我补充了一些原本了解甚少的计算机图形学知识。如果有同学和我一样,没有系统学过计算机图形学就接触了3D图形编程,而对不少略为艰深的概念有
困惑
,希望这些笔记能够帮助你。 模型矩阵 我们必须考虑,当空间中点的
游戏开发
8,325
社区成员
23,684
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章