【问题标题】:Which vertices is observable from the specific camera view in OGRE3D engine?从 OGRE3D 引擎中的特定相机视图可以观察到哪些顶点?
【发布时间】:2014-12-11 08:29:30
【问题描述】:

我是 Ogre3d 的新用户。我的应用是在机器视觉领域。 在这方面,我遇到了一个问题,如果你能帮助我,我非常感激。 在我的应用程序中,加载了骨骼和骨骼的 3D 模型(人体模型)。 我以编程方式更改骨骼角度。我有一个相机视图。

我的问题是如何访问从我的相机视图的角度可观察到的顶点? 换句话说,从特定相机视图的角度来看,哪些顶点是可见的?

我为我糟糕的英语道歉。

【问题讨论】:

  • 我发现 Frustum::isVisible 只检查 AABB 描述的对象是否在截锥体内。但是如果对象被场景挡住了(例如位于山的另一边),它仍然返回真实的意思是它是可见的——这不是我想要的。如何检测相机是否完全看不到物体?

标签: c++ vertex ogre3d


【解决方案1】:

编辑:您正在寻找平截头体和遮挡剔除,这个答案只涉及平截头体部分。

听起来您想检查相机的Frustum

http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_frustum.html

特别是,看看这个函数,它可以让你检查一个顶点与平截头体:

http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_frustum.html#aa9acad8da2ff711edfbcc49240e2cb94

virtual bool Ogre::Frustum::isVisible(const Vector3 & vert,
                                      FrustumPlane * culledBy = 0) const

请注意,您可能需要先检查整个对象的性能,具体取决于场景的外观。还有一些有用的功能可以检查边界框或球体,以备不时之需。

【讨论】:

  • 我发现 Frustum::isVisible 只检查 AABB 描述的对象是否在截锥体内。但是如果对象被场景挡住了(例如位于山的另一边),它仍然返回真实的意思是它是可见的——这不是我想要的。如何检测相机是否完全看不到物体?
  • 好的,那么您正在寻找遮挡剔除。我不知道 Ogre3D 是否有任何功能,但这是您正在寻找的术语!
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 2013-07-22
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2018-09-10
  • 2019-09-15
  • 2022-01-16
相关资源
最近更新 更多