<GSplat/>
GSplat 用于渲染高斯泼溅,以高质量方式捕获并显示场景形状和光照。
useSplat 接受 PLY、SOG 及其他引擎支持格式。
用法
用 useSplat 加载,再交给 GSplat:
const { asset } = useSplat('/assets/toy-cat.sog');
<GSplat asset={asset} />
- 演示
- 代码
gsplat-example.jsx
import { Entity } from '@playcanvas/react';
import { GSplat, Camera } from '@playcanvas/react/components';
import { useSplat } from '@playcanvas/react/hooks';
export const GSplatExample = () => {
// Load the Gaussian Splat asset
const { asset } = useSplat('/assets/toy-cat.sog');
// If the asset is not loaded, return null
if (!asset) return null;
// Return the GSplat component
return (
<Entity rotation={[180, 180, 0]} position={[0, -0.7, 0]} >
<GSplat asset={asset} />
</Entity>
);
};
详见 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设置或获取组件的启用状态。 | - |