降低游戏压力的低精度模型
降低游戏压力的低精度模型
前言
Lod模型的意义以及游戏内的工作方式
LOD模型即细节层次(Levels of Detail)模型,当一个物体覆盖屏幕区域较小时用较为粗糙的模型来描述此物体并达到节约资源/提升帧数的优化效果游戏内lod用于掉落物,展示框/石像/玩家第三人称手持等多个非第一人称场合
注
LOD的最终目的并不是为了在第三人称展现足够的细节,而是尽可能优化在多人/多掉落物下游戏的帧数表现。
因此,我们所追求的lod效果可以适当地牺牲第一人称的结构和细节,以达成更少的块数。通常一个保证一定细节的lod建议控制在25-50个cube。
准备事项
建模设置与首选项参考官方的建模指南
本教程以官方的春田1873活门枪作为实例
首先在制作lod模型之前,确保你的模型资产已经转换为自由模型,这一步骤有助于之后的的贴图绘制环节。
创建一个独立与任何组的lod组,方便之后编辑与删除其他组。
模型创建与注意事项
切换至侧视图,基于高模的外边缘拉cube。
对于高模的倒角顶面,可以用一个45°的方块概括,
使用工具顶点捕捉-缩放选项点击体积块的角顶点进行缩放。
模型的倒角基本都可以如此省略与解决。
使用一个cube概括枪管体积,所有开洞的地方在lod中都可以是实心的。
扳机和护圈用一个厚度为0的方块概括,届时将用贴图绘制这些部分,注意居中。
简单概括其他细节。
枪机为了保证效果可以使用稍复杂一点的倒角制作方法。
首先如上文,体积上增加45°的方块做为倒角面。
为此体积创建贴图预览,擦去45°体积的一部分贴图,在中间补上一个体积作为整体的顶面,并可自行输入数值适当调整大小保证顶点对齐。
一些在高模上已优化过的简单体积可直接复制到lod,减少工作量。
模型完成后建议使用Optimize插件进行面剔除优化。
注意
optmize插件在基岩/自由模型中剔除具有不稳定性,外加lod多使用角度特殊的体积/薄片。
剔除后请仔细检查模型是否缺面少角,如有请按下ctrl+z回滚。选择没被过度剔除的元素进行剔除,或是手动剔除!!!待上文步骤完成后,进入贴图的绘制
贴图与注意事项
全选lod模型,创建与高模相等分辨率的贴图(tacz通常使用64x做为手枪贴图,32x作为步枪,冲锋枪,狙击枪等,春田为32x),用油漆桶打好底色,擦多余的部分贴图(如上文提到的45°倒角)。
注意
在正式开始绘制之前,强烈建议开启bb的镜像绘制与锁定alpha通道。
由于tacz的渲染剔除机制,不建议使用镂空的半透明/全透明贴图,因为会导致游戏中内面不被渲染。如有镂空部分的处理,请涂黑。
提示
镜像绘制有助于减少工作量,避免重复绘制对称贴图,锁定alpha通道是为了避免上文被擦除的部分手误再画到。
对于枪械的贴图,我们可以照抄高模的纹理。将吸管工具绑定至快捷键可以更快地进行绘制操作。
顶面纹理由于镜像绘画的限制会导致贴图被镜像到实际错误的角度,所以最好手动绘制;可以把视角抬到枪械上,兼顾左右的绘制。
一些比较薄的体积可直接在贴图上绘制,省去块数。
底部同理。
绘制完毕查看整体效果。
定位组的处理与游戏内实装
定位组继承
将低模组移动与高模重合,并删除多余的组。
对需要的组进行保留,移动到lod组里(如muzzle_flash,通常来说scope_pos与shell组也必须保留,grip_pos等其他定位组无须保留,因为muzzle与grip配件并无lod,出于优化考虑无须在第三人称渲染这些部件。由于春田没有程序抛壳以及瞄具设定,故仅保留用于渲染开火的muzzle_flash)
Positioning组控制掉落物位置,第三人称手持位置展示框位置,与高模完全一致即可。
最后,删除多余组和高模的贴图,并重命名文件与贴图。
并将模型转为基岩版格式,准备导出到枪包内。
游戏实装
将模型导出到枪包路径\assets\tacz\geo_models\gun\lod
内,
贴图导出到枪包路径\assets\tacz\textures\gun\lod
内,
打开低模对应武器的display文件,检查调用路径是否正确。
如果你的display里没有,请参考下面文本进行补充:
{
"lod": {
"model": "tacz:gun/lod/springfield1873",
"texture": "tacz:gun/lod/springfield1873"
}
}
进入游戏,检查lod是否被正确载入以及表现效果。
着重观察在第三人称下武器的开火/抛壳是否正常,安装配件检查是否显示且位置是否正确。