建筑构造器

简介

建筑构造器是一款让用户可以在引擎内以程序化方式创建和修改建筑物的工具。

你可以先选择想要的基础形状,然后通过“元素”切换区域,添加和配置各种模块化部件进行自定义。

此外,你还可以设置屋顶、更换材质,并探索其他有趣的功能。


工具窗口概览

工具窗口分为四个主要部分:

点击放大 点击放大

  • 形状类型
    选择用于开始建造的基础建筑形状。
  • 范围
    选择要进行更改的特定建筑部分。
  • 材质与UV
    为结构应用和调整材质。
  • 元素
    切换各类模块部件的开关并进行设置。
    本版本可用的模块化部件数量有限。

在窗口底部,列出了便于快速操作的可用键盘快捷键。


主要功能

形状类型

形状类型部分是用户主要的交互界面。它决定了用于开始建筑创建的默认基础形状,并提供多种自定义选项。

形状

用户可以选择六种主要形状:

  • 正方形
  • 六边形
  • 菱形
  • U形
  • T形
  • X形

使用方法

  1. 选择形状
    左键点击一种形状即可选择它。被选中的图标会高亮显示,表示当前处于激活状态。
  2. 放置建筑
    在地图视窗中左键点击一个位置以放置建筑。
    • 生成点
      建筑的左前角会以点击位置为起点生成。
  3. 默认尺寸
    生成的建筑物默认尺寸为10x10x5.7米。
    • 特性:
      2层楼、一组已放置的窗户、一个门,以及一个平屋顶。
墙体和屋顶是程序化生成的元素,其余部分为模块化网格(meshes)。

保存

保存按钮可以让用户将通过 建筑构造器 完成的工作保存为一个 .json 文件,该文件会被自动放置在当前关卡路径下自动生成的 …/bat/ 文件夹内。
当点击保存按钮时,会弹出一个窗口,提示用户为场景文件命名。
请注意,通过世界编辑器菜单 文件 > 保存关卡 并不会保存 建筑构造器 的编辑会话。

加载

加载按钮允许用户加载之前保存的 建筑构造器 .json 文件会话,并继续进行编辑。

会话的保存与加载

如果你正在编辑一个 建筑构造器 会话,并且希望加载另一个会话,请按照以下步骤操作,以避免数据丢失或产生其他问题:

  1. 保存当前场景

    • 在加载新会话之前,请确保保存当前的工作进度,以防止丢失数据。
  2. 清除当前会话

    • 按下 Ctrl + X 清空当前的编辑会话。
  3. 加载之前保存的会话

    • 保存并清除后,可以安全地加载需要的已保存会话。

导出

在 建筑范围 下,用户可以选择整个建筑并点击 导出(Export) 按钮,将建筑以 Collada (.dae) 文件格式保存。该文件可以在 Blender 或其他软件中打开,便于后续进一步的自定义或优化。

限制说明:

  • 为了能在 Blender 中打开该文件,导出时建筑不会包含材质贴图。
  • 多边形分布尚未针对游戏模型进行优化。

范围(Scope)

Scope(范围) 是用于控制建筑元素及参数更新的核心功能。每个范围有其专属参数,仅对其适用。

点击放大 点击放大

在了解不同范围之前,让我们先熟悉交互方式与常用功能。


交互方式

理解与建筑部件的交互方式非常重要。当你在场景中放置好建筑后,激活范围(Scope)选择的第一步是点击建筑的任意一面墙体。此操作将进入范围选择模式,并以黄色边框高亮所选的建筑部件。

点击放大 点击放大

通过选择范围,用户可以在建筑上直接修改对应的元素,相应参数也会开放以供调整。


通用操作

以下是所有范围下共享的通用控制方式。

拖动顶点

功能
通过拖动建筑的顶点来改变其形状。
用法
鼠标悬停在顶点上,点击并拖动以重新塑形。
实际变形效果依赖于当前选择的范围。将顶点移动至非90°角会极大改变建筑形状,部分功能在该初版中可能无法正常工作。

分割(Split)

功能
对墙体或屋顶进行细分,创建新的可选元素。
用法
按住 Alt 键,将鼠标悬停在墙体或屋顶生成预览分割线,然后左键点击完成分割。


多多边形选择

功能
同时选择多个建筑部件。
用法
在楼层、墙体或侧面范围下,按住 Ctrl 键并用鼠标左键点击多个目标即可多选。

一键清空(Wipe-out)

功能
删除场景中所有放置的建筑。
用法
按下 Ctrl + X
此操作不可撤销。请仅在确实需要清空场景时使用。

新建建筑

功能
使用上次选择的形状在场景中放置一个新建筑。
用法
在场景中按下 Ctrl + 。

建筑选择

功能
当场景中有多个建筑时,选中并修改指定的建筑。
用法
左键点击( )目标建筑的墙体以激活该建筑,后续所有更改都应用于被选中的建筑。

删除

功能
删除指定建筑或某一建筑楼层。
用法
按下 Delete 键

作用条件:

  • 处于“建筑”或“楼层”范围时:删除整个建筑或选中的楼层。
  • 处于其他范围时:无效果。

吸附(Snap)

功能
使用已有墙体作为吸附参照,实现拉伸/移动墙体或切割屋顶时的精准对齐。
用法
参见下方视频示例:

建筑范围(Building Scope)

选择此范围后,建筑范围中的参数影响整栋建筑的所有墙体,不包含屋顶。

参数说明:

X, Y, Z

功能
沿世界坐标轴移动整个建筑。
用法
输入数值以调整位置。

X/Y 缩放

功能
沿 X 或 Y 轴缩放建筑尺寸。
用法
拖动滑块调整比例,所有相关元素会自动更新。
当形变超过限制时,数值会重置为 1.0,这是因为保持复杂变换会导致较高的计算压力。

旋转

功能
围绕中心旋转整个建筑。
用法
调整旋转角度,所有应用元素将随之变化。
在高计算负载下,数值会被重置为 1.0,以保障性能。

楼层数

功能
增加或移除所选建筑的楼层。
用法
使用添加或移除楼层按钮。新加的楼层将复制下方楼层的结构。

地下室开关

功能
在地面层下方添加一个地下室。
用法
切换地下室选项。地下室作为特殊楼层处理。
行为
切换后,范围会自动切换至“楼层”。

楼层范围(Floor Scope)

选择此范围后,楼层范围中的参数仅影响所选楼层的所有墙体。

参数说明:

层高

功能
调整所选楼层的高度。
用法
输入数值设置期望高度。

拉伸/内缩

功能
整体拉伸或内缩该楼层。
用法
使用拉伸/内缩按钮修改楼层几何体。

旋转

功能
让楼层以自身中心为轴旋转。
用法
调整旋转数值,所有应用元素都会随之变化。

克隆

功能
复制所选楼层。
用法
选中楼层后点击 克隆 按钮,即可在其上方创建带有所有修改的新楼层。

墙体范围(Wall Scope)

选择该范围后,以下参数仅影响所选的墙体。

参数说明:

拉伸/内缩

功能
修改所选墙体的几何形状。
用法
通过拉伸/内缩滑块进行调整。
当一堵墙被拆分为多个部分时,每一部分都被当做单独的墙体处理。

侧墙范围

选择 侧墙范围 后,所有参数会整体作用于建筑物的侧墙。

参数说明:

拉伸/内缩

功能
修改整面侧墙的几何形状。
用法
使用拉伸/内缩滑块进行调整。
“拆分”功能会作用于整体侧墙,将其作为一组墙体处理。

顶部范围

顶部范围 是最复杂的,提供了丰富的功能和参数。该范围内的更改会影响建筑物最上方的顶面区域,即最后一层之上的部分。

目前,由于代码限制,夹层楼板会被当作屋顶处理。后续版本会修复该问题。

参数说明:

外沿

功能
控制屋顶边缘的延伸。
用法
调整外沿数值以延长或收缩屋檐边界。

厚度

功能
调整屋顶的厚度。
用法
输入数值或使用滑块进行调整。

屋脊高度

功能
设置屋顶最高点的高度。
用法
使用滑块调整高度。
不适用于平顶类型的屋顶。

旋转

功能
旋转屋顶。
用法
仅适用于斜屋顶(单坡、双坡)。

屋顶类型

  1. 平顶:
    一个简单的平面屋顶,用于覆盖整个建筑。
  2. 金字塔顶:
    金字塔形状的屋顶,支持多边形建筑。
  3. 单坡顶:
    单面倾斜的屋顶,适用于多边形建筑。
  4. 双坡顶(人字顶):
    经典的三角形屋顶,由两块斜面组成。

特殊切换项

屋脊
功能
为屋顶添加脊线。
并非所有屋顶形状都支持屋脊切换。
功能说明
平顶切换: 根据屋脊厚度让脊线顶部变平。

平顶切换 平顶切换屋脊厚度: 定义屋顶最短边上的屋脊平部分厚度。坡度由“屋脊高度”参数决定。 屋脊切换 屋脊切换
边框
功能
在屋顶底部边缘生成程序化边框网格,仅适用于平顶屋顶类型。
控制项
边框宽度: 调整边框宽度(相对于XY平面中点)。

边框高度: 调整边框高度(相对于Z轴中点)。

边框内/外: 控制边框是位于墙体内还是墙体外。

边框升降: 控制边框上升或下降。

材质与UV

本节在建筑自定义过程中被广泛使用,用于定义应用于建筑墙体和屋顶的材质。

材质

下拉菜单会列出可用的材质。材质窗口会根据当前选择的“作用范围”调整可选材质的列表。

  • 行为说明:
    • 若作用范围为建筑墙体,仅显示适用于墙体的材质。
    • 若作用范围为屋顶,仅显示适用于屋顶的材质。

UV与缩放

有三个参数可用于调整建筑贴图的UV坐标:

  1. UVu: 沿U轴移动UV贴图。
  2. UVv: 沿V轴移动UV贴图。
  3. 缩放: 根据当前作用范围调整UV贴图的缩放比例。

元素切换

元素切换 是建筑设计器中的常驻功能。元素指的是所有非程序化生成、但可按规则程序化放置在结构上的模块化建筑部件。

在所选作用范围内切换元素,会影响整个建筑的启用或关闭状态,该切换为全局开关。

工作流程示例

场景说明:
你有一个默认设置的方形建筑:2层楼,底层和第一层都有窗户,底层一侧有一扇门。你现在想把门移动到另一侧。

步骤如下:

  1. 选择墙体范围
    进入墙体作用范围以修改具体的墙体。
  2. 选择带有门的墙体
    点击当前带门的那面墙。
  3. 关闭门开关
    点击门的开关,将门从当前这面墙移除。此操作会关闭当前墙体上的门,但其他三面墙的状态不变。
  4. 选择目标墙面
    点击你想放置门的那面墙。
  5. 打开门开关
    点击门的开关,将门添加到新选择的墙面上。

元素选择说明

建筑中应用的所有元素都可以被选择。用户需要选择对应的元素,以访问它们的参数。下方列出了可用元素及其功能。


窗户

开启窗户元素或选择窗户模型后,用户可以调整窗户参数。

模型

功能
更改窗户模块类型。
用法
从下拉菜单中选择所需的窗户类型。

底部边距

功能
根据窗户模型的底部,调整窗户在Z轴上的位置。
默认
1米。

左侧边距

功能
从左侧调整窗户行的起始位置。
用法
调整此值可以影响建筑墙体上窗户的数量。

间距

功能
调整每两个窗户之间的距离。
用法
改变间距也会影响墙面上窗户的数量。

缩放

功能
调整窗户模型的缩放比例。
用法
通过缩放参数进行调整。

单元素选择

特殊功能

在墙体作用范围内,用户可通过左键点击窗户切换单个或多个窗口的选择。这使得可以将某一个窗户替换为另一种类型。


门

开启门元素或选择门模型后,用户可以调整门的相关参数。

模型

功能
更改门模块类型。
用法
从下拉菜单中选择所需的门类型。

位置

功能
将门移动到墙体的下一个位置,并自动调整其他元素顺序。
用法
通过“位置”参数进行调整。

底部边距

功能
以门模型底部为基准,调整门在 Z 轴上的高度。
用法
输入数值或通过滑块调节。

阳台

开启阳台元素或选择阳台模型后,用户可以调整阳台参数。

网格

功能
更改阳台模块类型。
用法
从下拉菜单中选择所需的阳台类型。

底部边距

功能
根据阳台网格的步行面,调整阳台在 Z 轴上的位置。
用法
输入数值或通过滑块调节。

缩放宽度

功能
调整阳台的宽度比例。
用法
通过缩放宽度参数进行调整。

阳台间距

功能
定义阳台网格的分布间距。
参数
左侧起始点: 设置第一个阳台网格距离墙体左侧的起点距离。

下一个间距 (1): 定义下一个可见网格前的空缺数量。

下一个间距 (2): 定义额外的空缺数量,从第一个间距值循环。

点击放大 点击放大


拐角

开启或选择拐角网格后,用户可以调整拐角参数。

网格

功能
更改拐角模块类型。
用法
从下拉菜单中选择所需的类型。

圈梁

开启或选择圈梁网格后,用户可以调整圈梁参数。

网格

功能
更改圈梁模块类型。
用法
从下拉菜单中选择所需类型。

底部边距

功能
根据圈梁网格的底部调整圈梁在 Z 轴上的位置。
用法
输入数值或通过滑块调节。

柱子

开启或选择柱子网格后,用户可以调整柱子参数。

网格

功能
更改柱子模块类型。
用法
从下拉菜单中选择所需类型。

间距

功能
从墙体中心均匀分布柱子。
用法
通过间距参数进行调整。
宽度对齐按钮
功能
将最外侧的柱子锁定到墙角。
用法
按下此按钮开启该功能。

进出距离

功能
向内或向外移动整组柱子。
用法
通过进出参数进行调整。

Z 跨度

功能
当开启地下室选项时,调整柱子底座高度以适配地形。
用法
输入数值或通过 Z 跨度参数进行调整。
Z 跨度的自动实时检测计算量较大,因此本版本中需要手动调整。

楼梯

开启楼梯选项或选择楼梯网格后,用户可以调整楼梯参数。

功能说明:

  • 楼梯开关 只有在已开启地下室选项时,才能在首层激活。

激活楼梯开关的操作流程:

  1. 进入建筑作用域
    选择“建筑作用域”以修改整体建筑参数。
  2. 开启地下室选项
    切换地下室开关以添加地下室。
  3. 进入墙体作用域(或楼层作用域,如果要将楼梯应用于该楼层所有已激活的门)
    根据需要添加楼梯的位置,切换至对应作用域。
  4. 选择门元素
    点击你希望添加楼梯的门元素。
  5. 激活楼梯开关
    楼梯开关会变为可用。选择该开关后,会自动调整地下室高度,以适配楼梯高度。

网格

功能
更改楼梯模块类型。
用法
从下拉菜单中选择所需类型。

常见问题与限制

建筑构造器(建筑设计器)是一款正在开发中的工具。由于其复杂性,首个版本中存在许多缺失功能及已知问题。
已知问题
  1. 整体稳定性
    1. 建筑构造器 仍在开发阶段,可能会出现未在此列出的各类 Bug,后续版本会持续修复。
  2. 性能
    1. 高层建筑:
      在配置较低的电脑上,创建超过7层的建筑可能会导致 FPS(帧率)下降。
    2. 多建筑类型:
      同时操作三种及三种以上的独立建筑类型也可能导致低配机器出现明显卡顿。
  3. 元素放置
    1. 意外的洞:
      由于程序生成算法精度问题,部分元素可能导致墙体出现意外空洞。可尝试重新缩放元素或更换网格类型进行修复。
  4. 复杂建筑形状
    1. 屋顶多边形问题:
      复杂建筑形状可能导致屋顶多边形结构异常、破损或重置。
  5. 屋顶系统
    1. 选项受限:
      屋顶系统当前自定义选项有限,部分形状和搭配可能无法正常工作。

更多需要注意的事项:


测试阶段与社区反馈

抢先体验工具

建筑构造器 工具目前以现有状态向社区开放,目的是收集宝贵的用户反馈。

您的使用体验和建议对于后续版本的优化与完善至关重要。


建筑持久化

无关卡内自动保存

通过 BAT 创建的建筑物不会自动保存在游戏关卡中。

如需保留您的成果,必须通过 建筑构造器 的保存按钮保存会话,或导出建筑网格。

导出流程
  • 切换到建筑作用域
  • 选择整个建筑
  • 点击导出按钮,将建筑保存为 Collada (.dae) 文件

给模组制作者的建议

  • 使用 BAT 进行原型设计:
    目前阶段,建议模组作者仅将 建筑构造器 用于快速创建建筑原型并探索各种建筑设计。
  • 导出与优化:
    如需进一步自定义建筑的网格,最佳做法是先导出,再在外部3D软件中进行必要的优化和调整。
  • 积极反馈建议:
    欢迎您分享使用体验,反馈Bug,提出改进建议,帮助我们在后续版本中持续优化 BAT 工具。

感谢您的耐心与反馈!我们会持续开发和完善 建筑构造器 工具。

上一次修订: 六月 22, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.