Skip to content

EngineSetting

通过 EngineSetting 可以设置引擎的一些常见配置,EngineSetting 主要由几个不同配置组成,包括拾取模式,渲染管线,阴影设置,后处理设置,天空盒设置等等。

基础使用

引擎的配置在初始化时通过 Engine3D.init({ setting }) 传入,setting 是一个可选的深度局部对象,只需写出要覆盖的字段,其余使用默认值。

例如设置场景中可支持的最大灯光数量、开启对数深度:

ts
const engine = await Engine3D.init({
  setting: {
    light: { maxLight: 1024 },   // 最大灯光数量
    render: { useLogDepth: true } // 启动对数深度
  }
});

初始化完成后,运行期可变的配置也可以通过实例的 engine.setting 继续读写:

ts
engine.setting.render.postProcessing.bloom.intensity = 0.5;

从旧版本迁移

早期版本通过全局静态的 Engine3D.setting.xxx = ... 在初始化前赋值。现在配置随实例,请改为在 Engine3D.init({ setting }) 中传入,或在拿到实例后通过 engine.setting.xxx 设置。

拾取模式

引擎支持两种拾取模式,一种是 像素级拾取 (pixel),一种是 包围盒拾取 (bound)

引擎默认配置是 bound 模式, 包围盒拾取通过计算模型的AABB包围盒来拾取,精度不如 pixel 模式,但是计算更快,性能更好。包围盒拾取的模式可以通过引擎配置中的 pick 属性来设置。

ts
const engine = await Engine3D.init({
  setting: {
    pick: { enable: true, mode: 'bound' }
  }
});

像素级拾取模式同样可以通过 pick 属性来设置。

ts
const engine = await Engine3D.init({
  setting: {
    pick: { enable: true, mode: 'pixel' }
  }
});

详细用法请参考 拾取事件

后处理设置

引擎支持多种后处理,包括各种抗锯齿,bloom,环境光遮蔽等等,可以通过 render 配置中的 postProcessing 属性来设置。

例如设置 bloom 后处理效果:

ts
const engine = await Engine3D.init({
  setting: {
    render: {
      postProcessing: {
        bloom: { enable: true, intensity: 0.5 }
      }
    }
  }
});

更多后处理相关设置,详见 后处理

阴影设置

设置阴影的方法和属性,可以通过引擎配置中的 shadow 属性来设置。

ts
const engine = await Engine3D.init({
  setting: {
    shadow: {
      enable: true,      // 开启阴影
      type: 'SOFT',      // 软阴影类型
      shadowSize: 2048,  // 阴影贴图大小
      shadowBound: 20,   // 阴影区域的世界尺寸
      shadowBias: 0.01   // 阴影偏移量
    }
  }
});

详见 阴影

全局光照设置

通过配置中的 gi 属性来设置全局光照。

ts
const engine = await Engine3D.init({
  setting: {
    gi: {
      enable: true,
      probeYCount: 6,
      probeXCount: 6,
      probeZCount: 6,
      offsetX: 0,
      offsetY: 10,
      offsetZ: 0
      // ...
    }
  }
});

详见 全局光照