27 KiB
适用于Blender的Ballance制图手册
yyc12345入吧9周年&退吧版本
写在前面
作者想说的
目前的Ballance制图教程,基本都是基于3ds Max的,并且没有英文版本。这阻碍了更多人创作Ballance UGC内容。
因此我想在这里介绍一个全新的制图流程,使用Blender进行Ballance制图,并给出相应的英文教程,以惠及所有的Ballance玩家。
此教程面向的人
- 有一定制图技术的人(例如已经尝试过Virtools制图和3ds Max制图的人)
- 会玩一点点Virtools的人,但是还不知道怎么制图
- 具有自主学习能力的制图新手
此教程不适合的人
- 我要学制图,那你能帮帮我嘛
- 怎么没有隔壁Ballex那样的制图器?
- 这东西怎么那么复杂
- 这好难啊
- 我看不懂英语,没有汉化版本么
- 怎么连3ds Max里的xx功能都没有,太垃圾了
目录
- 写在前面
- 目录
- 在开始制图前
- 安装插件
- 关卡基本构造
- Blender - 添加路面
- Blender - 添加钢轨
- Blender - 添加机关
- Blender - 杂项
- Virtools - 基本操作
- Virtools - 脚本
- Blender经验公式
- Virtools经验公式
- 过时软件与不适用软件介绍
- 最新勘误
- 结语
在开始制图前
基本概念
在进行制图前,我们需要对一些基本概念进行了解。首先,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变成可以用于制图的软件,可以彻底甩掉任何可能的法律责任。虽然我们已经非法使用了Virtools,3ds 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 Max,Virtools和Blender之间畅通无阻地进行转化。
然而就目前而言,BMX只能被Virtools和Blender所接受,其对应的导入导出插件在上文已叙述。如果你对编程很感兴趣,并且愿意将BMX文件带到其它的平台上,可以尝试自己编写对应的插件,来让BMX可以做到更多。
安装插件
关卡基本构造
在最初的设计上,Ballance本身并不支持用户自定义关卡,我们能够玩上我们的自定义关卡,是因为我们摸索出了游戏关卡的结构,然后通过遵守和仿制这个结构,然后替换游戏原本的关卡文件,让游戏误以为它在读取原作者的关卡。正因为如此,我们在制作一个关卡的时候,有一些必须要遵守的东西,例如设计规则等,如果我们不遵守,那么游戏很大概率会拒绝加载。
出生点,盘点,重生点与终点
出生点(四个火焰)和终点(飞船)是一个关卡必须的两个元素。作用于第一小节的重生点也是必须的,通常情况下和出生点放在一起。此外,根据之前制图教程的建议,盘点(两个火焰)也至少需要有1个,即至少需要两个小节,尽管单小节的地图文件可以被游戏接受并加载运行,但是一些人说这样做会有一些问题。
需要注意的是,终点就是飞船本身。而出生点,盘点,仅仅是那几团火和通过一小节的判定点,重生点也仅仅是球重生的位置,其与下方可以与球进行碰撞的不动物体,例如路面等没有任何关系,这点与Ballex不同,也是很多新制图人会搞混的东西。此外,出生点,盘点,重生点彼此分离,也就意味着,小节的通过判定点和重生点可以不一样(尽管它们基本上都在一起,事实上也理应在一起),这在一些地图(主要是早期地图,也有比较近代的地图)中被用于远距离传送,比如2010年代的开头。
不动物体
路面,木板和钢轨,在游戏中被设定为不可动物体。这些不可动物体并不是必须的,你也可以创建一个没有任何不可动物体的关卡。
机关
机关是指Ballance中出现的各类道具,它们可以和玩家球产生互动,在影响玩家球的同时,玩家球也可以影响机关。同样,机关也不是必须的。
装饰
装饰不会与玩家球进行任何物理运算,如果使用一些作弊模式,那么球将会表现为直接穿过。通常来说,灯柱等都是如此,当然也有一些地图将灯柱布置在道路上并将其设定为不动物体。装饰也不是必须的,但通常而言,装饰可以让地图更美观,以及不会显得空荡,一般是制图最后修缮时才会涉及到装饰的添加。
Stopper
Stopper通常指T板,推板附近与道路连接的小垫片。这些垫片只能与机关计算物理碰撞,而不会与玩家计算物理碰撞,如果玩家球触碰,其效果和装饰一样。
互相转换
出生点,盘点,重生点,终点,以及机关,这些都是游戏内置的东西,不建议进行替换。而不动物体,Stopper,机关这三者,可以被视为一个物体是否具有物理碰撞的3种状态,可以根据需要,通过归组的手法(后文会介绍),在这三者之间来回转换。举例,钢轨可以被设定为Stopper,然后只有道具球才可以行走,灯柱可以被设定为不动物体,让它阻碍玩家的通行。这三者需要结合起来进行记忆。
Blender - 添加路面
路面是Ballance中最为重要的一种物体,您可以在大多数关卡中见到它。本章节中的路面仅指代普通的路面,对于类似于Modul_15以及出生点盘点这种特殊路面,请参考添加机关章节。
路面的制作方法自自制地图创始以来就一直在被所有制图者进行研究,目前主要有3种流派:
- 用原版路面或原版1x1路面做微分法的拼接法
- 使用外部工具(BMMaker或MapEditor)进行预先绘制后导出为脚本,批量生成
- 直接建模
三种方法中拼接法最简单,但限制最多,限制制图者的创造力。而外部工具由于其实现特性,会出现生成时卡机,制作后冗余顶点过多,只能制作直来直去的路面的缺陷。只有直接建模法是Ballance路面制作的最终出路,是最自由的,最能发挥制图者创造天赋的方法,也是我们需要关注和介绍的方法。
直接建模法最重要的两点,根据我的经验是:生成对应形状;以及贴图匹配。目前在Blender中对于路面建模的操作还是比较丰富的,在BallanceBlenderHelper的加持下,我们可以通过BallanceBlenderHelper内的BMERevenge模块批量生成较为规整的路块,这些路块具有自定义程度高以及几乎没有冗余顶点的特点。同时BallanceBlenderHelper也支持直接建模方法,并提供了进行快速材质贴图的功能。
使用BMERevenge添加路面
BMERevenge是内置于BallanceBlenderHelper的一个全新的路面生成模块,正如其名字,BMERevenge是Ballance Map Editor的上位替代,在实现Ballance Map Editor原有功能的情况下具有更多更好的特性。您可以在添加 - Floors
中立即添加BMERevenge所提供的任意一种路面。其中Basic floors是指构成路面的最基本模块,包括三种变球器,平凹转换路面,以及平路面和凹路面的最小单元。而Derived floor则是一系列基于Basic floor组合而成的组合路面,包括路面转角,路面,以及平台等多种非常便捷的路面类型。通常来说只需要根据自身需要来选择合适的路面点击,设定参数,点击确定即可生成。
下图展示了添加路面的参数设置页面,以及不同参数的生成对比。
Basic param部分是基础参数,类型(Type)表明了生成路面的类型,如果您在添加菜单中点错了按钮,也可以在这里切换成正确的路面。高度指定了生成的路面的高度,小于1的数值可以生成类似于魔虬中的薄路面。而大于1的数值则可以生成类似魔脓空间站中,具有非常高的侧面的路面。
扩展(Expand)部分是指定了这个路面的延展方向。Expand mode指明了这个路面的延展模式。Freedom表示这个路面可以向2个方向自由延展,因此会具有两个延展数值D1和D2;Column则表示只能向单一方向延展,只有一个延展数值D1;而Static则表示这个物体只有这样一种大小,不能做任何更改,因此也不会有任何延展长度字段。Unit size指定的D1和D2的数值基于的单位是哪一种,Small表示一个单位长度是2.5,而Large则表示单位长度是5(Ballance中1x1路块的大小是5x5)。Expand mode下面的图形则指示了D1和D2分别是哪一个方向。
Face部分是指示上下顶面的使用情况,而Side部分指示的是路面的四个表面的使用情况,下方的图片表明了4个方向的真实位置。在取消勾选后,对应面将不会生成。通常来说,对于任意一种路面类型,这部分的默认值适合大多数路面的生成,除非您确实需要或不需要某个面,否则一般不需要修改这个部分。
!!! info "Ballance Map Editor" Ballance Map Editor是一款老旧的,基于Tilemap的Ballance路面创造软件,我们已经不建议您使用这个软件,因为其创建了大量无用顶点。相比较而言,BMERevenge完美地解决了这个问题。如果您仍然需要使用这个软件,或想了解这个软件,请参见过时软件介绍章节。
直接建模添加路面
在本节中,我们将通过逐步介绍一个六边形平台的建造方法,来引导您熟悉直接建模添加路面的方法,并熟悉BallanceBlenderHelper中提供的快速材质贴图功能。
我们可以先通过一些基本图元的创建,来帮助我们更快地搭建起整个物体的框架。为了获得六边形,我们可以首先利用添加 - 网格 - 圆环
,然后将其顶点设置为6.然后我们假设我们的六边形平台的半径大约为20,因此需要将其半径设置为20。除此之外,我们还需要构造一个相同的,半径为22.5(20 + 2.5)的圆环,与半径20的圆环同平面共心放置。这么做是为了在平台边缘分割出一个2.5(单位路面大小5x5的一半)的边缘。虽然平台的上表面看起来是一个整体,但实际上其边缘的花纹和中心的图案分别来自不同的贴图,因此我们需要将它们分割到不同的面上来赋予不同的材质。这样一来,我们就有了两个6边形,我们暂且将半径20m的六边形称为内六边形,将半径为22.5的六边形称为外六边形。
然后我们需要选中这两个物体,右键选择合并(快捷键Ctrl + J
),现在这两个物体被合并了,我们可以在此基础上构建一些面。进入编辑模式(快捷键Tab
,退出编辑模式再按一下即可),选择顶点模式,选择内六边形的6个顶点,然后使用面 - 填充
(快捷键Alt + F
)。这样内部的7,8,9,10号面就填充完毕了。然后我们需要够造外围的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无法识别到来自物体的属性。
现在,我们将对上面所述路面的生成方式进行改进,我们将使用螺旋修改器来重新制作和上述路面一摸一样的路面,并且会做的更快更好。
!!! info "为什么我想不出来使用这种方式构建模型"
直接建模添加路面往往并不是对Ballance制图工具的考验,而是考验制图者对于该3D软件的熟悉程度。您对Blender越熟悉,对于构建自定义路面则会越得心应手。甚至在完全熟悉Blender后超越我以上提供的构建方法,以更快的速度构建出模型,并且不依赖BallanceBlenderHelper提供的贴图功能贴上正确的贴图。
对于刚开始使用Blender的新手而言,这很难做到,一个快速提升建模水准的方法是多看多练。我们在本制图文档中提供了许多不规整的模型的构建方法,您需要仔细学习其理念并举一反三。并对于别人地图中的一些奇异构型,需要时刻想着如何在Blender中更快地构建出相似的结构。相信通过如此学习,您会在Blender建模上取得更快的进步。
还有,每章节的练习也不要忘了做哦,对于提升您的水准也有帮助。
Blender - 添加钢轨
钢轨的本质
讲一下单双轨区别
添加单轨和双轨
添加螺旋钢轨
添加钢轨材质
在完成钢轨的构建后,我们需要给钢轨添加对应的材质以及UV才能让钢轨具有正确的颜色。我们可以先选定钢轨,然后通过Ballance - Create Rail UV
来为钢轨添加材质和UV。对话框中的材质(Material)选择钢轨材质即可。而对于类型(Type),则有3种类型,分别是点(Point),均衡(Uniform)和缩放(Scale)。这三种模式对应了程序对UV的不同处理方式。由于Ballance对于游戏中的钢轨的视觉效果具有特殊的处理,所以选择何种类型可能并不会对最后钢轨的呈现有什么影响。但是我们仍然建议您选择视觉上观看最好的模式,您可以反复选择参数来观察结果以决定选择何种类型。通常来说,一个好的钢轨,在视觉上看来它的花纹要分布均匀,但这也并非唯一标准。下面将会对这3中不同类型的具体处理方法进行讲解。
下图展示了三种类型的工作方式。首先讲解均衡类型。均衡类型会试图按照一个轴向(Projection axis),将物体套在整张钢轨贴图中并进行贴图,视觉上来说就像是将3D的钢轨按一个轴向拍扁到钢轨贴图的平面上,而钢轨中的网格在这个平面上的映射就成为了它对应的UV。而点类型和缩放类型则是均衡类型的扩展。缩放类型允许用户提供一个缩放值(Scale),这个缩放值控制了这张钢轨贴图的缩放,因此可以被看作原先的钢轨贴图变成了钢轨贴图的一部分(缩放大于1),又或者变成了多张钢轨贴图首尾相接(缩放小于1)。点类型则是将整个三维的钢轨映射到了一个点,因此也可看作特殊的缩放类型,其缩放值为0。
!!! info "钢轨材质的来源" 如果您选择使用地图模板创建您的地图,那么材质可以直接从文档中选中,因为文档中已经具有钢轨的材质了。而如果您选择从一个空白文件开始创建地图,那么您可能要先创建一个材质,然后再回到此处为钢轨添加材质和UV。
!!! info "类型的实际情况"
缩放设置的轴向实际上并不能如此简单的解释,它实际上是相对于物体的局部坐标系的XYZ,但此处这么理解也并没有什么问题,因为大部分钢轨不涉及较为复杂的旋转等操作,因此其局部坐标系与全局坐标系是统一的。
点类型实际上与缩放设置为0的缩放类型在表现上其实并不相同。具体的实现可以通过阅读代码了解。但对于初学者来说,这么理解就已经足够了。
更多类型钢轨的参数
放bug那张图
Blender - 添加机关
Blender - 杂项
Virtools - 基本操作
Virtools - 脚本
Blender经验公式
Virtools经验公式
过时软件与不适用软件介绍
最新勘误
历代制图过程都是一个循序渐进的过程,在这个过程中,难免会有因为技术限制或错误理解而导致的制图规则上的错误,历代制图手册都有对上一版本的勘误,这里也仿照着之前的版本,根据最新的发现,来对之前的一些制图上的理解进行勘误。
影子坐标
结语
现在,踏入制图之人,教程已告终,但你仍未越过最后的门扉。若你理解制图的意义,就上前来,来做图,做出一张真正的地图,向大家证明你是最好的制图人。然后,就去开创属于自己的制图旅程吧。我的记忆已经磨损了太多,但我总还记得,我也玩过Ballance。