跳到主要内容

<GSplat/>

GSplat 用于渲染高斯泼溅,以高质量方式捕获并显示场景形状和光照。

useSplat 接受 PLY、SOG 及其他引擎支持格式。

用法​

用 useSplat 加载,再交给 GSplat:

const { asset } = useSplat('/assets/toy-cat.sog');
<GSplat asset={asset} />

详见 GSplatComponent。

属性​

名称类型与说明默认值
customAabb?
BoundingBox | null
设置或获取附加 gsplat 用于可见性剔除的自定义对象空间包围盒。若已设置,返回自定义 AABB,否则返回资源的 AABB。
-
material?-
castShadows?
boolean
设置或获取 gsplat 是否为启用阴影投射的光源投射阴影,默认 false。
-
lodBaseDistance?
number
设置或获取首次 LOD 切换(LOD 0 到 LOD 1)的基础距离,近于此距离使用最高质量。后续距离由 GSplatComponent#lodMultiplier 递增,单位为世界单位,并补偿相机视野。与场景泼溅预算的组合由 GSplatParams#splatBudgetMode 决定:target 模式下只塑造衰减与各泼溅的细节分配;limit 模式下决定细节。最小 0.1,默认 5。
-
lodMultiplier?
number
设置或获取相邻 LOD 距离阈值的几何倍率。越大可在更远距离保持精细细节,但内存开销更高;越小越早切换到粗略层级。距离会补偿相机视野,较宽视野下对象显得更小,因此更早切换。最小 1.2,默认 3。
-
lodRangeMin?
number
设置或获取允许的最小 LOD 索引,包含端点。按距离选出的层级不会比此值更精细,使用时还会限制到资源有效范围 [0, octree.lodLevels - 1]。提高最小值可避免下载最高质量、体积最大的 LOD 文件。默认 0。
-
lodRangeMax?
number
设置或获取允许的最大 LOD 索引,包含端点。按距离选出的层级不会比此值更粗略,使用时限制到 [0, octree.lodLevels - 1]。默认 99,实际表示不设上限。
-
workBufferUpdate?
number
设置或获取工作缓冲区更新模式。泼溅仅在变换等数据变化时写入缓冲区。WORKBUFFER_UPDATE_AUTO 按需更新,默认值;WORKBUFFER_UPDATE_ONCE 强制更新当前帧后恢复 AUTO;WORKBUFFER_UPDATE_ALWAYS 每帧更新。适用于 setWorkBufferModifier 自定义代码依赖时间或动态 uniform 的情况。ALWAYS 每帧重绘全部泼溅数据,有性能开销;可行时优先在 app.scene.gsplat.material 上定制最终渲染着色器,以免重绘工作缓冲区。
-
layers?
number[]
设置或获取 gsplat 所属图层 ID 数组(Layer#id)。不要直接 push、pop、splice 或修改数组,应赋入新数组。
-
asset?
number | Asset<string>
设置 gsplat 组件资源,可传资源 ID;获取时返回 gsplat 资源 ID。
-
resource?
GSplatResourceBase | null
直接设置 GSplat 运行时资源,用于程序化或容器泼溅,优先于 asset。获取时优先返回直接设置的资源,否则返回指定 asset 中的资源。
-
system?
ComponentSystem
创建此组件的 ComponentSystem。
-
entity?
Entity
此组件挂载的 Entity。
-
enabled?
boolean
设置或获取组件的启用状态。
-