• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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