HarmonyOS 鸿蒙Next中ArkGraphics3D加载模型设置天空球问题

HarmonyOS 鸿蒙Next中ArkGraphics3D加载模型设置天空球问题

this.scene.environment.backgroundType = EnvironmentBackgroundType.BACKGROUND_CUBEMAP;
const  radianceImg3 = await rf.createImage({
  name: 'radianceImg3',
  uri: $rawfile('gltf/Environment/glTF/images/quarry_02_2k_skybox.ktx')
});
this.scene.environment.environmentImage = radianceImg3;

使用上述代码加载天空球屏幕四周会出现黑色的半透明遮罩。

this.scene.environment.backgroundType = EnvironmentBackgroundType.BACKGROUND_NONE;

将backgroundType 设置成none则不会出现黑色遮罩。

在backgroundType 设置成cubemap的情况下要如何去掉黑色遮罩呢?


更多关于HarmonyOS 鸿蒙Next中ArkGraphics3D加载模型设置天空球问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

边缘暗角目前是引擎默认使能的。设置为BACKGROUND_NONE,暗角的效果是在的,看不出暗角效果是没有环境的原因。计划后面的API版本提供接口可以控制暗角效果。

当前可以通过设置camera的postProcess属性来关闭所有后处理效果(暗角等效果)。

示例代码:

this.cam.postProcess = {}

更多关于HarmonyOS 鸿蒙Next中ArkGraphics3D加载模型设置天空球问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ArkGraphics3D加载模型时设置天空球需使用ArkGraphics3D的Scene类。通过Scene的setSkyBox方法配置天空球纹理资源,支持立方体贴图格式。需先创建SkyBox对象,设置六个面的纹理路径或资源ID,然后绑定到场景。确保纹理尺寸符合规范,避免性能问题。

在ArkGraphics3D中,当设置backgroundTypeBACKGROUND_CUBEMAP时,四周出现的黑色半透明遮罩通常是由于环境贴图未正确覆盖整个场景或渲染参数不匹配导致的。可以尝试以下方法:

  1. 检查环境贴图尺寸和格式:确保使用的KTX格式立方体贴图尺寸为2的幂次方(如512x512、1024x1024),且包含完整的六个面。贴图尺寸过小可能导致边缘渲染不完整。

  2. 调整环境强度:通过设置scene.environment.intensity提高环境光强度(例如设为1.5或2.0),确保环境贴图充分照亮场景周边区域。

  3. 验证贴图加载状态:在赋值environmentImage前,确认radianceImg3已成功加载且非空。可添加日志输出检查图像资源状态:

    if (radianceImg3) {
      this.scene.environment.environmentImage = radianceImg3;
    }
    
  4. 检查相机参数:若相机近裁剪面设置过大,可能截断环境渲染。尝试调整相机近平面距离:

    camera.near = 0.1; // 根据场景尺度调整
    
  5. 强制重绘场景:在设置环境贴图后调用scene.refresh()触发完整渲染更新。

若问题仍存在,建议检查设备GPU对立方体贴图的支持情况,或尝试替换其他KTX环境贴图进行对比测试。

回到顶部