原贴链接 感谢:heheloveer授权转载
![封面图片](https://www.z4a.net/images/2023/08/11/47490973b5cfc0a07302bec8e3f0f827.jpg)
注:【】中内容为转载者总结自原贴评论区的内容。
1 远景原理介绍
1.1 什么是远景?
在大多数使用3D技术的角色扮演游戏里,玩家所看到的游戏内画面都是通过一个位于玩家面前或者附近,能够相对自由地转动的镜头展现出来的。在游戏的三维空间里,离镜头越近的物体就显得越大;离镜头越远,物体便显得越小,到最后彻底不可见。这就产生了一个问题:怎么处理那些离镜头较远,玩家看不见或者看不太真切的物体?毕竟,设备的性能总是有限的,而渲染远处的物体听上去简单,实则却相当耗费性能。举个例子:如果游戏渲染玩家附近55范围内的物体,那么需要渲染的面积是25个平方单位;但是如果我们把渲染距离提升一倍,来到1010,那么需要渲染的面积就变成了100个平方单位,是原先的4倍之多。很明显,与其顶着不成比例的性能消耗去把远处的物体完整渲染出来,不如耍个花招,把它们替换成低精度模型或者干脆让一些不那么显眼的物体消失。如此节约下来的性能可以用来提升帧数,也可以用于提升近景的表现——毕竟大多数情况下玩家主要关注的还是近处的物体。这便是LOD(细节层次,level of detail)系统的基本理念:为一个物体配上若干个不同精度的缩水版模型;距离玩家越远的物体,其实际使用的模型精度就越低,从而达到节省性能的目的。在通俗的说法当中,LOD这一简称已经失去了它原本的意义,而被用来指代这些只会出现在远处的缩水版模型,也就是中文里的“远景”。
一言以蔽之,远景系统的根本目的在于节约性能。就目前而言,近景模型和材质质量的提升依旧可以说一眼望不到头:只要镜头凑得够近,玩家总能看到更多的细节,而现有的硬件机能和3D渲染技术还并不能做到实时输出足以以假乱真的画面。但是在正常的游戏体验里,远景是不可能出现在靠近镜头的地方的。在距离足够接近时,远景模型自然会被替换成完整模型。这也意味着,远景的精度只要达到了“位于远处时不仔细看看不太出和近景完整模型的区别”就足够了。超过这个临界点,任何往远景上额外投入的资源和性能基本都相当于打了水漂。这条原则需要时刻牢记——不要把宝贵的性能挥霍在无谓的地方!
当然,不同玩家对远景细致程度的要求不可能完全相同,而在大多数时候,远景也并不能真的做到以假乱真。部分情况下,远景系统可能会导致游戏观感显著下降:远景模型过于粗糙;部分物体在距离较远时直接消失;远景模型和近景模型出现较为明显的不匹配,以上这些都是常见的例子。我们可以借助各种手段减少这类现象出现的频率,或者降低它们造成的影响,但是只要远景系统的基本运行原理没有改变,它们就无法根除。
1.2 《上古卷轴5》中的远景系统是怎么运作的?
远景在不同游戏里的具体实现方式不甚相同。在《上古卷轴5》(下称“老滚5”)里,我们大致可以看到两种计量距离的方式。老滚5里最为基础的距离单位……唔,就是一“游戏内单位”。笔者并不清楚贝塞斯达(下称“B社”)有没有为这个单位给出具体定义,不过这个概念也只与游戏引擎原理相关,正常游玩不会涉及。在xEdit里我们看到的物体的XYZ坐标,所用的就是这个单位,诸如fShadowDistance
(决定渲染阴影的距离)这样的ini设置的单位也是它。根据Sheson的说法,128个游戏内单位等于6英尺,也就是说约等于1.83米。
除此之外,老滚5中另一个频繁用到的距离计量方式是“单元格”。老滚5的户外世界被划分成为了许多个单元格,每一个单元格都是40964096个“游戏内单位”这么大。单元格计量方式最重要的用处大概就是在臭名昭著的uGridsToLoad
这个设置上:它规定了游戏加载内容的范围大小。默认情况下,uGridsToLoad
被设定为5,意思就是说游戏里的一切都发生以玩家所处的单元格为中心的这55个单元格内,而在这25个单元格之外就是远景了。uGridsToLoad
和其他以单元格作为单位的设置都只能被设置为奇数,因为在偶数偶数大小的范围内不可能存在一个位于正中央的单元格。某些非常古老的文章里提到玩家可以把uGridsToLoad
设置为7甚至更高的值,以提升较远处物体的显示效果,不过这样做很不推荐。比起完整渲染55个单元格,完整渲染7*7个单元格的性能消耗可是增长了近一倍,玩家遭遇bug和不稳定因素的概率也会大大上升。
![加载范围图片展示](https://www.z4a.net/images/2023/08/11/1489be99d587c78dead531deffc126d4.jpg)
游戏加载范围的直观展示。关闭远景,开启单元格分界线之后可以清楚看到在默认设置下,加载范围由5*5个单元格组成。
一般来说,超出uGridsToLoad的范围外,完整模型就会被远景模型所替代,但是也有少数例外。根据替换对象的种类,老滚5的远景可以被划分为3种:地形远景、物体远景和树木远景。地形远景用来替换玩家脚底下踩着的地面(包括水面);物体远景用来替换山脉、岩石、建筑等中大型物体;树木远景,顾名思义,替换的则是完整的树木。从游戏运行的意义上,老滚5中的远景其实并不真正存在。它们没有碰撞体积,不会变化,无法与任何东西产生互动,甚至不能投射/接收阴影。它们只是海市蜃楼,把它们全部去掉不会对游戏运行产生任何影响。事实上,玩家也的确拥有把远景去掉的办法——在控制台中输入tll。这一命令会关闭/开启游戏中的远景显示,在判断一个模型属不属于远景时非常好用。
我们在讨论远景的定义时已经提到,远景一般包括多个不同的精度层次,游戏会在在距离玩家更远的地方使用精度更低的远景模型,以尽可能地节约性能。在老滚5里,物体远景和地形远景分为4个精度层次:LOD4、LOD8、LOD16、LOD32,精度逐级递减。LOD4指的是44个单元格内的地形/物体远景信息被汇总在了一个模型文件里;LOD8指的是88个单元格内的地形/物体远景信息被汇总在了一个模型文件里,以此类推。在各个远景层级中,LOD4距离玩家最近,模型的相对精度最高,LOD8次之,LOD16又次之,LOD32距离玩家距离最远,模型精度最低。需要注意的是,在默认设置下,老滚5的物体远景只有LOD4/8/16三级,LOD32只有地形远景方才使用。至于树木远景,不论其距离玩家多远,它始终都是两个平面交叉组成的一个极其简单的纸片模型(这个模型叫做billboard),因此也就不存在层级系统。此外,老滚5的地图上显示的是最远级别的物体和地形远景,在默认设置下也就是LOD16的物体远景加上LOD32的地形远景。游戏最远能渲染大约100个单元格的距离。
![billboard图片展示](https://www.z4a.net/images/2023/08/11/billborad.jpg)
Billboard树木远景的具体展示——加载了同一份材质文件的两个平面呈九十度交叉。
(这里额外说一下水面远景:老滚5可以有多种不同的水,但是由于引擎限制,一个worldspace里只能存在一种远景水,也就是说不管江河湖海,整个天际的所有水体出了加载范围看上去都是一个样子。没有任何mod或者工具能够改变这一点。如果你在游戏中看到完整水和远景水之间出现了较为明显的色差/接缝,这不是任何远景生成工具的问题,而且有可能无法彻底解决。在确认插件排序无误的情况下,玩家可以考虑调整ENB设置中ReflectionAmount
、DisableDistantReflection
与Muddiness
等设置,观察能不能带来改善。)
!【远景水的色差更重要还是近景水的多样性更重要——如Water for ENB的Shaders of Skyrim版,取决于玩家个人喜好】
老滚5的远景数据都储存在一个个已经固定死了的模型文件里,而游戏自然是不可能在运行时对它们进行修改的。所以,无论游戏进行到了哪个阶段,远景呈现的内容都不会改变,除非玩家在游玩的间隙亲自去修改相关游戏文件。这就带来了一个问题:例如,游戏刚开始,玩家就目睹了Helgen的毁灭。可是,老滚5的远景系统却完全反映不了这样的变化——远景显示的小镇要么一直完好无损,要么一直都是一片废墟。在老滚5里,随着任务和剧情的发展,玩家身边的世界也经常会发生改变,但是简陋的远景系统却从头到尾都是一个样子。此外,老滚5的远景不支持动画效果。在远景里,瀑布不会流动,风车不会旋转,窗户自然也不会随着夜晚来临亮起灯光。这些都是老滚5原版远景系统中存在的巨大限制。B社大概也知道不是所有的远处物体都适合用远景系统显示,因此它在引擎里留下了一个后门:你可以给物体加上IsFullLOD
这个标签,具有IsFullLOD
标签的物体其显示距离仅仅受fSkyCellRefFadeDistance
这一设置控制。只要在fSkyCellRefFadeDistance
的范围内,它们就不会消失,也不会被替换成远景,无论它们在不在加载范围内。正因如此,我们将这些物体称为neverfade
。在原版游戏里,这个标签主要是给云朵/山雾使用的。
当玩家在户外世界移动时,游戏需要频繁执行远景和近景之间的切换,以确保玩家始终位于加载范围中心的那个单元格。从远景切换到近景的大致流程如下:玩家一跨过单元格的边界,玩家行进方向便有一排单元格会进入到加载范围内。此时,游戏会先加载出完整的地形,把原先的地形远景挪到完整地形的下面,并且取消加载水面远景。随即游戏会加载树木,取消加载树木远景,再加载物体,取消加载物体远景。由于“加载完整模型并且取消加载远景模型”这一过程需要花费一定时间,在一段短暂时间里完整模型和远景模型可能会同时存在。如果两个模型基本重叠,那么玩家就有可能会注意到它们之间发生了z-fighting
,也就是闪烁现象。
简单了解了老滚5远景的实现机制之后,我们很容易就能明白,在安装了mod的情况下,远景极其容易出现不兼容现象,而且这种不兼容无法依靠mod作者直接提供现成的远景文件来解决(事实上大多数mod作者的确也不会这么做)。举个最夸张的例子:一个LOD32远景文件囊括上千个单元格,而只要有两个mod分别修改了这上千个单元格当中的两个,那它们的远景就“不兼容”。这种情况发生的概率有多大,mod玩家大概心里都有数。可以想见,如果一位mod玩家想要拥有与自己的游戏完全匹配的远景,那么他/她就必然需要使用远景生成工具。
![level32 lod图片展示](https://www.z4a.net/images/2023/08/11/level32-lod.jpg)
一个方框代表一个LOD32模型文件覆盖的范围。很明显,中间的4个LOD32文件就已经覆盖了整个天际的绝大部分面积。
1.3 Large reference与large reference bug
在介绍远景生成工具之前,我们有必要认识一下组成原版远景的最后一块拼图:常常被人忽视的large reference。Large reference是老滚5特别版中加入的功能,其基本原理是通过正常物体和完整模型来改善远景的显示效果。具体来说,游戏数据当中有一个large reference列表,其中记载了一些比较大型的物体,例如建筑、山体等的具体位置。这些属于large reference的物体可以以完整形态出现在远景区域里,不会因为出了加载区域消失或被远景模型取代。你可以在控制台当中选中这些large reference完整模型,输入tll它们也不会消失,这意味着严格来说它们并不属于狭义上,或者说游戏引擎意义上的“远景”,而是和前面介绍的neverfade物体有一定相似之处。游戏ini设置中的uLargeRefLODGridSize
决定这些large reference具体能延伸到多远。这一设置和前面介绍的uGridsToLoad是同样的原理,也就是说它只能设置为奇数。在B社启动器的画质选项里,玩家最多只能把它拉到11,相信这也是大多数玩家所使用的设置。
我们以uGridsToLoad=5
,uLargeRefLODGridSize=11
为例。在这种情况下,以玩家为中心的55个单元格是加载区域,其中没有任何远景。在这25个单元格外,以玩家为中心的1111个单元格内的区域则属于large reference区域。在这一圈范围内,属于large reference的物体依旧会以完整形态显示,但是地形则会转变为远景,不属于large reference的物体也会照常消失/转变为远景。超出这121个单元格则是彻头彻尾的远景区域。大概B社也知道有多少人为了改善远景而调高uGridsToLoad
,为此他们想出了这种“折中”方案。当然,11*11个单元格并不算多大的范围,也就是说在默认设置下large reference只能改善中距离上的观感,对于远处的景物还是无能为力。当然,玩家也可以进一步扩大large reference的显示距离,不过笔者并不推荐这么做。就算不考虑可能大幅度增加的性能消耗,谁也没法保证在这么远的距离外完整模型还能带来显著的视觉效果提升。
如果large reference要生效,uLargeRefLODGridSize
显然必须大于uGridsToLoad
。如果你希望关闭large reference系统,只需要把uLargeRefLODGridSize
调到5,也就是等于uGridsToLoad
的值就行了。你可能要问,large reference系统不是挺不错的吗,为什么要关掉它?答案是,这玩意听上去很美好,实际上问题多多,甚至可能降低玩家的视觉体验。
![large reference图片展示](https://www.z4a.net/images/2023/08/11/large-reference.jpg)
去除远景显示之后的游戏截图。可以看到,在开启了large reference系统之后,本来应该是空荡荡的远景区域里多出了很多完整显示的large reference模型。
首先一点是,游戏里的很多模型从近处看没有什么异样,但如果从远处观看,玩家可能会发现一些怪异现象,例如墙上的苔藓/山体上的雪覆盖的范围明显变广,甚至出现在了不该出现的地方。又比如,一些本来被其他模型/平面遮住的模型随着视角拉远反而露了出来,从而呈现出相当诡异的视觉效果。这种现象通常只会在完整模型上出现,而不会在远景模型上出现。一般来说玩家并不会在特别远的地方看到完整模型,所以这也无伤大雅。然而large reference系统大幅提升了完整模型的显示距离,也就大大增加了此类现象发生的频率。
上段提到的这类视觉问题,笔者不好直接将其定义为“bug”,但下面要提到的却百分之百是一个bug。在正常情况下,同一个large reference物体的完整模型和远景模型是不会同时存在的,但某些特定条件可能会诱使一整个单元格内的远景模型和large reference完整模型同时出现,重叠在一起,这种现象我们一般称作large reference bug。它带来的影响可大可小:如果完整模型比远景模型尺寸更大,能把它完全覆盖,那玩家是察觉不到什么异样的;反之,如果远景模型覆盖了完整模型,那就等同于large reference实际上没有起到作用,只在白白消耗显卡性能。第三种情况则更为严重:远景模型和完整模型尺寸相近,“互有出入”。就像前面提到的那样,这种时候玩家非常容易观察到两个模型重叠的地方发生z fighting,也就是闪烁。
Large reference bug似乎依旧处在一个鲜为人知的状态,但它其实广泛存在于打了不少mod的游戏当中。Large reference数据需要位于ESM插件当中才能生效,因此,如果有一般的ESP插件覆盖了这些数据,large reference bug就会被触发。由于它不止影响单个物体,而是一次性影响一整个单元格,由它导致的闪烁现象很有可能相当普遍。理论上来说最符合直觉的解决办法是把相关插件全部转化为ESM插件,不过这一方案显然没有太多可行性。
如果你经常在游玩中注意到类似上文所述的现象,可以考虑彻底关闭large reference系统。诚然,你的远景在中距离精度可能会有一定程度的降低,不过谁又能保证自己一定能注意到这点区别呢?如果你依旧希望使用这一功能,下面介绍的DynDOLOD远景生成工具至少可以在一定程度上解决large reference bug。
1.4 远景生成工具简介
在老滚5mod圈子提到“刷远景”这几个字,大部分玩家或许只能想到DynDOLOD,但其实能够生成远景的工具远远不止它一个。例如,被广大modder深恶痛绝的Creation Kit就理所当然地拥有这一功能。作为B社官方提供的mod制作工具,CK以界面复古、操作困难、bug多多而闻名于世。虽说如此,它的许多功能直到如今依旧无可取代,因此大家也只能捏着鼻子继续用它。万幸的是,“远景生成”并非CK的专利技术。笔者对CK了解很浅,因此无法在此提供什么细节。我们只需要知道,CK可以生成远景,但是我们完全没有任何必要去使用它的这一功能。
在老滚5刚刚发售时的modding蛮荒年代就已经有modder在钻研用来生成远景的第三方工具。Oscape就是一个发布于2011年的地形远景生成工具。笔者对该工具基本没有任何了解,不过从其复杂的UI界面来看,使用它生成远景想必不会轻松。该工具早在2012年就已经停止了维护,不仅功能性上早已落后,许多bug也从未得到解决,就连它的官方文档网站也已经在2015年左右失效。虽然如此,在相当长的一段时间内它都是除了CK之外唯一能够生成地形远景的工具,因此玩家依旧能在部分提供现成远景的mod(例如Terrain LOD redone)里找到它生成的文件。
2012年,大名鼎鼎的xEdit发布。某种意义上来说,xEdit可以被看作是CK的轻量化替代品,虽然它们的侧重点并不一样。既然CK能够生成远景,xEdit自然也得包含这一功能。xLODGen便是将xEdit的远景生成功能拆分出来得到的产物,其实它本质上就是一个改了名字的xEdit。和xEdit一样,这里的“x”可以指代许多B社游戏,例如在传奇版老滚5的语境下它叫做TES5LODGen,在特别版/周年版老滚5的语境下它叫做SSELODGen,在辐射4的语境下它叫做FO4LODGen,如此等等。“正式版”的xLODGen仅仅具有树木/物体远景生成功能。2018年,Sheson发布了具有地形远景生成功能的xLODGen Beta,从而取代了Oscape。在此后的更新中,Sheson又在xLODGen Beta中加入了occlusion生成功能和对季节mod的支持。目前,最理想的远景生成流程依旧需要使用xLODGen Beta生成地形远景。
关于xLODGen有两点需要格外注意,其一是Beta版本的xLODGen不在Nexus上,Nexus上你能找到的SSELODGen是已经完全过时,没有任何使用价值的旧版本。目前xLODGen Beta的官方下载渠道仅位于Step Modifications论坛上。其二则是老滚5的地形远景模型上除了相应的地形远景材质以外还覆盖有一层noise材质。顾名思义,noise材质很像老式电视机上会有的那种白噪音画面,它的主要作用是防止远景地面看上去过于单调。xLODGen不生成noise材质,noise材质也不影响xLODGen生成地面远景。如果xLODGen生成的远景地面材质和完整地面材质之间出现了色差,那么问题有可能就出在noise材质上。
2014年发布的DynDOLOD将会是本文重点介绍的对象。简单来说,DynDOLOD是由Sheson开发的进阶版xLODGen。它专门用于为老滚5(不限版本)生成物体/树木远景——这里有两点需要注意,一是它仅适用于老滚5(以及Enderal),其他B社游戏依旧只能用xLODGen生成远景;二是它仅负责物体/树木远景,而不负责地形远景——生成地形远景需要使用xLODGen Beta。DynDOLOD甫一诞生便取代了之前所有以改进老滚5远景为目标的mod/工具,成为了老滚5远景问题的终极解决办法。
1.5 远景生成基本原理
我们已经知道,远景由地形远景、树木远景和物体远景三部分组成,在一般的流程中,xLODGen负责前者,而DynDOLOD负责后两者。xLODGen会根据游戏内的数据创建出和完整地形相匹配的地形远景模型,并且根据游戏内的地形材质生成相匹配的远景材质。DynDOLOD则没有凭空生成远景模型的能力——它所做的其实是把它在游戏文件中能找到的远景模型拼凑成一整块LOD4/8/16/32模型。这也是为什么DynDOLOD Resources是DynDOLOD的必要前置——没有资源包里提供的远景资源,DynDOLOD可谓是巧妇难为无米之炊。同理,某些mod较大程度地修改了物体的完整模型,却没有提供相应的远景模型,这种情况下DynDOLOD只能使用DynDOLOD Resources当中与原版模型相对应的远景模型,也就是说完整模型和远景之间会出现不匹配的现象。如果你注意到了类似的现象,这不是因为DynDOLOD出了问题,而是因为mod作者完全忽视了远景,或者是对于远景认识不到位。Sheson在DynDOLOD Resources中包括了一些流行mod的远景模型资源,但他显然无法,也不需要为一切mod提供这样的支持。
(另外需要注意的一点是,DynDOLOD在拼凑物体远景模型的时候会读取地形远景模型。这是因为一部分物体远景模型可能会被埋在地形远景下头,DynDOLOD会把这部分模型去掉以节约性能。因此玩家需要先运行xLODGen再运行DynDOLOD。)
每一个模型都需要对应的材质才能正常显示,远景模型也不例外。DynDOLOD同样没有自己生成材质的能力,它所需要的材质都由TexGen——和DynDOLOD打包在一起的另一个软件——生成。这不代表DynDOLOD完全不处理材质:和模型类似,它会把一整个worldspace中远景需要用到的所有材质拼凑成一整张巨大的atlas,也就是说一个atlas材质文件对应一个worldspace。
生成(或者说拼凑)远景模型和材质是DynDOLOD最基础的功能,但其实xLODGen也能做到这些,尽管效果远不如DynDOLOD好。DynDOLOD真正独一无二的价值得从它的名字中寻找:这个名字其实是Dynamic Distant Objects LOD(动态远距离物体细节层次)的简称——用人话来说,DynDOLOD的意思就是“动态远景”。诚然,动态远景不过是DynDOLOD提供的一个可选功能,玩家完全可以不使用它,但它反映的正是DynDOLOD的初衷:解决远景“不会动”的问题。
和前面介绍的large reference一样,“动态远景”不是狭义上的远景,至少不是老滚5引擎意义上的远景。在控制台中输入tll关闭远景显示,动态“远景”并不会消失——因为它们其实就是完整的物体,是可以被控制台选中的。DynDOLOD利用了本来只是用来显示远处云朵/山雾的neverfade系统,给那些不适合用远景系统显示的物体加上了IsFullLOD
标签,这样它们就不会像一般的物体那样,离开加载区域就彻底消失不见,或者被相应的远景模型所取代。只要neverfade物体处于fSkyCellRefFadeDistance
的范围内,它们就会以完整状态显示。既然它们是完整的物体,那它们自然也就像其他完整物体一样,能拥有动画,也能随着任务进展而发生变化。为了确保动态远景不会消耗太多性能,DynDOLOD会额外通过脚本控制它们的显示距离。这里有两点需要说明,其一是动态远景是引擎意义上的完整物体,但它完全可以使用和普通远景一样的低精度模型,而不是非得使用该物体的完整模型;其二则是动态远景永远不会出现在地图上,因为地图只显示狭义上的、“正宗”的远景。这是一个小小的遗憾,不过一般来说影响非常有限。
1.6 DynDOLOD 3——革命性的提升
目前最新的稳定版DynDOLOD版本号为2.98,不过笔者不推荐玩家使用这个版本。这是因为在2020年年底,Sheson推出了DynDOLOD 3的Alpha测试,为软件添加了许多堪称革命性的新功能。DynDOLOD 3理论上依旧处在A测阶段,但是经过两年多的bug修复和改进,笔者认为DynDOLOD 3已经基本能够放心使用了。诚然,它并非尽善尽美,测试版较为频繁的更新也可能会对一些玩家带来困扰,但是相比老版本,它带来的视觉效果提升是实打实的。
DynDOLOD 3最主要的新功能在于对植被远景的改进。树木远景方面,DynDOLOD 3在UI中正式加入了Ultra树木远景功能。这一功能的实际作用是彻底抛弃原版的树木远景系统,改用物体远景系统去显示树木的远景。如前文所述,原版的树木远景尤其简陋,它所使用的billboard模型仅仅由两个平面交叉而成,不支持法线材质,没有真正的细节层次区分,其他方面也存在诸多限制。启用Ultra树木远景意味着树木可以拥有真正的3D模型,拥有法线材质和更好的光影效果,意味着玩家能通过DynDOLOD的规则栏具体控制树木远景在不同LOD级别的显示效果。启用Ultra树木远景堪称有百利而无一害,在设置恰当的情况下几乎不会影响性能表现。
(这里强调一点,Ultra树木远景不完全等同于3D树木远景。开启Ultra树木远景功能之后,DynDOLOD默认能生成改进款的billboard远景,但是能不能生成3D树木远景要取决于玩家有没有安装相应的3D树木远景资源。这些3D树木远景资源可以是完全3D的,也可以是混合式的——由3D的树叶树枝和billboard式的树干组合而成。3D树木远景的效果如何完全取决于3D树木远景资源的提供方,DynDOLOD只能控制在哪些LOD层级使用3D树木远景,在哪些LOD层级使用改进款的billboard远景。)
草地远景大概是DynDOLOD 3名头最响的新功能。在原版游戏里,草地其实是一种相当怪异的东西。它们无法用控制台选中,实际上也的确不属于游戏引擎意义上的物体。在游戏的插件数据里,每一个物体放置在具体什么位置都要详细记录在案。反观草地,游戏的插件数据里只是记载了某片地形上会不会长草,会长什么种类的草,玩家在游戏里看到的草都是根据这些数据实时生成的。也就是说,你每次打开游戏看到的草地其实都不完全一样。在原版游戏里,草地最多只能延伸到加载范围的边缘,远景区域里没有草,也没有草的远景。DynDOLOD同样无法根据这些抽象的草地数据生成远景,因此草地和光秃秃的远景地形之间颜色不匹配的问题一直在困扰着广大玩家。
2020年年底,No Grass In Objects(下称NGIO)横空出世,彻底改革了老滚的草地系统。它的功能远不仅是名字描述的那么简单:有了NGIO,草地能够不被加载范围限制,做到无限延伸;NGIO能够更改草地模型的大小,能够加大草地的密度,而最重要的是,NGIO修复了老滚5的草地缓存功能。和语焉不详的插件数据不同,草地缓存文件是真的明明白白记载了每一株草长在什么位置。不过,加载草地缓存的功能在游戏设置中默认关闭,就算你启用了它,原版游戏数据中的草地缓存文件也会导致严重bug。NGIO接管了加载草地缓存这一功能的开关,并且让玩家能够相对方便地生成与自己游戏相匹配的草地缓存文件。游戏实时生成草地需要耗费性能,加载草地缓存的本意在于节约这部分性能并提高游戏稳定性,但与此同时,草地缓存的存在也为草地远景铺平了道路。
我们已经提到NGIO让草地无限延伸成为了可能,但是随显示距离指数级增长的草模型显然会对游戏性能带来巨大影响。为了节约性能,草地远景应运而生。DynDOLOD 3能够读取草地缓存文件当中的数据,从而为这些确切存在的(而非量子态的)草生成远景。虽然完整草地依旧不属于“物体”,草地远景却是物体远景的一部分。它只存在于LOD4级别,也就是相对而言离玩家最近的一小圈远景当中,原因是草地远景依旧非常吃性能。草地远景使用的模型和树木远景一样是两个平面交叉的billboard,在单个模型的面数上已经没有任何优化空间。然而,草地的密度毕竟摆在那里,这意味着草地远景对于市面上大多数硬件依旧能构成不小的挑战。
原版老滚5的草地不支持法线材质。ENB在2022年推出了complex grass功能,让草地能够使用法线材质以提升它在光照下的表现。DynDOLOD 3也针对complex grass推出了支持法线材质的HD草地远景。需要注意的是,HD草地远景用到的单个草模型面数是普通草地远景的两倍,也就是说在同等密度下HD草地远景消耗的性能是普通草地远景的两倍。
无论是草地远景还是树木远景,生成它们都需要billboard文件。每一种会在远景中显示的树木/草都有自己对应的一套billboard。Billboard由两部分组成,其一是一至数份dds材质文件,记录该种植被的模型从正面(以及不同的侧面角度)看过去的样子,其二是一份txt文件,记载其他一些相关信息。在DynDOLOD 3之前,树木的billboard文件需要由树木mod作者自己提供。自DynDOLOD 3开始,DynDOLOD需要用到的所有billboard文件都由TexGen生成,因此玩家已经无需下载第三方提供的billboard。此外,当玩家用到Ultra树木远景和HD草地远景时,TexGen生成的HD billboard还会包括对应的法线材质。
!【大多数mod都只修改草地或者只修改地形材质,你不能指望这些风马牛不相及的mod搭配起来能有多和谐。大多数时候玩家都没法让远景地形颜色和草地颜色相匹配,因此草地远景显然是有价值的,而草地虽然只能存在于LOD4级别,但LOD4距离可以调整,距离调到了六七万左右在绝大多数视角下基本都能达到一望无垠的效果,当然这样对于性能消耗也很大。原版游戏里草地只能存在于加载范围内,而加载范围实在是小得很。使用NGIO让完整草地在加载距离外显示消耗的性能可能比草远景更加巨大,所以一般来说还是用草远景比较好。】
Occlusion是老滚5节约性能的一种方式。在游戏插件里,每一个户外单元格都有着自己的occlusion数据。通过这些数据,游戏能够判断有哪些远景从玩家视角来看是被地形所遮蔽的。既然玩家看不见这部分远景,游戏便会直接把它们隐藏起来,从而尽可能节约性能。问题在于,原版的occlusion数据存在几处bug:玩家明明能在正常游玩中看到的远景被错误地遮蔽起来,变成了几个大洞(这种现象多见于地图北方的海里)。xLODGen Beta能够重新计算occlusion数据从而修复这些bug,这一功能随后被引入至DynDOLOD 3当中。
![Occlusion图片展示](https://www.z4a.net/images/2023/08/11/Occlusion.jpg)
左侧为原版occlusion数据造成的视觉错误,右侧为使用xLODGen/DynDOLOD重新计算occlusion数据后的效果。
上文中我们已经介绍了large reference bug。在默认设置下,DynDOLOD能够解决一小部分在原版游戏里就已经存在的large reference bug(这也是为什么DynDOLOD会在ESP插件之外专门生成一个ESM插件),但它无法修复ESP插件引发的large reference bug。好在,一段时间之前Sheson为DynDOLOD 3加入了试验性的large reference bug解决办法。在理想状况下,该功能能够让一切large reference bug从玩家的游戏中消失。此外,large reference bug解决办法还能改善在主城内看到的城外景色。虽说该功能还在试验阶段,笔者认为一般用户其实也可以考虑使用。使用该功能需要一些额外步骤,具体信息会在后文详细介绍。
除了上述这些主要改进之外,其他值得一提的DynDOLOD 3新功能包括对于Enhanced Volumetric Lighting and Shadows (EVLaS)、Seasons of Skyrim SKSE、Base Object Swapper和Community Shaders等流行mod的支持,对于Open Cities Skyrim及类似mod的远景生成的简化,以及在TexGen中加入生成材质预览功能等。
!【请注意,这并不代表你将白漫苔原改造成为白漫大森林就直接可以提高帧数,因为Occlusion的本质是放置occlusion plane,而除了occlusion plane之外的物体并没有类似的遮蔽功能,可以把occlusion plane放置在类似于树木这样的大型物体里头,从而达到节省性能的效果,但这不代表单凭树木本身就能做到这一点。xLODGen和DynDOLOD所重新计算的occlusion数据是另一种遮蔽方法。这些occlusion数据不是物体放置reference,而是单元格reference本身的一部分。游戏会根据它们判断哪些远景会被【地形】所遮蔽。树木这样的物体显然与这个过程无关。】
2 远景生成准备工作
2.1 远景生成前置:必备篇
远景生成说容易也容易,说复杂也是真的复杂。许多经验不足的mod玩家似乎都对“刷远景”有一些畏惧,不过它的基础步骤其实并不算【特别】繁琐。在正式开始之前,玩家必须确保自己安装了以下mod/工具/软件:
1)符合当前游戏版本的SKSE
这个不用多说。可在其官网或N网编号30379下载。笔者使用的游戏版本是1.5.97,因此对于周年版版本(1.6+)的认识不算全面,不过下文依旧会介绍一些周年版玩家需要额外注意的事项。
2)现代mod管理器,例如MO2/Vortex
同样不用多说。应该已经没有人还在手动安装mod或者用NMM了吧?笔者只使用过MO2,因此本文也只介绍MO2的操作经验。
3)最新版本的Microsoft Visual C++ 2015-2022 Redistributable
Visual C++运行库对于许多游戏/软件的运行都至关重要。笔者推荐每一个游戏玩家都安装最新版本的Visual C++运行库并且关注更新信息,这个建议不仅针对老滚5玩家。
4).NET Desktop Runtime(6.0版本及以上)
DynDOLOD前置,许多其他软件和工具也需要用到,推荐所有Windows使用者安装最新的稳定版本并且关注更新动态。
5)DynDOLOD Resources
DynDOLOD运行时必须用到的资源包,务必确保安装的版本与你的游戏版本和DynDOLOD版本相匹配。本文只介绍老滚5特别版下的DynDOLOD 3,该版本需要用到的资源包位于N网编号52897。
6)PapyrusUtil SE(N网编号13048)
许多重要mod的前置,注意使用与游戏版本对应的版本。此外,如果你使用的是周年版版本(1.6+),你还需要安装对应版本的Address Library for SKSE Plugins(N网编号32444)。
7)xLODGen Beta
用于生成地形远景的工具。切记不要使用N网上的旧版本SSELODGen(编号6642),旧版本的功能已经被DynDOLOD全面取代。目前该软件的官方下载渠道只能在Step Modifications论坛上找到。论坛可直连(百度搜索xLODGen Beta即可找到链接),但软件需要特殊上网方式下载。
8)xLODGen Resource- SSE Terrain Tamriel(N网编号54680)
确保xLODGen能够生成游戏地图最边缘,玩家不可进入区域的地形远景。严格来说是可选项,但是不使用会出现视觉bug。一般用户推荐使用Extend版本,性能不吃紧也可考虑Full Extend版本。具体使用方式下文会详细介绍。
注意该mod与Worldspace Transition Tweaks(N网编号48889)不兼容。如果你安装了Worldspace Transition Tweaks就无需安装该mod。
9)DynDOLOD
远景生成的主角。本文介绍的是DynDOLOD 3 Alpha(N网编号68518)。
10)SkyUI(N网编号12604)
无需介绍。严格来说同样属于可选项,用来显示DynDOLOD的MCM菜单。
2.2 远景生成前置:推荐篇
上节列举的这些软件/mod当中有许多都是人尽皆知,很可能玩家在接触到DynDOLOD之前已经安装了它们。可以说,如果只是要确保远景能够顺利生成完毕,玩家其实不需要费太多心思。不过在这之外,还有许多非必要但是十分推荐安装的mod/工具,其中大部分极其推荐所有用户安装。
1)RaceMenu(N网编号19080)
最为流行的捏脸工具,除此之外还包含有一些额外功能。DynDOLOD可以借助它提供的功能动态控制远景发光窗户的亮度。
2)DynDOLOD DLL SE(N网编号57264)
PapyrusUtil的替代品,如果玩家没有安装PapyrusUtil那就需要安装DynDOLOD DLL以确保DynDOLOD正常运行。两者可以同时存在,但在安装了PapyrusUtil的情况下DynDOLOD DLL基本没有太大安装价值。不过,近段时间Sheson推出了试验性的DynDOLOD DLL NG,作为large reference bug解决方案的必要前置。如果玩家希望使用large reference bug解决方案那就必须安装DynDOLOD DLL NG。此外,使用DynDOLOD DLL NG也能在一定程度上提高DynDOLOD的性能表现。必须强调的是,由于DynDOLOD DLL NG还处在试验阶段,Sheson隐藏了它的N网文件。目前下载链接只能在DynDOLOD官网的Large Reference Bugs Workarounds页面上找到。
3)SSE Engine Fixes(skse64 plugin)(N网编号17230)
极其关键的引擎修复,可作为NGIO前置的前置。
4)No Grass In Objects(N网编号42161)
大名鼎鼎的NGIO,可以说彻底改革了老滚5默认的草地系统。DynDOLOD 3的草地远景功能需要借助NGIO生成的草地缓存才能实现。需要.NET Script Framework(N网编号21294)作为前置。不支持周年版版本(1.6+)。
5)Worldspaces withGrass SSEEdit Script for No Grass In Objects(N网编号55152)
xEdit脚本,能够列举出游戏中拥有草地的worldspace。用来确保NGIO在生成草地缓存时会跳过没有草地的worldspace,从而节省生成草地缓存的时间。该mod会与DynDOLOD Resources中的Whiterun Exterior Grass选项产生隐性冲突,解决方法下文会详细介绍。
6)Grass Cache Fixes(N网编号60891)
周年版版本(1.6+)用户使用草地缓存/生成草地远景必备,1.5.97版本用户不需要使用。不建议在网络上下载第三方提供的现成草地缓存,建议使用降级工具(例如N网编号57618)降级到1.5.97之后使用NGIO生成草地缓存。具体使用方法下文会详细介绍。
7)xEdit(SSEEdit)
无需太多介绍,排查解决插件问题所必备。可在N网(编号164)或GitHub上下载。
8)LOOT
同样无需太多介绍。笔者个人不使用它排序,但它能提供很多有价值的信息。可在N网mod工具区(编号439)或GitHub上下载。
9)NifSkope
用于查看/编辑老滚5游戏模型的软件,资深modder必备。可在GitHub上下载。
10)Creation Kit
B社官方mod工具,部分草地mod需要用CK编辑过后才能生成草地远景。可在Steam上免费下载。推荐安装N网上的第三方修复/改进(如编号20061、41195、71371)之后再使用。
11)DynDOLOD Modders Resource Fixes(N网编号53526)
修复了部分mod的远景资源问题。按需安装。
12)DynDOLOD TexGen Fixes (Summerset Isle-Gray Cowl-Beyond Reach-Midwood Isle-ELFX)(N网编号69323)
同上。
13)LOD Mesh Fixes for DynDOLOD(N网编号69851)
同上。
14)LOD Model Library for DynDOLOD(N网编号87521)
修改一部分DynDOLOD Resources中的远景资源,使其与某些mod更加匹配。按需安装。
15)Glacier LOD Meshes
更高质量的冰川远景资源。位于N网传奇版区(编号110367),但是适用于所有游戏版本。
16)HD LODs Textures SE(N网编号3333)
更高质量的远景资源(主要是建筑)。注意使用DynDOLOD版本,并且删除所有billboard文件(下文会有详细介绍)。
17)LOD Unloading Bug Fix(N网编号61251)
安装此mod后玩家可以手动移除因为bug而出现在近处的远景。DynDOLOD的动态远景功能修复了这一bug,因此这个mod一般情况下派不上用场。
18)HD Terrain Noise Texture SE(N网编号47057)
更高质量的noise材质,颜色深浅适中,能够保证远景地面颜色不会产生太大偏差。
19)Far Object LOD Improvement Project SSE(N网编号79197)
通过DynDOLOD为远景(与地图)增添部分物体,例如道路。
20)A Clear Map of Skyrim and Other Worlds(N网编号56367)
地图mod,基本理念是辅助xLODGen和DynDOLOD生成与玩家游戏内容相匹配的地图。能够让DynDOLOD为地图增添更多细节。
21)ACMOS Road Generator(N网编号79205)
A Clear Map of Skyrim的附件,能在xLODGen生成的地图材质上添加道路。
22)Markarth LOD Unlock(N网编号84375)
让Markarth像其他四大主城一样使用Tamriel主世界的远景数据而非独立的远景数据。能够显著改善在城内看到的城外景色,当然也会对性能造成一定影响。该插件实际做出的改动非常简单,因此玩家可以选择不安装它,而是使用xEdit自行创建与其功能一致的补丁插件,以保证兼容性。后文会进行详细介绍。
23)Visualize Vanilla(N网编号84265)或类似mod
半整活向mod,将全游戏中所有的材质都替换为四色方块。该mod的原本意图是“帮助重度mod玩家寻找游戏内依旧存在的原版材质”,不过也可以在生成草地缓存时使用,以减少内存占用,缓解跳出现象。类似的超低分辨率材质替换mod也能起到相同效果。
24)ENB
不需要太多介绍,可在其官网下载。本文中提到ENB主要是因为0.472版本中加入的complex grass功能。新版本的ENB核心能够兼容老版本预设,因此务必关注ENB官网更新信息,保持ENB核心处在最新状态。
25)与你当前草地相对应的complex grass材质
ENB complex grass功能需要专门的complex grass材质才能生效,不过目前大部分草地mod都不包括这些材质。ENB Complex Grass - Patch Compendium for various grass mods(N网编号67304)中汇总了大量流行草地mod的complex grass材质。除此之外,Step Modifications团队也制作了原版草地(N网编号68640)和Cathedral Landscapes草地(N网编号69578)的complex grass材质。
26)与你当前树木相对应的3D树木远景资源
DynDOLOD 3的3D树木远景功能需要相应的3D树木远景资源才能生效。DynDOLOD Resources中已经包含了原版树木的3D远景资源,但是大多数树木mod的3D远景资源都需要其作者(或者其他mod作者)提供。注意不要误下载了billboard文件。
2.3 远景生成前置:黑名单篇
既然有推荐的mod和工具,那自然也有不推荐安装的mod和工具。以下提到的mod/工具/文件完全不推荐使用,它们最好情况下也是毫无作用,甚至很有可能干扰理想的远景生成。如果玩家安装了它们应该立即移除,并使用推荐方式重新生成远景。注意这一黑名单并不全面,一些比较冷门的mod或者古老的传奇版mod不包括在内。与此同时,DynDOLOD内置有一份更加全面的黑名单插件列表,如果它检测到你安装了黑名单中的插件,它会在加载时弹窗警告并强制关闭。如果你遇到这种情况,请按照DynDOLOD的指示卸载相关mod。
1)SSELODGEN(N网编号6642)
上文提到的已经过时的老版本xLODGen,DynDOLOD早已包含其具有的一切功能。务必安装最新版的xLODGen Beta。
2)第三方提供的地形远景模型与材质
第三方提供的地形远景模型与材质有较大概率与玩家的地形不匹配。Terrain LOD redone(N网编号9135)和Perfect Terrain LOD(N网编号39563)是此类mod中N网下载量较多的两个例子。前者包含的地形远景模型为Oscape生成(可能会引发bug),材质为xLODGen生成;后者则完全就是用xLODGen生成的(外加一个来自xLODGen Resource - SSE Terrain Tamriel的插件)。绝大多数情况下玩家应该使用xLODGen生成符合玩家游戏内容的地形远景。
3)Darker Distant LOD for ENB(N网编号23585)
颜色过深的noise材质,部分情况下可以让远景地面更加贴近草的颜色,但与此同时也会让雪地远景显得非常灰暗。鉴于DynDOLOD 3能够生成草地远景,这个mod的“本职工作”也已经被取代了。
4)一切第三方提供的billboard文件
Billboard是DynDOLOD生成树木/草地远景必须用到的资源。自DynDOLOD 3开始,TexGen可以生成所有需要用到的billboard,因此一切第三方提供的billboard都失去了存在价值。后文会介绍如何彻底清除第三方billboard文件。
5)Realistic HD Tree LOD Textures(N网编号4263)
第三方提供的树木远景,极其不推荐使用,尤其是因为DynDOLOD的Ultra树木远景已经彻底淘汰了原版的树木远景系统。
6)Trees LODs with shadows SE(N网编号1885)
同上。
7)一切第三方提供的瀑布远景资源
DynDOLOD Resources中已经包括了合适的瀑布远景资源,没有必要使用第三方远景资源。已安装的第三方瀑布远景资源建议移除。如果你使用Bright Waterfall Fix for ENB(N网编号37956),切记不要安装可选文件中的DynDOLOD Bright LOD Waterfall Fix——该文件已经过时。
8)Winterhold College LOD Shimmer Fix(N网编号25577)
修复了一个原版游戏中就有的large reference bug。DynDOLOD同样能够规避这个bug(无论有没有使用large reference bug解决办法),因此没有必要使用这个mod。
9)Culling dataglitch fix(N网编号6314)
该mod试图通过暴力移除所有occlusion数据的方式来“修复”occlusion引发的bug,这一做法会对游戏性能造成显著负面影响。使用DynDOLOD 3生成正确的occlusion数据。
10)EVLaS Skyrim Underside
Enhanced Volumetric Lighting and Shadows (EVLaS)(N网编号63725)这一mod能大幅度改善老滚户外世界的体积光和阴影效果,非常推荐玩家安装。问题在于,无论是完整地形还是地形远景都无法遮挡体积光,因此使用EVLaS时体积光很有可能会直接透过地形,造成比较怪异的视觉效果。为了解决这一问题,terrain underside应运而生。Terrain underside是一份粗略复制了地形起伏、能够遮挡体积光的模型文件。我们将其放置在略低于实际地面的位置,确保在它不露出地面的同时能营造出和地面遮挡体积光基本一致的效果。DynDOLOD 3能够生成terrain underside文件,因此没有必要使用EVLaS的N网页面里提供的EVLaSSkyrim Underside文件。
![terrain underside图片展示](https://www.z4a.net/images/2023/08/11/terrain-underside.jpg)
左侧为不使用terrain underside时的体积光效果,可以看见近处的树木能遮挡体积光但是远处的山体却不能。右侧为使用terrain underside时的体积光效果,此时体积光不再是视山体如无物。
11)SSE FPS Stabilizer(N网编号38438)
该mod的主要功能是根据帧率实时调节LOD4/8/16物体远景的显示距离,以将帧率控制在玩家设定的目标附近。然而,影响帧率的因素很多,远景不过是其中之一,许多情况下就算玩家将远景彻底关闭也无法实现稳定的高帧率。使用该mod之后,玩家将无法在DynDOLOD的MCM菜单中调节远景层级显示距离,只能去编辑该mod的预设文件。笔者个人认为使用这一mod弊大于利,当然各位读者可以自行斟酌。
12)一切第三方提供的草地缓存
生成草地缓存对于周年版版本(1.6+)的用户来说是一件麻烦事,因此部分玩家会选择使用第三方提供的现成草地缓存。然而和前面提到的现成远景文件一样,这些草地缓存文件有较大概率和玩家的游戏内容不匹配,从而引发草地穿模浮空等问题。笔者还是推荐想使用草地远景的周年版玩家利用降级补丁生成符合自己游戏内容的草地缓存。N网上绝大部分现成的草地缓存文件都由用户dionysist提供,这里不做列举。
2.4 游戏ini设置及推荐
老滚5的游戏设置储存在skyrim.ini、skyrimprefs.ini和skyrimcustom.ini这三个文件里。三个文件当中,skyrim.ini是主要的设置文件,它可以修改绝大部分游戏内设置;skyrimprefs.ini只能修改一部分游戏设置,其中包括skyrim.ini修改不了的那些;skyrimcustom.ini则和skyrim.ini没有任何本质区别。skyrimprefs.ini的优先度高于skyrimcustom.ini,skyrimcustom.ini的优先度高于skyrim.ini。换言之,skyrimcustom.ini中的设置会覆盖skyrim.ini中的设置,而skyrimprefs.ini中的设置会覆盖skyrimcustom.ini和skyrim.ini中的设置——前提是这个设置真的能够被skyrimprefs.ini所修改。某些mod自带ini文件,其中包含对部分游戏内设置的编辑。这些文件不能编辑那些可以被skyrimprefs.ini编辑的设置,不过它们会覆盖skyrim.ini和skyrimcustom.ini中的设置。在此之外,还有一些带有DLL插件的mod能够在不修改游戏ini设置的情况下用自己的客制化设置覆盖掉一切ini文件包含的游戏设置,前面提到的NGIO和SSE FPS Stabilizer就是很好的例子。
很多玩家都推荐使用BethINI(N网编号4875)编辑ini文件。笔者的个人看法是初安装游戏的玩家可以先使用BethINI生成一份大致符合自己需求的ini文件,之后再根据具体情况手动编辑相应设置,而不是一要修改ini文件就请BethINI代劳。本文就不介绍BethINI的使用方法了。另外,如果你使用MO2,务必确保你修改的ini文件是你当前的profile所使用的设置文件,不要搞混了。下面是笔者对于部分比较关键的远景相关设置的介绍和推荐:
skyrim.ini:
[Display]
bEnableLandFade=0
特别版引入的新款地形远景切换效果,默认情况下开启。该功能容易导致地形远景切换到完整地形的过程中发生闪烁,建议关闭。
!【大多数人文件里都没有这一行,需要自己加上去】
[General]
uGridsToLoad=5
uExterior Cell Buffer=36
uGridsToLoad决定游戏加载范围的大小,默认设置为5,其值只能为奇数。不建议修改。uExterior Cell Buffer决定缓存单元格的数量,其必须大于等于uGridsToLoad数值+1的平方。默认为36。
[Grass]
bAllowCreateGrass=1
bAllowLoadGrass=0
bEnableGrassFade=0
fGrassFadeRange=14128
bAllowCreateGrass
用来开启/关闭实时生成草地功能。bAllowLoadGrass
用来开启/关闭加载草地缓存功能。bEnableGrassFade
用来开启/关闭草地渐变消失功能。fGrassFadeRange
决定草地在多远的距离开始渐变消失。如果你要生成草地远景,skyrim.ini中的这几条设置可以被NGIO(1.5.97版本)或者Grass Cache Fixes(1.6+版本)覆盖,因此修改此处的设置更多只是为了保险。后文会有详细的相关介绍。
[LightingShader]
fDecalLODFadeEnd=1.0000
fDecalLODFadeStart=1.0000
fEnvmapLODFadeEnd=1.0000
fEnvmapLODFadeStart=1.0000
Sheson推荐的设置,用来确保decal/environment map的渐变消失不出问题。笔者对这方面基本没有了解,就不班门弄斧了。
skyrimprefs.ini:
[General]
uLargeRefLODGridSize=11
Large reference范围大小,必须设置为奇数。默认为9,在游戏启动器中最小可设置为5,最大可设置为11。必须大于uGridsToLoad
才能起到作用。不推荐设置为大于11的数值,如想关闭large reference功能可设置为等于uGridsToLoad
(默认为5)的数值。
[Grass]
fGrassMaxStartFadeDistance=6144
fGrassMinStartFadeDistance=0
fGrassStartFadeDistance=6144
以上三个选项(主要是fGrassStartFadeDistance)控制草地开始渐变消失之后又会延伸多远才彻底消失。推荐按照上面的例子设置。fGrassStartFadeDistance
可以被NGIO覆盖,因此如果你使用1.5.97版本,修改这里的设置更多只是为了保险。后文会有详细的相关介绍。
[MAIN]
fSkyCellRefFadeDistance=655360.0000
调整neverfade物体(云朵/山雾/DynDOLOD动态远景)的最远显示距离。将该值设置为600000以上基本可以确保neverfade物体永远不会因为距离消失。
[TerrainManager]
fBlockLevel0Distance=57344
fBlockLevel1Distance=147456
fBlockMaximumDistance=327680
fSplitDistanceMult=1.0000
fTreeLoadDistance=500000.0000
fBlockLevel0Distance
、fBlockLevel1Distance
和fBlockMaximumDistance
分别设置的是LOD4、LOD8和LOD16的物体远景显示距离。草地远景只存在于LOD4当中,因此fBlockLevel0Distance
直接控制了草地远景的显示距离。
fSplitDistanceMult
会将不同层级的地形远景显示距离调整至其对应物体远景层级设置的x倍。例如,在fSplitDistanceMult=1.5
,fBlockLevel0Distance=20000
,fBlockLevel1Distance=50000
的情况下,LOD4级别的地形远景显示距离为200001.5=30000,LOD8级别的地形远景显示距离为500001.5=75000,以此类推。如果该值设置为1,地形远景和物体远景将会在同一距离切换层级,这样可能会导致切换效果较为明显。该选项常见的设置在1至4之间,不过如果你使用xLODGen生成的高质量远景地形模型,改动该选项通常不会对性能和显示效果造成太大影响。
fTreeLoadDistance
控制树木远景的显示距离。如果你使用Ultra树木远景,该选项不会有任何作用。
上述[TerrainManager]下的选项均可在DynDOLOD的MCM菜单中实时修改。
2.5 远景生成必备工具/mod安装及设置
本节中提到的所有mod(除非特别说明)请在安装后立即启用,并在任何时候都切勿卸载/取消加载。
1)安装远景生成前置软件,如现代mod管理器、最新版本的Microsoft Visual C++ 2015-2022 Redistributable、.NET Desktop Runtime
这一部分不做过多介绍,需注意后两者务必从微软官方网站下载。分别搜索“Microsoft Visual C++ 可再发行程序包”与“.NET桌面运行时6.0(或者7.0)”能较为简便地寻找到相应的微软官网页面。推荐同时安装Microsoft Visual C++ 2015-2022 Redistributable的32位和64位版本。推荐安装.NET Desktop Runtime最新的稳定版本,一般只需安装64位版本即可。注意不要安装成了.NET Runtime。.NET SDK包含有.NET Desktop Runtime,因此如果你出于某种原因安装了SDK就无需再安装Desktop Runtime。
2)安装符合当前游戏版本的SKSE
这个也不过多介绍。SKSE应当拷贝到游戏主文件夹里,而非用MO2安装。将skse64_loader.exe添加至MO2的可执行程序当中。
3)安装SkyUI、PapyrusUtil SE和xLODGen Resource - SSETerrain Tamriel
下载相应文件并用MO2安装即可。周年版版本(1.6+)的PapyrusUtil SE需要Address Library for SKSE Plugins作为前置。一般用户推荐使用xLODGen Resource - SSE Terrain Tamriel的Extend版本,如果性能不吃紧也可考虑Full Extend版本。安装xLODGen Resource - SSE Terrain Tamriel后将插件拖拽到插件列表最顶端,让其被其他所有插件覆盖,并暂不启用。
(如果你使用Worldspace Transition Tweaks,请勿安装xLODGen Resource - SSE Terrain Tamriel)
4)按需安装并启用DynDOLOD Resources SE 3
用MO2安装。安装选项中,Whiterun Exterior能改善在Whiterun城内看到的城外景观,Solitude Exterior同理。Whiterun Exterior Grass能让Whiterun城外显示草地。(这一选项会与Worldspaces with Grass SSEEdit Script for No Grass In Objects产生隐性冲突,下文会详细介绍解决办法。)High Hrothgar Window Glow能让High Hrothgar的远景窗户在夜晚发光。DLC2 Vvardenfell 3D Plume能将红山喷发的2D特效更换为3D模型。以上选项均能对游戏视觉效果带来较大提升,一般推荐勾选。
其他选项中,Low-Res LOD Textures会安装分辨率更低的远景材质。该选项会降低视觉效果,而且对于性能的改善在绝大多数情况下相当有限,不推荐勾选。Desync Birds of Prey能让城市上空的鸟不再同步拍打翅膀,推荐勾选。Holy Cow是一个彩蛋选项,它会在游戏中添加一尊巨大的圣牛,不推荐勾选。
(除非你打算向Sheson献上你的firstborn)
(该选项与DynDOLOD加入的圣牛加载界面没有任何关系,下文会介绍如何阻止DynDOLOD添加圣牛加载界面)
安装DynDOLOD Resources后,玩家可能会注意到它与许多其他mod产生了覆盖关系。这是因为DynDOLOD Resources里包含有部分经过修复/改进的Particle Patch for ENB模型,这些模型常常会被其他mod覆盖。真正会与DynDOLOD Resources中的远景资源产生冲突的mod并不多。一般推荐将DynDOLOD Resources放置在mod列表较为靠前的位置,并覆盖Particle Patch for ENB。玩家可以在MO2中隐藏它与Particle Patch for ENB共有的文件,以更好地观察它提供的远景资源产生的覆盖关系。注意DynDOLOD Resources中提供的绝大部分远景资源都只有在生成了DynDOLOD之后才会生效。
DynDOLOD ResourcesSE 3依旧处在测试阶段,更新频繁。请密切关注其更新信息,保证使用的是最新版本。
5)安装xLODGen Beta与DynDOLOD 3 Alpha
用解压缩工具将软件解压至非中文路径、非重要文件夹内,切记不要使用MO2安装。这里所说的“重要文件夹”包括系统文件夹、游戏文件夹,MO2内的文件夹等。如果你还是无法判断能安装到什么地方,可以将它们分别安装到(盘符):\xLODGen和(盘符):\DynDOLOD内,绝对保险。
将xLODGen解压到合适的位置之后,修改xLODGenx64.exe文件名为SSELODGenx64.exe,并使用MO2将其添加到可执行程序当中。注意务必使用64位程序而非32位程序。与此同时,在MO2的参数一栏添加命令-o:"c:\OutputPath\"
,以设置生成文件的位置。将c:\OutputPath\替换为你想使用的文件夹路径,注意这一路径同样也不能是上文所定义的“重要文件夹”。如果你没有设定生成位置,xLODGen默认会将文件生成至游戏本体的数据中(在MO2的语境下就是overwrite文件夹里)。一般不推荐这么做。
将DynDOLOD软件解压到合适的位置之后,将TexGenx64.exe和DynDOLODx64.exe添加至MO2的可执行程序当中。注意务必使用64位程序而非32位程序。分别在这两个程序的参数一栏添加命令-sse
(不包括中括号)以将软件的游戏模式设置为老滚5特别版。
xLODGen Beta和DynDOLOD 3 Alpha均处在测试阶段,更新频繁。请密切关注它们的更新信息,保证使用的是最新版本。
6)按需安装以下推荐使用mod:RaceMenu、Glacier LOD Meshes、HD LODs Textures SE、LOD Unloading Bug Fix、HD Terrain Noise Texture SE、Markarth LOD Unlock和Visualize Vanilla(或类似mod)
以上mod下载相应文件并使用MO2直接安装即可。
如果你使用的是1.5.97版本的RaceMenu,推荐同时安装RaceMenu 0.4.16 Memory Leak Hotfix (SE)(N网编号70161)。
HD LODs TexturesSE务必使用DynDOLOD版本。
玩家可以使用xEdit创建和Markarth LOD Unlock功能一致的补丁,因此该文件其实可以不用安装。如果你不打算使用xEdit,这一插件应当放置在尽量靠近列表底端的位置。注意不要下载N网页面中的Cidhna Mine Terrain Fix。
Visualize Vanilla务必下载Loose版本,安装后放置在mod列表最底端,并且不要启用。也可以使用其他类似的超低分辨率材质替换mod。
7)按需安装以下推荐使用mod:DynDOLOD Modders Resource Fixes、DynDOLOD TexGen Fixes (Summerset Isle-Gray Cowl-Beyond Reach-Midwood Isle-ELFX)、LOD Mesh Fixes for DynDOLOD和LOD Model Library for DynDOLOD
使用MO2安装。不要下载与你所使用的mod无关的文件,安装时不要选择与你所使用的mod无关的选项。
8)按需安装以下推荐使用工具:xEdit、LOOT、NifSkope、Creation Kit
一般推荐将xEdit压缩包中的内容解压至游戏根文件夹(SkyrimSE.exe所在的位置)里。解压完毕后,在游戏根文件夹创建一份xEdit.exe的副本,并将两个文件分别重命名为SSEEdit.exe和SSEEditQuickAutoClean.exe。将这两个程序添加至MO2的可执行程序当中。一般不推荐使用x64版本的xEdit,这一点与xLODGen和DynDOLOD不同,需要格外注意。
使用LOOT安装包将LOOT安装至非中文路径、非重要文件夹里。一般推荐使用64位版本。将LOOT.exe添加至MO2的可执行程序当中。
将NifSkope压缩包中的内容解压至非中文路径、非重要文件夹里。将NifSkope.exe添加至MO2的可执行程序当中。在NifSkope的Options\Settings\Resources当中添加你的游戏路径,以确保NifSkope打开模型文件时能加载相应的材质文件。
在Steam上搜索并下载Creation Kit。将CreationKit.exe添加至MO2的可执行程序当中。推荐安装N网上的第三方修复/改进(如编号20061、41195、71371)之后再使用。第三方修复/改进的具体安装方法请参考其N网页面。
9)安装SSE Engine Fixes (skse64 plugin)并按需设置
下载相应版本的Part 1文件并用MO2安装。下载Part 2文件并将压缩包内容解压至游戏根文件夹内。按需修改EngineFixes.toml内的设置,这里不做介绍。
10)按需安装以下推荐使用mod:No Grass In Objects、Worldspaces with Grass SSEEdit Script for No Grass In Objects和Grass Cache Fixes
NGIO只适用于1.5.97版本,不适配周年版版本(1.6+),但是依旧推荐周年版版本玩家暂时降级以使用NGIO生成草地缓存。需要.NET Script Framework作为前置。Worldspaces with Grass SSEEdit Script for No Grass In Objects是辅助NGIO生成草地缓存的xEdit脚本,显然需要xEdit才能使用。Grass Cache Fixes对于能够使用NGIO的玩家来说没有太多意义,因此只推荐周年版版本玩家使用。
如果你使用1.5.97版本,使用MO2安装NGIO本体及其前置.NET Script Framework,并将Grass Generation MO2 Plugin v1压缩包中的内容解压至MO2的plugin文件夹内。将Worldspaces with Grass SSEEdit Script for No Grass In Objects压缩包内的内容解压缩至xEdit安装路径下的Edit Scripts文件夹内。
如果你使用周年版版本,同样安装NGIO本体、.NET Script Framework、MO2草地缓存生成插件和Worldspaces with Grass SSEEdit Script for No Grass In Objects,但是不要启用NGIO本体和.NET Script Framework。使用MO2安装Grass Cache Fixes,暂不启用。
以上这些mod的具体设置和使用方法会在后文详细介绍。
11)按需安装A Clear Map of Skyrim and Other Worlds和ACMOS Road Generator
使用MO2安装A Clear Mapof Skyrim and Other Worlds,不推荐安装ACMOS – Lazy Roads。在安装选项中,推荐选择DynDOLOD 3/With DynDOLOD LOD32。按需选择其他mod世界和Remove Clouds选项。注意,选择了With DynDOLOD LOD32选项而未按照相应要求生成DynDOLOD必然会引发远景出现在近处的bug。后文会详细介绍使用该选项时玩家需要对DynDOLOD做出的相应修改。
推荐将ACMOS Road Generator解压至非中文路径、非重要文件夹内。不推荐使用MO2安装该工具,也不必将该工具添加至MO2的可执行程序里。
12)按需安装ENB、与你当前草地相对应的complex grass材质和与你当前树木相对应的3D树木远景资源
在ENB官网下载最新版ENB核心,将压缩包内WrapperVersion文件夹里的d3d11.dll与d3dcompiler_46e.dll拷贝到游戏根目录内。本文不介绍ENB预设的安装方式。
大多数流行草地mod的ENB complex grass材质都能在ENB Complex Grass - Patch Compendium for various grass mods(N网编号67304)中找到。除此之外,N网上还有Step Modifications提供的原版草地(N网编号68640)和Cathedral Landscapes草地(N网编号69578)的complex grass材质。如果你的草地mod没有相应的complex grass材质,你将无法正常使用ENB complex grass功能和DynDOLOD的HD草地远景功能。一份complex grass材质文件中同时包含了草的漫反射贴图和法线贴图,因此相当容易辨别。Complex grass材质显然必须覆盖基础的草地材质。
DynDOLOD Resources中已经包含了原版树木的3D远景资源。不同树木mod对待3D远景资源的态度有所不同:部分树木mod默认包含对应的3D远景资源;部分树木mod会在安装包里提供安装3D远景资源的选项;部分树木mod的3D远景资源位于N网页面的可选文件里,需要单独下载;部分树木mod的3D远景资源拥有单独的N网页面;部分树木mod完全不提供3D远景资源。3D树木远景资源文件的文件名格式为treename01_XXXXXXXXpassthru_lod.nif与treename01_XXXXXXXX_trunk.nif,如果玩家不确定自己有没有安装3D树木远景资源可以自行排查。如果某个树木mod完全不提供3D远景资源,玩家依旧可以使用DynDOLOD的Ultra树木远景功能,但是只能生成改进款的billboard纸片远景,不能生成3D/混合树木远景。
13)按需安装DynDOLOD DLL SE
玩家能在DynDOLOD DLL SE的N网页面上看到的DynDOLOD DLL只是PapyrusUtil SE的替代品,在安装了PapyrusUtil SE的情况下没有必要使用。新版的DynDOLOD DLL NG and Scripts 3.00则为DynDOLOD添加了large reference bug解决办法功能。由于该功能依旧在试验阶段,N网上该文件处于隐藏状态。玩家可以在DynDOLOD官网Help/Large-Reference-Bugs-Workarounds页面找到该文件的下载链接。使用MO2安装并启用该文件,覆盖DynDOLOD Resources SE 3。如果你不打算使用风险较高的试验性功能,或者你关闭了large reference系统,那么无需安装这一mod。
DynDOLOD DLL NG and Scripts 3.00处在试验阶段,更新频繁。请密切关注其更新信息,保证使用的是最新版本。
2.6 其他准备工作
1)确认你真的安装了所需mod/工具
不用多说。人难免有疏漏,检查一遍还是很有必要的。
2)确认你没有安装以下mod/工具:SSELODGEN、Darker Distant LOD for ENB、Winterhold College LOD Shimmer Fix、Culling data glitch fix、EVLaS Skyrim Underside和DynDOLOD Bright LOD Waterfall Fix
以上mod/工具完全不推荐安装/使用。如果你已经安装了它们,请将其卸载/删除。
3)确认你没有安装第三方提供的地形远景/树木远景/物体远景
使用远景生成工具的目的就是生成符合玩家游戏内容的远景,使用第三方提供的现成远景文件与这一目的背道而驰,因此玩家不应安装这些文件。一般来说它们不会干扰正常的远景生成,但是会白白占用你的硬盘空间,因此推荐卸载。
游戏所用到的全部远景模型文件均位于meshes/terrain文件夹内,该目录下的每个文件夹内都含有一个worldspace所用到的全部远景模型/数据。以Tamriel worldspace为例,其地形远景模型位于meshes/terrain/tamriel根目录内,命名格式为Tamriel.x.x.x.btr;树木远景数据位于meshes/terrain/tamriel/trees文件夹内,命名格式为Tamriel.x.x.x.btt;物体远景模型位于meshes/terrain/tamriel/objects文件夹内,命名格式为Tamriel.x.x.x.bto。地形远景模型(btr文件)和物体远景模型(bto文件)均能用NifSkope查看。
在默认情况下,游戏所用到的全部远景材质文件均位于textures/terrain文件夹内,该目录下的每个文件夹(除了lodgen)内都含有一个worldspace所用到的全部远景材质。以Tamriel worldspace为例,其地形远景材质位于textures/terrain/tamriel根目录内,命名格式为Tamriel.x.x.x.dds;树木远景atlas材质位于textures/terrain/tamriel/trees文件夹内;物体远景atlas材质位于textures/terrain/tamriel/objects文件夹内。
使用MO2右侧的数据栏判断mod列表里有哪些mod包括了现成的远景文件。仅仅包含这些远景文件而没有其他内容的mod(例如N网编号9135、39563、4263、1885)应当卸载,以节省存储空间。
4)确认你没有安装第三方提供的billboard文件
Billboard文件是生成草地远景和树木远景时需要用到的资源。自DynDOLOD 3开始,TexGen能够生成远景生成所需的全部billboard,因此不推荐安装一切第三方提供的billboard文件,以免其干扰正常的远景生成。如果安装了第三方提供的billboard文件请立即删除。
Billboard文件均位于textures/terrain/lodgen内,该目录下的每一个文件夹对应一个插件,这些文件夹里包含该插件添加的部分草/树种类的billboard文件。一份billboard包含一至数份dds材质文件和一份txt文件,其基础命名格式为treename01_xxxxxxxx.dds/txt。
使用MO2右侧的数据栏判断mod列表里有没有现成的billboard文件,如果有的话请将这些文件立即删除。
5)确认你是否安装了SSE FPS Stabilizer
SSE FPS Stabilizer会根据帧率实时调节LOD4/8/16物体远景的显示距离。该mod会覆盖ini文件中的相关设置,并且玩家将无法在DynDOLOD的MCM菜单中调节远景层级显示距离。笔者不推荐使用该mod,如果你希望使用该mod,务必记住你只能通过编辑该mod的预设文件以修改不同远景层级的显示距离。具体方式本文不做介绍。
6)确认你没有安装第三方提供的草地缓存文件(推荐)
第三方提供的草地缓存文件有较大概率与玩家游戏内容不完全匹配,从而引发视觉问题。草地缓存文件全部保存在grass文件夹中,其命名格式为WorldNamex*y.cgid或WorldNamexy*.gid。
使用MO2右侧的数据栏判断mod列表里有没有现成的草地缓存文件,如果有的话推荐将这些文件删除,并自行生成草地缓存。
7)使用LOOT查看提示/警告信息(推荐)
通过MO2启动LOOT并更新主列表,以查看提示/警告信息。如果你的mod列表较长,建议通过左侧的筛选功能隐藏无信息的插件。按照信息中的指示解决mod兼容性问题。使用xEdit清理所有LOOT表示需要清理的插件。请读者自行决定是否使用LOOT调整插件排序。
8)使用xEdit清理插件(推荐)
使用LOOT判断哪些插件需要清理。通过MO2启动SSEEditQuickAutoClean.exe,选中需要清理的插件,执行清理。提示清理完毕之后关闭程序。每次开启程序只能清理一个插件。在清理完所有插件之后,打开LOOT并更新主列表以进一步确认。已经清理过的插件不会再提示信息。
9)使用xEdit为Worldspaces with Grass SSEEdit Script for No Grass In Objects/WhiterunExterior Grass和Markarth LOD Unlock创建补丁(可选)
使用Worldspaces with Grass SSEEdit Script for No Grass In Objects是为了让NGIO不为具有No Grass标签的,也就是不显示草地的worldspace生成草地缓存,从而缩短草地缓存的生成时间。在原版游戏数据里,Whiterun worldspace就是这些不显示草地的worldspace之一,也就是说在默认情况下,在使用Worldspaces with Grass SSEEdit Script for No Grass In Objects之后,NGIO将不会为Whiterun worldspace生成草地缓存。
如果你选择了DynDOLOD Resources中的Whiterun Exterior Grass,DynDOLOD生成的插件将会为Whiterun worldspace去除No Grass标签,这样Whiterun城外就会出现草地。这一改动显然只有在生成了DynDOLOD之后才会生效。
DynDOLOD草地远景功能依赖于NGIO生成的草地缓存,也就是说草地缓存生成在先,DynDOLOD运行在后。如果你同时使用了Worldspaces with Grass SSEEdit Script for No Grass In Objects和Whiterun Exterior Grass,运行完DynDOLOD之后Whiterun城外并不会出现草地——尽管Whiterun worldspace是显示草地的,它却没有相应的草地缓存数据,因此草地依旧不会出现。
解决这一问题的办法有很多,其中最简单直接的大概是在Worldspaces withGrass SSEEdit Script for No Grass In Objects生成的列表当中手动加入WhiterunWorld。笔者对这一问题的个人解决办法是在xEdit中找到Whiterun worldspace条目,把排在最后的插件数据复制到一个新插件(推荐使用带有ESL标签的ESP插件)中,然后在DATA – Flags (sorted)里移除No Grass。命名并保存这个新插件,确保它位于mod列表的底端,覆盖其他所有插件。这样一来,当你使用Worldspaces with Grass SSEEdit Script for No Grass In Objects之后,NGIO依旧会为Whiterun worldspace生成草地缓存。
Markarth LOD Unlock做出的唯一改动是在Markarth worldspace的Parent\PNAM – PNAM\Flags (sorted)中添加了Use LOD Data标签。为了避免该mod导致兼容性问题,玩家可以考虑不安装它,而是在xEdit中找到Markarth worldspace条目,把排在最后的插件数据复制到一个新插件(推荐使用带有ESL标签的ESP插件)中,然后在Parent\PNAM – PNAM\Flags (sorted)中添加Use LOD Data。命名并保存这个新插件,确保它位于mod列表的底端,覆盖其他所有插件。这样一来,玩家就不用担心这个mod与其他改变了Markarth worldspace数据的mod产生冲突。当然,使用xEdit创建补丁不代表你不能安装这一mod,只是它的数据会被你的补丁覆盖,因此无法起到任何作用。
玩家可以将上述两处改动添加到同一个新插件当中。
!【如不用xedit清理脏插件,则无法使用DynDOLOD实验性的Large Reference bug解决办法功能。】
3 远景生成流程
3.1 草地缓存生成
在进行了这么多准备工作之后,我们终于可以开始真正运用我们所需要用到的工具——NGIO、xLODGen、TexGen和DynDOLOD。生成远景的基本流程是【使用NGIO生成草地缓存】/【使用xLODGen生成地形远景】>【使用TexGen生成材质资源】>【使用DynDOLOD生成物体远景等】。草地缓存和地形远景无所谓谁先生成谁后生成,不过笔者的个人习惯是先生成草地缓存。
1)在xEdit中使用Worldspaces with Grass SSEEdit Script for No Grass In Objects(推荐)
使用MO2打开xEdit。加载完毕后右键点击左侧插件栏,打开Apply Scripts...,在弹出的窗口中找到并选择List worldspaces with grass。脚本运行完成之后,xEdit会弹出窗口,在文本框中显示所有具有草地的worldspace的名称。将这份列表复制下来,可以粘贴到别处备用,也可以直接按照下文介绍粘贴到GrassControl.config.txt当中。
2)编辑GrassControl.config.txt
GrassControl.config.txt是NGIO的设置文件,里面的每一项设置都会覆盖所有具有相同效果的ini设置。其中值得注意的选项有:
SuperDenseGrass = False
启用/关闭超高密度草地。对性能影响较大,一般没有必要开启。
SuperDenseMode = 8
控制超高密度草地所使用的模式,在SuperDenseGrass = False
时不起作用。数字越大密度越高。7是原版草地密度,也就是说该值为7相当于没有开启超高密度草地。数值高于7时草地密度显著高于原版,数值低于7时草地密度显著低于原版。不推荐将该值设置为9及以上。
UseGrassCache = True
控制是否使用草地缓存。建议开启。
ExtendGrassDistance = True
控制草地是否能延伸至加载范围之外。建议开启。
ExtendGrassCount = False
提升草地显示数量的上限。在使用DynDOLOD生成草地远景的情况下一般不必开启,除非你的草地密度设置得奇高无比。
EnsureMaxGrassTypesPerTextureSetting = 15
覆盖ini设置中的iMaxGrassTypesPerTexure。大多数草地mod都需要将该值设置为15以确保草地正确显示。
OverwriteGrassDistance = 6144
覆盖ini设置中的fGrassStartFadeDistance
。推荐设置为6144,但其实会被后面的DynDOLODGrassMode设置覆盖。
OverwriteGrassFadeRange = 14128
覆盖ini设置中的fGrassFadeRange。推荐设置为14128,但其实会被后面的DynDOLODGrassMode
设置覆盖。
OverwriteMinGrassSize = -1
覆盖ini设置中的iMinGrassSize
。这是传统的控制草地密度的选项,数值越低草地越密。大部分草地mod都会自带一个ini文件,以确保iMinGrassSize
是一个合适的数值。同样的iMinGrassSize
值在不同草地mod当中可能意味着完全不同的密度,因此笔者个人建议不使用OverwriteMinGrassSize
覆盖这一数值,而是尊重草地mod的设置。将OverwriteMinGrassSize
设置为负数能避免该设置生效。
GlobalGrassScale = 1
调整所有草地模型的大小。1代表原版大小,0.5代表原版的一半大小,以此类推。请玩家自行决定是否需要调整。
OnlyLoadFromCache = True
关闭游戏实时生成草地的功能,让游戏只从草地缓存中读取草地数据。如果使用草地缓存必须开启。
SkipPregenerateWorldSpaces
和OnlyPregenerateWorldSpaces
前者用来指定生成草地缓存时跳过哪些worldspace,后者用来指定生成草地缓存时只生成哪些worldspace。如果OnlyPregenerateWorldSpaces
为空,那么所有不在SkipPregenerateWorldSpaces
列表里的worldspace都会生成草地缓存。第一步中复制下来的列表就是粘贴到OnlyPregenerateWorldSpaces
里,注意要粘贴到引号之间。
DynDOLODGrassMode = 1
控制DynDOLOD草地远景模式。0代表不启用DynDOLOD模式;1代表完整草地会覆盖整个加载范围,加载范围外的草地交由DynDOLOD生成的草地远景显示;2代表完整草地会覆盖整个large reference范围,large reference范围外的草地交由DynDOLOD生成的草地远景显示。模式2显示的完整草地范围比模式1显示的完整草地范围要更广,性能消耗也会相应增加。笔者个人推荐使用模式1,各位读者可以自行斟酌。务必记住自己在NGIO设置中选择的草地模式,之后在运行DynDOLOD时选择相同的草地模式,不然会出现视觉问题。
DynDOLODGrassMode
设置为1或者2时,上面的OverwriteGrassDistance
和OverwriteGrassFadeRange
会被专门适配于DynDOLOD的设置覆盖。
使用周年版版本(1.6+)的玩家无法在游玩时使用NGIO,因此游戏中的草地无法延伸至加载范围之外。这意味着他们只能使用等效于DynDOLOD草地模式1的设置,不能在DynDOLOD里选择草地模式2。
3)使用Creation Kit为草地mod重新计算object bounds
严格来说这一步与NGIO和草地缓存生成无关,但是既然涉及到草地也放在这里介绍。许多草地mod没有为它们的添加的草种设置正确的object bounds,这意味着TexGen不会为这些草种生成billboard文件,DynDOLOD也就不会为它们生成远景。为了确保草地远景能够生成,玩家需要使用CK重新计算这些草种的object bounds。
使用MO2打开CK,点击左上角的File\Data...,在弹出的窗口中找到需要修改的草地mod插件。将该插件设置为Active File并点击OK加载。加载完毕后,在Object Window的左栏点击Grass,选中右栏显示的所有草种条目并右键点击,在菜单中选择Recalc Bounds。重新计算完毕后,点击左上角File\Save以保存修改后的插件。
每一个存在object bounds问题的草地mod插件都需要按照以上步骤recalc bounds。在recalc bounds之前可以考虑备份原插件,以防这一过程出现问题。如果你不知道某一个mod是否需要recalc bounds,请在N网上自行寻找相关信息。为了保险起见,实在无法确认是否存在问题的草地mod也应当recalc bounds。
4)将游戏版本降级到1.5.97并启用.NET Script Framework与NGIO(仅适用于周年版玩家)
无需多说。N网上最流行的降级工具为Unofficial Skyrim Special Edition Downgrade Patcher(N网编号57618),这里不介绍使用方式。
5)启用Visualize Vanilla或者类似mod(推荐)
超低分辨率的材质能减少草地缓存生成时的显存/内存占用,从而降低跳出频率,加快生成速度。注意这些mod必须放在mod列表最底端,覆盖其他所有mod,以尽可能避免游戏使用其他材质。
6)降低游戏分辨率(推荐)
同样是减少显存/内存占用的方法。在skyrimprefs.ini中[Display]
一栏下找到iSize H
和Size W
。前者代表窗口高度,后者代表窗口宽度。将游戏分辨率设置为800*600
或者类似的低值。
7)暂时卸载ENB核心(推荐)
ENB的存在会延长启动游戏时的加载时间。暂时将ENB核心(d3d11.dll与d3dcompiler_46e.dll)从游戏根目录中移除,以加快草地缓存生成速度。
8)暂时关闭所有无关程序(推荐)
节省电脑性能和内存,加快草地缓存生成速度。生成草地缓存需要打开游戏,因此你本来也没法在此期间愉快使用电脑。
9)生成草地缓存
点击MO2上端的工具\工具插件,选择Precache Grass,并确认。游戏会自行启动并进入草地缓存生成模式。在此期间游戏可能会多次跳出,跳出后MO2会自动重新启动游戏,直到草地缓存完全生成完毕。在生成期间打开游戏控制台能够查看生成进度。一般来说,生成时间大约在20分钟到一小时之间,不过极端情况下可能会持续数小时之久。电脑配置、玩家设置、游戏内容等因素均会对生成时间造成影响。草地缓存正式生成完毕之后会弹窗提示,点击确认以关闭游戏。
10)按需恢复正常游戏设置
无需解释。如果你执行了上面推荐的全部操作,这一步应当包括重新安装ENB核心、将游戏分辨率调整回正常值、以及取消启用Visualize Vanilla或者类似mod。
11)将草地缓存作为mod安装(可选)
默认情况下草地缓存会生成到overwrite\grass里。玩家无需移动它们,它们在这个位置也能生效。不过,如果你认为overwrite文件夹里的文件不易管理,也可以将草地缓存压缩起来,作为mod安装并启用。当前版本的MO2似乎不能识别草地缓存文件,如果它提示你安装的草地缓存里“没有有效数据文件”,右键点击可以忽视该警告。
!【如果你需要调整草的具体设定、例如大小,密度等,那么需要生成对应新设定的新草地缓存,而修改显示距离则不需要。】
对于使用1.5.97版本的玩家来说,草地缓存生成到这一步就已经结束了。使用1.6+版本的玩家则还需要执行一些操作。
12)重新升级到你所使用的周年版版本并取消启用.NET Script Framework与NGIO(仅适用于周年版玩家)
同样无需解释。这里不提供具体方法。
13)批量更改草地缓存文件的后缀名(仅适用于周年版玩家)
在Grass Cache Fixes的文件里找到1_rename_cgid_to_gid.bat文件,将其复制到grass文件夹里。双击运行该文件能将所有草地缓存文件的后缀名从.cgid更改为.gid。.gid是原版游戏使用的草地缓存文件后缀名,为了绕过原版草地缓存系统,NGIO将其使用的草地缓存文件后缀名设置成了.cgid。周年版无法使用NGIO,因此需要通过这种方式把后缀名从.cgid改回.gid。
执行这一步之前推荐备份没有经过任何改动的草地缓存文件,以免这一过程出现问题。Grass Cache Fixes里包含的1_rename_gid_to_cgid.bat文件能够执行相反的操作,也就是把后缀名从.gid批量更改为.cgid。
14)启用Grass Cache Fixes并修改其ini文件(仅适用于周年版玩家)
和许多草地mod一样,Grass Cache Fixes自带一份ini文件以控制一些与草地相关的设置。删除bAllowCreateGrass=0
、AllowLoadGrass=1
、bEnableGrassFade=0
和fGrassFadeRange=14128
四项设置之前的分号,以启用这几项设置。按需启用iMaxGrassTypesPerTexure
和iMinGrassSize
并设置其数值,详细信息可以参考上面的NGIO设置介绍。
15)检查skyrimprefs.ini设置(仅适用于周年版玩家)
不像NGIO,Grass Cache Fixes自带的ini文件无法更改skyrimprefs.ini中的设置,因此,在进入远景生成的下一步之前,请务必确认你的skyrimprefs.ini设置如下:
[Grass]
fGrassMaxStartFadeDistance=6144
fGrassMinStartFadeDistance=0
fGrassStartFadeDistance=6144
3.2 地形远景生成
就像前面说的那样,草地缓存生成和地形远景生成无所谓谁先谁后,但是这两个步骤必须在运行DynDOLOD之前完成,因为DynDOLOD需要用到它们生成的文件。比起草地缓存生成,地形远景生成相对要简单一些。
1)启用xLODGen Resource- SSE Terrain Tamriel的插件
启用该插件以让xLODGen生成地图边缘的地形远景。请确保该插件放置在插件列表最前端,被所有其他插件覆盖的位置。再次强调,如果你使用Worldspace Transition Tweaks,请勿安装xLODGen Resource - SSE Terrain Tamriel。
2)启动xLODGen,按需调整设置,并生成地形远景
使用MO2启动SSELODGENx64.exe。加载完毕之后会弹出设置窗口。笔者的个人设置如图所示:
![Xlodgen设置图片展示1-4](https://www.z4a.net/images/2023/08/11/Xlodgen1.jpg)
![](https://www.z4a.net/images/2023/08/11/Xlodgen2.jpg)
![](https://www.z4a.net/images/2023/08/11/Xlodgen3.jpg)
![](https://www.z4a.net/images/2023/08/11/Xlodgen4.jpg)
以下是对各个选项的介绍:
左侧的worldspace选择推荐全选。在某些很小的worldspace里很少能看到远景,但是为它们生成远景也不会占用多少时间和硬盘容量。注意xLODGen会保存你上次选择的所有其他设置,但是不会保存你上次选择的worldspace设置,因此每次生成时都要重新全选一遍。
Objects/Trees LOD和Occlusion不要勾选。生成它们是DynDOLOD的任务。只需要勾选Terrain LOD就行。
Terrain LOD环节为每个LOD层级(LOD4/8/16/32)都提供了分别的设置。使用Settings for选择框以切换到不同的LOD层级设置界面。
Terrain LOD最左边的前三个选项从上到下分别是“生成网格(模型)”“生成漫反射材质”“生成法线材质”。如果想生成一份完整的地形远景,它们都必须勾选。
Build meshes一栏中,Quality决定生成模型的质量,数字越小质量越高,也就是说越贴近完整地形。0是质量最高的等级,30是质量最低的等级。LOD4层级可以选择-1的质量,但一般没有必要。LOD4推荐的质量设置范围是0-5,LOD8/16是0-8,LOD32是0-10。笔者认为,大部分玩家可以放心把所有LOD层级的质量都拉到0,除非你的电脑性能实在吃紧。
Max Vertices一栏决定单个地形远景模型文件最多能拥有多少个顶点。默认的32767是最大值,无需修改。
Optimize Unseen设置决定xLODGen会如何优化水面下的地形。这一选项会对远景中海岸/河岸/湖岸的精细程度造成极大影响。笔者没有怎么研究过这一设置(因为测试起来真的很麻烦),因此无法提供什么个人见解。截图中的设置来源于Step Guide,在笔者的游戏中表现不错。
勾选Protect Cell Borders可以改善加载范围与远景交界处的视觉表现。推荐勾选。注意该选项为LOD4专属。
- Build diffuse和Build normal两栏分别对应漫反射材质和法线材质的设置。Size决定单个LOD4/8/16/32文件所使用的材质的分辨率。LOD4的推荐材质大小为256或512,而LOD8/16是512或1024。LOD32的材质会被用在地图上,为了保证地图观感,推荐设置为2048。漫反射材质和法线材质的大小应当设置为同样的数值。材质分辨率设置过高只会无谓地占用显存,无法真正改善视觉效果。
Format决定材质文件的格式。一般推荐使用BC7 Quick,如果显存吃紧可以考虑使用DXT1。
Mipmap是一种优化贴图材质在远距离表现的技术。根据Sheson的说法,在涉及到地形远景时,mipmap只对LOD4级别的漫反射材质生效,因此其他LOD层级和法线材质一栏的MipMap都无需勾选。
Raise steepness选项会影响mipmap的显示效果,笔者对其没有太多研究,不过它的作用应该比较有限。感兴趣的读者可以自己试验。
Brightness、Contrast和Gamma一般推荐保持默认值不变。在默认值(0/0/1.00)下,xLODGen生成的地形远景材质在色彩上会与玩家所用的完整地形材质完全对应。贸然改动这些选项很可能会导致完整地形和地形远景之间出现较明显的色差。如果你实在对地形远景/地图的色彩表现不满意可以自行调试,这里不再赘述。
- 最下面一行的几个选项互相之间没有联系。
Bake normal-maps能改善视觉效果,建议勾选。
Vertex Color Intensity控制地形远景模型的顶点着色力度,默认设置(1.00)代表和完整地形上的顶点着色力度相同。该选项一般无需修改。
部分LOD文件包含的区域(主要是地图边缘玩家所无法前往的地方以及海面)内完全不包含任何地形材质数据,因此也没有必要为它们生成高分辨率的材质文件。Default size选项控制xLODGen在为这些区域生成远景地形材质文件的时候会使用多大的分辨率。一般推荐将该值设置得非常小(最小值为4),以免浪费显存。将该值设置为None代表xLODGen会按照正常设定的分辨率为它们生成材质文件,一般不推荐。
- 勾选窗口最底端的Specific chunk能让xLODGen专门生成某一特定LOD层级(通过第一个选择框控制),以及/或者某一特定区域(通过W/S两个文本框控制)的地形远景。该功能一般只用于测试,因此不做详细介绍。
Seasons选项是配合Seasons of Skyrim SKSE(也就是季节mod)使用的。笔者不使用这一mod,因此无法提供相关介绍和指南。DynDOLOD官网和xLODGen中包括的Seasons-Readme.txt文件上均有对季节功能的介绍,有需要的玩家可以参考。同理,笔者也不会在后文介绍DynDOLOD的季节功能。
确认一切按需设置完毕之后,点击Generate以生成地形远景。在不勾选Seasons的情况下,生成时间大约在15分钟到45分钟之间,如果勾选了Seasons,生成过程则可能会持续数小时之久。电脑配置、游戏内容和xLODGen设置(主要是材质大小设置)等因素均会对生成时间造成影响。生成完毕时,xLODGen会在日志中提示生成完毕,并且不再生成新的日志。确认生成完毕之后,玩家可以关闭软件。
玩家可以在开始生成前点击Cancel以退出xLODGen。
3)取消启用xLODGen Resource - SSE Terrain Tamriel的插件
该插件不应在正常游玩过程中使用。如果你没有取消启用这一插件,你将无法正常运行DynDOLOD。
4)使用ACMOS Road Generator在地形远景材质上绘制道路(推荐)
正常启动ACMOS Road Generator.exe(无需使用MO2)。推荐使用Paths Only选项。在Path to LOD中选择你的xLODGen输出位置,也就是你新生成的地形远景文件所在的位置。选择完毕后,软件会自动将Output Path设置为相同的路径,也就是说ACMOS Road Generator生成的文件会直接覆盖原文件。如果你不希望直接覆盖可以另外设置输出路径。点击Generate以开始绘制。
绘制完毕后,软件会弹窗提示并询问要不要制作地形远景文件压缩包。该软件的压缩速度奇慢无比,因此笔者推荐拒绝这一提议并关闭软件。
5)压缩生成的地形远景文件并将其作为mod安装并启用
使用压缩软件压缩生成的地形远景文件。压缩完毕之后使用MO2安装该压缩包并启用,除非要更新生成文件或者彻底卸载,不然不要取消启用。xLODGen生成的文件应该放置在mod列表的底端,覆盖其他所有文件。
3.3 DynDOLOD生成
相比xLODGen,DynDOLOD的设置要更加复杂,因为物体远景本身也比地形远景要复杂许多。当然,DynDOLOD的功能也不局限于生成物体远景。要想完整利用DynDOLOD的全部潜力,玩家需要对它具有比较深入的了解。
1)按需编辑DynDOLOD_SSE.ini
DynDOLOD_SSE.ini是DynDOLOD在特别版模式下的主要设置文件,位于Edit Scripts\DynDOLOD文件夹中。这里面笔者认为值得关注的设置有:
Wizard=0
Expert=1
Wizard mode(向导模式)指的是DynDOLOD的傻瓜版UI,玩家在其中可以执行的操作相当有限,因此不推荐使用。在向导模式的窗口中点击Advanced >>>按钮可以打开Advanced mode(高级模式),解锁更多的设置选项。设置Wizard=0可以彻底关闭向导模式,这样开启DynDOLOD之后直接就会进入高级模式。
Expert mode(专家模式)在高级模式UI的基础上增添了一些主要是测试用的功能。大多数玩家或许不太能用得到,但是多一点功能总不会是坏事。设置Expert=1
会将高级模式替换为专家模式。Expert=1
的情况下向导模式永远处于关闭状态,无论Wizard
选项设置为0还是1。
TreeFullFallBack=4
TreeBillboard1=Internal
TreeBillboard2=DynDOLOD_flat_2x2_lod.nif
TreeBillboard3=DynDOLOD_flat_3x2_lod.nif
TreeBillboard4=DynDOLOD_flat_4x2_lod.nif
TreeBillboard5=Internal
TreeBillboard6=LODGen_flat_lod.nif
我们已经提到过,在启用Ultra树木远景的情况下,树木远景可以是真正3D的模型,也可以是改进款的billboard纸片远景。要生成3D树木远景,玩家必须安装对应的3D树木远景模型。如果玩家要让DynDOLOD为某一种树生成3D远景,但是DynDOLOD却没有检测到该种树的3D远景资源,那它就会按照TreeFullFallBack
的设置使用对应的billboard远景去替换这个未能生成的3D远景。TreeFullFallBack=1
意味着使用TreeBillboard1作为找不到3D远景资源时的替代品,TreeFullFallBack=2意
味着使用TreeBillboard2
作为替代品,以此类推。TreeFullFallBack=0
意味着使用完整模型作为替代品,但是这么做极其不推荐。该值默认为1。
DynDOLOD最多可以支持6种不同的树木billboard,并且内置了几个不同的billboard模型。玩家可以自行决定billboard1-6分别使用的是什么模型,不过绝大多数时候没有修改这些选项的必要。
在默认设置中的5种billboard里面,Internal和DynDOLOD_flat_2x2_lod.nif类似,都是2个平面呈90度交叉在一起,一共4个三角形。这是最基础的billboard形态。DynDOLOD_flat_3x2_lod.nif是3个平面呈60度交叉在一起,一共6个三角形。它可以用到3种不同的billboard材质。DynDOLOD_flat_4x2_lod.nif一眼看上去也是2个平面呈90度交叉在一起,但其实这两个平面都是由重叠在一起的两个平面组成的,也就是说这个模型一共有4个平面,8个三角形。这些多出来的平面能增强billboard远景在光照下的视觉效果,因此笔者推荐将TreeFullFallBack设置为4。LODGen_flat_lod.nif是xLODGen自带的billboard模板,一般只用来显示地图上的树木。
Level32=1
默认设置下老滚5使用的是LOD16层级的物体远景,LOD32层级的物体远景甚至根本不存在于游戏文件当中。如果你安装了A Clear Mapof Skyrim and Other Worlds,并且在安装时选择了With DynDOLOD LOD32选项,这意味着你已经将uLockedObjectMapLOD
的值设置为32,也就是说地图显示的不再是LOD16级别的物体远景,而是LOD32级别的物体远景。为了让游戏真的有LOD32级别的物体远景可以显示,你需要在这里将Level32
设置为1,以让DynDOLOD生成LOD32级别的物体远景。如果你没有安装ACMOS也没有修改过uLockedObjectMapLOD
,请务必保持Level32=0
。
IgnoreLargeReferences=0
如果你不使用large reference系统,也就是说你的uLargeRefLODGridSize
等于uGridsToLoad
,那么请将该选项设置为1,这样能减少很多麻烦。在IgnoreLargeReferences=1
时DynDOLOD不会生成ESM插件,只会生成ESP插件。
FakeLightsIntensity=6
调整DynDOLOD生成的fake light的亮度。可选值为1-9,默认为6。按需调整。如果你在DynDOLOD的UI里没有选择fake light功能,那么调整该选项不会造成任何影响。
uGridsToLoad=5
笔者已经强调过不要修改游戏设置中的uGridsToLoad
。按照Sheson的说法,就算你真的在游戏设置中修改了该值,也不要修改该处的uGridsToLoad
。
fMinSecondsForLoadFadeIn=2.7
决定游戏在加载到新区域时会黑屏几秒。原版默认值为1.5,DynDOLOD设置的默认值是2.7,因为加载动态远景需要更多的时间。玩家可以按照游戏内的实际表现按需修改该值。注意,该项设置可以在DynDOLOD的MCM菜单中实时修改,DynDOLOD设置文件中修改的是它的默认值。
fNearMultiple=1.25
fFarMultiple=1.5
fNeverMultiple=1.75
这三个选项决定DynDOLOD生成的远景发光窗户在不同距离下的亮度。同样,你可以在DynDOLOD的MCM菜单中实时修改它们,设置文件中提供的只是默认值修改。
OcclusionMaxThreadsTerrainLOD=1
OcclusionMaxThreadsObjectLOD=4
生成occlusion时计算地形/物体远景数据所使用的最大线程数,-1意味着不限制线程数。这两个选项的默认设置分别为-1和4。不限制线程数时,DynDOLOD往往会在生成occlusion的过程中占用过多内存,导致生成速度变慢以及系统卡顿。最严重的情况下,软件会报错/闪退,甚至能让电脑死机。建议玩家在修改这两个选项时先将其分别设置为1和4,并根据生成时的实际效果考虑进一步调整。
GrassGID=cgid
该选项决定DynDOLOD读取的草地缓存文件后缀名,默认值为cgid。如果你使用1.5.97版本以及NGIO,草地缓存文件的后缀名为.cgid;如果你使用周年版版本(1.6+)并且使用Grass Cache Fixes将草地缓存文件的后缀名修改成了.gid,该选项也需要修改为gid。
GrassBillboard1=Internal
GrassBillboard2=DynDOLOD_flat_2x2alt1_lod.nif
GrassBillboard3=DynDOLOD_flat_2x2alt2_lod.nif
GrassBillboard4=DynDOLOD_flat_4x2alt1_lod.nif
GrassBillboard5=DynDOLOD_flat_4x2alt2_lod.nif
GrassBillboard6=DynDOLOD_flat_4x2alt3_lod.nif
GrassBillboard=1
ComplexGrassBillboard=5
和Ultra树木远景一样,DynDOLOD也支持最多6种供草地远景使用的billboard,并且内置了这些不同的草地billboard模型。玩家可以自行决定billboard1-6分别使用的是什么模型,不过绝大多数时候没有修改这些选项的必要。
与Ultra树木远景不同的是,草地远景不支持真正的3D模型(这样太消耗性能,而且没有必要),玩家也无法通过DynDOLOD的UI设置在不同LOD层次当中使用不同的billboard(因为草地远景只有LOD4这一个层次)。玩家只能通过修改GrassBillboard
和ComplexGrassBillboard
的值来修改普通草地远景/HD草地远景分别使用什么billboard文件。设置为1代表使用GrassBillboard1
,设置为2代表使用GrassBillboard2
,以此类推。默认设置下GrassBillboard=1
,ComplexGrassBillboard=4
。由于普通草地远景和HD草地远景只能二选一,玩家只需要调整自己所使用的草地远景类型的相关设置即可。笔者推荐玩家使用ENB complex grass和HD草地远景,因此下文主要介绍的也都会是HD草地远景相关的设置。
在默认设置中的6种billboard里面,Internal和上面介绍的Ultra树木远景中的Internal一样,这里不再重复介绍。DynDOLOD_flat_2x2alt1_lod.nif和DynDOLOD_flat_2x2alt2_lod.nif也都是使用传统的2平面4三角形样式,两者的区别在于alt1代表billboard模型不具有backlighting,也就是受到光线直射时背面不会透光,而alt2代表billboard模型具有backlighting,也就是受到光线直射时背面会透光。DynDOLOD_flat_4x2alt1_lod.nif和DynDOLOD_flat_4x2alt2_lod.nif则与树木远景中介绍过的4平面8三角形重叠样式相类似,它们能够更好地应对不同的光照效果,因此用在HD草地远景里。这里的alt1和alt2同样也代表不具有/具有backlighting。DynDOLOD_flat_4x2alt3_lod.nif则是Community Shaders的开发测试资源,一般玩家请勿使用。
草地远景应不应该使用backlighting与ENB complex grass设置中的SubSurfaceScatteringAmount/FakeLight两个选项有关。一般来说,SubSurfaceScatteringAmount/FakeLight的值设置得越高,草地的背光面就会越亮。ENB complex grass设置只影响完整草地,不影响草地远景,因此玩家需要按需调整backlighting设置以让草地远景尽量和受到ENB complex grass设置影响的完整草地相匹配。下文会介绍更多与backlighting相关的设置。
GrassBrightnessTopR=0.400
GrassBrightnessTopG=0.445
GrassBrightnessTopB=0.450
GrassBrightnessBottomR=0.200
GrassBrightnessBottomG=0.223
GrassBrightnessBottomB=0.225
ComplexGrassBrightnessTopR=1.000
ComplexGrassBrightnessTopG=0.925
ComplexGrassBrightnessTopB=0.850
ComplexGrassBrightnessBottomR=1.000
ComplexGrassBrightnessBottomG=0.925
ComplexGrassBrightnessBottomB=0.850
普通草地远景/HD草地远景的色彩亮度设置,和下文会介绍的TexGen材质光照设置共同控制了草地远景的颜色。很明显,R/G/B分别对应红色/绿色/蓝色的亮度,而Top/Bottom分别对应草地远景顶部/底部的设置(将底部的亮度调到比顶部低一些可以在一定程度上营造出草地远景底部有阴影的效果)。这些选项的默认值是Sheson为原版草地优化的设置。笔者个人推荐使用草地mod的玩家先将这些数值统一调整为1,以避免完整草和远景草之间出现明显色差。之后,在基本确定了TexGen应该使用的材质光照设置的情况下,玩家可以再对这些设置进行微调以让草地远景的色彩更加适应玩家的光照/天气/ENB设置。文中所示的是笔者多次试验之后认为比较适合笔者个人情况的设置,可供参考。笔者的TexGen草地远景光照设置参见下文。
GrassBacklightMask=0
ComplexGrassBacklightMask=5
对于具有backlighting的普通草地billboard/HD草地billboard(DynDOLOD_flat_2x2alt2_lod.nif和DynDOLOD_flat_4x2alt2_lod.nif)的进一步设置。0意味着backlighting的强度等于正面光照的0%(等效于取消了backlighting),5意味着backlighting的强度等于正面光照的5%,以此类推。如果你使用的草地billboard不具有backlighting,这两个选项不会起到作用。如何设置该值需要玩家参考游戏内表现和相关ENB设置自行斟酌。
DoubleSidedTextureMask=mountain,mtn
配合EVLaS和terrain underside功能使用,能让DynDOLOD生成的山体远景同样遮挡体积光。默认设置下该选项前面有一个分号,也就是说该选项默认不启用。删除分号以启用该项设置。
最后,如果你不想看到DynDOLOD在插件中加入的几个彩蛋加载界面(实话说,确实有点恐怖,尤其是圣牛),请在[DynDOLOD]
下任意位置加入一行AddLoadScreens=0
。不推荐使用任何其他方法去除这些加载界面。
2)启动TexGen,按需调整设置,并生成DynDOLOD所需材质
使用MO2启动TexGenx64.exe。如果你先前没有在参数一栏设置游戏模式,TexGen会弹出窗口,提示你选择一个游戏模式。加载完毕后会弹出设置窗口。笔者的个人设置如图所示:
![Texgen设置图片展示](https://www.z4a.net/images/2023/08/11/Texgen.jpg)
以下是对各个选项的介绍:
通过Select Output Path设定生成文件的输出位置。默认位置为DynDOLOD\TexGen_Output,一般无需修改。切记输出位置应当是非中文路径、非重要文件夹。
Stitched/Rendered Object LOD Textures囊括了树木/草地之外的物体远景所需要的材质资源。两者均必须勾选,Base Size按照屏幕分辨率设置即可。材质分辨率设置过高只会无谓地占用显存,无法真正改善视觉效果。
Tree/Grass LOD Billboards囊括了树木/草地远景生成所需要的材质资源。TexGen会根据Units per pixel计算不同大小的树/草所需要的billboard材质分辨率。该选项数值越小,生成的材质分辨率越高。按照屏幕分辨率设置即可。Texture size Min/Max在Units per pixel的基础上限制了billboard材质文件的最小/最大尺寸,Min一般设置为32即可,Max一般设置为1024或者2048(如果你的屏幕分辨率较高)即可。材质分辨率设置过高只会无谓地占用显存,无法真正改善视觉效果。
下方的Grass/HD Grass/Tree/HD Tree/Rendered对应不同用途的billboard文件,需要全部勾选。注意Grass和HD Grass只能二选一,如果你使用了ENB complex grass材质就无法选择Grass选项,反之亦然。
每条选项都有单独的光照设置。Direct选项调整billboard材质在直射光下的表现,该值越高,billboard在具有直射光的时候(例如日出/日落)就会越亮;Ambient选项调整billboard材质在环境光下的表现,由于环境光无处不在,该值可以简单理解为billboard材质的总体亮度。Smoothness选项调整的则是法线材质的平滑度,因此没有法线材质的Grass和Tree两栏没有该选项。该值一般保持为0即可。
显然,光照设置不存在唯一的最佳解。不同的草地mod/树木mod/ENB预设都会对光照设置提出不同的要求。截图中的billboard光照设置里,Tree/HD Tree/Rendered三栏来源于Step Guide,而HD Grass则是笔者自行测试的结果。笔者测试HD Grass选项时使用的草地mod为QW's Grass Patch - Veydosebrom Regions - Folkvangr - Cathedral - Depths of Skyrim,而ENB预设则是Rudy ENB CW Zangdar's Edit Lux Edition。这一设置似乎在Rudy ENB for NAT 3当中效果也相当不错,感兴趣的读者可以参考。TexGen中的材质光照设置和DynDOLOD_SSE.ini文件中的相关设置共同决定了草地远景的颜色,笔者的DynDOLOD_SSE.ini设置参见上文。
最下方的材质格式选项一般无需修改,使用默认(BC7 Quick)即可。
玩家可以使用Preview按钮预览材质在不同设置下的效果。
按需设置完毕之后,点击Start以开始生成。一般来说,生成时间大约在5到10分钟,材质大小相关的选项会对生成时间造成一定影响。生成完毕之后,TexGen会弹窗提示。选择Zip & Exit以让TexGen将生成文件压缩成压缩包。压缩完毕之后TexGen便会自动关闭。正常使用MO2安装并启用该压缩包,除非要更新生成文件或者彻底卸载,不然不要取消启用。TexGen生成的文件应该放置在mod列表的底端,覆盖其他所有文件。
!【Texgen如果有跳出、等问题,请前往step mod等官方论坛寻找解决方案,曾出现过128版本texgen生成过程中跳出,换121版本或者在TexGen_SSE.ini修改参数即可解决的情况,具体原因因人而异。】
3)启动DynDOLOD,按需调整设置,并生成物体远景/动态远景插件/occlusion
使用MO2启动DynDOLODx64.exe。如果你先前没有在参数一栏设置游戏模式,DynDOLOD会弹出窗口,提示你选择一个游戏模式。加载完毕后会弹出设置窗口。笔者的(部分)个人设置如图所示:
![Dyndolod设置图片展示](https://www.z4a.net/images/2023/08/11/Dyndolod.jpg)
以下是对各个选项的介绍:
左上角是worldspace的列表,一般推荐全部勾选,让DynDOLOD为所有worldspace生成远景。这里要说明的是,DynDOLOD在设置文件里默认排除了一些较小的worldspace,以及一些与DynDOLOD兼容性不好的、由mod添加的worldspace。它们不会出现在这个列表里,DynDOLOD也不会为它们生成远景。
点击右边的Low/Medium/High来为DynDOLOD载入低质量/中质量/高质量的预设。如果你的电脑性能实在吃紧,可以考虑Low或者Medium。在2023年的今天,大多数玩家的电脑应该都能应付高质量预设。此处载入的预设文件都储存在DynDOLOD主文件夹下的Edit Scripts\DynDOLOD\Rules文件夹内。玩家可以自行查看并修改它们,也可以在其中加入自己的预设文件。这里不介绍具体方法。
勾选Candles能让DynDOLOD在载入高/中/低预设时载入与烛光相关的预设文件。这些预设文件会将烛光设置为动态远景,这样玩家就能在更远的距离上看到烛光。推荐勾选。注意:仅仅勾选该选项不会起到作用,你需要在勾选该选项后载入高/中/低预设它才会生效。
勾选FXGlow能让DynDOLOD在载入高/中/低预设时同时载入与FXGlow相关的预设文件。FXGlow是一个非常简单的模型。它只包含一个永远都面向玩家、会“发亮”的圆形平面。这个模型并不能像真正的光源那样点亮周围的环境,它只能粗略地模拟发光效果。这些预设文件会将FXGlow设置为动态远景,这样玩家就能在更远的距离上看到FXGlow。一般推荐勾选。注意:仅仅勾选该选项不会起到作用,你需要在勾选该选项后载入高/中/低预设它才会生效。
通过Candles/FXGlow下方的地址栏设定生成文件的输出位置,默认位置为DynDOLOD\DynDOLOD_Output。一般无需修改。切记输出位置应当是非中文路径、非重要文件夹。
窗口中间的规则框是DynDOLOD的重点。规则框里的内容决定了DynDOLOD会为哪些物体生成什么样的远景。上面的高/中/低按钮,其作用就是根据预设文件在规则框里载入规则。当然,玩家也可以自己手动修改/添加规则,不过这属于比较进阶的操作。一般来说,DynDOLOD自带的高/中/低预设已经足够,不过少数情况下玩家依旧有手动编辑规则的必要——右键点击规则框以召出菜单,玩家可以在菜单内选择插入规则(Insert)/删除规则(Delete)/编辑规则(Edit)。选择插入规则和编辑规则会弹出规则编辑窗口。下面是对规则具体内容的简单介绍:
Mesh Mask/Reference下的内容规定了该条规则生效的范围。Mesh Mask类规则的目标对象是模型文件,它通过文件的路径名来确定生效范围。它针对的可以是单独一个NIF模型文件(例如,wrhouseshack01destroyed.nif意味着该规则负责设置游戏内所有使用这一模型的物体的远景),也可以是所有路径名内包含某一特定内容的模型文件(例如,所有在路径名内含有tree这几个字母的模型文件都受tree这一规则的管辖。由于游戏内的树所使用的模型文件其路径名基本都符合这一要求,这条规则可以被视为对游戏里所有树木的远景设置)。Reference类规则的目标对象则是具体的form ID。它针对的是游戏数据里明确存在的单个物体(例如,skyrim.esm;00084ce1意味着该规则只负责设置Skyrim.esm插件里由00084ce1
这一条reference添加的物体的远景),也就是说它的应用范围通常比Mesh Mask类规则要小很多。在列表的最后还有“\”这一规则,它代指的是一切存在远景模型资源,因此可以生成远景的物体。默认情况下它会被所有其他设置覆盖。
LOD Level 4/8/16/32的含义不需要太多介绍。通过这些选项,玩家可以设置该规则涉及到的物体在LOD4/8/16/32层次分别使用什么样的远景,注意LOD Level 32需要专门修改DynDOLOD设置文件才能生效。这里可以使用的参数有None、Full、Level0/1/2/3和Billboard1/2/3/4/5/6。None代表该层级没有远景;Full代表在该层级使用物体的完整模型作为远景,这两者都很好理解。Level0/1/2/3代表在该层级使用3D远景模型资源作为远景。一般而言,数字越大意味着使用的模型资源越粗糙。当然,如果要这一选项正常生效,玩家首先得保证自己的游戏里真的存在相应的3D远景模型资源。此外,其实大多数时候无论是DynDOLOD Resources还是第三方提供的3D远景资源都不会为同一个物体准备4个不同精度的远景模型,很多物体干脆就只有一种远景模型。DynDOLOD会确保所有选择了Level0/1/2/3的远景层级使用的都是3D远景模型,哪怕对应的层级其实并不存在。也就是说,就算你将不同的LOD层级设置成了不同的Level,这也不代表不同的LOD层级就一定会使用不同精度的远景模型。Billboard1/2/3/4/5/6指的就是DynDOLOD_SSE.ini当中设置的6种树木billboard。它们显然只能被用在树木的远景上。
在Flags一栏里,玩家可以为规则设置五种标签:VWD、NoGlow、NoMATO、Dynamic和TREE。勾选VWD意味着如果DynDOLOD没有找到对应的3D远景资源,该规则将被无视。(如果涉及的对象是树,那么只要有对应的billboard资源就行。)勾选NoGlow意味着DynDOLOD不会为该规则涉及到的远景建筑添加发光窗户。如果某个建筑的完整模型遭到了大幅度修改,DynDOLOD生成的发光窗户有可能会对不上修改过后的建筑,这时候这个选项就能起到作用。(如果你本来就没有在下面的选项中勾选Glow windows,该选项显然不会产生任何效果。)勾选NoMATO意味着该规则涉及到的远景不会有雪/火山灰着色器效果。勾选Dynamic意味着DynDOLOD会为该规则涉及到的物体同时生成普通远景和动态远景。一般而言同一个物体要么使用普通远景,要么使用动态远景,因此这个选项不要轻易勾选。勾选TREE意味着在游戏插件数据中,一切类型属于TREE,以及一切带有Has Tree LOD这个标签的条目都适用于该规则。这个选项其实是为上文提到的tree规则设置的保险。TREE这一标签能够保证tree规则能覆盖游戏中的所有树木。
前面的LOD Level设置针对的是普通远景,而后面的Grid和Reference设置针对的则是动态远景。Grid可以设置为None、NearLOD、NearFull、FarLOD、FarFull、NeverfadeLOD、NeverfadeFull这几个值。None代表不生成动态远景。后面的六种设置里,Near/Far/Neverfade代表动态远景的显示距离。带有Near的选项代表该规则生成的动态远景只会在下面设置的NearGridToLoad范围内显示;带有Far的选项代表该规则生成的动态远景只会在下面设置的FarGridToLoad范围内显示;带有Neverfade的选项则代表该规则生成的动态远景不受DynDOLOD控制,只要位于fSkyCellRefFadeDistance范围内就会显示,是货真价实的“neverfade”。后半部分的两种选择里,LOD意味着动态远景会优先使用Level 0远景模型,如果没有对应的3D远景资源才会使用完整模型代替;Full则意味着动态远景只使用完整模型。
Reference设置用来控制在动态远景进入加载范围时,DynDOLOD会怎么处理动态远景和它对应的完整物体。它的值可以设置为Unchanged、Replace、Disable、KeepParent、KeepChild、KeepBoth、Delete、Original、Copy、Enable或者Ignore。除了默认的,也是最正常的Unchanged(取消加载远景,加载完整物体)之外,这些选项基本都派不上什么用场,因此一般玩家没有必要详细了解,也没有必要主动使用Unchanged之外的选项。
关于规则框有两点需要注意,其一是每一条规则都同时包含对于普通远景和对于动态远景的设置。显然,如果某条规则里所有的LOD Level都设置为None,那么DynDOLOD就只会给该规则范围内的物体生成动态远景;如果某条规则的Grid设置为None,那么DynDOLOD就只会给该规则范围内的物体生成普通远景。但是,如果某条规则里同时包含对于普通远景和动态远景的设置(事实上大多数规则都是如此),那么DynDOLOD会自己判断一个物体该不该使用动态远景(除非你勾选了Dynamic标签)。不用担心,它的判断一般都很准确,况且据笔者所知玩家也没有太多可以干预这一过程的办法。最后,如果某条规则同时将所有的LOD Level和Grid都设置为None,这就意味着该规则涉及到的对象永远都不会有任何形式的远景。
另一个需要注意的地方是,不同的规则所涉及的范围很可能会出现重叠,因此规则之间也像mod和插件一样存在覆盖关系。和它们不同的是,DynDOLOD的规则是排在上面的优先度高,排在下面的优先度低。此外,Reference类型的规则永远比Mesh Mask类型的规则优先度高。
将光标悬停在规则上可以看到这条规则是由哪一个规则预设文件添加的。你也可以在Rule added by文本框内手动修改“规则的来源文件”这一信息,不过该信息显然不会影响远景生成。
如果某一mod大幅度修改了某物体的模型但却没有提供相应的远景模型资源,该物体的远景很可能与完整模型出现明显的不匹配。在此情况下,玩家可以自行为该模型添加规则,并将其置于列表的最顶端,以免其被覆盖。一般的做法是将你希望该物体远景存在的LOD层级设置为Full,让该物体的远景使用完整模型。如果该模型具有远景引擎不支持的效果(如动画或者ENB光),那么可以考虑将普通远景的所有LOD层级都设置为None,并按需设置Grid/Reference规则,这样就能确保DynDOLOD会为该物体生成动态远景。注意:动态远景不会出现在地图上。
- 笔者推荐玩家在载入高/中/低预设后按照自己的需求更改tree规则,因为预设中的tree规则对于大多数玩家来说都不是最为理想的方案。如果你的电脑性能不佳,那么可以考虑在LOD4/8/16三个层级都使用Billboard4。Billboard4虽然依旧是纸片远景,但是效果比原版的纸片远景要强很多,而且对性能造成的影响非常小。较为平衡的设置是在LOD4级别使用Level0,也就是3D/混合树木远景模型,而在LOD8/16级别使用Billboard4。如果你的显卡性能十分强劲,那么可以将LOD4/8/16分别设置为Level0/1/2,这样纸片树木远景就会从你的游戏里彻底消失。当然,以上这些设置都需要在下面的选项中勾选Ultra才能生效。
如果你按照本文的推荐安装并启用了A Clear Map of Skyrim and Other Worlds(也就是说启用了LOD32物体远景),你可能会需要对tree和\这两条规则额外进行一些修改。如果你希望在地图上显示树木,那么请将tree规则的LOD Level 32设置为Billboard6(性能过剩的玩家可以试一试Level2,这样地图上显示的就是3D的树木远景模型而不是billboard纸片模型)。务必将\规则的LOD Level 32设置为Level0,不然地图上的大多数物体都会消失不见。
- 下方的Options框包含了DynDOLOD的大部分设置。
勾选Object LOD以让DynDOLOD生成物体远景。这是DynDOLOD的本职工作,因此必须勾选。
勾选Tree LOD以让DynDOLOD生成传统的树木远景,勾选Ultra以让DynDOLOD生成Ultra树木远景。两个选项只能选择其中一个。Ultra树木远景相对传统树木远景的优势这里不再赘述。推荐勾选Ultra而不勾选Tree LOD。
勾选Large能让DynDOLOD将ESM插件内添加的大型树木变为large reference。该选项一般无需勾选——且不说把它们变作large reference有多大意义,大部分树木mod的插件都不是ESM插件,因此该选项不会对它们添加/修改的树造成任何影响。
勾选Dynamic LOD以让DynDOLOD生成动态远景插件。动态远景是DynDOLOD的主要功能之一,极其推荐勾选。
(注意:默认设置下,勾选Ultra会让你的地图上显示树木。如果你既希望使用Ultra树木远景又不想在地图上看到树木,你有两种办法:其一是将tree规则的LOD Level 16设置为None,但这样会导致LOD16层级的远景同样失去树木,因此一般不推荐;其二是按照本文推荐设置安装并启用A Clear Map of Skyrim and Other Worlds——也就是将uLockedObjectMapLOD
设置为32,让地图使用LOD32级别的物体远景——并将tree规则的LOD Level 32设置为None。具体可以参见本文中与A Clear Map of Skyrim and Other Worlds这一mod相关的设置。)
Max tile size LOD/Max tile size full/Max tile size billboard
三个选项决定了不同类型的单个材质能在DynDOLOD生成的atlas材质文件上最多占用多大分辨率的空间。一般来说,使用1080p/1440p屏幕的玩家将它们分别设置为1024/256/1024即可,使用2160p屏幕的玩家将它们分别设置为2048/512/2048即可。Billboard brightness选项可以调整树木billboard的亮度。推荐第一次生成时使用默认设置(也就是0),并根据游戏内效果判断是否需要调整。
NearGridToLoad
和FarGridToLoad
两个选项决定了动态远景系统里Near/Far的具体范围大小。默认设置下,NearGridToLoad=1
1,也就是说除去加载范围,以玩家为中心的1111个单元格都属于Near范围;FarGridToLoad=21
,也就是说除去加载范围(如果你开启了large reference系统,那么是除去large reference范围),以玩家为中心的2121个单元格都属于Far范围。这两个选项一般来说无需修改。
勾选Occlusion data以让DynDOLOD重新计算occlusion数据。原版的occlusion数据存在bug,勾选该选项能修复这些bug,因此推荐勾选。
Quality选项决定了生成的occlusion数据的质量。该选项可以选择1/2/3三个值。数字越大,DynDOLOD生成occlusion数据时就会执行更多计算,生成的occlusion数据也就更精确。选择生成高质量的occlusion数据会显著增加DynDOLOD的生成时间,但是高质量的occlusion数据在游戏内的性能表现会比低质量的更好,因此笔者推荐玩家选择质量3。
勾选Plugin会让DynDOLOD额外生成Occlusion.esp,不勾选plugin,则新生成的occlusion数据会被整合进DynDOLOD.esp当中。Occlusion.esp带有ESL标签,因此一般不会引发插件上限问题。只要插件排序正确,Plugin选项对于游戏内效果没有任何影响。是否勾选该选项主要取决于玩家个人偏好。
- 勾选Terrain Underside以生成terrain underside,一个放置在地形下方,用于遮蔽体积光的模型。如果你使用EVLaS,务必勾选该选项。
Quality决定生成模型的质量,数字越小质量越高。0是质量最高的等级,20是质量最低的等级。高质量的模型会消耗更多性能,但低质量的模型可能会从真正的地形/地形远景底下冒出来。该选项对性能的影响不算太大,因此电脑性能足够的玩家可以使用质量0。电脑性能不佳的玩家可以酌情调低质量。
Height
决定terrain underside模型会被放置在距离完整地形多远的位置,数值越小意味着terrain underside距离完整地形越近。调低该选项能让terrain underside的体积光遮蔽效果更贴近实际地形遮蔽会产生的效果,但与此同时underside模型从真正的地形/地形远景底下冒出来的几率也会增大。该选项默认值为500,一般无需修改。
- 勾选
Grass LOD
以生成草地远景。草地远景也是物体远景的一部分,但是玩家无法在规则框中调节它的设置。需注意,草地远景对于性能的消耗极大,如果你的电脑性能不足,草地远景可能会对你的游戏体验造成极大负面影响。
Density
选项控制草地远景的密度。该值为0意味着草地远景的密度是完整草地的0%,该值为100意味着草地远景的密度是完整草地的100%,以此类推。密度设置会显著影响草地远景的性能表现。笔者认为对于大多数玩家来说,比较合适的密度设置在25到60之间,玩家可以自行测试以找到性能和视觉表现之间的平衡点。注意HD草地远景使用的是4x2的billboard,而普通草地远景使用的是2x2的billboard。这代表在同等密度下,HD草地远景的性能消耗是普通草地远景的两倍。
Mode
选项控制草地远景的模式。该选项的含义与NGIO设置文件中的DynDOLODGrassMode
一致,也就是说如果你的DynDOLODGrassMode
设置为1,此处也应当设置为1;如果你的DynDOLODGrassMode
设置为2,此处也应当设置为2。这两个选项采用不同的设置会导致严重的视觉问题。如前文所述,笔者个人推荐使用模式1,因为模式2的性能消耗非常可观,视觉效果却不一定有显著提升。各位读者可以根据情况自行斟酌。使用周年版版本(1.6+)的玩家只能使用模式1。
这里补充一下,Billboard brightness
选项仅仅作用于billboard树木远景,不影响3D树木远景。如何调整3D树木远景的亮度参见DynDOLOD官网Help\Ultra Tree LOD\3D Tree LOD Brightness一节。
勾选Glow windows
以让DynDOLOD为远景建筑添加会发光的窗户。不勾选High代表这些会发光的窗户将会是普通远景,也就是说它们会一直亮着。勾选High代表这些会发光的窗户将会是动态远景,DynDOLOD会根据光照条件动态调整它们的亮度。这两个选项均推荐勾选。
勾选Fake lights selected world
以让DynDOLOD在勾选的worldspace里为光源生成“远景”。当然,远景是不能像真正的光源那样点亮周围的环境的,所以该选项的实际作用只是在光源物体的远景上添加一个FXGlow模型。像前面介绍的那样,FXGlow模型只能非常粗略地模拟光源点亮周围环境的效果,因此这个功能被叫做fake lights
。Fake lights
不仅丑,而且从远景切换到近景的效果非常突兀,因此不推荐勾选。
勾选Fake lights child world
以让DynDOLOD在勾选的worldspace的子worldspace(也就是五大主城)里为光源生成fake light
“远景”。玩家在从城外望向城内的时候会看到这些fake light
,它们只有在玩家进城的时候才会被替换成真正的光源,也就是说至少玩家不会看到它们带来突兀的远近景切换效果。如果你希望能在城外看到城内灯火通明的景象,那么可以勾选该选项。笔者实在不喜欢fake lights
的模样,因此没有使用该功能。
Seasons、Snow
和下面的选择框都是配合Seasons of Skyrim SKSE(也就是季节mod)使用的。上文已经提到,笔者不使用这一mod,因此无法提供相关介绍和指南。有使用需求的玩家可以前往DynDOLOD官网寻找相关信息。
在最右边的4个选项(Prefer Base Record LOD Assignments over Rules、Upgrade NearGrid Large References to FarGrid、Large reference bugs workarounds、Downgrade FarGrid references to NearGrid)当中,后两者默认处于隐藏状态,只有在安装了DynDOLODDLL NG and Scripts 3.00的情况下才会出现。
勾选Prefer Base Record LOD Assignments over Rules
意味着DynDOLOD在生成远景时会优先参考原版游戏数据中存在的远景数据,而非DynDOLOD规则。这样做通常会降低视觉效果,因此不推荐勾选。
勾选Upgrade NearGrid Large References to FarGrid
意味着DynDOLOD会将既是large reference又拥有动态远景的物体的显示范围扩大至整个FarGrid区域,哪怕该物体的Grid规则是Near而不是Far。不勾选该选项意味着DynDOLOD会无视这些物体的动态远景设置,这样一来它们的显示范围不会超出uLargeRefLODGridSiz
e,也就是不会超出large reference的显示范围。显然,勾选该选项能在一定程度上改善视觉效果,而不勾选该选项能在一定程度上节约性能。
勾选Large reference bugs workarounds
意味着DynDOLOD会额外提供实验性的large reference bug解决办法。如果你能看见该选项,那应该就意味着你希望使用这一功能。
勾选Downgrade FarGrid references to NearGrid
意味着DynDOLOD会将拥有动态远景但不属于large reference的物体的显示范围缩小至NearGrid
区域,哪怕该物体的Grid规则是Far而不是Near。在常规设置下,该选项必须勾选,因此Sheson将它隐藏了起来,不允许玩家自己编辑。不过,在启用了Large reference bugs workarounds
之后,玩家就可以放心取消勾选该选项以获得更好的视觉效果。推荐取消勾选。
Specific Chunk
选项(以及右边的W/S)与xLODGen当中的同名选项含义完全一致,这里不重复介绍。该功能一般只用于测试。
最后一行的按钮当中,点击Load Preset能够加载已保存的DynDOLOD预设文件;点击Save Preset能够将当前的DynDOLOD UI内设置保存为预设文件;点击Default以加载默认DynDOLOD预设文件。预设文件的默认储存位置在Edit Scripts\DynDOLOD\Presets文件夹内,默认预设文件的文件名为DynDOLOD_SSE_Default.ini。笔者推荐玩家将自己修改好的设置保存为预设文件,以免遗失。
点击Execute LODGen以启动LODGen。LODGen是DynDOLOD用来生成物体远景模型文件的外置程序,启动LODGen意味着只执行物体远景模型生成而不执行正常DynDOLOD生成所需的其他步骤。该功能一般只用于测试。
点击Rebuild Atlas以让DynDOLOD生成物体远景atlas材质文件,而不执行正常DynDOLOD生成所需的其他步骤。该功能一般只用于测试。
点击Create Mod以进入Create Mod模式。该模式专门为mod作者准备,mod作者可以利用该模式更加方便地为自己的mod生成远景。一般玩家无需使用该功能。
确认一切按需设置完毕之后,点击OK以开始生成。点击该按钮时,当前所使用的DynDOLOD UI设置会被自动保存到DynDOLOD_SSE_Default.ini,也就是默认预设文件当中。这样一来,当玩家下一次启动DynDOLOD时,DynDOLOD便会自动载入上一次生成所使用的设置。
DynDOLOD生成时间一般在15分钟到一小时之间,在部分极端情况下甚至可能达到数小时之久。选择生成季节远景、(高质量的)occlusion数据、(高密度的)草地远景和(覆盖所有LOD层级的)3D树木远景都可能会极大延长生成DynDOLOD所需要的时间。一般来说,整个DynDOLOD生成过程最耗费时间的两个步骤分别是生成物体远景(在此过程中DynDOLOD会开启一至数个LODGen命令行窗口)以及生成occlusion数据。生成完毕之后,DynDOLOD会弹窗提示。选择Save & Zip & Exit以让DynDOLOD将生成文件压缩成压缩包。压缩完毕之后DynDOLOD便会自动关闭。正常使用MO2安装并启用该压缩包,除非要更新生成文件或者彻底卸载,不然不要取消启用。DynDOLOD生成的文件应该放置在mod列表的底端,覆盖其他所有文件。
玩家可以在开始生成前点击Cancel以退出DynDOLOD。
!【原则上生成远景的时候不要取消勾选任何mod,除非有可信赖的来源特别说明。】
4)启用DynDOLOD插件并排序
根据玩家的选择,DynDOLOD的生成文件中会包含0-3个插件。在3个可能生成的插件当中,DynDOLOD.esm需要排在ESM插件当中的最后一位,覆盖其他所有ESM插件;DynDOLOD.esp需要排在ESP插件当中的倒数第二位或最后一位,覆盖除了Occlusion.esp以外的所有插件;Occlusion.esp需要排在ESP插件当中的最后一位,覆盖其他所有插件。只生成了1-2个插件的玩家也需要确保插件排序符合以上描述。
到这里,一次完整的远景生成就算是彻底结束了。如果不出意外,此时玩家便可以进入游戏,享受自己的钻研成果。如果你计划在现有存档中使用新安装的DynDOLOD,建议使用在室内保存的存档——当然,最为保险的做法永远都是重新开档。
4 远景生成善后
4.1 DynDOLOD MCM
DynDOLOD插件自带的MCM菜单包含有一些实用的功能和信息。它分为4个页面:Main、You Are Here、Settings和Information。
在Main页面中,玩家可以通过DynDOLOD is active选项关闭/开启动态远景,以及通过Large References Fix选项关闭/开启large reference修复功能(和使用DynDOLOD DLL NG启用的large reference bug解决办法不是一回事)。如果你安装了DynDOLOD DLL NG并启用了large reference bug解决办法,那么Large References Fix选项会自动根据你的设置开启/关闭,无需玩家手动更改。此外,使用large reference bug解决办法的玩家在这里还会看到Large References Child Worlds选项。通过该选项玩家能关闭/开启在子worldspace(也就是五大主城)中显示large reference的功能。开启该选项能够改善在主城内看到的城外景色,但是同样会消耗更多性能。如果你在主城里遭遇了明显的帧数下降/卡顿,可以考虑关闭该选项。Main页面的其他部分主要是一些和更新/卸载相关的操作指南,后文会有详细介绍。
在You Are Here页面中,玩家可以看到玩家角色所处在的具体位置信息。该页面提供的信息包括玩家角色的具体坐标、玩家角色身处的单元格以及玩家角色所在位置对应的物体/树木/地形远景文件。这些信息对于排查问题有很大助益。
在Settings页面中,玩家可以实时修改一些与远景密切相关的游戏ini设置。fMinSecondsForLoadFadeIn
决定游戏在加载到新区域时会黑屏几秒;fSkyCellRefFadeDistance
决定了neverfade
物体的最远显示距离;Near Grid/Far Grid/Neverfade Multiple决定了DynDOLOD生成的远景发光窗户在不同距离下的亮度;通过Use Racemenu NiOverride
选项可以开启/关闭让Race Menu自动调整远景发光窗户亮度的功能;fBlockLevel0Distance
决定了LOD4物体远景的最远显示距离;fBlockLevel1Distance
决定了LOD8物体远景的最远显示距离;fBlockMaximumDistance
决定了LOD16物体远景的最远显示距离;fSplitDistanceMult
决定了地形远景层级相较于物体远景层级的显示距离;fTreeLoadDistance
决定了树木远景的最远显示距离(在启用了Ultra树木远景的情况下该选项不起作用)。
Information界面包含了一些可以帮助排查问题的信息。这里不做介绍。
4.2 卸载/更新DynDOLOD
DynDOLOD动态远景需要用到脚本,因此为了保证存档安全,卸载DynDOLOD并非直接移除文件那么简单,而是需要进行一些额外操作。具体步骤如下:
1)在MCM菜单中关闭动态远景。
2)在弹出动态远景已关闭的消息之后,进入室内。
3)再次进入MCM菜单以确认动态远景已经关闭。
4)保存并退出游戏。
5)在MO2中移除DynDOLOD生成文件。
6)打开游戏,载入刚刚保存的存档,稍事等待。
7)再次存档。这一次生成的存档文件里基本可以认为没有DynDOLOD留下的痕迹。无论你是打算彻底卸载DynDOLOD还是单纯打算更新DynDOLOD生成文件,你都可以放心使用该存档文件继续操作。
什么时候需要更新远景,具体需要更新哪些远景相关文件需要玩家自己判断。本文中所涉及的所有工具都是根据你现有的mod内容生成文件,因此在正常情况下它们生成的文件不会与你现有的mod内容产生冲突。如果你更改了它们所引用的mod内容,那么你就需要重新执行一部分乃至全部的生成步骤,以让生成的文件能与修改过后的mod内容相匹配。否则,轻则游戏中会出现或大或小的视觉问题,重则游戏会遭遇运行bug,乃至无法启动。更新生成文件显然需要玩家先移除已经存在的生成文件。
一般来说,如果单元格里的landscape数据遭到了大幅度修改,那么你需要重新运行NGIO草地缓存生成、xLODGen和DynDOLOD;如果地形材质遭到了大幅度修改,那么你需要重新运行xLODGen;如果树木/建筑/山体的材质/模型/插件数据遭到了大幅度修改,那么你需要重新运行TexGen和DynDOLOD;如果草地的材质/模型遭到了大幅度修改,那么你需要重新运行TexGen和DynDOLOD;如果草地的插件数据遭到了大幅度修改,那么你需要重新运行NGIO草地缓存生成、TexGen和DynDOLOD;如果户外单元格内的放置的物体遭到了大幅度修改,那么你需要重新运行DynDOLOD。如果你实在不确定自己修改了什么,那么把整个流程按部就班重新走一遍总不会出错。
如果你更改了某一项工具的设置,请务必注意,除了重新生成该工具所生成的文件以外,你往往也需要重新运行DynDOLOD——毕竟DynDOLOD的生成过程同时需要用到NGIO生成的草地缓存、xLODGen生成的地形远景模型以及TexGen生成的材质资源。NGIO、xLODGen和TexGen之间倒不存在互相依赖的关系。
xLODGen Beta、DynDOLOD Resources/TexGen/DynDOLOD 3 Alpha与DynDOLOD DLL NG都处在测试阶段,因此更新频繁。这些更新不代表一般用户就一定得重新生成相关文件。玩家可以自行参考更新日志,做出判断。如果你不打算使用新版本的新功能也没有遭遇新版本修复的bug,那么显然你是没有必要更新生成文件的。
玩家也可以考虑使用DynDOLOD中的Execute LODGen/Rebuild Atlas功能,或者关闭occlusion功能来加快重新生成的速度。玩家需要对于DynDOLOD原理有较深的认识才能确保这么做不会出问题,因此本文就不多介绍了。
4.3 官网、支持渠道与致谢
1)本文的大部分内容来自于DynDOLOD官方网站。在DynDOLOD主文件夹下的docs文件夹内可以找到官方手册,点击其中的任意html文件,浏览器会跳转到DynDOLOD官方网站的对应界面,当然你也可以在浏览器里直接输入网址dyndolod.info进入官网。有兴趣进一步了解DynDOLOD和远景生成的玩家可以在官网上寻找自己所需的信息。
2)有关xLODGen Beta和DynDOLOD的一切问题以Sheson本人的说法(包括官方网站和他的论坛发言)为准。不要盲目相信任何第三方教程,包括本文。
3)如果你在远景生成过程中遭遇问题,或者在游戏中注意到远景相关的bug,请首先在官网里(或者本文里)寻找相关信息。如果没能找到或者依旧无法解决,那么最为稳妥的办法是通过xLODGen Beta/DynDOLOD的官方支持渠道咨询Sheson。在官方网站的Forum界面里能找到官方支持论坛的链接。Sheson有问必答,而且基本上每次都能解决问题,不过你要确保你在发帖的同时上传了DynDOLOD主文件夹下Logs文件夹中的DynDOLOD_SSE_log.txt和DynDOLOD_SSE_Debug_log.txt,并且按照Sheson的进一步指示配合他调查问题。当然,你也可以在本帖中询问笔者,虽然笔者不保证能够解决你的问题。如有必要,笔者也可以向Sheson代为转达你的疑问。
4)两个比较有用的参考工具:
LOD Meshes and exact localization on the map(N网编号45057)
一份标注了所有单元格和LOD4/8/16/32区域信息的游戏地图,玩家可以借此查找远景或者其他游戏问题发生的具体位置。
Test-Terrain-Tamriel
将远景地形替换为带有LOD4/8/16/32标识的方块,玩家可以借此判断地形远景的层级。效果如下:
![Test-Terrain-Tamriel图片展示](https://www.z4a.net/images/2023/08/11/Test-Terrain-Tamriel.jpg)
该文件下载链接可在Step Modifications论坛xLODGen Beta的页面上找到,需要特殊上网方式下载。
5)最后的最后,感谢Sheson近十年来为改善老滚5远景做出的不懈努力;感谢Sheson在论坛上耐心解答所有人提出的每一个问题;感谢Sheson撰写了一份无比详尽堪称百科全书式的文档。总而言之,感谢Sheson,也感谢老滚5这十余年modding史上一切为改善远景做出过努力和奉献的广大玩家和modder。笔者在这里为你们献上自己的firstborn。
4.4原贴中补充的解答
1)【刷草地缓存闪退多少次都正常,只要它不是每次一进游戏就闪退,卡在那里不动了就行。如果出现一进游戏就闪退,如此循环往复,且开启控制台发现进度卡住,则需要考虑是否存在固定位置闪退,一般是严重的插件数据错误导致的。】
2)【如果发现是因为CC内容而出现Unresolved FormID弹窗,那么你的原版游戏插件可能是老版本,而非周年版新版本。周年版CC内容需要周年版原版插件才能正常运行。把游戏更新到周年版,然后使用BestOfBoth版本降级插件把游戏exe降级到1.5.97版本,保留1.6版本插件。】(转载者补充,这里指的版本插件,即为skyrim.esm、update.esm等,1.6版对游戏原版最基础的几个大插件也做了修改,而许多整合包的本体都用的是原生1.5.97,而非BestOfBoth降级而来)
3)【如果安装了A Clear Map of Skyrim,勾选了LOD32选项却没有修改设置文件以让DynDOLOD生成LOD32远景,就会造成远近景重叠】
4)【如果找不到DynDOLOD的MCM菜单,可以看看是否是因为安装了Menu Maid等mod导致的】
5)【必须指出取消mod只不过是权宜之计。要么你借此机会彻底排查并修复问题,要么你就把相关mod彻底卸载不再使用,不存在第三种做法。】
6)【xLODGen、TexGen和DynDOLOD生成的文件务必不能被任何文件覆盖,如果overwrite里出现了会覆盖它们的文件,那就把这些文件移除。】(转载者补充,因为在MO2结构下,如果没有另外设置Xlodgen的输出目录,就会输出到overwrite里,也许是你之前不小心,也许是整合包的作者不小心,总之检查上述三项文件在MO2左列表有没有被覆盖十分重要,原贴里就有因此问题排查了几十楼的情况)
7)【 skyrim.ini里的[LightingShader]的四项,应按照本教程2.4里的推荐,改成sheson建议的1/1/1/1,否则会出现河木镇水车变黑等问题。】
8)【“还有一个小问题就是有时候生成远景时间异常,以往十分钟以内突然变成半个小时以上,看cpu占用基本上没有,以往cpu都是全力运行的,设置都是一样的,我一般都是重新安装生成软件解决的,有时候还不能解决,这是怎么回事”——“没事了,偶尔出毛病,重启几次就好了”】(关于这个问题,转载者的经验是A卡的某些版本的驱动会造成这一问题,Step Mod上也有其他用户报告了类似问题,以至于转载者每次发现这个bug的时候,都会选择用DDU卸载掉A卡驱动,待远景刷好以后再重装驱动)
9)【我的草地缓存就一个G,6个G已经非常夸张了。要刷草远景SuperDenseGrass最好别启用,启用了草地远景密度也不要超过33(Sheson的说法),不然不仅仅是生成需要花特别长的时间,生成完了你的电脑很可能也吃不消。】
10)【DynDOLOD本质上就是个补丁生成器,它读取你的load order信息,生成对应的文件和插件数据。它的生成文件要排在最后,覆盖其他一切mod内容,因为它本来就是你所有mod汇总在一起得到的结果。这也意味着,一旦你改动了你的游戏内容,之前生成的DynDOLOD文件就可能会与你现在的游戏内容不兼容。所以我需要强调,先finalize你的mod内容,确保没有问题之后再生成DynDOLOD。总结一下,DynDOLOD不会引起室内/近景错误,但是可能会把你游戏里原本存在的排序错误给复制下来。因为你把它排在最后,所以无论你怎么折腾其他插件,你的改动都会被它覆盖而起不到效果。这不是DynDOLOD的问题。千言万语最后还是一句话:尽可能去了解mod的基本原理,养成良好的mod使用习惯。】