星球生成
概述
本文档介绍了生成一个星球所涉及的相关功能,并展示了如何在引擎中创建一个星球。
星球数据结构
所生成的星球数据结构:
星球生成工具
星球生成所包含的五个工具:
- 体素材质(Voxel Material)
- 体素对象(Voxel Object)
- 体素对象生成器(Voxel Object Generator)
- 体素生态(Voxel Ecology)
- 体素地形(Voxel Terrain)
体素材质
创建材质
通过体素材质(Voxel Material)工具为星球创建地表材质。
在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素材质(Voxel Material),然后在弹出的窗口中输入名称,点击OK按钮完成创建体素材质文件(.vmtl)。
所创建的体素材质文件:
双击该材质文件可打开该材质的编辑窗口。
材质属性
在材质编辑窗口的材质编辑(Edit Material)面板中可编辑该材质的相关属性。
属性 | 说明 |
---|---|
着色器(Shader) | 该材质使用的渲染等级(越高则渲染精度越高)。 |
UV缩放(UV Scale) | 等比例缩放贴图UV。 |
硬度(Hardness) | 材质的坚硬程度,与游戏内采矿功能有关。 |
漫反射(Diffuse) | 漫反射的颜色。 |
漫反射贴图(Diffuse Map) | 材质表面原本的颜色和反射信息。 |
开启法线贴图(Enable Normal Map) | 使用法线贴图。 |
法线强度(Normal Intensity) | 材质的纹理细节度(越大则材质细节度越高)。 |
法线贴图(Normal Map) | 高模创建的贴图,用于在底模呈现更多表面凹凸层次细节。 |
细节UV缩放(Detail UV Scale) | 控制近处细节的材质UV的大小缩放。 |
细节漫反射图贴图(Detail Diffuse Map) | 近处细节材质表面原本的颜色和反射信息。 |
细节法线图(Detail Normal Map) | 高模创建的贴图,用于在近处细节的底模呈现更多表面凹凸层次细节。 |
金属度(Metallic) | 镜面反射与漫反射的光线占比,值限定在0-1,值越接近1越接近金属。 |
细节金属度贴图(Detail Metallic Map) | 影响近处细节处金属度、粗糙度和高光的混合贴图。 |
粗糙度(Roughness) | 材质表面的粗糙程度,值限定在0-1,值越小材质漫反射越明显,表面越光滑。 |
高光强度(Specular Level) | 高光强度(越高则该材质对光线的反射越明显)。 |
开启浮雕贴图(Enable Relief Map) | 开启浮雕贴图。 |
细节浮雕贴图(Detail Relief Map) | 通道中带有高度信息的贴图,它通过像素来定义模型表面的高度。 |
浮雕贴图高度缩放(Relief Map Height Scale) | 值越大,高度变化越大。 |
开启浮雕贴图自阴影(Enable Relief Map Self-Shadow) | 在关卡场景中开启浮雕贴图后生成高度所产生的阴影。 |
开启浮雕贴图深度修正(Enable Relief Map Depth Correct) | 在关卡场景中开启浮雕贴图的深度修正。 |
材质类别(Material Category) | 材质类别。 |
侧面材质(Box Side Material) | 方块体素的侧面材质。 |
底部材质(Box Bottom Material) | 方块体素的底面材质。 |
编辑材质
从项目(Project)面板中,将贴图文件(.tif/.dds/.basis/.png/.veco/.ico)拖拽到材质编辑(Edit Material)面板的漫反射贴图(Diffuse Map)插槽中。
按照上述添加贴图的方法继续添加细节漫反射贴图(Detail Diffuse Map)。
更改UV缩放(UV Scale)和细节UV缩放(Detail UV Scale)数值。在其下拉框中可选择已设定好的数值,也可以手动输入数值。
注意:UV缩放(UV Scale)的数值不超过1。星球对UV的计算方法和对象UV方法不同,星球材质UV计算方法为1/8、1/16、1/64、1/128、1/256 ,通过下拉框我们可以快速选择这些UV缩放(UV Scale)值。
效果如下图所示:
添加凹凸效果。按照添加漫反射贴图(Diffuse Map)的方法添加法线贴图(Normal Map),然后勾选开启法线贴图(Enable Normal Map)。
添加细节金属度贴图(Detail Metallic Map),调整金属度(Metallic)和粗糙度(Roughness)数值可改变地表材质的金属度和粗糙度。
添加凹凸细节。按照添加漫反射贴图(Diffuse Map)的方法添加细节浮雕贴图(Detail Relief Map),然后勾选开启浮雕贴图(Enable Relief Map),调节浮雕贴图高度缩放(Relief Map Height Scale)可以改变浮雕强度。
点击 按钮保存当前所编辑的材质。
体素对象
体素对象(Voxel Object)可用于创建体素对象生成器(Voxel Object Generator)时使用,所创建的体素对象将会自动存入对象库中。Flexi引擎目前提供了两种创建体素对象的方法。
XMOD文件转体素对象文件
在项目(Project)面板中找到XMOD文件,右击打开快捷菜单,选择转换为同名体素对象(Convert To Voxel Object With The Same Name),此时会生成一个体素对象文件(.vobj)。
双击这个体素对象文件(.vobj)即可弹出该体素对象的编辑窗口。
创建对象
也可在资源预览窗口中直接创建对象。在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素对象(Voxel Object),然后在弹出的窗口中输入名称,点击OK按钮后完成创建体素对象文件(.vobj)。
创建完成:
双击该体素对象文件打开该对象编辑器(Object Editor)。
从项目(Project)面板中将模型文件(.xmod)拖拽到对象编辑器(Object Editor)的资源(Resource)插槽中,点击保存(Save)即可完成创建。
标签编辑
在体素对象编辑窗口的对象编辑(Edit Object)面板中,点击 按钮选择一个标签,或者点击“+”按钮添加一个新的标签,为该对象指定一个标签,后续在对象库中可根据标签筛选出该标签下的所有对象。
标签相关操作:
编号 | 说明 |
---|---|
1 | 取消标签 |
2 | 删除标签 |
3 | 确认删除标签 |
对象属性
设置项 | 属性 | 说明 |
---|---|---|
内部属性(Internal Property) | 资源(Resource) | 选择资源。 |
剪裁半径(Clip Radius) | 剪裁半径。 | |
质量(Mass) | 质量。 | |
缩放X(Scale X) | X轴方向缩放。 | |
缩放Y(Scale Y) | Y轴方向缩放。 | |
缩放Z(Scale Z) | Z轴方向缩放。 | |
缩放扰动最小值(Scale Disturb Min) | 物件在随机生成后,体积最小变化的阈值。 | |
缩放扰动最大值(Scale Disturb MAX) | 物件在随机生成后,体积最大变化的阈值。 | |
法线方向(Normal Direction) | 决定该模型沿所在位置地面的法线方向生长的程度。 | |
角度范围最小值(Angle Range Min) | 物件在随机生成后,角度最小变化的阈值。 | |
角度范围最大值(Angle Range Max) | 物件在随机生成后,角度最大变化的阈值。 | |
体素占位(Voxels) | 体素占位点。 | |
物理类型(Physics Type) | 选择对象的物理类型。 | |
无阴影(No Shadow) | 取消对象阴影效果的显示。 | |
顶点色(Vertex Color) | 顶点色。 | |
需要回调(Need Callback) | 是否需要收到回调,用于实现逻辑功能如创建NPC触发器。 | |
仅服务器(Server Only) | 仅服务器读取,用于实现服务器逻辑功能。 | |
自定义属性(Custom Property) | 动作(Action) | 向数据块中加入关于动作的自定义属性。 |
体素对象生成器
创建对象生成器
通过体素对象生成器(Voxel Object Generator)工具为星球添加对象(例如植被),可自定义对象分布。
在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素对象生成器(Voxel Object Generator),然后在弹出的窗口中输入名称,点击OK按钮后完成创建体素对象生成器文件(.vog)。
注意:当所创建的体素对象生成器(Voxel Object Generator)的名称与体素材质(Voxel Material)一致,并且二者在同一目录下时,对象生成器中的对象将会自动生成在该地表材质上。
所创建的体素对象生成器文件:
双击该对象生成器文件可打开该对象生成器的编辑窗口。
对象生成器编辑
编号 | 名称 | 说明 |
---|---|---|
1 | 菜单栏 | 提供保存(Save),布局(Layout)、打开目录(Open Directory)和调试LOD(Debug LOD)功能。 |
2 | 工具栏 | 提供返回到对象生成器主窗口,保存、生成对象生成器,生成对象生成器文件缩略图的功能。 |
3 | 预览窗口 | 用于查看对象生成分布效果。 |
4 | 对象库 | 可从对象库中选择所需要添加的对象。 |
5 | 对象生成器编辑(Edit Object Generator)面板 模板编辑(Edit Template)面板 | 在不同分布模板中添加对象,设置对象的分布比例。 用于控制生成对象的密度和所在级别。 |
模板编辑面板
引擎最初提供5个可编辑的默认分布模板,也可继续添加新的模板。
点击 按钮添加新的模板,在弹出的窗口中设置相关属性,点击OK按钮完成添加。
模板属性:
属性 | 说明 |
---|---|
模板名称(Template Name) | 模板的名称。 |
LOD | 网格体随机生成的最大范围等级(名称末尾数字与LOD级数要保持一致)。 |
生成范围(Spawn Range) | 分布模板的区域范围。 |
频率(Frequency) | 生成频率。 |
依次点击工具(Tool) -> 调试LOD(Debug LOD)可以查看LOD分布情况。
LOD分布显示效果如下图所示:
编号 | 说明 |
---|---|
1 | LOD0 |
2 | LOD1 |
3 | LOD2 |
4 | LOD3 |
5 | LOD4 |
LOD的显示范围和分布范围如下图:
对象筛选
在对象生成器中的对象库中也可根据标签来筛选对象,点击 ,选择一个标签即可在对象库中筛选出该标签下的所有对象,方便后续找到想要的对象进行添加。
对象生成
从项目(Project)面板中,将体素材质拖入到预览(Preview)面板中的材质引用(MtlRef)下,点击生成(Generate)按钮,可以给地表指定材质。该材质仅做效果参考,对对象生成器本身并无影响。
从对象库中,将对象拖入到对象生成器编辑(Edit Object Generator)面板中的分布模板(Distribution Template)下。
若对象库中没有自己想要的对象,可自行创建体素对象(Voxel Object)。相关内容和操作可参考本文档中的体素对象。
在分布模板(Distribution Template)中可设置对象的生成比例,设置完成后点击生成(Generate)按钮,在预览窗口中可看到生成效果。
体素生态
创建生态
通过体素生态(Voxel Ecology)工具为星球创建生态。
在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素生态(Voxel Ecology),然后在弹出的窗口中输入名称,点击OK按钮完成创建体素生态文件(.veco)。
注意:当所创建的体素生态(Voxel Ecology)的名称与体素材质(Voxel Material)、体素对象生成器(Voxel Object Generator)一致,并且都在同一目录下时,生态会自动匹配使用该材质和对象生成器。
所创建的体素生态文件:
双击该生态文件可打开该生态的编辑窗口。
生态编辑
编号 | 名称 | 说明 |
---|---|---|
1 | 菜单栏 | 提供保存(Save)和布局(Layout)功能。 |
2 | 工具栏 | 提供返回到生态编辑器窗口,保存、生成生态,生成生态文件缩略图和挖地功能。 |
3 | 预览窗口 | 用于查看所生成的生态。 |
4 | 管理材质(Manage Material)面板 管理对象生成器(Manage Object Generator)面板 | 显示所有体素材质文件。 显示所有体素对象生成器文件。 |
5 | 生态编辑(Edit Ecology)面板 | 用于编辑生态的相关属性。 |
生态属性
属性 | 说明 |
---|---|
材质引用(Material Reference) | 选择生态的地表材质。 |
植被引用(Foliage Reference) | 选择生态的对象生成器。 |
土壤贫瘠度(Soil Infertility) | 根据符合所选湿度与温度在星球上的区域,控制该生态种类在此区域的占比。 |
温度(Temperature) | 根据温度筛选材质和对象生成器。 |
湿度(Humidity) | 根据湿度筛选材质和对象生成器。 |
地下生态起始位置(Underground Ecology Start Position) | 地下生态的起始位置。 |
地下生态混合(Underground Ecology Blend) | 影响原地表生态与地下生态的混合关系。 |
地下生态结束位置(Underground Ecology End Position) | 地下生态的结束位置。 |
地下生态名称(Underground Ecology Name) | 地下生态的名称。 |
除了可以通过在生态编辑(Edit Ecology)面板的材质引用(Material Reference)和植被引用(Foliage Reference)中修改该生态的材质和对象生成器之外,还可以从管理材质(Manage Material)和管理对象生成器(Manage Object Generator)中将材质和对象生成器拖拽到材质引用(Material Reference)和植被引用(Foliage Reference)的插槽中完成更换。
双击材质引用(Material Reference)和植被引用(Foliage Reference)下的插槽可直接进入到对应的材质编辑界面和对象生成器编辑界面。
在生态中可进行挖地和填充地表。在管理对象生成器(Manage Object Generator)面板中,选择一个对象生成器拖入到生态编辑(Edit Ecology)面板地下生态名称(Underground Ecology Name)插槽中,根据需求修改相关地下材质属性(地下生态起始位置(Underground Ecology Start Position)、地下生态混合(Underground Ecology Blend)和地下生态结束位置(Underground Ecology End Position)),修改完相关地下材质属性,需在点击生成(Generate)按钮后,所修改的属性效果才会生效。然后点击工具栏中的 按钮,在地表上左击可向下挖地(减少体素),Ctrl+左击可向上填充地表(增加体素),确认之后点击保存(Save) 即可。
体素地形
创建体素地形
通过体素地形(Voxel Terrain)工具创建星球,并对其地表和生态进行编辑。星球类型有球形(Sphere)、平直地形(Flat Terrain)、方块(Cube)、星环(Planetary Ring)和数学表达式(Math Expression)。
在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素地形(Voxel Terrain),然后在弹出的窗口中选择初始数据类型(Init Data Type)和网格数据类型(Mesh Data Type),并输入地形名称(Terrain Name),点击OK按钮完成创建体素地形文件(.vter)。
所创建的体素地形文件:
双击该体素地形文件打开生成星球窗口。
编号 | 名称 | 说明 |
---|---|---|
1 | 菜单栏 | 提供各项功能的入口,如保存(Save)、布局(Layout)等功能。 |
2 | 工具栏 | 详见工具栏部分。 |
3 | 预览窗口 | 用于预览星球地表和生态编辑后的效果。 |
4 | 地表(Surface)面板 生态(Ecology)面板 | 编辑星球地表属性。 为星球添加生态。 |
工具栏
图标 | 说明 |
---|---|
创建体素地形。 | |
打开体素地形。 | |
保存。 | |
另存为。 | |
生成地形。 修改属性后点击此按钮,星球会发生相应的改变,在预览窗口中可查看每一次生成后的效果。 | |
可以查看星球的剖面信息。 | |
随机生成一个星球。 | |
生成体素地形文件缩略图。 |
地表面板
在地表(Surface)面板中可编辑星球地表的相关属性。
设置项 | 属性 | 说明 |
---|---|---|
体素配置(Voxel Config) | 星球半径(Planet Radius) | 星球的半径。 |
振幅(Amplitude) | 地形的高低起伏。 | |
噪声频率(Noise Frequency) | 一定范围内山脉的密集度。 | |
开启海洋(Enable The Sea) | 该星球是否存在海洋。 | |
海洋高度(Sea Height) | 海洋的高度。 | |
海洋计数(Ocean Statistics) | 海洋与陆地的比例。 | |
远景海洋色(Distant Sea Color) | 远景下海洋的颜色。 | |
高级(Advanced) | 地貌类型(Topography Type) | 控制星球的地貌特征。 |
LOD最大等级(Max LOD Level) | 最大LOD层级数。 | |
生态类型(Geological Ecology Type) | 地质生态类型(e.g. Cube是由土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity),三个维度生成的立方体)。 | |
板块类型(Plate Type) | 板块类型。 | |
板块数量(Plate Count) | 板块的数量。 | |
板块随机种子(Plate Random Seed) | 用来生成的各板块控制点的位置。 | |
初始数据类型(Init Data Type) | 体素场景类型。 | |
网格数据类型(Mesh Data Type) | 网格数据类型。 | |
冰点温度(Freezing Point Temperature) | 控制生态、山峰或海水等是否被冰冻(e.g. 若海洋的温度小于该值则变成冰河)。 |
生态面板
在生态(Ecology)面板中可为星球添加生态,根据所设置的生态土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)范围,引擎将会自动完成生态在星球上的分布。
编号 | 名称 | 说明 |
---|---|---|
1 | 筛选生态 | 通过选择土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)等级在下方生态库中筛选符合条件的生态。 |
2 | 生态库 | 显示项目中所有自建的生态,也可显示当前项目中所有的默认生态。 |
3 | 星球生态(Planetary Ecology)面板 | 显示当前星球使用的所有生态,红色字体显示的生态为默认生态。 |
4 | 生态(Ecology)面板 | 设置星球上生态的土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)范围。 |
替换默认生态
勾选显示引擎资源(Show Engine Resource)按钮,即可显示引擎提供的53种默认生态。引擎会根据创建星球的参数,自动将默认生态(红色字体显示的为匹配后的默认生态)分布在星球上,默认生态位于引擎目录下,不可删除,但可以使用其他自建生态进行替换。
将项目中的生态拖拽到默认生态(红色字体显示的为默认生态)上,即可完成替换默认生态。选中默认生态后,可在下方生态(Ecology)界面下的生态名称(GeoName)中查看该默认生态当前使用的生态路径。
添加生态
将所要添加到星球上的体素生态(Voxel Material)拖入到星球生态(Planetary Ecology)面板中。
拖入后:
也可直接右击所要添加的生态,选择添加生态(Add Ecology)完成添加。
在生态(Ecology)面板中设置该生态的土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)范围。例如所添加的Test生态,土壤贫瘠,温度适中,湿度较大。
设置完成后点击生成(Generate)按钮。
多个生态效果:
若要删除星球上不需要的生态,可在星球生态(Planetary Ecology)面板中右击所要删除的生态,选择删除生态(Delete Ecology),然后点击生成(Generate)按钮。
如何创建星球
创建星环
按照用体素地形工具创建星球的方法来创建星环体素地形,初始数据类型(Init Data Type)选择星环(Planetary Ring),网格数据类型(Mesh Data Type)选择平滑(Smooth)。
创建完成:
双击该体素地形文件打开编辑界面。星环半径需比星球半径大,增大椭圆环区域的长(Elliptical Torus Radius X)和椭圆环区域的宽(Elliptical Torus Radius Z)的数值,同时也可增大椭圆环区域的粗(Elliptical Torus Pipe Radius X)和椭圆环区域的厚(Elliptical Torus Pipe Radius Z)的数值。点击生成(Generate)按钮后进行保存。若需要为星环添加生态的话,可在生态(Ecology)面板中进行添加。
将星球与星环置于关卡中
在组件编辑器中,依次点击菜单栏文件(File) -> 从模板新建关卡(New Level Form Template),在弹出的窗口中选择星球关卡模板,双击进入该关卡。
在资源预览窗口中,找到所创建的地形文件(星球),将voxel_manager.vter拖入关卡(Level)面板中。
拖入后可在关卡(Level)面板中看到星球,并在大纲(Hierarchy)面板中会出现一个体素地形对象和星球大气对象。
按照同样的方法将星环拖入到关卡(Level)面板中,然后在大纲(Hierarchy)面板中选中星环体素地形对象,然后在观察器(Inspector)面板的变换(Transform)属性中将星环的位置设置成与星球一致。
拉近摄像机可观察到星球上的生态细节。