3d - 《魔兽世界》如何处理装甲交换的图形?

标签 3d swap mesh world-of-warcraft

我一直在努力解决这个问题,..而我却一头雾水..有些事情我似乎无法掌握。


首先,它们是否以某种方式合并纹理?例如,您的前臂可以显示皮肤纹理,护腕纹理(没有添加几何形状),并且在其顶部有手套(有时具有额外的几何形状,据我所知,没有重叠的多边形)。 ?
是否有带有和不带有额外手套的前臂的单独模型零件,以及每种可能组合的单独纹理文件?这似乎是不现实的。据我所知,这些文件不存在。有简单的支撑纹理,并且它们以某种方式合并。
他们要换出材料ID或其他东西吗?

最佳答案

模型系统非常复杂,实际上没有答案。他们使用多种技术,必须平衡多边形数量和纹理大小,以将内容大小和目标机器性能保持在合理范围内。

一些入门的地方:

http://en.wikipedia.org/wiki/MPQ

http://www.zezula.net/en/mpq/stormlib.html

http://wowmapview.sourceforge.net/wowmodelview

http://www.wowmodelviewer.org/

挖掘周围,也许使用一些工具,尝试找到人们尝试记录格式的地方。这是最好的方法,而不是认真和批判地观看比赛。还请阅读有关现代建模技术的信息,让您头部爆炸一些,然后所有这些都将沉入其中。


请记住有关在使用游戏之外使用任何哇内容的EULA和合法性,尤其是在共享任何暴雪开发或分发的文件,包或任何形式的内容方面。


如果查看MPQ内容,则可以看到模型和使用的纹理。这些将使您对发生的事情非常了解。甚至在玩游戏时,如果停下来思考一下自己看到的东西,例如交换设备时基本模型如何保持不变。以及每个装备似乎都具有自己匹配的纹理(实际上是多个),您可以开始了解它们的基本纹理-多边形网格系统的工作原理。您还必须牢记,不同的视频设置可能具有非常不同的管道(设置和渲染事件链),并且相对于您的原始问题可能会有所不同。

在正常模式下,哇侧软件的纹理混合/合成可能很少,因为其中之一,甚至每类的类别和种族的组合矩阵都将具有大量的“编译”纹理来跟踪和存储。在大多数模式下,大多数事物将与硬件融合/映射。另外请记住,还有很多其他事情在进行,例如照明,环境贴图,着色器和朋友...

3D建模已成为非常复杂的主题。通常,您可以根据管道和源材料来考虑。在很多情况下,基本网格物体都在做错觉的大部分工作,并且不再需要将额外的Polly定义为在程序运行时“附加”到基本模型上,这已经不是什么大问题了(例如前臂周围的手套,与旧的静态关键帧网格合成相反)。如果仔细观察,您会发现开发人员和艺术家会尽可能地重用基础模型,并创造性地在裸露的物体上使用纹理。在“项目”中有额外的信息及其相关内容,这些信息描述了幻象需要发生的情况(在某些情况下,其在游戏和脚本中被硬编码)。有时会挤压基本顶点,有时只有纹理,某些时候是单独的网格。

编辑:

我真的没有回答有关“似乎”网格和缺乏铠甲“堆积”的部分。对于一般情况,非常通用的术语和技术是“剔除”或铲除不必要的几何形状。诚实而果断的答案是,在现代世界中,这是开发人员和艺术家以及我称为“脚本”作家的共同努力,包括世界脚本,计量脚本和代码。好的动态模型图形具有解决所有这些问题以及OP提到的问题的计划和体系结构(并且考虑到这些常见问题,决定了游戏的外观,尤其是《魔兽世界》)。因此,这实际上取决于美术人员的技能和理解以及引擎的设计,但是,绝对不可能将其作为绝对代码驱动的多合一解决方案来完成。举一个简单系统的常见策略的例子,如果画家定义手套的宽阔部分的“端帽”,使其在假想的手臂或护腕中具有某种“出血”区域,则他们具有使手套可以与手臂上的任何东西配合使用,只要没有东西可以刺入手套的翻臂部分即可。有许多方法可以解决,但在这一点上,即使是一般性的可见性剔除步骤,世界前的转换,甚至完全不了解世界环境或虚拟化身状态,也可能会淘汰看不见的波利。然后,您可以缓存并重用模型的样式一段时间。当您知道自己的架构和系统时,可以比这个简单的示例做得更好。但是,重要的是,美术师知道这种情况会在手套末端密封后发生,并且知道他们正在维持游戏的可扩展性预算。因此,这更接近于OP的问题,即有关在运行时确定的多套重叠宝石学的处理方法。

艺术家/建模者也可能只是决定不对其做任何事情,并且不戴任何端盖,因为他们知道看手套的视角是稀有的,而没有那么多的轮询和/或更贵。如果您看一下更精致的装备的肩部和领口设计,您真的可以开始看到像《魔兽世界》一样经历的艺术与工程的融合。许多项圈是扁平的,只是简单的扁平网孔,每侧都有纹理,可能是相同的纹理。

关于3d - 《魔兽世界》如何处理装甲交换的图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969956/

相关文章:

c - 简单交换后 DWORD 强制转换为 float ?

algorithm - 检测连接的三角形组

python - 顶点法线在 PyVista 和 Blender 中看起来不同

android - 从深度图重建 3D 模型

opengl - 在 OpenGL 中绘制复杂曲面

OpenGL GL_SELECT 或手动碰撞检测?

qt - 绕给定点旋转

java - 交换数组中的引用

c - char* 的交换函数

algorithm - 将 3d 网格分解为 2d 网