This commit is contained in:
yyc12345 2022-04-24 13:28:36 +08:00
parent 6e3be420f2
commit 5bdb9927f2
3 changed files with 66 additions and 12 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 KiB

78
main.md
View File

@ -6,8 +6,8 @@
### 作者想说的 ### 作者想说的
我自认为Ballance已经是穷途末路强弩之末了无论人们再怎么去拯救它可能也无力回天了。我打开了使用Blender制图的门但是大家还是喜欢去3ds Max家使用那些陈旧专有的东西捡了西瓜丢了芝麻 目前的Ballance制图教程基本都是基于3ds Max的并且没有英文版本。这阻碍了更多人创作Ballance UGC内容
从各个地方来看Ballance都在被吞噬即使现在Ballance Mod Loader足够出色有一些颇有技术力的人仍然在开拓新世界但一个腐朽的架构已经无法支撑其上层的发展。因此我打算尽我最后的力量把Blender制图的一切介绍给大家。也许我能够把它写得很棒这一切值得么 因此我想在这里介绍一个全新的制图流程使用Blender进行Ballance制图并给出相应的英文教程以惠及所有的Ballance玩家。
### 此教程面向的人 ### 此教程面向的人
@ -37,9 +37,9 @@
1. [Blender - 杂项](#jump-9) 1. [Blender - 杂项](#jump-9)
1. [Virtools - 基本操作](#jump-10) 1. [Virtools - 基本操作](#jump-10)
1. [Virtools - 脚本](#jump-11) 1. [Virtools - 脚本](#jump-11)
1. [一些建模的经验公式](#jump-12) 1. [Blender经验公式](#jump-12)
1. [为什么Virtools里要这么做](#jump-13) 1. [Virtools经验公式](#jump-13)
1. [过时软件介绍](#jump-14) 1. [过时软件与不适用软件介绍](#jump-14)
1. [最新勘误](#jump-15) 1. [最新勘误](#jump-15)
1. [结语](#jump-16) 1. [结语](#jump-16)
@ -66,7 +66,7 @@
此外Blender的插件系统也非常地亲近用户选择了Python作为插件语言而不是像3ds Max那样还需要用C++配上专用的库才能编写插件这使得插件的迭代可以很快并且高级用户还可以自己定义方便自己操作的插件。来自开放世界的力量将会通过网络来指导你攻破操作软件时的每一个困惑之处。但需要注意这个教程并不会教授你如何对Blender进行基本操作只会在这里列出一些常用操作的方法和制作Ballance关卡所需要的技术其他技术还需要你自行参悟。 此外Blender的插件系统也非常地亲近用户选择了Python作为插件语言而不是像3ds Max那样还需要用C++配上专用的库才能编写插件这使得插件的迭代可以很快并且高级用户还可以自己定义方便自己操作的插件。来自开放世界的力量将会通过网络来指导你攻破操作软件时的每一个困惑之处。但需要注意这个教程并不会教授你如何对Blender进行基本操作只会在这里列出一些常用操作的方法和制作Ballance关卡所需要的技术其他技术还需要你自行参悟。
### Blender制图的运作 ### Blender制图的工作流
正如基本概念中所述我们使用Blender作为3D建模软件在最后处理的部分使用Virtools进行期间两者的文件交换由BMX文件于下文进行叙述和2个插件来承担它们分别是 正如基本概念中所述我们使用Blender作为3D建模软件在最后处理的部分使用Virtools进行期间两者的文件交换由BMX文件于下文进行叙述和2个插件来承担它们分别是
@ -139,11 +139,18 @@ BallanceVirtoolsHelper是一个可以用于Virtools 3.5的插件,当然,也
路面是Ballance中最为重要的一种物体您可以在大多数关卡中见到它。本章节中的路面仅指代普通的路面对于类似于[Modul_15](https://ballance.jxpxxzj.cn/wiki/Modul_15)以及出生点盘点这种特殊路面,请参考添加机关章节。 路面是Ballance中最为重要的一种物体您可以在大多数关卡中见到它。本章节中的路面仅指代普通的路面对于类似于[Modul_15](https://ballance.jxpxxzj.cn/wiki/Modul_15)以及出生点盘点这种特殊路面,请参考添加机关章节。
路面的制作方法自自制地图创始以来就一直在被所有制图者进行研究目前主要有3种流派用原版路面或原版1x1路面做微分法的拼接法使用外部工具BMMaker或MapEditor进行预先绘制后导出为脚本批量生成以及直接建模的方法。三种方法中拼接法最简单但限制最多限制制图者的创造力。而外部工具由于其实现特性会出现生成时卡机制作后冗余顶点过多只能制作直来直去的路面的缺陷。只有直接建模法是Ballance路面制作的最终出路是最自由的最能发挥制图者创造天赋的方法也是我们需要关注和介绍的方法。而直接建模法最重要的两点根据我的经验则是生成对应形状以及贴图匹配。目前在Blender中对于路面建模的操作还是比较丰富的在BallanceBlenderHelper的加持下我们可以通过BallanceBlenderHelper内的BMERevenge模块批量生成较为规整的路块这些路块具有自定义程度高以及几乎没有冗余顶点的特点。同时BallanceBlenderHelper也支持对一部分直接建模物体进行快速材质贴图的方法。 路面的制作方法自自制地图创始以来就一直在被所有制图者进行研究目前主要有3种流派
1. 用原版路面或原版1x1路面做微分法的拼接法
1. 使用外部工具BMMaker或MapEditor进行预先绘制后导出为脚本批量生成
1. 直接建模
三种方法中拼接法最简单但限制最多限制制图者的创造力。而外部工具由于其实现特性会出现生成时卡机制作后冗余顶点过多只能制作直来直去的路面的缺陷。只有直接建模法是Ballance路面制作的最终出路是最自由的最能发挥制图者创造天赋的方法也是我们需要关注和介绍的方法。
直接建模法最重要的两点根据我的经验是生成对应形状以及贴图匹配。目前在Blender中对于路面建模的操作还是比较丰富的在BallanceBlenderHelper的加持下我们可以通过BallanceBlenderHelper内的BMERevenge模块批量生成较为规整的路块这些路块具有自定义程度高以及几乎没有冗余顶点的特点。同时BallanceBlenderHelper也支持直接建模方法并提供了进行快速材质贴图的功能。
### 使用BMERevenge添加路面 ### 使用BMERevenge添加路面
BMERevenge是内置于BallanceBlenderHelper的一个全新的路面生成模块是Ballance Map Editor的上位替代。您可以在`添加 - Floors`中立即添加BMERevenge所提供的任意一种路面。其中Basic floors是指构成路面的最基本模块包括三种变球器平凹转换路面以及平路面和凹路面的最小单元。而Derived floor则是一系列基于Basic floor组合而成的组合路面包括路面转角路面以及平台等多种非常便捷的路面类型。通常来说只需要根据自身需要来选择合适的路面点击设定参数点击确定即可生成。 BMERevenge是内置于BallanceBlenderHelper的一个全新的路面生成模块正如其名字BMERevenge是Ballance Map Editor的上位替代在实现Ballance Map Editor原有功能的情况下具有更多更好的特性。您可以在`添加 - Floors`中立即添加BMERevenge所提供的任意一种路面。其中Basic floors是指构成路面的最基本模块包括三种变球器平凹转换路面以及平路面和凹路面的最小单元。而Derived floor则是一系列基于Basic floor组合而成的组合路面包括路面转角路面以及平台等多种非常便捷的路面类型。通常来说只需要根据自身需要来选择合适的路面点击设定参数点击确定即可生成。
下图展示了添加路面的参数设置页面,以及不同参数的生成对比。 下图展示了添加路面的参数设置页面,以及不同参数的生成对比。
Basic param部分是基础参数类型Type表明了生成路面的类型如果您在添加菜单中点错了按钮也可以在这里切换成正确的路面。高度指定了生成的路面的高度小于1的数值可以生成类似于[魔虬](https://ballance.jxpxxzj.cn/wiki/%E9%AD%94%E8%99%AC)中的薄路面。而大于1的数值则可以生成类似[魔脓空间站](https://ballance.jxpxxzj.cn/wiki/%E9%AD%94%E8%84%93%E7%A9%BA%E9%97%B4%E7%AB%99)中,具有非常高的侧面的路面。 Basic param部分是基础参数类型Type表明了生成路面的类型如果您在添加菜单中点错了按钮也可以在这里切换成正确的路面。高度指定了生成的路面的高度小于1的数值可以生成类似于[魔虬](https://ballance.jxpxxzj.cn/wiki/%E9%AD%94%E8%99%AC)中的薄路面。而大于1的数值则可以生成类似[魔脓空间站](https://ballance.jxpxxzj.cn/wiki/%E9%AD%94%E8%84%93%E7%A9%BA%E9%97%B4%E7%AB%99)中,具有非常高的侧面的路面。
@ -155,14 +162,57 @@ Face部分是指示上下顶面的使用情况而Side部分指示的是路面
!!! info "Ballance Map Editor" !!! info "Ballance Map Editor"
Ballance Map Editor是一款老旧的基于Tilemap的Ballance路面创造软件我们已经不建议您使用这个软件因为其创建了大量无用顶点。相比较而言BMERevenge完美地解决了这个问题。如果您仍然需要使用这个软件或想了解这个软件请参见过时软件介绍章节。 Ballance Map Editor是一款老旧的基于Tilemap的Ballance路面创造软件我们已经不建议您使用这个软件因为其创建了大量无用顶点。相比较而言BMERevenge完美地解决了这个问题。如果您仍然需要使用这个软件或想了解这个软件请参见过时软件介绍章节。
### 直接建模添加路面
在本节中我们将通过逐步介绍一个六边形平台的建造方法来引导您熟悉直接建模添加路面的方法并熟悉BallanceBlenderHelper中提供的快速材质贴图功能。
![](./imgs/zh-cn/custom_floor_1.png)
我们可以先通过一些基本图元的创建,来帮助我们更快地搭建起整个物体的框架。为了获得六边形,我们可以首先利用`添加 - 网格 - 圆环`然后将其顶点设置为6.然后我们假设我们的六边形平台的半径大约为20因此需要将其半径设置为20。除此之外我们还需要构造一个相同的半径为22.520 + 2.5的圆环与半径20的圆环同平面共心放置。这么做是为了在平台边缘分割出一个2.5单位路面大小5x5的一半的边缘。虽然平台的上表面看起来是一个整体但实际上其边缘的花纹和中心的图案分别来自不同的贴图因此我们需要将它们分割到不同的面上来赋予不同的材质。这样一来我们就有了两个6边形我们暂且将半径20m的六边形称为内六边形将半径为22.5的六边形称为外六边形。
然后我们需要选中这两个物体,右键选择合并(快捷键`Ctrl + J`),现在这两个物体被合并了,我们可以在此基础上构建一些面。进入编辑模式(快捷键`Tab`退出编辑模式再按一下即可选择顶点模式选择内六边形的6个顶点然后使用`面 - 填充`(快捷键`Alt + F`。这样内部的78910号面就填充完毕了。然后我们需要够造外围的1到6号面。首先选中外六边形的两个顶点再选择内六边形的两个顶点使用`顶点 - 从顶点创建边/面`(快捷键`F`)创建一个四边形面,以此类推创建所有的面。需要注意的是,务必使用`顶点 - 从顶点创建边/面`而不是`面 - 填充`来创建内六边形与外六边形之间的1到6号面。因为这样创建的面将不会是三角面为我们后面进行贴图创造了便利。
我们拥有了平台的顶面现在我们需要创建它的边缘6个面。我们仍然需要使用`添加 - 网格 - 圆环`添加一个22.5半径的六边形然后将其下移5个单位我们将其称为底六边形。选中我们的顶面和这个底六边形右键选择合并。然后我们进入编辑模式选择顶点模式仍然使用`顶点 - 从顶点创建边/面`在外六边形和底六边形中分别选择2个点构建侧面的6个面。现在我们已经构造完整个平台的几何结构了。
现在我们需要为其创建贴图。首先我们需要设定材质插槽。请先转到Shading选项卡然后选中平台并进入编辑模式。在下方的着色器编辑器的中上部选择左侧的下拉列表并使用添加按钮添加3个插槽。然后分别选中每个插槽并在下拉列表右侧的材质选择按钮中选择相应的材质。我们的平台需要3个材质`FloorSide``FloorTopBorderless``FloorTopFlat`。选择好后,我们需要为每个面指定材质,需要进入编辑模式的面选择模式。然后选择内六边形内的面,然后选中`FloorTopBorderless`然后点击下方的指定即可设定其材质。同理为内外六边形之间的6个面设置为`FloorTopFlat`为底六边形和外六边形之间的6个面设置为`FloorSide`。现在每个面都有正确的材质了但是它们仍然看起来非常奇怪这是因为它们的UV还没有正确设置。
`Ballance - Flatten UV`提供了一个特殊功能它可以按照Ballance中物体与贴图的比例关系3D中的5对应UV贴图中的1按照指定面的某条边将材质展开到这个面上这在这一步中是非常重要的。首先选择内六边形内部的所有面然后使用`Ballance - Flatten UV`您可以观察到这些面的材质正确了。现在您可以尝试选中内外六边形之间的6个面然后继续使用`Ballance - Flatten UV`,您可能会发现,原本应当位于边缘的条纹现在可能被贴到了其他边上,这是因为参考边选择错误,我们可以在`Ballance - Flatten UV`的弹出框中调整`Reference edge`的大小其数值的含义是使用多边形中的第x个边作为参考边。通过调整参考边您可以将边缘条纹贴到正确的位置。对于底六边形和外六边形之间的6个面也是如此操作。现在我们的平台完成了。
!!! info "为什么我没找到你说的材质"
这大多发生在从空白Blender文件进行创建的过程中。一个最简单的解决方法是使用BMERevenge添加一个路面这个路面最好包含了您要使用的所有贴图然后将添加的路面删除这样只会导致物体被删除但是和物体一同被添加的相关路面材质则会被留在Blender文档中直到您清除无效数据块后才会被删除如果它仍然未被引用
当然通过手工方式创建材质也是可以的这取决于您的Blender技术上述的方法是适用于Blender新手的便捷操作。
!!! info "Flatten UV小贴士"
在Flatten UV中调整`Reference edge`时,如果您熟悉了相关操作,则可以很快地判断该如何修改`Reference edge`来得到正确的结果,例如本例中,条纹被贴到了对面的边上时,我们可以直接将`Reference edge`+2或者-2取决于哪个数值是合法的因为`Reference edge`最大为3最小为0就可以将其贴到正确的位置。
Flatten UV不止可以用于不规则路面的贴图够造它还可以用在很多地方例如当您通过拉伸顶点导致材质显示错误的时候您可以选择对应的面并使用Flatten UV将材质重新贴到正确的位置。但是Flatten UV不能解决物体本身的拉伸导致的材质变化因为Flatten UV是根据物体的网格进行操作的而物体的拉伸是物体的属性不是网格的属性Flatten UV无法识别到来自物体的属性。
现在,我们将对上面所述路面的生成方式进行改进,我们将使用螺旋修改器来重新制作和上述路面一摸一样的路面,并且会做的更快更好。
![](./imgs/zh-cn/custom_floor_2.png)
!!! info "为什么我想不出来使用这种方式构建模型"
直接建模添加路面往往并不是对Ballance制图工具的考验而是考验制图者对于该3D软件的熟悉程度。您对Blender越熟悉对于构建自定义路面则会越得心应手。甚至在完全熟悉Blender后超越我以上提供的构建方法以更快的速度构建出模型并且不依赖BallanceBlenderHelper提供的贴图功能贴上正确的贴图。
对于刚开始使用Blender的新手而言这很难做到一个快速提升建模水准的方法是多看多练。我们在本制图文档中提供了许多不规整的模型的构建方法您需要仔细学习其理念并举一反三。并对于别人地图中的一些奇异构型需要时刻想着如何在Blender中更快地构建出相似的结构。相信通过如此学习您会在Blender建模上取得更快的进步。
还有,每章节的练习也不要忘了做哦,对于提升您的水准也有帮助。
## <span id="jump-7">Blender - 添加钢轨</span> ## <span id="jump-7">Blender - 添加钢轨</span>
### 钢轨的本质
讲一下单双轨区别
### 添加单轨和双轨
### 添加螺旋钢轨
### 添加钢轨材质 ### 添加钢轨材质
在完成钢轨的构建后我们需要给钢轨添加对应的材质以及UV才能让钢轨具有正确的颜色。我们可以先选定钢轨然后通过`Ballance 3D - Create Rail UV`来为钢轨添加材质和UV。对话框中的材质Material选择钢轨材质即可。而对于类型Type则有3种类型分别是点Point均衡Uniform和缩放Scale。这三种模式对应了程序对UV的不同处理方式。由于Ballance对于游戏中的钢轨的视觉效果具有特殊的处理所以选择何种类型可能并不会对最后钢轨的呈现有什么影响。但是我们仍然建议您选择视觉上观看最好的模式您可以反复选择参数来观察结果以决定选择何种类型。通常来说一个好的钢轨在视觉上看来它的花纹要分布均匀但这也并非唯一标准。下面将会对这3中不同类型的具体处理方法进行讲解。 在完成钢轨的构建后我们需要给钢轨添加对应的材质以及UV才能让钢轨具有正确的颜色。我们可以先选定钢轨然后通过`Ballance - Create Rail UV`来为钢轨添加材质和UV。对话框中的材质Material选择钢轨材质即可。而对于类型Type则有3种类型分别是点Point均衡Uniform和缩放Scale。这三种模式对应了程序对UV的不同处理方式。由于Ballance对于游戏中的钢轨的视觉效果具有特殊的处理所以选择何种类型可能并不会对最后钢轨的呈现有什么影响。但是我们仍然建议您选择视觉上观看最好的模式您可以反复选择参数来观察结果以决定选择何种类型。通常来说一个好的钢轨在视觉上看来它的花纹要分布均匀但这也并非唯一标准。下面将会对这3中不同类型的具体处理方法进行讲解。
下图展示了三种类型的工作方式。首先讲解均衡类型。均衡类型会试图按照一个轴向Projection axis将物体套在整张钢轨贴图中并进行贴图视觉上来说就像是将3D的钢轨按一个轴向拍扁到钢轨贴图的平面上而钢轨中的网格在这个平面上的映射就成为了它对应的UV。而点类型和缩放类型则是均衡类型的扩展。缩放类型允许用户提供一个缩放值Scale这个缩放值控制了这张钢轨贴图的缩放因此可以被看作原先的钢轨贴图变成了钢轨贴图的一部分缩放大于1又或者变成了多张钢轨贴图首尾相接缩放小于1。点类型则是将整个三维的钢轨映射到了一个点因此也可看作特殊的缩放类型其缩放值为0。 下图展示了三种类型的工作方式。首先讲解均衡类型。均衡类型会试图按照一个轴向Projection axis将物体套在整张钢轨贴图中并进行贴图视觉上来说就像是将3D的钢轨按一个轴向拍扁到钢轨贴图的平面上而钢轨中的网格在这个平面上的映射就成为了它对应的UV。而点类型和缩放类型则是均衡类型的扩展。缩放类型允许用户提供一个缩放值Scale这个缩放值控制了这张钢轨贴图的缩放因此可以被看作原先的钢轨贴图变成了钢轨贴图的一部分缩放大于1又或者变成了多张钢轨贴图首尾相接缩放小于1。点类型则是将整个三维的钢轨映射到了一个点因此也可看作特殊的缩放类型其缩放值为0。
@ -175,6 +225,10 @@ Face部分是指示上下顶面的使用情况而Side部分指示的是路面
缩放设置的轴向实际上并不能如此简单的解释它实际上是相对于物体的局部坐标系的XYZ但此处这么理解也并没有什么问题因为大部分钢轨不涉及较为复杂的旋转等操作因此其局部坐标系与全局坐标系是统一的。 缩放设置的轴向实际上并不能如此简单的解释它实际上是相对于物体的局部坐标系的XYZ但此处这么理解也并没有什么问题因为大部分钢轨不涉及较为复杂的旋转等操作因此其局部坐标系与全局坐标系是统一的。
点类型实际上与缩放设置为0的缩放类型在表现上其实并不相同。具体的实现可以通过阅读代码了解。但对于初学者来说这么理解就已经足够了。 点类型实际上与缩放设置为0的缩放类型在表现上其实并不相同。具体的实现可以通过阅读代码了解。但对于初学者来说这么理解就已经足够了。
### 更多类型钢轨的参数
放bug那张图
## <span id="jump-8">Blender - 添加机关</span> ## <span id="jump-8">Blender - 添加机关</span>
@ -187,13 +241,13 @@ Face部分是指示上下顶面的使用情况而Side部分指示的是路面
## <span id="jump-11">Virtools - 脚本</span> ## <span id="jump-11">Virtools - 脚本</span>
## <span id="jump-12">一些建模的经验公式</span> ## <span id="jump-12">Blender经验公式</span>
## <span id="jump-13">为什么Virtools里要这么做</span> ## <span id="jump-13">Virtools经验公式</span>
## <span id="jump-14">过时软件介绍</span> ## <span id="jump-14">过时软件与不适用软件介绍</span>
## <span id="jump-15">最新勘误</span> ## <span id="jump-15">最新勘误</span>