【问题标题】:C# XNA - Render(?) 3D object when off/half off screen. (Culling?)C# XNA - 关闭/关闭屏幕时渲染(?) 3D 对象。 (剔除?)
【发布时间】:2011-03-26 01:53:13
【问题描述】:

非常大的对象,比如游戏地图,如果它们的原点不在屏幕上,XNA 将完全不显示。

我在这方面找不到血腥的东西。我已经研究过剔除并试图以几种形式将其添加到项目中以抵消这一点,但无济于事。

我想绘制起源于屏幕外的对象,这样如果它们部分在屏幕上,它们仍然会显示出来。我将如何实现这一目标?

从我阅读的文档中 cull 应该这样做,不是吗?我可怜的大脑问题(._.)

附带说明,如果有人有在 XNA 的 Ox 引擎中创建原语的经验,我会很高兴收到您的来信。

编辑:地狱之火...我很确定这个问题只是 Ox 的问题。 该死的牛我的全部仇恨

【问题讨论】:

标签: c# 3d xna rendering culling


【解决方案1】:

剔除是一个概念,是的。

您可能遇到的问题是用于剔除几何图形的计算。系统不会自动知道一个对象有多大,所以在很多情况下(XNA 如何处理它),它会使用原点作为剔除点并假设对象无限小(如果原点在视口内)对象是可见的,如果不可见则不可见)。

如果您可以告诉引擎为该对象生成或更新边界框(可能是 AABB),则可能会解决问题。还要检查是否有任何其他因素(例如距离)起作用(尽管适当的界限通常也可以解决距离问题)。

【讨论】:

  • 我现在将研究这些要点。很高兴知道我在剔除方面走在了正确的轨道上,但缺乏工作让我误入歧途。
【解决方案2】:

XNA 框架为您提供了一个 BoundingFrustum 类。它是一个边界结构,包含相机可以看到的体积。它在此类中有方法来确定其他对象是完全在内部、外部还是部分在内部和外部。

它与其他对象的起源无关。它针对另一个对象的边界结构进行测试。

这些测试返回“包含、不相交、相交”的枚举。您只需剔除那些不相交的(完全在截锥体之外),仍然会绘制“半进/半出”的。

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多