Skip to main content

星球生成

概述

本文档介绍了生成一个星球所涉及的相关功能,并展示了如何在引擎中创建一个星球。

星球数据结构

所生成的星球数据结构:

image-20230217104139022

星球生成工具

星球生成所包含的五个工具:

  • 体素材质(Voxel Material)
  • 体素对象(Voxel Object)
  • 体素对象生成器(Voxel Object Generator)
  • 体素生态(Voxel Ecology)
  • 体素地形(Voxel Terrain)

体素材质

创建材质

通过体素材质(Voxel Material)工具为星球创建地表材质。

在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素材质(Voxel Material),然后在弹出的窗口中输入名称,点击OK按钮完成创建体素材质文件(.vmtl)。

image-20230307155123637

image-20230307154946128

所创建的体素材质文件:

image-20230307155100142

双击该材质文件可打开该材质的编辑窗口。

2023-07-04_162408

材质属性

在材质编辑窗口的材质编辑(Edit Material)面板中可编辑该材质的相关属性。

image-20230307155624952

属性说明
着色器(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)插槽中。

image-20230703151727050

按照上述添加贴图的方法继续添加细节漫反射贴图(Detail Diffuse Map)

image-20230703151814135

更改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)值。

image-20230307155815235

效果如下图所示:

image-20230703142514221

添加凹凸效果。按照添加漫反射贴图(Diffuse Map)的方法添加法线贴图(Normal Map),然后勾选开启法线贴图(Enable Normal Map)

image-20230703142627794

添加细节金属度贴图(Detail Metallic Map),调整金属度(Metallic)粗糙度(Roughness)数值可改变地表材质的金属度和粗糙度。

2023-03-01_111510

添加凹凸细节。按照添加漫反射贴图(Diffuse Map)的方法添加细节浮雕贴图(Detail Relief Map),然后勾选开启浮雕贴图(Enable Relief Map),调节浮雕贴图高度缩放(Relief Map Height Scale)可以改变浮雕强度。

image-20230703142705312

点击 image-20230217170005306 按钮保存当前所编辑的材质。

体素对象

体素对象(Voxel Object)可用于创建体素对象生成器(Voxel Object Generator)时使用,所创建的体素对象将会自动存入对象库中。Flexi引擎目前提供了两种创建体素对象的方法。

XMOD文件转体素对象文件

项目(Project)面板中找到XMOD文件,右击打开快捷菜单,选择转换为同名体素对象(Convert To Voxel Object With The Same Name),此时会生成一个体素对象文件(.vobj)。

image-20230306155011707

image-20230306163525055

双击这个体素对象文件(.vobj)即可弹出该体素对象的编辑窗口。

image-20230306163543767

创建对象

也可在资源预览窗口中直接创建对象。在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素对象(Voxel Object),然后在弹出的窗口中输入名称,点击OK按钮后完成创建体素对象文件(.vobj)。

image-20230703155730910

image-20230703155857590

创建完成:

image-20230703155922939

双击该体素对象文件打开该对象编辑器(Object Editor)

image-20230703160045634

项目(Project)面板中将模型文件(.xmod)拖拽到对象编辑器(Object Editor)资源(Resource)插槽中,点击保存(Save)即可完成创建。

image-20230703162647667

标签编辑

在体素对象编辑窗口的对象编辑(Edit Object)面板中,点击 image-20230217183853532 按钮选择一个标签,或者点击“+”按钮添加一个新的标签,为该对象指定一个标签,后续在对象库中可根据标签筛选出该标签下的所有对象。

image-20230220142405536

标签相关操作:

image-20230220142644800

编号说明
1取消标签
2删除标签
3确认删除标签

对象属性

image-20230217184758645

设置项属性说明
内部属性(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)一致,并且二者在同一目录下时,对象生成器中的对象将会自动生成在该地表材质上。

2023-03-01_113455

image-20230703171750506

所创建的体素对象生成器文件:

image-20230703134558958

双击该对象生成器文件可打开该对象生成器的编辑窗口。

image-20230703144531264

对象生成器编辑

image-20230703144611681

编号名称说明
1菜单栏提供保存(Save),布局(Layout)、打开目录(Open Directory)和调试LOD(Debug LOD)功能。
2工具栏提供返回到对象生成器主窗口,保存、生成对象生成器,生成对象生成器文件缩略图的功能。
3预览窗口用于查看对象生成分布效果。
4对象库可从对象库中选择所需要添加的对象。
5对象生成器编辑(Edit Object Generator)面板
模板编辑(Edit Template)面板
在不同分布模板中添加对象,设置对象的分布比例。
用于控制生成对象的密度和所在级别。
模板编辑面板

引擎最初提供5个可编辑的默认分布模板,也可继续添加新的模板。

image-20230703144641071

点击 image-20230217142052575 按钮添加新的模板,在弹出的窗口中设置相关属性,点击OK按钮完成添加。

image-20230703144731858

模板属性:

属性说明
模板名称(Template Name)模板的名称。
LOD网格体随机生成的最大范围等级(名称末尾数字与LOD级数要保持一致)。
生成范围(Spawn Range)分布模板的区域范围。
频率(Frequency)生成频率。

依次点击工具(Tool) -> 调试LOD(Debug LOD)可以查看LOD分布情况。

image-20230703143802381

LOD分布显示效果如下图所示:

2023-03-02_111543

编号说明
1LOD0
2LOD1
3LOD2
4LOD3
5LOD4

LOD的显示范围和分布范围如下图:

2023-03-02LOD

对象筛选

在对象生成器中的对象库中也可根据标签来筛选对象,点击 image-20230306145433854,选择一个标签即可在对象库中筛选出该标签下的所有对象,方便后续找到想要的对象进行添加。

image-20230703143939603

对象生成

项目(Project)面板中,将体素材质拖入到预览(Preview)面板中的材质引用(MtlRef)下,点击生成(Generate)按钮,可以给地表指定材质。该材质仅做效果参考,对对象生成器本身并无影响。

image-20230703141852400

从对象库中,将对象拖入到对象生成器编辑(Edit Object Generator)面板中的分布模板(Distribution Template)下。

若对象库中没有自己想要的对象,可自行创建体素对象(Voxel Object)。相关内容和操作可参考本文档中的体素对象

image-20230703144224653

分布模板(Distribution Template)中可设置对象的生成比例,设置完成后点击生成(Generate)按钮,在预览窗口中可看到生成效果。

image-20230703144405212

体素生态

创建生态

通过体素生态(Voxel Ecology)工具为星球创建生态。

在资源预览窗口空白处右击打开快捷菜单,依次点击创建资源(Create Res) -> 体素(Voxel) -> 体素生态(Voxel Ecology),然后在弹出的窗口中输入名称,点击OK按钮完成创建体素生态文件(.veco)。

注意:当所创建的体素生态(Voxel Ecology)的名称与体素材质(Voxel Material)体素对象生成器(Voxel Object Generator)一致,并且都在同一目录下时,生态会自动匹配使用该材质和对象生成器。

image-20230703110852375

image-20230703111036970

所创建的体素生态文件:

image-20230703111152512

双击该生态文件可打开该生态的编辑窗口。

2023-07-05_143351

生态编辑

2023-07-05_143352

编号名称说明
1菜单栏提供保存(Save)和布局(Layout)功能。
2工具栏提供返回到生态编辑器窗口,保存、生成生态,生成生态文件缩略图和挖地功能。
3预览窗口用于查看所生成的生态。
4管理材质(Manage Material)面板
管理对象生成器(Manage Object Generator)面板
显示所有体素材质文件。
显示所有体素对象生成器文件。
5生态编辑(Edit Ecology)面板用于编辑生态的相关属性。
生态属性

2023-07-05_143353

属性说明
材质引用(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)的插槽中完成更换。

image-20230703112948859

双击材质引用(Material Reference)植被引用(Foliage Reference)下的插槽可直接进入到对应的材质编辑界面和对象生成器编辑界面。

image-20230703113035494

在生态中可进行挖地和填充地表。在管理对象生成器(Manage Object Generator)面板中,选择一个对象生成器拖入到生态编辑(Edit Ecology)面板地下生态名称(Underground Ecology Name)插槽中,根据需求修改相关地下材质属性(地下生态起始位置(Underground Ecology Start Position)地下生态混合(Underground Ecology Blend)地下生态结束位置(Underground Ecology End Position)),修改完相关地下材质属性,需在点击生成(Generate)按钮后,所修改的属性效果才会生效。然后点击工具栏中的 image-20230217160623644 按钮,在地表上左击可向下挖地(减少体素),Ctrl+左击可向上填充地表(增加体素),确认之后点击保存(Save) 即可。

2023-07-05_143354

体素地形

创建体素地形

通过体素地形(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)。

image-20230703152700062

image-20230306173951614

所创建的体素地形文件:

image-20230703152756623

双击该体素地形文件打开生成星球窗口。

2023-03-06_154106

编号名称说明
1菜单栏提供各项功能的入口,如保存(Save)、布局(Layout)等功能。
2工具栏详见工具栏部分。
3预览窗口用于预览星球地表和生态编辑后的效果。
4地表(Surface)面板
生态(Ecology)面板
编辑星球地表属性。
为星球添加生态。

工具栏

image-20230217165757328

图标说明
image-20230217165836668创建体素地形。
image-20230217165905788打开体素地形。
image-20230217165932968保存。
image-20230217170005306另存为。
image-20230217170026852生成地形。
修改属性后点击此按钮,星球会发生相应的改变,在预览窗口中可查看每一次生成后的效果。
image-20230217170117124可以查看星球的剖面信息。
image-20230217170134759随机生成一个星球。
image-20230217170153854生成体素地形文件缩略图。

地表面板

地表(Surface)面板中可编辑星球地表的相关属性。

image-20230307131850900

设置项属性说明
体素配置(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)范围,引擎将会自动完成生态在星球上的分布。

image-20230703150105750

编号名称说明
1筛选生态通过选择土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)等级在下方生态库中筛选符合条件的生态。
2生态库显示项目中所有自建的生态,也可显示当前项目中所有的默认生态。
3星球生态(Planetary Ecology)面板显示当前星球使用的所有生态,红色字体显示的生态为默认生态。
4生态(Ecology)面板设置星球上生态的土壤贫瘠度(Soil Infertility)、温度(Temperature)、湿度(Humidity)范围。

替换默认生态

勾选显示引擎资源(Show Engine Resource)按钮,即可显示引擎提供的53种默认生态。引擎会根据创建星球的参数,自动将默认生态(红色字体显示的为匹配后的默认生态)分布在星球上,默认生态位于引擎目录下,不可删除,但可以使用其他自建生态进行替换。

image-20230703150608830

将项目中的生态拖拽到默认生态(红色字体显示的为默认生态)上,即可完成替换默认生态。选中默认生态后,可在下方生态(Ecology)界面下的生态名称(GeoName)中查看该默认生态当前使用的生态路径。

image-20230630160214372

添加生态

将所要添加到星球上的体素生态(Voxel Material)拖入到星球生态(Planetary Ecology)面板中。

image-20230703113824569

拖入后:

image-20230703113944046

也可直接右击所要添加的生态,选择添加生态(Add Ecology)完成添加。

image-20230703151050206

生态(Ecology)面板中设置该生态的土壤贫瘠度(Soil Infertility)温度(Temperature)湿度(Humidity)范围。例如所添加的Test生态,土壤贫瘠,温度适中,湿度较大。

image-20230703131337862

设置完成后点击生成(Generate)按钮。

image-20230703151257190

多个生态效果:

image-20230703151157178

若要删除星球上不需要的生态,可在星球生态(Planetary Ecology)面板中右击所要删除的生态,选择删除生态(Delete Ecology),然后点击生成(Generate)按钮。

image-20230703151404637

如何创建星球

创建星环

按照用体素地形工具创建星球的方法来创建星环体素地形,初始数据类型(Init Data Type)选择星环(Planetary Ring)网格数据类型(Mesh Data Type)选择平滑(Smooth)

image-20230220131048922

创建完成:

image-20230217205419178

双击该体素地形文件打开编辑界面。星环半径需比星球半径大,增大椭圆环区域的长(Elliptical Torus Radius X)椭圆环区域的宽(Elliptical Torus Radius Z)的数值,同时也可增大椭圆环区域的粗(Elliptical Torus Pipe Radius X)椭圆环区域的厚(Elliptical Torus Pipe Radius Z)的数值。点击生成(Generate)按钮后进行保存。若需要为星环添加生态的话,可在生态(Ecology)面板中进行添加。

image-20230703151528434

将星球与星环置于关卡中

在组件编辑器中,依次点击菜单栏文件(File) -> 从模板新建关卡(New Level Form Template),在弹出的窗口中选择星球关卡模板,双击进入该关卡。

image-20230307130529944

image-20230217211605511

在资源预览窗口中,找到所创建的地形文件(星球),将voxel_manager.vter拖入关卡(Level)面板中。

2023-03-01_165820

拖入后可在关卡(Level)面板中看到星球,并在大纲(Hierarchy)面板中会出现一个体素地形对象和星球大气对象。

2023-03-01_171754

按照同样的方法将星环拖入到关卡(Level)面板中,然后在大纲(Hierarchy)面板中选中星环体素地形对象,然后在观察器(Inspector)面板的变换(Transform)属性中将星环的位置设置成与星球一致。

2023-03-01_173749

拉近摄像机可观察到星球上的生态细节。

image-20230220131716652