我一直在努力解决这个问题.. 永远,而我已经了解了很多.. 有一些事情我似乎无法理解。
首先,它们是否以某种方式合并纹理?例如,你可以有一个前臂显示皮肤纹理、护腕纹理(没有添加几何图形)和一个手套(有时有额外的几何图形,据我所知,没有重叠的多边形。这是怎么做的?
前臂是否有单独的模型部件(带有和不带有额外的手套多边形),以及每种可能组合的单独纹理文件?这似乎不现实。据我所知,这些文件不存在。有简单的护腕纹理,它们以某种方式合并。
他们是在切换材质 ID 还是什么?
我一直在努力解决这个问题.. 永远,而我已经了解了很多.. 有一些事情我似乎无法理解。
首先,它们是否以某种方式合并纹理?例如,你可以有一个前臂显示皮肤纹理、护腕纹理(没有添加几何图形)和一个手套(有时有额外的几何图形,据我所知,没有重叠的多边形。这是怎么做的?
前臂是否有单独的模型部件(带有和不带有额外的手套多边形),以及每种可能组合的单独纹理文件?这似乎不现实。据我所知,这些文件不存在。有简单的护腕纹理,它们以某种方式合并。
他们是在切换材质 ID 还是什么?
模型系统相当复杂,真的没有一个答案。他们使用多种技术,必须平衡多边形数量和纹理大小,以将内容大小和目标机器性能保持在合理范围内。
几个开始的地方:
http://en.wikipedia.org/wiki/MPQ
http://www.zezula.net/en/mpq/stormlib.html
http://wowmapview.sourceforge.net/wowmodelview
http://www.wowmodelviewer.org/
到处挖掘,也许使用一些工具,试着找到人们试图记录格式的地方。这是最好的方式,而不是仔细和批判性地观看比赛。也去阅读现代建模技术,让你的头脑稍微爆炸一下,然后它就会开始沉入其中。
如果您查看 MPQ 内容,您可以看到模型和使用的纹理。这些将使您对正在发生的事情有一个很好的了解。即使在玩游戏时,如果你停下来想想你所看到的,比如当你交换设备时基本模型是如何保持不变的。以及每件装备似乎都有自己匹配的纹理(实际上是多个),您可以开始了解它们的基本纹理 - 多边形网格系统是如何工作的。您还必须记住,不同的视频设置可能有非常不同的管道(设置和渲染事件链),并且可能与您的原始问题不同。
在正常模式下可能很少有软件纹理混合/合成,因为一方面,即使是每件作品的类别和种族数量的组合矩阵也会有大量的“编译”纹理来跟踪和存储。在大多数模式下,大多数东西都会与硬件混合/映射。还要记住,还有很多其他事情正在发生,比如照明、环境映射、着色器和朋友......
3D建模已经成为一个非常复杂的课题。但是,通常您可以根据管道和源材料进行思考。在许多情况下,基础网格正在做大部分的幻觉工作,并且在运行时单独定义额外的波利并在程序上“附加”到基础模型(如手套在前臂上,与旧的静态关键帧网格合成相反)。如果您仔细观察,您会看到开发人员和艺术家们每有机会或可以重复使用基本模型,并创造性地在看起来像裸体的物体上使用纹理。“项目”及其相关内容中隐藏着额外的信息,描述了幻觉需要发生的事情(某些情况下,它隐藏在游戏和脚本中的硬编码中)。
编辑:
我真的没有回答关于“似乎没有”网格和缺乏装甲“堆积”的部分。对于一般情况,一个非常笼统的术语和技术是“剔除”或铲除不必要的几何形状。诚实而直截了当的回答是,在现代世界中,这是开发人员和艺术家以及我称之为“脚本”作者的共同努力,包括世界脚本和物质脚本和代码。良好的动态模型图形具有处理所有这些问题以及 OP 提到的问题的计划和架构(并且游戏的大部分外观都是决定的,尤其是在 WoW 中,考虑到这些常见问题)。所以它真的取决于艺术家的技能和理解以及引擎的设计,但从来没有真正作为一个绝对的代码驱动的一体化解决方案来完成。作为具有简单系统的常见策略的示例,如果艺术家定义了手套较宽部分的“端盖”,以便在假定的手臂或护腕中具有某种“出血”区域,那么他们就有能力使手套与手臂上可能存在的任何东西一起工作,只要没有任何东西可能刺穿手套的翻边臂部分。从那里可以走很多路,但在这一点上,即使是广义的可见性剔除步骤,即世界前变换,完全不了解世界环境或化身状态,也可以剔除看不见的波利。然后,您可以缓存并重用该模型的风格一段时间。当您了解自己的架构和系统时,您可以比这个简单的示例做得更好。但,重要的是,艺术家知道这会发生,因为手套的末端是密封的,并且知道他们正在维持游戏的可扩展性预算。因此,这更接近于 OPs 关于处理在运行时决定的多组重叠几何图形的问题。
艺术家/建模师也可能只是决定不做任何事情,并且不做任何事情,因为他们知道看到手套的视角是罕见的,而且没有那么多波莉,和/或更昂贵。如果你看看更精致的装备的肩部和衣领设计,你真的可以开始看到像 WoW 一样的艺术和工程的混合。许多项圈都是扁平的,只是简单的扁平网格,每侧都有纹理,可能是相同的纹理。