管理中心

spatialRender

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

spatialRender模块主要用于渲染3DGS数据,展示3DGS渲染场景。

起始版本: 6.0.1(21)

导入模块

收起
自动换行
深色代码主题
复制
  1. import { spatialRender } from '@kit.SpatialReconKit';

GSNode

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

表示一个3DGS(3D Gaussian Splatting)渲染对象,帮助开发者操作3DGS模型。GSNode类继承自Node,使用方法请参考Node。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. let uri = "OhosRawFile://assets/gltf/model.glb";
  10. let offset = 0;
  11. // 通过GSPlugin.loadGSNode获取GSNode实例
  12. let gsNode: spatialRender.GSNode = await spatialRender.GSPlugin.loadGSNode(scene, { uri, offset }, scene.root);
  13. // 设置节点位置
  14. gsNode.position = { x: 3, y: 0, z: 0 };
  15. // 设置节点缩放
  16. gsNode.scale = { x: 1.5, y: 1.5, z: 1.5 };
  17. // 设置节点可见性
  18. gsNode.visible = true;
  19. });
  20. }

TiledGSNode

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

表示一个分块3DGS(Tiled 3D Gaussian Splatting)渲染对象,专门用于加载和渲染大规模的3DGS场景。TiledGSNode类继承自Node,使用方法请参考Node。

setCamera

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

setCamera(camera: Camera): void

设置驱动分块选择的相机。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

参数:

展开
参数名 类型 必填 说明
camera Camera 驱动分块选择的相机。默认使用渲染当前场景的相机,可以设置其他的相机。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, Camera, Node } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. if (!scene.root) {
  10. return;
  11. }
  12. let root: Node = scene.root as Node;
  13. // 创建相机
  14. let srf = scene.getResourceFactory();
  15. let camera: Camera = await srf.createCamera({ name: "Camera1", path: root.path });
  16. camera.clearColor = { r: 202/255.0, g: 233/255.0, b: 246/255.0, a: 1.0 };
  17. camera.nearPlane = 0.5;
  18. camera.farPlane = 10000.0;
  19. let PI = 3.141592653;
  20. let DEG2RAD = PI * 2.0 / 360.0;
  21. camera.fov = 60.0 * DEG2RAD;
  22. camera.enabled = true;
  23. // 配置分块3DGS导入参数
  24. let params: spatialRender.TiledGSImportSettings = {
  25. uri: "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json"
  26. };
  27. // 加载分块3DGS模型
  28. let promise = spatialRender.GSPlugin.loadTiledGSNode(scene, params, root);
  29. promise.then((tiledGSNode: spatialRender.TiledGSNode) => {
  30. if (!camera) {
  31. return;
  32. }
  33. // 设置驱动分块选择的相机
  34. tiledGSNode.setCamera(camera);
  35. // 设置节点属性
  36. tiledGSNode.position = { x: 0, y: 0, z: 0 };
  37. tiledGSNode.scale = { x: 1, y: 1, z: 1 };
  38. tiledGSNode.visible = true;
  39. });
  40. });
  41. }

setTileRequestCallback

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

setTileRequestCallback(callback: GSTileRequestCallback | null): void

设置瓦片请求回调函数,当渲染器需要应用程序提供瓦片数据时,会调用该回调。该回调接收应用程序应加载的瓦片(文件)列表。使用callback异步回调。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

参数:

展开
参数名 类型 必填 说明
callback GSTileRequestCallback 回调函数。当渲染器请求瓦片时触发成功,返回渲染器向应用请求的GSTile瓦片列表;否则为错误对象。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, Camera, Node } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. if (!scene.root) {
  10. return;
  11. }
  12. let root: Node = scene.root as Node;
  13. // 创建相机
  14. let srf = scene.getResourceFactory();
  15. let camera: Camera = await srf.createCamera({ name: "Camera1", path: root.path });
  16. camera.clearColor = { r: 202/255.0, g: 233/255.0, b: 246/255.0, a: 1.0 };
  17. camera.nearPlane = 0.5;
  18. camera.farPlane = 10000.0;
  19. let PI = 3.141592653;
  20. let DEG2RAD = PI * 2.0 / 360.0;
  21. camera.fov = 60.0 * DEG2RAD;
  22. camera.enabled = true;
  23. // 配置分块3DGS导入参数
  24. let params: spatialRender.TiledGSImportSettings = {
  25. uri: "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json"
  26. };
  27. // 加载分块3DGS模型
  28. let promise = spatialRender.GSPlugin.loadTiledGSNode(scene, params, root);
  29. promise.then((tiledGSNode: spatialRender.TiledGSNode) => {
  30. if (!camera) {
  31. return;
  32. }
  33. // 设置驱动分块选择的相机
  34. tiledGSNode.setCamera(camera);
  35. // 设置节点属性
  36. tiledGSNode.position = { x: 0, y: 0, z: 0 };
  37. tiledGSNode.scale = { x: 1, y: 1, z: 1 };
  38. tiledGSNode.visible = true;
  39. // 向渲染器注册瓦片请求回调
  40. tiledGSNode.setTileRequestCallback((tiles: spatialRender.GSTile[]) => {
  41. // 获取并保存远端瓦片数据,然后通知渲染器瓦片准备就绪
  42. if (!tiles || tiles.length <= 0) {
  43. return;
  44. }
  45. });
  46. });
  47. });
  48. }

notifyTileReady

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

notifyTileReady(tile: GSTile): void

通知渲染器指定的瓦片现在可以加载。tile.uri相对路径指向的文件已可访问,并可被渲染器读取。如果渲染器不再需要该瓦片(例如在获取完成前相机已移开),该调用将不执行任何操作。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

参数:

展开
参数名 类型 必填 说明
tile GSTile 数据可用的瓦片。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, Camera, Node } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. if (!scene.root) {
  10. return;
  11. }
  12. let root: Node = scene.root as Node;
  13. // 创建相机
  14. let srf = scene.getResourceFactory();
  15. let camera: Camera = await srf.createCamera({ name: "Camera1", path: root.path });
  16. camera.clearColor = { r: 202/255.0, g: 233/255.0, b: 246/255.0, a: 1.0 };
  17. camera.nearPlane = 0.5;
  18. camera.farPlane = 10000.0;
  19. let PI = 3.141592653;
  20. let DEG2RAD = PI * 2.0 / 360.0;
  21. camera.fov = 60.0 * DEG2RAD;
  22. camera.enabled = true;
  23. // 配置分块3DGS导入参数
  24. let params: spatialRender.TiledGSImportSettings = {
  25. uri: "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json"
  26. };
  27. // 加载分块3DGS模型
  28. let promise = spatialRender.GSPlugin.loadTiledGSNode(scene, params, root);
  29. promise.then((tiledGSNode: spatialRender.TiledGSNode) => {
  30. if (!camera) {
  31. return;
  32. }
  33. // 设置驱动分块选择的相机
  34. tiledGSNode.setCamera(camera);
  35. // 设置节点属性
  36. tiledGSNode.position = { x: 0, y: 0, z: 0 };
  37. tiledGSNode.scale = { x: 1, y: 1, z: 1 };
  38. tiledGSNode.visible = true;
  39. // 向渲染器注册瓦片请求回调
  40. tiledGSNode.setTileRequestCallback((tiles: spatialRender.GSTile[]) => {
  41. if (!tiles || tiles.length <= 0) {
  42. return;
  43. }
  44. for (const tile of tiles) {
  45. // 向远端请求获取瓦片数据,并持久化保存至uri指定相对路径
  46. // ......
  47. // 通知渲染器某个瓦片数据准备就绪
  48. tiledGSNode..notifyTileReady(tile);
  49. }
  50. });
  51. });
  52. });
  53. }

GSPlugin

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

GSPlugin类封装了与3DGS相关的内容,包括3DGS插件ID和3DGS模型加载接口,帮助开发者实现对3DGS的自定义功能。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

注意

调用GSPlugin接口前,必须先加载对应的插件ID,否则会出现未定义的行为。

示例:

收起
自动换行
深色代码主题
复制
  1. import { spatialRender } from '@kit.SpatialReconKit';
  2. import { Scene } from '@kit.ArkGraphics3D';
  3. // 获取默认渲染上下文
  4. let renderContext = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. }

常量

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 说明
PLUGIN_ID string 表示3DGS插件ID。使用前需调用renderContext.loadPlugin(GSPlugin.PLUGIN_ID)加载插件。
RETRO_EFFECT_ID string 表示复古效果ID。需先加载PLUGIN_ID,然后作为EffectParameters.effectId传入createEffect创建效果实例。
COMIC_EFFECT_ID string 表示漫画效果ID。需先加载PLUGIN_ID,然后作为EffectParameters.effectId传入createEffect创建效果实例。
OBRA_DINN_EFFECT_ID string 表示黑白bit效果ID。需先加载PLUGIN_ID,然后作为EffectParameters.effectId传入createEffect创建效果实例。
COLOR_EDITING_EFFECT_ID string 表示颜色编辑效果ID。需先加载PLUGIN_ID,然后作为EffectParameters.effectId传入createEffect创建效果实例。

开发者不需要感知各ID的具体值,推荐直接使用字符串变量。

loadGSNode

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

static loadGSNode(scene: Scene, params: GSImportSettings, parent?: Node): Promise<GSNode>

加载3DGS模型,使用Promise异步回调。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

参数:

展开
参数名 类型 必填 说明
scene Scene 指定在应用界面想要显示的场景,是ArkGraphics 3D基础模块。建议通过调用Scene.load来获取。
params GSImportSettings 加载3DGS模型的设置。
parent Node 预期挂载3DGS模型的节点。如果不传,加载的3DGS模型会被挂载到Scene的根节点上。

返回值:

展开
类型 说明
Promise<GSNode> Promise对象,返回3DGS模型对应的GSNode。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. let scene = Scene.load().then(async (scene: Scene) => {
  10. // 设置3DGS模型文件的URI路径,根据实际情况修改
  11. let uri = "OhosRawFile://assets/gltf/model.glb";
  12. // 偏移量参数(用于模型的位移调整,可根据需求设置)
  13. let offset = 0;
  14. // 通过GSPlugin加载指定的3DGS节点,并将其添加到场景根节点下
  15. let gsNodeext: spatialRender.GSNode = await spatialRender.GSPlugin.loadGSNode(scene, {uri, offset}, scene.root);
  16. });
  17. }

loadTiledGSNode

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

static loadTiledGSNode(scene: Scene, params: TiledGSImportSettings, parent?: Node): Promise<TiledGSNode>

加载分块3DGS模型,使用Promise异步回调。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

参数:

展开
参数名 类型 必填 说明
scene Scene 指定在应用界面想要显示的场景,是ArkGraphics 3D基础模块。建议通过调用Scene.load来获取。
params TiledGSImportSettings 加载分块3DGS模型的设置。
parent Node 预期挂载分块3DGS模型的节点。如果不传,加载的分块3DGS模型会被挂载到Scene的根节点上。

返回值:

展开
类型 说明
Promise<TiledGSNode> Promise对象,返回分块3DGS模型对应的TiledGSNode。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. let scene = Scene.load().then(async (scene: Scene) => {
  10. // 设置分块3DGS模型清单文件的URI路径,根据实际情况修改
  11. let uri = "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json";
  12. // 通过GSPlugin加载指定的分块3DGS节点,并将其添加到场景根节点下
  13. let tiledGSNode: spatialRender.TiledGSNode = await spatialRender.GSPlugin.loadTiledGSNode(scene, { uri }, scene.root);
  14. });
  15. }

GSImportSettings

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

GSImportSettings类封装了加载3DGS模型的设置,包括模型路径和数据在文件中的偏移量。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 只读 可选 说明
uri string 3DGS模型的文件路径。传入空字符串将导致加载失败。
offset number 待加载数据在3DGS模型文件中的偏移量。默认值0。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. let scene = Scene.load().then(async (scene: Scene) => {
  10. // 设置3DGS模型文件的URI路径,根据实际情况修改
  11. let uri = "OhosRawFile://assets/gltf/doll.glb";
  12. // 偏移量参数(用于模型的位移调整)
  13. let offset = 0;
  14. // 配置导入参数
  15. let setting: spatialRender.GSImportSettings = { uri: uri, offset : offset};
  16. // 通过GSPlugin加载指定的3DGS节点,并添加到场景根节点下
  17. let gsNodeext: spatialRender.GSNode = await spatialRender.GSPlugin.loadGSNode(scene, setting, scene.root);
  18. });
  19. }

TiledGSImportSettings

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

TiledGSImportSettings类封装了加载分块3DGS模型的设置,包含清单文件路径。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

展开
名称 类型 只读 可选 说明
uri string 分块3DGS模型清单文件(JSON)的路径,用于描述瓦片层级结构。传入空字符串将导致加载失败。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. let scene = Scene.load().then(async (scene: Scene) => {
  10. // 设置分块3DGS模型清单文件的URI路径,根据实际情况修改
  11. let uri = "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json";
  12. // 配置导入参数
  13. let setting: spatialRender.TiledGSImportSettings = { uri: uri };
  14. // 通过GSPlugin加载指定的分块3DGS节点,并添加到场景根节点下
  15. let tiledGSNode: spatialRender.TiledGSNode = await spatialRender.GSPlugin.loadTiledGSNode(scene, setting, scene.root);
  16. });
  17. }

RetroEffectParams

Phone6.1.0(23)+PC/2in16.1.0(23)+Tablet6.1.0(23)+TV6.1.0(23)+

RetroEffect参数,该类型为字符串枚举,该枚举值可在EffectgetPropertyValuesetPropertyValue方法中使用,用于声明属性的名称,以获取属性的当前值或更新属性的值。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力: SystemCapability.Graphics.SpatialRender

起始版本: 6.1.0(23)

展开
名称 说明
COLOR_NUM 'colorNum'

RetroEffect中colorNum属性的名称。

属性对应取值类型为number。该属性表示使用多少种颜色来作为颜色抖动。通常属性值越大图像质量越高、值越小复古风格越重。属性取值范围大于0,默认值8。

PIXEL_SIZE 'pixelSize'

RetroEffect中pixelSize属性的名称。

属性对应取值类型为number。该属性表示下采样的程度。越大越重。若该属性取值为1,则不会进行下采样。属性取值范围大于等于1,默认值4。

BLEND_ENABLED 'blendEnabled'

RetroEffect中blendEnabled属性的名称。

属性对应取值类型为boolean。该属性表示是否把处理后的图片与原始图片融合,属性值设置为true会把处理后的图片与原始图片融合,设置为false不会做融合。由于复古风格会造成图像的亮度下降、色彩偏移,将该属性值设为true用以维持图像的亮度与色彩。属性取值默认为true。

CURVE 'curve'

RetroEffect中curve属性的名称。

属性对应取值类型为number。该属性表示显像管电视屏幕带有的曲率。复古风格会模拟显像管电视的显示特征。该属性代表显像管电视屏幕带有的曲率,属性取值越大曲率越大。属性取值范围[0, 1],默认值0.25。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType, Effect } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建复古效果实例(使用GSPlugin预定义的效果ID)
  13. let effect : Effect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.RETRO_EFFECT_ID });
  15. // 获取复古效果参数(颜色数量)的当前值
  16. let colNum = effect.getPropertyValue(spatialRender.RetroEffectParams.COLOR_NUM);
  17. // 设置复古效果参数(颜色数量)为4
  18. let res = effect.setPropertyValue(spatialRender.RetroEffectParams.COLOR_NUM, 4);
  19. // 创建摄像机
  20. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  21. // 将效果添加到摄像机的效果链中
  22. camera.effects.append(effect)
  23. });
  24. }

RetroEffect

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

RetroEffect接口封装了复古风格的效果参数,可实现自定义的复古风格。该类继承自Effect

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 只读 可选 说明
colorNum number 使用多少种颜色来作为颜色抖动。通常值越大图像质量越高、值越小复古风格越重。取值范围大于0。默认值8。
pixelSize number 下采样的程度。越大越重。若为1,则不会进行下采样。取值范围大于等于1。默认值4。
blendEnabled boolean 是否把处理后的图片与原始图片融合,设置为true会把处理后的图片与原始图片融合,设置为false不会做融合。复古风格会造成图像的亮度下降、色彩偏移。设为true用以维持图像的亮度与色彩。默认值true。
curve number

显像管电视屏幕带有的曲率。复古风格会模拟显像管电视的显示特征,

curve代表显像管电视屏幕带有的曲率,值越大曲率越大。取值范围[0, 1]。默认值0.25。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建复古效果实例(类型为RetroEffect)
  13. let effect : spatialRender.RetroEffect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.RETRO_EFFECT_ID }) as spatialRender.RetroEffect;
  15. // 创建摄像机
  16. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  17. // 将效果添加到摄像机的效果链中
  18. camera.effects.append(effect)
  19. });
  20. }

ComicEffectParams

Phone6.1.0(23)+PC/2in16.1.0(23)+Tablet6.1.0(23)+TV6.1.0(23)+

ComicEffect参数,该类型为字符串枚举,该枚举值可在EffectgetPropertyValuesetPropertyValue方法中使用,用于声明属性的名称,以获取属性的当前值或更新属性的值。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力: SystemCapability.Graphics.SpatialRender

起始版本: 6.1.0(23)

展开
名称 说明
LINE_THRESHOLD 'lineThreshold'

ComicEffect中lineThreshold属性的名称。

属性对应取值类型为number。该属性表示用来判定像素为轮廓线的阈值,图像梯度大于该阈值的像素会被判定为轮廓线。该属性取值范围[0, 1],默认值为0.2。

LINE_COLOR 'lineColor'

ComicEffect中lineThreshold属性的名称。

属性对应取值类型为Color。该属性表示轮廓线的颜色。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType, Effect } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建漫画效果实例(使用GSPlugin预定义的漫画效果ID)
  13. let effect : Effect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.COMIC_EFFECT_ID });
  15. // 获取漫画效果参数(线条阈值)的当前值
  16. let threshold = effect.getPropertyValue(spatialRender.ComicEffectParams.LINE_THRESHOLD);
  17. // 设置漫画效果参数(线条阈值)为0.5
  18. let res = effect.setPropertyValue(spatialRender.ComicEffectParams.LINE_THRESHOLD, 0.5);
  19. // 创建摄像机
  20. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  21. // 将漫画效果添加到摄像机的效果链中
  22. camera.effects.append(effect)
  23. });
  24. }

ComicEffect

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

ComicEffect接口封装了漫画风格的效果的参数,可实现自定义的漫画风格。该类继承自Effect

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 只读 可选 说明
lineThreshold number 判定像素为轮廓线的阈值。图像梯度(像素与相邻像素的明暗差异。差异越大,梯度值越大,该像素越可能是轮廓线)大于该阈值的像素会被判定为轮廓线。取值范围[0, 1] ,默认值0.2。
lineColor Color 轮廓线的颜色。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建漫画效果实例(类型为ComicEffect)
  13. let effect : spatialRender.ComicEffect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.COMIC_EFFECT_ID }) as spatialRender.ComicEffect;
  15. // 创建摄像机
  16. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  17. // 将漫画效果添加到摄像机的效果链中
  18. camera.effects.append(effect)
  19. });
  20. }

ObraDinnEffectParams

Phone6.1.0(23)+PC/2in16.1.0(23)+Tablet6.1.0(23)+TV6.1.0(23)+

ObraDinnEffect参数,该类型为字符串枚举,该枚举值可在EffectgetPropertyValuesetPropertyValue方法中使用,用于声明属性的名称,以获取属性的当前值或更新属性的值。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力: SystemCapability.Graphics.SpatialRender

起始版本: 6.1.0(23)

展开
名称 说明
NOISE_STRENGTH 'noiseStrength'

ObraDinnEffect中的noiseStrength属性的名称。

属性对应取值类型为number。该属性表示选择哪些像素用来颜色抖动。该属性可以起到平滑边缘的效果,加大噪声强度会导致边缘更模糊。属性取值范围[0, 1],默认值0.3。

THRESHOLD 'threshold'

ObraDinnEffect中的threshold属性的名称。

属性对应取值类型为number。该属性表示将像素分为前景颜色或后景颜色的阈值。该属性取值越高,图像整体的颜色会越接近后景颜色。属性值取值范围[0, 1],默认值0.4。

FOREGROUND_COLOR 'foregroundColor'

ObraDinnEffect中的foregroundColor属性的名称。

属性对应取值类型为Color。该属性表示前景颜色。

BACKGROUND_COLOR 'backgroundColor'

ObraDinnEffect中的backgroundColor属性的名称。

属性对应取值类型为Color。该属性表示背景颜色。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType, Effect } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建黑白bit效果实例(使用GSPlugin预定义的效果ID)
  13. let effect : Effect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.OBRA_DINN_EFFECT_ID });
  15. // 获取黑白bit效果参数(噪声强度)的当前值
  16. let noiseStrength = effect.getPropertyValue(spatialRender.ObraDinnEffectParams.NOISE_STRENGTH);
  17. // 设置黑白bit效果参数(噪声强度)为0.5
  18. let res = effect.setPropertyValue(spatialRender.ObraDinnEffectParams.NOISE_STRENGTH, 0.5);
  19. // 创建摄像机
  20. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  21. // 将黑白bit效果添加到摄像机的效果链中
  22. camera.effects.append(effect)
  23. });
  24. }

ObraDinnEffect

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

ObraDinnEffect接口封装了bit(黑白点阵)风格的效果参数,可实现自定义的bit风格。该类继承自Effect

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 只读 可选 说明
noiseStrength number 选择哪些像素用来颜色抖动。可以起到平滑边缘的效果。加大噪声强度会导致边缘更模糊。取值范围[0, 1],默认值0.3。
threshold number 把像素分为前景颜色或后景颜色的阈值。高于该阈值的像素会被处理为前景颜色。threshold越低,图像整体的颜色会越接近前景颜色。threshold越高,图像整体的颜色会越接近后景颜色。取值范围[0, 1],默认值0.4。
foregroundColor Color 前景颜色。
backgroundColor Color 背景颜色。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建黑白bit效果实例(类型为ObraDinnEffect)
  13. let effect : spatialRender.ObraDinnEffect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.OBRA_DINN_EFFECT_ID }) as spatialRender.ObraDinnEffect;
  15. // 创建摄像机
  16. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  17. // 将黑白bit效果添加到摄像机的效果链中
  18. camera.effects.append(effect)
  19. });
  20. }

ColorEditingEffectParams

Phone6.1.0(23)+PC/2in16.1.0(23)+Tablet6.1.0(23)+TV6.1.0(23)+

ColorEditingEffect参数,该类型为字符串枚举,该枚举值可在EffectgetPropertyValuesetPropertyValue方法中使用,用于声明属性的名称,以获取属性的当前值或更新属性的值。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力: SystemCapability.Graphics.SpatialRender

起始版本: 6.1.0(23)

展开
名称 说明
EXPOSURE 'exposure'

ColorEditingEffect中的exposure属性的名称。

属性对应取值类型为number。该属性表示图像的曝光度。属性推荐取值范围[-5, 5],默认值0.0。

CONTRAST 'contrast'

ColorEditingEffect中的contrast属性的名称。

属性对应取值类型为number。该属性表示图像的对比度。属性推荐取值范围[0, 2],默认值1.0。

TEMPERATURE 'temperature'

ColorEditingEffect中的temperature属性的名称。

属性对应取值类型为number。该属性表示图像的色温。属性推荐取值范围[-2, 2],默认值0.0。

TINT 'tint'

ColorEditingEffect中的tint属性的名称。

属性对应取值类型为number。该属性表示图像的色调。属性推荐取值范围[-1, 1],默认值0.0。

SATURATION 'saturation'

ColorEditingEffect中的saturation属性的名称。

属性对应取值类型为number。该属性表示图像的饱和度。属性推荐取值范围[0, 2],默认值1.0。

VIBRANCE 'vibrance'

ColorEditingEffect中的vibrance属性的名称。

属性对应取值类型为number。该属性表示图像的自然饱和度。属性推荐取值范围[-1, 1],默认值0.0。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType, Effect } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建颜色编辑效果实例(使用GSPlugin预定义的效果ID)
  13. let effect : Effect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.COLOR_EDITING_EFFECT_ID });
  15. // 获取颜色编辑效果参数(曝光度)的当前值
  16. let exposure = effect.getPropertyValue(spatialRender.ColorEditingEffectParams.EXPOSURE);
  17. // 设置颜色编辑效果参数(曝光度)为0.5
  18. let res = effect.setPropertyValue(spatialRender.ColorEditingEffectParams.EXPOSURE, 0.5);
  19. // 创建摄像机
  20. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  21. // 将颜色编辑效果添加到摄像机的效果链中
  22. camera.effects.append(effect)
  23. });
  24. }

ColorEditingEffect

Phone6.0.1(21)+PC/2in16.0.1(21)+Tablet6.0.1(21)+TV6.0.1(21)+

ColorEditingEffect接口封装了颜色编辑风格的参数,可帮助开发者实现自定义的图像风格。该类继承自Effect

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 6.0.1(21)

展开
名称 类型 只读 可选 说明
exposure number 图像的曝光度,推荐取值范围[-5,5],默认值0.0。
contrast number 图像的对比度,推荐取值范围[0, 2],默认值1.0。
temperature number 图像的色温,推荐取值范围[-2, 2],默认值0.0。
tint number 图像的色调,推荐取值范围[-1,1],默认值0.0。
saturation number 图像的饱和度,推荐取值范围[0, 2],默认值1.0。
vibrance number 图像的自然饱和度,推荐取值范围[-1, 1],默认值0.0。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, RenderingPipelineType } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. // 加载空间重建插件GSPlugin
  7. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  8. // 加载场景
  9. Scene.load().then(async (scene: Scene) => {
  10. // 获取场景的资源工厂
  11. let rf = scene.getResourceFactory();
  12. // 创建颜色编辑效果实例(类型为ColorEditingEffect)
  13. let effect : spatialRender.ColorEditingEffect =
  14. await rf.createEffect({ effectId: spatialRender.GSPlugin.COLOR_EDITING_EFFECT_ID }) as spatialRender.ColorEditingEffect;
  15. // 创建摄像机
  16. let camera = await rf.createCamera({ name: "gsCam", path: "//gsCam" }, { renderingPipeline: RenderingPipelineType.FORWARD });
  17. // 将颜色编辑效果添加到摄像机的效果链中
  18. camera.effects.append(effect)
  19. });
  20. }

GSTile

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

3D高斯瓦片的描述符。一个GSTile对应清单文件中的一个.sog文件。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

展开
名称 类型 只读 可选 说明
uri string 包含3D高斯瓦片数据的.sog文件的Uri。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, Camera, Node } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. if (!scene.root) {
  10. return;
  11. }
  12. let root: Node = scene.root as Node;
  13. // 创建相机
  14. let srf = scene.getResourceFactory();
  15. let camera: Camera = await srf.createCamera({ name: "Camer1", path: root.path });
  16. camera.enabled = true;
  17. // 配置分块3DGS导入参数
  18. let params: spatialRender.TiledGSImportSettings = {
  19. uri: "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json"
  20. };
  21. // 加载分块3DGS模型
  22. let promise = spatialRender.GSPlugin.loadTiledGSNode(scene, params, root);
  23. promise.then((tiledGSNode: spatialRender.TiledGSNode) => {
  24. if (!camera) {
  25. return;
  26. }
  27. // 设置驱动分块选择的相机
  28. tiledGSNode.setCamera(camera);
  29. // 向渲染器注册瓦片请求回调
  30. tiledGSNode.setTileRequestCallback((tiles: spatialRender.GSTile[]) => {
  31. if (!tiles || tiles.length <= 0) {
  32. return;
  33. }
  34. // 遍历请求的瓦片列表,获取对应uri
  35. for (const tile of tiles) {
  36. console.debug('tile uri=', tile.uri);
  37. }
  38. });
  39. });
  40. });
  41. }

GSTileRequestCallback

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+

type GSTileRequestCallback = (tiles: GSTile[]) => void

回调函数,用于传递来自渲染器的瓦片数据请求。当驱动相机移动且渲染器需要加载更多瓦片时触发。

模型约束: 此模块的接口仅可在Stage模型下使用。

系统能力:SystemCapability.Graphics.SpatialRender

起始版本: 26.0.0

参数:

展开
参数名 类型 必填 说明
tiles GSTile[] 渲染器向应用请求的瓦片列表。

示例:

收起
自动换行
深色代码主题
复制
  1. import { Scene, RenderContext, Camera, Node } from '@kit.ArkGraphics3D';
  2. import { spatialRender } from '@kit.SpatialReconKit';
  3. // 获取默认的渲染上下文
  4. let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
  5. if (renderContext != null) {
  6. renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
  7. // 加载场景
  8. Scene.load().then(async (scene: Scene) => {
  9. if (!scene.root) {
  10. return;
  11. }
  12. let root: Node = scene.root as Node;
  13. // 创建相机
  14. let srf = scene.getResourceFactory();
  15. let camera: Camera = await srf.createCamera({ name: "Camer1", path: root.path });
  16. camera.enabled = true;
  17. // 配置分块3DGS导入参数
  18. let params: spatialRender.TiledGSImportSettings = {
  19. uri: "file:///data/storage/el2/base/files/uav-lod/sanyapo.scene.json"
  20. };
  21. // 加载分块3DGS模型
  22. let promise = spatialRender.GSPlugin.loadTiledGSNode(scene, params, root);
  23. promise.then((tiledGSNode: spatialRender.TiledGSNode) => {
  24. if (!camera) {
  25. return;
  26. }
  27. // 设置驱动分块选择的相机
  28. tiledGSNode.setCamera(camera);
  29. // 向渲染器注册瓦片请求回调
  30. tiledGSNode.setTileRequestCallback((tiles: spatialRender.GSTile[]) => {
  31. if (!tiles || tiles.length <= 0) {
  32. return;
  33. }
  34. // 遍历请求的瓦片列表
  35. for (const tile of tiles) {
  36. // 向远端发送请求,获取对应瓦片数据并持久化保存
  37. }
  38. });
  39. });
  40. });
  41. }
在 API参考 中进行搜索
请输入您想要搜索的关键词