• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SceneResource
2<!--Kit: ArkGraphics 3D-->
3<!--Subsystem: Graphics-->
4<!--Owner: @zzhao0-->
5<!--SE: @zdustc-->
6<!--TSE: @zhangyue283-->
7
8The SceneResource module provides basic resource types in 3D graphics.
9
10> **NOTE**
11>
12> The initial APIs of this module are supported since API version 12. Newly added APIs will be marked with a superscript to indicate their earliest API version.
13
14## Modules to Import
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
21Enumerates the scene resource types, which are used to classify resources in a scene.
22
23**System capability**: SystemCapability.ArkUi.Graphics3D
24
25| Name| Value| Description|
26| ---- | ---- | ---- |
27| UNKNOWN | 0 | Unknown.|
28| NODE | 1 | Node resource.|
29| ENVIRONMENT | 2 | Environment resource.|
30| MATERIAL | 3 | Material resource.|
31| MESH | 4 | Mesh resource.|
32| ANIMATION | 5 | Animation resource.|
33| SHADER | 6 | Shader resource.|
34| IMAGE | 7 | Image resource.|
35| MESH_RESOURCE<sup>18+</sup> | 8 | Mesh resource.|
36
37## SceneResource
38Describes a resource in a scene.
39
40### Properties
41
42**System capability**: SystemCapability.ArkUi.Graphics3D
43
44| Name| Type| Read Only| Optional| Description|
45| ---- | ---- | ---- | ---- | ---- |
46| name | string | No| No| Name. There is no special format requirement.|
47| resourceType | [SceneResourceType](#sceneresourcetype) | Yes| No| Scene resource type. The default value is undefined.|
48| uri | [ResourceStr](../apis-arkui/arkui-ts/ts-types.md#resourcestr) | Yes| Yes| Resource to load. The default value is undefined.|
49
50### destroy
51destroy(): void
52
53Destroys the scene resource and releases all associated resources or references. Once released, the resource can no longer be used or accessed.
54
55**System capability**: SystemCapability.ArkUi.Graphics3D
56
57**Example**
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  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
64  scene.then(async (result: Scene) => {
65    if (result) {
66      let sceneFactory: SceneResourceFactory = result.getResourceFactory();
67      let sceneResourceParameter: SceneResourceParameters = { name: "shaderResource",
68        uri: $rawfile("shaders/custom_shader/custom_material_sample.shader") };
69      let shader: Promise<Shader> = sceneFactory.createShader(sceneResourceParameter);
70      shader.then(async (shaderResult:Shader) => {
71         // Release the resource.
72         shaderResult.destroy();
73      });
74    }
75  });
76}
77```
78
79## Shader
80Shader resource, which inherits from [SceneResource](#sceneresource-1).
81
82### Properties
83
84**System capability**: SystemCapability.ArkUi.Graphics3D
85
86| Name| Type| Read Only| Optional| Description|
87| ---- | ---- | ---- | ---- | ---- |
88| inputs | Record<string, number \| Vec2 \| Vec3 \| Vec4 \| Image> | Yes| No| Inputs of the shader.|
89
90## MaterialType
91Enumerates the material types in a scene. The material type defines how materials in a scene are rendered.
92
93**System capability**: SystemCapability.ArkUi.Graphics3D
94
95| Name| Value| Description|
96| ---- | ---- | ---- |
97| SHADER | 1 | Shader-defined.|
98| METALLIC_ROUGHNESS<sup>20+</sup> | 2 | Metallic-Roughness model based on Physically Based Rendering (PBR), simulating realistic material lighting effects through metallicity and roughness parameters.|
99
100## CullMode<sup>20+</sup>
101Enumerates the culling modes of PBR materials. You can improve rendering performance and visual quality by determining whether the front or back faces of objects are culled.
102
103**System capability**: SystemCapability.ArkUi.Graphics3D
104
105| Name| Value| Description|
106| ---- | ---- | ---- |
107| NONE | 0 | Culling is disabled.|
108| FRONT | 1 | Culls the front faces of geometric objects.|
109| BACK | 2 | Culls the back faces of geometric objects.|
110
111## Blend<sup>20+</sup>
112Controls the transparency of materials.
113
114### Properties
115
116**System capability**: SystemCapability.ArkUi.Graphics3D
117
118| Name| Type| Read Only| Optional| Description|
119| ---- | ---- | ---- | ---- | ---- |
120| enabled | boolean | No| No| Whether the transparency of the material is enabled. **true** if enabled, **false** otherwise.|
121
122## RenderSort<sup>20+</sup>
123Describes the order in which materials are rendered, controlling the sequence of drawing in the rendering pipeline.
124
125### Properties
126
127**System capability**: SystemCapability.ArkUi.Graphics3D
128
129| Name| Type| Read Only| Optional| Description|
130| ---- | ---- | ---- | ---- | ---- |
131| renderSortLayer | number | No| Yes| Rendering layer ID. A smaller value indicates an earlier rendering order. The value range is [0, 63]. The default layer ID is 32.|
132| renderSortLayerOrder | number | No| Yes| Rendering order of different objects within the same rendering layer. A smaller value indicates an earlier rendering order. The value range is [0, 255]. The default value is **0**.|
133
134## Material
135Material resource, which inherits from [SceneResource](#sceneresource-1).
136
137### Properties
138
139**System capability**: SystemCapability.ArkUi.Graphics3D
140
141| Name| Type| Read Only| Optional| Description|
142| ---- | ---- | ---- | ---- | ---- |
143| materialType | [MaterialType](#materialtype) | Yes| No| Type of the material.|
144| shadowReceiver<sup>20+</sup> | boolean | No| Yes| Whether the material receives shadows. **true** if the material receives shadows, **false** otherwise. The default is **false**.|
145| cullMode<sup>20+</sup> | [CullMode](#cullmode20) | No| Yes| Culling mode of the material, which can be used to determine whether to cull front or back faces. The default value is **BACK**.|
146| blend<sup>20+</sup> | [Blend](#blend20) | No| Yes| Whether the material is transparent. The default value is **false**.|
147| alphaCutoff<sup>20+</sup> | number | No| Yes| Threshold of the alpha channel. If the alpha of a pixel is greater than or equal to this threshold, the pixel is rendered; otherwise, the pixel is not rendered. Setting a value less than **1** enables this mode. The value range is [0, 1]. The default value is **1**.|
148| renderSort<sup>20+</sup> | [RenderSort](#rendersort20) | No| Yes| Rendering order, which determines the rendering sequence of materials in the rendering pipeline. The default layer ID is 32, and the default order within the layer is 0.|
149
150## MaterialProperty<sup>20+</sup>
151Defines the textures, property factors, and texture samplers used by a material.
152
153### Properties
154
155**System capability**: SystemCapability.ArkUi.Graphics3D
156
157| Name| Type| Read Only| Optional| Description|
158| ---- | ---- | ---- | ---- | ---- |
159| image | [Image](#image) \| null | No| No| Texture map based on PBR properties to convey the texture information of the material.|
160| factor | [Vec4](js-apis-inner-scene-types.md#vec4) | No| No| PBR property factor, with different meanings for different properties.|
161| sampler | [Sampler](#sampler20) | No| Yes| Texture sampler, with the default value set to **LINEAR** for magnification, minification, and mipmaps, and to **REPEAT** for U, V, and W directions.|
162
163## MetallicRoughnessMaterial<sup>20+</sup>
164Material resource for creating realistic appearances, using the Metallic-Roughness model based on PBR. It simulates the surface lighting and reflection effects of different materials like metal and plastic by adjusting metallicity and roughness parameters. It inherits from [Material](#material).
165### Properties
166
167**System capability**: SystemCapability.ArkUi.Graphics3D
168
169| Name| Type| Read Only| Optional| Description|
170| ---- | ---- | ---- | ---- | ---- |
171| baseColor | [MaterialProperty](#materialproperty20) | No| No| Base color map, which is used to represent the material's color in the absence of lighting.|
172| normal | [MaterialProperty](#materialproperty20) | No| No| Normal map, which is used to represent the surface structure details of an object to enhance lighting realism without altering the geometric structure.|
173| material | [MaterialProperty](#materialproperty20) | No| No| Metal material parameters.<br>**Roughness**: strength of reflection caused by the fine surface structure details of the material.<br>**Metallic**: metallic properties of the material.<br>**Reflectance**: reflectivity of the material.|
174| ambientOcclusion | [MaterialProperty](#materialproperty20) | No| No| Ambient occlusion map, which is used to simulate the occlusion of ambient light in recesses or detailed parts of an object to enhance local shadows and improve detail realism.|
175| emissive | [MaterialProperty](#materialproperty20) | No| No| Emissive color, which is the color of the material as a light source.|
176| clearCoat | [MaterialProperty](#materialproperty20) | No| No| Clear coat, similar to car paint, carbon fiber, or a wet surface, which requires an additional transparent layer with reflective properties.|
177| clearCoatRoughness | [MaterialProperty](#materialproperty20) | No| No| Roughness of the clear coat.|
178| clearCoatNormal | [MaterialProperty](#materialproperty20) | No| No| Normal map of the clear coat.|
179| sheen | [MaterialProperty](#materialproperty20) | No| No| Gentle, widespread shine of microfiber materials, ideal for representing fabrics and textiles.|
180| specular | [MaterialProperty](#materialproperty20) | No| No| Specular reflection of non-metallic materials, showing the intensity of traditional mirror-like reflections.|
181
182## ShaderMaterial
183Shader material, which inherits from [Material](#material).
184### Properties
185
186**System capability**: SystemCapability.ArkUi.Graphics3D
187
188| Name| Type| Read Only| Optional| Description|
189| ---- | ---- | ---- | ---- | ---- |
190| colorShader | [Shader](#shader) | No| Yes| Shader. The default value is undefined.|
191
192## SamplerFilter<sup>20+</sup>
193Enumerates the filtering modes of a sampler. The filtering mode determines the interpolation method used when sampling textures, controlling how final pixel colors are calculated during texture scaling or deformation.
194
195**System capability**: SystemCapability.ArkUi.Graphics3D
196
197| Name| Value| Description|
198| ---- | ---- | ---- |
199| NEAREST | 0 | Uses nearest-neighbor interpolation, which is fast but can result in jagged edges.|
200| LINEAR | 1 | Uses linear interpolation, providing a smoother appearance but with a slight performance cost.|
201
202
203## SamplerAddressMode<sup>20+</sup>
204Enumerates the sampler addressing modes, which are used to control how texture coordinates are handled when they go beyond the [0, 1] range.
205
206**System capability**: SystemCapability.ArkUi.Graphics3D
207
208| Name| Value| Description|
209| ---- | ---- | ---- |
210| REPEAT | 0 | The texture repeats when the coordinates exceed the range.|
211| MIRRORED_REPEAT | 1 | The texture mirrors and repeats when the coordinates exceed the range.|
212| CLAMP_TO_EDGE | 2 | The edge pixels of the texture are stretched when the coordinates exceed the range.|
213
214## Sampler<sup>20+</sup>
215Describes the sampling modes used during texture sampling.
216
217### Properties
218
219**System capability**: SystemCapability.ArkUi.Graphics3D
220
221| Name| Type| Read Only| Optional| Description|
222| ---- | ---- | ---- | ---- | ---- |
223| magFilter | [SamplerFilter](#samplerfilter20) | No| Yes| Sampling mode when the texture is enlarged. The default value is **LINEAR**.|
224| minFilter | [SamplerFilter](#samplerfilter20) | No| Yes| Sampling mode when the texture is reduced. The default value is **LINEAR**.|
225| mipMapMode | [SamplerFilter](#samplerfilter20) | No| Yes| Sampling modes between different texture resolutions. The default value is **LINEAR**.|
226| addressModeU | [SamplerAddressMode](#sampleraddressmode20) | No| Yes| Sampling mode of the texture in the U (horizontal) direction. The default value is **REPEAT**.|
227| addressModeV | [SamplerAddressMode](#sampleraddressmode20) | No| Yes| Sampling mode of the texture in the V (vertical) direction. The default value is **REPEAT**.|
228
229## SubMesh
230Sub-mesh resource.
231### Properties
232
233**System capability**: SystemCapability.ArkUi.Graphics3D
234
235| Name| Type| Read Only| Optional| Description|
236| ---- | ---- | ---- | ---- | ---- |
237| name | string | No| No| Name. There is no special format requirement.|
238| material | [Material](#material) | No| No| Material.|
239| aabb | [Aabb](js-apis-inner-scene-types.md#aabb) | Yes| No| Axis aligned bounding box.|
240
241## Morpher<sup>20+</sup>
242Defines the deformation of 3D models by adjusting the weights of different deformation targets to create dynamic effects.
243
244### Properties
245
246**System capability**: SystemCapability.ArkUi.Graphics3D
247
248| Name| Type| Read Only| Optional| Description|
249| ---- | ---- | ---- | ---- | ---- |
250| targets | Record<string, number> | Yes| No| Used to store the names and weights of deformation targets. The weight value is usually within the range of [0.0, 1.0].|
251
252## Mesh
253Mesh resource, which inherits from [SceneResource](#sceneresource-1).
254### Properties
255
256**System capability**: SystemCapability.ArkUi.Graphics3D
257
258| Name| Type| Read Only| Optional| Description|
259| ---- | ---- | ---- | ---- | ---- |
260| subMeshes | [SubMesh](#submesh)[] | Yes| No| Array of sub-meshes.|
261| aabb | [Aabb](js-apis-inner-scene-types.md#aabb) | Yes| No| Axis aligned bounding box.|
262| materialOverride | [Material](#material) | No| Yes| Material. The default value is undefined.|
263
264## MeshResource<sup>18+</sup>
265Mesh resource, which inherits from [SceneResource](#sceneresource-1).
266
267**System capability**: SystemCapability.ArkUi.Graphics3D
268
269## Animation
270Animation resource, which inherits from [SceneResource](#sceneresource-1).
271### Properties
272
273**System capability**: SystemCapability.ArkUi.Graphics3D
274
275| Name| Type| Read Only| Optional| Description|
276| ---- | ---- | ---- | ---- | ---- |
277| enabled | boolean | No| No| Whether the animation is enabled. **true** if enabled, **false** otherwise.|
278| speed<sup>20+</sup> | number | No| Yes| Playback speed factor of the animation. The default value is **1.0**, indicating that the animation is played at normal speed. If the value is negative, the animation plays in reverse.|
279| duration | number | Yes| No| Animation duration, in seconds. The value must be greater than or equal to 0.|
280| running | boolean | Yes| No| Whether the animation is running. **true** if running, **false** otherwise.|
281| progress | number | Yes| No| Playing progress of the animation. The value range is [0, 1].|
282
283### onFinished
284onFinished(callback: Callback\<void>): void
285
286Called when the animation playback is complete or the **finish** API is called.
287
288**System capability**: SystemCapability.ArkUi.Graphics3D
289
290**Parameters**
291| Name| Type| Mandatory| Description|
292| ---- | ---- | ---- | ---- |
293| callback | Callback\<void> | Yes| Callback function. The return value is null.|
294
295**Example**
296```ts
297import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
298  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
299
300function onFinished() : void {
301  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
302  scene.then(async (result: Scene) => {
303    if (result) {
304      let anim: Animation = result.animations[0];
305      // Register a callback.
306      anim.onFinished(()=>{
307        console.info("onFinished");
308      });
309    }
310  });
311}
312```
313
314### onStarted
315onStarted(callback: Callback\<void>): void
316
317Called when the animation starts to play. The start operation is triggered by calling **start** or **restart**.
318
319**Parameters**
320| Name| Type| Mandatory| Description|
321| ---- | ---- | ---- | ---- |
322| callback | Callback\<void> | Yes| Callback function. The return value is null.|
323
324
325
326**System capability**: SystemCapability.ArkUi.Graphics3D
327
328**Example**
329```ts
330import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
331  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
332
333function onStarted() : void {
334  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
335  scene.then(async (result: Scene) => {
336    if (result) {
337      let anim: Animation = result.animations[0];
338      // Register a callback.
339      anim.onStarted(()=>{
340        console.info("onStarted");
341      });
342    }
343  });
344}
345```
346
347### pause
348pause(): void
349
350Pauses the animation. The animation remains in the current playing progress.
351
352**System capability**: SystemCapability.ArkUi.Graphics3D
353
354**Example**
355```ts
356import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
357  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
358
359function pause() : void {
360  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
361  scene.then(async (result: Scene) => {
362    if (result) {
363      let anim: Animation = result.animations[0];
364      // Pause the animation.
365      anim.pause();
366    }
367  });
368}
369```
370
371### restart
372restart(): void
373
374Plays the animation from the beginning.
375
376**System capability**: SystemCapability.ArkUi.Graphics3D
377
378**Example**
379```ts
380import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
381  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
382
383function restart() : void {
384  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
385  scene.then(async (result: Scene) => {
386    if (result) {
387      let anim: Animation = result.animations[0];
388      // Restart the animation.
389      anim.restart();
390    }
391  });
392}
393```
394
395### seek
396seek(position: number): void
397
398Plays the animation from the specified position.
399
400**System capability**: SystemCapability.ArkUi.Graphics3D
401
402**Parameters**
403| Name| Type| Mandatory| Description|
404| ---- | ---- | ---- | ---- |
405| position | number | Yes| Position from which the animation playback starts. The value range is [0, 1].|
406
407**Example**
408```ts
409import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
410  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
411
412function seek() : void {
413  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
414  scene.then(async (result: Scene) => {
415    if (result) {
416      let anim: Animation = result.animations[0];
417      // Set the animation playback progress to 10%.
418      anim.seek(0.1);
419    }
420  });
421}
422```
423
424### start
425start(): void
426
427Plays the animation based on the current progress.
428
429**System capability**: SystemCapability.ArkUi.Graphics3D
430
431**Example**
432```ts
433import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
434  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
435
436function start() : void {
437  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
438  scene.then(async (result: Scene) => {
439    if (result) {
440      let anim: Animation = result.animations[0];
441      // Start the animation.
442      anim.start();
443    }
444  });
445}
446```
447
448### stop
449stop(): void
450
451Stops playing the animation and sets its progress to **0** (not started).
452
453**System capability**: SystemCapability.ArkUi.Graphics3D
454
455**Example**
456```ts
457import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
458  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
459
460function stop() : void {
461  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
462  scene.then(async (result: Scene) => {
463    if (result) {
464      let anim: Animation = result.animations[0];
465      // Stop playing the animation and set its progress to 0 (not started).
466      anim.stop();
467    }
468  });
469}
470```
471
472### finish
473finish(): void
474
475Finishes the playing of the animation and sets its progress of **1** (finished).
476
477**System capability**: SystemCapability.ArkUi.Graphics3D
478
479```ts
480import { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
481  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
482
483function finish() : void {
484  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
485  scene.then(async (result: Scene) => {
486    if (result) {
487      let anim: Animation = result.animations[0];
488      // Finish the playing of the animation and set its progress of **1** (finished).
489      anim.finish();
490    }
491  });
492}
493```
494
495## EnvironmentBackgroundType
496Enumerates the environment background types, which are used to define how the background of a scene is presented.
497
498**System capability**: SystemCapability.ArkUi.Graphics3D
499
500| Name| Value| Description|
501| ---- | ---- | ---- |
502| BACKGROUND_NONE | 0 | No background.|
503| BACKGROUND_IMAGE | 1 | Image background.|
504| BACKGROUND_CUBEMAP | 2 | Cubemap background.|
505| BACKGROUND_EQUIRECTANGULAR | 3 | Equirectangular background.|
506
507## Environment
508Environment resource, which inherits from [SceneResource](#sceneresource-1).
509### Properties
510
511**System capability**: SystemCapability.ArkUi.Graphics3D
512
513| Name| Type| Read Only| Optional| Description|
514| ---- | ---- | ---- | ---- | ---- |
515| backgroundType | [EnvironmentBackgroundType](#environmentbackgroundtype) | No| No| Environment background type.|
516| indirectDiffuseFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | No| No| Indirect diffuse factor.|
517| indirectSpecularFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | No| No| Indirect specular factor.|
518| environmentMapFactor | [Vec4](js-apis-inner-scene-types.md#vec4) | No| No| Environment map factor.|
519| environmentImage | [Image](#image) \| null | No| Yes| Environment image. The default value is undefined.|
520| radianceImage | [Image](#image) \| null | No| Yes| Radiance image. The default value is undefined.|
521| irradianceCoefficients | [Vec3](js-apis-inner-scene-types.md#vec3)[] | No| Yes| Irradiance coefficients. The default value is undefined.|
522
523## Image
524Image resource, which inherits from [SceneResource](#sceneresource-1).
525### Properties
526
527**System capability**: SystemCapability.ArkUi.Graphics3D
528
529| Name| Type| Read Only| Optional| Description|
530| ---- | ---- | ---- | ---- | ---- |
531| width | number | Yes| No| Image width, in px. The value must be greater than 0.|
532| height | number | Yes| No| Image height, in px. The value must be greater than 0.|
533