伪造3D对象以减少多边形数量


20

我正在统一制作游戏,并在搅拌器中建立了围墙,但我希望它尽可能地低聚。我的原始设计的多边形太高了,所以我想,如果我可以简单地使用带有一些巧妙排列的纹理的立方体呢?像这样:

在此处输入图片说明

在此处输入图片说明

您会看到边缘看起来都不错,但内部部分却不好看,即那里什么也没有。所以没有人知道是否有可能假冒那些使它看起来像是完整网格的面。这是我想要实现的目标:

在此处输入图片说明


7
我在栅栏上数了52个顶点。数量不多。
法拉普

1
@Pharap但是请记住,当您在关卡边界放置数千个此网格物体时会发生什么。
菲利普

5
@Philipp如果Unity正确使用了顶点缓冲对象和类似的优化技术,那不应该成为问题。如果您担心的话,总是可以只使用带有alpha的广告牌精灵。或者更好的方法是,在远处渲染广告牌精灵,并在玩家足够接近时渲染适当的网格。我真诚地怀疑,您是否会立即将成千上万的栅栏拖入屏幕。即使世界上放置了9000多个栅栏,我也怀疑其中很大一部分将被淘汰。您是否实际进行了基准测试或只是对性能进行了假设?
法拉普

6
您是在开发手机还是PC /控制台?至少在现代(5岁或更年轻)的GPU上,52顶点模型可能比进行某些alpha混合/ alpha蒙版便宜。它取决于许多因素(屏幕覆盖率,GPU,像素着色器或光栅化瓶颈等),但是使用Alpha蒙版始终会导致透支。您可能应该在优化之前进行基准测试。
Tobias B

2
但是,您可能不希望执行此操作的一个实例是,如果您需要忽略这些间隙中的碰撞检测,例如您尝试通过某些物体(在某些第一人称射击者中)和“子弹”中的间隙进行射击- “空洞”(贴花)出现在“空空间”(模型)上。
DoubleDouble

Answers:


26

如果我正确理解您想要实现的目标,那么您正在寻找“冒名顶替者”的概念。这些恰好是3D对象的2D表示,用于降低渲染3D环境的几何复杂度。

您可以将它们视为3D对象的图片,用作2D对象的纹理。这些规范的参考可能是《 GPU Gems 3》一书的第21章,称为“真正的冒名顶替者”。它在这里公开可用。另一个重要的参考文献是《 Game Programming Gems v.2》一书的第5.7章,在《 Game Programming Gems 2》中名为“ Imposters:增加混乱”,Tom Forsyth。

它们可以实时生成,以处理视角的微小变化或运行时生成的内容。查看有关该主题的Gamasutra精彩文章,标题为“ Dynamic 2D Imposters:一种简单,有效的DirectX 9实现”。该概念的进一步发展已出现在“简化极端模型的广告牌云”中

有关此概念的详尽说明,请参见以下博客条目:http : //blog.wolfire.com/2010/10/Imposters

最后,当您使用Unity时,我听说过一个可以自动执行此过程的插件。它被称为Real Imposters LOD系统

更新:为了完整起见,我想添加最近记得的两件事。首先是:有一个很棒的GDC视频,SimCity的艺术总监在其中解释了他们如何(大量)使用冒名顶替者来实现该游戏的一流图形成就:“ GDC-建立SimCity:艺术为仿真服务”。。其次,对于那些对虚幻引擎感兴趣的人,它具有内置功能来实现冒名顶替者,如在文档中可以看到的那样。


因此,如果我制作篱笆模型,完整模型并使用Real Imposters LOD系统,那您认为有用吗?
mr-matt

5
@MatthewInglis我无法确切告诉您有关该插件的信息:已经有一段时间了,因为我没有使用Unity,所以无法检查。但是原则上是的,它应该为3D完全详细的对象创建2D精灵版本。但是,您将不得不尝试配置。如果您打算购买该插件,请考虑先阅读文档(drive.google.com/file/d/0B3GMQtflbloSeHhvUGJmcjluX3M/view),然后与作者联系,事先询问您可能对其产品有特定疑问。
MAnd

0

如果您不需要栅栏的任何交互作用,我的意思是说,我会用空隙打印带有纹理的简单透明矩形。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.