世界属性
0.1. 世界属性
世界属性包含了物理相关的数据,粒子特效,阴影等相关的数据。
0.1.1. 世界全局参数
- 覆盖世界重力: 世界中刚体是否附加重力。
- 全局风向: 世界中模拟的风向, 如果不需要模拟物理则不需要设置。
- 全局风速: 世界中模拟的风速, 如果不需要模拟物理则不需要设置。
- 渲染物理调试构型: 用于显示物理刚体以及关节,对骨骼物体有效。
- World Tick Substepping: 在一些帧率较低的场景下,模拟物理的帧率需要和场景帧率不同,打开这个属性将进行分步tick。
- World Tick Max Step Time: 分步Tick的最大时间
- Order Independent Translucency: 顺序无关的半透明渲染(比较费性能,不推荐使用)
- OIT Layer Num: 顺序无关的半透明渲染层数
- BlendShap Normal Method:
0.2. 碰撞/点选通道设置
修改自定义通道之后可以在Actor属性中设置Actor的碰撞/点选通道。 这样可以在业务中修改希望点击到的Actor或者过滤可以碰撞的Actor。
0.3. 阴影设置
- 阴影: 是否显示阴影
- Shadow Map分辨率: 分辨率越高,阴影效果最好,但是性能越差。
- 阴影距离: 渲染阴影的最远距离,距离越远,阴影显示的Actor越多,但是性能越差。
- Shadow Cascade Num: 值越小阴影越模糊
- 阴影深度偏移: (0 - 1)值越大偏移量越大。
- 阴影透明度: 阴影区域的透明度, 范围(0 - 1)
- 阴影颜色: Actor阴影的颜色值。
0.4. 后期处理设置
- PostprocessEnable: 是否启用后期处理
- 开启雾效: 是否开启雾效
- 雾效开始距离: 雾效起始位置与相机的距离
- 雾效结束距离: 雾效结束位置与相机的距离
- 雾全局密度: 雾密度设置, 值越大可见度越低
0.5. 特效设置
- Enable Batch: 开启合批
- ForceBatch In Same Layer: 开启强制合批到同一批次
- Max Batched Vertex Number: 最大批次
0.6. BrushSetting
0.7. MMCV属性
MMCV参数
- 编辑绑定脚本:为当前场景对应的世界指定一个脚本文件或编辑当前世界所绑定的脚本文件,脚本文件后缀为xscript。
- 分割开关:是否开启MMCV库的分割/抠图功能,如果贴纸需要抠图效果,必须打开此开关,导出资源包时,此状态会被导出。
- 物体检测开关:是否开始MMCV库的手势识别,如比心手势。导出资源包时,此状态会被导出。
- 身体关节点:是否开启MMCV库的身体识别。导出资源包时,此状态会被导出。
- 美颜开关:是否开启MMCV库的美颜功能,仅在编辑器预览使用。
- 表情开关:是否开启MMCV库的表情识别,仅在编辑器预览使用。
- 眼睛识别开关:是否开启MMCV库的眼睛识别,仅在编辑器预览使用。
- 多脸支持开关:是否开启MMCV库的多人脸支持,仅在编辑器预览使用。
- 最大脸数:开启多人脸识别后,允许检测的最大人脸数,仅在编辑器预览使用。
- 人脸版本检测:仅支持96个关键点和137个关键点两个版本,导出资源包时,此状态会被导出。
提示设置
- 后置/前置相机提示:是否打开后置/前置相机的文案提示。
- 后置/前置相机提示内容:填写后置/前置相机的提示文案。导出资源时,若开启提示开关,此处的提示内容会被导出,并在移动端显示。
- 后置/前置相机检测到人脸提示:是否在后置/前置相机检测到人脸时提示文案。
- 后置/前置相机触发内容:后置/前置相机检测到人脸时的提示文件,比如“比个心”。如果开启提示开关,此处的提示内容会被导出,并在移动端显示。
0.8. 在代码中设置
---@type XEWorld
local pWorld = xes_Scene:GetWorld();
---加载场景
---第一个参数是场景路径
---第二个参数是使用相对路径
---返回值是是否加载成功
pWorld:LoadScene(szScenePath, bUseRelPath)
---设置世界模式
---XEWorld.ST_DEFAULT: 默认工程类型
---XEWorld.ST_FACE_TRACKER: 头饰工程类型
---XEWorld.ST_MOBILE_AR: AR手势工程类型
---XEWorld.ST_ARADS: AR广告工程类型
pWorld:SetWorldMode(eType)
---获取到世界属性指针
---@type XEWorldParam
local pProperty = pWorld:GetWorldParam()
---设置是否开启重力
pProperty:SetOverrideGrivaty(true)
---设置重力值
pProperty:SetGlobalGrivaty(vGrivaty)
---设置风速
pProperty:SetWindSpeed(fSpeed)
---设置风向
pProperty:SetWindDir(vDir)
---开启顺序无关的半透明渲染(QIT)
pProperty:SetQIT(true)
---设置QIT层数
pProperty:SetQITLayerNum(3)
---设置是否开启阴影
pProperty:SetShadow(true)
---设置阴影分辨率
pProperty:SetShadowMapResolution(1024)
---设置阴影距离
pProperty:SetShadowDistance(1000)
---设置阴影级联数目
pProperty:SetShadowCascadeNum(2)
---设置阴影深度偏移
pProperty:SetShadowDepth(0)
---设置软阴影量值
pProperty:SetShadowSoftness(0)
---设置阴影强度
pProperty:SetShowStrength(0)
---设置阴影颜色
pProperty:SetShadowColor(vColor)
---是否开启后处理
pProperty:SetPostprocessEnale(false)
---设置是否开启FXAA
pProperty:SetFXAAEnable(false)
---设置是否开启Bloom
pProperty:SetBloomEnable(false)
---设置Bloom颜色阈值 范围(0 - 1)
pProperty:SetBloomColorThreshold(0)
---设置是否开启雾效
pProperty:SetFogEnable(true)
---设置雾效开始位置和结束位置
pProperty:SetFogStart(10)
pProperty:SetFogEnd(20)
---设置雾效浓度
pProperty:SetFogDensity(0)
---是否开启特效合批
pProperty:SetFxBatchEnabled(false)
pProperty:SetFxBatchInSameLayer(false)
0.9. 关于Level的设置
在世界中,我们看到的能交互的所有的Actor都存在于Level(关卡)中,一个世界中至少有一个关卡,也可以有多个关卡。
0.9.1. Level的创建和删除
在创建世界的时候会有一个默认的关卡,但是很多时候我们需要自己创建新的关卡,那么我们需要通过世界创建关卡。
local pLevel = pWorld:CreateLeve(szLevelName)
当我们不需要某个关卡的时候,可以通过世界删除关卡
pWorld:DeleteWorld(pLevel)
0.9.2. Level的获取以及显示隐藏
当我们创建出关卡并且想切换关卡的时候需要找到创建好的关卡,并且显示新的关卡,隐藏旧的关卡。
local pLevel = pWorld:FindLevel(szLevelName)
---显示关卡
pLevel:Present()
---隐藏关卡
pLevel:UnPresent()
---设置仅当前关卡生效
pLevel:PresentThisOnly()
0.9.3. Level的加载资源
Level也可以加载.xscene文件
---第一个参数为资源路径
---第二个参数为是否设置默认关卡的场景路径作为跟路径
pLevel:Load(szScenePath, bUseDefaultLevelPathHome)
0.9.4. 在Level中管理Actor
---Actor的创建
pLevel:CreateActor(ACTOR_TYPENAME)
---查找Actor
pLevel:FindActor(szActorName)
---释放Actor
pLevel:ReleaseActor(pActor)