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