1e41f4b71Sopenharmony_ci# SceneNode
2e41f4b71Sopenharmony_ciThe SceneNode module provides the types and operation methods of scene nodes in 3D graphics.
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci> **NOTE**
5e41f4b71Sopenharmony_ci>
6e41f4b71Sopenharmony_ci> 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.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci## Modules to Import
9e41f4b71Sopenharmony_ci```ts
10e41f4b71Sopenharmony_ciimport { LayerMask, NodeType, Container, Node, Geometry, LightType, Light, SpotLight, DirectionalLight,
11e41f4b71Sopenharmony_ci  Camera } from '@kit.ArkGraphics3D';
12e41f4b71Sopenharmony_ci```
13e41f4b71Sopenharmony_ci## LayerMask
14e41f4b71Sopenharmony_ciLayer mask of a node.
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### getEnabled
17e41f4b71Sopenharmony_cigetEnabled(index: number): boolean
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ciChecks whether the mask is enabled for a layer of a given index.
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**Parameters**
24e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
25e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
26e41f4b71Sopenharmony_ci| index | number | Yes| Index of the layer. The value is an integer greater than or equal to 0.|
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci**Return value**
29e41f4b71Sopenharmony_ci| Type| Description|
30e41f4b71Sopenharmony_ci| ---- | ---- |
31e41f4b71Sopenharmony_ci| boolean | **true**: The layer mask is enabled.<br>**false**: The layer mask is disabled.|
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci**Example**
34e41f4b71Sopenharmony_ci```ts
35e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
36e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_cifunction layerMask() : void {
39e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
40e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
41e41f4b71Sopenharmony_ci    if (result) {
42e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode_");
43e41f4b71Sopenharmony_ci      if (node) {
44e41f4b71Sopenharmony_ci          // Obtain the enabled status of the mask.
45e41f4b71Sopenharmony_ci          let enabled: Boolean = node.layerMask.getEnabled(1);
46e41f4b71Sopenharmony_ci      }
47e41f4b71Sopenharmony_ci    }
48e41f4b71Sopenharmony_ci  });
49e41f4b71Sopenharmony_ci}
50e41f4b71Sopenharmony_ci```
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci### setEnabled
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_cisetEnabled(index: number, enabled: boolean): void
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ciEnables the mask of a layer of a given index.
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci**Parameters**
61e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
62e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
63e41f4b71Sopenharmony_ci| index | number | Yes| Index of the layer. The value is an integer greater than or equal to 0.|
64e41f4b71Sopenharmony_ci| enabled | boolean | Yes| Enabled status to set. The value **true** means to enable the layer mask, and **false** means the opposite.|
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci**Example**
67e41f4b71Sopenharmony_ci```ts
68e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
69e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_cifunction layerMask() : void {
72e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
73e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
74e41f4b71Sopenharmony_ci    if (result) {
75e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
76e41f4b71Sopenharmony_ci      if (node) {
77e41f4b71Sopenharmony_ci          // Set the enabled status of the mask.
78e41f4b71Sopenharmony_ci          node.layerMask.setEnabled(1, true);
79e41f4b71Sopenharmony_ci      }
80e41f4b71Sopenharmony_ci    }
81e41f4b71Sopenharmony_ci  });
82e41f4b71Sopenharmony_ci}
83e41f4b71Sopenharmony_ci```
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci## NodeType
86e41f4b71Sopenharmony_ciEnumerates the node types.
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
89e41f4b71Sopenharmony_ci| Name| Value| Description|
90e41f4b71Sopenharmony_ci| ---- | ---- | ---- |
91e41f4b71Sopenharmony_ci| NODE | 1 | Empty node.|
92e41f4b71Sopenharmony_ci| GEOMETRY | 2 | Geometry node.|
93e41f4b71Sopenharmony_ci| CAMERA | 3 | Camera node.|
94e41f4b71Sopenharmony_ci| LIGHT | 4 | Light node.|
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci## Container\<T>
97e41f4b71Sopenharmony_ciContainer for defining scene nodes. It provides a way to group scene nodes into a hierarchy.
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci### append
100e41f4b71Sopenharmony_ciappend(item: T): void
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ciAppends a node to the container.
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**Parameters**
107e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
108e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
109e41f4b71Sopenharmony_ci| item | T | Yes| Object of the T type.|
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci**Example**
112e41f4b71Sopenharmony_ci```ts
113e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
114e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_cifunction append() : void {
117e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
118e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
119e41f4b71Sopenharmony_ci    if (result) {
120e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
121e41f4b71Sopenharmony_ci      // Call append to add a node.
122e41f4b71Sopenharmony_ci      result.root?.children.get(0)?.children.append(node);
123e41f4b71Sopenharmony_ci    }
124e41f4b71Sopenharmony_ci  });
125e41f4b71Sopenharmony_ci}
126e41f4b71Sopenharmony_ci```
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci### insertAfter
130e41f4b71Sopenharmony_ciinsertAfter(item: T, sibling: T | null): void
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ciInserts a node after a sibling node.
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci**Parameters**
137e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
138e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
139e41f4b71Sopenharmony_ci| item | T | Yes| Node to insert.|
140e41f4b71Sopenharmony_ci| sibling | T \| null | Yes| Sibling node.|
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci**Example**
143e41f4b71Sopenharmony_ci```ts
144e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
145e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_cifunction insertAfter() : void {
148e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
149e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
150e41f4b71Sopenharmony_ci    if (result) {
151e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
152e41f4b71Sopenharmony_ci      // Call insertAfter to add a node.
153e41f4b71Sopenharmony_ci      result.root?.children.get(0)?.children.insertAfter(node, null);
154e41f4b71Sopenharmony_ci    }
155e41f4b71Sopenharmony_ci  });
156e41f4b71Sopenharmony_ci}
157e41f4b71Sopenharmony_ci```
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci### remove
160e41f4b71Sopenharmony_ciremove(item: T): void
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ciRemoves a node.
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_ci**Parameters**
167e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
168e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
169e41f4b71Sopenharmony_ci| item | T | Yes| Node to remove.|
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci**Example**
172e41f4b71Sopenharmony_ci```ts
173e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
174e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_cifunction remove() : void {
177e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
178e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
179e41f4b71Sopenharmony_ci    if (result) {
180e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
181e41f4b71Sopenharmony_ci      // Call remove to remove a node.
182e41f4b71Sopenharmony_ci      result.root?.children.remove(node);
183e41f4b71Sopenharmony_ci    }
184e41f4b71Sopenharmony_ci  });
185e41f4b71Sopenharmony_ci}
186e41f4b71Sopenharmony_ci```
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci### get
189e41f4b71Sopenharmony_ciget(index: number): T | null
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ciObtains a node of a given index. If no node is obtained, null is returned.
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci**Parameters**
196e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
197e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
198e41f4b71Sopenharmony_ci| index | number | Yes| Index of the node. The value is an integer greater than or equal to 0.|
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci**Return value**
201e41f4b71Sopenharmony_ci| Type| Description|
202e41f4b71Sopenharmony_ci| ---- | ---- |
203e41f4b71Sopenharmony_ci| T \| null | Object obtained. If no object is obtained, null is returned.|
204e41f4b71Sopenharmony_ci
205e41f4b71Sopenharmony_ci**Example**
206e41f4b71Sopenharmony_ci```ts
207e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
208e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_cifunction get() : void {
211e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
212e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
213e41f4b71Sopenharmony_ci    if (result) {
214e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
215e41f4b71Sopenharmony_ci      // Get node 0 from children.
216e41f4b71Sopenharmony_ci      result.root?.children.get(0)?.children.insertAfter(node, null);
217e41f4b71Sopenharmony_ci    }
218e41f4b71Sopenharmony_ci  });
219e41f4b71Sopenharmony_ci}
220e41f4b71Sopenharmony_ci```
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci### clear
223e41f4b71Sopenharmony_ciclear(): void
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ciClears all nodes in the container.
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci**Example**
230e41f4b71Sopenharmony_ci```ts
231e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
232e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_cifunction clear() : void {
235e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
236e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
237e41f4b71Sopenharmony_ci    if (result) {
238e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode/Scene/");
239e41f4b71Sopenharmony_ci      // Clear the nodes in children.
240e41f4b71Sopenharmony_ci      result.root?.children.clear();
241e41f4b71Sopenharmony_ci    }
242e41f4b71Sopenharmony_ci  });
243e41f4b71Sopenharmony_ci}
244e41f4b71Sopenharmony_ci```
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci### count
247e41f4b71Sopenharmony_cicount(): number
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ciObtains the number of nodes in the container.
250e41f4b71Sopenharmony_ci
251e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ci**Return value**
254e41f4b71Sopenharmony_ci| Type| Description|
255e41f4b71Sopenharmony_ci| ---- | ---- |
256e41f4b71Sopenharmony_ci| number | Number of nodes in the container.|
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci**Example**
259e41f4b71Sopenharmony_ci```ts
260e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
261e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_cifunction count() : void {
264e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
265e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
266e41f4b71Sopenharmony_ci    if (result) {
267e41f4b71Sopenharmony_ci      let node : Node | null = result.getNodeByPath("rootNode_");
268e41f4b71Sopenharmony_ci      if (node) {
269e41f4b71Sopenharmony_ci        let container: Container<Node> = node.children;
270e41f4b71Sopenharmony_ci        // Obtain the number of nodes in children.
271e41f4b71Sopenharmony_ci        let count: number = container.count();
272e41f4b71Sopenharmony_ci      }
273e41f4b71Sopenharmony_ci    }
274e41f4b71Sopenharmony_ci  });
275e41f4b71Sopenharmony_ci}
276e41f4b71Sopenharmony_ci```
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci## Node
279e41f4b71Sopenharmony_ciThe 3D scene consists of nodes in a tree hierarchy, where each node implements a **Node** interface. This class inherits from [SceneResource](js-apis-inner-scene-resources.md#sceneresource).
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_ci### Properties
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci| Name| Type| Read Only| Optional| Description|
286e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- | ---- |
287e41f4b71Sopenharmony_ci| position | [Position3](js-apis-inner-scene-types.md#position3) | No| No| Position of the node.|
288e41f4b71Sopenharmony_ci| rotation | [Quaternion](js-apis-inner-scene-types.md#quaternion) | No| No| Rotation angle of the node.|
289e41f4b71Sopenharmony_ci| scale | [Scale3](js-apis-inner-scene-types.md#scale3) | No| No| Scale factor of the node.|
290e41f4b71Sopenharmony_ci| visible | boolean | No| No| Whether the node is visible. The value **true** means that the node is visible, and **false** means the opposite.|
291e41f4b71Sopenharmony_ci| nodeType | [NodeType](#nodetype) | Yes| No| Type of the node.|
292e41f4b71Sopenharmony_ci| layerMask | [LayerMask](#layermask) | Yes| No| Layer mask of the node.|
293e41f4b71Sopenharmony_ci| path | string | Yes| No| Path of the node.|
294e41f4b71Sopenharmony_ci| parent | [Node](#node) \| null | Yes| No| Parent node of the node. If the parent node does not exist, the value is null.|
295e41f4b71Sopenharmony_ci| children | [Container](js-apis-inner-scene-nodes.md#containert)\<[Node](#node)> | Yes| No| Children of the node. If the node does not have a child, the value is null.|
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci### getNodeByPath
298e41f4b71Sopenharmony_cigetNodeByPath(path: string): Node | null
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ciObtains a node by path. If no node is obtained, null is returned.
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**Parameters**
305e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
306e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- |
307e41f4b71Sopenharmony_ci| path | string | Yes| Path in the scene node hierarchy. Each layer is separated by a slash (/).|
308e41f4b71Sopenharmony_ci
309e41f4b71Sopenharmony_ci**Return value**
310e41f4b71Sopenharmony_ci| Type| Description|
311e41f4b71Sopenharmony_ci| ---- | ---- |
312e41f4b71Sopenharmony_ci| [Node](#node) \| null | **Node** object.|
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci**Example**
315e41f4b71Sopenharmony_ci```ts
316e41f4b71Sopenharmony_ciimport { Image, Shader, MaterialType, Material, ShaderMaterial, Animation, Environment, Container, SceneNodeParameters,
317e41f4b71Sopenharmony_ci  LightType, Light, Camera, SceneResourceParameters, SceneResourceFactory, Scene, Node } from '@kit.ArkGraphics3D';
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_cifunction getNode() : void {
320e41f4b71Sopenharmony_ci  let scene: Promise<Scene> = Scene.load($rawfile("gltf/CubeWithFloor/glTF/AnimatedCube.gltf"));
321e41f4b71Sopenharmony_ci  scene.then(async (result: Scene) => {
322e41f4b71Sopenharmony_ci    if (result && result.root) {
323e41f4b71Sopenharmony_ci      // Search for a node.
324e41f4b71Sopenharmony_ci      let geo : Node | null = result.root.getNodeByPath("scene/node");
325e41f4b71Sopenharmony_ci    }
326e41f4b71Sopenharmony_ci  });
327e41f4b71Sopenharmony_ci}
328e41f4b71Sopenharmony_ci```
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci## Geometry
331e41f4b71Sopenharmony_ciGeometry node, which inherits from [Node](#node).
332e41f4b71Sopenharmony_ci
333e41f4b71Sopenharmony_ci### Properties
334e41f4b71Sopenharmony_ci
335e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci| Name| Type| Read Only| Optional| Description|
338e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- | ---- |
339e41f4b71Sopenharmony_ci| mesh | [Mesh](js-apis-inner-scene-resources.md#mesh) | Yes| No| Mesh attribute.|
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci## LightType
343e41f4b71Sopenharmony_ciEnumerates the light types.
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci| Name| Value| Description|
348e41f4b71Sopenharmony_ci| ---- | ---- | ---- |
349e41f4b71Sopenharmony_ci| DIRECTIONAL | 1 | Directional light.|
350e41f4b71Sopenharmony_ci| SPOT | 2 | Spot light.|
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci## Light
353e41f4b71Sopenharmony_ciLight node, which inherits from [Node](#node).
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci### Properties
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
358e41f4b71Sopenharmony_ci
359e41f4b71Sopenharmony_ci| Name| Type| Read Only| Optional| Description|
360e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- | ---- |
361e41f4b71Sopenharmony_ci| lightType | [LightType](#lighttype) | Yes| No| Light type.|
362e41f4b71Sopenharmony_ci| color | [Color](js-apis-inner-scene-types.md#color) | No| No| Color.|
363e41f4b71Sopenharmony_ci| intensity | number | No| No| Light intensity. The value is a real number greater than 0.|
364e41f4b71Sopenharmony_ci| shadowEnabled | boolean | No| No| Whether the shadow effect is enabled. The value **true** means that the shadow effect is enabled, and **false** means the opposite.|
365e41f4b71Sopenharmony_ci| enabled | boolean | No| No| Whether the light is used. The value **true** means that the light is used, and **false** means the opposite.|
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci## SpotLight
368e41f4b71Sopenharmony_ciSpot light, which inherits from [Light](#light).
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci## DirectionalLight
373e41f4b71Sopenharmony_ciDirectional light, which inherits from [Light](#light).
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
376e41f4b71Sopenharmony_ci
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci## Camera
379e41f4b71Sopenharmony_ciCamera node, which inherits from [Node](#node).
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci### Properties
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUi.Graphics3D
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ci| Name| Type| Read Only| Optional| Description|
386e41f4b71Sopenharmony_ci| ---- | ---- | ---- | ---- | ---- |
387e41f4b71Sopenharmony_ci| fov | number | No| No| Field of view. The value ranges from 0 to π radians.|
388e41f4b71Sopenharmony_ci| nearPlane | number | No| No| Near plane. The value is greater than 0.|
389e41f4b71Sopenharmony_ci| farPlane | number | No| No| Remote plane. The value must be greater than that of **nearPlane**.|
390e41f4b71Sopenharmony_ci| enabled | boolean | No| No| Whether the camera is enabled. The value **true** means that the camera is enabled, and **false** means the opposite.|
391e41f4b71Sopenharmony_ci| postProcess | [PostProcessSettings](js-apis-inner-scene-post-process-settings.md#postprocesssettings) \| null | No| No| Post-processing settings.|
392e41f4b71Sopenharmony_ci| clearColor | [Color](js-apis-inner-scene-types.md#color) \| null | No| No| Color after the render target is cleared.|
393