1# SceneResource 2<!--Kit: ArkGraphics 3D--> 3<!--Subsystem: Graphics--> 4<!--Owner: @zzhao0--> 5<!--Designer: @zdustc--> 6<!--Tester: @zhangyue283--> 7<!--Adviser: @ge-yafang--> 8 9本模块提供3D图形中常用的基本资源类型。 10 11> **说明:** 12> - 本模块首批接口从API version 12开始支持,后续版本的新增接口,采用上角标标记接口的起始版本。 13 14## 导入模块 15```ts 16import { SceneResourceType, SceneResource, Shader, MaterialType, CullMode, Blend, RenderSort, Material, 17 MaterialProperty, MetallicRoughnessMaterial, ShaderMaterial, SamplerFilter, SamplerAddressMode, Sampler, 18 SubMesh, Morpher, Mesh, MeshResource, Animation, EnvironmentBackgroundType, Environment, Image } from '@kit.ArkGraphics3D'; 19``` 20## SceneResourceType 21场景资源类型枚举,对场景中的资源进行分类。 22 23**系统能力:** SystemCapability.ArkUi.Graphics3D 24 25| 名称 | 值 | 说明 | 26| ---- | ---- | ---- | 27| UNKNOWN | 0 | 未定义类型。 | 28| NODE | 1 | 结点类型。 | 29| ENVIRONMENT | 2 | 环境类型。 | 30| MATERIAL | 3 | 材质类型。 | 31| MESH | 4 | 网格类型。 | 32| ANIMATION | 5 | 动画类型。 | 33| SHADER | 6 | 着色器类型。 | 34| IMAGE | 7 | 图片类型。 | 35| MESH_RESOURCE<sup>18+</sup> | 8 | 网格资源类型。 | 36 37## SceneResource 38用于表示场景中的资源。 39 40### 属性 41 42**系统能力:** SystemCapability.ArkUi.Graphics3D 43 44| 名称 | 类型 | 只读 | 可选 | 说明 | 45| ---- | ---- | ---- | ---- | ---- | 46| name | string | 否 | 否 | 名称,没有特殊格式要求。 | 47| resourceType | [SceneResourceType](#sceneresourcetype) | 是 | 否 | 场景资源类型,默认值为undefined。| 48| uri | [ResourceStr](../apis-arkui/arkui-ts/ts-types.md#resourcestr) | 是 | 是 | 需要加载的资源,默认值为undefined。| 49 50### destroy 51destroy(): void 52 53销毁场景资源,释放所有关联的资源或引用,一旦被释放,资源就不能被再次使用或访问。 54 55**系统能力:** SystemCapability.ArkUi.Graphics3D 56 57**示例:** 58```ts 59import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 60 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 61 62function destroy(): void { 63 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 64 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 65 scene.then(async (result: Scene) => { 66 if (result) { 67 let sceneFactory: SceneResourceFactory = result.getResourceFactory(); 68 // 创建shader资源,路径和文件名可根据项目实际资源自定义 69 let sceneResourceParameter: SceneResourceParameters = { name: "shaderResource", 70 uri: $rawfile("shaders/custom_shader/custom_material_sample.shader") }; 71 let shader: Promise<Shader> = sceneFactory.createShader(sceneResourceParameter); 72 shader.then(async (shaderResult:Shader) => { 73 // 释放资源 74 shaderResult.destroy(); 75 }); 76 } 77 }); 78} 79``` 80 81## Shader 82着色器,继承自[SceneResource](#sceneresource-1)。 83 84### 属性 85 86**系统能力:** SystemCapability.ArkUi.Graphics3D 87 88| 名称 | 类型 | 只读 | 可选 | 说明 | 89| ---- | ---- | ---- | ---- | ---- | 90| inputs | Record<string, number \| [Vec2](js-apis-inner-scene-types.md#vec2) \| [Vec3](js-apis-inner-scene-types.md#vec3) \| [Vec4](js-apis-inner-scene-types.md#vec4) \| Image> | 是 | 否 | 着色器输入。 | 91 92## MaterialType 93场景中物体材质类型枚举,定义材质的渲染方式。 94 95**系统能力:** SystemCapability.ArkUi.Graphics3D 96 97| 名称 | 值 | 说明 | 98| ---- | ---- | ---- | 99| SHADER | 1 | 材质由着色器定义。 | 100| METALLIC_ROUGHNESS<sup>20+</sup> | 2 | 采用基于物理渲染(PBR)的金属-粗糙度模型,通过金属度与粗糙度参数,模拟更真实的材质光照效果。 | 101 102## CullMode<sup>20+</sup> 103用于设置基于物理渲染(PBR)材质的剔除模式枚举。通过控制剔除物体的正面或背面几何面片,提升渲染性能和视觉效果。 104 105**系统能力:** SystemCapability.ArkUi.Graphics3D 106 107| 名称 | 值 | 说明 | 108| ---- | ---- | ---- | 109| NONE | 0 | 禁用剔除。 | 110| FRONT | 1 | 剔除正面几何面片。 | 111| BACK | 2 | 剔除背面几何面片。 | 112 113## Blend<sup>20+</sup> 114用于控制材质的透明效果。 115 116### 属性 117 118**系统能力:** SystemCapability.ArkUi.Graphics3D 119 120| 名称 | 类型 | 只读 | 可选 | 说明 | 121| ---- | ---- | ---- | ---- | ---- | 122| enabled | boolean | 否 | 否 | 是否启用材质的透明效果模式。true表示开启透明,false表示关闭透明。| 123 124## RenderSort<sup>20+</sup> 125定义材质物体的渲染顺序,控制不同物体在渲染管线中的绘制先后。 126 127### 属性 128 129**系统能力:** SystemCapability.ArkUi.Graphics3D 130 131| 名称 | 类型 | 只读 | 可选 | 说明 | 132| ---- | ---- | ---- | ---- | ---- | 133| renderSortLayer | number | 否 | 是 | 渲染图层id,数值越小,渲染顺序越靠前。取值范围[0, 63],默认图层id为32。| 134| renderSortLayerOrder | number | 否 | 是 | 同一渲染图层内,不同物体的渲染顺序,数值越小,越先渲染。取值范围[0, 255],默认值为0。| 135 136## Material 137材质类型,继承自[SceneResource](#sceneresource-1)。 138 139### 属性 140 141**系统能力:** SystemCapability.ArkUi.Graphics3D 142 143| 名称 | 类型 | 只读 | 可选 | 说明 | 144| ---- | ---- | ---- | ---- | ---- | 145| materialType | [MaterialType](#materialtype) | 是 | 否 | 材质类型。 | 146| shadowReceiver<sup>20+</sup> | boolean | 否 | 是 | 材质是否接收阴影。true表示该材质接收阴影,false表示不接收,默认值为false。 | 147| cullMode<sup>20+</sup> | [CullMode](#cullmode20) | 否 | 是 | 当前材质的剔除模式设置,用于控制是否剔除背面几何面片,默认值为BACK。 | 148| blend<sup>20+</sup> | [Blend](#blend20) | 否 | 是 | 材质是否透明,默认值为false。| 149| alphaCutoff<sup>20+</sup> | number | 否 | 是 | 透明通道阈值,如果像素的alpha值等于或高于此阈值,则渲染该像素;如果低于此阈值,则不会渲染该像素。设置值小于1时,则开启该模式,取值范围为[0, 1],默认值为1。 | 150| renderSort<sup>20+</sup> | [RenderSort](#rendersort20) | 否 | 是 | 渲染排序设置,用于控制材质在渲染管线中的渲染顺序,渲染图层id默认值为32,同一图层内的渲染顺序默认值为0。 | 151 152## MaterialProperty<sup>20+</sup> 153材质属性接口,用于定义材质所使用的纹理、属性因子及纹理采样器信息。 154 155### 属性 156 157**系统能力:** SystemCapability.ArkUi.Graphics3D 158 159| 名称 | 类型 | 只读 | 可选 | 说明 | 160| ---- | ---- | ---- | ---- | ---- | 161| image | [Image](#image) \| null | 否 | 否 | 基于物理渲染(PBR)属性纹理贴图,用于表达材质的纹理信息。| 162| factor | [Vec4](js-apis-inner-scene-types.md#vec4) | 否 | 否 | 基于物理渲染(PBR)属性因子,不同属性不同含义。| 163| sampler | [Sampler](#sampler20) | 否 | 是 | 纹理贴图采样器,默认使用放大、缩小和mipmap过滤模式为线性过滤(LINEAR),纹理贴图U、V、W方向的寻址模式为重复(REPEAT)。| 164 165## MetallicRoughnessMaterial<sup>20+</sup> 166用于实现真实感外观的材质资源。采用基于物理渲染(PBR)的金属-粗糙度模型,通过调节金属度和粗糙度参数,可模拟金属、塑料等不同材质的表面光照与反射效果,继承自[Material](#material)。 167### 属性 168 169**系统能力:** SystemCapability.ArkUi.Graphics3D 170 171| 名称 | 类型 | 只读 | 可选 | 说明 | 172| ---- | ---- | ---- | ---- | ---- | 173| baseColor | [MaterialProperty](#materialproperty20) | 否 | 否 | 基础颜色贴图,用于表达材质在没有光照情况下所表达的颜色信息。| 174| normal | [MaterialProperty](#materialproperty20) | 否 | 否 | 法线贴图,表达物体表面结构细节,使光照效果更真实,不改变几何结构。| 175| material | [MaterialProperty](#materialproperty20) | 否 | 否 | 金属材质参数。<br>粗糙度(Roughness):表达材质因其表面细微的结构细节所导致的反光强弱程度。<br>金属度(Metallic):表达材质的金属属性。<br>反射度(Reflectance):材质的光反射率。| 176| ambientOcclusion | [MaterialProperty](#materialproperty20) | 否 | 否 | 环境光遮蔽贴图,用于模拟环境光在物体凹陷或细节部分的遮挡效果,增强局部阴影表现,提高细节真实感。| 177| emissive | [MaterialProperty](#materialproperty20) | 否 | 否 | 自发光颜色,表达材质自身作为光源向外发光的颜色信息。| 178| clearCoat | [MaterialProperty](#materialproperty20) | 否 | 否 | 透明图层,类似于车漆、碳纤、被水打湿的表面的材质需要在面上再增加一个透明的、具有一定反光特性的面。| 179| clearCoatRoughness | [MaterialProperty](#materialproperty20) | 否 | 否 | 透明图层粗糙度。| 180| clearCoatNormal | [MaterialProperty](#materialproperty20) | 否 | 否 | 透明图层法线贴图。| 181| sheen | [MaterialProperty](#materialproperty20) | 否 | 否 | 微纤维漫反射材质光泽,可用于表示布料和织物材料。| 182| specular | [MaterialProperty](#materialproperty20) | 否 | 否 | 非金属材质的高光反射,表示传统镜面反射强度。| 183 184## ShaderMaterial 185着色器材质,继承自[Material](#material)。 186### 属性 187 188**系统能力:** SystemCapability.ArkUi.Graphics3D 189 190| 名称 | 类型 | 只读 | 可选 | 说明 | 191| ---- | ---- | ---- | ---- | ---- | 192| colorShader | [Shader](#shader) | 否 | 是 | 着色器,默认值为undefined。 | 193 194## SamplerFilter<sup>20+</sup> 195采样器过滤模式枚举,定义纹理采样时的插值方法,用于控制纹理在缩放或变形时如何计算最终像素的颜色值。 196 197**系统能力:** SystemCapability.ArkUi.Graphics3D 198 199| 名称 | 值 | 说明 | 200| ---- | ---- | ---- | 201| NEAREST | 0 | 使用最近邻插值进行采样,速度快但边缘可能锯齿明显。 | 202| LINEAR | 1 | 使用线性插值进行采样,效果更平滑但性能略低。 | 203 204 205## SamplerAddressMode<sup>20+</sup> 206采样器寻址模式枚举,用于控制纹理坐标超出[0, 1]范围时的处理方式。 207 208**系统能力:** SystemCapability.ArkUi.Graphics3D 209 210| 名称 | 值 | 说明 | 211| ---- | ---- | ---- | 212| REPEAT | 0 | 纹理坐标超出范围时,纹理会重复平铺。 | 213| MIRRORED_REPEAT | 1 | 纹理坐标超出范围时,纹理以镜像方式重复。 | 214| CLAMP_TO_EDGE | 2 | 纹理坐标超出范围时,贴图边缘像素会被拉伸延伸。 | 215 216## Sampler<sup>20+</sup> 217采样器接口,用于定义纹理贴图采样时的过滤方式。 218 219### 属性 220 221**系统能力:** SystemCapability.ArkUi.Graphics3D 222 223| 名称 | 类型 | 只读 | 可选 | 说明 | 224| ---- | ---- | ---- | ---- | ---- | 225| magFilter | [SamplerFilter](#samplerfilter20) | 否 | 是 | 放大过滤模式,控制纹理贴图被放大时的采样方式,默认值为LINEAR。 | 226| minFilter | [SamplerFilter](#samplerfilter20) | 否 | 是 | 缩小过滤模式,控制纹理贴图被缩小时的采样方式,默认值为LINEAR。 | 227| mipMapMode | [SamplerFilter](#samplerfilter20) | 否 | 是 | mipmap过滤模式,控制纹理贴图在多层不同分辨率之间的采样方式,默认值为LINEAR。 | 228| addressModeU | [SamplerAddressMode](#sampleraddressmode20) | 否 | 是 | 纹理贴图U方向(水平)的采样方式,默认值为REPEAT。 | 229| addressModeV | [SamplerAddressMode](#sampleraddressmode20) | 否 | 是 | 纹理贴图V方向(垂直)的采样方式,默认值为REPEAT。 | 230 231## SubMesh 232子网格类型。 233### 属性 234 235**系统能力:** SystemCapability.ArkUi.Graphics3D 236 237| 名称 | 类型 | 只读 | 可选 | 说明 | 238| ---- | ---- | ---- | ---- | ---- | 239| name | string | 否 | 否 | 名称,没有特殊格式要求。 | 240| material | [Material](#material) | 否 | 否 | 材质。 | 241| aabb | [Aabb](js-apis-inner-scene-types.md#aabb) | 是 | 否 | 轴对齐边界盒。 | 242 243## Morpher<sup>20+</sup> 244用于控制3D模型的形变,通过调整不同形变目标的权重,实现模型的动态变形效果。 245 246### 属性 247 248**系统能力:** SystemCapability.ArkUi.Graphics3D 249 250| 名称 | 类型 | 只读 | 可选 | 说明 | 251| ---- | ---- | ---- | ---- | ---- | 252| targets | Record<string, number> | 是 | 否 | 用于存储所有形变目标的名称和对应的权重。权重值通常在[0.0, 1.0]范围内。 | 253 254## Mesh 255网格类型,继承自[SceneResource](#sceneresource-1)。 256### 属性 257 258**系统能力:** SystemCapability.ArkUi.Graphics3D 259 260| 名称 | 类型 | 只读 | 可选 | 说明 | 261| ---- | ---- | ---- | ---- | ---- | 262| subMeshes | [SubMesh](#submesh)[] | 是 | 否 | 子网格数组。 | 263| aabb | [Aabb](js-apis-inner-scene-types.md#aabb) | 是 | 否 | 轴对齐包围盒。| 264| materialOverride | [Material](#material) | 否 | 是 | 材质,默认为空。 | 265 266## MeshResource<sup>18+</sup> 267网格资源,继承自[SceneResource](#sceneresource-1)。 268 269**系统能力:** SystemCapability.ArkUi.Graphics3D 270 271## Animation 272动画类型,继承自[SceneResource](#sceneresource-1)。 273### 属性 274 275**系统能力:** SystemCapability.ArkUi.Graphics3D 276 277| 名称 | 类型 | 只读 | 可选 | 说明 | 278| ---- | ---- | ---- | ---- | ---- | 279| enabled | boolean | 否 | 否 | 动画是否使能。true表示可以播放动画,false表示不可以播放动画。 | 280| speed<sup>20+</sup> | number | 否 | 是 | 动画的播放速度因子。默认值为1.0,表示正常速度播放。如果设置为负值,动画将以反向速度播放。 | 281| duration | number | 是 | 否 | 动画持续时间,单位为秒(s),取值范围大于等于0。 | 282| running | boolean | 是 | 否 | 动画运行状态。true表示动画正在播放,false表示动画停止播放。 | 283| progress | number | 是 | 否 | 动画进度状态,取值区间为[0, 1]。 | 284 285### onFinished 286onFinished(callback: Callback\<void>): void 287 288动画播放结束时执行的回调函数,动画播放完成或者finish操作会触发这个回调。 289 290**系统能力:** SystemCapability.ArkUi.Graphics3D 291 292**参数:** 293| 参数名 | 类型 | 必填 | 说明 | 294| ---- | ---- | ---- | ---- | 295| callback | Callback\<void> | 是 | 回调函数,返回值为空。 | 296 297**示例:** 298```ts 299import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 300 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 301 302function onFinished(): void { 303 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 304 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 305 scene.then(async (result: Scene) => { 306 if (result && result.animations && result.animations[0]) { 307 let anim: Animation = result.animations[0]; 308 // 注册回调函数 309 anim.onFinished(()=>{ 310 console.info("onFinished"); 311 }); 312 } 313 }); 314} 315``` 316 317### onStarted 318onStarted(callback: Callback\<void>): void 319 320当动画开始播放时执行的回调函数,start操作以及restart操作也会触发这个回调。 321 322**参数:** 323| 参数名 | 类型 | 必填 | 说明 | 324| ---- | ---- | ---- | ---- | 325| callback | Callback\<void> | 是 | 回调函数,返回值为空。 | 326 327动画开始时会执行传入的回调函数。 328 329**系统能力:** SystemCapability.ArkUi.Graphics3D 330 331**示例:** 332```ts 333import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 334 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 335 336function onStarted(): void { 337 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 338 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 339 scene.then(async (result: Scene) => { 340 if (result && result.animations && result.animations[0]) { 341 let anim: Animation = result.animations[0]; 342 // 注册回调函数 343 anim.onStarted(()=>{ 344 console.info("onStarted"); 345 }); 346 } 347 }); 348} 349``` 350 351### pause 352pause(): void 353 354将动画暂停,动画的播放进度保持在当前状态。 355 356**系统能力:** SystemCapability.ArkUi.Graphics3D 357 358**示例:** 359```ts 360import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 361 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 362 363function pause(): void { 364 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 365 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 366 scene.then(async (result: Scene) => { 367 if (result && result.animations && result.animations[0]) { 368 let anim: Animation = result.animations[0]; 369 // 暂停动画 370 anim.pause(); 371 } 372 }); 373} 374``` 375 376### restart 377restart(): void 378 379从动画的起点开始播放动画。 380 381**系统能力:** SystemCapability.ArkUi.Graphics3D 382 383**示例:** 384```ts 385import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 386 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 387 388function restart(): void { 389 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 390 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 391 scene.then(async (result: Scene) => { 392 if (result && result.animations && result.animations[0]) { 393 let anim: Animation = result.animations[0]; 394 // 重启动画 395 anim.restart(); 396 } 397 }); 398} 399``` 400 401### seek 402seek(position: number): void 403 404从指定位置开始播放动画。 405 406**系统能力:** SystemCapability.ArkUi.Graphics3D 407 408**参数:** 409| 参数名 | 类型 | 必填 | 说明 | 410| ---- | ---- | ---- | ---- | 411| position | number | 是 | 要重新播放动画的起始位置,取值区间为[0, 1]。 | 412 413**示例:** 414```ts 415import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 416 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 417 418function seek(): void { 419 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 420 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 421 scene.then(async (result: Scene) => { 422 if (result && result.animations && result.animations[0]) { 423 let anim: Animation = result.animations[0]; 424 // 指定动画的播放进度到10% 425 anim.seek(0.1); 426 } 427 }); 428} 429``` 430 431### start 432start(): void 433 434基于当前进度开始播放一个动画。 435 436**系统能力:** SystemCapability.ArkUi.Graphics3D 437 438**示例:** 439```ts 440import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 441 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 442 443function start(): void { 444 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 445 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 446 scene.then(async (result: Scene) => { 447 if (result && result.animations && result.animations[0]) { 448 let anim: Animation = result.animations[0]; 449 // 开始动画 450 anim.start(); 451 } 452 }); 453} 454``` 455 456### stop 457stop(): void 458 459停止播放一个动画,并将动画的进度设置到未开始状态。 460 461**系统能力:** SystemCapability.ArkUi.Graphics3D 462 463**示例:** 464```ts 465import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 466 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 467 468function stop(): void { 469 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 470 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 471 scene.then(async (result: Scene) => { 472 if (result && result.animations && result.animations[0]) { 473 let anim: Animation = result.animations[0]; 474 // 停止播放动画,并将动画的进度设置到未开始状态 475 anim.stop(); 476 } 477 }); 478} 479``` 480 481### finish 482finish(): void 483 484直接跳转到动画的最后,并将动画的进度设置到已结束状态。 485 486**系统能力:** SystemCapability.ArkUi.Graphics3D 487 488```ts 489import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters, 490 LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D'; 491 492function finish(): void { 493 // 加载场景资源,支持.gltf和.glb格式,路径和文件名可根据项目实际资源自定义 494 let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf")); 495 scene.then(async (result: Scene) => { 496 if (result && result.animations && result.animations[0]) { 497 let anim: Animation = result.animations[0]; 498 // 直接跳转到动画的最后,并将动画的进度设置到已结束状态。 499 anim.finish(); 500 } 501 }); 502} 503``` 504 505## EnvironmentBackgroundType 506环境背景类型枚举,用于定义场景的背景呈现方式。 507 508**系统能力:** SystemCapability.ArkUi.Graphics3D 509 510| 名称 | 值 | 说明 | 511| ---- | ---- | ---- | 512| BACKGROUND_NONE | 0 | 无背景。| 513| BACKGROUND_IMAGE | 1 | 图片背景。 | 514| BACKGROUND_CUBEMAP | 2 | 立方体贴图背景。| 515| BACKGROUND_EQUIRECTANGULAR | 3 | 等距矩形背景。 | 516 517## Environment 518环境类型,继承自[SceneResource](#sceneresource-1)。 519### 属性 520 521**系统能力:** SystemCapability.ArkUi.Graphics3D 522 523| 名称 | 类型 | 只读 | 可选 | 说明 | 524| ---- | ---- | ---- | ---- | ---- | 525| backgroundType | [EnvironmentBackgroundType](#environmentbackgroundtype) | 否 | 否 | 环境背景类型。 | 526| indirectDiffuseFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | 否 | 否 | 间接散射系数。 | 527| indirectSpecularFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | 否 | 否 | 间接反射系数。 | 528| environmentMapFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | 否 | 否 | 环境地图系数。 | 529| environmentImage | [Image](#image) \| null | 否 | 是 | 环境图片,默认为undefined。 | 530| radianceImage | [Image](#image) \| null | 否 | 是 | 辐射图片,默认为undefined。 | 531| irradianceCoefficients | [Vec3](js-apis-inner-scene-types.md#vec3)[] | 否 | 是 | 辐射系数,默认为undefined。 | 532 533## Image 534图片类型,继承自[SceneResource](#sceneresource-1)。 535### 属性 536 537**系统能力:** SystemCapability.ArkUi.Graphics3D 538 539| 名称 | 类型 | 只读 | 可选 | 说明 | 540| ---- | ---- | ---- | ---- | ---- | 541| width | number | 是 | 否 | 图片宽度,单位为像素(px),取值范围大于0。 | 542| height | number | 是 | 否 | 图片高度,单位为像素(px),取值范围大于0。 | 543