---
name: "SoSceneKit"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoSceneKit/3iv"
---

# SoSceneKit(3iv)

scene nodekit class

## NAME

SoSceneKit — scene nodekit class

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoBaseKit \> SoSceneKit

## SYNOPSIS

**#include \<Inventor/nodekits/SoSceneKit.h\>**

Parts from class SoSceneKit:

**(SoNodeKitListPart)**	**cameraList**\
 **(SoNodeKitListPart)**	**lightList**\
 **(SoNodeKitListPart)**	**childList**

Parts from class SoBaseKit:

**(SoNodeKitListPart)**	**callbackList**

Methods from class SoSceneKit:

	**SoSceneKit()**\
 **static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 **int**	**getCameraNumber()**\
 **void**	**setCameraNumber(int camNum)**\
 **static SoType**	**getClassTypeId()**

Methods from class SoBaseKit:

**virtual const SoNodekitCatalog \***\
 	**getNodekitCatalog() const**\
 **virtual SoNode \***	**getPart(const SbName &partName, SbBool makeIfNeeded)**\
 **SbString**	**getPartString(const SoBase \*part)**\
 **virtual SoNodeKitPath \***	**createPathToPart(const SbName &partName, SbBool makeIfNeeded, const SoPath \*pathToExtend = NULL)**\
 **virtual SbBool**	**setPart(const SbName &partName, SoNode \*newPart)**\
 **SbBool**	**set(char \*partName, char \*parameters)**\
 **SbBool**	**set(char \*nameValuePairs)**\
 **static SbBool**	**isSearchingChildren()**\
 **static void**	**setSearchingChildren(SbBool newVal)**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

Macros from class SoBaseKit:

**SO\_GET\_PART(kit, partName, partClass)**

**SO\_CHECK\_PART(kit, partName, partClass)**

## DESCRIPTION

**This nodekit is used to organize camera, (SoCameraKit**), light, (**SoLightKit**), and object, (**SoShapeKit**, **SoSeparatorKit**, and **SoWrapperKit**) nodekits into a scene. A scene is composed of a list of cameras, a list of lights, and a list of children. There are three parts created by this nodekit: *cameraList*, *lightList*, and *childList*.

The *cameraList* part is a *list part* of **SoCameraKit** nodes. The list itself is an **SoNodeKitListPart**, and since only one camera can be active at a time, the *container* of the *list part* is an **SoSwitch** node. Use **setCameraNumber()**, and the scene kit will set the switch to make that camera active.

The *lightList* part is a list of **SoLightKit** nodes. The *lightList* is used to illuminate the objects contained in the *childList* part.

The *childList* part contains a set of **SoSeparatorKit** nodes. You can add any kind of **SoSeparatorKit** to this list, including **SoShapeKit** and **SoWrapperKit**. Since each **SoSeparatorKit** in turn contains a *childList*, this part is used to describe a hierarchical scene. (See the reference page for **SoSeparatorKit**). All members of *childList* are lit by the lights in *lightList* and rendered by the active camera in *cameraList*.

## PARTS

**(SoNodeKitListPart)**	**cameraList**\
 This part is an **SoNodeKitListPart** It has a *container* that is an **SoSwitch** node. The list may contain only **SoCameraKit** nodekits. The active child of the **SoSwitch** is the *active* camera. This part is **NULL** by default, but is automatically created whenever you add a camera, as with **setPart("cameraList\[0\]", myNewCamera)** .

**(SoNodeKitListPart)**	**lightList**\
 This part is an **SoNodeKitListPart** that uses an defines an **SoGroup** as its *container* The list may contain only **SoLightKit** nodekits. Add **SoLightKits** to this list and they will light the members of the *childList* of this **SoSceneKit**. This part is **NULL** by default, but is automatically created when you add a light.

**(SoNodeKitListPart)**	**childList**\
 This part is an **SoNodeKitListPart** that uses an **SoGroup** for its *container*. The list may contain only **SoSeparatorKit** nodekits or nodekits derived from **SoSeparatorKit** (e.g., **SoShapeKit** and **SoWrapperKit**). These children represent the objects in the scene. This part is **NULL** by default, but is automatically created whenever you add a child to the *childList*. Also, when asked to build a member of the *childList*, the scenekit will build an **SoShapeKit** by default. So if the *childList* part is NULL, and you call: **getPart("childList\[0\]", TRUE)** . the scene kit will create the *childList* and add an **SoShapeKit** as the new element in the list.

## METHODS

	**SoSceneKit()**\
 Constructor.

**static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 Returns an **SoNodekitCatalog** for the class **SoSceneKit**.

**int**	**getCameraNumber()**\
 **void**	**setCameraNumber(int camNum)**\
 Gets and sets current camera index. This index refers to which child is active in the *cameraList* part (**SoSwitch** node).

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## CATALOG PARTS

| | | | |
| --- | --- | --- | --- |
| **All parts** |
|  |  |  | **NULL by** |
| **Part Name** | **Part Type** | **Default Type** | **Default** |
|  |
| callbackList | NodeKitListPart | -- | yes |
| cameraList | NodeKitListPart | -- | yes |
| lightList | NodeKitListPart | -- | yes |
| childList | NodeKitListPart | -- | yes |
|  |

| | | |
| --- | --- | --- |
| **Extra information for list parts from above table** |
| **Part Name** | **Container Type** | **Permissible Types** |
|  |
| callbackList | Separator | Callback, EventCallback |
| cameraList | Switch | CameraKit |
| lightList | Group | LightKit |
| childList | Group | ShapeKit, SeparatorKit |
|  |

## FILE FORMAT/DEFAULTS

```
SceneKit {
callbackList	NULL
cameraList	NodeKitListPart {
    containerTypeName "Switch"     childTypeNames "CameraKit"     containerNode     Switch {
	whichChild 0 	CameraKit {
	    camera 	    PerspectiveCamera {
	    }
 	}
    }
 }
lightList	NULL
childList	NULL
}
```

## SEE ALSO

**SoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoNodekitCatalog, SoSeparatorKit, SoShapeKit, SoWrapperKit**
