BallanceBlenderTutorial/main.md
2022-03-14 21:22:49 +08:00

209 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 适用于Blender的Ballance制图手册
<small>yyc12345入吧9周年&退吧版本</small>
## <span id="jump-1">写在前面</span>
### 作者想说的
我自认为Ballance已经是穷途末路强弩之末了无论人们再怎么去拯救它可能也无力回天了。我打开了使用Blender制图的门但是大家还是喜欢去3ds Max家使用那些陈旧专有的东西捡了西瓜丢了芝麻。
从各个地方来看Ballance都在被吞噬即使现在Ballance Mod Loader足够出色有一些颇有技术力的人仍然在开拓新世界但一个腐朽的架构已经无法支撑其上层的发展。因此我打算尽我最后的力量把Blender制图的一切介绍给大家。也许我能够把它写得很棒这一切值得么
### 此教程面向的人
* 有一定制图技术的人例如已经尝试过Virtools制图和3ds Max制图的人
* 会玩一点点Virtools的人但是还不知道怎么制图
* 具有**自主学习能力**的制图新手
### 此教程不适合的人
* 我要学制图,那你能帮帮我嘛
* 怎么没有隔壁Ballex那样的制图器
* 这东西怎么那么复杂
* 这好难啊
* 我看不懂英语,没有汉化版本么
* 怎么连3ds Max里的xx功能都没有太垃圾了
## <span id="jump-2">目录</span>
1. [写在前面](#jump-1)
1. [目录](#jump-2)
1. [在开始制图前](#jump-3)
1. [安装插件](#jump-4)
1. [关卡基本构造](#jump-5)
1. [Blender - 添加路面](#jump-6)
1. [Blender - 添加钢轨](#jump-7)
1. [Blender - 添加机关](#jump-8)
1. [Blender - 杂项](#jump-9)
1. [Virtools - 基本操作](#jump-10)
1. [Virtools - 脚本](#jump-11)
1. [一些建模的经验公式](#jump-12)
1. [为什么Virtools里要这么做](#jump-13)
1. [过时软件介绍](#jump-14)
1. [最新勘误](#jump-15)
1. [结语](#jump-16)
## <span id="jump-3">在开始制图前</span>
### 基本概念
在进行制图前我们需要对一些基本概念进行了解。首先Ballance是以Virtools 2.1为基础进行制作的而Virtools是一个引擎不是一个模型制作器这意味
* 如果想要制作Ballance可以读取的关卡最后的步骤一定是用Virtools处理成Ballance可接受的格式。
* 没法用Virtools制作新的模型。如果不使用任何其他的软件那么只能利用原版关卡的一些结构来制作新的关卡。
因此我们需要一个3D建模软件来为我们的关卡创造全新的模型。然后再将我们创建好的模型导入到Virtools中来制作关卡。然而Virtools 2.1是一个非常古老的版本现在根本没有它的可用版本我们已经咨询过Virtools的公司Dassault这意味着
* 我们只用利用更新的Virtools版本来进行地图制作Virtools 2.5, 3.0, 3.5。Virtools 4.0及以后的版本不可以用于地图制作。
* 可以导入到Virtools中的模型格式十分有限且体验也不是十分好经常会出现缺失东西的情况。
* 进一步限制了可用的3D建模软件因为我们需要将模型导入Virtools如果不能导入则此建模软件就不能使用。
目前大家都在使用一个Max2Virtools的3ds Max插件来进行制作这个插件可以将3D物体直接导出为Virtools原生的格式。Max2Virtools是发行Virtools的公司Dassault所制作的用于辅助Virtools使用的3ds Max插件因为可以直接安装在3ds Max上而且可以直接导出Virtools的默认文档格式因而在制图初期受到广大制作者青睐并在如今仍然在使用。以上就是你经常会在Ballance制图中听到的一些概念。
### 为什么选择Blender
3ds Max的价格令一般人望而却步最新版价格为1500美元/年Autodesk也采用了“软件即服务”的销售方式。但是Blender是一款不需要用户付费就可以合法使用、而且和3ds Max一样强大的建模软件但一直被忽略了。通过将Blender变成可以用于制图的软件可以彻底甩掉任何可能的法律责任。虽然我们已经非法使用了Virtools3ds Max可以用于制图的版本也有破解器可以用但是与其背负一个沉重的法律包袱不如去选择一个没有法律包袱的东西。相信它Blender并不比3ds Max差在某些方面来说它甚至更直观尤其是对于Ballance这种非常规则的模型的建立。如果你曾被Ballance的3ds Max制图视频中如同咒语和叠罗汉一般的修改器指令感到恐惧并希望寻求一个替代产品的话Blender将是你不二的选择。通过简单认识到计算机对于三维图形的表达形式可以简单理解为三角面理论上你就可以在Blender里捏出你想要的任何物体。
此外Blender的插件系统也非常地亲近用户选择了Python作为插件语言而不是像3ds Max那样还需要用C++配上专用的库才能编写插件这使得插件的迭代可以很快并且高级用户还可以自己定义方便自己操作的插件。来自开放世界的力量将会通过网络来指导你攻破操作软件时的每一个困惑之处。但需要注意这个教程并不会教授你如何对Blender进行基本操作只会在这里列出一些常用操作的方法和制作Ballance关卡所需要的技术其他技术还需要你自行参悟。
### Blender制图的运作
正如基本概念中所述我们使用Blender作为3D建模软件在最后处理的部分使用Virtools进行期间两者的文件交换由BMX文件于下文进行叙述和2个插件来承担它们分别是
* BallanceBlenderHelper也称BallanceBlenderPlugin
* BallanceVirtoolsHelper也称BallanceVirtoolsPlugin
#### BallanceBlenderHelper
BallanceBlenderHelper正如其名它是一个Blender插件它主要的功能是
* 导入导出BMX文件
* 快速插入一些Ballance中的常见机关路面和钢轨
* 提供一些Blender不提供隐藏比较深或更加贴合Ballance制图的操作
我们在Blender中主要的操作当然是建模建立属于我们自己的关卡模型而不是被动利用原有关卡的结构。当然制图技术发展至今我们也采取了更加方便的模式也就是3ds Max制图经常采用的模式在3D制图软件中一次性做好导出到Virtools然后做一些小处理仅针对普通地图对于需要依靠大量脚本操作的地图导出后还需要在Virtools里做很多工作。就可以完成地图的制作。
#### BallanceVirtoolsHelper
BallanceVirtoolsHelper是一个可以用于Virtools 3.5的插件,当然,也可以重新编译让它可以用于其他版本。它具有以下功能:
* 导入导出BMX文件
* 归组,材质和常见错误的修复
* 一些便捷小工具(例如切换编码等)
在Virtools中需要的操作并不多尤其是在地图测试的时候只有在地图最终发布时才需要借由chirs241097发明的地图内置脚本技术插入脚本执行。其余大多数情况只需要导入然后让插件自动处理一些事情即可。这些部分的操作将会在后文介绍此处仅仅是介绍一下。
### BMX文件
通常来说3D建模软件所拥有的功能以及其存档文件中存储的数据其内容远超Ballance所需过分的解读这些文件费时费力也不容易进行适配。相反一些通用文件交换格式支持的特性太少一些重要的Ballance地图数据无法被准确储存。因此一个为了Ballance地图制作的通用的特化的文件格式就此产生也就是BMX文件。它几乎包括了所有你会在Ballance地图编辑中会用到内容而不包含任何多余的内容。
此外BMX文件使用一个标准描述文档来描述自身的格式其独立于所有格式之外是Ballance团体自主可控的我们可以根据这个独立的标准为各个3D建模软件编写导入导出插件便可以让Ballance地图可以被任何3D软件所接受。达到了以一个文件格式适配所有3D软件的目标。举例如果有人写出了可以在3ds Max中导入导出BMX文件的插件那么Ballance地图可以在3ds MaxVirtools和Blender之间畅通无阻地进行转化。
然而就目前而言BMX只能被Virtools和Blender所接受其对应的导入导出插件在上文已叙述。如果你对编程很感兴趣并且愿意将BMX文件带到其它的平台上可以尝试自己编写对应的插件来让BMX可以做到更多。
## <span id="jump-4">安装插件</span>
## <span id="jump-5">关卡基本构造</span>
在最初的设计上Ballance本身并不支持用户自定义关卡我们能够玩上我们的自定义关卡是因为我们摸索出了游戏关卡的结构然后通过遵守和仿制这个结构然后替换游戏原本的关卡文件让游戏误以为它在读取原作者的关卡。正因为如此我们在制作一个关卡的时候有一些必须要遵守的东西例如设计规则等如果我们不遵守那么游戏很大概率会拒绝加载。
### 出生点,盘点,重生点与终点
出生点四个火焰和终点飞船是一个关卡必须的两个元素。作用于第一小节的重生点也是必须的通常情况下和出生点放在一起。此外根据之前制图教程的建议盘点两个火焰也至少需要有1个即至少需要两个小节尽管单小节的地图文件可以被游戏接受并加载运行但是一些人说这样做会有一些问题。
需要注意的是终点就是飞船本身。而出生点盘点仅仅是那几团火和通过一小节的判定点重生点也仅仅是球重生的位置其与下方可以与球进行碰撞的不动物体例如路面等没有任何关系这点与Ballex不同也是很多新制图人会搞混的东西。此外出生点盘点重生点彼此分离也就意味着小节的通过判定点和重生点可以不一样尽管它们基本上都在一起事实上也理应在一起这在一些地图主要是早期地图也有比较近代的地图中被用于远距离传送比如2010年代的开头。
### 不动物体
[路面](https://ballance.jxpxxzj.cn/wiki/%E8%B7%AF%E9%9D%A2)[木板](https://ballance.jxpxxzj.cn/wiki/%E6%9C%A8%E6%9D%BF)和[钢轨](https://ballance.jxpxxzj.cn/wiki/%E9%92%A2%E8%BD%A8),在游戏中被设定为不可动物体。这些不可动物体并不是必须的,你也可以创建一个没有任何不可动物体的关卡。
### 机关
[机关](https://ballance.jxpxxzj.cn/wiki/%E6%9C%BA%E5%85%B3)是指Ballance中出现的各类道具它们可以和玩家球产生互动在影响玩家球的同时玩家球也可以影响机关。同样机关也不是必须的。
### 装饰
[装饰](https://ballance.jxpxxzj.cn/wiki/%E8%A3%85%E9%A5%B0)不会与玩家球进行任何物理运算,如果使用一些作弊模式,那么球将会表现为直接穿过。通常来说,灯柱等都是如此,当然也有一些地图将灯柱布置在道路上并将其设定为不动物体。装饰也不是必须的,但通常而言,装饰可以让地图更美观,以及不会显得空荡,一般是制图最后修缮时才会涉及到装饰的添加。
### Stopper
[Stopper](https://ballance.jxpxxzj.cn/wiki/Stopper/zh)通常指T板推板附近与道路连接的小垫片。这些垫片只能与机关计算物理碰撞而不会与玩家计算物理碰撞如果玩家球触碰其效果和装饰一样。
### 互相转换
出生点盘点重生点终点以及机关这些都是游戏内置的东西不建议进行替换。而不动物体Stopper机关这三者可以被视为一个物体是否具有物理碰撞的3种状态可以根据需要通过归组的手法后文会介绍在这三者之间来回转换。举例钢轨可以被设定为Stopper然后只有道具球才可以行走灯柱可以被设定为不动物体让它阻碍玩家的通行。这三者需要结合起来进行记忆。
## <span id="jump-6">Blender - 添加路面</span>
路面是Ballance中最为重要的一种物体您可以在大多数关卡中见到它。本章节中的路面仅指代普通的路面对于类似于[Modul_15](https://ballance.jxpxxzj.cn/wiki/Modul_15)以及出生点盘点这种特殊路面,请参考添加机关章节。
路面的制作方法自自制地图创始以来就一直在被所有制图者进行研究目前主要有3种流派用原版路面或原版1x1路面做微分法的拼接法使用外部工具BMMaker或MapEditor进行预先绘制后导出为脚本批量生成以及直接建模的方法。三种方法中拼接法最简单但限制最多限制制图者的创造力。而外部工具由于其实现特性会出现生成时卡机制作后冗余顶点过多只能制作直来直去的路面的缺陷。只有直接建模法是Ballance路面制作的最终出路是最自由的最能发挥制图者创造天赋的方法也是我们需要关注和介绍的方法。而直接建模法最重要的两点根据我的经验则是生成对应形状以及贴图匹配。目前在Blender中对于路面建模的操作还是比较丰富的在BallanceBlenderHelper的加持下我们可以通过BallanceBlenderHelper内的BMERevenge模块批量生成较为规整的路块这些路块具有自定义程度高以及几乎没有冗余顶点的特点。同时BallanceBlenderHelper也支持对一部分直接建模物体进行快速材质贴图的方法。
### 使用BMERevenge添加路面
BMERevenge是内置于BallanceBlenderHelper的一个全新的路面生成模块是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)中,具有非常高的侧面的路面。
扩展Expand部分是指定了这个路面的延展方向。Expand mode指明了这个路面的延展模式。Freedom表示这个路面可以向2个方向自由延展因此会具有两个延展数值D1和D2Column则表示只能向单一方向延展只有一个延展数值D1而Static则表示这个物体只有这样一种大小不能做任何更改因此也不会有任何延展长度字段。Unit size指定的D1和D2的数值基于的单位是哪一种Small表示一个单位长度是2.5而Large则表示单位长度是5Ballance中1x1路块的大小是5x5。Expand mode下面的图形则指示了D1和D2分别是哪一个方向。
Face部分是指示上下顶面的使用情况而Side部分指示的是路面的四个表面的使用情况下方的图片表明了4个方向的真实位置。在取消勾选后对应面将不会生成。通常来说对于任意一种路面类型这部分的默认值适合大多数路面的生成除非您确实需要或不需要某个面否则一般不需要修改这个部分。
![](./imgs/zh-cn/bmerevenge_example.png)
!!! info "Ballance Map Editor"
Ballance Map Editor是一款老旧的基于Tilemap的Ballance路面创造软件我们已经不建议您使用这个软件因为其创建了大量无用顶点。相比较而言BMERevenge完美地解决了这个问题。如果您仍然需要使用这个软件或想了解这个软件请参见过时软件介绍章节。
## <span id="jump-7">Blender - 添加钢轨</span>
### 添加钢轨材质
在完成钢轨的构建后我们需要给钢轨添加对应的材质以及UV才能让钢轨具有正确的颜色。我们可以先选定钢轨然后通过`Ballance 3D - Create Rail UV`来为钢轨添加材质和UV。对话框中的材质Material选择钢轨材质即可。而对于类型Type则有3种类型分别是点Point均衡Uniform和缩放Scale。这三种模式对应了程序对UV的不同处理方式。由于Ballance对于游戏中的钢轨的视觉效果具有特殊的处理所以选择何种类型可能并不会对最后钢轨的呈现有什么影响。但是我们仍然建议您选择视觉上观看最好的模式您可以反复选择参数来观察结果以决定选择何种类型。通常来说一个好的钢轨在视觉上看来它的花纹要分布均匀但这也并非唯一标准。下面将会对这3中不同类型的具体处理方法进行讲解。
下图展示了三种类型的工作方式。首先讲解均衡类型。均衡类型会试图按照一个轴向Projection axis将物体套在整张钢轨贴图中并进行贴图视觉上来说就像是将3D的钢轨按一个轴向拍扁到钢轨贴图的平面上而钢轨中的网格在这个平面上的映射就成为了它对应的UV。而点类型和缩放类型则是均衡类型的扩展。缩放类型允许用户提供一个缩放值Scale这个缩放值控制了这张钢轨贴图的缩放因此可以被看作原先的钢轨贴图变成了钢轨贴图的一部分缩放大于1又或者变成了多张钢轨贴图首尾相接缩放小于1。点类型则是将整个三维的钢轨映射到了一个点因此也可看作特殊的缩放类型其缩放值为0。
![](./imgs/zh-cn/rail_uv_type.png)
!!! info "钢轨材质的来源"
如果您选择使用地图模板创建您的地图那么材质可以直接从文档中选中因为文档中已经具有钢轨的材质了。而如果您选择从一个空白文件开始创建地图那么您可能要先创建一个材质然后再回到此处为钢轨添加材质和UV。
!!! info "类型的实际情况"
缩放设置的轴向实际上并不能如此简单的解释它实际上是相对于物体的局部坐标系的XYZ但此处这么理解也并没有什么问题因为大部分钢轨不涉及较为复杂的旋转等操作因此其局部坐标系与全局坐标系是统一的。
点类型实际上与缩放设置为0的缩放类型在表现上其实并不相同。具体的实现可以通过阅读代码了解。但对于初学者来说这么理解就已经足够了。
## <span id="jump-8">Blender - 添加机关</span>
## <span id="jump-9">Blender - 杂项</span>
## <span id="jump-10">Virtools - 基本操作</span>
## <span id="jump-11">Virtools - 脚本</span>
## <span id="jump-12">一些建模的经验公式</span>
## <span id="jump-13">为什么Virtools里要这么做</span>
## <span id="jump-14">过时软件介绍</span>
## <span id="jump-15">最新勘误</span>
历代制图过程都是一个循序渐进的过程,在这个过程中,难免会有因为技术限制或错误理解而导致的制图规则上的错误,历代制图手册都有对上一版本的勘误,这里也仿照着之前的版本,根据最新的发现,来对之前的一些制图上的理解进行勘误。
### 影子坐标
## <span id="jump-16">结语</span>
现在踏入制图之人教程已告终但你仍未越过最后的门扉。若你理解制图的意义就上前来来做图做出一张真正的地图向大家证明你是最好的制图人。然后就去开创属于自己的制图旅程吧。我的记忆已经磨损了太多但我总还记得我也玩过Ballance。