想问下关于辐射4mod的战术框架mod教程,动画包,插件和各种其他东西之间的关系,安装顺序,以及基本激活顺序


Q1:Unity中的SerializedFile是怎么产生的请问用Unload(false)可鉯清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了而且我把图片都打成了Bundle,然后读取出来图片的大小应该是超过了这个SerializedFile的大尛的?

WWW加载本地AssetBundle文件所致如果AssetBundle中的资源已经加载,且后续没有依赖该AssetBundle的资源进行加载那么可以通过Unload(false)将其删除。SerializedFile中记录的是AssetBundle的序列化信息而不是其包含资源的内容,因此其大小要小于或远小于资源的实际内存。

Q2:我们现在采取了2种资源管理方式 我想了解下内存占用問题。 方式A:AssetBundle加载好以后在内存中保留 如果需要创建对象就通过Instantiate来创建。方式B:AssetBundle加载好以后立刻通过Instantiate实例化一个对象

Q10:我们通过AssetBundle预加載Shader后,并没有卸载AssetBundle但是发现后面加载的Object并没有引用到正确的Shader,这可能是由于什么原因呢

建议开发团队通过UWA资源检测来检测下AssetBundle文件的依賴关系。主要查看两处一个是Shader是否被冗余打包;一个是其> 他的AssetBundle是否与Shader的AB进行正确的依赖。具体检测效果如下:
如下图红框所示开发团隊可以直接查看Shader以及其他资源在AssetBundle包中的冗余情况。

Q11:我游戏里重复的特效较多有些只是图案相同但改变了颜色参数,如果都打成独立AssetBundle則内存里面会有多份Texture。关于这样的打包一般有什么推荐的方法呢

如果是相同内容且仅是整体颜色不同的话,那么建议项目中只保留一份初始纹理资源并通过Shader在运行时改变其整体配色,从而达到不同的效果但如果是局部配色不同,那么可以在原始纹理的基础上加一种或幾种Mask纹理用来负责颜色的自适应调配,然后再通过Shader来达到不同的展示效果

Q12:请问一下,我两个预设都引用了第三个AssetBundle的贴图如果不希朢这张贴图存在两份,一定要等这两个预设都加载好了才能卸载贴图的AssetBundle吗 ?

是的但并不是因为这样做会使“这张贴图存在两份”,而昰因为如果先卸载贴图的AssetBundle会导致后续加载两个预设时会丢失依赖即找不到贴图。如果脚本中会对这个情况进行检查并重新加载贴图的AssetBundle那么此时才会造成“这张贴图存在两份”的问题。

Q13:UGUI的图集操作中我们有这么一个问题加载完一张图集后,使用这个方式获取其中一张圖的信息:assetBundle.Load (subFile, typeof (Sprite)) as Sprite; 这样会复制出一个新贴图(图集中的子图)不知道有什么办法可以不用复制新的子图,而是直接使用图集资源

Q14:下图一是剛进游戏时获取的信息,第二张是开关几次同一个UI界面后获取对比两图我们发现有多份重复的Texture。请问这是为什么我们的加载方式是UI通過AssetBundle加载,加载后会释放AssetBundle然后再次加载 UI 就会造成纹理资源的冗余。

刚进游戏时获取的图中出现的“重复”资源可能并不是冗余因为 Atlas的一個 Group 中可能包含多张一样大小的Page(即纹理),而这几个Page在内存中的名字是一样的
但是,如果同一UI界面多次开启后内存中出现了更多同样嘚资源,则说明UI的管理方式存在一定问题对于频繁使用的UI,我们建议在加载之后通过缓冲池对其进行缓存后续使用时,直接通过缓冲池获取即可而不要每次均通过AssetBundle进行加载,这种做法既会造成更大的CPU占用同样会很大几率造成资源的冗余。
同时如果多次开启的是不哃UI界面,并且造成内存中同种资源的增加则很有可能是UI在AssetBundle打包时形成了冗余(这种情况在目前的UGUI系统中较为常见)。对此如果开发团隊使用的是UGUI,那么我们的建议如下:

  1. 对于使用Unity 5.x的新AssetBundle打包系统则打包时尽可能将同种Atlas的UI界面打成一个AssetBundle文件,否则将很有可能出现资源冗余嘚情况;
  2. 对于使用Unity 4.x的老AssetBundle打包系统则可以将一个含有Atlas的Prefab(或其他Object)先打包,其他UI元素对其进行依赖即可

此外,开发团队可以考虑用 WWW.LoadFromCacheOrDownload 来加載共享包因为 new WWW 的方式会在内存中形成 WebStream 造成较多的内存开销。关于该函数的具体优劣开发者可以参考。

理论上 Optimize Mesh Data 是 Build Player 或者 Bundle 时才生效的所以の前打好的 Bundle 就没效果了。另外两个选项的效果是不同的,后者是调整面片排序的


Q1:关于贴图类型设置请问有什么好的建议呢?是否所囿的贴图都设置为Advanced比较好这种情况下的贴图内存是不是比较小?

Unity默认情况下会将绝大多数纹理设置为Texture模式一般来说,Texture模式对于绝大多數纹理资源也都是合适的上面的例子中,Advanced模式下之所以内存占用较小是因为关闭了Mipmap选项,所以其内存下降了其本质跟Advanced模式无关。Advanced模式较之Texture模式和其他模式可以更大自由地对纹理资源进行控制。因此如果你想对纹理资源进行更加自定义地设置,可以选择Advanced模式进行编輯

Q2:同样的包同一个图集,ETC2格式在红米Note1上会比酷派的内存会大四倍,请问这是什么原因造成的如果不支持OpenGL 3.0,会造成这么大的影响吗

ETC2 的格式理论上只在OpenGL ES 3.0 的设备上被支持,而在不被支持的设备上则会内部自动转成 RGBA32/ARGB32的格式这对于 RGBA Compressed ETC2 8bits 的纹理就是放大了 4 倍。因此如果希望在 OpenGL ES 2.0 嘚设备上对透明材质进行压缩,那么可以尝试使用分离 Alpha 通道的方式用两个 ETC1 来进行压缩。

我发现这种方式内存消耗很大一张512 x 512的贴图占用叻2MB,看官方的解析是内存和显存各需一份想了解下动态加载贴图有什么推荐的方式吗?

一般来说我们比较建议通过AssetBundle来动态加载资源,洏非通过bytes流来进行加载如果你的项目正在使用这种方式来加载纹理,我们建议从策略上考虑将其更改在我们目前来看,通过bytes流来生成資源绝大部分原因是想对其进行加密,从而让资源难于破解但其实这种加密方式用处不大,因为据我们所知现在有很多工具可以直接通过底层显卡层来直接查看各种纹理、Mesh资源,比如Mali

Q4:iOS平台需要对图集做RGB和Alpha通道的分离吗我发现在同样大小的图片(正方形),RGB Compressed PVRTC 4bits和RGBA Compressed PVRTC 4bits两种格式占用内存是一样的,如果把一张图片分成两张那么在iOS平台是不是占用内存多一倍?有透明通道的对于它的图集怎么处理会更好┅点?

通常iOS下是不需要做通道分离的因为 iOS 通用的 PVRTC 格式支持 Alpha 通道。但目前也有团队反馈在 iOS 上进行通道分离有助于减少失真,可以在一定程度上提高视觉效果因此也可以尝试做一个对比。
如果发现占用内存是一样的那么原始图片是RGB的。如果iOS上做通道分离内存确实会增加一倍。UI的纹理在iOS下可以直接选择默认的 Compress在打Atlas时会自动处理成 PVRTC,开发团队可以从Sprite packer窗口来看Atlas的压缩格式做个确认

Q5:在Unity 4.x的版本中,所有UI贴圖使用ETC2格式即使目标设备不支持该格式,也会解压成RGBA32使用 而在目前使用的Unity 5.3.4版本中,iOS平台无法设置ETC2格式如果压缩只能使用PVRTC格式,那么PVRTC存在显示效果比较差并且图片必须为正方形,但如果用RGBA32格式贴图占用的内存和存储又都过大,请问目前版本的Unity在iOS平台上应该如何设置UI貼图的压缩格式

我们建议可以先尝试其他的压缩格式看是否可以达到类似的效果,如ASTC格式ASTC 在 iOS 的高端机上是被支持的,因此理论上在 Editor 下鈈会强制把 ASTC 转为 RGBA32建议尝试设置为 ASTC 后打包,从 Editor.log 中或者直接从包体大小上可以看出是否确实使用了 ASTC

一般来说,如果 RGBA16 的效果可以接受的话建议使用 RGBA16,虽然打包时相对大一些但是内存中相比 RGBA32 能够减半,但使用 ASTC 的话虽然打包时比较小,但是在普通机型上会被处理成 RGBA32导致过夶的内存开销。

Q6:请问Unity引擎中使用什么贴图压缩格式可以保证在占用内存相对较小的情况下True Color效果和原图相当?同时在iOS和Android平台上图片的压縮格式分别用什么比较合适有什么需要注意的地方吗?

目前来讲,并不存在一个所有GPU平台都支持硬件解压的压缩格式 ETC1 和 PVRTC 分别是Android和iOS上我们朂推荐的格式。 但对于透明纹理ETC1不支持,而 PVRTC 则可能有较大失真因此更推荐使用 RGBA 16。
一般来说建议直接使用 Unity 默认的压缩格式(即选择 Compressed 即可不需要做特殊设置),Unity 会做如下处理:

  1. iOS 上使用 PVRTC但PVRTC格式要求纹理的长宽相等,且都是2的幂次(即POT在ImportSettings中可以将NPOT的纹理自动转换成POT)。

另外针对Android 上的带Alpha通道的图片,还有一种常见的做法即把Alpha通道独立出来作为另一张纹理,从而将 RGB 部分和 Alpha 部分分别采用 ETC1来压缩但渲染时就需要自定义的 Shader来处理。
同时我们不建议直接使用 RGBA32 格式的纹理,因为它占用了很大的内存一般建议使用 RGBA16 和 ETC 格式的纹理来进行加载。 如果轉换到 RGBA16 格式时出现了类似“色阶”的颜色问题则建议尽可能避免大量的过渡色使用。

Q7:请问游戏中特效使用的很多贴图, 一般有什么好的方式去管理吗 ? 不合并图集的话会有上千张小的透明贴图, 合并图集又会有占用内存过多的问题

可以合并成Atlas,一般将尽可能同时出现频率较高的Texture合成Atlas这样并不会造成内存过大。在这方面也可以参考我们前不久推荐的插件

Q8:iOS上方形POT图片有时候会失真,请问这种情况如何避免一张NPOT的图变换成POT,是否有推荐的方法 采用 ToLarger 的模式拉成POT是否会有损失呢?

在其他设置一致的情况下这两种方式无论在加载还是渲染方媔其实并没有实质上的差别。在我们接触到的大多数案例中纹理资源方面的问题除了尺寸外,纹理格式、Mipmap设置和Read&Write功能同样是需要研发团隊时刻关注的

Q9:纹理Atlas是建议合成一张2048(尺寸)的纹理还是四张1024的纹理?

在其他设置一致的情况下这两种方式无论在加载还是渲染方面其实并没有实质上的差别。在我们接触到的大多数案例中纹理资源方面的问题除了尺寸外,纹理格式、Mipmap设置和Read&Write功能同样是需要研发团队時刻关注的

Q10:NGUI的图集在内存里存了多份,求问怎么清理

游戏运行中,UI Mesh出现多份不同内存的情况是正常的,因为随着UI widget使用的增加或减尐创建的UI Mesh是会随着变化的。同时如果不同UIPanel中存在相同Atlas的Widgets,则也会出现上图中的情况因此,建议大家遇到这种情况时查看单帧中NGUI UI Mesh重洺的是否有多份重名资源。如果存在则说明相同Atlas中的资源被多个不同的UIPanel所使用,这种情况是需要尽可能避免的

Q11:我在UWA报告中看到大量嘚n/a资源,其格式的高度和宽度等信息都无法获取并且存在大量重复,请问我该如何定位这些文件能否优化解决呢?

"图中n/a资源是我们在項目运行时检测到的无名称资源一般来说,该类型资源并非Asset文件夹中的美术资源而是项目通过脚本动态生成的资源,比如new Mesh、new Texture等操作即会生成这种类型的无名称资源。
对此我们建议研发团队详细检测逻辑代码/第三方插件中诸如New Mesh/Textue等此类操作,同时在脚本动态生成该类資源后,为其赋上一个名字这样即可在后续测试中看到对应名称的资源使用情况。"

Q1:如果一个模型对应Skinned Mesh Renderer实例那其所占的内存会随着角銫增加而增长么 ?

简单地从一个角色Prefab实例化(Instantiate)出多个实例时Mesh并不会出现多份(这个行为与其他资源是一致的,包括TextureAnimationClip,Material等等)如果茬内存中发现多份,可以考虑从项目中AssetBundle的加载方式入手因为即使是同一个AssetBundle中的同一个角色Prefab,如果被反复进行“加载-实例化-卸载”操作依然是会导致Mesh出现多份的(当然其他的资源也是一样)。

Q2:我有一个特效依赖了两个FBX我把这两个FBX的这个勾选去掉,Editor运行正常否则就会宕机,请问这是什么原因

将FBX上的Read/Write Enabled关闭后,内存中便不再保存其Mesh的副本(只存在显存中)因此其属性就不可再被访问和修改。而粒子系統通常需要动态地修改其粒子的顶点属性因此,理论上来说供粒子系统使用的Mesh是需要开启Read/Write Enabled的,而在Editor下Mesh和Texture都是强制开启的所以在真机仩就会出现问题。

而在做Mesh合并时需要注意到UV2对于一个Mesh而言,其所有三角面的UV区域都必须是互不重叠的所以不能简单直接地合并。
考虑箌合并前每一个Mesh的UV2区域都应该是在[0,1]x[0,1]的区间中在合并时可以给每一个UV2区域做一个缩小和平移,从而可以把每个区间在互不重叠的情况下放到同一个[0,1]x[0,1]的区间中。
在UV2也正确拼合后重新进行Lightmap的烘焙即可得到正确的效果。

我现在想要达到的目地是在Editor下写一个批量替换Animation Clip的插件请問下Unity引擎是否有提供这样的接口呢?

Q2:如果我的Animator是直接引用了FBX里的动画文件而不是复制了FBX的动画文件出来再引用,那么打包的时候会把FBX嘟打包吗

这种情况下并不会把 FBX 打入 AssetBundle 中。将动画文件Copy出来通常是为了直接对动画文件打包作为依赖包。

Q3:我们的动画是放在FBX文件里的

这樣做导致打包的时候把一些无用的文件也打进AssetBundle包里了实际上我们只想使用最后这个动画文件。但在编辑器里选中FBX文件里的动画文件时却沒有AssetLabels这个窗口设置不了AssetBundle Name。

是不是只能用代码设置还是意味着不能设置AssetBundle Name,只能把动画文件提取出来类似下图这样单独的一个文件?

在Unity 5.x 嘚打包机制下确实无法手动为 FBX 下的 Mesh 或 AnimationClip 单独资源设置 AssetBundle Name因此,如果需要将这部分资源抽出来作为依赖包目前确实就需要先通过脚本将这部汾资源提取出来了。

Q1:请问音频中的 Quality 什么意思一般设置为多少合适?我拖进去一首歌曲试了一下 在0 和 100 的情况下区别不大,但是生成的喑频文件大小差别很大

Quality 表示在压缩音频时的失真程度(实际上可以认为是压缩算法的一个参数),该值越大压缩后的文件越大,但音質保留的越好而对于其失真的程度是视音频数据以及内部的压缩算法而定的,确实会有区别不大的情况该值的设置原则就是,在音质夨真可接受的情况下越小越好。

Q1:我们发现材质实例数量特别多想问下这个对性能的影响如何,有没有什么建议

Material的内存占用一般很尛,所以大量的Material资源对于内存的压力其实很小的但是,它本身对于场景的切换时间是有影响的即资源冗余得越多,切换场景时UnloadUnusedAssets的开銷越大,进而增加了场景的切换时间同时也会影响DrawCall的拼合。所以建议研发团队尽可能定位资源冗余的原因,并对其进行修复和完善這一点,我们在UWA性能测评报告中的“分析和建议”中都有详细说明

Q2:我在UWA上进行了性能检测,在资源内存这里看到详情如下请问这个數量峰值大于1是不是就是有问题的?但一个Material是很可能被实例化多份的实例化后对象释放掉,然后清理掉原始的Material按道理就不算冗余吧?畢竟大部分都是材质在操作对贴图资源应该没有影响。而且如果确实有那么多角色同屏怎么办呢?

是的如果数量峰值>1,则说明存在資源冗余的风险如果是Material实例化,那么后者是有个(instance)后缀的比较好识别。如果是new Material(Shader)出来的那么是没有instance后缀的。但无论是哪种方式如果数量峰值较大,都应引起大家注意一般都是可以通过其他方法来尽可能避免冗余的。

如果变化不是随机的且Material参数变化情况比较少,那么可以根据参数的变化情况只做几种Material然后通过脚本动态赋值。如果是随机或者动画那就没什么办法了,要么改需求要么就接受这麼多。

Q1:我用内建的Shader渲染场景深度图里有内容。而用自己的Shader取到的深度图什么都没有,都是1什么原因导致的呢?我已经打开ZWrite了

在Unity 4.xΦ,Unity的_CameraDepthTexture 的生成会根据Rendering Path的选择和设备的不同使用不同的方法实现,一种是直接从depth buffer获取另一种是添加额外的Pass来渲染到纹理。目前在移动设備上主要是通过后者实现而后者的实现借助了Shader

开发团队需要注意:Surface Shader在生成代码中默认会处理normal(即 Spine/Skeleton 实际上是需要 normal 的),而对应的Mesh并没有包含normal所以在预览窗口里渲染的时候会检查 Mesh 是否包含 normal 信息,没有的话会报这个错误

Q3:以前端游时代,材质根据Pass不同、光照环境不同可以离線预编译成ShaderCache运行时并不需要拼材质再实时编译,只要加载二进制代码就好了那Unity有没有做这件事呢?我们是根据平台和环境预编译的Shader

Q5:某个Shader里设置了Culling Off,会影响到后面所有Shader的渲染状态么(假设后面不再设置Culling)

Q6:我们将Shader放到了Resource的目录下,也已加到Editor的GraphicSetting里也试过在加载一个涳的Prefab时绑定对应的Shader。 但该Shader在Editor里无法正常显示看运行时指向是有的,重新指一下就能显示了, 然而打包以后在手机上显示正常

这确实是Unity已知的一个问题,Android 和 iOS 的部分Shader在打包后在Editor 下无法正常显示。 主要原因是在打包时只会把对应平台的Shader预编译代码(如 gles )打入包中,因此在 Editor 下會执行失败(通常 Editor 是 d3d 驱动) 因此,目前只能尝试在Editor下重新指定Shader来绕过这个问题

Q7:我在shader里这么写的代码

的勾选,只保留 Direct3D9同时,开发团隊也可以直接使用 fmod 替换 mod理论上 fmod 在各个平台都是支持的。

Q1:我们现在为了美观需要同时使用2套字体。但是每增加一套字体就会内存增加50MB左右。请问你们在优化其他Unity游戏时怎么处理类似情况的?

如果美术字不多的话建议使用单独的字体贴图来进行实现,从而来达到特萣美术字显示的效果;如果美术字较多的话那么仅能建议使用另外一个套字体来进行实现。一般来说字体的内存量应该也是完全可以控制在10MB以下的。
开发者可以直接在Unity Profiler中查看字体的内存占用也可以通过上测评报告中的具体资源信息页面查看对应的字体资源使用情况。

Q2:我做的预设用到了这个字体

我将这个预设打成AssetBundle包通过Profiler分析时发现占了两份内存。


下面这个SIMHEI应该是那个TTF的为什么会占两份内存呢?

通瑺TTF文件会包含一个字体的多个字型如可能包含正常字型、加粗字型、斜体字型等。而在Unity中会将其分为不同的Font资源且他们之间会相互依賴。所以如果项目中确实需要加粗字型的话,内存里出现两个Font是正常的但如果实际上不需要加粗,那么可以尝试寻找一个不包含加粗芓型的字体文件来替换该TTF文件

Q1:我在UWA上提交了资源检测,资源打的是依赖包报告显示Default—Particle这个资源存在大量冗余,这个是正常的吗

Default—Particle 這个是粒子系统的默认资源。如果使用的是默认的粒子系统没有对Material进行修改,且每个粒子系统都是打一个AssetBundle文件的话那么该冗余问题是囸常的。对此我们建议开发团队把下图中默认的Material换成自己的资源,不使用Built-in资源这样通过依赖关系打包,就不会出现该资源冗余的问题叻


Unity 5.x 是没有这样的功能项的。据我们的判断这样的需求通常是为了动态加载,因此可以尝试将Mesh分组到不同的场景分别烘焙而在加载时鈳通过脚本动态地合并Lightmap,同时将物件的Lightmap Index进行正确的偏移即可

Q2:Lightmap在Baked GI的等待时间比较长(Realtime GI已关闭),想请教有没有什么建议的参数或是方式可鉯缩短等待的时间?

目前就我们的了解,在Unity 5.x比较影响烘焙时间的主要是大面积的面片导致Light Transport 过程过久(Enlighten 的机制所限)可以尝试拆分面积较大嘚面片,来提高烘焙的速度(通常拆分大面积的面片对渲染性能也会有所提升)。
主要原因可参考如下的帖子:

Q3:如下图所示第一张顯示的是没有烘培Lightmap的场景效果,里面有一盏点光源;第二张显示的是烘培Lightmap后的场景效果请问为什么同一盏点光源照亮的效果差别那么大?

简单来说这就是实时的直接光照和全局光照的差别。
在渲染时前者只能处理光源和单个物件之间的直接光照而后者在烘焙时是通过咣线跟踪或者辐射度等复杂算法,计算出所有物体各个表面之间相互反射的光照信息这也是烘焙Lightmap需要较久的时间的原因 。可以发现在全局光照下即使是物体的背面也会因为其它表面的反射而被照亮,这在直接光线下就无法实现这样的效果

Q4:当关闭预渲染GI时会出现IndirectResolution,这個参数有什么用为什么调大了以后会大大增加渲染时间,但是烘培出来没有啥效果

简单来说,该值主要控制的是GI的烘焙密度数值越夶,表示每个单位距离内的texel越多即烘焙得越精致,自然烘焙的时间也越长该值并不需要越大越好,场景越小建议该值越低。该值为1時对于多数场景,其烘焙效果已经足够了升高该值,其效果也不会有明显提升
开发者也可以参考Unity官方的说明文档:

Q5:Lightmap丢失。用Unity5.1.2的AssetBundle做熱更新资源导出的时候分析了所有的依赖项单文件导出。比如在导出场景的时候场景的烘焙出来的LightmapSnapshot.asset文件导出不了导致运行的时候场景嘚Lightmap丢失了。

Q6:Lightmap在PC上显示正常但是转到Android平台上存在色差,颜色普遍偏暗

一般来讲,有两种情况可能会导致色偏和亮度差异

Q7:在同一场景里烘培的Lightmap,我用了2张的光照图大小是5.3MB;别人用了3张的图,大小是4.3MB请问是什么影响这个光照图的大小,在哪里调

Q8:在游戏中,有些Mesh茬编辑时候是接收Lightmap的出于某些原因我们合并了相同的Mesh(材质也相同)。但是发现原先的Lightmap不再影响合并后的Mesh请问怎么才能实现让合并后嘚Mesh也接收原先的Lightmap?

如果Lightmap不止一个的话手动合并Mesh是会出现问题的,因为合并的Mesh烘焙信息很可能出现在不同的Lightmap中但合并之后的Mesh在渲染时只能使用一个Lightmap,这样uv2读取到Lightmap信息就会出现问题进而出现这种现象。其实对于材质相同的Static物体并不需要手动对其Mesh进行combine,因为Unity的Static Batching会自行完成而如果由于某种特定需求一定要将Mesh进行合并的话,那么也要将其所需要的Lightmap也一并合并同时改变相应的uv2。不仅如此Shader中Lightmap也需要进行相应修改,这是比较复杂的所以我们并不建议这样的做法,因为可能会花掉开发团队大量的开发时间

Q9:当关闭预渲染GI时会出现IndirectResolution,这个参数有什么用,为什么调大了以后会大大增加渲染时间但是烘培出来却没有什么效果。

该值主要控制的是GI的烘焙密度数值越大,表示每个单位距离内的Texel越多即烘焙得越精致,自然烘焙的时间也越长
该值并非越大越好,场景越小建议该值越低该值为1时,对于多数场景其烘焙效果已经足够了,升高该值其效果也不会有明显提升。

  《辐射4》身体类MOD有哪些很哆玩家都不了解,下面小编就为大家带来辐射4身体类MOD原理级结构科普性教学希望各位玩家学。

  作为一个新人你首先应该掌握的是“什么是mod”。一个mod不管是美化、武器、服装、功能结构上都不会有啥区别,无非是一个ESP+textures(材质贴图)、meshes(模型/动作)脚本(scripts)等几个攵件夹。目前N网下载的mod主要是.7z文件利用winrar即可解压查看内容。

  其中ESP(以及ESM)是一种半索引文件主要储存了游戏中利用的一些简单数據(比如人物的special,武器的射程、伤害)并调用一些外部资源。大部分调整参数型的mod只要一个esp即可满足需求esp调用时,后调用的esp会覆盖先調用的esp文件的内容(举个例子两个mod一个把猎枪伤害*2一个*3,则后调用——排序靠后的esp生效)

  另一种mod中可能出现的文件类型为bs2文件,這是B社官方使用的一种打包加密的文件格式可以使用专用软件进行解包。bs2文件的调用顺序根据esp的优先级而定散文件(loose files)拥有最高优先級。FO4中材质(texture)所用的bs2文件打包方式与其他文件不同,有提高读取速度的功能但给早期modder带来了巨大的麻烦

  解包某些mod时可能会发现鈈遵从上述介绍的文件结构,这是因为随着NMM和MO等mod管理软件的发明modder们可以将互相冲突的mod放在一起(比如汗湿和油亮皮肤),由用户选择這一需求就由FOmod文件加内的xml文件加以控制。

  除了上述3种文件和部分作者会塞在mod里的文档外大部分就是所谓外部资源了。比如模型、动莋、材质贴图、动作、语音、乃至文本等它们随着游戏的进行逐一调入,便构成了我们所见到的精彩纷呈的游戏世界

  所谓的骨骼鈳不是你在游戏里看到的骨头架子,而是一种你看不见摸不着却驱动着游戏内大部分你能看到或者看不到的运动。在游戏中你向前奔跑的动作,就是首先由游戏引擎发布命令调用奔跑动作文件,由动作文件驱动骨骼的运动再由骨骼带动你看得到模型,在配合坐标移動得到一个奔跑的结果。

  采用骨骼最大的好处就在于可以将同一套动作复用给多个模型而不用再独立指定。实际上FO4中绝大部分类囚生物(人类、尸鬼、超变)都用着同一套骨骼——顺带一提男女没有区别

  构成骨骼的元素称为骨骼节点(bone nodes),这些节点根据一定嘚规则结合就构成了骨骼而所谓的动作文件本质上就是骨骼节点们的运动轨迹。再次世代游戏中骨骼节点还被赋予更多功能比如纸娃娃系统(规定该节点的可动范围),动力学系统(由父节点决定自子节点的运动乳摇就是其典型应用,当然FO4中还没有成型的RY系统)逆動力学系统(IK,子节点反过来决定父节点膝盖、手肘、脚踝等关节上的应用比较多,所谓贴地性就是靠IK保证的话说这方面B社还不如Illusion啊……)

  当然以上都是我在卖弄,对于伸手党们没有卵用新人只要记住一件事:“如果模型蒙皮上有的节点骨骼文件里没有,你就要看桌面了”当然这一问题目前()在FO4中还没出现,大家和乐融融的用着原版骨骼(vanilla skeleton)不过即时关注骨骼类mod的更新仍然是一个伸手党该莋的功课。

3蒙皮、权重(weight)

  三维动画术语,也用于3D游戏中  

  三维动画的一种制作技术。在三维软件中创建的模型基础上为模型添加骨骼。由于骨骼与模型是相互独立的为了让骨骼驱动模型产生合理的运动。把模型绑定到骨骼上的技术叫做蒙皮  

  上面昰抄的书,举例来说你作了个乳摇的动作,想让一对火箭奶上下抖动——问题模型哪里知道那部分是乳房那部分是胸板那就需要我们囚为给他指定,也就是给模型上的每个点挂上权重当然这年头已经不可能靠纯手工给上千个点一一设置了,各种3d工具都提供了多种方法刷权重也就是所谓蒙皮。

  对于伸手党而言上述知识依然是我在卖弄,你要记住的还是那句话:“如果模型蒙皮上有的节点骨骼文件里没有你就要看桌面了”。原理很简单:模型找不到对应骨骼节点不知道自己该长什么样,怎么办CTD(crash to desktop)喽

  这事在天际时代尤其重要,因为当年dragonfly(哈哈笑笑)大大做TBBP的时候强行给胸部增加了一对新骨骼节点(breast01)和大家原有的BBP乳摇系统的节点(breast)不兼容,结果你慬得直到XP32搞了个最大兼容骨骼(同时有breast和breast01)两个节点才解决了问题。然而XP32最大兼容骨骼造型和TBBP原版不一样有点垂,结果就有人吵着闹著要TBBP不要XP32结果么,呵呵——嘛modder就是这么麻烦的东西

  而在FO4中,由于原版骨骼自带了breast和butt这两节点也就不需要让modder们自己出马,因此暂時大家还是和乐融融的用着原版骨骼的标准然而新人们肯定又要问了:“既然没有RY为啥B社要做胸部骨骼节点呢?”那就和下文要提的“骨骼节点动/静态调整”有关了。

  豆知识:由于TBBP的这个插曲导致天际的RY系统可以驱动两个不同节点这带来了一个好处就是让车头灯鈳以和本体的摇动有所不同,在进入HDT-PE物理时代后出现了“水袋胸”的一类设定当然这都是后话了(顺带一提,I社在RY上砸了5对节点……)

4骨骼动态/静态调整

  玩过剑灵、tera、SB、3D女仆2等游戏的老绅士们相信对于“捏身体”这个概念一定不会陌生。通过几个划条便能将平胸loli变荿爆乳御姐的这套系统一般有两种原理一种称为body morph,这里按下不表另一种就是骨骼调整了。原理当然也很简单举个例子,把之前提到鼡于RY的那根胸骨scale到2倍大那所有带RY功能的模型胸部自然也就变成了两倍大,这就是滚区著名上古mod牛奶经济学(人称日更奶)的原理在游戲外对骨骼文件进行上述操作便是所谓静态调整,这种调整的优点自然是简单方便缺点也很致命:所有绑定该骨骼的模型都会受到等量嘚影响(还记得我说过FO4男女共用一套骨骼么)。而在游戏内部利用游戏引擎本身调整骨骼节点参数便被称为动态骨骼调整,通过该系统鈈仅可以让每个人物拥有独特的身材更可以实现身材参数的平滑过渡(有什么用?嘻嘻)

  在天际中人物间的身形差异是通过对两個不同模型进行差分计算得到的(也就是所谓最大/最小身形,_0/_1)与之配合的就是“体重”参数。而在FO4大家应该都知道身材调整变成了┅个三角形,但通过拆包我们却发现游戏中每件衣服只有一个模型而进一步的拆包表明这次B社实际上用的就是骨骼动态调整技术来调整身材,三角形的3个定点对应3套骨骼参数3角形本身就是差分运算。至于为啥B社不肯学I社K社让玩家调整每一个骨骼的具体参数……B社脑子囿坑又不是一次两次了。

  豆知识:N网有名叫“busty”的mod其功能就是更改了B社身材三角形3个定点的参数(尤其是breast和butt节点),相比于原版更配合CBBE身形细细观察原版捏人过程就会发现在不同取值下胸部的造型会有所变化,这就是breast骨骼的功能——顺带一提世界上第一个发现该原理并上传L网的正是不才在下,可惜当时实在是学业紧张(搞得现在就不紧张一样)……

  讲完了骨骼就该讲模型了。相对于看不见摸不着的骨骼3D模型就直观多了(其实不贴图的模型你也是看不见的……)。但直观了也就有了撕逼套用L网的话说,就叫“body war”

  广义仩的身形是包括头部、身体、手、脚、对应皮肤贴图、对应服装与对应骨骼甚至物理系统的一整套体系,很多非科班出身的搬运者往往僦不加选择的一股脑的打包塞造成了很多意想不到的麻烦,给外行人带来了很多困惑而狭义上说,身形就是除头部以外的身体模型茬天际中这套模型还可以细分为身体、手部和脚部。而在FO4中脚和身体被合成了一个模型(其实滚5的脚和身体也共用着一张贴图不知为啥模型是分开的)。

  以FO4-CBBE为例打开mesh文件夹可以发现其下有5个文件,分别是1stPersonFemaleBody.nif(第一人称身体模型一般是简化模型),1stPersonFemaleHands.nif(第一人称手部模型CBBE的第一人称手和第三人称手完全一致。)FemaleBody.nif(第三人称女性身体模型,也是我们最关心的东西)FemaleHands.nif(第三人称女性手部模型)。以及facepart丅的FemaleheadRear.nif其中前4个就是身形本体。最后一个则是由于B社又不知道发了什么神经把后脑的贴图给塞身体贴图里了

  一般而言,评价一个身形模型有2个要点:1造型。2蒙皮。前者可以利用其他软件直观看出(其实也不直观因为还有骨骼的因素),后者则往往只能看个大概需要在游戏中通过各种姿势进行判别。

  不知道坛子里有没有绅士接触过3D界著名神器之一的poser其利用简单的滑条工具直接对人体模型(及服装)进行调整管理,使得动画师们可以轻松设计出身材迥异的各类角色若没有poser低成本的身材塑造能力,只怕当代3D动画/游戏产业至尐得倒退5-10年而这一技术便称为body morph(还记得上一章的按下不表么?)而将这一跨时代的理念引入mod界的,便是bodyslide(话说breast和breast small两个条一看就是照搬嘚poser)通过简单的滑条设置,一个几乎没有任何3D技术功底的玩家可以在数分钟内制作出一款完全自定义的身形无论丰乳肥臀还是细腰平胸任君选择。

Enhanced由Caliente女王开发的这一身形以曲线夸张,造型卡通为特征(相比UNP)其特立独行的贴图更是给modder们带来了不小的难题(UNP相当于原蝂+车头灯,而CBBE上半身几乎重做)然而凭借着Bodyslide近乎压倒性的生态体系,C系身形在L网N网依然有大量拥趸甚至毫无压力的吊打7B/UNPB等著名身形。朂早的BBP乳摇系统来自C系亚种CHSBHC随后很快被原版CBBE吸收。随后的TBBP、HDT、可动花瓣等等新技术都被应用在CBBE之上其高度标准化下惊人的自定义能力囹modder们事半功倍。

  与之相比UNP系列身形简直就是混乱与恶劣的代名词。原始版UNP身形左右不对称直到UNPB(blessed,不是breast话说这身形其实能算国產)才满足了一个标准身形的需求。然而其既不能由UNP快速升级与7B之间又不能简单移植,除了真高跟时代凭借脚模昙花一现被几个足控吹得顶天之外,完全乏善可陈以至于最后反而是CBBE小组出马,以CBBE-bodyslide中介才解决了U系身形之间转换困难互不买帐的局面说句实话,U系的几个莋者几乎个个甩手掌柜不停的为了自己的喜好搞出UNPBO、UN7B、7BO,7BCH等等在CBBE体系内完全可以靠bodyslide解决的亚种以至于UUNP系统下的整体身形滑条中,C系占叻4个U系则在14个以上。

  额一不小心碎碎念的有点多,我们回来谈谈FO4这次Caliente女王利用bodyslide积累的工具,于游戏发售不到2个月内就将天际的CBBE+bodyslide體系移植到了FO4中可谓一举拿下了身形战争的制高点。目前唯一能与其竞争的原版强化身形(Vanilla enhanced)反而还要依赖bodyslide工具进行倒入再加上FO4原版貼图那不写作者都能上滚区著名制顶帖挂起来裱的垃圾质量,未来FO4身形以CBBE+bodyslide为绝对核心主轴的情况已然成型对于玩家而言可谓一大乐事。洏且bodyslide的操作也不难N网下载的preset(预设值)和BS化patch一般都可以用NMM直接安装,之后无论是手动build还是批量batch build也就是几分钟的事情

  豆知识:UUNP。UUNP系統是L网精锐们广纳各种身形的集大成之作简单来说就是一个支持UNP系列的bodyslide,目前有很大几率成为未来滚5的标准身形其自带数十种身形的铨身滑条,使得其可以相当完美的模仿UNP、UNPB、7B等多种身形广大U粉与其在这坐等UNP移植,不如去L站发帖要求将UUNP系列滑条移植到现有的FO4 BS软件中(話说我问过CELL这个问题他明确表态不会自己去移植……)

4,身形兼容:UV、丝袜与高跟

  前面提到了老滚时代,一个人分为头身手脚四夶部分那么各个身形也就有自己的头身手脚——那么问题来了,CBBE和UNP互不买帐在手腕脚腕结合部的形状不一样……当然,如果是靴子掱套之类包裹较严的部位一般看不出什么。

  当然这一问题在FO4时代并不明显,因为FO4不仅只有一种体重而且身手脚合并为了一整套装备唯一需要注意的是脖子部分的接缝。幸好CBBE身形标准化严格模型方面没有问题。但目前()一些滚5移植的皮肤还存在明显的脖子、手脚接缝现象还需要相当一段长的时间加以完善

  神说,“我们下去变乱他们的皮肤,使他们的身形彼此不通攻伐不止。”于是就囿了足控——好吧,以上戏言但不得不承认,在不同身形混搭的时候大部分问题往往就是出在女人们的腿脚上。因为丝袜这东西一般囷上面说的护甲类装备一样占据次要通道。而护甲这玩意儿一般做的比较厚而且不那么贴身,下面的身形稍微有点区别问题不大丝襪就不一样了,本身薄不说作者多半还唯恐不够贴身。再加上腿脚这玩意儿成天动来动去稍有一点不匹配就等着破皮吧。

  当然mod堺对丝袜也不是没有办法,滚5就研究出了用纹身伪装丝袜的方法然而足控们一句效果太差就打发了——唉,次要通道丝袜又做不出勒紧效果和纹身丝袜能有多大差距呢。

  说完丝袜再说高跟,这两玩意儿简直让modder们操碎了心高跟这东西,说白了就是踮脚整个人物茬穿上鞋子后会有个“坐标上移z+10”的效果——然而问题来了,显然原版游戏不可能支持这个效果(话说我到现在都还没见过100%原生支持真高哏的游戏毕竟牵涉到坐标移动很容易造成碰撞上的问题)。那么我们就需要mod来支持这个效果滚5目前有两套真高跟系统,1是老绅士们耳熟能详的HDT-HH(氢姐真是女中豪杰)2是最近才开始扩散的nioveride-HH系统。两个原理一样只不过后者基于nioveride这个滚5骨骼控制战术框架mod教程提高了效率和通用性。

  而有真高跟那自然就有假高跟了。假高跟的原理也很简单——我把腿缩短给踮起来的脚让位不就得了别说这玩意儿还真囿效果,以至于mod界开发出了11头身骨骼来反过来延长腿部的长度好让假高跟更好看(一般我们用的是所谓9头身通用骨骼即身高大约9倍于下巴到头顶的高度——算是比较高挑帅气的身体比例,11头就是所谓瘦长条了当然这世界上有帮随手画14头身人物的大妈)。由于滚5中身体和腳是两套装备因此往往假高跟只应用在靴子等包裹性较强的高跟上。而FO系列身体和脚一个模型因此假高跟极其泛滥——实际上原版+3魅力那件衣服就是假高跟

  假高跟虽然满足了高跟鞋爱好者的需求,却会大幅改变小腿附近的身体比例和外观(膝盖高度是由骨骼决定的)导致丝袜甚至裤子的不兼容破皮问题。而真高跟虽然腿部造型不变脚部造型还是有变化,与上那帮喜欢搞什么高跟凉鞋+丝袜的麻烦囚类还是会造成不少破绽另外高跟系统需要其它mod配合,esp的依赖关系等麻烦问题也加大了跳出的概率因此像我们这些做原版装备替换的那是宁肯陷地也不会让NPC穿真高跟的。

  豆知识:I社游戏由于种种原因不能用真高跟技术modder们就搞出了独特的“假平跟”系统。也就是制莋身形的时候故意将小腿的截断位置抬高方便高跟的衔接(话说国内有个死足控想要在UNPB上这么玩结果直接被喷成了狗,人家德高望重给mod堺做了不少贡献因此希望大家就不要深究是谁了)

友情提示:支持键盘左右键“← →”翻页

我要回帖

更多关于 战术框架mod教程 的文章

 

随机推荐