404
+ +Page not found
+ + +diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..5894dbc --- /dev/null +++ b/404.html @@ -0,0 +1,163 @@ + + +
+ + + + +Page not found
+ + +Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+May Outdated
+This document has been translated from other languages and may not always be up to date.
+Welcome to the Ballance Blender Plugin, the user manual for the free and open source Ballance map creation suite.
+Ballance Blender Plugin (aka BBP) is a plugin that focuses on the creation of Ballance custom maps. It offers a wide range of features that can be used to create Ballance maps by anyone from novice to experienced mappers. BBP provides the ability to import and export formats used in Ballance maps, and a series of convenient features tailored to the creation of Ballance maps: for novice mappers, you can quickly assemble a map with prefabricated road blocks, and for the experienced mappers, the mapping tools needed to build complex structures are also provided.
+Compared to other mapping processes, the mapping process with Blender and BBP has unparalleled advantages. First of all, both Blender and BBP are free and open source, unlike 3ds Max and Virtools, which require payment. Secondly, Blender and BBP are still actively updated and therefore run perfectly on today's computer systems, whereas 3ds Max and Virtools only run on certain legacy versions or even 32-bit versions because Virtools is no longer updated, and because of this 3ds Max and Virtools can crash in a variety of ways on today's systems.
+Therefore, choosing Blender with BBP for mapping is not only choosing freedom and open source, but also choosing the easiest way of mapping in today's status quo.
+These are not all
+This manual only documents the relevant operations regarding this plugin and does not explain how to make a Ballance map here. For detailed information on how to make a Ballance map with Blender and BBP, please search for content on Bilibili or YouTube.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+Work in Progress
+This part of manual still work in progress.
+在3D视图中,点击Add - Floors
可展开添加机关菜单。菜单如下图所示。
点击菜单后可以在弹出的子菜单中查看所有受支持的路面类型。其名称和图标提示了它所要创建路面的样式与形状。
+BME是可扩展的
+BME的路面添加器是可扩展的,菜单中的每一个项实际上都由一组JSON数据描述。您可以阅读技术信息章节来了解我们是如何编写这些JSON的,甚至您还可以根据你的需求自行扩展BME可创建的路面种类。
+点击其中一个路面类型,将打开路面创建对话框,这里我们展示的是Normal Platform(平面平台),如下图所示。在对话框里我们可以配置这个路面类型的各种属性,例如长宽高等距离属性,面的显示与否的属性等,来定制它生成的几何模型,以使其符合我们的要求。
+ +在Normal Platform的对话框中,我们首先可以看到它要求我们提供路面的长度,宽度,这决定了我们平台的大小,下面还有对应的文字描述来帮助你理解这个属性具体是控制着什么。
+然后它还需要我们提供这个平台的高度,高度默认为5,即Ballance中默认的路面高度大小,小于5将创建类似“魔虬”地图中的薄路面,大于5将创建类似“魔脓空间站”中非常高的路面墙体。
+最后它指示我们需要配置这个路面哪些面需要显示。需要注意的是,Top和Bottom指的是沿高度方向(Z轴)的顶面和底面,而Front,Back,Left,Right则是以头顶朝向-X轴,眼睛朝向-Z轴俯视状态下的前后左右。您可能注意到这6个面按钮中间有一个透视的六面体,实际上这六个面的选项的位置与这个透视六面体的六个面的位置是一一对应的。
+每个路面类型,其配置的条目数是不同的,因此对于不同路面类型,需要根据配置的提示文本来了解对应配置具体是做什么的。一些路面类型所需要设置的条目可能很多,另一些则根本没有配置条目。
+路面类型配置的默认值被设置为创建此路面时最常用的值。每一次切换路面类型或重新创建时,都会将值重置为默认值。
+ +本页面将指导你编译插件以及分发它。
+BBP的Virtools文件原生导入导出功能依赖BMap以及其Python绑定PyBMap来实现。为了分发插件,我们需要首先编译BMap及其前置LibCmo。而在编译前,你需要先确认你需要的BMap版本。因为BBP并不总是使用最新的BMap,例如你正在编译一个旧版的BBP,其显然不可能依赖最新的BMap。BMap也在不断升级中,其提供的功能也在不断变化,不同版本的BMap是不兼容的。BBP通常会在发布时写明其所用的BMap版本,如果BBP没有指出,你可能需要寻找与BBP发布时最近的BMap版本来编译。
+在明确版本后,你需要访问LibCmo位于GitHub的存储库。然后克隆项目,使用Git命令转到对应版本(或者直接下载对应版本的源码)。然后按照LibCmo的编译手册编译得到BMap。在Windows上,你通常会得到BMap.dll
和BMap.pdb
这两个文件。而在Linux上,则会是BMap.so
。
然后我们需要配置PyBMap。PyBMap是随LibCmo一起提供的。请按照PyBMap的手册,将编译得到的二进制BMap库,和PyBMap结合在一起。即完成PyBMap配置。
+然后我们需要将配置好的PyBMap拷贝到本项目的bbp_ng/PyBMap
下即可完成此步。
BBP内置了一系列自定义图标,以及其组件BME需要的用于描述结构的JSON文件。通过批量生成缩略图和压缩JSON的操作,可以减小这些部分的大小,使得其适合在Blender中加载,也更方便分发。
+转到bbp_ng/tools
文件夹下,运行python3 build_icons.py
将批量生成缩略图(此功能需要PIL库,请提前通过pip安装)。其实际上是将bbp_ng/raw_icons
目录下的原始图片生成对应的缩略图并存储于bbp_ng/icons
文件夹下。运行python3 build_jsons.py
将压缩JSON。其实际上是将bbp_ng/raw_jsons
目录下的原始JSON文件读取,压缩,再写入到bbp_ng/jsons
文件夹下。
将bbp_ng
文件夹压缩成ZIP文件即可完成打包工作。需要注意的是下列文件或文件夹不应被打包:
bbp_ng/raw_icons
:原始图片文件夹。bbp_ng/raw_jsons
:原始JSON文件夹。bbp_ng/tools
:编译用工具。bbp_ng/.style.yapf
:代码风格描述文件bbp_ng/.gitignore
:gitignorebbp_ng/icons/.gitkeep
:文件夹占位符bbp_ng/jsons/.gitkeep
:文件夹占位符打包后的ZIP文件打开后如果有且只有bbp_ng
一个文件夹,则代表打包成功。切勿直接将bbp_ng
内部的文件 直接打包到ZIP文件中。
这样打包后的ZIP文件既可以直接通过Blender插件的安装功能直接安装,也可以解压在插件目录下完成安装。
+虽然本项目会利用GitHub Page功能提供帮助文档,但有时你可能需要提供帮助文档的离线版本,本节将会介绍如何生成离线版本的帮助文档。
+首先你需要通过pip安装mkdocs
和pymdown-extensions
。然后转到docs
文件夹下,运行mkdocs build --no-directory-urls
。运行命令后得到一个名为site
的文件夹,其中就是可以离线浏览的帮助文档。
在3D视图中,点击Add - Components
可展开添加机关菜单。菜单如下图左侧所示。
上图右侧则展示了一些机关添加的界面,会在后续依次介绍它们,右侧从上到下分别是:添加Checkpoint(检查点)、添加Nong Extra Point(脓分)、添加Nong Ventilator(脓风扇)、添加Ventilator Series(风扇阵列)、添加Sector Pair(盘点对)
+在添加机关菜单中,Basic Components
分类下的是普通机关的添加。对于大多数机关而言,添加机关需要指定其所属小节,表示这个机关只在这个小节中激活。然而有一些例外:
自动名称冲突检测
+一部分物体在一张Ballance地图中名称是唯一的,例如开头盘点与终点飞船有且只能有一个,小节检查点与复活点同一小节只能存在一个等。
+BBP在创建这些机关时提供了名称检测功能,如果名称已存在,会在创建时在下方用文字显示出来,以提醒用户不要创建重复的内容。如上文展示图右上角显示为例,其正在尝试添加一个已经存在的PC_TwoFlames并收到了警告。
+在添加机关菜单中,Nong Components
分类下的是脓机关的添加。我们只提供两类常用脓机关的添加:脓分和脓风扇。
脓分添加需要指定脓分的小节号和个数。并且会自动帮用户对脓分实现一个逐个旋转的效果,以让游戏内的脓分显示的更好看。
+脓风扇的添加同样要指定小节号和个数。不同的是我们提供了一些预设数值,这些预设数值构造的脓风扇可以恰好吹起木球或石球,如果你对这些预设数值不满意,仍可以自行输入数量。
+风扇阵列也可以
+你知道吗,在添加风扇阵列时将偏移设为0也可以实现脓风扇。这里的脓风扇创建只是提供了一些预设数值罢了。
+在添加机关菜单中,Series Components
分类下的是阵列机关的添加。我们只提供两类常用阵列机关的添加:浮板阵列和风扇阵列。
浮板阵列需要提供小节号和浮板个数,并且还可以自由调整相邻浮板之间的间距,默认间距取自游戏内。
+风扇阵列也需要提供小节号和风扇个数,然而它提供三维的偏移量,这样你就可以构建竖直的风扇阵列或水平的风扇阵列。默认偏移数值取自游戏内竖直风扇阵列的数值。
+在添加机关菜单中,Components Pair
分类下的是机关对的添加。目前只有一种机关对:盘点对可添加。
盘点对需要你输入一个小节号,它会为你自动生成盘点火与重生点机关对。例如输入1小节,则会自动生成4火焰盘点火和第1小节的重生点,输入2,则会生成第1小节检查点和第2小节重生点,以此类推。
+自动名称冲突检测
+与普通机关添加类似,盘点对的添加也有名称冲突检测功能。上文图中右下角为例,其显示第1小节的盘点对已经存在,不需要添加。
+必须先配置插件
+BBP插件的部分配置项与插件的使用密切相关,只有正确配置了BBP插件,才能够使用BBP插件的全部功能。
+无论是第一次安装还是更新,都要重新配置插件,以确保设置正确。
+开启Blender,选择Edit - Preferences
,在打开的窗口中转到Add-ons
选项卡,在Community
分类下找到BBP插件,名称为Object: Ballance Blender Plugin
。请确保其左侧的勾已被选中,代表插件已被启用。点击勾左侧的三角箭头展开插件详细信息,如图所示,进入配置面板。
BBP插件目前有2个设置需要配置。
+请填写为Ballance的Texture
目录,插件将从此目录下调用外置贴图文件(即Ballance原本带有的贴图文件)。点击右侧的文件夹按钮可以浏览文件夹并选择。
这是关乎BBP是否正常运行的关键,只有填写正确,BBP才不会在运行中出错。
+在导入导出BM文件时,处于具有此名称的集合中的物体将被强制指定为非Component。如果留空则表示不需要这个功能。此功能通常用于机关模型强制替换。
+暂不需填写此设置
+由于BBP自4.0版本起,支持对Virtools文件的原生导入导出,BM文件导入导出功能便不再使用。因此此字段现已无实际作用,无需填写。
+Ballance - Select by Virtools Group
提供了一种按照Virtools归组数据进行筛选的功能。
该功能首先有5种不同的选择策略,与Blender的选择方法完全匹配(开始、扩选、相减、反转、相交)。只需像Blender选择那样使用它。然后,选择你需要的组的名称,然后开始一次选择或筛选。
+关于模式选择
+如果可以,请尽可能使用相减或相交模式。因为这样可以避免分析过多的物体。例如先选定一个大致的范围,然后使用相交模式过滤,比直接使用开始模式效率更高。
+BBP插件在2个地方添加了为物体快速归组的功能。首先是物体上下文菜单:你可以选择一系列物体,然后右键,在物体上下文菜单中找到快速归组功能。其次是大纲视图中的物体菜单:你可以在大纲窗口中,右键选择的物体,找到快速归组功能。两者菜单如下图所示。
+ +把选择物体归入你选择的组。
+把选择物体从你选择的组中取消归组。
+清空选择物体的所有归组信息。执行前会让你确认以免误操作。
+ +这是实验性内容
+原生导入导出Virtools文档是BBP插件的试验性内容,它可能存在许多问题,请参阅报告问题章节来了解更多。当遇到问题时,请及时汇报。BBP插件的作者不对因BBP插件问题导致的任何后果负责。
+点击File - Import - Virtools File
可以导入Virtools文档。导入支持CMO,VMO,NMO文件。点击后会弹出文件打开界面,并在侧边栏展示导入设置。首先你需要选择导入的Virtools文档,然后在侧边栏配置导入设置,配置完导入设置后即可点击导入开始导入,并等待Blender下方提示导入完成即可。
Conflict Options(冲突解决选项)章节指示了当导入器遇到物体名称重复的情况时,该如何处理。分为4个等级,分别针对Object(物体),Mesh(网格),Material(材质),Texture(贴图)。处理方式则有2种:Rename(重命名)和Use Current(使用当前)。选择重命名后,当遇到重复名称时,将会自动为其添加名称后缀使其名称唯一化。而选择使用当前,则会忽略从文件中导入此项,转而使用Blender文档中已经存在的同名的项目。
+与Virtools冲突解决的不同
+相比较于在Virtools的冲突解决对话框,BBP插件提供的冲突解决选项不支持替换功能,同时其粒度也不支持精细到单个实例,只能针对一整个类型进行设定。因此你无法单独为每一个冲突的实例设置不同的冲突解决方案。但目前这种设置已经能满足绝大对数的使用场景了。
+冲突解决选项章节里的选项的默认值是通常导入时会选择的解决方案。当然针对特殊导入情况需要特殊设置,例如正在从外部导入一个从原版中导出的机关模型,则可能连材质选项都可以选择使用当前,而无需复制一份。正确使用冲突解决选项是制图经验所给予的,本手册不会对此进行教学。
+众所周知,Virtools使用基于系统的多字节字符编码来处理文档,因而很容易出现所谓乱码问题。Blender本身不会出现乱码问题,然而如果我们不能以正确的编码读取Virtools文档,则当Virtools文档被导入Blender时,其中存储的字符仍然可能会呈现乱码状态。Virtools Params(Virtools参数)章节的Encodings(编码)属性用于指定读取Virtools文档的编码。可以指定多个编码,多个编码之间用;
(分号)分隔。下面列出一些常用的编码:
编码属性非常重要,如果设置了错误的编码,导入Blender的各类物体的名称会出现不可认知的情况
+编码是一个平台相关的设定
+根据BBP的Virtools文档导入模块使用的底层库LibCmo的实现,编码属性是一个平台相关的设定。在Windows下,这里需要填写的是Windows代码页数字。而在其它操作系统下,LibCmo使用iconv进行字符编码解码,因此需要使用合法的iconv编码标识符。
+点击File - Export - Virtools File
可以导出Virtools文档。点击后会弹出文件打开界面,并在侧边栏展示导出设置。首先你需要选择导出的Virtools文档的位置,然后在侧边栏配置导出设置,配置完导出设置后即可点击导出开始导出,并等待Blender下方提示导出完成即可。
Export Target(导出目标)章节用于决定你需要将哪写物体导出到Virtools文档中。你可以选择导出一个集合或一个物体,并在下面选择对应的集合或物体。需要注意的是,选择集合的时候,会将内部集合中的物体也一起导出,即支持嵌套集合的导出。
+Virtools Params(Virtools参数)章节与导入Virtools文档中的类似。Encodings(编码)属性决定了导出Virtools文档时所用的编码。
+Global Texture Save Option(全局贴图保存选项)决定了那些设置了Use Global(使用全局设定)的贴图的真实保存方式。通常而言,设置为Raw Data(原始数据)则可以100%保证保存的Virtools文档可以包含正确贴图,但是其体积也可能会变大,设置为External(外部数据)则可以尽可能减少文件大小,但可能会出现导出的文档找不到贴图文件的问题。我们建议你在进行材质设置时就对每个材质单独指定应该如何保存,而不是依赖全局选项来设置。这个选项是给那些依赖全局贴图保存选项的旧地图的再编辑来使用的。还需要注意的是,尽管这个选项里有Use Global选项,但请 不要 选择,否则会导致错误,因为显然你不能让一个全局选项再去使用全局选项的设置。
+Use Compress(使用压缩)属性指定保存的文档是否压缩存储。压缩可以显著减少文档体积,且在现代计算机平台上,压缩所造成的性能损失几乎可以忽略不计。当选择使用压缩后,一个额外的Compress Level(压缩等级)属性将会显示,用于指定压缩的级别,数值越高,压缩率越大,文件越小。
+ +欢迎来到Ballance Blender Plugin,一个自由开源的Ballance地图创作套件的用户手册。
+Ballance Blender Plugin(后文简称BBP)是一款关注Ballance自制地图创建的插件。它提供了相当丰富的功能,从制图新手到老手,均可利用此插件创作Ballance自制地图。BBP提供了导入导出Ballance地图所用格式的功能,并为Ballance地图创作量身打造了一系列便利的功能:对于新手,可以借助预制路块快速拼接完成一张地图;对于老手,也提供了构建复杂结构所需的贴图工具。
+相比于其它制图流程,借助Blender与BBP的制图流程具有无可比拟的优势。首先Blender与BBP均是免费开源的,这与3ds Max及Virtools等需要付费的软件大不相同。其次,Blender与BBP仍处于活跃更新中,因而可以在当代的计算机系统上完美运行;而3ds Max与Virtools则由于Virtools不再更新,只能运行在某些特定的上古版本,甚至是只能以32位运行,也正因为如此,3ds Max与Virtools在当今系统上运行会出现各种各样的崩溃行为。
+因此,选择Blender配合BBP进行制图,不仅仅是选择了自由与开源,更是选择了当今现状下最轻松的制图道路。
+这些并不是全部
+本手册只记录有关此插件的相关操作,并不会在此说明如何制作一份Ballance地图。如需详细了解如何利用Blender和BBP制作Ballance地图,请在Bilibili或YouTube上搜索相关内容。
+BBP对Blender支持的原则是支持当前最新的 LTS 版本,在最新的LTS版本释出之后会花一些时间迁移插件。当前插件版本 4.0,基于Blender 3.6.x 版本。
+理论上而言,如果Blender没有做出重大改动,那么BBP可以在其它版本上正常运行。例如你可以尝试在Blender 4.0上运行基于Blender 3.6的BBP插件。但BBP的开发者不会处理仅在非LTS版本中才出现的Bug。在安装插件之前,请先选择适合的版本。
+如果你之前使用过BBP,那么你需要首先卸载它。旧版的BBP通常被安装在下列的位置中:
+Blender/3.6/scripts/addons/ballance_blender_plugin
Blender/3.6/scripts/addons_contrib/ballance_blender_plugin
Blender/3.6/scripts/addons/bbp_ng
你只需要删除这些文件夹(如果它们存在的话)即可完全卸载插件。路径中的Blender
指代你的Blender安装位置。路径中的3.6
是你安装的Blender的版本号,需要根据你安装的版本进行调整,本手册均以3.6
为例。
ballance_blender_plugin
和bbp_ng
ballance_blender_plugin
是旧版BBP插件(4.0版本前)的模块名,bbp_ng
是新版BBP插件(4.0版本后,包括4.0版本)的模块名。为了保证用户确实删除了旧版插件,所以同时提供了这两者。
addons
和addons_contrib
在Blender 3.6 LTS版本,即BBP 3.3版本之后,Blender不再支持Testing类型插件。因而导致安装Testing插件专用的addons_contrib
文件夹不再使用,插件需要被统一安装在addons
中。为了保证用户确实删除了旧版插件,所以同时提供了这两者。
你可以通过本工程的GitHub代码库的Release页面下载最新的插件。插件是以ZIP压缩包形式提供的。
+此外,你还可以在yyc12345提供的制图教程网盘中获得此插件:
+ +不要直接下载本仓库使用
+请不要直接下载本项目的代码库来进行使用。首先是因为最新的commit不能保证其是稳定可用的。其次是因为本项目中包含了一些需要编译的C++代码,必须经过编译才能使用。参见编译与分发插件了解更多。
+开启Blender,选择Edit - Preferences
,在打开的窗口中转到Add-ons
选项卡,点击Install...
按钮,选择刚刚下载完毕的ZIP压缩包,即可安装完成。若没有在列表中看到可选择刷新按钮或重启Blender。
你也可以选择手动安装插件(如果上述安装方法失败了的话),转到Blender/3.6/scripts/addons
,将下载好的ZIP压缩包内容解压到此文件夹下,启动Blender,即可在插件列表中找到BBP。
BBP插件位于Community
类别下,名称为Object: Ballance Blender Plugin
,找到后勾选名称左侧的勾即可启用插件。插件安装成功后的偏好设置页面如下图所示。
在 安装或更新 完插件后,请在使用前务必先配置插件,详情请参阅下一章节。
+ +Ballance - 3ds Max Align
提供了一种类似于3ds Max中对齐方式的对齐功能。
所谓传统对齐功能,是是将3ds Max中的对齐操作完美地在Blender中重新进行了实现。可以使得很多从3ds Max转来使用Blender的制图人可以更快地上手,并且提供了一些便捷的对齐操作。下图展示了正在运作的传统对齐。
+ +传统对齐支持将多个物体对一个物体的对齐,操作方法是先依次选中需要被对齐的物体,然后在最后选中对齐参考对象(也就是使其称为活动物体),然后点击Ballance - 3ds Max Align
,即可弹出传统对齐面板,之后便可开始对齐操作。
在面板中,Align Axis
指定了你要对齐的轴,此处可以多选以指定多个轴,不指定任何轴将无法进行对齐操作,因而也无法点击Apply
按钮。
Current Object
是对齐参考物体,也就是场景中的活动物体,通常也就是你选择的最后一个物体。在这个选项里指定你需要参考其什么数值进行对齐,分别有Min
(轴上最小值)、Center (Bounding Box)
(碰撞箱的中心)、Center (Axis)
(物体的原点)、Max
(轴上的最大值)可选。这些选项与3ds Max中的对齐选项是一致的。
Target Objects
是正在被对齐的物体,可能有很多个,在这个选项里也是指定你需要参考其什么数值进行对齐。选项与Current Object
含义一致。
Apply
按钮点击后将把当前页面的配置压入操作栈,并重置上面的设置,使得你可以开始新一轮对齐操作而无需再次执行传统对齐。操作栈中的操作个数在Apply
按钮下方显示。
Apply按钮做了什么
+了解这部分对制图没有用,除非你感兴趣,否则不需要阅读这个框里的内容。
+在设计上,Blender不支持所谓“在Operator内进行操作”,但是我们通过一些小把戏,模拟了一种类似于3ds Max中应用的效果。
+Apply按钮实际上是一个特殊显示的BoolProperty,通过监听其值变化事件,在避免递归调用的情况下,将当前设置记录在一个隐藏的CollectionProperty中,并重置自身数值和显示的属性,以达到“应用”的效果。Operator在执行过程中则是依次处理CollectionProperty中积攒的对齐要求。
+在大纲视图中,对任意集合右键,可以得到自动归组与重命名菜单。
+ +本插件目前支持两种命名标准。
+其一为技术信息章节已经阐述的制图链标准,在本插件中的名称为YYC Tools Chains
。
+其二为Imengyu/Ballance所用命名标准,在本插件中的名称为Imengyu Ballance
。
这些功能最终只会展示成功与否的一个概括性消息。如果你需要详细查看某个物体为什么不能转换,请点击Window - Toggle System Console
,插件在那里有更详细的输出。
根据当前物体的归组信息,为其重命名为合适的名称。
+这通常用在迁移原版地图的过程中。一些Ballance衍生程序没有Virtools组概念,因此需要依赖名称来取得归组信息。
在不同命名标准之间切换。
+通常用于在不同Ballance衍生程序中进行转换。
根据给定的命名标准,为物体自动填充归组信息。
+需要注意的是,原有的归组信息会被覆盖。
+在制图过程中,如果你遵守了某些命名标准,则此功能可以为你自动完成归组功能。
在3D视图中,点击Add - Components
可展开添加钢轨菜单。菜单如下图左侧所示。
上图右侧则展示了一些机关添加的界面,会在后续依次介绍它们,右侧从上到下分别是:添加Rail Section(钢轨截面),添加Straight Rail(直钢轨),添加Side Rail(侧轨),添加Arc Rail(圆弧轨),添加Spiral Rail(螺旋轨)。
+非标准数据的钢轨
+BBP的钢轨添加菜单是为新手玩家快速添加钢轨而设计的,并不是为老手添加钢轨而设计的。对于需要非标准数据的钢轨的情况,例如具有非标准间距或非标准截面的钢轨,你需要通过Blender自带的创建圆操作构建钢轨截面,然后通过挤出,桥接,又或者螺旋修改器生成整个钢轨。在这样的创作过程中,你可以随意控制每个步骤的所有参数,以满足你对钢轨参数的特殊需求。
+钢轨数据的来源
+钢轨添加菜单的所使用的钢轨各类参数来源于游戏中的实际测量和Ballance社区中多位制图玩家十几年来总结的经验数据。
+钢轨截面半径与轨距由多年制图经验总结和测量所得。侧轨倾斜数据来源BallanceBug计算。单双轨转换下沉数据来源失衡之梦计算。螺旋轨间距来自第九关和第十三关测量。
+在添加机关菜单中,Sections
分类下的是钢轨截面的添加。钢轨截面是钢轨的轮廓,钢轨截面的创建通常是各类异形钢轨的创建的开始步骤,例如通过放样,挤出等操作制作钢轨。
钢轨截面创建一个钢轨截面,你可以在面板中选择创建一个单轨或双轨截面。
+当创建单轨截面时,会自动将八边形的钢轨截面的平头朝上,双轨截面则不会。如果你需要修改这种行为,你需要在创建后进入编辑模式,手动旋转钢轨截面顶点使其钢轨截面的平头或尖头朝上。
+单双轨转换截面将创建一个适用于单双轨转换的钢轨截面。这个轨道截面的创建不需要指定任何参数。
+在添加机关菜单中,Straight Rails
分类下的是直线钢轨的添加。
直钢轨是一段直来直去的钢轨。创建直钢轨需要为其指定Length(长度)。你也可以选择创建直的双轨或单轨。
+当创建单轨时,与截面类似,会自动将钢轨截面的平头朝上,修改这一行为的操作则也是创建后进入编辑模式再旋转即可。
+直钢轨的创建还支持封盖属性,这些特性由位于Rail Cap(钢轨封盖)下的Start Cap(始端封盖)和End Cap(末端封盖)选项控制,勾选后对应端将进行封盖。封盖即为钢轨的端面自动补面,并正确处理其法线问题,这通常用于确保钢轨与其它路面或物体接触的部分的美观,钢轨与钢轨之间的连接端无需封盖。
+单双轨转换轨通常可被视为是Transition Section创建的进阶使用,将Transition Section创建的截面挤出并处理好法线问题即可得到此选项创建的结果。创建单双轨转换轨需要为其指定Length(长度),其也支持封盖属性。
+侧轨创建首先需要指定Side Type(侧轨类型)可以选择Normal(纸球木球用侧轨)或Stone Specific(石球专用侧轨)。纸球木球用侧轨就是通常意义上的侧轨,石球不可以通过。石球专用侧轨是倾斜度更大的侧轨,石球也可以通过,当然,纸球和木球也可以。
+除了侧轨类型外,侧轨创建也需要Length(长度)和封盖属性。
+在添加机关菜单中,Curve Rails
分类下的是曲线钢轨的添加。
圆弧轨首先需要指定Angle(角度)和Radius(半径),表示这个圆弧轨将会以多少的半径转过多少角度。通常来说,角度以90度,180度,270度比较常见,当然也可以指定任意度数。半径则通常按需调整。对于双轨圆弧轨,半径是圆弧轨旋转圆心到双轨截面两轨中心连线的中点的距离;对于单轨圆弧轨,半径是圆弧轨旋转中心到单轨截面的中心的距离。
+圆弧轨的Steps(步数),步数表示这个圆弧轨的分段数,数字越大,圆弧轨看起来越平滑,相对的,顶点也会更多,对存储空间和渲染的要求也越高,因此需要选择一个合理的数值。
+圆弧轨同样支持双轨单轨选择,可以创建单轨圆弧轨和双轨圆弧轨。也支持封盖属性。
+螺旋轨,也就是螺旋双轨,其与圆弧轨类似,需要指定Radius(半径),表示其旋转半径,但不需要指定角度,因为它总是旋转一圈。
+螺旋轨有Iterations(迭代)属性,表示这个螺旋轨将要螺旋上升几圈。Screw(螺距)属性则表示每一个迭代之间的距离是多少。
+螺旋轨也需要设置Steps(步数)属性,含义与圆弧轨一致。但需要注意的是步数指的是每一个迭代内的步数个数,并不是总体的步数。因此调整迭代属性的时候,不需要再调整步数属性。
+螺旋轨也有封盖属性。
+侧边螺旋轨,与螺旋轨类似,但是球是沿侧边滚动的,类似于侧轨。
+侧边螺旋轨没有螺距属性,因为侧边螺旋轨在设计上,相邻的旋进是共用一条边的,因此螺距是固定的。
+侧边螺旋轨设定中的Radius(半径),Iterations(迭代)和Steps(步数)属性,含义均与螺旋轨一致。螺旋轨也有封盖属性。
+ +BBP不是完美的,由于BBP的Virtools文件导入导出模块是由C++编写的,因此BBP比其他插件更容易出错,且出错的后果可能会更严重(包括但不限于内存泄漏,误删除用户文件(像少前2事件一样)等)。
+在Blender中,如果插件执行出错,你将会观察到:
+Window - Toggle System Console
打开控制台后,可以观察到Python的异常输出。对于BBP插件而言,如果你在Python异常输出中观察到类似于BMap operation failed
的字样,或者在Blender/3.6/scripts/addons/bbp_ng/PyBMap
文件夹下观察到了IronPad.log
文件,则说明BBP插件的由C++编写的BMap部分出错了,你需要立即保存你当前的Blender文档,并退出Blender。 因为此时插件已处于非正常状态,你不应继续任何操作。
如果并没有上述情况,那么这就只是普通的Python代码执行错误,不需要过度担心,但错误仍然是致命的,建议做完所有必要的操作后退出Blender并报告错误。
+如果你有GitHub账户,你可以在BBP的存储库的Issue页面中创建并汇报问题。
+如果做不到,则直接汇报给插件作者也是可以的。
+首先你需要详细描述你是如何出发这个错误的,这个错误有什么结果。如果可以上传导致错误的文档,请尽量上传(如果不方便公开发布,可以通过邮件等私有渠道发送给作者)。
+你还需要提供Blender控制台中输出的Python堆栈报告(使用Window - Toggle System Console
打开控制台)。如果你的错误是BMap部分的错误,你还需要提供Blender/3.6/scripts/addons/bbp_ng/PyBMap
文件夹下的IronPad.log
和IronPad.dmp
文件以方便开发者定位错误。
meshes
文件夹下的文件的格式:https://github.com/yyc12345/gist/blob/master/BMFileSpec/YYCToolsChainSpec_ZH.md本插件配合了fake-bpy-module
模块来实现类型提示以加快开发速度。本插件目前基于Blender 3.6,因此使用pip install fake-bpy-module-latest==20230627
来安装Blender的类型提示库。 这主要是因为fake-bpy-module
没有发布官方的适用于Blender 3.6的包,因此我只能通过选择最接近Blender 3.6版本发布时间的每日编译版本来安装它。
3D视图中的菜单Ballance - Rail UV
提供了给钢轨贴图的功能。
您需要先选择需要被贴图的钢轨(可以多选),然后再点击此菜单,即可开始进行钢轨贴图。然后你只需要选择钢轨所用的Material(材质)属性即可。此功能将清空选择物体的所有材质,并将各个面所用的材质全部指定为你所指定的材质。然后按照Ballance中对钢轨进行后处理的方式为你选中的物体设置其UV。因此,通过本操作的执行,可以使得钢轨具有和游戏内相同的外貌。
+钢轨UV其实并不重要
+事实上,所有归入Phys_FloorRails
组的物体均会在Ballance加载关卡时进行一个后处理。后处理方法的具体操作就是按照某个特定的映射函数重设这些物体的UV(Virtools中调用TT_ReflectionMapping
)。所以钢轨的UV实际上并不重要,因为进入游戏后Ballance会为你统一设置,即使你不设置任何UV数据给钢轨,进入游戏后钢轨的样子都是正确的。
因此,此功能通常应用于对那些不归入Phys_FloorRails
组,但仍希望其能显示钢轨材质外观的物体的UV进行设置。又或者用于在Blender中渲染Ballance地图预览图等。
沿边沿贴图是BBP插件的最重要的功能,最强大的功能,同时也是最难以理解的功能。它广泛应用于自定义结构或一行路面,木板的UV的设置。3D视图中的菜单Ballance - Flatten UV
提供的就是沿边沿贴图功能。它只能在 编辑模式 下工作,因此你需要进入编辑模式(并同时进入面选择模式,因为沿边沿贴图是按面操作的)才能使用它。
沿边沿贴图通常与选择循环面,选择最短路径等功能一起使用。你需要先选择一系列面,例如一系列连续的Ballance路面侧边,然后点击Ballance - Flatten UV
开始进行沿边沿贴图。
沿边沿贴图的配置界面如下图所示,左侧是Scale Size(缩放数值)模式,右侧是Ref. Point(参考点)模式,我们稍后会说明这两个模式的区别。
+ +沿边沿贴图顾名思义,其含义就是沿着某条边进行UV贴图。具体的操作就是利用线性代数的方法,使用过渡矩阵,将顶点的三维坐标转换到一个新的坐标系下。在这个新的坐标系中:
+建立完新坐标系并构建完过渡矩阵后并将每一个顶点都转换到新坐标系下后,我们便可丢弃Z分量,将XY映射到UV上,并同时将处于-U轴侧的顶点镜像到+U轴侧,这也是Flatten UV不支持凹多边形的原因。做镜像的原因是为了防止UV映射出错,例如上图中,路面侧边贴图的上沿花纹位于V轴,如果我们将上图中UV顶点沿V轴翻转(你可以试一试加深理解),则会导致最终贴图显示不符合我们预期,即Reference Edge指定的边并不显示路面侧边花纹。
+Reference Edge的实指
+Reference Edge实际上指代的就是那条需要被贴靠到V轴上的边的序号。又因为这条边具有方向性,同时也就决定了新坐标系中的原点。
+Flatten UV简单来说,就是让用户指定一条边,然后把它沿着UV的V轴贴上去。
+在确定好坐标系后,我们还需要知道这个UV贴图需要展的多开,具体来说就是这个UV贴图的缩放数值应该是多少。对于V轴方向,由于Ballance的贴图特性(Ballance贴图总是沿着V轴延伸,以及Ballance中的3D的5等价于UV中的1),我们可以知道这个UV:3D的关系是1:5。而对于U轴方向则无法确定,这也就是Scale Mode属性的作用,让用户决定U轴方向上的缩放。
+Scale Size(缩放数值)模式就是直接让用户指定这个缩放数值,例如默认值5代表着3D世界中的5等于UV世界中的1。Ref. Point(参考点)模式则允许用户指定面中某一个参考点的UV的U值,让插件自行推算其U轴上的缩放。例如我们将上图中的缩放数值模式切换成参考点模式,并指定Reference Point(参考点)为2,Reference Point UV(参考点UV)为1也可以贴上相同的贴图,我们来解释一下这里面的原理。首先Reference Point指定参考点,这个参考点是相对于Reference Edge指定的顶点,也就是参考系原点的偏移,因此在这里,Reference Edge为1,Reference Point为2,则实际上的参考点为顶点3。Reference Point UV指定了这个点的UV数值中U的数值为1,也就是可以看作强行把顶点3放置在了U轴为1的位置。BBP会根据这一点计算出对应的U轴缩放值,并应用到所有顶点上。
+缩放数值模式通常用于路面侧边贴图,因为这些面具有固定的U轴缩放数值。而参考点模式通常用于那些无法确定缩放数值(通常是由于模型变形导致缩放数值在标准缩放数值范围附近波动)的贴图,例如由放样生成的凹路面的上表面,如下图所示。我们能肯定凹路面的中心的UV的U一定是0.5,但是不方便确定其缩放数值,因为难以计算,所以我们只需要使用参考点模式即可。下图的上半展示了参考点模式下的贴图结果,下半部分则是缩放数值模式,可以观察到在缩放数值模式下,凹路面中心的UV并不是精准的0.5,这会导致在显示上凹路面的中心不够黑。而参考点模式则精准地将凹路面中心的UV设置为0.5。
+ +最后,Flatten Mode指定了展开模式。Raw表示完全不考虑面与面之间的联系,把每个面当作独立的内容来处理。Floor表示考虑V轴方向上相邻面的连续性,会尽可能将相邻的面使其在UV中也相邻,这样就可以避免在路面细分过多的情况下,使用Raw展开方式容易导致贴图在视觉上重复的问题。Floor展开方式常用在路面的贴图中,因此称为Floor。Wood与Floor类似,只是它不仅考虑V轴上的连续性,还会考虑U轴上的连续性,这通常用于凹木板,凸木板的贴图中,也是Wood的名称来源。
+下图展示了三种不同展开模式的UV贴图分布。最上面是Raw展开模式,可以看到每个面的Reference Edge都被展开在了UV坐标原点的位置。中间是Floor展开模式,可以看到BBP将一系列连续的面沿着V轴方向展开了,而不是像Raw展开模式那样全部都堆在原点。最下方则是Wood展开模式,正在展开一个凸木板,可以看到在V轴和U轴上都考虑了面的连续性。
+ +Floor和Wood展开模式失败了
+Floor和Wood相比Raw展开模式具有更多限制,它们只支持四边面,而且对建模的操作有很高要求,通常只有通过批量操作(例如细分,放样等)生成的几何结构才能被Floor和Wood正确识别。
+如果Floor和Wood展开模式失败了,且展开得到的贴图完全不可接受,请尝试使用更加规范地方式建模,或转为手动贴图。
+BBP插件为每一个Blender物体添加了新的属性,被称为Virtools Group。与Virtools中的组具有相同的功能。选择一个物体,在Object
属性面板可以找到Virtools Group
面板。
在Virtools Group
面板中,可以点击添加为物体归组。在点击添加按钮后,可以选择预定义,然后从所有合法的Ballance组名中选择一个添加。或选择自定义,然后输入你想要的组名添加。也可以点击删除按钮,删除选中的Virtools组。最后,可以通过点击垃圾桶按钮一次性删除这个物体的所有组数据(删除前会让你确认)。
BBP还在Blender的其它菜单提供了对Virtools组的访问,具体内容请参阅按组操作。
+插件为每一个Blender材质添加了新的属性,被称为Virtools Material。它在Virtools材质与Blender材质之间架起沟通的桥梁。转到Material
属性面板,选择一个材质,即可以找到Virtools Material
面板。
可以在Virtools Material
面板中设置材质属性,就像在Virtools中操作一般。Virtools Material
面板中所有的材质参数均为Virtools中材质参数的映射,将准确地反映到最后保存的Virtools文档中。
Virtools Material
面板提供了预设功能,点击顶部的Preset
按钮即可开始进行预设。预设功能允许用户使用一些预设的材质设置,例如路面顶面,侧面的材质数据等,方便使用。需要注意的是,使用预设不会影响材质的贴图选项,当应用预设后,你仍然需要手动设置材质的贴图。
Virtools Material
面板同样提供把Virtools Material
面板中的材质数据反应到Blender材质上的功能,以在Blender中获得可视的效果。点击顶部的Apply
按钮即可执行此功能。当你在Blender中保存Virtools文档时,Virtools文档中的材质数据将从Virtools Material
面板中指定的数值获取,而不会从Blender材质中获取。这意味一个正确的材质设置过程是:先在Virtools Material
面板中编辑材质参数,然后使用Apply
按钮将其反映到Blender材质上,而不是直接去编辑Blender材质。
Virtools Material
面板提供了材质修复功能,这个功能来源于Ballance Virtools Plugin。材质修复按钮位于Preset
按钮和Apply
按钮的右侧,是一个带有扳手图标的按钮。点击后需要再次确认才能使用,防止误操作。材质修复功能会根据当前材质引用的贴图文件的文件名判定它是哪一种类型的材质,再根据我们预设的修复设定(从游戏中获取)将其他参数修改得符合视觉要求。这通常用于一些游戏中看起来材质错误的物体的修复,例如发黑的Stopper等。
还有一个全局材质修复功能
+3D视图中,菜单Ballance - Fix Material
与材质修复功能类似,但其会修复当前文档内所有材质。除非你确定当前文档内所有材质都需要修复,否则不要使用这个功能,因为它可能会将一些原本特殊设置的,正确的材质设置回你不想要的通用数值。
全局材质修复功能点击后也需再次确认才能使用,以防止误操作。
+Virtools Material
面板中的Texture(贴图)属性不仅可以通过点击它来选择文档内的材质,还可以通过点击右侧的文件夹按钮打开贴图文件浏览器,直接从文件系统中选择你想要的贴图(比从Shading菜单中选取更加快速)。文件浏览器默认位于Ballance的Texture目录下,以方便Ballance材质的选取。
BBP插件为所有Blender贴图(实际上是Image)添加了新的属性,称为Virtools Texture。它在Virtools贴图与Blender图片之间架起联系。
+与Blender材质不同的是,由于Blender的实现原因,贴图没有单独的属性面板,因此我们只能在Virtools Material
面板中通过一种非直接的方式访问Virtools贴图属性。首先参照Virtools材质章节的说明找到Virtools Material
面板,然后在Virtools Material
面板中的材质插槽中选择一个贴图或打开一个贴图,就可以发现在材质的贴图属性下方额外显示了Virtools贴图属性,如下图高亮部分所示。
其中,Save Option表示贴图在Virtools中的存储方式,常见的存储方式有这几种:
+而Video Format表示贴图在Virtools中的渲染模式,常用的模式有这几种:
+BBP插件为所有Blender贴图(实际上是Image)添加了新的属性,称为Virtools Mesh。转到Data
属性面板,即可以找到Virtools Mesh
面板。
Virtools网格目前只是作为兼容来使用的。其只有Lit Mode一个属性可以设置。多数早期地图由于不知道如何正确设置材质,导致路面发黑,所以经常将Lit Mode设置为Prelit以让路面正常显示。此属性是为了兼容这种设计而存在的,用户通常无需设置此选项。
+ +