# Scene Design

# Manage Scenes

# Create a New Scene

#### <a class="anchor" id="bkmrk--15"></a>Create a New Scene

There are several options how to create a scene:

Use the menu item "New Scene" from the "Scene" menu:

<div drawio-diagram="607"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676364261.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>Use the toolbar button "Add a new scene":

<div drawio-diagram="5998"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717746216.png" alt=""/></div>

<div class="contents" id="bkmrk--2"></div>Add a new scene via shortcut:   
&gt; Use "Ctrl+2" for a new 2D scene.   
&gt; Use "Ctrl+3" for a new 3D scene.

Left click in the Solution Explorer and use the context menu: Select "Add" &gt; "New Item".

<div drawio-diagram="5999"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717746350.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>---

#### <a class="anchor" id="bkmrk--19"></a>Scene Templates

Scene templates are supported in SceneComposer. A scene created by the user can be made template by checking its IsTemplate property. This property is available as a check-box in the Properties panel. The dialogue used to create new scenes allows the user to select an existing template or import.

<div drawio-diagram="6003"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717746711.png" alt=""/></div>

<div class="contents" id="bkmrk--7"><div class="contents"><div class="textblock">  
</div></div></div>The dialogue used to create new scenes allows the user to select an existing template or import. If there are many scenes - 2D or 3D - created as templates, any of them can be selected and used as a template.

<div drawio-diagram="6004"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717746798.png" alt=""/></div>

<div class="contents" id="bkmrk--9"><div class="contents"><div class="textblock">  
</div></div></div>If necessary, it is possible to save a new perspective layout, which will be based on the current perspective. Also the possibility to delete a perspective was added.

##### <a class="anchor" id="bkmrk--22"></a>Scene Properties

Following properties must be specified for a new Scene:

<div class="contents" id="bkmrk-%22location%22%3A-the-fold"><div class="contents"><div class="textblock">- **"Location":** The folder which will contain the new scene within the solution.
- **"Name":** Scene name
- **"Export Always":** If this option is ticked, the scene will always be exported to the asset during asset generation.

</div></div></div>These properties can be modified in the Properties panel, when the scene is selected in the Solution Explorer or in the Scene Tree.

##### <a class="anchor" id="bkmrk--23"></a>Create a Scene from Template

A new **3D Scene** can also be created from template via the "Add Scene From Template" context menu of the imported scene from the "Imports" panel or in the Solution Explorer:

<div drawio-diagram="6008"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717747033.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents"><div class="textblock">  
</div></div></div>A new scene named after the template scene is created, which can be edited as a user-defined scene.

---

#### <a class="anchor" id="bkmrk--25"></a>Scenes List

All the scenes part of a solution are listed in the Scenes List.

<div drawio-diagram="6009"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717749257.png" alt=""/></div>

<div class="contents" id="bkmrk--14"><div class="contents"><div class="textblock">  
</div></div></div>Select a scene from this list to open the scene in the Scene Editor.

<div class="contents" id="bkmrk-template-scenes-are-"><div class="textblock">- Template scenes are listed in the Imports category
- And user defined scenes in the Scenes category.

</div></div><div class="contents" id="bkmrk-only-user-defined-sc"><div class="textblock"><dl class="note"><dd><p class="callout info">Only user-defined scenes can be edited in SceneComposer.</p>

</dd></dl></div></div>

# Delete a Scene

Right click on a scene in the Solution Explorer or in Scene Tree panel and select "Delete" from the context menu.

<div drawio-diagram="6016"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717751351.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>If some items part of the scene are used in an animation, the "Delete Items" dialog will list the paths of all animations using items from the given scene, and the user will have the possibility to select a resolution strategy for all of them or just for some specific usage item(s).

<div drawio-diagram="6010"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717749423.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="textblock">  
</div></div>

# Refresh a Scene

After certain modifications, it might be required to refresh a scene explicitly to be rendered with updated properties.

For refreshing a scene press F5 or use the menu item "Refresh Scene" from the "Scene" menu or the Toolbar button "Refresh scene".

<div drawio-diagram="6011"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717749543.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="textblock">  
</div></div>

# Scene Tree Editing

# Scene Tree UI

This section explains the User Interface of the Scene Tree panel.

<div drawio-diagram="7192"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730098877.png" alt=""/></div>

<table border="1" class="align-center" id="bkmrk-no.-%E5%90%8D%E5%89%8D-%E8%AA%AC%E6%98%8E-1-%E3%83%8A%E3%83%93%E3%82%B2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%9C" style="border-collapse: collapse; width: 700px; border-width: 1px; height: 838.25px;"><colgroup><col style="width: 59px;"></col><col style="width: 190px;"></col><col style="width: 450px;"></col></colgroup><tbody><tr style="height: 29.6px;"><td style="border-width: 1px; height: 29.6px; background-color: rgb(35, 111, 161);">**<span style="color: rgb(236, 240, 241);">No.</span>**</td><td style="border-width: 1px; height: 29.6px; background-color: rgb(35, 111, 161);">**<span style="color: rgb(236, 240, 241);">Name</span>**</td><td style="border-width: 1px; height: 29.6px; background-color: rgb(35, 111, 161);">**<span style="color: rgb(236, 240, 241);">Description</span>**</td></tr><tr style="height: 102.4px;"><td style="border-width: 1px; height: 102.4px;">1</td><td class="align-left" style="border-width: 1px; height: 102.4px;">Navigation button</td><td class="align-left" style="border-width: 1px; height: 102.4px;">This button is enabled when multiple scenes are displayed.

The button has a back (left arrow) and forward (right arrow) function.  
Clicking the triangle button at the bottom right of each arrow button displays the display history.

</td></tr><tr style="height: 80px;"><td style="border-width: 1px; height: 80px;">2</td><td class="align-left" style="border-width: 1px; height: 80px;">Lock button</td><td class="align-left" style="border-width: 1px; height: 80px;">This button is enabled when a node is selected in the scene tree.

Pressing the button locks the selected node. For details, please refer to <span style="color: rgb(230, 126, 35);">[here](https://doc316en.candera.eu/books/scene-design/page/locking-ui-elements)</span>. When a lock is set, the lock icon is displayed. The child node icons will be displayed in grey.

</td></tr><tr style="height: 124.8px;"><td style="border-width: 1px; height: 124.8px;">3</td><td class="align-left" style="border-width: 1px; height: 124.8px;">Rendering button</td><td class="align-left" style="border-width: 1px; height: 124.8px;">This button is enabled when a node is selected in the scene tree.

This button is used to set whether or not the node will be rendered at design-time and run-time. If rendering is disabled, child nodes will also not be rendered. If rendering is disabled, the rendering disabled icon will be displayed.

</td></tr><tr style="height: 85.6px;"><td style="border-width: 1px; height: 85.6px;">4</td><td class="align-left" style="border-width: 1px; height: 85.6px;">Transparency</td><td class="align-left" style="border-width: 1px; height: 85.6px;">This function is enabled when a node is selected in the scene tree.

This sets the local alpha transparency (Alpha Value) of the selected node. The effective alpha value is combined with the material alpha value of the node.</td></tr><tr style="height: 46.4px;"><td style="border-width: 1px; height: 46.4px;">5</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Search field</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Searches for items in the scene tree and extra scene tree. Nodes containing the input keywords are highlighted.</td></tr><tr style="height: 46.4px;"><td style="border-width: 1px; height: 46.4px;">6</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Scene tree</td><td class="align-left" style="border-width: 1px; height: 46.4px;">The nodes that make up the scene displayed in the Scene Editor panel are displayed in a tree.</td></tr><tr style="height: 46.4px;"><td style="border-width: 1px; height: 46.4px;">7</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Extra scene tree</td><td class="align-left" style="border-width: 1px; height: 46.4px;">The behaviour set for the selected node is displayed here.</td></tr><tr style="height: 57.6px;"><td style="border-width: 1px; height: 57.6px;">8</td><td class="align-left" style="border-width: 1px; height: 57.6px;">Rendering disabled icon</td><td class="align-left" style="border-width: 1px; height: 57.6px;">If rendering is disabled using **Rendering button**, the rendering disabled icon will be displayed.

</td></tr><tr style="height: 63.2px;"><td style="border-width: 1px; height: 63.2px;">9</td><td class="align-left" style="border-width: 1px; height: 63.2px;">Lock icon</td><td class="align-left" style="border-width: 1px; height: 63.2px;">If the node is locked using **Lock button**, a lock icon will be displayed. If the locked node has child nodes, these will also be displayed with a lock icon (greyed out).</td></tr><tr style="height: 109.45px;"><td style="border-width: 1px; height: 109.45px;">10</td><td class="align-left" style="border-width: 1px; height: 109.45px;">Annotation</td><td class="align-left" style="border-width: 1px; height: 109.45px;">The status of each node is displayed using four-colour icons.

- **Orange** : If a node has a behaviour set
- **Blue** : If a node has an animation property set
- **Yellow** : If a script is set for the node
- **Red** : If an error/warning/message is displayed for a node

</td></tr><tr style="height: 46.4px;"><td style="border-width: 1px; height: 46.4px;">11</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Fusion</td><td class="align-left" style="border-width: 1px; height: 46.4px;">Displays the Fusion panel for the node currently selected in the scene tree.</td></tr></tbody></table>

# Create Nodes

#### <a class="anchor" id="bkmrk--6"></a>Create Nodes from Toolbox

Drag an item from the Toolbox and drop it

<div class="contents" id="bkmrk-either-into-the-scen"><div class="contents"><div class="contents"><div class="textblock">- either into the Scene Tree to sort the node properly into the scene graph
- or directly into the render view of the Scene Editor to create the node on a specific display coordinate.

</div></div></div></div><div drawio-diagram="6013"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717750498.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>When adding a node to the scene tree, note the following:

<div class="contents" id="bkmrk-the-new-node-will-be"><div class="contents"><div class="contents"><div class="textblock">1. The new node will be created as the last child of the node on which the node is dropped.
2. To modify the scene tree structure, hold the "Ctrl" key while moving the node along the scene tree to the desired position. The dragged node will be positioned below the node it was dropped on.
3. Moving a node along the scene tree without keeping the "Ctrl" key pressed will move the selected node inside the node it was dropped on.

</div></div></div></div>---

#### <a class="anchor" id="bkmrk--8"></a>Create Nodes from Imports

Drag an item from a user-defined import (a template scene node) and drop it to Scene Editor or Scene Tree.

<div drawio-diagram="6014"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717751024.png" alt=""/></div>

<div class="contents" id="bkmrk--3"><div class="contents"><div class="textblock">  
</div></div></div>**Scene Editor:** Drop the template scene node in the Scene Editor to create an instance of this node at the given location. The new scene node will be created at the top level of the scene graph.

**Scene Tree:** As an alternative, the template scene node from Imports can also be dropped to the Scene Tree. This way it is possible to hierarchically sort the new node into the scene graph.

<div class="contents" id="bkmrk-bitmaps-from-imports"><div class="contents"><div class="textblock"><dl class="note"><dd></dd><dd></dd><dd><p class="callout info">Bitmaps from Imports can only be dropped on an already existing RenderNode or BitmapNode. In this case, a BitmapBrushAlphaBlend effect will be created on that node referencing the given bitmap.</p>

</dd></dl></div></div></div>When adding a node to the scene tree, note the following:

<div class="contents" id="bkmrk-the-new-node-will-be-0"><div class="contents"><div class="contents"><div class="textblock">1. The new node will be created as the last child of the node on which the node is dropped.
2. To modify the scene tree structure, hold the "Ctrl" key while moving the node along the scene tree to the desired position.
3. Moving a node along the scene tree without keeping the "Ctrl" key pressed will move the selected node inside the node it was dropped on.

</div></div></div></div><div drawio-diagram="7193"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102263.png" alt=""/></div>

<div class="contents" id="bkmrk--5"><div class="contents"><div class="contents"><div class="textblock">  
</div></div></div></div>##### <a class="anchor" id="bkmrk--11"></a>Properties of Nodes Created from Imports

All node properties of a selected node are displayed in "Properties" panel.

For nodes created from imports, additional properties are available:

<div class="contents" id="bkmrk-import-path%3A-specifi"><div class="textblock">- Import Path: Specifies the path to the imported artifact that serves as the source
- Status:   
    &gt; OK: Template exists and type matches   
    &gt; New: Parent instance item is linked to a template which was modified by adding new children   
    &gt; Missing: Template item cannot be found

</div></div>

# Manage Nodes

#### <a class="anchor" id="bkmrk--15"></a>Copy, Move Scene Nodes

Scene nodes are all the items which form a scene. They can be toolbox scene nodes or template scene nodes created from the "Imports" panel.

Sometimes during solution creation one scene needs to be split into more separate scenes, or many elements from different scenes need to be combined to keep the Solution clean and manageable. Instead of creating the nodes again they could be copy-pasted in as many other scenes as necessary.

First, right-click on the desired node in the Scene Tree and from the contextual menu select "Copy".

<div drawio-diagram="7194"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102358.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>Second, switch to the desired scene and right-click on the main node in the Scene Tree. Then select the Paste option. The desired element will be copied into the selected scene.

Another similar possibility is to get the desired nodes by using Cut option and to paste them into the new scene. The usual combos are available: Ctrl + c for Copy, Ctrl + x for Cut and Ctrl + v for Paste.

Upon copy/cut/paste operations, the SceneComposer will allow any operation and display a set of errors/warnings depending on the raised violations (e.g. missing references, bad paths and so forth).

<div class="contents" id="bkmrk-it-is-possible-to-se"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">It is possible to select and to cut/copy/paste two or more Nodes only if they are at the same level in the scene hierarchy. By using Ctrl + C shortcut it is possible to copy the path of any selected object together with all the properties to the clipboard. The path can be copied directly in the Properties panel.</p>

</dd></dl></div></div></div><div class="contents" id="bkmrk--3"><div class="contents"><div class="textblock"><dl class="note"><dd></dd></dl>  
</div></div></div>---

#### <a class="anchor" id="bkmrk--19"></a>Clone, Delete, Rename Scene Nodes

##### <a class="anchor" id="bkmrk--20"></a>Clone

Clone a scene node via the "Clone" context menu. The clone of the item will have the same name as the item, suffixed by a number, and will be placed in the same group or scene.

<div class="contents" id="bkmrk--8"><div class="contents">  
</div></div>If there is necessary to realize many clones of the same item, the "Multiple Clone" option should be used. As can be seen in the image below, the user has just to specify the "Base Name" of all the clones and how many copies are needed.

<div drawio-diagram="6021"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717751784.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents"><div class="textblock">  
</div></div></div>When cloning (or pasting a node) the name of the new node will automatically check if there is already a number at the end of the name. If there is a number this should be increased automatically. For instance, if an existing "Node\_1" (or "Node1") is cloned the name of the clone will be "Node\_2" (or "Node2") and not "Node\_1\_1" (or "Node1\_1").

<div class="contents" id="bkmrk-the-duplication-of-t"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The duplication of the item names is incremented based on the numeric suffix with our without an \_ separator.</p>

</dd></dl></div></div></div>To duplicate an item into the selected location hold left shift while drag and dropping an item. Upon dropping a copy of the item will be created in the target location. Currently duplicating as a child of itself is not supported.

<div drawio-diagram="7195"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102547.png" alt=""/></div>

##### <a class="anchor" id="bkmrk--23"></a>Delete

Delete a scene node via the "Delete" context menu.

<div class="contents" id="bkmrk-if-the-item-is-not-u"><div class="contents"><div class="contents"><div class="textblock">- If the item is not used anywhere, a simple prompt to confirm the deletion will appear.
- If the item is used in an animation, the "Delete Item" dialog will be open and list the paths of the items from the animation where the scene node is used. The "OK" button is disabled so the scene node cannot be deleted.

</div></div></div></div>##### <a class="anchor" id="bkmrk--24"></a>Rename

Rename a scene node via the "Rename" context menu.

<div class="contents" id="bkmrk-item-is-not-used-any"><div class="contents"><div class="textblock">- Item is not used anywhere; the renaming will take place as the user presses Enter key after editing.
- Item with same name already exists (in the same location); warning message pops up.

</div></div></div><div class="contents" id="bkmrk--12"><div class="contents">  
</div></div>Properties of the instance items can also be modified in the user defined scene. Properties that have been changed can be reset to their value in the template item by clicking the "revert" button on the left of the property to be restored.

<div drawio-diagram="6023"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717752095.png" alt=""/></div>

<div class="contents" id="bkmrk-the-first-change-of-"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The first change of a property from the value from the template will cause the name of the property and its value to appear in bold in the "Properties" panel of the main view.</p>

</dd></dl></div></div></div></div>##### Reset Node Structure

Groups which have been created from a template item (an imported scene graph) can be reset to the template structure with the context menu "Reset Structure" on the group:   
Deleted or modified group elements will be restored to the default structure.

---

#### <a class="anchor" id="bkmrk--28"></a>Multi-Selection and Comparison of Nodes

For multi-selection of nodes, press the Ctrl key while left clicking all the desired elements to select.   
When the last desired element is selected the Ctrl key can be released.

Another way is to use one of select options from the Scene Tree context menu for multi-selection:

<div class="contents" id="bkmrk-select-leaf-nodes-se"><div class="contents"><div class="textblock">- Select Leaf Nodes
- Select Children
- Select All Descendants

</div></div></div>**Examples:**

<div drawio-diagram="7196"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102620.png" alt=""/></div>

After the multi-selection operation it is possible to copy, move or delete all selected items as desired.

# Locking UI Elements

In different circumstances it could be useful to have the possibility to avoid any type of accidental SceneComposer solution modification. SceneComposer offers the locking option to provide the possibility to avoid such unfortunate mistakes.

Locking is available via context menu for all items excepting folders.

To lock a selected item the user has to right click on that item. From the context menu it is possible to select the "Lock" option.

<div drawio-diagram="7197"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102743.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>The locking state of the items can be: unlocked or locked (directly or by an ancestor). The item icon is decorated in such a way that it is clearly indicate if it is locked. The properties (including the name) and the structure of locked items cannot be changed using direct means (properties panel, scene tree etc.)

Another way to lock a selected item is to check the "Is Locked" checkbox in Properties.

<div drawio-diagram="6027"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717752535.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>The re-import of content used by locked items is not possible.

If it is necessary to unlock a sub-item it is possible to use the "Force Unlock" option from the context menu. When the "Force Unlock" option is used not only the sub-item is unlocked, the parent node is unlocked as well.

<div drawio-diagram="7198"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730102854.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>Generally speaking this feature is a soft lock mechanism. References used by a node can be modified, but not the locked object directly. For instance, if a node which has associated a texture that uses a bitmap is locked, the bitmap still can be modified so, in this way, the locked node can be modified.

# Bitmap Preview

#### <a class="anchor" id="bkmrk--3"></a>Use Bitmap Preview

Whenever a Bitmap is selected - for example from the "Imports" panel, "Scene Tree" panel or "Solution Explorer" panel - a preview of the selected Bitmap is displayed in the "Properties" panel in addition to the specific Bitmap properties.

<div drawio-diagram="6036"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717755230.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>Image properties in the properties panel also show a preview of the image as a tooltip when they are hovered over with the mouse.

<div drawio-diagram="6037"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717756645.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="textblock">  
</div></div>

# Flipped Bitmaps

The platform definition has been extended and defined via meta-info if the bitmaps shall be flipped or not for 2D and 3D. Each bitmap written into the asset specifies the info if flipped or not (the new attribute) SceneComposer writes the bitmap data in the flipped or not flipped data format depending on the platform's specification.

A new property (Origin) is available for bitmaps to configure the layout of the pixels in the asset.

<div drawio-diagram="6038"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717756945.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>If the option PlatformDependent is selected, the following verifications will be performed:

<div class="contents" id="bkmrk-bitmap-is-used-only-"><div class="textblock">- Bitmap is used only in 2D content, the platform setting for the 2D engine will be used;
- Bitmap is used in 3D content, the platform setting for the 3D engine will be used;
- otherwise the imported content will be exported without any flipping.

</div></div>

# Pivot Hint

Pivot Hint is a property of a Bitmap which allows to set the coordinates of a point that will be used as default Pivot Point for the RenderNode that uses the Bitmap.

The example hereafter presents the situation of replacing the Hour Needle Image on an AnalogClock control with a bitmap having or not having set the Pivot Hint.

<div drawio-diagram="6039"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717759443.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="textblock">  
</div></div>

# Including Solution Items in Scene Explorer

#### <a class="anchor" id="bkmrk--2"></a>Creation

Solution items can be added in the Scene Explorer via copy-paste or drag-and-drop.  
The image below exemplify the adding (by drag-and-drop) the Text Control into the Solution Explorer:

<div drawio-diagram="7207"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730164152.png" alt=""/></div>

<div class="contents" id="bkmrk-when-the-solution-it"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd></dd><dd></dd><dd><p class="callout info">When the solution items are copied in Scene Explorer the class is copied, not the instance.</p>

</dd></dl></div></div></div></div>After adding the solution item (Text control, in our case) in the Solution Explorer the newly created copy is shown in the destination folder (1) from Solution Explorer and also in the Controls panel in the Category *Common* (2). Also, in the case of the controls and behavior building blocks, the solution item becomes active (3) and its content is shown in the Scene Tree.

Following solutions items support this feature:

<div class="contents" id="bkmrk-controls-behavior-bu"><div class="contents"><div class="textblock">- controls
- behavior building blocks
- templates
- shader fragments
- shader programs
- render targets

</div></div></div>#### <a class="anchor" id="bkmrk--4"></a>Usage

Once the solution item is copied in the Solution Explorer it can be edited and then instantiated in the Scene Tree. As exemplification, the *Category* property was changed to "MyControls" and the control TextNode2D properties were changed to show a different text and color:

<div drawio-diagram="7208"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730164427.png" alt=""/></div>

<div class="contents" id="bkmrk--1"><div class="textblock">  
</div></div>

# Isolated Editing

For a graphic designer or a technical artist, sometimes it is very useful to have the possibility to shape a single graphic object without seeing the whole scene context. For instance, the designer needs to switch to a special context where only one object (e.g. car) is visible and can be edited. To address this need, SceneComposer allows to edit a single object within the regarding scene hiding all other rendered elements and temporary set the edited object in the view center.

To use this feature, in SceneTree having multiple objects selected, right click &gt; Isolated Edit - this will enter in a special Single Editing Mode, where a scope is applied to the selection.

<div drawio-diagram="7209"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730164731.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>Another possibility to enter in a special Single Editing Mode is to use the "Isolated Edit" button which is placed in the Toolbar near the "Active Rendering" button.

<div drawio-diagram="6043"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717762518.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>All objects will be rendered with the built-in scope. Turning off this mode can be realized from the toolbar, this mode being highlighted. In this way more complex scenarios can be applied.

If you refresh the current scene or switch to another scene, the isolated edit mode will be automatically turned off.

# Usage and Dependencies

#### <a class="anchor" id="bkmrk--21"></a>Find Usage &amp; Dependencies

Use this feature by opening a SceneComposer solution to activate and select the Graph Dependencies panel.

<div class="contents" id="bkmrk-activate-the-panel-b"><div class="contents"><div class="textblock">- Activate the panel by selecting "View" &gt; "Editors" &gt; "Graph Dependencies".
- The graph panel represents in a visual form the **nodes** and the **connections** that unify them.

</div></div></div>The edges that link the nodes show the dependencies that exist among the items. The layout graph panel can be docked in SceneComposer.

<div class="contents" id="bkmrk-by-using-the-%22export"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">By using the "Export" button the user is allowed to export the "Dependency Graph" as an .xml file with nodes based on items types and names.</p>

</dd></dl></div></div></div></div><div drawio-diagram="685"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676379622.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>After the Graph Dependencies panel is selected, right-click on the scene and select "Dependencies" or "References" from the context menu (see below).

<div drawio-diagram="7206"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730163661.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>If the "Dependencies" option is selected, the graph will become visible inside the Graph Dependencies panel. If the "References" option is selected, the current selected scene will become visible inside the Graph Dependencies panel. When the current selected scene is pressed, two option are displayed as two buttons near the selected scene icon: "Show the dependencies of this node" and "Show the references where this object is used".

<div drawio-diagram="6046"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717764191.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>On the left side of the panel there is a cursor, which allows to establish the dimensions of the graph. There are several different possibilities to set the dimensions of the graph:

<div class="contents" id="bkmrk-by-using-the-1%3A1-but"><div class="contents"><div class="textblock">- By using the 1:1 button (the graph will have an optimal dimension)
- By using the "Fill" button (the graph will fill the whole panel)
- By using the cursor (the dimensions should be set in a range between 0 and 100.00)
- By using the combo Ctrl + Mouse Wheel

</div></div></div>At the same time, there are some combinations that can be seen in the next figure:

<div drawio-diagram="688"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676379663.png" alt=""/></div>

<div class="contents" id="bkmrk--6"><div class="contents"><div class="textblock">  
</div></div></div>On the top side of the Graph Dependencies panel there are some other possible options. First, it is possible to select the desired layout type of the graph by using the "Pick Layout Type" list. There are several different algorithms to display the graph:

<div class="contents" id="bkmrk-bounded-fr-circular-"><div class="contents"><div class="textblock">- Bounded FR
- Circular
- Compound FDP
- Efficient Sugiyama
- ISOM
- KK
- Lin Long
- Tree

</div></div></div>The most common one from all these graph types is the Efficient Sugiyama.

<div drawio-diagram="689"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676379675.png" alt=""/></div>

<div class="contents" id="bkmrk--8"><div class="contents"><div class="textblock">  
</div></div></div>The second menu list available on the top of the Graph Dependencies panel allows to filter the desired category of items displayed: "Select a Filter Category". There are several available categories:

<div class="contents" id="bkmrk-animations-bitmaps-c"><div class="contents"><div class="contents"><div class="textblock">- Animations
- Bitmaps
- Controls 3D
- Controls 2D
- Display
- Scene 3D
- Scene 2D
- Shaders
- Shader Programs
- Vertex Buffers

</div></div></div></div><div drawio-diagram="3278"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682407550.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents"><div class="textblock">  
</div></div></div>By left-clicking on a node in the graph two buttons will appear in the right corner:

<div class="contents" id="bkmrk-%22show-references%22-wh"><div class="contents"><div class="textblock">- "Show references" which will display the usage of an item in a graph with navigation and scene tree synchronization
- "Show all dependencies" which will display all the dependencies of an item in a graph

</div></div></div>Another given possibility is to move the graph in the Graph Dependencies panel. For example, if the "Scene" category is selected, you will be able to see the relationships between the main scene and all the scenes associated with those imported .fbx that are used in the main scene.

It is possible to select and to move the whole graph; to do this, just left click somewhere near the graph and hold down the left button of the mouse. On this way, it is possible to move the entire graph in any desired place inside the panel. If just one of the scenes is selected by clicking on it, it will be possible to move just that element.

<div class="contents" id="bkmrk-when-a-category-with"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">When a category with many elements is filtered by using the specific menu list, the graph will not be centered and the only visible elements can be some peripheral parts of the tree.</p>

</dd></dl></div></div></div>To center the graph, first, the "Fill" button has to be used. After this, the "1:1" button will center the graph instantly. Last but not least, even though the filter category is used to show a specific category, it is possible to choose one or many elements that do not pertain to that category to be shown. To obtain this effect let's suppose that the Scene category was previously selected. By right-clicking on any scene displayed in the graph, there is a "Pinned" option available in the context menu.

<div drawio-diagram="6047"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717764352.png" alt=""/></div>

<div class="contents" id="bkmrk--12"><div class="contents"><div class="textblock">  
</div></div></div>In the case of the main scene, these "Pinned" option is enabled. For any other secondary scene this option is disabled. If this option is enabled, the graph will display all the elements of that category, plus the "pinned" elements from the previous category.

<div class="contents" id="bkmrk--13"><div class="contents"><div class="textblock">  
</div></div></div>---

#### <a class="anchor" id="bkmrk--29"></a>Activation of Items Referenced

If necessary, it is possible to activate items referenced through paths. The Activate button will load the item in the property grid and in others panels linked to the type of the item.

This feature is available for any referenced item as can be seen in the examples below.

For a TextStyle referenced by a text node:

<div drawio-diagram="6048"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717764495.png" alt=""/></div>

<div class="contents" id="bkmrk--16"><div class="contents"><div class="textblock">  
</div></div></div>For a Bitmap referenced by a bitmap node:

<div drawio-diagram="6049"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717764664.png" alt=""/></div>

<div class="contents" id="bkmrk--18"><div class="contents"><div class="textblock">  
</div></div></div>For a Render target referenced by a camera:

<div drawio-diagram="6050"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765002.png" alt=""/></div>

<div class="contents" id="bkmrk--20"><div class="textblock">  
</div></div>

# Locking/Unlocking the Properties Panel

Some behaviors like e.g. the ForwardValue behavior have a property TargetNode. The appropriate TargetNode can be assigned by pressing the respective icon button, which will open the "Choose Item" dialog as shown in a <span style="color: rgb(230, 126, 35);">[Behavior example](https://doc316en.candera.eu/books/controls-and-behaviors/page/examples-using-predefined-behaviors#bkmrk-5.-select-the-forwar)</span>.

There is an alternative - possibly more comfortable - way to configure the TargetNode via drag &amp; drop.

Like various DCC tools and Game Development Platforms, Scene Composer employs a locking and unlocking method for the Properties panel to significantly enhance the workflow efficiency for designers.

This method the user to lock the properties panel on the top right side of the property panel and move SCItems via drag and drop into the property fields. The value that is being copied into the fields is the path (if the field requires it) or the name of the item.

#### How to use the Locking/Unlocking method

1. Select the target node from the scene tree, and then select the behavior displayed in the extra scene tree.  
    <div drawio-diagram="7202"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730163161.png" alt=""/></div>
2. Click the Lock button in the upper right of the properties panel for the selected behavior to lock the properties panel. 
    - While locked, the properties of the object selected when locking will be displayed and maintained.  
        <div drawio-diagram="7204"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730163257.png" alt=""/></div>
3. In the scene tree, select the node you want to set as the TargetNode, and drag and drop it onto the \[TargetNode\] in the Properties window, where it will be displayed in step 2.  
    <div drawio-diagram="7205"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-10/drawing-4-1730163466.png" alt=""/></div>
4. Click the Lock button in the top right of the Properties panel again to unlock the Properties panel.

<p class="callout info">**Limitation:** Drag&amp;drop to Properties panel doesn't work for external (windows) files.</p>

# 3D Scene Design

# 3D Nodes

#### **3D Toolbox**

The Toolbox for 3D scenes provides the following items:

<div drawio-diagram="5620"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-04/drawing-7-1713773371.png" alt=""/></div>

<div class="contents" id="bkmrk-a-%22show-controls-as-"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">A "Show Controls as Big Icons/List" is available in the upper right corner. If this button is used, a different presentation mode - as icons instead of a text list of items - will be made available (see the image below).</p>

</dd></dl><div drawio-diagram="5621"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-04/drawing-7-1713773413.png" alt=""/></div>

</div></div></div></div><div class="contents" id="bkmrk--1">  
</div>##### <a class="anchor" id="bkmrk--98"></a>Create 3D Nodes

Following items can be used to create a new node in the scene graph:

**3D Nodes**

<div drawio-diagram="6051"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765312.png" alt=""/></div>

<div class="contents" id="bkmrk-group%3A-represents-a-"><div class="contents"><div class="textblock"><table border="0" cellspacing="10" style="width: 100%; height: 1022.89px;"><tbody><tr style="height: 60.8281px;" valign="bottom"><td style="width: 9.26689%; height: 60.8281px;"><div class="image">**1**</div></td><td style="width: 90.6919%; height: 60.8281px;">**Group:** Represents a parent container for nodes or other groups.   
[Candera::Group](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_group.html "The class Group is a scene graph node that stores a set of Nodes as its children. The parent-child re...")</td></tr><tr style="height: 65.5938px;" valign="bottom"><td style="width: 9.26689%; height: 65.5938px;">**2**

</td><td style="width: 90.6919%; height: 65.5938px;">**Light:** Different types of light could be added to illuminate the scene objects. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-light)</span>   
[Candera::Light](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_light.html "A Node that represents different kinds of light sources. Light sources are used to determine the colo...")</td></tr><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**3**

</td><td style="width: 90.6919%; height: 64.7656px;">**Camera:** To be linked to a render target, where the render result of the camera will be drawn. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-camera)</span>   
[Candera::Camera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera.html "A Camera provides Modelview and Projection matrices. Camera is a Transformable.* The eye point is set...")</td></tr><tr style="height: 66.5156px;" valign="bottom"><td style="width: 9.26689%; height: 66.5156px;">**4**

</td><td style="width: 90.6919%; height: 66.5156px;">**Reflection Camera:** Creates a reflection of a specific camera on a given reflection plane. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-reflection-camera)</span>   
[Candera::ReflectionCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_reflection_camera.html "A ReflectionCamera represents a reflected view of an associated source camera (See function SetSource...")</td></tr><tr style="height: 66.4062px;" valign="bottom"><td style="width: 9.26689%; height: 66.4062px;">**5**

</td><td style="width: 90.6919%; height: 66.4062px;">**Stereo Camera:** Creates the effect of stereo 3D. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-stereo-camera)</span>   
[Candera::StereoCamera](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_stereo_camera.html "A StereoCamera is a controller of two assigned Camera objects, used to realize the effect of stereosc...")</td></tr><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**6**

</td><td style="width: 90.6919%; height: 64.7656px;">**Sky Box:** A type of mapping that gives the user the feeling of immersion into a large environment. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-sky-box)</span>   
[Candera::SkyBox](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_sky_box.html "A SkyBox is an axis aligned cube in world-space, which is used to display the background environment ...")</td></tr><tr style="height: 62.1719px;" valign="bottom"><td style="width: 9.26689%; height: 62.1719px;">**7**

</td><td style="width: 90.6919%; height: 62.1719px;">**Billboard:** A textured or colored 2D area.   
[Candera::Billboard](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_billboard.html "The class Billboard represents a Plane that can align towards camera automatically, according to the alignment type set. Thus, Billboards are quite often used as "imposters" pretending to be a 3D geometry by showing a 2D image that is always facing the camera. In order to relief distinction between Billboard and PointSprite see following comparison: + Billboards support rectangular dimension and non-uniform scale, + Billboards support different rotation techniques (see Alignment), whereas PointSprites are aligned according to CenterEyeAlignment, exclusively. + Billboards take local rotation and scale into account (see class Transformable), whereas PointSprites ignore Transformable parameters others than position. + PointSprites have a performance advantage due to less geometry (one instead of 4 vertices). Overall recommendation: Use PointSprites for spherical shapes like particles, lens flares, sparkles, dust which are screen aligned (see Billboard::CameraUpAlignment). Further, use Billboards for world up oriented clouds, text, or yaw axis aligned trees, and signs, etc. Note: The Billboard - because of absent normals - does not support lighting. Belows sketch depicts the layout of a Billboard. W U:0,V:1 +-----+ U:1,V:1 H | X | Legend: texture coordinates: U,V; Width: W, Height: H, Local Center: X U:0,V:0 +-----+ U:1,V:0.")</td></tr><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**8**

</td><td style="width: 90.6919%; height: 64.7656px;">**Planar Shadow:** Provides the possibility to "throw" some shadows on a configurable planar surface. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-planar-shadow-0)</span>   
[Candera::PlanarShadow](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_planar_shadow.html "PlanarShadow implements a simple technique to simulate shadow casting. Basically a PlanarShadow node ...")</td></tr><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**9**

</td><td style="width: 90.6919%; height: 64.7656px;">**MorphingMesh:** A mesh that stores weight values for morphing. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-morphing-mesh)</span>   
[Candera::MorphingMesh](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_morphing_mesh.html "MorphingMesh is a Mesh that stores weight values for morphing, and activates them as uniforms at rend...")</td></tr><tr style="height: 84.5625px;" valign="bottom"><td style="width: 9.26689%; height: 84.5625px;">**10**

</td><td style="width: 90.6919%; height: 84.5625px;">**LodNode:** A node which accommodates multiple nodes, each of them representing a certain, predefined level of detail. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-level-of-detail-%28lod-1)</span>   
[Candera::LodNode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_lod_node.html "LodNode represents a Node which accommodates multiple nodes, each of them representing a certain...")</td></tr><tr style="height: 78.9688px;" valign="bottom"><td style="width: 9.26689%; height: 78.9688px;">**11**

</td><td style="width: 90.6919%; height: 78.9688px;">**PointSprite:** Displayed as a flat square polygon which is always facing the camera (screen-aligned). It can be textured and scaled to simulate perspective.   
[Candera::PointSprite](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_point_sprite.html "PointSprite represents a GL point primitive. The size (glPointSize) of the point is calculated by def...")

</td></tr></tbody></table>

</div></div></div>**Canvas Nodes**

<div drawio-diagram="6052"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765391.png" alt=""/></div>

<table border="0" cellspacing="10" id="bkmrk-12-canvas%3A-a-node-wh" style="width: 100%; height: 1022.89px;"><tbody><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**12**

</td><td style="width: 90.6919%; height: 64.7656px;">**Canvas:** A node which acts as a surface. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-canvas-0)</span>   
[Candera::Canvas](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas.html)</td></tr><tr style="height: 64.7656px;" valign="bottom"><td style="width: 9.26689%; height: 64.7656px;">**13**

</td><td style="width: 90.6919%; height: 64.7656px;">**CanvasGroup:** A node which can contain other canvas nodes. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-canvas-0)</span>   
[Candera::CanvasGroup](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_group.html)</td></tr><tr style="height: 84.5625px;" valign="bottom"><td style="width: 9.26689%; height: 84.5625px;">**14**

</td><td style="width: 90.6919%; height: 84.5625px;">**CanvasSprite:** A node which represents a solid object, offering the possibility to render a texture, a flat colored rectangle or other visual effects. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-canvas-sprite-0)</span>   
[Candera::CanvasSprite](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_sprite.html)</td></tr><tr style="height: 64.6875px;" valign="bottom"><td style="width: 9.26689%; height: 64.6875px;">**15**

</td><td style="width: 90.6919%; height: 64.6875px;">**CanvasText:** A node which facilitates displaying text on Canvas.   
[Candera::CanvasText](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_text.html "CanvasText represents a text node within a 3D Canvas object.")</td></tr></tbody></table>

Create a new 3D node by drag &amp; drop

<div class="contents" id="bkmrk-on-the-scene-tree-to"><div class="contents"><div class="textblock">- on the Scene Tree to sort the node properly into the scene graph
- directly into the render view of the Scene Editor to create the node on a specific display coordinate.

</div></div></div>New scene nodes are named like the item type, for more than one item suffixed with a number.

Refer to the Properties panel for inspecting all properties specific for the type of node. Tooltips are available to explain the purpose of the property. Refer also to the <span style="color: rgb(230, 126, 35);">[Properties Overview](https://doc316en.candera.eu/books/appendix/page/properties-overview "Properties Overview")</span> listing the Tooltip descriptions.

#### **Light**

#### <a class="anchor" id="bkmrk--99"></a>Types of Light

Different kinds of light sources are available:

<div drawio-diagram="6053"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765509.png" alt=""/></div>

##### 1 Ambient Light

<div drawio-diagram="712"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676380375.png" alt=""/></div>

<div class="contents" id="bkmrk--9"><div class="contents"><div class="textblock">  
</div></div></div>Ambient light illuminates the scene from all directions. The light intensity is the same everywhere in the scene.   
Position and direction of an ambient light source have no effect.

##### 2 Directional Light

<div drawio-diagram="713"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676380453.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents"><div class="textblock">  
</div></div></div>Directional light corresponds to sunlight in the real world. Illuminates all objects in the scene from the same direction, and with a constant intensity.   
Position and attenuation of a directional light source have no effect.

##### 3 Point Light

<div drawio-diagram="714"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676380468.png" alt=""/></div>

<div class="contents" id="bkmrk--13"><div class="contents"><div class="textblock">  
</div></div></div>Point light casts equal omnidirectional illumination from the position of the light source. The intensity of light coming from a point light source can diminish with distance.   
The direction of a point light has no effect.

##### 4 Spot Light

<div drawio-diagram="715"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676380479.png" alt=""/></div>

<div class="contents" id="bkmrk--15"><div class="contents"><div class="textblock">  
</div></div></div>Spot light casts a light cone from a position centered around a direction.   
A spot light has both: a direction and a position.

#### <a class="anchor" id="bkmrk--108"></a>Light Properties

Please refer to section <span style="color: rgb(230, 126, 35);">[Light Gizmos](https://doc316en.candera.eu/link/133#bkmrk-camera-gizmos%C2%A0 "3D Nodes")</span> for more details on how to edit lights by using gizmos.

Light properties that can be edited from the Properties panel (Some properties are only applicable depending on the selected light type):

<div class="contents" id="bkmrk-type%3A-the-type-of-a-"><div class="contents"><div class="contents"><div class="textblock">- **Type:** The type of a light source can be changed at any time. This might be useful for switching to a simpler lightning model. Illumination is enabled, if light has rendering enabled and if the node is in the same scope as the light.
- **Ambient Color:** defines the ambient color component that illuminates the ambient color component of the material.
- **Diffuse Color:** illuminates the diffuse color component of the material. It is ignored if type of light is Ambient.
- **Specular Color:** defines the specular color component that illuminates the specular color component of the material. Ignored if type of light is Ambient.
- **Direction:** defines the direction of the light. It is ignored if type of light is Ambient or Point.
- **Range:** defines the range from light to geometry in world space where illumination is applied. It is ignored if type of light is Ambient or Directional.
- **Intensity:** The intensity factor for the diffuse color of the light. Ignored if type of light is Ambient.
- **Enable Attenuation:** Enables or disables the attenuation of light. The greater the distance of an object's geometry to the light, the less illumination is applied. This property will be ignored if the light type is Ambient or Directional.
- **Constant Attenuation Factor:** defines the constant attenuation factor of the light. The attenuation equation is: 1 / (constant + (linear \* distance) + (quadratic \* distance^2)). It is ignored if type of light is Ambient or Directional.
- **Linear Attenuation Factor:** defines the linear attenuation factor of the light. It is ignored if type of light is Ambient or Directional.
- **Quadratic Attenuation Factor:** defines the quadratic attenuation factor of the light. It is ignored if type of light is Ambient or Directional.
- **Spot Angle:** defines the spot angle of the light cone in degrees. It is ignored if type of light is Ambient, Directional, or Point.
- **Spot Exponent:** the distribution of the light within the spot light cone. It is ignored if type of light is Ambient, Directional, or Point.

</div></div></div></div><div drawio-diagram="8576"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-09/drawing-4-1757469569.png" alt=""/></div>

<div class="contents" id="bkmrk--18"><div class="contents"><div class="textblock">  
</div></div></div>Light properties that can be edited in ShaderParamSetter:

<div class="contents" id="bkmrk-coordinatespace%3A-def"><div class="contents"><div class="textblock">- **CoordinateSpace:** defines the coordinate space for lighting calculations in shader. It has two possible options:   
    &gt; Object - Light is transformed into object space to calculate vertex illumination   
    &gt; World - vertex and normal are transformed into world space to calculate vertex illumination. Object space is less computation intensive and is preferred.   
    However, to assure accurate illumination of non-uniform scaled objects, lighting in world space is indicated.

</div></div></div>#### **Camera**

Refer to the Properties panel for inspecting all properties specific for a 3D camera.   
Tooltips are available to explain the purpose of the property.

Please refer to section <span style="color: rgb(230, 126, 35);">[Camera Manipulation](https://doc316en.candera.eu/link/133#bkmrk-camera-manipulation%C2%A0-0 "3D Scene Editor")</span> for details on how to manipulate cameras.

#### <a class="anchor" id="bkmrk--110"></a>Camera Render Strategy

Camera, Reflection camera and LeftEye/RightEye (StereoCamera) objects have a property (available in Properties panel) called "RenderStrategy" that only affects the processing of that camera and its nodes.

<div drawio-diagram="6055"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765797.png" alt=""/></div>

<div class="contents" id="bkmrk--20"><div class="contents"><div class="textblock">  
</div></div></div>Per default "none" is selected as camera render strategy, which means the nodes will be rendered inside a render pass according to the defined render order.

#### <a class="anchor" id="bkmrk--112"></a>Benchmark Render Strategy

Select "Benchmark" as render strategy to split a render call into several passes.

<div drawio-diagram="6057"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717765917.png" alt=""/></div>

<div class="contents" id="bkmrk--22"><div class="contents"><div class="textblock">  
</div></div></div>In a render pass, only that part of the scene graph is rendered, which node's benchmarks are beyond a given threshold. In the next render call, rendering will resume at the previous stop point, until it is complete.

Two properties are relevant to achieve this behavior:

<div class="contents" id="bkmrk-%22render-benchmark%22%3A-"><div class="contents"><div class="contents"><div class="contents"><div class="textblock">- **"Render Benchmark":** A render measure value of the node, given an average time required to rendered that node. Render benchmarks can be calculated by CGI Analyzer and imported into SceneComposer.
- **"Benchmark Threshold":** Only nodes with an accumulated node render benchmark value smaller than or equal to the given threshold will be rendered during a single render call. Otherwise rendering is paused and the remaining nodes will only be rendered in the next step.

</div></div></div></div></div>####  <a class="anchor" id="bkmrk--114"></a>Occlusion Culling

Select "Occlusion Culling" as render strategy to have a new property available in property grid: QueryType.

<div drawio-diagram="6058"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717766225.png" alt=""/></div>

<div class="contents" id="bkmrk-occlusion-culling-re"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">Occlusion culling render strategy applies only to OpenGLES 3.0 platforms.</p>

</dd></dl></div></div></div></div>The render strategy uses a dynamic property (QueryProperty) per node to determine if an occlusion query should be issued or not. It also stores the query result for that node in that property.

#### **Reflection Camera**

Reflection camera is a special item in the Toolbox that can be added in scenes only under camera nodes using drag &amp; drop.

<div drawio-diagram="7578"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732895617.png" alt=""/></div>

<div class="contents" id="bkmrk--25"><div class="contents"><div class="textblock">  
</div></div></div>The camera will have some modified properties after adding a reflection camera on it. After the reflection camera is removed, the camera may still have some modified properties which have been previously required for the reflection camera.

Configure the properties "Mirror Plane Direction" and "Mirror Plane Distance" to visualize the reflection plane.

<div drawio-diagram="6060"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717766570.png" alt=""/></div>

<div class="contents" id="bkmrk--27"><div class="contents"><div class="textblock">  
</div></div></div>The reflection will not be rendered in predefined views (Perspective, Orthogonal). Depending on the desired visual effect, set the proper values for the properties: IsColorClearEnabled and SequenceNumber.

#### <a class="anchor" id="bkmrk--118"></a>Camera Render Strategy

Both Camera and Reflection camera objects have a property (available in Properties panel) called "CameraRenderStrategy" that only affects the processing of that camera and its nodes.

<div drawio-diagram="6061"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717767841.png" alt=""/></div>

<div class="contents" id="bkmrk--29"><div class="contents"><div class="textblock">  
</div></div></div>Per default "none" is selected as camera render strategy, which means the nodes will be rendered inside a render pass according to the defined render order.

#### **Stereo Camera**

To use the StereoCamera object two Camera objects have to be assigned as the left and the right eye. Only cameras that have no parent, or their parent is the StereoCamera itself, are allowed to be set as eyes. If they have no parent, they'll automatically get assigned as children of this StereoCamera. On these cameras position, lookAtVector, upVector and the projection get set automatically with respect to the StereoCamera objects setting.

A StereoCamera object is available in the Toolbox. In order to use it, the user should drag it on a scene. After this first step, a StereoCamera object will become available in the Scene Tree.

<div drawio-diagram="7579"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732895697.png" alt=""/></div>

<div class="contents" id="bkmrk--31"><div class="contents"><div class="textblock">  
</div></div></div>A LeftEye camera and a RightEye camera will be assigned to the StereoCamera. The LeftEye camera and the RightEye camera may be configured from the properties panel as any other camera. The properties specific for the StereoCamera may be configured from the Properties panel that is available when the StereoCamera is selected. Those are:

<div class="contents" id="bkmrk-eye-separation-and-c"><div class="contents"><div class="textblock">- Eye Separation and
- Convergence distance

</div></div></div>Eye separation controls the interaxial offset of the two Camera objects positions relative to the StereoCamera's position. Here for both camera's the position is set to half of the separation in +X and -X direction.

Convergence distance is the distance from the camera to the plane on which both projections would produce the same image, and therefore no parallax occurs.

<div class="contents" id="bkmrk-the-stereo-camera-co"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The stereo camera configuration is hardware dependent and it reflects the way in which the stereo effect is achieved in hardware. Without a special designed hardware it is not possible to properly display any stereo content. Stereo hardware most commonly provides the viewer True 3D visuals by interlacing or overlapping the two video outputs on the same display unit.</p>

</dd></dl></div></div></div>Without a special designed hardware the only possibility to check the Stereoscopy on SceneComposer is to link every Eye Camera to a different Render Target. For instance, it is possible to associate the LeftEye with a Left Render Target and the RightEye with a Right Render Target. The association of any Eye Camera should be done by following the usual two steps:

<div class="contents" id="bkmrk-create-a-display-and"><div class="contents"><div class="contents"><div class="textblock">- Create a Display and two Render Targets. <span style="color: rgb(230, 126, 35);">[Read more...](https://doc316en.candera.eu/books/display-configuration/page/add-a-new-render-target)</span>
- Associate every of the two cameras to one specific display (RighEye Camera to the R Render target and LeftEye Camera to the L Render target). <span style="color: rgb(230, 126, 35);">[Read more...](https://doc316en.candera.eu/books/display-configuration/page/link-a-camera-to-a-render-target)</span>

</div></div></div></div><div drawio-diagram="6063"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717768237.png" alt=""/></div>

<div class="contents" id="bkmrk--33"><div class="contents"><div class="textblock">  
</div></div></div>Both Render Targets are expected to be kept grouped under the same Display as it can be noticed in the image above.

#### <span style="color: rgb(0, 0, 0);">**Stereo Camera Side by Side**</span>

One of the Stereoscopic Camera configurations is the so called "side by side" (SBS) configuration. This type of configuration is based on display that combines the left and right eye images into a single image by squeezing the two together horizontally.

To facilitate the creation of SBS configuration, SceneComposer provides a built in configuration that can be used.

First drag and drop a Stereoscopic Camera from the Toolbox in a 3D scene. Second, right click on the Stereo Camera in the Scene Tree. Select "Camera Side-by-Side Configuration" from the context menu.

<div drawio-diagram="7580"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732895923.png" alt=""/></div>

<div class="contents" id="bkmrk--35"><div class="contents"><div class="textblock">  
</div></div></div>If a RenderTarget already includes cameras, you can not choose it. So, remove cameras in the RenderTarget and select "Camera Side-by-Side Configuration" menu to be appeared its dialog. After a display and a render target are created, select the Render Target. After this step click "OK".

<div drawio-diagram="6065"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717768556.png" alt=""/></div>

<div class="contents" id="bkmrk--37"><div class="contents"><div class="textblock">  
</div></div></div>In the Render Targets panel both "eyes" associated with the Stereo Camera will be displayed.

<div class="contents" id="bkmrk-the-viewport-propert"><div class="textblock"><dl class="note"><dd><p class="callout info">The Viewport property is automatically set. Practically speaking, all the cameras are automatically configured. The dimension of the render target is the only setting that has to be configured manually.</p>

</dd></dl></div><div class="textblock align-right">  
</div></div>#### **Sky Box**

One of the most spectacular types of environment mapping is the so called "sky box". This type of mapping gives the user the feeling of immersion into a large environment. The name is related with one of its first usages into pc games industry, especially in relationship with clouds and sky projected into a 3D level of a computer game.

It is possible to create this type of virtual environment by using the SkyBoxMesh from toolbox. Associated with a camera, this mesh will be placed on every renderization on the same position as camera's position. When a skybox is attached to a camera, any of the clear color properties will not be taken into consideration.

The sky box should only be seen if the active camera is the same one with that camera to which the sky box is attached.

<div class="contents" id="bkmrk-the-sky-box-cannot-b"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The sky box cannot be manipulated by using gizmos and its bounding box cannot be displayed when it is selected.</p>

</dd></dl></div></div></div>Usually you need to specify only texture to show skybox (CubeMap Texture). And you do not need to specify VertexBuffer and Shader. But if you want to specify your own SkyBoxMesh:

<div class="contents" id="bkmrk-if-the-render-mode-i"><div class="contents"><div class="textblock">- If the Render Mode is used, Enable Depth Write and Enable Depth Test have to be set as "false";
- An adequate CubeMapTexture with six sides has to be set as texture;
- In Appearance the Shader Program that must be selected is RefTransCubeMap\_RefCubeMapTex;

</div></div></div><div drawio-diagram="6067"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717769044.png" alt=""/></div>

<div class="contents" id="bkmrk--39"></div>#### **<a class="anchor" id="bkmrk--126"></a>Planar Shadow**

To configure it the following steps have to be taken:

<div class="contents" id="bkmrk-set-the-light-proper"><div class="contents"><div class="contents"><div class="textblock">- Set the light property (the source which will generate the shadow of the object)
- To set the display it is mandatory for the render target to contain a stencil buffer (stencil bits = 8)
- Shadow plane might be configured by using the PlaneDistance and PlaneDirection properties. Please, note that the shadow is on object by itself so its color (material) or render mode can be changed.
- The default shader is adequate for the renderization process.

</div></div></div></div><div drawio-diagram="746"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676423814.png" alt=""/></div>

<div class="contents" id="bkmrk--41"><div class="contents"><div class="textblock">  
</div></div></div>The AlignmentNode property exposes Candera's automatic alignment behavior. When the alignment node is set, [Candera](http://dev.doc.cgistudio.at/APILINK/class_candera.html "[DataBinding_RefTypeSample]") automatically aligns the shadow plane to the alignment node (which usually is the shadow receiver).

<div drawio-diagram="6068"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717769163.png" alt=""/></div>

<div class="contents" id="bkmrk--43"><div class="contents"><div class="textblock">  
</div></div></div>Related with the planar shadow there are many other important aspects:

<div class="contents" id="bkmrk-the-shadow-cannot-be"><div class="textblock">- The shadow cannot be edited by using gizmos (translate, rotate, scale);
- The shadow bounding box is the only selection indicator;
- The correct renderization is related with a stencil buffer;
- It is not possible to add children on shadows;
- The shadow is a mesh; so, a vertex buffer can be associated. If the user will explicitly associate a vertex buffer, the shadow can render with that vertex buffer just if the "IsAutoVertexBufferEnabled" property is deactivated.

</div></div>#### **Morphing Mesh**

##### <a class="anchor" id="bkmrk--129"></a>Shape Morphing

Shape Morphing allows a smooth transition from an origin 3D model shape into a destination shape at runtime, e.g. to change a cube to a sphere. In contrast to model blending a single shape is rendered at every point in time which actually forms the morphed model. This model supports virtually all features of regular models.

<div drawio-diagram="748"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676423879.png" alt=""/></div>

<div class="contents" id="bkmrk--46"><div class="contents"><div class="textblock">  
</div></div></div>CGI Studio supports not only a single shape being morphed into another but allows contributing multiple models to the resulting shape. The degree of contribution of a single model to the result is controlled by "morph weight" attribute of the regarding model.

<div drawio-diagram="749"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676423891.png" alt=""/></div>

<div class="contents" id="bkmrk--48"><div class="contents"><div class="textblock">  
</div></div></div>Morphing of multiple models can be used for various fancy effects such as 'chaotic' vertex movement, explosion effects, and simple particle effects.

##### <a class="anchor" id="bkmrk--132"></a>Technical Background

Geometries (vertex buffer) of different shapes supposed to be morphed are combined into a special, single vertex buffer for "Morphing Mesh" nodes including all vertex buffer attributes such as position, normals, texture coordinates per original vertex. This combined vertex buffer is uploaded to GPU, the regarding vertex attributes can be accessed in vertex shader. Uniforms applied to vertex shader during rendering by Candera include morphing weights for all contributing shapes. The vertex shader calculates the vertex attributes of the resulting shape by adding all regarding vertex attributes of single shapes multiplied by morphing weight.

For example, the vertex position is calculated in vertex shader as

**Vertex Position = Vertex Position 0 \* Morph Weight 0 + Vertex Position 1 \* Morph Weight 1;**

Other vertex attributes that are subject to morphing calculation are normals, bi-normals, and in special cases, texture coordinates. This calculation moves the vertices between the corner points of the model according to their morph weight.

If color or textures are subject of morphing as well, the resulting color needs to be calculated in an according fragment shader considering morph weights.

##### <a class="anchor" id="bkmrk--133"></a>Prerequisites

3D models need to be prepared for shape morphing. For each "corner" shape, a single model needs to be provided. All models contributing to a morphed shape need to have homologous vertices. This means that all models must have the same number of vertices and the vertices must "semantically correlate". For instance a vertex of model 1 addressed by a certain index is located in a front face. The vertex of model 2 with the same index need to be located on the corresponding front face of the second model, and not, e.g. on a back-side face.

#### <a class="anchor" id="bkmrk--135"></a>Create a MorphingMesh

To create a MorphingMesh at least one .fbx file has to be imported. Choose "Import &gt; Import Resources..." from the menu. This will open the "Import Resources" dialog. Browse to your FBX file an click \[ Open \] to import the file.

<div drawio-diagram="5713"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-05/drawing-4-1715144620.png" alt=""/></div>

<div class="contents" id="bkmrk--50"><div class="contents"><div class="textblock">  
</div></div></div>To import the FBX file in Import dialog click "Select Files..." button.

<div class="contents" id="bkmrk-it-is-possible-to-im"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">It is possible to import FBX files in SceneComposer by dragging them on "Solution Explorer" panel.</p>

</dd></dl></div></div></div> Configuring shape morphing in SceneComposer:

<div class="contents" id="bkmrk-create-a-%22morphingme"><div class="contents"><div class="textblock">- Create a "MorphingMesh" in a scene by drag and drop from the 3D Toolbox.
- Drag and drop all vertex buffers having the same amount of vertices, which shall be used for morphing to the MorphingMesh.

<dl class="note"><dt><p class="callout info">The vertex buffers can be dragged just from the Solution Explorer to the MorphingMesh</p>

</dt><dt></dt><dd><div drawio-diagram="7581"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732896299.png" alt=""/></div>

</dd></dl></div></div></div>##### <a class="anchor" id="bkmrk--139"></a>Configure Morphing Weights

In order to get the desired morphing effect, select the morphing mesh in the right side of the Scene Tree panel and set the weight of each morphing mesh item in the Properties panel accordingly.

<div drawio-diagram="6070"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717769811.png" alt=""/></div>

<div class="contents" id="bkmrk-the-sum-of-the-weigh"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The sum of the weight of all morphing mesh items part of a MorphingMesh must be 1.00 to get correct morph behavior.</p>

</dd></dl></div></div></div>By default, after creating morphing mesh items, the morph weight of the first item is set to 1.00, while morph weights for all other items are set to 0.00.

<div drawio-diagram="6071"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717769836.png" alt=""/></div>

##### Wireframe Line Width

<div class="textblock" id="bkmrk-when-a-wireframe-ver"><div class="textblock">When a wireframe vertex buffer is applied to a morphing mesh and the “Wireframe Enabled” option is enabled from the context menu in the scene tree, the properties item “Line Width” is added to the Morphing Mesh. This specifies the line width of the Morphing mesh when it is rendered as wire.</div></div><div class="textblock" id="bkmrk-the-actual-line-widt">- The actual line width is determined by rounding the specified width to the nearest integer.
- If the setting is less than “1”, it is always set to “1”.

</div><div class="textblock" id="bkmrk--53"><div drawio-diagram="7582"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732896434.png" alt=""/></div>

</div><div class="textblock" id="bkmrk--55">  
</div>##### <a class="anchor" id="bkmrk--142"></a>Morphing Shader

The reference shaders for morphing:

<div class="contents" id="bkmrk-reftranslight1morph_"><div class="contents"><div class="textblock">- RefTransLight1Morph\_RefColor and
- RefTransLight1Morph\_RefColorTex

</div></div></div>support morphing between maximal 2 vertex buffers.

#### <a class="anchor" id="bkmrk--143"></a>**Level of Detail (LOD)**

With Level of Detail, 3D render performance can be improved by using low polygon models for far away objects and high polygon models only for objects near to the camera.

##### <a class="anchor" id="bkmrk--144"></a>Create a LodNode

Using the level of details concept in SceneComposer:

<div class="contents" id="bkmrk-create-a-lod-node-it"><div class="contents"><div class="textblock">1. Create a lod node item called "LodNode" in a scene by dragging it from the Toolbox and dropping it to the scene.
2. Add children (for example: 2 Billboards) to the LodNode, providing models for each desired lod level. Note that each child node needs to have an own RenderMode attached.

</div></div></div>##### <a class="anchor" id="bkmrk--145"></a>Configure Lod Levels

Each child of a LodNode must be associated to a specific LodLevel by configuring following properties:

<div class="contents" id="bkmrk-index%2C-lower-bound-o"><div class="contents"><div class="textblock">- index,
- lower bound of visibility range and
- upper bound of visibility range.

</div></div></div>While the index is given by the order of the LodNode children in the scene graph, lower and upper bound can be configured either in the Properties panel or in the "Configure Level of Detail" dialog. For this, use the context menu item "Configure Level of Detail" on the selected LodNode in Scene Tree panel:

<div drawio-diagram="7583"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732897799.png" alt=""/></div>

<div class="contents" id="bkmrk--58"><div class="contents"><div class="textblock">  
</div></div></div>First of all, the "Level of Detail" dialog allows to specify the Lower Bound and the Upper Bound for any child part of the LodNode.

<div drawio-diagram="6074"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717770689.png" alt=""/></div>

<div class="contents" id="bkmrk--60"><div class="contents"><div class="textblock">  
</div></div></div>The same operation can be done in the Properties panel, whenever a LodNod child is selected in the Scene Tree panel:

<div drawio-diagram="6075"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717770762.png" alt=""/></div>

#### <a class="anchor" id="bkmrk--149"></a>Configure LodNode

Select the LodNode in the Scene Tree panel to edit the following LoD node properties in the Properties panel:

<div class="contents" id="bkmrk-lod-render-strategy%2C"><div class="contents"><div class="contents"><div class="textblock">- LoD render strategy,
- LoD criterion and the
- preview type

</div></div></div></div><div drawio-diagram="6076"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717770799.png" alt=""/></div>

<div class="contents" id="bkmrk--64"><div class="contents"><div class="textblock">  
</div></div></div>The preview type property can be edited in the Level of Detail Configuration dialog, too.

##### <a class="anchor" id="bkmrk--151"></a>Discrete LoD Render Strategy

Select "Discrete" for the Level of Detail render strategy to configure a stepwise transition between the several Lod levels.

After choosing "DistanceToCamera" Lod criterion, the LoD level will be switched depending on the distance of the LodNode to the camera.

##### <a class="anchor" id="bkmrk--152"></a>Blend Lod Render Strategy

Select "Blend" for the Level of Detail render strategy to configure a smooth alpha blending transition between the several Lod levels. In this case, following additional properties can be specified:

<div class="contents" id="bkmrk-enable-depth-bias-op"><div class="contents"><div class="contents"><div class="textblock">- Enable Depth Bias
- Opaque and Transparent Render Order Bin

</div></div></div></div><div drawio-diagram="6077"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717770908.png" alt=""/></div>

<div class="contents" id="bkmrk--66"><div class="contents"><div class="textblock">  
</div></div></div>Again, after choosing "DistanceToCamera" Lod criterion, the LoD level will be switched depending on the distance of the LoDNode to the camera.

#### <a class="anchor" id="bkmrk--154"></a>**Canvas**

Canvas is a node that acts as a surface which allows the user to introduce 2D content in a 3D scene. Canvas nodes can have appearances, just like normal 3D nodes so the user can achieve complex visual effects by using appropriate shaders, materials and textures.

Canvas, CanvasGroup, CanvasSprite and Canvas Text (placed under the "Canvas Nodes" section of the Toolbox) behave like normal nodes when it comes to transformations and selection. Bounding box will be rendered for each of them. They can be translated, rotated, scaled. Canvas acts as a surface. CanvasGroup nodes, CanvasSprite nodes and Canvas Text nodes can be inserted into it.

For each Canvas object, a new editing camera is added in the scene camera list and becomes available in "Canvas" category. This camera can be selected and exhibits a special behavior: is automatically oriented towards the canvas, regardless of canvas transformations, so that the Canvas and its children will always appear like they would be viewed from a "Front" camera. A Canvas camera provides an orthographic projection.

<div drawio-diagram="6078"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717770962.png" alt=""/></div>

<div class="contents" id="bkmrk--69"><div class="contents"><div class="contents"><div class="textblock">  
</div></div></div></div>#### <a class="anchor" id="bkmrk--156"></a>Canvas Sprite

CanvasSprite is a node that represents a solid object, offering the possibility to render a texture, a flat colored rectangle or other visual effects, depending on its appearance configuration.

Four new shaders will be available in the default solution for configuring the CanvasSprite:

<div class="contents" id="bkmrk-refcanvastrans_refte"><div class="contents"><div class="textblock">- RefCanvasTrans\_RefTex
- RefCanvasTransLight1\_RefColor
- RefCanvasTransLight1\_RefColorTex
- RefCanvasTransUniDiffuseMat\_RefCanvasUniDiffuseMat

</div></div></div>A new uniform setter template will be available in the default solution for configuring CanvasSprite: CanvasTransShaderParamSetter.

#### <a class="anchor" id="bkmrk--157"></a>Canvas Text

Canvas Text is a node that allows the creation of 2D texts on a Canvas in a 3D scene. When Canvas Text node is selected, specific properties become available in the Properties panel.

<div drawio-diagram="6080"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717771031.png" alt=""/></div>

<div class="contents" id="bkmrk--72"><div class="contents"><div class="textblock">  
</div></div></div>In this way the text can be set as desired.

<p class="callout info">The Canvas automatically batches Canvas Texts together to minimize the amount of draw calls. To achieve high batching rates, it is crucial that the user shares Appearances, Render Order Ranks, Render Order Bins, and Scope Masks between Canvas Texts as much as possible. Only Canvas Texts with the same properties can be batched together.</p>

Some of the most important Canvas Text properties are the following:

**Alignment:** The text has a property for horizontal alignment. This property aligns the text within Text::Size. If no Text::Size is set, the Layout::Size is used. The layout has a horizontal and vertical layout alignment property which is used to align the ‘block’ of the measured text within the Layout::Size. The defined layout alignment can be propagated to the text alignment when the text alignment is set to ‘Auto’.  
Otherwise, it is possible to right align the text within Text::Size but left align this block of right aligned text within Layout::Size. The properties will be inverted if the layout direction is set to ‘right to left’.

**Word wrap and truncation:** Both properties prepare a text for use cases in which they do not fit into a size. Therefore, enabling one of them forces the text to fit into the provided smallest size (Layout::Size or Text::Size).   
  
For many other details see the chapter <span style="color: rgb(230, 126, 35);">[Canvas Text - Size Property](https://doc316en.candera.eu/books/layouter/page/canvas-text-size-property)</span>.

#### <a class="anchor" id="bkmrk--159"></a>Canvas Text Outline

By using this feature, it is possible to use shader effects such as Outline on any canvas text node on a 3D scene. This property allows the user to add an outline on any canvas text on a 3D scene.

To use the "Canvas Text Outline" feature, it is mandatory to use an Appearance Collection that has set "RefTransColor\_RefColorTexAlpha" as shader.

In order to obtain such a collection, first, in "Solution Explorer" copy the "CanvasText" appearance collection which can be found in "References &gt; SCL:ConstructionKit &gt; Resources &gt; Appearances &gt; CanvasText" from "Templates" into your solution. After this step, in "Solution Explorer" rename the copied "CanvasText" appearance collection (e.g.: "AppearanceCollectionWithOutlineShader") then in Properties select the "CanvasText" tab and under the "Appearance" section set "RefTransColor\_RefColorTexAlphaOutline" as shader program.

<div drawio-diagram="6081"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717772442.png" alt=""/></div>

<div class="contents" id="bkmrk--74"><div class="contents"><div class="textblock">  
</div></div></div>From now on it is possible to use this appearance collection to set an outlined canvas text. The color and width properties are available under "Shader parameters" section (see the image above). To see how this works, first, when "AppearanceCollectionWithOutlineShader" is selected in "Solution Explorer", modify the u\_outline Color as follows: X=1.00/Y=0.00/Z=1.00/W=1.00 then set the u\_outline Width to be "4". Create a 3D scene and in it drag and drop from Toolbox a Canvas node with a Canvas Text in it. In Scene Tree select the "CanvasText" node and drag and drop on it - from "Solution Explorer" - the "AppearanceCollectionWithOutlineShader". In Scene Tree select again the "CanvasText" node then in Properties modify the "Outline Width" to be at least 1 or 2.

<div drawio-diagram="7584"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732898711.png" alt=""/></div>

<div class="contents" id="bkmrk--76"><div class="contents"><div class="textblock">  
</div></div></div>In this way the outline of the text can be set as desired.

#### <a class="anchor" id="bkmrk--162"></a>Canvas Layouter

The functionality of 3D Layout for canvas nodes is similar with that of the layouters known from SceneComposer 2D scenes. By using this feature a Canvas Group is able to align its nodes (group, sprite, or text) according to the configured layouter.

It's not possible to animate the same property for parent and child nodes. Group nodes are resolved and all properties are applied on their child nodes. Either animate the parent group property or the child properties.

The settings for this feature can be done through a category with the same name available in the Properties panel. To access it, first, a Canvas Group - included in a Canvas - has to be selected:

<div drawio-diagram="7585"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732898895.png" alt=""/></div>

<div class="contents" id="bkmrk-in-order-to-get-the--0"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">In order to get the best perspective on a scene where canvas groups/nodes are used, a special canvas camera is available (see the image below).</p>

<div drawio-diagram="6086"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773292.png" alt=""/></div>

</dd></dl></div></div></div>By using this feature a Canvas Group is able to align its nodes - group, sprite, or text - according to the configured layouter. The available layout types are identical with those used for the 2D layouters:

<div class="contents" id="bkmrk-baseline-layouter-gr"><div class="contents"><div class="textblock">- BaseLine Layouter
- Grid Layouter
- Overlay Layouter
- Stack Layouter
- DockPanel Layouter

</div></div></div><div class="contents" id="bkmrk-the-%22ctrl%2Bl%22-command"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">The "Ctrl+L" command is a shortcut for the "Do Layout" operation. Please, note, that in the case of 3D Canvas layouter, this command will update the position and scale' values for the selected object.</p>

</dd><dd></dd></dl></div></div></div>**Baseline Layouter**

The layout type "Baseline" realizes a stacked laying out in the horizontal direction. It behaves similar to the Horizontal Stack Layouter. The major difference consists in its given reference: it aligns the objects to a line instead of aligning them to the client area. The main purpose of this layouter is to align different sizes formatted texts along the same baseline. For instance, if the center is chosen for alignment, the baseline of the text will be aligned to the given line (= baseline offset). The order of the elements is given by the order of the child nodes within the layouted group.

<div drawio-diagram="6088"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773397.png" alt=""/></div>

<div class="contents" id="bkmrk--80"><div class="contents"><div class="textblock">  
</div></div></div>Configure the Baseline Layouter by following these steps:

<div class="contents" id="bkmrk-select-the-canvas-gr"><div class="contents"><div class="textblock">1. Select the Canvas Group holding the nodes to be layouted in the Scene Tree panel
2. Choose LayoutType "Baseline" from the Properties panel
3. Set any value for property Base Line Offset in the Properties panel, depending on the desired laying out

</div></div></div><div drawio-diagram="725"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676381281.png" alt=""/></div>

<div class="contents" id="bkmrk--82"><div class="contents"><div class="textblock">  
</div></div></div>**Grid Layouter**

In a Grid layout, every node part of the layouted canvas group is assigned to a cell of the grid. A Grid Layout Editor is available to configure the grid and to arrange nodes in the grid's cells by drag &amp; drop operation.

<div drawio-diagram="6089"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773446.png" alt=""/></div>

 Configuring the Grid Layouter:

<div class="contents" id="bkmrk-select-the-canvas-gr-0"><div class="contents"><div class="contents"><div class="textblock">1. Select the Canvas Group holding the canvas nodes to be layouted in the Scene Tree panel
2. Choose LayoutType "Grid" from the Properties panel
3. Optional: Set the number of rows and columns of the grid by editing the properties RowCount and ColumnCount in the Properties panel
4. Use the context menu item "Configure Layouter" on the selected Group in the Scene Tree panel to open the "Grid Layout Editor" dialog

</div></div></div></div><div drawio-diagram="7586"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732898993.png" alt=""/></div>

<div class="contents" id="bkmrk--85"><div class="contents"><div class="textblock">  
</div></div></div>Optional: Use the buttons "+","-" to configure the desired number of rows and columns in the "Grid layout editor" dialog, if not done already in the Properties panel.

<div drawio-diagram="728"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676381360.png" alt=""/></div>

 Arrange the nodes of the group in the grid's cells by drag &amp; drop operation.

<div drawio-diagram="6091"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773621.png" alt=""/></div>

<div class="contents" id="bkmrk--88"><div class="contents"><div class="textblock">  
</div></div></div>Configure width and height for rows and columns by editing the values on the border of the grid. Values within the range \[0...1\] are considered as percentages and values greater than 1 as dimensions.

Confirm the layouter configuration by pressing the "OK" button of the dialog "Grid layout editor".

Call the Do-Layout command using the shortcut keys "Ctrl+L" or from the "Edit" &gt; "Do-Layout" menu.

**Overlay Layouter**

The layout type "Overlay" arranges the objects by laying out them on top of each other or by aligning the nodes according to their general layout properties. The order of the elements is given by the order of the child nodes within the layouted group.

<div drawio-diagram="6092"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773662.png" alt=""/></div>

<div class="contents" id="bkmrk--90"><div class="contents"><div class="textblock">  
</div></div></div>Configuring the Overlay Layouter:

<div class="contents" id="bkmrk-select-the-canvas-gr-1"><div class="contents"><div class="textblock">1. Select the Canvas Group holding the canvas nodes to be layouted in the Scene Tree panel
2. Choose LayoutType "Overlay" from the Properties panel

</div></div></div>**Stack Layouter**

The layout type "Stack" realizes a stacked laying out either in horizontal or vertical direction. The order of the stack elements is given by the order of the child nodes within the layouted group.

<div drawio-diagram="6093"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773691.png" alt=""/></div>

<div class="contents" id="bkmrk--92"><div class="contents"><div class="textblock">  
</div></div></div>Configuring the Stack Layouter:

<div class="contents" id="bkmrk-select-the-group-hol"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be layouted in the Scene Tree panel
2. Choose LayoutType "Stack" from the Properties panel
3. Choose "Horizontal" or "Vertical" value for property Arrangement in the Properties panel, depending on the desired laying out

</div></div></div><div drawio-diagram="732"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676381461.png" alt=""/></div>

<div class="contents" id="bkmrk--95"><div class="contents"><div class="textblock">  
</div></div></div>**DockPanel Layouter**

The "DockPanel" layout provides a layout area within it is possible to arrange canvas child elements around the edge of the screen based on four direction: Top, Bottom, Left, and Right.

<div drawio-diagram="733"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676381479.png" alt=""/></div>

<div class="contents" id="bkmrk--102"><div class="contents"><div class="textblock">  
</div></div></div>This type of layout arranges the elements by laying out them in the remaining space after the previous element was set. To dock an element to the center of the panel, it must be the last child of the panel.

<div drawio-diagram="6094"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773800.png" alt=""/></div>

<div class="contents" id="bkmrk--106"><div class="contents"><div class="textblock">  
</div></div></div>Configure the DockPanel Layouter by following these steps:

<div class="contents" id="bkmrk-select-the-canvas-gr-2"><div class="contents"><div class="textblock">1. Select the Canvas Group holding the canvas nodes to be layouted in the Scene Tree panel
2. Choose Layout Type "DockPanel" from the Properties panel
3. For any canvas node inside the Canvas Group a new property will become available: "Dock Side". Select it and choose any of the fours available laying outs: "DockLeft", "DockTop", DockRight", "DockBottom".

</div></div></div><div drawio-diagram="6095"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1717773917.png" alt=""/></div>

<div class="contents" id="bkmrk--177"><div class="textblock">  
</div></div>

# Node Attachments

#### **Node Attachments Toolbox**

##### <a class="anchor" id="bkmrk--93"></a>Create 3D Node Attachments

A node can have an appearance attached, having up to four children. Following items from the Toolbox can be used to configure attachments for 3D nodes:

<div drawio-diagram="6155"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718341803.png" alt=""/></div>

<div class="header" id="bkmrk-appearance%3A-its-attr"><div class="header"><div class="headertitle"><div class="title"><div class="contents"><div class="contents"><div class="textblock"><table border="0" cellspacing="10" style="width: 100%; height: 508.359px;"><tbody><tr style="height: 71.6875px;" valign="bottom"><td style="width: 5.79283%; height: 71.6875px;">**1**

</td><td style="width: 94.0837%; height: 71.6875px;">**Appearance:** Its attributes define the distinctive visualization of a geometry like Mesh, Billboard, and PointSprite.   
[Candera::Appearance](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_appearance.html "The class Appearance groups following render attributes: Material, Textures, RenderMode, and Shader. Render attributes define the distinctive visualization of a geometry like Mesh, Billboard, and PointSprite. Further, render attributes can be shared across multiple objects, which conserves memory and enables sharing of appearance characteristics. An Appearance object is mandatory for any object in order to get rendered. Per default all render attributes are initialized to null, which is a valid setting. If the Appearance is activated, all render attributes that are set become activated. If no RenderMode is defined (null), then the default RenderMode is used instead;.")</td></tr><tr style="height: 70.6875px;" valign="bottom"><td style="width: 5.79283%; height: 70.6875px;"><div class="image"><div class="image">**2**</div></div></td><td style="width: 94.0837%; height: 70.6875px;">**Material:** Describes the color attributes of an object's surface. It is primarily used for lighting computations.   
[Candera::Material](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_material.html "The class Material describes the color attributes of an object's surface and is primarily used for li...")</td></tr><tr style="height: 89.7188px;" valign="bottom"><td style="width: 5.79283%; height: 89.7188px;"><div class="image">**3**</div></td><td style="width: 94.0837%; height: 89.7188px;">**RenderMode:** An appearance component that encapsulates polygon-level and per-fragment compositing render attributes. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-render-mode)</span>   
[Candera::RenderMode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_render_mode.html "The class RenderMode is an Appearance component that encapsulates polygon-level and per-fragment comp...")</td></tr><tr style="height: 67.3281px;" valign="bottom"><td style="width: 5.79283%; height: 67.3281px;">**4**

</td><td style="width: 94.0837%; height: 67.3281px;">**Uniform Setter:** A setter associated to a given node in a 3D scene to generate special effects.   
[Candera::GenericShaderParamSetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_generic_shader_param_setter.html "GenericShaderParamSetter bundles uniform shader parameters that are calculated by Candera...")</td></tr><tr style="height: 67.3281px;" valign="bottom"><td style="width: 5.79283%; height: 67.3281px;">**5**

</td><td style="width: 94.0837%; height: 67.3281px;">**Texture:** A collection of textures. **Up to 16 on ES3.0 builds** and **up to 8 on ES2.0 builds**.

<p class="callout info">On ES3.0 builds, additional auto-uniform samplers u\_Texture–u\_Texture15 and u\_CubeMapTexture–u\_CubeMapTexture15 are available for binding the 1th–16th textures.  
On ES2.0, only u\_Texture–u\_Texture7 and u\_CubeMapTexture–u\_CubeMapTexture7 are available.</p>

[Candera::Texture](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_texture.html "Texture encapsulates a TextureImage and a set of attributes specifying how it is applied to a vertex'...")

</td></tr><tr style="height: 71.6875px;" valign="bottom"><td style="width: 5.79283%; height: 71.6875px;">**6**

</td><td style="width: 94.0837%; height: 71.6875px;">**Cube Map Texture:** A particular type of environment mapping. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-cube-map-texture)</span>   
[Candera::GenericShaderParamSetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_generic_shader_param_setter.html "GenericShaderParamSetter bundles uniform shader parameters that are calculated by Candera...")</td></tr><tr style="height: 69.9219px;" valign="bottom"><td style="width: 5.79283%; height: 69.9219px;">**7**

</td><td style="width: 94.0837%; height: 69.9219px;">**Render Order Bin:** Is used to configure a non-default render order for all the 3D objects in a scene graph. <span style="color: rgb(230, 126, 35);">[Read more...](#bkmrk-render-order-bins)</span>   
Candera::RenderOrderBin</td></tr></tbody></table>

</div></div></div></div></div></div></div>Create a new attachment by drag &amp; drop an attachment type from the Toolbox on the desired 3D node in the Scene Tree panel.

**Apply Appearance Template to Multiple Nodes**

It is possible to apply an attachment to multiple nodes at once: When all the desired nodes are selected, drag and drop the attachment on the multi-selected nodes.

<div class="header" id="bkmrk-if-a-drag-operation-"><div class="headertitle"><div class="title"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">If a drag operation is performed between two panels and the destination item is part of a multiple selection, all the items in the selection will be affected.</p>

</dd></dl></div></div></div></div></div><div class="contents" id="bkmrk--2"><div class="textblock"><dl class="note"><dd></dd></dl>  
</div></div><div class="header" id="bkmrk--0"><div class="headertitle">  
</div></div><div class="title" id="bkmrk--3"></div>#### **Render Mode**

##### <a class="anchor" id="bkmrk--94"></a>Configure Render Mode

If no "Render Mode" is associated to an object, SCHost will automatically apply the values set in the Default render mode configuration (the default render mode). Otherwise, if a render mode instance already exists on a specific node, note the following:

In the Properties panel, the RenderMode properties provide a checkbox on the left side with two states:

<div class="contents" id="bkmrk-%22inherited%22-%28the-val"><div class="contents"><div class="textblock">- **"Inherited"** (the value is inherited from the default render mode) and
- **"Not Inherited"** (the value set by the user is the one considered).

</div></div></div>If the property value is set to Inherited, the property will be read only and the value will be taken from the DefaultRenderMode (Configuration &gt; Default Render Mode). Only if the checkbox is unchecked (meaning that the property does not inherit from the default render mode configuration) the property will be editable.

<div class="contents" id="bkmrk-a-new-render-mode-ad"><div class="textblock"><dl class="note"><dd><p class="callout info">A new Render Mode added to a node will have all properties set to "Inherited". A RenderMode created based on an imported Scene will have all properties set to "Not Inherited".</p>

</dd></dl></div></div><dl class="note" id="bkmrk--4"></dl>#### **Cube Map Texture**

##### <a class="anchor" id="bkmrk--95"></a>Cube Mapping

Cube mapping is one of the most spectacular types of the so called environment mapping. In SceneComposer this type of mapping can be done by using the CubeMapTexture from the Toolbox. First, a mesh and a collection of six images of a cubical environment map have to be imported. The mesh will be dragged in a 3D scene. The Appearance has to be contained:

<div class="contents" id="bkmrk-material---does-not-"><div class="contents"><div class="textblock">- Material - does not require any special setting;
- Render Mode - the FrontFaceCulling property has to be selected;
- One of the specific shaders available for the CubeMapTexture (e.g. RefTransCubeMap... shader) - in Appearance the Shader Program that must be selected is RefTransCubeMap\_RefCubeMapTex;
- UniformSetter - The uniform setter required by the chosen shader has to be checked

</div></div></div><p class="callout info">`CubeMapTexture` supports **up to 16 slots on ES3.0 builds** and **up to 8 on ES2.0 builds** (each slot maps to `u_CubeMapTextureN`).</p>

The main feature that has to be used is CubeMapTexture which has to be dragged and set as texture. Six specific properties will become available for this type of texture: Positive X Image / Negative X Image / Positive Y Image / Negative Y Image / Positive Z Image and Negative Z Image. Any of the imported images has to correspond to one of these properties.

<div drawio-diagram="774"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676426940.png" alt=""/></div>

<div class="contents" id="bkmrk-any-of-the-imported-"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">Any of the imported six images has to be vertically flipped to get the desired map. (This step is mandatory because of the OpenGL standard that stores its textures "reversed".)</p>

</dd></dl></div></div></div><div drawio-diagram="775"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676426970.png" alt=""/></div>

<div class="contents" id="bkmrk--8"><div class="contents"><div class="textblock">  
</div></div></div>Any model can be placed inside the environment (in our case, a cube) and set as a reflective map. One of the best examples is to place a sphere inside the cube environment and to use the RefTransCubeMapReflection\_RefCubeMapTex shader. The setting of the properties will be almost the same as in the Cube mapping case. The UniformSetter properties which have to be enabled are ModelMatrix4, NormalModelMatrix3 and ModelViewProjectionMatrix4. The same six images can be used for the sphere as six textures displayed as an unfolded cube.

<div drawio-diagram="776"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676426996.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents"><div class="textblock">  
</div></div></div>By placing the sphere in an environment some complex and spectacular scenes can be created.

<div drawio-diagram="777"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676427011.png" alt=""/></div>

<div class="contents" id="bkmrk--12"><div class="textblock">  
</div></div><dl class="note" id="bkmrk--13"></dl><dl class="note" id="bkmrk--14"></dl><dl class="note" id="bkmrk--15"></dl><dl class="note" id="bkmrk--16"></dl><dl class="note" id="bkmrk--17"></dl>#### **Render Order Bins**

Render Order Bins are containers for items to sort them for rendering.

For a detailed description of the [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") Render Order concept, refer to <span style="color: rgb(230, 126, 35);">[Application and Widget Development Tutorial](https://doc316en.candera.eu/books/candera)</span>.

The Render Order Bins collection is displayed in the RenderOrderBins Panel. It can be enabled by choosing "View - Scene - Render Order Bins" menu option.

<div drawio-diagram="6156"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718342475.png" alt=""/></div>

<div class="contents" id="bkmrk--19"><div class="contents"><div class="textblock">  
</div></div></div>There are two predefined Render Order Bins: **Opaque** and **Transparent**. Per default, all objects part of a scene are sorted into that bins according to their render attributes. Both default bins are protected, meaning that they are under control of [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") and cannot be deleted.

<div class="contents" id="bkmrk--20"><div class="contents"><div class="textblock">---

</div></div></div>##### <a class="anchor" id="bkmrk--102"></a>Configure a New Render Order Bin

To specify a non-default render order, create a new Render Order Bin by drag &amp; drop from the Toolbox into the RenderOrderBins collection.

<div class="contents" id="bkmrk-to-assign-items-to-t"><div class="contents"><div class="textblock">- To **assign items** to the new Render Order Bin, drag items from the scene graph in the "Scene Tree" panel to the Render Order Bin; these items will appear as children of the Render Order Bin.

- Modify **Render Order Bin Rank:** All the bins are sorted according to the Render Order Bin Rank which is visible as a "read only" field in the Properties panel. If there are many bins dragged from the Toolbox inside the "Render Order Bins" panel, their ranks will be automatically assigned to each of them according with their order. Every time when the user manually rearranges the order of the bins in the "Render Order Bins" panel, their rank is updated.

- If property **Enable Sorting** is checked for the Render order bin, a proper **Render Order Rank Criterion** must be chosen to define the strategy how the render order shall be calculated.   
    &gt; If the selected order criterion is "DistanceToCamera" or "ReverseDistanceToCamera", the "Distance Function" will become available. The mentioned function determines how the distance from camera to any node is calculated.   
    &gt; In case a (Reverse) Render Order Rank Criterion is selected, specify the ranks of the nodes part of a bin on the node property "Render Order Rank". &gt; If the selected order criterion is "BatchOrderCriterion", the "SortbyShaderandRenderMode" and "SortbyAppearance" modes will become available. This criterion produces a render order containing series of nodes that can then be batched by the Renderer to maximize usage of Geometry Instancing.

</div></div></div>In order to check the "BatchOrderCriterion" the following steps should be followed:

<div class="contents" id="bkmrk-open%2Fcreate-an-openg"><div class="contents"><div class="contents"><div class="textblock">- Open/create an OpenGL ES 3.0 Solution;
- Import an .fbx object;
- Create a 3D scene containing the object and a camera (do not activate occlusion culling render strategy);
- Create a display, a render target and set the camera to render on the display;
- Clone some meshes and apply a different appearance to them;
- Set up so that shared appearance meshes are not adjacent. Example: CAM &lt; MESH1 MESH2 MESH3 MESH4 MESH5 MESH6 (odd number meshes have shared appearance, others have a different appearance);
- For the Opaque render order bin, enable sorting;
- Sorting by ReverseDistanceToCamera will reduce the number of Instances (0) and increase the Draw Calls (6) (see the "Display Render Statistics" in SceneComposer);
- Sorting by BatchOrder will draw increase the number of Instances (3) and reduce the Draw Calls (4).

</div></div></div></div><div drawio-diagram="6157"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718342562.png" alt=""/></div>

<div class="contents" id="bkmrk-the-previous-step-wi"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The previous step will lead to the desired results *just* if a RenderMode object will be associated with every item placed in the Render Order Bin by dragging it from the toolbox panel ("Toolbox" &gt; "Attachments") inside the Appearances section of the Scene Tree. After this operation, the properties "Enable Depth Write" and "Enable Depth Test" which are associated with every RenderMode associated to the items have to be set as in the image below.</p>

</dd></dl></div></div></div><div drawio-diagram="6158"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718346611.png" alt=""/></div>

<div class="contents" id="bkmrk-a-render-order-bin-c"><div class="contents"><div class="textblock">- A Render Order Bin can be **cloned, deleted or rename** like any other scene node. **Remove items** from a bin with the "Remove From Bin" context menu.

</div></div></div>**See also:**

<div class="contents" id="bkmrk-candera%3A%3Adistancetoc"><div class="textblock">- [Candera::DistanceToCameraOrderCriterion](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_distance_to_camera_order_criterion.html "class DistanceToCameraOrderCriterion compares two Node's distances to the camera. A render order bin ...")
- [Candera::CameraOrderCriterion](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera_order_criterion.html "Abstract class CameraOrderCriterion implements different distance functions to determine the distance...")

</div></div><dl class="note" id="bkmrk--24"></dl><dl class="note" id="bkmrk--25"></dl><dl class="note" id="bkmrk--26"></dl>#### **Node Attachment Templates**

SceneComposer allows saving any node attachment (Appearance, Material, Render Mode or Texture) as a template to enable reuse for other nodes. Templates are also listed in the Templates panel.

<div drawio-diagram="6159"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718347102.png" alt=""/></div>

<div class="contents" id="bkmrk--28"><div class="contents"><div class="textblock">  
</div></div></div><div class="contents" id="bkmrk--30"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--107"></a>Save as Template

Select a node which contains an appearance, material, render mode, or texture in the Scene Tree and save the selected node attachment as a template with the context menu item "Save as Template".

<div drawio-diagram="7589"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733478672.png" alt=""/></div>

<div class="contents" id="bkmrk--32"><div class="contents"><div class="textblock">  
</div></div></div>Alternatively directly select the node attachment in the right side of the Scene Tree and use the regarding context menu item to save the selected attachment as template:

<div drawio-diagram="7590"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733478713.png" alt=""/></div>

<div class="contents" id="bkmrk--34"><div class="contents"><div class="textblock">  
</div></div></div>In the "Add New Template" dialog, specify the template location and template name. Tick the checkbox "Is Instance Sharing Enabled" to allow sharing of a template instance across several nodes (refer to the chapter <span style="color: rgb(230, 126, 35);">[Shared Node Attachments](#bkmrk-shared-node-attachme)</span> for more details).

<div drawio-diagram="6163"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718350464.png" alt=""/></div>

<div class="contents" id="bkmrk--36"><div class="contents"><div class="textblock">  
</div></div></div>The new template will be displayed in the Templates panel. This panel contains all node attachment templates grouped by type:

<div class="contents" id="bkmrk--37"><div class="contents"><div class="textblock">  
</div></div></div><div drawio-diagram="6165"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718350515.png" alt=""/></div>

<div class="contents" id="bkmrk--39"><div class="contents"><div class="textblock">  
</div></div></div>---

#### <a class="anchor" id="bkmrk--112"></a>Appearance Wrapper

In some circumstances it could be necessary to expose for the user just those properties which should be modified to get a desired setting of an object. For instance, if the object is a button used in an interface, we can suppose that the only properties which have to be modified by the user are "Font", "Text" and "Status". But if the appearance of the object has many other properties, it could be overwhelming for the user to understand exactly which properties have to be modified to get the desired result. So, it is easy understandable why is necessary to provide a concept which will allow replacing a node attachment with an object which exposes only some properties of a regular node attachment.

This Appearance Wrapper feature allows to expose only some properties of an appearance attached to a node or the properties pertaining to its containments (material, render node, shader, uniform setter, texture). In this way, the goal mentioned above - the user will be able to see and modify just the exposed properties - is fulfilled.

When a template object is created from an existing appearance attached to a node, in the "Add New Template" dialog an Is Encapsulated check-box becomes available. If this check-box is enabled, all the properties associated with the template will not be visible for the user in the properties panel when the template will be used. Only the "Generic" category of properties will be available in the Properties panel.

If the user needs only some of encapsulated properties to be visible, this operation should be done by righting click on the template which has all the properties encapsulated. From the context menu the "Configure Properties" should be chosen. The "Configure Properties" dialog provides the possibility to select which encapsulated properties will become visible in the Properties panel. This operation could be done by using the "IsChecked" boxes available in the dialog. When a template with exposed properties is used, all the properties will become visible in the "Public Properties" category of the Properties panel.

<div class="contents" id="bkmrk--43"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--113"></a>Use a Template

Use a template by dragging it from the Templates panel and dropping it on the desired parent in the Scene Tree:

<div class="contents" id="bkmrk-an-appearance-templa"><div class="contents"><div class="textblock">- An appearance template on a node,
- material, render node and texture on a Appearance.

</div></div></div>It's possible to apply the same template to many multi-selected nodes at once. After all the desired nodes are selected, drag and drop the template on the multi-selected nodes.

<div class="contents" id="bkmrk-if-a-drag-operation--0"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">If a drag operation is performed between two panels and the destination item is part of a multiple selection, all the items in the selection will be affected.</p>

</dd></dl></div></div></div></div>The template will replace the existing node attachment by an item linked to the template. In case the template allows instance sharing, the Shared Instance Id used for the node is displayed in brackets.

<div drawio-diagram="6166"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718350698.png" alt=""/></div>

<div class="contents" id="bkmrk--45"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--115"></a>Edit a Node Attachment Template

Edit a node attachment template in the Properties panel after selecting a template in the Solution Explorer panel or in the Templates panel.

Any change in the template will be reflected in all the nodes using it.

#### **Shared Node Attachments**

Shared node attachments refer to instances of appearances, materials, render modes, or textures which are being shared between nodes.

<div class="contents" id="bkmrk-the-appearance-shari"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">The appearance sharing is only supported for appearance collections.</p>

</dd><dd></dd></dl></div></div></div>There are several options:

**Prevent sharing of a template:** Disable the property "Is Instance Sharing Enabled" of the node attachment template. In this case, each time such a template is applied to a node, a new instance of the template will be created for this node.

**Share exactly one instance of a template:** Enable the property "Is Instance Sharing Enabled" of the node attachment template and use only the default value "0" for the node attachment property "Shared Instance Id". In this case, each time such a template is applied to a node, the same template instance will be shared among all nodes.

**Share more than one instance of a template:** Enable the property "Is Instance Sharing Enabled" of the node attachment template and specify as much distinct values for "Shared Instance Id" as instances are required.

<div class="contents" id="bkmrk--46"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--117"></a>Enable Instance Sharing

Whenever a new node attachment is created and about to be shared, enable the property "Is Instance Sharing Enabled":

<div drawio-diagram="4952"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1701442488.png" alt=""/></div>

<div class="contents" id="bkmrk--48"><div class="contents"><div class="textblock">  
</div></div></div>This property can be also set in the Properties panel after selecting an existing template from the Templates panel.

<div drawio-diagram="6167"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718350898.png" alt=""/></div>

<div class="contents" id="bkmrk--51"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--120"></a>Specify Shared Instance Ids

Node attachments from scenes which are linked to templates having "Is Instance Sharing Enabled" set to true will get a new property "Shared Instance Id" to indicate which shared instance of the node attachment to use:

<div class="contents" id="bkmrk-if-shared-instance-i"><div class="contents"><div class="textblock">- If Shared Instance Id is set to -1 a new unshared instance will be created (please, note, that when the Id =-1 even if the template is shared it will be used as if it is not shared),
- Otherwise a shared instance will be created and reused by all nodes having the same Shared Instance Id for that node attachment type.
- Default value for Shared Instance Id is 0 to indicate that the first shared instance of the template is used.

</div></div></div>##### <a class="anchor" id="bkmrk--121"></a>Edit Shared Instance Ids:

The Instance Id of a node attachment can be edited in the Properties panel of the node attachment.

For an overview of all nodes using a shared node attachment template, use the Instance Id Editor from the context menu of the node attachment template:

<div drawio-diagram="6168"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351036.png" alt=""/></div>

<div drawio-diagram="6169"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351200.png" alt=""/></div>

<div class="contents" id="bkmrk--54"><div class="contents"><div class="textblock">  
</div></div></div><div class="contents" id="bkmrk--56"><div class="contents">  
</div></div>Refer to the Node Attachments Optimization Wizard for optimizing existing scenes regarding node attachments. It is possible to export a .csv file with all the shared items by using the "Export to CSV" button which can be seen in the figure above.

#### **Node Attachment Optimization**

SceneComposer provides a wizard to automatically detect node attachments which could be replaced by shared node attachments templates. It is possible to create new node attachment templates, which can be used for the optimization, if no proper node attachment templates exist yet. Selected node attachment candidates can be replaced by shared node attachment templates by the wizard.

##### <a class="anchor" id="bkmrk--125"></a>Invoke Node Attachment Optimization Wizard

Invoke the node attachment optimization wizard from the context menu of any folder in Solution Explorer panel, or from a scene in the Scene Tree:

<div drawio-diagram="6170"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351254.png" alt=""/></div>

<div class="contents" id="bkmrk--58"><div class="contents"><div class="textblock">  
</div></div></div>In the Node Attachment Optimization Wizard, select either the entire solution, or a specific scene or location within the solution as root location for the wizard. Further, the type of node attachments to optimize can be selected.

<div drawio-diagram="6171"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351303.png" alt=""/></div>

<div class="contents" id="bkmrk--60"><div class="contents"><div class="textblock">  
</div></div></div>Press the "Next" button to start optimization analysis for the first type of node attachment.

##### <a class="anchor" id="bkmrk--128"></a>Optimization Analysis Results

During optimization analysis, the wizard detects all nodes with identical properties regarding the selected type of node attachment, and suggests proper node attachment templates to share between those nodes.

As a result of the analysis, the wizard provides a list of node attachment template candidates, which could be shared among several nodes, as well as the number of nodes which would benefit from sharing the same template.

If no proper node attachment template candidate exists yet, the nodes which could share their attachments are listed under the name "( Empty )".

<div drawio-diagram="6172"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351557.png" alt=""/></div>

<div class="contents" id="bkmrk--62"><div class="contents"><div class="textblock">  
</div></div></div>Select "Include already optimized" to include node attachments that have been previously optimized in the list.

<div class="contents" id="bkmrk--63"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--130"></a>Apply Node Attachment Optimizations

Select the node attachment sharing candidates you want to optimize by

<div class="contents" id="bkmrk-ticking-the-checkbox"><div class="contents"><div class="contents"><div class="textblock">- ticking the checkbox in the left side of the result list and
- pressing the arrow button to expand the details for the selected candidate:

</div></div></div></div><div drawio-diagram="6173"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718351632.png" alt=""/></div>

<div class="contents" id="bkmrk--65"><div class="contents"><div class="textblock">  
</div></div></div>Now all fields to apply the optimization are editable:

<div class="contents" id="bkmrk-tick-%22create-new%22-if"><div class="contents"><div class="textblock">- Tick **"Create new"** if no proper node attachment template exists yet. The wizard will create the proper template in the Templates panel.
- Tick **"Use existing"** and select the desired node attachment template from the combo box.

</div></div></div>In the list below, specify which nodes should share the given node attachment template. The numbers displayed in the right side of each node represents the SharedInstanceId to be used.

Apply the changes by pressing the **"Apply changes"** button from the upper right corner of the wizard dialog.

Repeat the optimization for all node attachment types which have been selected in the initial wizard step:

<div class="contents" id="bkmrk-appearance-material-"><div class="textblock">- Appearance
- Material
- RenderNode
- Texture

</div></div><dl class="note" id="bkmrk--66"></dl>#### **Appearance Editor**

The Appearance Editor offers a visual editing and comparison mode for several appearances.

Go to "View" &gt; "Editors" &gt; "Appearance Editor" to activate the Appearance Editor panel. Drag and drop node attachment templates from the Templates panel to the Appearance Editor:

<div drawio-diagram="6174"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718352054.png" alt=""/></div>

<div class="contents" id="bkmrk--68"><div class="contents"><div class="textblock">  
</div></div></div>Each of the node attachment template displayed in the Appearance Editor can be selected and then edited using the Properties panel. All changes applied in the Properties panel will be reflected in the Appearance Editor.

<div drawio-diagram="6175"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718352108.png" alt=""/></div>

<div class="contents" id="bkmrk--70"><div class="contents"><div class="textblock">  
</div></div></div>It is possible to apply the same appearance to many multi-selected nodes at once. After all the desired nodes are selected, drag and drop the appearance on the multi-selected nodes.

<div class="contents" id="bkmrk-if-a-drag-operation--1"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">If a drag operation is performed between two panels and the destination item is part of a multiple selection, all the items in the selection will be affected.</p>

</dd></dl><dl class="note"></dl></div></div>

# 3D Scene Editor

The "Scene Editor" is the main panel of the application in which scenes and animations are displayed ("render view"). It is the only panel that cannot be closed.

This page describes the five types of interactions that are possible with the render view.  
See Also : <span style="color: rgb(230, 126, 35);">[3D Editing Helpers ](https://doc316en.candera.eu/books/preferences/page/3d-editing-helpers "3D Editing Helpers")</span>

---

#### General

By default, only one Scene Editor is displayed (Scene Editor (0) only). You can display up to four Scene Editors (Scene Editor (0) to (4)) as needed. You can show or hide them from the menu bar \[ View &gt; Editors &gt; Scene Editor \].

- Scene Editor menu on the Menu Bar  
    <div drawio-diagram="8610"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593129.png" alt=""/></div>
- The \[ Display Scene Editor \] icon on the toolbar  
    <div drawio-diagram="8611"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593264.png" alt=""/></div>
    
    When you click the \[ Display Scene Editor \] icon, four icons will appear for toggling the visibility of the Scene Editor. Please refer to the table below for details on each icon.
    
    <table border="1" style="border-collapse: collapse; width: 53.6082%;"><colgroup><col style="width: 20.2873%;"></col><col style="width: 79.7127%;"></col></colgroup><tbody><tr><td><div drawio-diagram="8612"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593313.png" alt=""/></div>
    
    </td><td>The Scene Editor (0) is displayed.</td></tr><tr><td><div drawio-diagram="8613"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593331.png" alt=""/></div>
    
    </td><td>The Scene Editors (0) and (1) are displayed.</td></tr><tr><td><div drawio-diagram="8614"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593345.png" alt=""/></div>
    
    </td><td>Scene Editors (0) through (2) are displayed.</td></tr><tr><td><div drawio-diagram="8615"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593361.png" alt=""/></div>
    
    </td><td>Scene Editors (0) through (3) are displayed.</td></tr></tbody></table>
    
    When a display setting not listed in the table above is applied in the Scene Editor menu on the Menu Bar, the \[ Display Scene Editor \] icon will display "Custom".  
    <div drawio-diagram="8616"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593389.png" alt=""/></div>

Displaying multiple Scene Editors is useful when you want to check a 3D model from multiple directions at the same time.

<div drawio-diagram="8543"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-09/drawing-7-1756709955.png" alt=""/></div>

<p class="callout info">Additionally, scene editors (1) to (3) support floating display. By using floating display, you can display any scene editor on a separate display.</p>

<p class="callout info">If the displayed Scene (or Control) is updated, it will be reflected in all Scene Editors.</p>

---

The following is an explanation of the scene editor tool icons.

#### Camera Manipulation 

The Camera combo box provides following camera views for a 3D scene:

<div class="contents" id="bkmrk-%22perspective%22-camera"><div class="contents"><div class="contents"><div class="textblock">- **"Perspective" camera:** It offers an approximate representation of the image as it is seen by the eye. A default light is used when the scene doesn't contain any object of type light. Scene Editor provides a <span style="color: rgb(230, 126, 35);">[navigation panel ](#bkmrk-navigation-panel%C2%A0)</span>on the bottom right so the objects can be viewed from all sides.
- **"Orthogonal" cameras** with the subcategories Front, Rear, Top, Bottom, Left and Right: Orthogonal projection is a means of representing a three-dimensional object in two dimensions.
- **Scene cameras:** Further, each camera part of the scene is listed in the combo box. If a scene camera is selected, the scene is displayed from that camera's perspective. Scene cameras are created by dragging an item of type "Camera" from the Toolbox panel and dropping it into the Scene Tree or Scene Editor panel.

<dl class="note"><dt></dt><dd>The scene has to contain an object of type Light to ensure proper lighting in the scene.</dd></dl></div></div></div></div><div drawio-diagram="6176"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718355967.png" alt=""/></div>

<div class="contents" id="bkmrk-in-scene-camera-view"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">In scene camera view, the camera properties can only be edited in the "Properties" panel.</p>

Perspective Camera (Editor): <div drawio-diagram="4972"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702630678.png" alt=""/></div>

</dd></dl></div></div></div></div>Orthogonal Cameras:

<div class="contents" id="bkmrk--19"><div class="contents"><div class="textblock"><dl class="note"><dd><div drawio-diagram="4973"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702630713.png" alt=""/></div>

</dd></dl></div></div></div>Scene Camera View

<div drawio-diagram="4974"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702630814.png" alt=""/></div>

The Aspect Ratio and the Aspect Autofit properties are available for Camera 3D. If the Aspect Autofit property is set to true (when the checkbox available for Aspect Ratio property is checked), the aspect of the camera will be calculated based on the width and height of the render target. Otherwise, if the checkbox available for Aspect Ratio is left unchecked, the aspect of the camera will be calculated based on the resolution of the display.

<div class="contents" id="bkmrk-note%3A-both-propertie"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">Both properties are available under the name of the first property - Aspect Ratio.</p>

</dd></dl></div></div></div><div drawio-diagram="6177"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718356907.png" alt=""/></div>

<div class="contents" id="bkmrk--21"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--76"></a>Camera Panning and Zooming

The scene content displayed in the Scene Editor can be modified like this:

<div class="contents" id="bkmrk-panning%3A-move-the-mo"><div class="contents"><div class="textblock">- **Panning:** Move the mouse while holding the middle mouse button down
- **Zooming:** Rotate the mouse wheel forward for zooming in and backward for zooming out

</div></div></div>Enable panning and zooming also for scene cameras with a preference option:

<div class="contents" id="bkmrk-tick-%22enable-scene-c"><div class="contents"><div class="textblock">- Tick **"Enable scene camera manipulation"** in the "Editor Preferences" dialog opened from File-Preferences menu option.

</div></div></div>##### <a class="anchor" id="bkmrk--77"></a>Orient Camera to Selected Object

Sometimes it is quite difficult to locate in a 3D scene a new added object. This feature provides new control to active camera: orienting it to a selected object.

<div class="contents" id="bkmrk-this-feature-is-avai"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">This feature is available only for "Perspective" camera.</p>

</dd></dl></div></div></div></div>First select the object in the Scene Tree. After this the "Perspective" camera will be oriented towards the selected object, by pressing the "O" key. The position of the camera remains unchanged; the only thing that changes is its orientation. The reference of the orientation is the geometric center (or "centroid") of the selected object.

##### Rotate Perspective Camera around Selected Object

The object can be seen from different angles by rotating the Perspective Camera around a selected object. After the desired object is selected in the Scene Tree, the camera can rotate around it by holding down the Ctrl key and using Rotate camera.

<div class="contents" id="bkmrk-note%3A-on-the-perspec"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">On the Perspective Camera Scope menu, the "Selection" option should be chosen.</p>

</dd></dl></div></div></div><div drawio-diagram="6178"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357003.png" alt=""/></div>

<div class="contents" id="bkmrk--23"><div class="contents"><div class="textblock">  
</div></div></div>##### Camera Look-At Node

When this property is set the camera is automatically oriented towards the look-at-node. Up direction and look-at direction are not shown anymore in property grid. Look-at direction is discarded.

<div drawio-diagram="6179"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357420.png" alt=""/></div>

<div class="contents" id="bkmrk-camera-%22look-at-node"><div class="contents"><div class="textblock">  
</div></div></div><div class="contents" id="bkmrk--26"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--80"></a>Camera Preview Thumbnail

Even though the current selected camera is the Perspective camera, it is possible to see the content displayed by another camera in the thumbnail available in property grid. If the camera is not associated to a render target, the preview will be done on a fixed size virtual render target surface:

<div class="contents" id="bkmrk-100x100px-for-3d-cam"><div class="contents"><div class="textblock">- 100x100px for 3D cameras

</div></div></div>If the camera is associated to a render target, the preview will be generated:

<div class="contents" id="bkmrk-on-a-surface-of-the-"><div class="contents"><div class="contents"><div class="textblock">- on a surface of the same aspect ratio as the render target, and then reduced to a thumbnail image - for 3D cameras

</div></div></div></div><div drawio-diagram="6180"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357629.png" alt=""/></div>

<div class="contents" id="bkmrk--28"><div class="contents"><div class="textblock">  
</div></div></div>The camera preview thumbnail will be displayed in the property grid by selecting the camera whose perspective should be viewed in the Scene Tree.

<div class="contents" id="bkmrk-note%3A-the-%22alpha-ble"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">The "Alpha Blend Factor" and the "Alpha Destination Blend Factor" in the Default Render Mode Configuration should be set properly. For instance, the former value could be InverseSourceAlpha and the latter value could be DestColor.</p>

</dd></dl></div></div></div>##### <a class="anchor" id="bkmrk--82"></a>Reset Camera

Use the "Reset Camera" button left to the Camera combo box to reset the selected view to the default location and orientation.

<div drawio-diagram="6181"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357680.png" alt=""/></div>

<div class="contents" id="bkmrk-reset-camera-button"><div class="textblock">  
</div></div>####   
**Camera Sequence Editor** 

When many cameras are associated to the same Render Target, editing of the camera sequence can be done in two different ways. The first one is done by following these four steps:

<div class="contents" id="bkmrk-in-the-render-target"><div class="contents"><div class="contents"><div class="contents"><div class="textblock">- In the Render Targets panel select one camera associated to the respective render target;
- Press the F3 key on your keyboard; in this way, the (0) sequence number which is placed next to the name of the camera between round brackets will become editable;
- Choose and write the desired sequence number;
- Press the Enter key.

</div></div></div></div></div><div drawio-diagram="6183"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357783.png" alt=""/></div>

<div class="contents" id="bkmrk--32"><div class="contents"><div class="textblock">  
</div></div></div>The second way to edit the sequence of all cameras associated with the same Render Target is based on the usage of button "Go to Camera Sequence Editor view" which is placed in the Render Targets panel right to the Search field.

<div drawio-diagram="6184"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718357928.png" alt=""/></div>

<div class="contents" id="bkmrk--34"><div class="contents"><div class="textblock">  
</div></div></div>When this button is selected, a window with all the cameras from the entire solution is displayed. The filter button "Show only associated cameras" on the left allows to filter just those cameras which are associated to a render target. In the list displayed, every camera has an associated field where the sequence number can be edited.

Unfiltered list in Sequence Camera view:

<div drawio-diagram="6186"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358343.png" alt=""/></div>

Filtered list in Sequence Camera view:

<div drawio-diagram="6187"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358402.png" alt=""/></div>

<div class="contents" id="bkmrk-when-a-previously-cr"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">When a previously created solution is converted, the user is asked if the sequence numbers have to be changed or not. If the user declines, the sequence numbers will not be updated. FTCCmd.exe does not provide this option. It will not change sequence numbers when converting the solution.</p>

</dd></dl></div></div><div drawio-diagram="817"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438123.png" alt=""/></div>

####   
**Context Resource Pool** 

A Context Resource Pool (CRP) is used to share resources among different Context Providers. It allows grouping of render targets and associated device objects (Shaders, Texture Images, Vertex Buffers, etc.) in a common pool.

The Context Resource Pool is accessible via Render Targets panel by using the specific button as can be seen in the image below.

<div drawio-diagram="6188"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358633.png" alt=""/></div>

<div class="contents" id="bkmrk--40"><div class="contents"><div class="textblock">  
</div></div></div>Each platform has some rules and restrictions related to CRPs, for example on some platform multiple displays can share the same CRP, while on some other platform a CRP is required for each Window Surface. SceneComposer displays the relationship between CRPs, Displays, Window Surfaces and Frame Buffer Objects in the Render Target Explorer panel (main view and an additional CRP view).

Depending on the platform, the texture render targets (frame buffer objects) may have an Owner property of type render target reference or CRP. The Owner property is available in the Properties panel (see the image below).

<div drawio-diagram="6189"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358756.png" alt=""/></div>

<div class="contents" id="bkmrk--42"><div class="contents"><div class="textblock">  
</div></div></div>If the type of the Owner property is render target reference, the owner must be a display render target (window surface).

If the type of the owner property is CRP (integer value in SceneComposer), the possible values will be obtained from the available displays.

If the Owner property is available for a render target but it is not set by the user, the render target will be considered orphan.

#### **Camera Group** 

Camera group feature offers extended support for display visualization. They can be added in a camera group to allow the user to enable or disable any of them (solution with many cameras).

How to create a "CameraGroup":

<div class="contents" id="bkmrk-via-%22add%22-%3E-%22new-ite"><div class="contents"><div class="contents"><div class="textblock">- Via "Add" &gt; "New item" option by using the Scene Explorer context menu. Creates a Camera group in a folder specified by the user during this process.

</div></div></div></div><div drawio-diagram="6190"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358885.png" alt=""/></div>

<div class="contents" id="bkmrk-via-context-menu-ins"><div class="contents"><div class="contents"><div class="textblock">- Via context menu inside the Render Targets - Camera Group Explorer view. The Camera Group panel is accessible by using the "Camera Group Explorer view" button (next to "Camera Sequence Editor view"). The context menu can be opened by a right-click anywhere inside this panel, it provides the "New Camera Group" option.

</div></div></div></div><div drawio-diagram="6191"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718358964.png" alt=""/></div>

<div class="contents" id="bkmrk-via-context-menu-fro"><div class="contents"><div class="textblock">- Via context menu from the Scene Tree.

</div></div></div>After creating a CameraGroup, it will be visible in the "Camera Group Explorer View". A camera group is a flat list of camera groups identified by a unique name.

Any camera from any scene can be dragged from the Scene Tree inside the group.

<div drawio-diagram="6192"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718359152.png" alt=""/></div>

<div class="contents" id="bkmrk--46"><div class="contents"><div class="textblock">  
</div></div></div><div class="contents" id="bkmrk--47"><div class="contents">  
</div></div>Another way to add a camera to the group is by using the context menu: right click on a camera and select the "Add Camera To Camera Group" option.

<div drawio-diagram="6193"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718359214.png" alt=""/></div>

<div class="contents" id="bkmrk--49"><div class="contents"><div class="textblock">  
</div></div></div>Any camera inside the group can be locked or unlocked, enabled or disabled. Initially, all newly added cameras are ordered alphabetically. It is possible to change this order manually by dragging the cameras in the desired position.

<div class="contents" id="bkmrk-a-camera-can-belong-"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">A camera can belong to multiple groups, but its state is unique, meaning that enabling the camera in one group will enable it in all groups and also in the Render Target panel where it is associated to a render target. If a group is disabled or enabled, all the cameras inside it will be disabled or enabled. If one or many from those cameras are members of another group, the second group will be enabled or disabled too.</p>

</dd><dd><div drawio-diagram="6194"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718359362.png" alt=""/></div>

</dd></dl></div></div></div>When a camera is a added into a Camera Group it will become a member of an array where all the other cameras are included. If one of those cameras added into a Camera Group is removed, the "Delete Items" panel will become available and the user will have the possibility to use the "Remove Array Item" resolution. In this way, the selected camera will be removed from the array of cameras contained by the Camera Group.

####   
**Camera Gizmos** 

For a camera object the following properties can also be edited by using gizmos, not only from the Properties panel:

##### <a class="anchor" id="bkmrk--100"></a>LookAtVector

Editing is done by click-and-drag the front of the camera as it can be seen in the image bellow and the current look at vector will be rotated by a free rotation alt-azimuthally model, using both X and Y mouse movement.

<div drawio-diagram="826"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438366.png" alt=""/></div>

<div class="contents" id="bkmrk--51"><div class="contents"><div class="textblock">  
</div></div></div>##### Up Direction

Editing is done by click-and-drag the ring around the camera body (which is highlighted with yellow when selected). The current up-vector will be rotated around the world looking-at direction, obtaining a "rolling" effect considering the Y mouse movement.

<div drawio-diagram="4995"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702642363.png" alt=""/></div>

<div class="contents" id="bkmrk--53"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--104"></a>Projection

For Perspective view a wireframe frustum is provided, constructed to suggest fov,znear and zfar; for Orthographic view a wireframe rectangular prism is provided, constructed to suggest width, height, znear, zfar; for Generic projection no impersonator is provided.

<div drawio-diagram="6195"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718359725.png" alt=""/></div>

<div class="contents" id="bkmrk--55"><div class="textblock">  
</div></div>#### **Light Gizmos** 

For a light object the following properties can also be edited by using gizmos, not only from the Properties panel:

##### <a class="anchor" id="bkmrk--107"></a>Direction

Editing is done by click-and-drag on the direction arrow. The direction vector will be rotated by a free rotation alt-azimuthally model, using both X and Y mouse movement.

<div drawio-diagram="4996"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702643399.png" alt=""/></div>

<div class="contents" id="bkmrk--57"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--109"></a>Range

For light of type Point the range is suggested by a set of n concentric circles laid at an exponential step (1, 2, 4, 8, etc.). For light of type Spot the range is suggested by the length of the wireframe cone. Editing (spot and point) is done by click-and-drag on the centered light source object (yellow sphere) and the range value will be modified using a combination of X and Y movement.

<div drawio-diagram="831"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438510.png" alt=""/></div>

<div class="textblock" id="bkmrk--59"></div><div class="textblock" id="bkmrk--60"></div><div class="textblock" id="bkmrk--61"><div drawio-diagram="832"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438550.png" alt=""/></div>

</div><div class="contents" id="bkmrk--63"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--112"></a>Spot Exponent

Editing is done by click-and-drag on the top part of the spot cone (as it can be seen in the image bellow), and the spot exponent is modified using Y movements (up movement increases the value of property spot exponent and down movement decreases it).

<div drawio-diagram="833"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438566.png" alt=""/></div>

<div class="contents" id="bkmrk--65"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--114"></a>Spot Angle

A wireframe cone is provided and the editing is done by click-and-drag on the cone, the spot exponent value is modified using a combination of Y movements.

<div drawio-diagram="834"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438575.png" alt=""/></div>

<div class="contents" id="bkmrk--67"><div class="textblock">  
</div></div>#### **Picking and Transforming Items** 

<div drawio-diagram="6196"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718360051.png" alt=""/></div>

<div class="contents" id="bkmrk--69"><div class="contents"><div class="textblock">  
</div></div></div>In the Scene Editor, an item can be picked by clicking on it. After picking, the bounding box of the item is displayed together with the XY axes, and it is selected in the "Scene Tree" panel:

<div drawio-diagram="836"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438691.png" alt=""/></div>

<div class="contents" id="bkmrk-groups-cannot-be-pic"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">**Groups** cannot be picked in the render view; they need to be selected in the "Scene Tree" panel. The "Scene Editor" and "Scene Tree" panels are synchronized in terms of the selected item.</p>

</dd><dd></dd></dl>---

</div></div></div>#### <a class="anchor" id="bkmrk--119"></a>Interaction Modes: Selection, Edit the margin of objects inside a layout, Translate, Rotate, Scale

These interaction modes are available for 3D scenes in the Toolbar:

##### <a class="anchor" id="bkmrk--120"></a>Select

When the button "Select" is enabled, the selected object will be highlighted in the Scene Editor but can't be transformed.

##### <a class="anchor" id="bkmrk--121"></a>Edit the margin of objects inside a layout

For more information about this, please refer to <span style="color: rgb(230, 126, 35);">[Adorners](https://doc316en.candera.eu/books/scene-design/page/adorners)</span>.

##### <a class="anchor" id="bkmrk--122"></a>Translate

In this mode, a translation gizmo is represented by an axis coordinate system, having three arrows handles pointing in the directions of the corresponding axis (x, y, or z). For combined operations (translate xy, xz, ..), more rectangle handles positioned on the center and aligned to the corresponding axis combination are provided. Editing is done by click-and-drag a specific arrow handle or a specific rectangle handle.

<div drawio-diagram="837"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438731.png" alt=""/></div>

<div class="contents" id="bkmrk--89"><div class="contents"><div class="textblock">  
</div></div></div>For translation mode three options are available:

<div class="contents" id="bkmrk-%22only-object%22-will-m"><div class="contents"><div class="contents"><div class="textblock">- **"Only object"** will move only the object selected and
- **"Object and Children"** will move the selected object with its children.

</div></div></div></div><div drawio-diagram="6197"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718360181.png" alt=""/></div>

<div class="contents" id="bkmrk--96"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--125"></a>Rotate

In this mode, a rotation gizmo is represented by a set of circles, each corresponding to a plane (xy, xz, yz). Editing is done by click-and-drag a specific circle.

<div drawio-diagram="839"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438777.png" alt=""/></div>

<div class="contents" id="bkmrk--102"><div class="contents"><div class="textblock">  
</div></div></div>Usually the object is freely rotated except the situations when the rotation angle is close to a fixed angle controlled by a tolerance. The tolerance defines the range between two multiple values where the object can freely rotate without being snapped.

<div class="contents" id="bkmrk-the-fixed-angle-valu"><div class="contents"><div class="textblock">- the fixed angle values shall be multiples of 45
- the angle snapping tolerance shall be 22.5 degrees.

</div></div></div>Edit the object with a fixed angle by enabling this option using the button placed near active rendering button.

<div drawio-diagram="840"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438787.png" alt=""/></div>

<div class="contents" id="bkmrk--116"><div class="contents"><div class="textblock">  
</div></div></div>In Translate mode, another feature is the "Translation System" that allows choosing between Parent and View reference system. When Parent system is selected, the reference system is the coordinate system of the scene. Otherwise, the reference system is the coordinate system of the selected object. In both cases, the object can be moved by using the arrow keys.

<div drawio-diagram="6198"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718360233.png" alt=""/></div>

<div class="contents" id="bkmrk--130"><div class="contents"><div class="textblock">  
</div></div></div>##### <a class="anchor" id="bkmrk--131"></a>Scale

In this mode, a scale gizmo is represented in a similar way as the translation gizmo. For the combined operations (xy, xz, yz), rectangle handles are provided. For the combined (xyz) mode, a sphere handle is provided (located in the center of the gizmo). Editing is done by click-and-drag a specific arrow, a specific rectangle or the sphere.

<div drawio-diagram="842"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438818.png" alt=""/></div>

<div class="contents" id="bkmrk--134"><div class="contents"><div class="textblock">  
</div></div></div>Move the mouse while pressing left mouse button to translate, rotate, or scale the selected object in the render view. The modification of the properties is also reflected in the "Properties" panel for the selected item.

<div class="contents" id="bkmrk--135"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--136"></a>Editing Aids

Move from a selected element to another one by using the Tab key. First in the Scene Editor an element would be selected by Left click on it. After this all the elements placed at the same level (in the same group) can be selected by using the Tab key.

<div class="contents" id="bkmrk-in-complex-3d-scenes"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">In complex 3D scenes is not possible to select some objects just by Left clicking on them. For instance, in a tunnel scene, if the user is trying to select the car by Left clicking on it, just the "hardware" element will be selected - which is in the front of any other elements. To select the car, right click on it and select any element placed in the ray of the "car" group.</p>

</dd></dl></div></div></div><div drawio-diagram="843"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438836.png" alt=""/></div>

<div class="contents" id="bkmrk--139"><div class="contents"><div class="textblock">  
</div></div></div>After the selection is done, it is possible to tab all the selected elements situated at the same level. By using the Shift key + Tab all the elements can be selected in an ascendant order.

Another possibility is to tab selected elements on the same (visual) ray. This option can be done by holding down the Left key and then use the Tab key. To get the ascendant direction the same combination is available: Shift key + Tab (when the Left mouse button is holding down).

##### <a class="anchor" id="bkmrk--140"></a>Move Elements with Arrows Keys

Any element can be moved/scaled/rotated by using arrows. After the selection of the object use the Left, Right, Up and Down arrows to get the desired results.

##### <a class="anchor" id="bkmrk--141"></a>Unselect an Item

The camera cannot be manipulated and vice versa when an item is selected.

Unselect an item by hitting the **Esc** key.

Please refer to section <span style="color: rgb(230, 126, 35);">[3D Editing Helpers](https://doc316en.candera.eu/books/preferences/page/3d-editing-helpers)</span> for further information.

#### **Navigation Panel** 

SceneComposer provides a navigation panel which allows the user to manipulate the predefined perspective and orthogonal cameras using gizmos.

<div drawio-diagram="844"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676438982.png" alt=""/></div>

<div class="contents" id="bkmrk--144"><div class="contents"><div class="textblock">  
</div></div></div><div drawio-diagram="4998"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1702647378.png" alt=""/></div>

<div class="contents" id="bkmrk-%C2%A0-rotates-the-camera"><div class="textblock"><table border="0" style="width: 73.9506%; height: 118px;"><tbody><tr style="height: 35.0667px;" valign="middle"><td style="width: 8.20013%; height: 35.0667px;">**<span style="color: rgb(0, 0, 0);">[1](https://doc316en.candera.eu/uploads/images/gallery/2023-02/04-3d-navigation-2.PNG)</span>**

</td><td style="width: 91.7469%; height: 35.0667px;"> Rotates the camera around the geometrical center of the scene

</td></tr><tr style="height: 37.8667px;" valign="middle"><td style="width: 8.20013%; height: 37.8667px;">**<span style="color: rgb(0, 0, 0);">[2](https://doc316en.candera.eu/uploads/images/gallery/2023-02/04-3d-navigation-3.PNG)</span>**

</td><td style="width: 91.7469%; height: 37.8667px;"> Rotates the camera and does not affect the camera position</td></tr><tr style="height: 35.0667px;" valign="middle"><td style="width: 8.20013%; height: 35.0667px;">**<span style="color: rgb(0, 0, 0);">[3](https://doc316en.candera.eu/uploads/images/gallery/2023-02/04-3d-navigation-4.PNG)</span>**

</td><td style="width: 91.7469%; height: 35.0667px;"> Translates the objects on XYZ axes</td></tr><tr style="height: 10px;" valign="middle"><td style="width: 8.20013%; height: 10px;">**<span style="color: rgb(0, 0, 0);">[4](https://doc316en.candera.eu/uploads/images/gallery/2023-02/04-3d-navigation-5.PNG)</span>**

</td><td style="width: 91.7469%; height: 10px;"> Makes zoom out, zoom in</td></tr></tbody></table>

</div></div>

# Vertex Buffer Editor

Imported Geometry can be managed and configured in either ArrayBuffer or IndexBuffer format, depending on its Geometry Topology. ArrayBuffer offers higher rendering performance (cache efficiency and sequential read) but consumes more memory since vertices cannot be shared.

To configure these two types of Vertex Buffer elements, select the vertex buffer in the Solution Explorer, and then configure the VertexGeometry (vertex attribute statuses) within the \[Vertex Buffer\] category in the \[Properties\] panel.

<div drawio-diagram="8474"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-07/drawing-4-1751508970.png" alt=""/></div>

Within the Vertex Buffer, each Property Item has a status of Imported (available), Removed (deleted), Regenerated/Generated (added), or Missing (not set). All selected Float32-type vertex attributes within the vertex buffer can be converted to Float16 if necessary, with convertible patterns indicated in parentheses.

When \[Is Indexed\] is enabled, the vertex buffer can be converted to an index array buffer by selecting the optimal index size. Depending on the vertex count, 8-bit, 16-bit, or 32-bit index buffers will be generated, and a valid buffer type can be specified via the BufferType property in the AssetData section.

When importing a glTF file that contains positions, UVs, and normals but lacks tangents, tangents will be automatically generated using the MikkTSpace algorithm. With MikkTSpace support in the Vertex Buffer Editor, the “Generated MikkTSpace” and “Regenerated MikkTSpace” options can now be selected for the Tangent and BiNormal Property Items, improving rendering quality when applying normal maps and ensuring consistency across tools.

The editable items are listed in the table below.

<table border="1" id="bkmrk-normal-%E5%B1%9E%E6%80%A7%E3%81%82%E3%82%8A-missing%2C" style="border-collapse: collapse; width: 800px; border-width: 1px;"><colgroup><col style="width: 161px;"></col><col style="width: 638px;"></col></colgroup><tbody><tr><td><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Normal</span></span>  
<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">  
</span></span></td><td>- When attribute is not included:  
    Missing, Generated (Float16), Generated (Float32)
- When attribute is included:  
    Imported (Float32), Imported (Float32 =&gt; Float16), Regenerated (Float16), Regenerated (Float32), Removed

</td></tr><tr><td><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">BiNormal/<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Tangent</span></span></span></span>  
<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">  
</span></span></td><td>- When attribute is not included:  
    Missing, Generated MikkTSpace (Float16), Generated MikkTSpace (Float32), Generated (Float16), Generated (Float32)
- When attribute is included:  
    Imported (Float32), Imported (Float32 =&gt; Float16), Regenerated MikkTSpace (Float16), Regenerated MikkTSpace (Float32), Regenerated (Float16), Regenerated (Float32), Removed

</td></tr></tbody></table>

The selectable items in the \[Properties\] panel vary depending on whether the imported file contains the respective vertex attributes.

<div class="contents" id="bkmrk-if-the-attribute-is-"><div class="contents"><div class="textblock">- If the respective vertex attribute is not included in the imported file (Missing status), \[Generated\] can be selected.
- If the respective vertex attribute is included in the imported file (Imported status), \[Regenerated\] and \[Removed\] can be selected.

</div></div></div>If the import data and the property settings do not match, an error message will appear in the <span style="color: rgb(230, 126, 35);">[Output Panel](https://doc316en.candera.eu/books/solution-handling/page/output)</span>. As with other properties, the settings can be reset using the arrow button on the left of each property (Please refer to the figure below). When settings are changed, values such as Vertex Stride, Vertex Count, and Vertex Format are updated and reflected within the \[Vertex Buffer\] category in the Properties panel.

<div drawio-diagram="8476"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-07/drawing-4-1751510001.png" alt=""/></div>

# Shader Configuration

<p class="callout info">The Solution option allows for <span style="color: rgb(230, 126, 35);">[Default Shader Configurations](https://doc316en.candera.eu/books/solution-handling/page/default-shader-config)</span>.</p>

#### **Add a New Vertex or Fragment Shader**

Shaders are software programs that include instructions on how the graphics processing unit (GPU) should render certain images on the screen. A shader program consists of two types of shaders:

<div class="contents" id="bkmrk-vertex-shaders-fragm"><div class="contents"><div class="textblock">- Vertex Shaders
- Fragment (or Pixel) Shaders

</div></div></div>There are following options to create a new (empty) shader, which can later be combined into appropriate shader pairs or programs.

Use the "Shader" &gt; "New shader" menu option

<div drawio-diagram="5002"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1703232468.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>In the Shaders panel, use the context menu option "New Shader" of any node within the "Shaders" category:

<div drawio-diagram="6202"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718362020.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>In the "Add New Shader" dialog, specify the shader location, shader name, and shader type.

<div drawio-diagram="6203"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718362044.png" alt=""/></div>

<div class="contents" id="bkmrk--7"><div class="contents"><div class="textblock">  
</div></div></div>After creating the shaders, the shader instructions need to be added in the Shader Editor.

#### <a class="anchor" id="bkmrk--43"></a>Import Vertex and Fragment Shaders

It is also possible to import already existing shaders.  
For information about how to import a Vertex or Fragment shader please refer to section<span style="color: rgb(230, 126, 35);"> [How to Import Resources](https://doc316en.candera.eu/books/import-of-resources/page/how-to-import-resources "Import Shaders").</span>

#### **Add a New Shader Program** 

Fragment and vertex shaders are combined into shader pairs or programs which can then be applied to node appearances.

Create a new shader program:

Use the "Shader" &gt; "New Shader Program" menu option.

<div drawio-diagram="5004"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-12/drawing-5-1703232678.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents"><div class="textblock">  
</div></div></div>Use the context menu option "New Shader Program" of any node within the shader program category from the Shaders panel.

<div drawio-diagram="6204"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718362139.png" alt=""/></div>

<div class="contents" id="bkmrk--13"><div class="contents"><div class="textblock">  
</div></div></div>Specify location and name and the desired shader pair consisting of one fragment shader and one vertex shader in the dialog "Add New Shader Program".

<div drawio-diagram="6205"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718362176.png" alt=""/></div>

<div class="contents" id="bkmrk--16"><div class="contents"><div class="textblock">  
</div></div></div>Tick the "Export Always" checkbox to always include the shader program to the generated assets.

####   
**Shader Editor** 

Edit shaders in the "Shader Editor". Use the menu option "View" &gt; "Editors" &gt; "Shader Editor" to make the panel visible.

<div class="contents" id="bkmrk--17"><div class="contents"><div class="textblock"><div drawio-diagram="6206"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718362236.png" alt=""/></div>

</div></div></div>Open shaders in Shader Editor for editing:

<div class="contents" id="bkmrk-select-a-vertex-or-f"><div class="contents"><div class="textblock">- Select a vertex or fragment shader in the Shaders panel
- Select a shader program in the Shaders panel

</div></div></div>The selected shader(s) are displayed in the Shader Editor panel (in both cases) like this:

<div class="contents" id="bkmrk-the-vertex-shader-in"><div class="contents"><div class="textblock">- The vertex shader in the left side and
- The fragment shader in the right side.

</div></div></div>Shader requirements - including the number of lights, materials and textures - are displayed in a tab in the Property Grid when a shader program is selected. The tab also contains the available attributes and uniforms.

<p class="callout info">On OpenGL ES 3.0 targets, up to **16** texture units are supported (CANDERA\_MAX\_TEXTURE\_UNIT\_COUNT = 16). On OpenGL ES 2.0, **8** texture units are guaranteed unless ES extensions are enabled.</p>

<div class="contents" id="bkmrk--20"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--48"></a>Shader Editor Features

The context menu of the Shader Editor provides "Cut", "Copy", "Paste", "Delete", "Select All" functions for editing shader instructions:

<div class="contents" id="bkmrk--21"><div class="contents"><div class="textblock"><div drawio-diagram="3289"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682582147.png" alt=""/></div>

</div></div></div>On pressing \[Ctrl+ Space bar\], a list with helper functions is available for shader programming:

<div class="contents" id="bkmrk--23"><div class="contents"><div class="textblock"><div drawio-diagram="3290"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682582170.png" alt=""/></div>

</div></div></div>Compile the edited shader using the platform's shader compiler

<div class="contents" id="bkmrk-by-using-menu-item-%22"><div class="contents"><div class="textblock">- By using menu item "Shader" &gt; "Compile Shader" or
- by pressing F7 key.

</div></div></div>The compilation result is reported in the "Shader Compiler Errors" panel. This can be opened via menu item "View" &gt; "Shader Compiler Errors".

For further information please refer to section <span style="color: rgb(230, 126, 35);">[Compile Shaders](#bkmrk-compile-shaders%C2%A0 "Compile Shaders")</span>.

#### **Compile Shaders**   


<div class="contents" id="bkmrk-shader-compilation-i"><div class="contents"><div class="textblock">Shader compilation is triggered in the following situations:  
</div></div></div><div class="contents" id="bkmrk-during-shader-editin"><div class="contents"><div class="textblock">1. During shader editing, if requested via menu item "Shader" &gt; "Compile Shader" or by pressing F7 key, the selected shader or shader program will be compiled using the platform's shader compiler.
2. During scene editing, when the scene dependencies are generated, the shaders will be compiled using an internal shader compiler (so called "builtin://DefaultShaderCompiler").
3. During asset generation, depending on the selected shader compiler type, the shaders will be compiled using platform's shader compiler (Target) or internal shader compiler (Simulation).

</div></div></div>The compilation result can be seen in the "Problems Browser" panel. For further information please refer to section <span style="color: rgb(230, 126, 35);">[Problems Browser](https://doc316en.candera.eu/books/solution-handling/page/problems-browser "Problems Browser")</span>.

<div drawio-diagram="6207"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718363441.png" alt=""/></div>

<div class="contents" id="bkmrk--27"><div class="contents"><div class="textblock">  
</div></div></div>After successful shader compilation, a regarding message is displayed.

#### **Shader Parameters** 

SceneComposer offers the necessary support to define shader parameters for uniform and attribute values. For every shader, [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") supplies a list of uniforms and their corresponding types. Uniforms are set via UniformSetters.

<div class="contents" id="bkmrk-a-new-category-named"><div class="contents"><div class="contents"><div class="textblock">- A new category named "Shader Parameters" is loaded for every node, after choosing a Shader Program from Properties panel.
- The available uniforms are displayed and desired values can be set for them after choosing a proper Uniform Setter from the "Uniform Setter" property list.

</div></div></div></div><div class="contents" id="bkmrk--28"><div class="contents"><div class="textblock"><div drawio-diagram="6209"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718363567.png" alt=""/></div>

</div></div></div>When a shader is edited in the Shader Editor panel and new uniforms are created, those uniforms will only be listed in the Shader Parameters section of the node properties after successful shader compilation.

If the shader program is faulty (e.g. compile error), the previously retrieved uniforms are presented in read-only mode.

#### **Instanceable Shaders** 

Instanceable shaders are integrated into SceneComposer. They have "Inst" in their names and are special shaders used for instanced draw.

When using an instance-able shader, uniforms that are declared as arrays in the shader, will not be exposed as an array in the SceneComposer view. Instead it has to be exposed as a single value.

When an instanceable shader is selected, the property grid will display the Max Instance Count value (represents the maximum number of element that the shader can render in a batch render).

Instanceable shader validations. In an instanceable shader, the following shall hold true:

<div class="contents" id="bkmrk-all-uniforms-%28except"><div class="contents"><div class="textblock">- All uniforms (except certain auto-uniforms) are defined as arrays - an error will be emitted otherwise
- The sizes of the array uniforms must be the same - an error will be emitted otherwise

</div></div></div>List of auto-uniforms that must not be declared as arrays in instanceable shaders:

<div class="contents" id="bkmrk-%22u_pmatrix%22%2C-%2F%2F-proj"><div class="textblock">- "u\_PMatrix", // ProjectionMatrix4
- "u\_VPMatrix", // ViewProjectionMatrix4
- "u\_CamPosition", // CameraPosition
- "u\_CamDirection", // CameraLookAtVector

- "u\_Texture", // Texture
- "u\_Texture1", // Texture1
- "u\_Texture2", // Texture2
- "u\_Texture3", // Texture3
- "u\_Texture4", // Texture4
- "u\_Texture5", // Texture5
- "u\_Texture6", // Texture6
- "u\_Texture7", // Texture7
- "u\_Texture8", // Texture8
- "u\_Texture9", // Texture9
- "u\_Texture10", // Texture10
- "u\_Texture11", // Texture11
- "u\_Texture12", // Texture12
- "u\_Texture13", // Texture13
- "u\_Texture14", // Texture14
- "u\_Texture15", // Texture15

- "u\_CubeMapTexture", // CubeMapTexture
- "u\_CubeMapTexture1", // CubeMapTexture1
- "u\_CubeMapTexture2", // CubeMapTexture2
- "u\_CubeMapTexture3", // CubeMapTexture3
- "u\_CubeMapTexture4", // CubeMapTexture4
- "u\_CubeMapTexture5", // CubeMapTexture5
- "u\_CubeMapTexture6", // CubeMapTexture6
- "u\_CubeMapTexture7", // CubeMapTexture7
- "u\_CubeMapTexture8", // CubeMapTexture8
- "u\_CubeMapTexture9", // CubeMapTexture9
- "u\_CubeMapTexture10", // CubeMapTexture10
- "u\_CubeMapTexture11", // CubeMapTexture11
- "u\_CubeMapTexture12", // CubeMapTexture12
- "u\_CubeMapTexture13", // CubeMapTexture13
- "u\_CubeMapTexture14", // CubeMapTexture14
- "u\_CubeMapTexture15", // CubeMapTexture15

- "u\_Light\[0\].type", // LightType
- "u\_Light\[1\].type", // LightType1
- "u\_Light\[2\].type", // LightType2
- "u\_Light\[3\].type", // LightType3
- "u\_Light\[4\].type", // LightType4
- "u\_Light\[5\].type", // LightType5
- "u\_Light\[6\].type", // LightType6
- "u\_Light\[7\].type", // LightType7

- "u\_Light\[0\].ambient", // LightAmbient
- "u\_Light\[1\].ambient", // LightAmbient1
- "u\_Light\[2\].ambient", // LightAmbient2
- "u\_Light\[3\].ambient", // LightAmbient3
- "u\_Light\[4\].ambient", // LightAmbient4
- "u\_Light\[5\].ambient", // LightAmbient5
- "u\_Light\[6\].ambient", // LightAmbient6
- "u\_Light\[7\].ambient", // LightAmbient7

- "u\_Light\[0\].diffuse", // LightDiffuse
- "u\_Light\[1\].diffuse", // LightDiffuse1
- "u\_Light\[2\].diffuse", // LightDiffuse2
- "u\_Light\[3\].diffuse", // LightDiffuse3
- "u\_Light\[4\].diffuse", // LightDiffuse4
- "u\_Light\[5\].diffuse", // LightDiffuse5
- "u\_Light\[6\].diffuse", // LightDiffuse6
- "u\_Light\[7\].diffuse", // LightDiffuse7

</div></div>- "u\_Light\[0\].intensity", // intensity
- "u\_Light\[1\].intensity", // intensity
- "u\_Light\[2\].intensity", // intensity
- "u\_Light\[3\].intensity", // intensity
- "u\_Light\[4\].intensity", // intensity
- "u\_Light\[5\].intensity", // intensity
- "u\_Light\[6\].intensity", // intensity
- "u\_Light\[7\].intensity", // intensity

<div class="contents" id="bkmrk-%22u_light%5B0%5D.specular"><div class="textblock">- "u\_Light\[0\].specular", // LightSpecular
- "u\_Light\[1\].specular", // LightSpecular1
- "u\_Light\[2\].specular", // LightSpecular2
- "u\_Light\[3\].specular", // LightSpecular3
- "u\_Light\[4\].specular", // LightSpecular4
- "u\_Light\[5\].specular", // LightSpecular5
- "u\_Light\[6\].specular", // LightSpecular6
- "u\_Light\[7\].specular", // LightSpecular7

- "u\_Light\[0\].position", // LightPosition
- "u\_Light\[1\].position", // LightPosition1
- "u\_Light\[2\].position", // LightPosition2
- "u\_Light\[3\].position", // LightPosition3
- "u\_Light\[4\].position", // LightPosition4
- "u\_Light\[5\].position", // LightPosition5
- "u\_Light\[6\].position", // LightPosition6
- "u\_Light\[7\].position", // LightPosition7

- "u\_Light\[0\].direction", // LightDirection
- "u\_Light\[1\].direction", // LightDirection1
- "u\_Light\[2\].direction", // LightDirection2
- "u\_Light\[3\].direction", // LightDirection3
- "u\_Light\[4\].direction", // LightDirection4
- "u\_Light\[5\].direction", // LightDirection5
- "u\_Light\[6\].direction", // LightDirection6
- "u\_Light\[7\].direction", // LightDirection7

- "u\_Light\[0\].halfplane", // LightHalfplane
- "u\_Light\[1\].halfplane", // LightHalfplane1
- "u\_Light\[2\].halfplane", // LightHalfplane2
- "u\_Light\[3\].halfplane", // LightHalfplane3
- "u\_Light\[4\].halfplane", // LightHalfplane4
- "u\_Light\[5\].halfplane", // LightHalfplane5
- "u\_Light\[6\].halfplane", // LightHalfplane6
- "u\_Light\[7\].halfplane", // LightHalfplane7

- "u\_Light\[0\].attenuation", // LightAttenuation
- "u\_Light\[1\].attenuation", // LightAttenuation1
- "u\_Light\[2\].attenuation", // LightAttenuation2
- "u\_Light\[3\].attenuation", // LightAttenuation3
- "u\_Light\[4\].attenuation", // LightAttenuation4
- "u\_Light\[5\].attenuation", // LightAttenuation5
- "u\_Light\[6\].attenuation", // LightAttenuation6
- "u\_Light\[7\].attenuation", // LightAttenuation7

- "u\_Light\[0\].spotCosCutoff", // LightSpotCosCutoff
- "u\_Light\[1\].spotCosCutoff", // LightSpotCosCutoff1
- "u\_Light\[2\].spotCosCutoff", // LightSpotCosCutoff2
- "u\_Light\[3\].spotCosCutoff", // LightSpotCosCutoff3
- "u\_Light\[4\].spotCosCutoff", // LightSpotCosCutoff4
- "u\_Light\[5\].spotCosCutoff", // LightSpotCosCutoff5
- "u\_Light\[6\].spotCosCutoff", // LightSpotCosCutoff6
- "u\_Light\[7\].spotCosCutoff", // LightSpotCosCutoff7

- "u\_Light\[0\].spotExponent", // LightSpotExponent
- "u\_Light\[1\].spotExponent", // LightSpotExponent1
- "u\_Light\[2\].spotExponent", // LightSpotExponent2
- "u\_Light\[3\].spotExponent", // LightSpotExponent3
- "u\_Light\[4\].spotExponent", // LightSpotExponent4
- "u\_Light\[5\].spotExponent", // LightSpotExponent5
- "u\_Light\[6\].spotExponent", // LightSpotExponent6
- "u\_Light\[7\].spotExponent", // LightSpotExponent7

- "u\_Light\[0\].range", // LightRange
- "u\_Light\[1\].range", // LightRange1
- "u\_Light\[2\].range", // LightRange2
- "u\_Light\[3\].range", // LightRange3
- "u\_Light\[4\].range", // LightRange4
- "u\_Light\[5\].range", // LightRange5
- "u\_Light\[6\].range", // LightRange6
- "u\_Light\[7\].range", // LightRange7

- "u\_Light\[0\].enabled", // LightEnabled
- "u\_Light\[1\].enabled", // LightEnabled1
- "u\_Light\[2\].enabled", // LightEnabled2
- "u\_Light\[3\].enabled", // LightEnabled3
- "u\_Light\[4\].enabled", // LightEnabled4
- "u\_Light\[5\].enabled", // LightEnabled5
- "u\_Light\[6\].enabled", // LightEnabled6
- "u\_Light\[7\].enabled", // LightEnabled7

- "u\_Light\[0\].cameraLookAtVector",// LightCameraLookAtVector
- "u\_Light\[1\].cameraLookAtVector",// LightCameraLookAtVector1
- "u\_Light\[2\].cameraLookAtVector",// LightCameraLookAtVector2
- "u\_Light\[3\].cameraLookAtVector",// LightCameraLookAtVector3
- "u\_Light\[4\].cameraLookAtVector",// LightCameraLookAtVector4
- "u\_Light\[5\].cameraLookAtVector",// LightCameraLookAtVector5
- "u\_Light\[6\].cameraLookAtVector",// LightCameraLookAtVector6
- "u\_Light\[7\].cameraLookAtVector",// LightCameraLookAtVector7

</div></div>#### **Shader Consistency Checker** 

Shader Consistency Checker refers to validations of the shader params (attributes and uniforms defined in shaders) based on some rules. Most shader param problems are reported for appearances of nodes after checking the vertex buffer of the mesh versus the shader program referenced by the appearance versus the uniform setter of the appearance.

<div class="contents" id="bkmrk-warning-diagnostic-p"><div class="textblock"><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse; width: 800px; border-width: 1px; border-spacing: 0px;" width="900"><tbody><tr bgcolor="#d4d4d4"><th style="border-width: 1px; padding: 5px;">**Warning**</th><th style="border-width: 1px; padding: 5px;">**Diagnostic**</th><th style="border-width: 1px; padding: 5px;">**Possible resolutions**</th></tr><tr><td style="border-width: 1px; padding: 5px;">*SemanticNotMappedToUniform, SemanticNotMappedToAttribute*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when a uniform or attribute semantic is not mapped to any parameter name in the shader.</td><td style="border-width: 1px; padding: 5px;">- change the attribute mapping

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*ShaderAttributeNotMappedToSemantic*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the shader contains an attribute which is not mapped to a semantic.</td><td style="border-width: 1px; padding: 5px;">- edit shader in case the attribute was spelt incorrectly
- change the attribute mapping

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeMissing*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when an attribute defined in the shader has no matching data in the vertex buffer.</td><td style="border-width: 1px; padding: 5px;">- generate the missing attribute (if possible)
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeTypeInvalid*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the type of the vertex data or the type of the attribute defined in the shader is invalid or there was an error retrieving them.</td><td style="border-width: 1px; padding: 5px;">- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeTypeExtraChannels*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the vertex data contains too many channels compared to the attribute defined in the shader. For example an attribute is defined in the shader as a vector of 2 floats and the vertex data has a vector of 3 floats.</td><td style="border-width: 1px; padding: 5px;">- regenerate the attribute from the vertex buffer (if possible)
- edit the shader
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeTypePotentialPrecisionLoss*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when there is a (potential) precision loss while loading the attribute data contained in the vertex buffer into the attributed defined in the shader. For example vertex data type is Float32 and the shade attribute type is Medium Float.</td><td style="border-width: 1px; padding: 5px;">- change the precision of the attribute from the vertex buffer (if possible)
- edit the shader
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeTypePrecisionWaste*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when there is a "precision waste" while loading the attribute data contained in the vertex buffer into the attribute defined in the shader. For example vertex data type is Int8 and the shader attribute type is High Int.</td><td style="border-width: 1px; padding: 5px;">- change the precision of the attribute from the vertex buffer (if possible)
- edit the shader
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*VBAttributeTypeConversionToInt, VBAttributeTypeConversionToFloat*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when there is a type conversion while loading the attribute data contained in the vertex buffer into the attribute defined in the shader. For example vertex data type is float and the shader attribute type is int.</td><td style="border-width: 1px; padding: 5px;">- edit the shader
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*SemanticNotSupportedByUniformSetterButUsedByShaderProgram*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the semantic of a uniform defined in the shader is not supported by the uniform setter. Currently all semantic are supported.</td><td style="border-width: 1px; padding: 5px;">  
</td></tr><tr><td style="border-width: 1px; padding: 5px;">*SemanticNotEnabledInUniformSetterButUsedByShaderProgram*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the semantic of a uniform defined in the shader is not enabled in the uniform setter.</td><td style="border-width: 1px; padding: 5px;">- enable the semantic in the uniform setter
- enable flag auto activation for the uniform setter
- select a different shader program or vertex buffer

</td></tr><tr><td style="border-width: 1px; padding: 5px;">*SemanticEnabledInUniformSetterButNotUsedByShaderProgram*</td><td style="border-width: 1px; padding: 5px;">This problem is reported when the semantic of a uniform not defined in the shader is enabled in the uniform setter.</td><td style="border-width: 1px; padding: 5px;">- disable enable the semantic in the uniform setter
- enable flag auto activation for the uniform setter
- select a different shader program or vertex buffer

</td></tr></tbody></table>

</div></div>#### **Generic ShaderParamSetter** 

Generate special effects by using a uniform setter associated to a given node in a 3D scene. This can be done by realizing a correspondence between the configuration proper to the UniformSetter and all the parameters of the available shaders.

To get the desired effect, first, the UniformSetter from the Toolbox should be dragged in the the Scene extra-Tree over the node's Appearance.

<div class="contents" id="bkmrk--30"><div class="contents"><div class="textblock"><div drawio-diagram="6210"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718363651.png" alt=""/></div>

</div></div></div>A relationship between the semantics of the UniformSetter and all the properties of the shader should be established. The semantics of the UniformSetter contain specific values that could be activated/deactivated in direct relationship with the shader. In In \[ <span style="color: rgb(230, 126, 35);">[Solution Option &gt;Default Shader Params](https://doc316en.candera.eu/books/solution-handling/page/default-shader-params)</span> \] from the menu bar allows to change the default names of all these values specific for the semantics of the UniformSetter.

<div class="contents" id="bkmrk--32"><div class="contents"><div class="textblock"><div drawio-diagram="6211"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718363712.png" alt=""/></div>

</div></div></div>For example, if under an appearance template we have a RefTransLight2SphereMap\_RefColorTex shader, as a first step it is necessary to open the Shader Editor panel and search all the uniforms required by this shader.

As a second step, configure the semantic of the UniformSetter in order to create a correspondence between the shader required uniforms and enabled Uniforms in the generic UniformSetter category in the Properties panel.

<div class="contents" id="bkmrk--34"><div class="contents"><div class="textblock"><div drawio-diagram="7591"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733480885.png" alt=""/></div>

</div></div></div>Find all the semantic uniform values of the RefTransLight1SphereMap\_RefColorTex shader in the Shader Editor.

<div class="contents" id="bkmrk-the-given-uniform-se"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The given uniform semantic of the UniformSetter in the Shaders Params Editor dialog have to be the same with Uniforms in the generic UniformSetter in the Properties panel.</p>

</dd></dl></div></div></div><div class="contents" id="bkmrk--37"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--56"></a>Enable Auto Activation Property

There is an option to avoid the detailed (i.e. manual) setting of the uniform setters by using the auto activation property. This is possible after the setting of the "Enable uniform setter auto activation" property in the Solution Option panel (section "General Configuration"). If this setting is used and the "Auto activation scope" property is set global, the "Enable auto activation" property will become active and all the activation flags will be determined when the asset is generated based on the auto uniforms which are defined in the shader program.

<div drawio-diagram="6213"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718364620.png" alt=""/></div>

<div class="contents" id="bkmrk--40"><div class="contents"><div class="textblock">  
</div></div></div>After this operation, a check box with the same name will become available in the Properties panel. This property specifies if the auto activation of the flags should be enabled based on the global values stored in the solution properties or locally in this item.

<div drawio-diagram="6214"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718368025.png" alt=""/></div>

---

#### <a class="anchor" id="bkmrk--59"></a>Multi-Pass Effect Configuration

Another way of getting complex effects is combining multiple appearances. The fact that there are multiple appearances attached on the same node implies that the node is rendered with each appearance at a time. All the appearances are rendered sequentially.

<div drawio-diagram="7592"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733481136.png" alt=""/></div>

For example, if two different appearances associated at the same node after the UniformSetters of the first appearance are set, the second appearance should be set. Every appearance can be configured by using its own properties panel. However, it is possible to see both appearances in the general Properties panel as different tags of it.

<div drawio-diagram="7593"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733481317.png" alt=""/></div>


<div class="contents" id="bkmrk--52"><div class="contents">  
</div></div>#### **Clone, Rename, Delete a Shader** 

Use the context menu of a shader program in the Shaders panel to trigger one of the following options:

<div class="contents" id="bkmrk-%22clone%22-will-make-a-"><div class="textblock">- **"Clone"** will make a copy of the shader program. The name of the copy will be the name of the item suffixed with a number.
- **"Delete"** will cause a "Delete solution item" dialog to appear. If the item is not used somewhere in the solution, it can be deleted by clicking "OK". If the item is used, the "Delete Solution Item" dialog will list the paths of the items where it is used, and the "OK" is disabled, making the deletion not possible.
- **"Rename"** will cause a "Rename Solution Item" dialog to appear. The new desired name can be typed in the text box.

</div></div>

# 2D Scene Design

# 2D Nodes

#### 2D Toolbox

The Toolbox for 2D scenes provides the following items:

<div drawio-diagram="5618"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-04/drawing-7-1713773118.png" alt=""/></div>

<div class="contents" id="bkmrk-a-%22show-controls-as-"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">A "Show Controls as Big Icons/List" button is available in the upper right corner. If this button is used, a different presentation mode - as icons instead of a text list of items - will be made available (see the image below).</p>

</dd></dl></div></div></div></div><div drawio-diagram="5619"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-04/drawing-7-1713773199.png" alt=""/></div>

<div class="contents" id="bkmrk--1"><div class="contents"><div class="contents"><div class="textblock">  
</div></div></div></div>#### <a class="anchor" id="bkmrk--33"></a>Create 2D Nodes

Following items can be used to create a new node in the scene graph:

<div drawio-diagram="6231"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718374267.png" alt=""/></div>

<div class="contents" id="bkmrk-2d-camera%3A-to-be-lin"><div class="contents"><div class="textblock"><table border="0" cellspacing="10" style="width: 100%;"><tbody><tr valign="bottom"><td style="width: 4.94132%;">1

</td><td style="width: 95.0175%;">**2D Camera:** To be linked to a render target, where the render result of the camera will be drawn.   
[Candera::Camera2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera2_d.html "A camera defines the view to the scene. At least one Camera2D has to be added to a 2D scene graph and...")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">2

</td><td style="width: 95.0175%;">**2D Group:** Parent item for other nodes. Child nodes are located relative to the parent group.   
[Candera::Group2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_group2_d.html "The class Group2D is a scene graph node that stores a set of nodes as its children. The parent-child relationship between groups and nodes is bidirectional. Whereas a group can hold a group of nodes, a node can at most have one parent at a time. Cycles are prohibited. Changing the groups transformation or alpha value affects the children nodes of the group.")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">3

</td><td style="width: 95.0175%;">**Base Line Layout:** Provides a stacked layout in the horizontal direction.   
[Candera::BaseLineLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_base_line_layouter.html "A BaseLineLayouter behaves similar to a Horizontal StackLayouter but instead of aligning the objects ...")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">4

</td><td style="width: 95.0175%;">**Dock Layout:** Provides an area divided into five screens (Top, Bottom, Center, Left, Right). Nodes can be placed in the screens surrounding the Center screen.   
[Candera::DockPanelLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_dock_panel_layouter.html "The Dock Panel Layouter provides an easy docking of elements to the left, right, top, bottom or center of the panel. The dock side of an element is defined by the attached dynamic DockSide property. To dock an element to the center of the panel, it must be the last child of the panel.")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">5

</td><td style="width: 95.0175%;">**Grid Layout:** Each node within the group will be positioned within a grid.   
[Candera::DockPanelLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_dock_panel_layouter.html "The Dock Panel Layouter provides an easy docking of elements to the left, right, top, bottom or center of the panel. The dock side of an element is defined by the attached dynamic DockSide property. To dock an element to the center of the panel, it must be the last child of the panel.")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">6

</td><td style="width: 95.0175%;">**Overlay Layout:** Allow you to place nodes on top of each other to create a layered effect.   
[Candera::OverlayLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_overlay_layouter.html "OverlayLayouter sets sizes of all child elements to fulfill the given area.")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">7

</td><td style="width: 95.0175%;">**Stack Layout:** Stacks nodes in the horizontal or vertical direction.   
[Candera::StackLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_stack_layouter.html "A StackLayouter stacks its elements either in horizontal or vertical order.")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">8

</td><td style="width: 95.0175%;">**RenderNode:** Can be associated with any type of effect.   
[Candera::RenderNode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_render_node.html "RenderNode is a 2D node that links to an effect chain. Therefore this is the only type of 2D node whi...")</td></tr><tr valign="bottom"><td style="width: 4.94132%;">9

</td><td style="width: 95.0175%;">**BitmapNode:** By default associated with a BitmapBrushAlphaBlend effect.   
Candera::BitmapBrushAlphaBlend</td></tr><tr valign="bottom"><td style="width: 4.94132%;">10

</td><td style="width: 95.0175%;">**TextNode:** By default associated to a TextBrushAlphaBlend effect.   
Candera::TextBrushAlphaBlend</td></tr><tr valign="bottom"><td style="width: 4.94132%;">11

</td><td style="width: 95.0175%;">**Solid Color Node:** By default associated to a TextBrushAlphaBlend effect.   
[Candera::SolidColorBrush](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_solid_color_brush.html "Output a rectangle filled with a solid color. The rectangle is transformed to the transformation spac...")</td></tr><tr><td style="width: 4.94132%;">12

</td><td style="width: 95.0175%;">**MVG Arc Node:** can be used to display an arc  
</td></tr><tr><td style="width: 4.94132%;">13

</td><td style="width: 95.0175%;">**MVG Ellipse Node:** can be used to display ellipse  
</td></tr><tr><td style="width: 4.94132%;">14

</td><td style="width: 95.0175%;">**MVG Path Node:** can be used to display paths with a combination of instructions  
</td></tr><tr><td style="width: 4.94132%;">15

</td><td style="width: 95.0175%;">**MVG Rect Node:** can be used to display rect.  
</td></tr></tbody></table>

</div></div></div>For each of these types, refer to the Properties panel for inspecting all properties specific for the type of node. Tooltips are available to explain the purpose of the property. Refer also to the <span style="color: rgb(230, 126, 35);">[Properties Overview](https://doc316en.candera.eu/books/appendix/page/properties-overview "Properties Overview")</span> listing the Tooltip descriptions.

About MVG nodes, please refer to <span style="color: rgb(230, 126, 35);">[MVG Nodes](https://doc316en.candera.eu/link/1067#bkmrk-page-title)</span> page.

#### <a class="anchor" id="bkmrk--34"></a>Position of 2D Nodes

By using the so-called "Object Inspector" feature, it is possible to display the following properties of a 2D node: Position, Scale, Rotation and BoundingBox. This can be done by right-clicking on a 2D node and selecting the "Object Inspector" from the context menu.

<div drawio-diagram="7594"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733481496.png" alt=""/></div>

<div class="contents" id="bkmrk--6"><div class="contents"><div class="textblock">  
</div></div></div>The displayed data (visible in the "Object Inspector" panel) is always refreshed reflecting all the changes made by the user.

<div drawio-diagram="6233"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718374448.png" alt=""/></div>

<div class="contents" id="bkmrk--9"><div class="contents"><div class="textblock">  
</div></div></div>WorldPivotPosition, WorldPosition and WorldBoundingBox can also be displayed in the Scene Editor panel.

<div drawio-diagram="6234"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718374730.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents"><div class="textblock">  
</div></div></div>This feature is disabled by default and can be enabled in "Preferences" &gt; "Editor" &gt; "2D" &gt; "World Transformations". Alternatively, it can be enabled in "View" &gt; "2D Editing Utilities" &gt; "World Transformations".

<div drawio-diagram="6235"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718374808.png" alt=""/></div>

<div drawio-diagram="6236"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718374847.png" alt=""/></div>

#### <a class="anchor" id="bkmrk--40"></a>Adding Text to the 2D Scenes

Text can be added to the scenes either by using a dedicated node called TextNode2D or by using a Render Node in conjunction with a text effect.

##### TextNode2D

The image below shows how to drag and drop the TextNode2D from the Toolbox to the scene tree:

<div drawio-diagram="7596"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733485584.png" alt=""/></div>

<div class="contents" id="bkmrk--17"><div class="contents"><div class="textblock">  
</div></div></div>The TextNode2D default properties are set so that the node is displayed after it is added to the scene tree.

<div drawio-diagram="7597"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733485748.png" alt=""/></div>

<div class="contents" id="bkmrk-please-consult-text-"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">Please consult <span style="color: rgb(230, 126, 35);">[Text Style Palette](https://doc316en.candera.eu/books/solution-handling/page/text-style-palette)</span> for detailed information about adding and editing styles.</p>

</dd></dl></div></div></div>##### Multi Line Text Input

Sometimes it could be necessary to introduce a long text - structured in multiple, successive lines - into a text field. To support this, SceneComposer allows multi-line input in any text field within the Properties panel. To insert a newline press **Ctrl + Enter**. This will put the cursor at the beginning of the next line.

<div drawio-diagram="8625"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-5-1760691055.png" alt=""/></div>

More text layout properties are available when "Enable Text Layout" is checked .

##### Text Layout  


Another category called "Text Layout" includes the following properties: TextAlignment, LineSpacing, Trimming, MultiLine and WordWrap.

<div drawio-diagram="6239"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718375411.png" alt=""/></div>

<div class="contents" id="bkmrk--30"><div class="contents"><div class="textblock">**Multi-Line:** In some cases it may be necessary to render a multi-line text as a single line, ignoring any newline characters. This can easily be achieved by unchecking the "Multi-Line" property. The result is immediately visible in the Scene Editor.</div><div class="textblock"></div></div></div><p class="callout info">This properties section is only visible if *Enable Text Layout* is checked. If it is unchecked, the default values of the properties will determine the way the text is rendered.</p>

# Effects

Effects describe the appearance of a RenderNode in a 2D scene. The number of effects may differ on each platform. A functional overview of each effect is provided in the table below (you can navigate to the detailed pages by using the links in the titles).

<table border="1" id="bkmrk-effect-name-descript" style="border-collapse: collapse; width: 800px; height: 1174.05px; border-width: 1px;"><colgroup><col style="width: 39px;"></col><col style="width: 273px;"></col><col style="width: 487px;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; background-color: rgb(35, 111, 161);"></td><td class="align-center" style="height: 29.7969px; background-color: rgb(35, 111, 161);">**<span style="color: rgb(255, 255, 255);">Effect name</span>**</td><td class="align-center" style="height: 29.7969px; background-color: rgb(35, 111, 161);">**<span style="color: rgb(255, 255, 255);">Description</span>**

</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">1

</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[BitmapBrushBlend](https://doc316en.candera.eu/link/602#bkmrk-bitmapbrushblend)</span></td><td style="height: 46.5938px;">Renders a bitmap image as source content and blends it with the destination (store) buffer.

</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">2</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[BitmapBrushColorBlend](https://doc316en.candera.eu/link/602#bkmrk-bitmapbrushcolorblen)</span></td><td style="height: 46.5938px;">Renders a bitmap, modulates its color (e.g., RGBA factors) and blends the result with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">3</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[BitmapBrushHslBlend](https://doc316en.candera.eu/link/602#bkmrk-bitmapbrushhslblend)</span></td><td style="height: 46.5938px;">Renders a bitmap with hue/saturation/lightness adjustments and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">4</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[BlurBitmapBrushBlend](https://doc316en.candera.eu/link/602#bkmrk-blurbitmapbrushblend)</span></td><td style="height: 46.5938px;">Produces a blurred bitmap image (post filter) and blends it into the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">5</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlBitmapBrushColorMaskBlend](https://doc316en.candera.eu/link/605#bkmrk-glbitmapbrushcolorma)</span></td><td style="height: 46.5938px;">Renders a bitmap using a color-based alpha mask and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">6</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlBitmapBrushMaskBlend](https://doc316en.candera.eu/link/605#bkmrk-glbitmapbrushmaskble)</span></td><td style="height: 46.5938px;">Renders a bitmap with an alpha mask (mask texture) and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">7</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlDropShadowBitmapBrushBlend](https://doc316en.candera.eu/link/608#bkmrk-gldropshadowbitmapbr)</span></td><td style="height: 46.5938px;">Draws a drop shadow for the input bitmap and blends both shadow and image with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">8</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlDropShadowBitmapBrushColorBlend](https://doc316en.candera.eu/link/608#bkmrk-gldropshadowbitmapbr-0)</span></td><td style="height: 46.5938px;">Draws a drop shadow and applies color modulation to the bitmap output before blending to destination.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">9</td><td style="height: 46.5938px;">[<span style="color: rgb(230, 126, 35);">GlFlipBitmapBrushBlend</span>](https://doc316en.candera.eu/link/607#bkmrk-glflipbitmapbrushble)</td><td style="height: 46.5938px;">Flips the bitmap horizontally and/or vertically and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">10</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlFlipBitmapBrushColorBlend](https://doc316en.candera.eu/link/607#bkmrk-glflipbitmapbrushcol)</span></td><td style="height: 46.5938px;">Flips the bitmap, applies color modulation, and blends the result with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">11</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlLinearGradientBitmapBrushBlend](https://doc316en.candera.eu/link/606#bkmrk-gllineargradientbitm)</span></td><td style="height: 46.5938px;">Applies a linear gradient over bitmap/text content and blends it to the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">12</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlLinearGradientBrushBlend](https://doc316en.candera.eu/link/606#bkmrk-gllineargradientbrus)</span></td><td style="height: 46.5938px;">Generates a linear-gradient brush as source pixels and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">13</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlMultiTextureBrushBlend](https://doc316en.candera.eu/link/1191#bkmrk-glmultitexturebrushb)</span></td><td style="height: 46.5938px;">Blends two bitmap inputs (multi-texture combine) and then blends the result to the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">14</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlOutlineBitmapBrushColorBlend](https://doc316en.candera.eu/link/609#bkmrk-gloutlinebitmapbrush)</span></td><td style="height: 46.5938px;">Creates an outline from the image alpha (notably for bitmap-cached text), modulates color, and blends to destination.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">15</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlRadialGradientBrushBlend](https://doc316en.candera.eu/link/606#bkmrk-glradialgradientbrus)</span></td><td style="height: 46.5938px;">Generates a radial-gradient brush as source pixels and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">16</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[GlSolidColorBrushMaskBlend](https://doc316en.candera.eu/link/604#bkmrk-glsolidcolorbrushmas)</span></td><td style="height: 46.5938px;">Fills with a solid color through an alpha mask and blends it with the destination buffer.</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">17</td><td style="height: 29.7969px;"><span style="color: rgb(230, 126, 35);">[MVGArcBrush](https://doc316en.candera.eu/link/1290#bkmrk-mvgarcbrush)</span></td><td style="height: 29.7969px;">Renders a vector arc shape (MVG) as a brush output (source pixels).</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">18</td><td style="height: 29.7969px;"><span style="color: rgb(230, 126, 35);">[MVGEllipseBrush](https://doc316en.candera.eu/link/1290#bkmrk-mvgellipsebrush)</span></td><td style="height: 29.7969px;">Renders a vector ellipse/circle (MVG) as a brush output.</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">19</td><td style="height: 29.7969px;"><span style="color: rgb(230, 126, 35);">[MVGPathBrush](https://doc316en.candera.eu/link/1290#bkmrk-mvgpathbrush)</span></td><td style="height: 29.7969px;">Renders a vector path (MVG) as a brush output.</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">20</td><td style="height: 29.7969px;"><span style="color: rgb(230, 126, 35);">[MVGRectBrush](https://doc316en.candera.eu/link/1290#bkmrk-mvgrectbrush)</span></td><td style="height: 29.7969px;">Renders a vector rectangle/rounded-rect (MVG) as a brush output.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">21</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[MirrorBitmapBrushBlend](https://doc316en.candera.eu/link/602#bkmrk-mirrorbitmapbrushble)</span></td><td style="height: 46.5938px;">Renders a bitmap together with its mirror reflection and blends the combined output to destination.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">22</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[ShadowBitmapBrushBlend](https://doc316en.candera.eu/link/602#bkmrk-shadowbitmapbrushble)</span></td><td style="height: 46.5938px;">Produces a shadow or glow around the bitmap and blends the effect and image with destination.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">23</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[ShearBitmapBrushBlend](https://doc316en.candera.eu/link/602#bkmrk-shearbitmapbrushblen)</span></td><td style="height: 46.5938px;">Shears (skews) the image by X/Y shear angles and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">24</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[SolidColorBrushBlend](https://doc316en.candera.eu/link/603#bkmrk-solidcolorbrushblend)</span></td><td style="height: 46.5938px;">Generates a solid-color rectangle as source pixels and blends it with the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">25</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[SolidColorBrushColorBlend](https://doc316en.candera.eu/link/603#bkmrk-solidcolorbrushcolor)</span></td><td style="height: 46.5938px;">Generates a solid-color rectangle, applies color modulation, then blends to the destination buffer.</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">26</td><td style="height: 46.5938px;"><span style="color: rgb(230, 126, 35);">[SolidColorBrushHslBlend](https://doc316en.candera.eu/link/603#bkmrk-solidcolorbrushhslbl)</span></td><td style="height: 46.5938px;">Generates a solid-color rectangle with HSL correction and blends it with the destination buffer.</td></tr></tbody></table>

<div class="contents" id="bkmrk--0"><div class="contents">  
</div></div><div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">---

</div></div></div>#### **Combined Effects**  


<p class="callout info">The effects provided in SceneComposer are **combined effects**. They can be dragged from the toolbox and dropped onto a RenderNode.</p>

##### Background information

Combined effects are a combination of two or three basic effect types that are combined to an effect chain.

The following three basic effect types are used to form this effect chain

- **Brush Effect:** Acts as the input effect; it defines the source data for the node (e.g. SolidColorBrush, BitmapBrush)
- **In-place Effect:** Multiple different in-place effects can be concatenated (e.g. ConstantAlphaEffect, MaskEffect)
- **Blend Effect:** e.g. AlphaBlendEffect

A correctly configured effect chain consists of the following

<div class="contents" id="bkmrk-a-brush-effect-at-fi"><div class="contents"><div class="textblock">- a Brush effect at first
- followed by an optional In-place effect
- finished by a final Blend effect

</div></div></div><div class="contents" id="bkmrk--6"><div class="contents">  
</div></div><div class="contents" id="bkmrk--8"><div class="contents">  
</div></div>For usability reasons, Scene Composer only provides combined effects in the Toolbox by default.

<div class="contents" id="bkmrk--9"><div class="contents"><div class="textblock">---

</div></div></div>#### <a class="anchor" id="bkmrk--22"></a>Use Combined Effects

Several node types are already preconfigured with a specific combined effect. E.g when a BitmapNode is added to the scene graph, it is automatically linked to a BitmapBrushBlend combined effect

For user-defined nodes, use the following 2D node type:

<div class="contents" id="bkmrk-rendernode%3A-drag-a-c"><div class="contents"><div class="textblock">- **RenderNode:** Drag a combined effect from the Toolbox and drop it over the desired RenderNode in the Scene Tree panel.

</div></div></div>Follow these steps to view and edit the effect:

1. Select the node in the left side of the Scene Tree panel.
2. The linked effect will appear on the right side.
3. Select the effect to display its properties in the Properties panel, where you can edit them.

<div drawio-diagram="8626"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-5-1760694192.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents"><div class="textblock">  
</div></div></div><div class="contents" id="bkmrk--13"></div>

# 2D Scene Editor

The "Scene Editor" is the main panel of the application in which scenes and animations are displayed ("render view"). It is the only panel that cannot be closed.

See Also : <span style="color: rgb(230, 126, 35);">[2D Editing Helpers](https://doc316en.candera.eu/books/preferences/page/2d-editing-helpers "2D Editing Helpers")</span>

---

#### <span style="color: rgb(0, 0, 0);">General</span>

By default, only one Scene Editor is displayed (Scene Editor -0 only). You can display up to four Scene Editors (Scene Editor -0 to -4) as needed. You can show or hide them from the menu bar \[ View &gt; Editors &gt; Scene Editor \].

- Scene Editor menu on the Menu Bar  
    <div drawio-diagram="8610"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593129.png" alt=""/></div>
- The \[ Display Scene Editor \] icon on the toolbar  
    <div drawio-diagram="8611"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593264.png" alt=""/></div>
    
    When you click the \[ Display Scene Editor \] icon, four icons will appear for toggling the visibility of the Scene Editor. Please refer to the table below for details on each icon.
    
    <table border="1" style="border-collapse: collapse; width: 53.6082%;"><colgroup><col style="width: 20.2873%;"></col><col style="width: 79.7127%;"></col></colgroup><tbody><tr><td><div drawio-diagram="8612"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593313.png" alt=""/></div>
    
    </td><td>The Scene Editor -0 is displayed.</td></tr><tr><td><div drawio-diagram="8613"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593331.png" alt=""/></div>
    
    </td><td>The Scene Editors -0 and -1 are displayed.</td></tr><tr><td><div drawio-diagram="8614"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593345.png" alt=""/></div>
    
    </td><td>Scene Editors -0 through -2 are displayed.</td></tr><tr><td><div drawio-diagram="8615"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593361.png" alt=""/></div>
    
    </td><td>Scene Editors -0 through -3 are displayed.</td></tr></tbody></table>
    
    When a display setting not listed in the table above is applied in the Scene Editor menu on the Menu Bar, the \[ Display Scene Editor \] icon will display "Custom".  
    <div drawio-diagram="8616"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-10/drawing-7-1760593389.png" alt=""/></div>

<p class="callout info">Additionally, scene editors (1) to (3) support floating display. By using floating display, you can display any scene editor on a separate display.</p>

<p class="callout info">If the displayed Scene (or Control) is updated, it will be reflected in all Scene Editors.</p>

---

The following is an explanation of the scene editor tool icons.

#### Camera Manipulation

The Camera combo box provides the following camera views for a 2D scene:

<div class="contents" id="bkmrk-editor-camera%3A-a-def"><div class="contents"><div class="contents"><div class="textblock">- **Editor camera:** A default camera named "Editor", which can be used to edit the scene including all scene cameras from an outer perspective.
- **Scene cameras:** Further, each camera part of the scene is listed in the combo box. If a scene camera is selected, the scene is displayed from that camera's perspective. Scene cameras are created by dragging an item of type "Camera" from the Toolbox panel and dropping it into the Scene Tree panel.

</div></div></div></div><div drawio-diagram="6246"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718376200.png" alt=""/></div>

<div class="contents" id="bkmrk-in-scene-camera-view"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">In scene camera view, the camera properties can only be edited in the "Properties" panel.</p>

</dd></dl></div></div></div>##### Camera Panning and Zooming

The scene content displayed in the Scene Editor can be modified like this when in Editor mode:

<div class="contents" id="bkmrk-panning%3A-move-the-mo"><div class="contents"><div class="textblock">- **Panning:** Move the mouse while holding the middle mouse button down;   
    or move the mouse while holding the &lt;CTRL&gt; and &lt;SHIFT&gt; keys and the left mouse button
- **Zooming:** Rotate the mouse wheel forward for zooming in and backward for zooming out

</div></div></div>To enable panning and zooming also for scene cameras, a preference option is available:

<div class="contents" id="bkmrk-tick-%22enable-scene-c"><div class="contents"><div class="contents"><div class="textblock">- Tick **"Enable scene camera manipulation"** in the "Editor Preferences" dialog opened from File-Preferences menu option.

</div></div></div></div><div drawio-diagram="6247"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718376410.png" alt=""/></div>

It is possible to zoom any 2D scene oriented towards a point indicated by the cursor (similar with Google Earth zoom). By placing the cursor on any point in a 2D scene, when zooming operation is doing the whole scene towards that selected point.

##### Fit to Screen

When zooming or panning the editor camera of a 2D scene or a 2D Control, parts of your scene or Control might get out of sight.

To display the entire content of your 2D scene or 2D Control in the Scene Editor window, click the "Fit to Screen" button. All objects of the scene or control will become visible - even those outside the yellow viewport rectangle.

<div drawio-diagram="5740"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-05/drawing-5-1715937672.png" alt=""/></div>

##### Reset Camera

Use the "Reset Camera" button left to the Camera combo box to reset the selected view to the default location and orientation.

<div drawio-diagram="6250"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718376517.png" alt=""/></div>

##### Camera Preview Thumbnail

<div class="contents" id="bkmrk--0"></div>Even though the current selected camera is the Perspective camera, it is possible to see the content displayed by other camera in the thumbnail available in property grid. If the camera is not associated to a render target, the preview will be done on a fixed size virtual render target surface:

<div class="contents" id="bkmrk-512x512px-for-2d-cam"><div class="contents"><div class="textblock">- 512x512px for 2D cameras

</div></div></div>If the camera is associated to a render target, the preview will be generated:

<div class="contents" id="bkmrk-on-a-surface-of-the-"><div class="contents"><div class="contents"><div class="textblock">- on a surface of the same dimensions and then reduced to a thumbnail image - for 2D cameras

</div></div></div></div><div drawio-diagram="6251"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718376911.png" alt=""/></div>

<div class="contents" id="bkmrk--26"><div class="contents">  
</div></div>By selecting the camera whose perspective should be viewed in the Scene Tree, the camera preview thumbnail will be displayed in the property grid.

<div class="contents" id="bkmrk-the-%22alpha-blend-fac"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The "Alpha Blend Factor" and the "Alpha Destination Blend Factor" in the Default Render Mode Configuration should be set properly. For instance, the former value could be InverseSourceAlpha and the latter value could be DestColor.</p>

</dd></dl></div></div></div><div drawio-diagram="5043"></div>

---

#### Picking and Transforming Items

In the Scene Editor, an item can be picked by clicking on it. After picking, the bounding box of the item is displayed together with the pivot point, and it is selected in the "Scene Tree" panel:

<div drawio-diagram="5044"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-01/drawing-5-1705061460.png" alt=""/></div>

<div class="contents" id="bkmrk-groups-cannot-be-pic"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">**Groups** cannot be picked in the render view; they need to be selected in the "Scene Tree" panel. The "Scene Editor" and "Scene Tree" panels are synchronized in terms of the selected item.</p>

</dd><dd></dd></dl>---

</div></div></div>##### Interaction Modes: Selection, Edit the margin of objects inside a layout, Translate, Rotate, Scale

In the Toolbar, the following interaction modes are available for 2D scenes:

<div drawio-diagram="6252"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718376955.png" alt=""/></div>

##### Select

When the button "Select" is enabled, the selected object will be highlighted in the Scene Editor but can't be transformed.

##### Edit the margin of objects inside a layout

For more information about this, please refer to <span style="color: rgb(230, 126, 35);">[Adorners](https://doc316en.candera.eu/books/scene-design/page/adorners)</span>.

<div drawio-diagram="6255"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718377189.png" alt=""/></div>


##### Translate

Three options are available for this mode:

<div class="contents" id="bkmrk-%22pivot-and-object%22-w"><div class="contents"><div class="contents"><div class="textblock">- **"Pivot and Object"** will move the selected object with its pivot
- **"Only object"** will move only the object selected and
- **"Pivot only"** will move only the pivot of the selected object.

</div></div></div></div><div drawio-diagram="6253"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718377021.png" alt=""/></div>

<div class="contents" id="bkmrk--37"><div class="contents"><div class="textblock">  
</div></div></div>In Translate mode, another feature is the "Translation System" that allows choosing between Parent and View reference system. When Parent system is selected, the reference system is the coordinate system of the scene. Otherwise, the reference system is the coordinate system of the selected object. In both cases the object can be moved by using the arrow keys.

<div drawio-diagram="6254"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718377063.png" alt=""/></div>

<div class="contents" id="bkmrk-the-fixed-angle-valu"><div class="contents"><div class="textblock">  
</div></div></div>##### Scale

The scale gizmo is represented in a similar way as the translation gizmo:

<div drawio-diagram="930"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676442562.png" alt=""/></div>

<div class="contents" id="bkmrk--42"><div class="contents">  
</div></div>Move the mouse while pressing left mouse button to translate, rotate or scale the selected object in the render view. The modification of the properties is also reflected in the "Properties" panel for the selected item.

The scale gizmo contains four controllers:

<div class="contents" id="bkmrk-the-object-itself-x-"><div class="contents"><div class="contents"><div class="textblock">- the object itself
- X axis controller - when dragging the axis, the object will be scaled on the local x axis
- Y axis controller - when dragging the axis, the object will be scaled on the local y axis
- Lock scaling controller - displayed on the lower right corner of the render node. When dragging it, the object will be scaled proportional on each axis.

</div></div></div></div>##### Rotate

In this mode, a rotation gizmo is represented by a circle:

<div drawio-diagram="932"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676442583.png" alt=""/></div>

<div class="contents" id="bkmrk--45"><div class="contents">  
</div></div>Usually the object is freely rotated except the situations when the rotation angle is close to a fixed angle controlled by a tolerance. The tolerance defines the range between two multiple values where the object can freely rotate without being snapped.

<div class="contents" id="bkmrk-the-fixed-angle-valu-1"><div class="contents"><div class="textblock">- the fixed angle values shall be multiples of 45
- the angle snapping tolerance shall be 22.5 degrees.

</div></div></div>##### Move Elements with Arrows Keys

Any element can be moved/scaled/rotated by using arrows. After the selection of the object use the Left, Right, Up and Down arrows to get the desired results.

##### Unselect an Item

The camera cannot be manipulated and vice versa when an item is selected.

Unselect an item by hitting the **Esc** key.

Please refer to section <span style="color: rgb(230, 126, 35);">[2D Editing Helpers](https://doc316en.candera.eu/books/preferences/page/2d-editing-helpers "2D Editing Helpers")</span> for further information.

# 2D Laying Out

Laying out is a feature specific to 2D scenes. Once a layout is applied to a 2D group, all children of that group will be affected by the given layout strategy.

<div class="contents" id="bkmrk-if-the-user-does-not"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">If the user does not want any laying out support, thus normal editing procedure is applied and no laying out is set. If the user enables laying out for some nodes, and he does not want to move by mistake any of the child nodes which are laid out, the "strict laying out" option can be enabled from File-Preferences menu, Editor - 2D section. On-demand laying out is available by pressing CTRL+ L or by calling "Edit" &gt; "Do-Layout" menu option to trigger Candera to layout all objects in the scene</p>

</dd></dl></div></div></div>Candera supports four built-in layouts: Stack, Grid, Baseline, Overlay, and DockPanel each layout having some specific configuration parameters.

#### **General Layout Properties**

The following properties can be set to any node which is arranged by a parent layouter.

<div drawio-diagram="8794"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-5-1763718472.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>A layout can only be set on a group, having some specific properties, while final laying out is determined by the properties set on all the arrangeable items that are contained in any group on which a layout was set.

After the creation of a layout, the borders of the grid cells - including bounding boxes - can be visualized simultaneously in the Scene editor. Actually, the border of every cell of the layout will be visible as a yellow line.

<div drawio-diagram="6261"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718377917.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>This border is visible if the entire group is selected or if just one single cell is selected.

<div drawio-diagram="6262"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718377991.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>Two different secondary borders - the bounding box of the parent node, and the bounding box of the effective node - will be visible, marked with blue, if some values are set.

<div drawio-diagram="6263"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378021.png" alt=""/></div>

<div class="contents" id="bkmrk--6"><div class="contents"><div class="textblock">  
</div></div></div>The effective bounding box will become visible if layout values - like margin of the element - are added in Properties panel.

##### <a class="anchor" id="bkmrk--43"></a>Row, Column Number

If the parent layout is a grid, the elements position in the grid can be changed. This has same effects like arranging a node in the Grid Editor Dialog.

##### <a class="anchor" id="bkmrk--44"></a>Alignment

**Vertical Alignment:** Each layout-able element can specify its vertical alignment inside the area which is available by the parent layout.

<p class="callout info">The sample images below were created using an **OverlayLayout** (sized 200x100px) containing an **image** (sized 151x52px). The image's StretchBehavior property is set to **Uniform** and its HorizontalAlignment remains at the default value.   
To demonstrate the impact of different **VerticalAlignment** settings, this property has been varied across all options (from VTop to VStretchBottom). </p>

<div drawio-diagram="8805"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-12/drawing-7-1764719574.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents"><div class="textblock">  
</div></div></div>**Horizontal Alignment:** Each layout-able element can specify its horizontal alignment inside the area which is available by the parent layout.

<p class="callout info">The sample images below were created using an **OverlayLayout** (sized 100x200px) containing an **image** (sized 52x151px). The image's StretchBehavior property is set to **Uniform** and its VerticalAlignment remains at the default value.   
To demonstrate the impact of different **HorizontalAlignment** settings, this property has been varied across all options (from VLeft to VStretchRight). </p>

<div drawio-diagram="8806"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-12/drawing-7-1764720921.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents">  
</div></div><div class="textblock" id="bkmrk--12"></div><div class="textblock" id="bkmrk--13"></div>##### <a class="anchor" id="bkmrk--47"></a>Size

Specify a fixed size for an element by setting the width and height. In case the element won't be asked for its preferred size.

<div class="contents" id="bkmrk-note%3A-minimum-size-a"><div class="contents"><div class="textblock"><dl class="note"><dt>**Note:**</dt><dd>Minimum Size and Maximum Size is taken into account! If the preferred size of the element should be taken set value -1;-1.</dd></dl></div></div></div>**Minimum Size:** An element won't get smaller than its minimum size.

**Maximum Size:** An element won't get larger than its maximum size. If more space is available, it will be placed according to its alignment parameter (see above).

<div class="contents" id="bkmrk-a-fixed-size-can-be-"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">A fixed size can be defined by setting the same values for minimum and maximum size. (tbd: default value)</p>

</dd></dl></div></div></div>##### <a class="anchor" id="bkmrk--48"></a>Margin

The margin for an element defines some extra space around itself. Different values can be set for left, top, right and bottom margin.

##### Stretch Behavior

If the items size (size of an image, text, or colored rectangle) is smaller than the available space one of the following stretch behaviors can be set:

<div class="contents" id="bkmrk-none%3A-the-item-will-"><div class="textblock">- None: The item will not be stretched; it will be rendered in its original size,
- Fill: The item will be stretched (or shrunk) to fill the exact available space.
- Uniform: The original aspect ratio of the item will not be changed, but all of the item will be shown. Therefore the item might not fill the whole width or height of the available space.
- UniformToFill: The original aspect ratio of the item will not be changed, but the whole available space will be filled. The image will be cut off on the right or bottom side, when Candera\_Layout\_Clipping is enabled.

</div></div>####   
**Stack Layout**

The layout type "Stack" realizes a stacked laying out either in horizontal or vertical direction. The order of the stack elements is given by the order of the child nodes within the laid out group.

<div drawio-diagram="6264"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378083.png" alt=""/></div>

<div class="contents" id="bkmrk--15"><div class="contents"><div class="textblock">  
</div></div></div>Configuring the Stack Layout:

<div class="contents" id="bkmrk-select-the-group-hol"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be laid out in the Scene Tree panel
2. Choose LayoutType "Stack" from the Properties panel
3. Choose "Horizontal" or "Vertical" value for property Arrangement in the Properties panel, depending on the desired laying out
4. Call the Do-Layout command using the shortcut keys "Ctrl+L" or from the Edit - Do-Layout menu

</div></div></div><div drawio-diagram="6265"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378110.png" alt=""/></div>

<div class="contents" id="bkmrk--17"><div class="textblock">  
</div></div>#### **Grid Layout**

In a Grid layout, every node part of the laid out group is assigned to a cell of the grid. A Grid Layout Editor is available to configure the grid and to arrange nodes in the grid's cells by drag &amp; drop operation.

<div drawio-diagram="6267"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378156.png" alt=""/></div>

<div class="contents" id="bkmrk--19"><div class="contents"><div class="textblock">  
</div></div></div>Configuring the Grid Layout:

<div class="contents" id="bkmrk-select-the-group-hol-0"><div class="contents"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be laid out in the Scene Tree panel
2. Choose LayoutType "Grid" from the Properties panel
3. Optional: Set the number of rows and columns of the grid by editing the properties RowCount and ColumnCount in the Properties panel
4. Use the context menu item "Configure Layout" on the selected Group in the Scene Tree panel to open the "Grid Layout Editor" dialog

</div></div></div></div><div drawio-diagram="7588"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-11/drawing-5-1732899967.png" alt=""/></div>

<div class="contents" id="bkmrk--21"><div class="contents"><div class="textblock">  
</div></div></div>Optional: Use the buttons "+","-" to configure the desired number of rows and columns in the "Grid layout editor" dialog, if not done already in the Properties panel.

<div drawio-diagram="949"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676443876.png" alt=""/></div>

Arrange the nodes of the group in the grid's cells by drag &amp; drop operation.

<div drawio-diagram="6269"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378288.png" alt=""/></div>

<div class="contents" id="bkmrk--24"><div class="contents"><div class="textblock">  
</div></div></div>Configure width and height for rows and columns by editing the values on the border of the grid. Values within the range \[0...1\] are considered as percentages and values greater than 1 as dimensions.

Confirm the layout configuration by pressing the "OK" button of the dialog "Grid layout editor".

Call the Do-Layout command using the shortcut keys "Ctrl+L" or from the "Edit" &gt; "Do-Layout" menu.

<div drawio-diagram="6270"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378315.png" alt=""/></div>

<div class="contents" id="bkmrk--26"><div class="contents"><div class="textblock">  
</div></div></div>**See also:**

<div class="contents" id="bkmrk-candera%3A%3Agridlayoute"><div class="textblock">- [Candera::GridLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_grid_layouter.html "GridLayouter arranges its elements in a grid. The amount of rows and columns for the grid must be spe...")

</div></div>####   
**Baseline Layout**

The layout type "Baseline" realizes a stacked laying out in the horizontal direction. It behaves similar to the Horizontal Stack Layout. The major difference consists in its given reference: it aligns the objects to a line instead of aligning them to the client area. The main purpose of this layouter is to align different sizes formatted texts along the same baseline. For instance, if the center is chosen for alignment, the baseline of the text will be aligned to the given line (= baseline offset). The order of the elements is given by the order of the child nodes within the laid out group.

<div drawio-diagram="6271"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378353.png" alt=""/></div>

<div class="contents" id="bkmrk--28"><div class="contents"><div class="textblock">  
</div></div></div>Configure the Baseline Layout by following these steps:

<div class="contents" id="bkmrk-select-the-group-hol-1"><div class="contents"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be laid out in the Scene Tree panel
2. Choose LayoutType "Baseline" from the Properties panel
3. Set any value for property Base Line Offset in the Properties panel, depending on the desired laying out
4. Call the Do-Layout command using the shortcut keys "Ctrl+L" or from the Edit - Do-Layout menu

</div></div></div></div><div drawio-diagram="6272"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378402.png" alt=""/></div>

<div class="contents" id="bkmrk--30"><div class="contents"><div class="textblock">  
</div></div></div>**See also:**

<div class="contents" id="bkmrk-candera%3A%3Abaselinelay"><div class="textblock">- [Candera::BaseLineLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_base_line_layouter.html "A BaseLineLayouter behaves similar to a Horizontal StackLayouter but instead of aligning the objects ...")

</div></div>####   
**Overlay Layout**

The layout type "Overlay" arranges the objects by laying out them on top of each other or by aligning the nodes according to their general layout properties. The order of the elements is given by the order of the child nodes within the laid out group.

<div drawio-diagram="6273"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378443.png" alt=""/></div>

<div class="contents" id="bkmrk--32"><div class="contents"><div class="textblock">  
</div></div></div>Configuring the Overlay Layout:

<div class="contents" id="bkmrk-select-the-group-hol-2"><div class="contents"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be laid out in the Scene Tree panel
2. Choose LayoutType "Overlay" from the Properties panel
3. Call the Do-Layout command using the shortcut keys "Ctrl+L" or from the Edit - Do-Layout menu

</div></div></div></div><div drawio-diagram="955"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676444073.png" alt=""/></div>

<div class="contents" id="bkmrk--34"><div class="contents"><div class="textblock">  
</div></div></div>**See also:**

<div class="contents" id="bkmrk-candera%3A%3Aoverlaylayo"><div class="textblock">- [Candera::OverlayLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_overlay_layouter.html "OverlayLayouter sets sizes of all child elements to fulfill the given area.")

</div></div>####   
**DockPanel Layout**

The "DockPanel" layout provides a layout area within it is possible to arrange child elements around the edge of the screen based on four direction: Top, Bottom, Left, and Right.

<div drawio-diagram="6275"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378555.png" alt=""/></div>

<div class="contents" id="bkmrk--36"><div class="contents"><div class="textblock">  
</div></div></div>This type of layout arranges the elements by laying out them in the remaining space after the previous element was set. To dock an element to the center of the panel, it must be the last child of the panel.

<div drawio-diagram="8795"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-5-1763722666.png" alt=""/></div>

<div class="contents" id="bkmrk--38"><div class="contents"><div class="textblock">  
</div></div></div>Configure the DockPanel Layout by following these steps:

<div class="contents" id="bkmrk-select-the-group-hol-3"><div class="contents"><div class="contents"><div class="textblock">1. Select the Group holding the nodes to be laid out in the Scene Tree panel
2. Choose Layout Type "DockPanel" from the Properties panel
3. For any node inside the Group a new property will become available: "Dock Side". Select it and choose any of the fours available laying outs: "DockLeft", "DockTop", DockRight", "DockBottom".

</div></div></div></div><div drawio-diagram="8796"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-5-1763722869.png" alt=""/></div>

<div class="contents" id="bkmrk--49"><div class="contents"><div class="textblock">  
</div></div></div>**See also:**

<div class="contents" id="bkmrk-candera%3A%3Adockpanella"><div class="textblock">- [Candera::DockPanelLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_dock_panel_layouter.html "The Dock Panel Layouter provides an easy docking of elements to the left, right, top, bottom or center of the panel. The dock side of an element is defined by the attached dynamic DockSide property. To dock an element to the center of the panel, it must be the last child of the panel.")

</div></div>

# MVG Nodes

MVG Nodes can be created in CGI Studio SceneComposer via the Toolbox. Simply drag and drop the desired MVG Node into the Scene Editor or Scene Tree Panel.

The following MVG Nodes are available:

- MVG Arc Node
- MVG Ellipse Node
- MVG Path Node
- MVG Rect Node

<div drawio-diagram="6279"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718378815.png" alt=""/></div>

<p class="callout info">You can see an application of MVG nodes in Scene Composer's **2D Basic sample**.</p>

#### Configure MVG Nodes

An MVG node is a RenderNode2D and therefore it has the same properties that can be configured in the properties panel:

- General. Name, Full Name, Description...
- 2D Render Node: Render Order Rank...
- Transformation: Position, Pivot Point, Pivot Offset...
- Asset: Id, Symbolic Name...
- Item: Scope Mask, Alpha Value...
- Layout: Vertical Alignment, Horizontal Alignment, Size...

Further details like the visual appearance of MVG nodes can be configured in the node's effect. Each type of MVG node has its appropriate effect:

<table border="1" id="bkmrk-mvg-node-mvg-brush-m" style="border-collapse: collapse; width: 41.8519%; height: 157px;"><colgroup><col style="width: 50.0412%;"></col><col style="width: 50.0412%;"></col></colgroup><tbody><tr><td>**MVG Node**  
</td><td>**MVG Brush**  
</td></tr><tr><td>MVG Arc Node </td><td>MVGArcBrush</td></tr><tr><td>MVG Ellipse Node </td><td>MVGEllipseBrush</td></tr><tr><td>MVG Path Node </td><td>MVGPathBrush</td></tr><tr><td>MVG Rect Node </td><td>MVGRectBrush</td></tr></tbody></table>

Select the MVG Node in the Scene Tree and select the attached MVG effect in the right side of the Scene Tree to view its properties in the properties panel.

<div drawio-diagram="7598"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-12/drawing-5-1733485928.png" alt=""/></div>

#### MVG Arc Node - MVGArcBrush

Can be used to render an arc.

The properties of the MVG Arc Node are those of a regular RenderNode2D. For the attached effect MVGArcBrush, the following properties can be configured:

<div drawio-diagram="6282"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718379101.png" alt=""/></div>

<table border="1" id="bkmrk-filter-filter-for-re" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 12.7324%;"></col><col style="width: 87.2244%;"></col></colgroup><tbody><tr><td>Filter  
</td><td>Filter for rendering (choose between BilinearFilter and NearestFilter).</td></tr><tr><td>Line Width  
</td><td>Width of the rendered line in pixels.</td></tr><tr><td>Stroke Color  
</td><td>Color of the rendered line.</td></tr><tr><td>Size  
</td><td>Vertical (X) and horizontal (Y) size of the arc to be rendered.</td></tr><tr><td>Angle Start  
</td><td>The angle of the arc's starting point.</td></tr><tr><td>Angle End  
</td><td>The angle of the arc's end point.</td></tr></tbody></table>

<p class="callout info">The arcs starting and end point have to be entered in degrees. Please also see the sketch below.</p>

<div drawio-diagram="4867"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-11/drawing-4-1700541631.png" alt=""/></div>

#### MVG Ellipse Node - MVGEllipseBrush

Can be used to render an ellipse.

The properties of the MVG Ellipse Node are those of a regular RenderNode2dD. For the attached effect MVGEllipseBrush, the following properties can be configured:

<div drawio-diagram="6283"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718379150.png" alt=""/></div>

<table border="1" id="bkmrk-filter-filter-for-re-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 12.7324%;"></col><col style="width: 87.2244%;"></col></colgroup><tbody><tr><td>Filter  
</td><td>Filter for rendering (choose between BilinearFilter and NearestFilter).</td></tr><tr><td>Line Width  
</td><td>Width of the rendered line in pixels.</td></tr><tr><td>Stroke Color  
</td><td>Color of the rendered line.</td></tr><tr><td>Size  
</td><td>Vertical (X) and horizontal (Y) size of the arc to be rendered.</td></tr><tr><td>Angle Start  
</td><td>The angle of the ellipse's starting point.</td></tr><tr><td>Angle End  
</td><td>The angle of the ellipse's end point.</td></tr><tr><td>FillColor  
</td><td>Fill color of the ellipse.</td></tr><tr><td>PaintMode  
</td><td>Configures if the ellipse will be rendered with outline *and* filling or with either of those (choose between Both, Fill and Stroke).</td></tr></tbody></table>

#### MVG Path Node - MVGPathBrush

Can be used to render paths with a combination of instructions.

The properties of the MVG Path Node are those of a regular RenderNode2dD. For the attached effect MVGPathBrush, the following properties can be configured:

<div drawio-diagram="6284"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718379295.png" alt=""/></div>

<table border="1" id="bkmrk-filter-filter-for-re-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 14.8256%;"></col><col style="width: 85.1332%;"></col></colgroup><tbody><tr><td>Filter  
</td><td>Filter for rendering (choose between BilinearFilter and NearestFilter).</td></tr><tr><td>LineWidth  
</td><td>Width of the rendered line in pixels.</td></tr><tr><td>Stroke Color  
</td><td>Color of the rendered line.</td></tr><tr><td>FillColor  
</td><td>Fill color of the path.</td></tr><tr><td>PaintMode  
</td><td>Configures if the path will be rendered with outline *and* filling or with either of those (choose between Both, Fill and Stroke).</td></tr><tr><td>Segments</td><td>Defines segments.

<table border="1" style="width: 100.147%;"><tbody><tr><td class="align-center" style="width: 7.60042%;">Input value</td><td class="align-center" style="width: 17.8801%;">VGPathSegment</td><td class="align-center" style="width: 10.2862%;">number of Data</td><td class="align-center" style="width: 64.231%;">Description</td></tr><tr><td class="align-center" style="width: 7.60042%;">0</td><td style="width: 17.8801%;">ClosePath</td><td class="align-center" style="width: 10.2862%;">0</td><td style="width: 64.231%;">Closing a path by connecting a final coordinate to a start coordinate. Therefore, the required number of Data is 0.

</td></tr><tr><td class="align-center" style="width: 7.60042%;">2</td><td style="width: 17.8801%;">MoveTo</td><td class="align-center" style="width: 10.2862%;">2</td><td style="width: 64.231%;">Specify coordinates of a path starting point. Therefore, the required number of Data is two (x0, y0).

</td></tr><tr><td class="align-center" style="width: 7.60042%;">4</td><td style="width: 17.8801%;">LineTo</td><td class="align-center" style="width: 10.2862%;">2</td><td style="width: 64.231%;">Draws a straight line. Specify an end point coordinates. Therefore, the required number of Data is two (x0, y0). A straight line is drawn from a coordinates specified in the previous Segment to a coordinates specified in this Segment.

</td></tr><tr><td class="align-center" style="width: 7.60042%;">6</td><td style="width: 17.8801%;">HLineTo</td><td class="align-center" style="width: 10.2862%;">1</td><td style="width: 64.231%;">Draws a horizontal line. The required number of Data is only one (x0).

</td></tr><tr><td class="align-center" style="width: 7.60042%;">8</td><td style="width: 17.8801%;">VLineTo</td><td class="align-center" style="width: 10.2862%;">1</td><td style="width: 64.231%;">Draws a vertical line. The required number of Data is only one (y0).

</td></tr><tr><td class="align-center" style="width: 7.60042%;">10</td><td style="width: 17.8801%;">QuadTo</td><td class="align-center" style="width: 10.2862%;">4</td><td style="width: 64.231%;">Draws a quadratic Bezier curve. Specify a coordinates of a control point and an end point. Therefore, the required number of Data is 4 (x0, y0, x1, y1). Please refer the below image as an example.

</td></tr><tr><td class="align-center" style="width: 7.60042%;">12</td><td style="width: 17.8801%;">CubicTo</td><td class="align-center" style="width: 10.2862%;">6</td><td style="width: 64.231%;">Draws a cubic Bezier curve. Specify coordinates of two control points and an end point. Therefore, the required number of Data is 6 (x0, y0, x1, y1, x2, y2). Please refer the below image as an example.

</td></tr></tbody></table>

</td></tr><tr><td>Data</td><td>Defines Data according to the specified Segment.</td></tr></tbody></table>

#### MVG Rect Node - MVGRectBrush

Can be used to render a rect.

The properties of the MVG Rect Node are those of a regular RenderNode2dD. For the attached MVGRectBrush, the following properties can be configured:

<div drawio-diagram="6285"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718379336.png" alt=""/></div>

<table border="1" id="bkmrk-filter-filter-for-re-3" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 17.7939%;"></col><col style="width: 82.1649%;"></col></colgroup><tbody><tr><td>Filter  
</td><td>Filter for rendering (choose between BilinearFilter and NearestFilter).</td></tr><tr><td>LineWidth  
</td><td>Width of the rendered line in pixels.</td></tr><tr><td>Stroke Color  
</td><td>Color of the rendered line.</td></tr><tr><td>Size  
</td><td>Vertical (X) and horizontal (Y) size of the arc to be rendered</td></tr><tr><td>TopLeftRadius  
</td><td>Radius of the top left corner.  
</td></tr><tr><td>TopRightRadius  
</td><td>Radius of the top right corner.</td></tr><tr><td>BottomLeftRadius  
</td><td>Radius of the bottom left corner.</td></tr><tr><td>BottomRightRadius  
</td><td>Radius of the bottom right corner.</td></tr><tr><td>FillColor  
</td><td>Fill color of the path.</td></tr><tr><td>PaintMode  
</td><td>Configures if the rectangle will be rendered with outline *and* filling or with either of those (choose between Both, Fill and Stroke).</td></tr></tbody></table>

# Referencing external resource

External resources can be referenced and drawn on the scene editor. This feature is only available when launching Scene Composer on the Android platform.

#### Resource Reference Menu

\[ Set External Resource Path... \] in the menu bar under \[ File \] to browse external resources. This menu is grayed out and not selectable for Scene Composer on non-Android platforms.

<p class="callout info">Referable external resource file formats are \*.bmp, \*.jpg, \*.jpeg, \*.gif, \*.tga, \*.png, \*.dds, \*.hdr, and \*.exr.</p>

<div drawio-diagram="6286"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-06/drawing-5-1718379539.png" alt=""/></div>

#### Basic Usage

1. Run Scene Composer and open a new or existing solution file.
2. From \[ File \] menu in the menu bar, select \[ Set External Resource Path... \].
3. The ExternalResourceContainerPlugin dialog will appear.  
    <div drawio-diagram="3766"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-06/drawing-4-1686202601.png" alt=""/></div>
4. Click the \[ Browse... \] button in the dialog to select the external resource folder to be referenced.  
    
    - Select the Android Studio project folder.

<p class="callout info">The behaviors **Set External Bitmap**, **Check External Resource Change**, and **External Bitmap Provider** are used to display external resources. For details on each behavior and their usage, please refer to <span style="text-decoration: underline;"><span style="color: rgb(230, 126, 35); text-decoration: underline;">[this page](https://doc316en.candera.eu/books/controls-and-behaviors/page/external-resource)</span></span>.</p>

# Transitions

# Concept and Use Cases

#### <a class="anchor" id="bkmrk--11"></a>Transitions Concept

Generally speaking, the concept of "transition" indicates the edge between two different states. In our case, the very notion of transition indicates the visual dynamics involved in displaying the content of a scene which is replacing another scene. Using a transition provides continuity so that the scene change is not quite so abrupt.

The rules editor panel allows the definition of transitions on a per scene basis and test these transitions directly in SceneComposer's display preview. The designer can use the editor to set the transitions **to** (="Destination") or **from** a scene (="Source") just by selecting effects (="Transition Types") on the scene list.

<div drawio-diagram="6504"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723016272.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"></div></div>#### <a class="anchor" id="bkmrk--13"></a>Types of Transitions

The rules editor features a toolbox where both "built in" transitions and "custom" transitions are available, a configurable default behavior, two scrollable lists ("Source" and "Destination") of all scenes in the solution, a "Variant" scrollable list, and a properties panel. To create a rule it is mandatory, first, to select the source and the destination, a specific type of that transition and, finally, to set the transition properties. After all these steps are done, the transition can be executed in the "Transition Execution" panel.

The available simple transitions are the following:

<div class="contents" id="bkmrk-cut-fade-slide-scale"><div class="contents"><div class="textblock">- Cut
- Fade
- Slide
- Scale

</div></div></div>The available combined transitions are the following:

<div class="contents" id="bkmrk-fade-%26-slide-fade-%26-"><div class="contents"><div class="contents"><div class="textblock">- Fade &amp; Slide
- Fade &amp; Scale
- Slide &amp; Scale
- Fade &amp; Slide &amp; Scale

</div></div></div></div>#### <a class="anchor" id="bkmrk--14"></a>Transition Type Animation

The Transitions framework has a special build-in transition type – Animation. By using this transition type, it is possible to trigger animations or group animations within transitions. The Variant holds three Additional optional parameters:

<div class="contents" id="bkmrk-animationid-%E2%80%93-cander"><div class="contents"><div class="textblock">- AnimationId – Candera::Id of the animation that will be executed by the Transitions framework. 
    - AnimationTimeline - specifies the time when the animation will start. The end time of the animation depends on the selected playback mode.
    - IsAnimationTimeRelative - defines the playback mode for the animation: 
        - TransitionTime - default (false) - The animation speed is adapted such that the end time of the transition, specified by the AnimationTimeline parameter, will match the end time of the animation.
        - AnimationTime (true) - The animation duration is given by the animation itself.

</div></div></div>The animation specific parameters can be specified in the properties panel once the corresponding transition type has been selected:

<div drawio-diagram="960"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676444250.png" alt=""/></div>

<div class="contents" id="bkmrk--3"><div class="contents"><div class="textblock">  
</div></div></div>The animations can be triggered through a Request using the corresponding Variant name.

<div drawio-diagram="961"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676444271.png" alt=""/></div>

<div class="contents" id="bkmrk--5"><div class="contents"><div class="textblock">  
</div></div></div>#### <a class="anchor" id="bkmrk--17"></a>Sequential Execution of Transitions

The Transitions framework furthermore allows the sequential execution of transition fragments. One or multiple activation or deactivation fragments can be executed before or after fragments of the respective opposite fragment type. Therefore, the rules editor offers the option to set the "Activation" and "Deactivation" strategy.

The strategy types are:

<div class="contents" id="bkmrk-normal-early-late"><div class="contents"><div class="textblock">- Normal
- Early
- Late

</div></div></div>The combination of "Early" and "Late" will cause a sequential execution of the involved transition fragments. Any other combination results in a default transition behavior. "Early" fragments are executed before "Late" fragments.

For example: Scene\_1 has a rule to perform a transition with a Fade to Scene\_2. Scene\_2 (activation fragment) should fade in completely before Scene\_1 (deactivation fragment) begins to fade out. For this rule, the "Activation" strategy would be "Early" and the "Deactivation" strategy would be "Late". The opposite result can be achieved by swapping the fragments' strategy.

However, it is important to note that multiple "Early" or "Late" fragments will be executed in parallel and that "Late" fragments will only be executed once all "Early" fragments have finished first.

<div drawio-diagram="3306"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682584490.png" alt=""/></div>

<div class="contents" id="bkmrk--7"><div class="contents">  
</div></div>#### <a class="anchor" id="bkmrk--19"></a>Early and Late Transition Delays

Sequential Transitions furthermore offer the possibility to customize the moment, when "Late" fragments are executed after the "Early" fragments are finished. Next to the strategy type, a delay value (in milliseconds) can be set for "Activation" and "Deactivation" fragments. During a transition, the delay values are applied after the respective fragment.

The following shows the resulting sequence:

**Early (Source) -&gt; Delay -&gt; Late (Destination) -&gt; Delay**

If the transition is bidirectional, the sequence is reversed (more on bidirectional transitions further below):

**Delay -&gt; Late (Destination) -&gt; Delay -&gt; Early (Source)**

#### <a class="anchor" id="bkmrk--20"></a>Reverse Transitions

The Transitions framework offers the possibility of reversing transitions. If a reversible fragment has been identified, the already running TransitionFragment shall go backwards, from its current state to the original one.

<div class="contents" id="bkmrk-this-option-shall-be"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">This option shall be used, for example, when a second transition request is posted which contains a fragment that goes from Deactivate(B) - Activate(A), while the previous fragment - from Deactivate(A) to Activate(B) - is still running. In this case the already running transition will be reversed from the current state to the beginning.</p>

</dd></dl></div></div></div>This feature is optional and can be specified via an optional flag "Is Reversible" in the Properties associated to the selected rule. Default value is true.

<div drawio-diagram="3307"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682584509.png" alt=""/></div>

<div class="contents" id="bkmrk--9"><div class="contents"><div class="textblock">  
</div></div></div>A reversible fragment is identified through a Variant that will match a Rule to its corresponding RequestFragment using the following conditions:

<div class="contents" id="bkmrk-the-variant-of-the-a"><div class="contents"><div class="textblock">- the Variant of the already running TransitionFragment shall match the Variant of the current Request.
- the Source of the already running TransitionFragment shall match the Destination of the matching Rule.
- the Destination of the already running TransitionFragment shall match the Source of the matching Rule.

</div></div></div><div class="contents" id="bkmrk-there-are-special-ca"><div class="contents"><div class="textblock"><dl class="note"><dd><p class="callout info">There are special cases: a transition with AllowReverse==true might consist of fragments that are not found in the already running transitions. In this case these fragments shall be executed normally.</p>

</dd></dl></div></div></div>#### <a class="anchor" id="bkmrk--22"></a>Bidirectional Transitions

The "bidirectional" feature allows to define only one transition rule that matches as well the forward as the backwards direction from two request fragments.

<div class="contents" id="bkmrk-bidirectional-transi-0"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">Bidirectional transitions will not support playing reverse AnimationGroups, only Animations.</p>

</dd></dl></div></div></div>The image below shows how two "symmetrical" transition rules can be replaced with only one if the "Is bidirectional" property is enabled:

<div drawio-diagram="6505"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723016725.png" alt=""/></div>

<div class="contents" id="bkmrk--23"><div class="contents"><div class="textblock">  
</div></div></div>Bidirectional rules will be applied in the other direction whenever it would be the first match in the ruleset.

<div class="contents" id="bkmrk-to-preserve-backward"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">To preserve backwards compatibility, on solution conversion, the *"Is Bidirectional"* property is set to false if it didn't exist in the old Solution.</p>

</dd></dl></div></div>

# Use Transitions

#### <a class="anchor" id="bkmrk--9"></a>Use Transitions

Every existing scene is automatically added in two scrollable lists, which are available in the rules editor as "Source" and "Destination".

<div drawio-diagram="6499"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723015595.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>After the selection of the source scene, the destination can be another scene or just "None". If the later option will be chosen, a selected "Transition Type" will be applied to the selected scene.

<div drawio-diagram="6500"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723015691.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>The left combobox of the "Activation" and "Deactivation" columns respectively sets the transition strategy. In order to enable a sequential transition execution, one strategy has to be set to "Early" and the other one to "Late". See the image below for an example.

<div drawio-diagram="6501"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723015770.png" alt=""/></div>

<div class="contents" id="bkmrk--7"><div class="contents"><div class="textblock">  
</div></div></div>Previously to the usage of an existing transition, the camera from every scene which will be used in the transition has to be assigned to a render target. Supposing that the scenes are prepared to be used in a transition, the user has to choose which kind of transition will be assigned to the "Activate" and "Deactivate" state of the scene. The former concept indicates what will happen when the transition will be working from a scene **to** that scene or when will be working on a scene alone, and the latter indicates what will happen when the transition will be working **from** that scene to another one or when will be working on a scene alone. This operation can be done in a secondary panel named "Transition Execution".

<div drawio-diagram="6502"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723015905.png" alt=""/></div>

<div class="contents" id="bkmrk--11"><div class="contents"><div class="textblock">  
</div></div></div>This means that when the user will use the button "Execute Transitions" some scene will get "activate" (if that specific option was checked) and other scenes will get "deactivate" (if that option was checked). For instance, if the transition type "Fade" will be executed for a scene which will get deactivate its content will be fading.

If desired, it is possible to create custom transitions. This can be done by using the "+" button that is placed in in the upper side of the "Rules Editor" panel. The properties that belong to that transition type can be set and will remain available for later re-use. Furthermore, transition strategies and delays can also be edited in the Properties tab. (see the image below).

<div drawio-diagram="6503"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723016133.png" alt=""/></div>

<div class="contents" id="bkmrk--14"><div class="textblock">  
</div></div>

# Transition panel

This page describes the panels you can use when configuring and executing transitions.

#### Transition Rules Editor

The Transition Rule Editor panel can be displayed by checking \[ View &gt; Transitions &gt; Transition Rules Editor \] on the menu bar.

<div drawio-diagram="6496"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723005936.png" alt=""/></div>

<table border="1" id="bkmrk-%281%29-%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E5%AF%BE%E8%B1%A1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%97%E3%81%A6%E6%8C%87%E5%AE%9A" style="border-collapse: collapse; width: 93.2099%; height: 472.25px; border-width: 1px;"><tbody><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(1)</td><td style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Add new transition rule:**

Add a new transition rule.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(2)</td><td class="align-left" style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Delete transition rule:**

Deletes the selected transition rule.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(3)</td><td style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Search:**

If many transition rules are set, you can enter a search term to narrow down the number of results displayed.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(4)</td><td style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Clear Search:**

Delete the search term.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(5)</td><td class="align-left" style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Source:**

Set the source of the transition.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(6)</td><td class="align-left" style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Transition Type:**

Set the transition type.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(7)</td><td class="align-left" style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Destination:**

Set the destination of the transition.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 7.29443%; height: 57.7812px; border-width: 1px; vertical-align: top;">(8)</td><td class="align-left" style="width: 92.7056%; height: 57.7812px; border-width: 1px; vertical-align: top;">**Activation/Deactivation:**

Set the activation delay/deactivation delay.

</td></tr><tr style="height: 10px;"><td class="align-center" style="width: 7.29443%; height: 10px; border-width: 1px; vertical-align: top;">(9)</td><td style="width: 92.7056%; height: 10px; border-width: 1px; vertical-align: top;">**Variant:**

Sets the transition rule variant.

</td></tr></tbody></table>

#### Transition Execution

The Transition Execution panel can be displayed by checking \[ View &gt; Transitions &gt; Transition Execution \] on the menu bar.

<div drawio-diagram="6497"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1723009048.png" alt=""/></div>

<table border="1" class="align-left" id="bkmrk-%281%29-%E6%96%B0%E8%A6%8F%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A1%8C%E4%BE%8B%E3%82%92%E8%BF%BD%E5%8A%A0" style="border-collapse: collapse; width: 92.963%; height: 436.859px; border-width: 1px;"><tbody><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(1)</td><td class="align-left" style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Add an example of a new transition execution:**

Add a new transition execution procedure.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(2)</td><td class="align-left" style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Delete transition execution example:**

Delete the selected transition execution procedure.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(3)</td><td style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Add an example of how to use a scene:**

Add a scene use case to the transition execution procedure.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(4)</td><td style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Delete Scene Example:**

Delete the selected scene use case.

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(5)</td><td class="align-left" style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Execute Transitions:**

Run transition execution procedure.

</td></tr><tr style="height: 10px;"><td class="align-center" style="width: 8.05829%; height: 10px; border-width: 1px;">(6)</td><td class="align-left" style="width: 91.9438%; height: 10px; border-width: 1px;">**Scene:**

Set the scene to be transitioned.

</td></tr><tr style="height: 80.1719px;"><td class="align-center" style="width: 8.05829%; height: 80.1719px; border-width: 1px;">(7)</td><td style="width: 91.9438%; height: 80.1719px; border-width: 1px;">**Action:**

Set the action to be taken by the transition.

(Activate: Transition to the set scene, Deactivate: Transition from the set scene to another scene)

</td></tr><tr style="height: 57.7812px;"><td class="align-center" style="width: 8.05829%; height: 57.7812px; border-width: 1px;">(8)</td><td style="width: 91.9438%; height: 57.7812px; border-width: 1px;">**Variant:**

Sets the transition rule variant.

</td></tr></tbody></table>

<p class="callout info">For more information on how to configure transitions, please refer to <span style="color: rgb(230, 126, 35);">[Concepts and Use Cases](https://doc316en.candera.eu/link/153#bkmrk-page-title)</span> and [<span style="color: rgb(230, 126, 35);">Using Transitions</span>](https://doc316en.candera.eu/link/154#bkmrk-page-title).</p>

# Scoping

# Concept and Use Cases

<div class="header" id="bkmrk-"><div class="headertitle"></div></div>#### <a class="anchor" id="bkmrk--0"></a>Scoping: Concept

The scope concept supplies selects only specific parts of the scene graph for rendering, depending on the specific situation.

<div class="contents" id="bkmrk-scope-forms-conceptu"><div class="contents"><div class="textblock">- Scope forms conceptual groups independent of the scene graph.
- Node part of the scene tree can be assigned to several scopes.

</div></div></div>Scopes are logical entities defined as bit fields, whereby each scope corresponds to a bit field. The set of scopes associated to a node is called scope mask. By default, the scope mask of all nodes including cameras contains all of the 32 scopes.

#### <a class="anchor" id="bkmrk--1"></a>Scoping: Use Cases

The scope concept is used for:

<div class="contents" id="bkmrk-light-culling%3A-only-"><div class="contents"><div class="textblock">- Light culling: Only objects part of the scope of a given light will be illuminated
- Visibility culling: Only objects part of the scope of a given camera will be rendered

</div></div></div>#### <a class="anchor" id="bkmrk--2"></a>Scope Mask

This option "Show scope mask in hexadecimal format" is available in the Preferences dialog opened from "File" &gt; "Preferences" menu, section Editor.   
It ensures that the values for Scope property will be displayed in hex in the Properties panel.

# Manage Scopes in Scopes Panel

#### <a class="anchor" id="bkmrk--1"></a>Scopes Panel

The Scopes Panel (enable from menu "View" &gt; "Libraries" &gt; "Scopes") displays all 32 scopes with default scope names.

#### <a class="anchor" id="bkmrk--2"></a>Rename a Scope

Rename a scope by selecting the option Rename of the context menu in Scopes panel:

<div drawio-diagram="970"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676444598.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>#### <a class="anchor" id="bkmrk--4"></a>Assign Single Scope to a Node

Assign a single scope to the scope mask of a node by dragging the scope from the Scopes panel and dropping it over the desired node.   
The valid scope is highlighted.

# Edit Scope Mask of a Node

#### <a class="anchor" id="bkmrk--5"></a>Scope Mask of a Node in the Properties Panel

By default, the scope mask of a node contains all 32 scopes available. This can be inspected in:

<div class="contents" id="bkmrk-properties-panel%2C-on"><div class="contents"><div class="contents"><div class="textblock">- Properties Panel, on the item property "Scope Mask"
- Scopes Panel, since all scopes valid for the currently selected node are highlighted.

</div></div></div></div>#### <a class="anchor" id="bkmrk--6"></a>Select specific Scopes for a Node

Modify the scope mask of a node from the Properties panel by checking or unchecking the desired scopes from the Scope Mask combo box.

<div drawio-diagram="971"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676444667.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>#### <a class="anchor" id="bkmrk--8"></a>Select or Deselect all Scopes for a Node

Select all/Deselect all scopes from Properties panel.

<div drawio-diagram="3313"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682584802.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>#### <a class="anchor" id="bkmrk--10"></a>Invert a Scope Mask

Invert Scope option will perform a bitwise NOT operation on the bits of the selected scope mask.

#### <a class="anchor" id="bkmrk--11"></a>Apply Node Scope on Children

Apply a node scope mask on all children of the node by using the "Apply Node Scope on Children" option from the context menu.

<div drawio-diagram="3314"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682584825.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="textblock">  
</div></div>

# Controls

There is a detailed documentation about Controls and Behaviors in the General Concepts. It also includes how to use them in SceneComposer. Please refer to <span style="color:rgb(230,126,35);">[Controls and Behaviors](https://doc316en.candera.eu/books/controls-and-behaviors "Controls and Behaviors")</span> go to this part of the documentation.

# Databinding UI

Each bindable property have a button next to the property that allows to define a binding.

<div drawio-diagram="5102"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-01/drawing-4-1706144761.png" alt="drawing-4-1706144761.png"/></div>

<div class="contents" id="bkmrk-following-items-have"><div class="contents"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">Following items have bindable properties: Behaviors, Widgets, Behavior, Building and BlocksControls</p>

</dd></dl></div></div></div></div>When unbound, clicking the button shows the databinding dialog that allows to link the property to a data source. The binding dialog shows all matching datatypes in the editor:

<div drawio-diagram="6506"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-4-1723099519.png" alt="drawing-4-1723099519.png"/></div>

Data items displayed in the \[ Define Data Binding \] dialog are normally displayed in definition file order. By checking the \[ Sort Alphabetically \] checkbox in the dialog, data items are displayed in alphabetical order.

<div drawio-diagram="6509"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-4-1723099724.png" alt="drawing-4-1723099724.png"/></div>

You can also filter the data binding items displayed in the dialog's \[ Data Items \] by a combination of data type and read-only status. Filter items can be expanded and displayed by clicking on the right triangle icon in the dialog (see the orange frame below).

<div drawio-diagram="6508"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-4-1723099664.png" alt="drawing-4-1723099664.png"/></div>

- Checking \[ Select All \] will check all filtering data types and read-only statuses (if all are checked, uncheck them).
- Checking \[ Other \] will check non-primitive data types.

<p class="callout info">Note that an icon ( [![readonly.PNG](https://doc316en.candera.eu/uploads/images/gallery/2024-08/scaled-1680-/readonly.PNG)](https://doc316en.candera.eu/uploads/images/gallery/2024-08/readonly.PNG) ) indicating read-only status is displayed to the right of the read-only data item.</p>

The order in which the currently used items are displayed can also be changed in the Live Preview panel, which is displayed via \[ View &gt; Live Preview \] in the menu bar, by using the \[ Sort Alphabetically \] checkbox.

<div drawio-diagram="5105"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-01/drawing-4-1706144815.png" alt="drawing-4-1706144815.png"/></div>

Buttons for bound property items are displayed in blue (white for unbound buttons). To remove the bound setting, click on the button to display a dialog box, then click on the \[ Unbind \] button at the bottom of the dialog box.

<div drawio-diagram="5863"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-05/drawing-4-1716960073.png" alt="drawing-4-1716960073.png"/></div>

<div class="textblock" id="bkmrk--12">  
</div>#### Live Preview panel

You can check the behavior of the bound data binding items in the Scene Editor using the Live Preview panel. If the Live Preview panel is not displayed, check "Live Preview" on the menu bar under "View" to display it.

<div drawio-diagram="6494"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1722932760.png" alt="drawing-7-1722932760.png"/></div>

<div class="textblock" id="bkmrk-%281%29-on%EF%BC%8Foff%3A-toggles-"><div class="textblock"><table id="bkmrk-%281%29-%E3%82%AA%E3%83%B3%EF%BC%8F%E3%82%AA%E3%83%95%EF%BC%9A-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E5%8B%95" style="width:100%;"><colgroup><col style="width:5.68786%;"></col><col style="width:94.3121%;"></col></colgroup><tbody><tr><td>(1)</td><td>**ON／OFF:**

Toggles the Live Preview behavior ON/OFF.

</td></tr><tr><td>(2)</td><td>**Save:**

Saves the values ​​currently set in the Live Preview panel.

</td></tr><tr><td>(3)</td><td>**Load:**

Loads values ​​from an existing file.

</td></tr><tr><td>(4)</td><td>**Sort Alphabetically:**

Sorts the data binding items displayed in the Show Data Binding Items field alphabetically.

</td></tr><tr><td>(5)</td><td>**Search:**

Searches the data binding items displayed in the Show Data Binding Items field.

</td></tr><tr><td>(6)</td><td>**Data Binding Items Display Field:**

Displays all bound data binding items. Allows you to set values ​​for each data binding item.

When the Live Preview behavior is on, the values ​​you set are reflected in the Scene Editor.

</td></tr></tbody></table>

</div></div><p class="callout info">For an example of how to use the Live Preview panel, see also <span style="color:rgb(230,126,35);">["Operation confirmation using Live Preview panel"](https://doc316en.candera.eu/link/1178#bkmrk-4.-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%83%91%E3%83%8D%E3%83%AB%E3%81%AB%E3%82%88%E3%82%8B%E5%8B%95%E4%BD%9C%E7%A2%BA)</span></p>

# Template

The following items in a solution can be saved as templates. Using templates can help you streamline work when you need to use similar items repeatedly.

- Animation
- Node Attachment 
    - Appearance
    - AppearanceCollection
    - Material
    - RenderMode
    - Texture
    - UniformSetter
- ScriptComponent
- Scene

Saved templates are displayed in the Templates panel, which can be displayed by checking \[ View &gt; Libraries &gt; Templates \] on the menu bar.

<div drawio-diagram="6495"><img src="https://doc316en.candera.eu/uploads/images/drawio/2024-08/drawing-7-1722994067.png" alt="drawing-7-1722994067.png"/></div>

For details on how to save and use templates for each item, please refer to the following pages.

- <span style="color:rgb(230,126,35);">[Template Animations](https://doc316en.candera.eu/books/animation-design/chapter/template-animations#:~:text=Template%20Animations-,Template%20Animations,-Create%20an%20Animation)</span>
- <span style="color:rgb(230,126,35);">[Node Attachment Templates](https://doc316en.candera.eu/link/132#bkmrk-node-attachment-temp)</span>
- <span style="color:rgb(230,126,35);">[Script Component Templates](https://doc316en.candera.eu/link/78#bkmrk-script-component-tem)</span>
- <span style="color:rgb(230,126,35);">[Scene Templates](https://doc316en.candera.eu/link/41#bkmrk-page-title)</span>

<p class="callout info">You can import and use templates saved in another solution by using \[ Import &gt; Import From Solution... \] on the menu bar.</p>

# SceneComposer Translator Plugin

# Globalization License

If the Translator Plugin files are present but no translation features are accessible in Scene Composer, please ensure that the *Globalization* license is acquired. Refer to the menu *Help &gt; Licenses*.

# Create and Manage Cultures and Translatable Texts

This page describes the UI of each menu and feature for multi-languages settings. Please refer to the explanation on <span style="color: rgb(230, 126, 35);">[here](https://doc316en.candera.eu/books/getting-started/page/multi-languages-settings)</span> for details on how to configure multi-languages settings using this feature.

The translator plugin is fully integrated into SceneComposer. The SceneComposer toolbar provides an icon for opening the \[Culture Solution Options\] dialog as well as a drop-down menu for selecting an already created culture.

<div drawio-diagram="4439"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696313207.png" alt=""/></div>

In addition, the \[ Language \] menu on the menu bar contains the following five menus.

<div drawio-diagram="4430"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696311151.png" alt=""/></div>

- <span style="color: rgb(230, 126, 35);">[Culture Solution Option](#bkmrk-culture-solution-opt-1)</span>  
    Open the Culture Solution Option Dialog, where the user can add, edit or remove Culture as the multiple languages setting. By selecting a Culture in SceneComposer, you can switch between the displayed language of the solution. The translated texts displayed when selecting a Culture are configured in the Language Table.
- <span style="color: rgb(230, 126, 35);">[Export Languages](#bkmrk-import-and-export)</span>  
    Opens the *Select Cultures* dialog where you can select the languages you want to export and - after browsing to an export file path - you can export your selected languages in the format you prefer to the location you selected by pressing *Export*.
- <span style="color: rgb(230, 126, 35);">[Import Languages](#bkmrk-import-and-export)</span>  
    <div class="relative my-1 min-h-6">  
    </div><span style="background-color: rgb(251, 238, 184);">Opens the **Import Languages** dialog, where you can import a target file into the solution from any of the following sources: “Language Pack Source,” “Excel file,” or “XLIFF file (.xlf).”</span>
- <span style="color: rgb(230, 126, 35);">[Language Usage](#bkmrk-language-usage)</span>  
    Opens the Language Usage Dialog, where all Text Properties of the solution are listed. For those Text Properties that have a translatable text assigned, the *Text Id* and the *Text* value for the current culture are displayed. It is also possible to assign or unassign a translatable text for a Text Property.
- <span style="color: rgb(230, 126, 35);">[Language Table](#bkmrk-language-table)</span>  
    Opens the Language Table Dialog, where the user can add, edit or remove translatable texts. The Id of each translatable text is unique. The Text value for a certain culture can be accessed by selecting the respective culture in the Current Culture drop-down.

#### Culture Solution Option

To create text in different languages, a culture must be created. This is done by clicking on the Culture Solution Options button on the toolbar.

<div drawio-diagram="4438"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696313073.png" alt=""/></div>

See <span style="color: rgb(230, 126, 35);">[Solution Options &gt; Culture](https://doc316en.candera.eu/books/solution-handling/page/cultures)</span> for a detailed description of each item in the dialog that appears.


#### Language Table

Through the Language Table, you can configure the text that will be displayed when you select a language configured in Culture. Here, you can add, edit, or delete translated texts for each Culture. The translated text is the text that will be displayed according to the selected Culture in Scene Composer.

The settings can be accessed from the \[ Languages &gt; Language Table... \] menu bar. The settings are made in the Language Tables dialog, which can be opened from the menu bar \[ Languages&gt;Language Tables... \].

<div drawio-diagram="4437"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696313046.png" alt=""/></div>

<table border="1" id="bkmrk-%E6%A4%9C%E7%B4%A2%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89-%E6%A4%9C%E7%B4%A2%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%B8%E4%BB%BB%E6%84%8F%E3%81%AE%E6%96%87" style="width: 100%;"><tbody><tr><td style="width: 7.41244%;">(1)</td><td class="align-left" style="width: 17.0622%;">Search field</td><td style="width: 75.6489%;">You can search for a specific text entry by entering any string into the search field.

</td></tr><tr><td style="width: 7.41244%;">(2)</td><td class="align-left" style="width: 17.0622%;">**Unused only** check box</td><td style="width: 75.6489%;">When this check box is enabled, only text that is not assigned to a text object in the solution will be displayed.

</td></tr><tr><td style="width: 7.41244%;">(3)</td><td class="align-left" style="width: 17.0622%;">Culture Solution Option button

</td><td style="width: 75.6489%;">Click this icon to display the Cultures dialog box.</td></tr><tr><td style="width: 7.41244%;">(4)</td><td class="align-left" style="width: 17.0622%;">Select Cultures

</td><td style="width: 75.6489%;">Select a configured culture from the pull-down menu.</td></tr><tr><td style="width: 7.41244%;">(5)</td><td class="align-left" style="width: 17.0622%;">ID</td><td style="width: 75.6489%;">A unique identifier assigned to each translation text. It is automatically assigned when you add a translation text line by pressing the Add button.

</td></tr><tr><td style="width: 7.41244%;">(6)</td><td class="align-left" style="width: 17.0622%;">Text</td><td style="width: 75.6489%;">Sets the text to be displayed when using the culture currently selected in the Culture Selection pull-down menu.

</td></tr><tr><td style="width: 7.41244%;">(7)</td><td class="align-left" style="width: 17.0622%;">Translation Hint</td><td style="width: 75.6489%;">Allows you to enter a description for the translated text line.</td></tr><tr><td style="width: 7.41244%;">(8)</td><td class="align-left" style="width: 17.0622%;">Master Text</td><td style="width: 75.6489%;">Displays the text of the master culture. This item is not displayed when a master culture is selected in the culture selection pull-down menu.

</td></tr><tr><td style="width: 7.41244%;">(9)</td><td class="align-left" style="width: 17.0622%;">Add/Delete button</td><td style="width: 75.6489%;">This button allows you to add/delete language table setting rows. These buttons are only enabled when the master culture is selected in the \[ Current Culture \] field.

</td></tr><tr><td style="width: 7.41244%;">(10)</td><td class="align-left" style="width: 17.0622%;">Selected Text Assignments</td><td style="width: 75.6489%;">Displays the node to which the translated text line has been set. </td></tr><tr><td style="width: 7.41244%;">(11)</td><td class="align-left" style="width: 17.0622%;">Close button</td><td style="width: 75.6489%;">Closes the Localization Table dialog box.</td></tr></tbody></table>

#### Language Usage

For editing the texts' properties, Scene Composer provides the Text Properties Dialog, which can be opened via the menu *Language &gt; Language Usage...*.

This dialog lists all Text Properties of the solution. For those Text Properties that have a translatable text assigned, the *Text Id* and the *Text* value for the current culture are displayed. The current culture can be changed in the drop-down menu on the right. If necessary, the *Solution Options: Cultures* dialog can be opened with the globe icon on the left of the drop-down menu.

When pressing *Save*, the changes made to the Text Properties will be applied to the solution.

<div drawio-diagram="4436"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696312788.png" alt=""/></div>

<div class="contents" id="bkmrk--10"><div class="contents">  
</div></div>- When pressing the Assign button on the bottom of the dialog, the Language Table Selection dialog is opened where a text can be chosen from the list.
- Assigning texts to Text Properties can either be done in the Language Usage Dialog or in the Text Properties Panel.

The *Language Table Selection* dialog can also be opened when editing a Text property by clicking on the icon *Select template for item*.

<div drawio-diagram="4435"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-10/drawing-4-1696312677.png" alt=""/></div>

<div class="contents" id="bkmrk--12"><div class="contents">  
</div></div>#### Switching Cultures

If cultures and texts have been created and the texts are assigned to Text properties, the culture can be switched using the drop-down in the toolbar. As soon as another culture is chosen, the solution will be displayed in the other language.

<div class="contents" id="bkmrk-if-there-is-no-text-"><div class="textblock"><dl class="note"><dd><p class="callout info">If there is no text configured for a certain language, the *Text Id* will be displayed instead. Using this id, the missing text can easily be identified and found in the Language Table using the search function.  
</p>

<div drawio-diagram="3327"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585479.png" alt=""/></div>

</dd></dl></div></div>

# Import and Export of Language Packs

#### <span style="background-color: rgb(251, 238, 184);">Importing Language Data</span>

<span style="background-color: rgb(251, 238, 184);">You can import the solution’s cultures and language tables from a Language Pack Source (.lps), an Excel file (.xlsx/.xls), or an XLIFF file (.xlf). Start the import from \[ Language &gt; Import Languages \], choose the source file type, and then select the target file.</span>

<p class="callout info"><span style="background-color: rgb(251, 238, 184);">If you choose XLIFF (.xlf), select and import the individual .xlf files prepared for each culture (specify the files for each language/culture separately).</span></p>

<div drawio-diagram="8911"><img src="https://doc316en.candera.eu/uploads/images/drawio/2026-01/drawing-4-1769071075.png" alt=""/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>The final step of the language import process is to show the differences between the texts in the import file and the texts in solution. There are three possible actions:

<div class="contents" id="bkmrk-add-%3A-indicates-that"><div class="contents"><div class="contents"><div class="textblock">- **Add** : Indicates that the language does not already exist in the solution and will be imported from the file.
- **Merge**: Means that the language already exists in the solution and only the content differs. New texts will be added and already existing texts will be updated.
- **Drop** : When unchecking a language entry in the Translatable Text Differences dialogue, the Action changes automatically from Add/Merge to Drop. If the initial action was *Add*, this means that the language will not be added to the solution. If the initial action was *Merge*, this means its texts will not be updated and new texts from the import files will not be added to this language in the solution.

</div><div class="textblock"><dl class="note"><dd><p class="callout info">The *Drop* action does not mean that the language will be removed from the solution. The removal of a language can be done from *File &gt; Solution Options* in the *Cultures* tab.</p>

</dd></dl></div></div></div></div><div drawio-diagram="3329"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585540.png" alt=""/></div>

<div class="contents" id="bkmrk--2"><div class="contents"><div class="textblock">  
</div></div></div>#### <a class="anchor" id="bkmrk--10"></a>Export of Language Pack Sources

The translatable texts of the current solution can be exported by going to *Language &gt; Export Languages...*, which opens the *Select Cultures* dialog.

<div drawio-diagram="1006"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676445765.png" alt=""/></div>

<div class="contents" id="bkmrk--4"><div class="contents"><div class="textblock">  
</div></div></div>- The *Select Cultures* dialog allows the choice of which cultures to be exported or not.
- <span style="background-color: rgb(251, 238, 184);">Languages can be exported to a Language Pack Source (.lps), an Excel file (.xlsx/.xls), or an XLIFF file (.xlf).</span>
- Click the *Browse* button to select the *Export file path*, choose the format in the *Save as type* drop down and click *Save*.
- Click the *Export* button to finalize the languages export.

Please note that only the texts that have a correspondent in the master language texts, considering their Id, are included in the export, all the others being ignored. In this case warnings will be added to the Output tab in Scene Composer.

<div class="contents" id="bkmrk-exporting-languages-"><div class="contents"><div class="textblock">- Exporting languages as Language Pack Source file creates a .LPS file that contains the master language and all the other languages available in the solution. The exported .LPS file can be compiled and appended using the CGI Studio Language Appender.
- <span style="background-color: rgb(251, 238, 184);">When exporting in XLIFF format, a separate .xlf file is generated for each language (culture). The culture identifier is appended to the file name: the Master language is exported as `Languages_00.xlf`, and each language as `Languages_{culture}.xlf` (e.g., `en`, `ja-JP`).</span>
- Exporting languages as Excel document creates an Excel file that contains one sheet for the master language (named Master) and a sheet for each of the other languages in the solution having an identical name with the respective culture (e.g. de-DE, en-US, fr-FR). Each sheet has a header on the first row, with 3 columns: *Id*, *Text*, and *Translation Hint*. The following rows contain the translatable texts.

</div></div></div><div drawio-diagram="3330"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585591.png" alt=""/></div>

<div class="contents" id="bkmrk--6"><div class="textblock">  
</div></div>

# Adorners

CGI Studio offers the option to use adorners for an easy manipulation of the nodes inside layouters. The adorners gizmos can affect the following properties: Vertical Alignment, Horizontal Alignment, Size and Margin(Left, Top, Right, Bottom) in the Layout category and the Position in the Transformations category. This editing can now be done using the mouse and keyboard without having to manually change the node properties values.

#### <a class="anchor" id="bkmrk--16"></a>Enable layout edit mode

There are two ways to enter in the layout edit mode. The first one is to click on the dedicated icon from the menu bar:

<div drawio-diagram="3331"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585625.png" alt="drawing-4-1682585625.png"/></div>

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">  
</div></div></div>The second option is to press the 'L' key.

In order for the adorners gizmo to be active, it is also required to meet at least one of the following conditions:

<div class="contents" id="bkmrk-the-parent-of-the-no"><div class="contents"><div class="textblock">- the parent of the node is a Layouter of type BaseLine, Grid, Overlay, Stack or DockPanel
- the node is a 2D Bitmap Node with a 9-Patch image on it
- the node is a Canvas Sprite and has a Texture with a 9-Patch image set on it
- the node is a 2D TextNode or a 3D Canvas Text.

</div></div></div>So for 9-Patch images and text nodes, the gizmo works even when the node is outside of a layouter. For other types of nodes, the effect of selecting the adorners gizmo will be the same as selecting clicking on the Select edit mode.

When the adorners gizmo is active, the element is surounded by a dashed rectangle with 8 active points on its corners and middle of edges. If node is inside a layouter 4 small *chain* buttons also appear on the edges of the layout area. The orange circle indicates the Pivot Point. The yellow rectangle represents the layout area which is computed based on the layouter type and its properties.

<div drawio-diagram="3332"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585646.png" alt="drawing-4-1682585646.png"/></div>

<div class="contents" id="bkmrk-in-3d-the-usage-of-t"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">In 3D the usage of the gizmo does not change the Z axis values on any of the transformable properties.</p>

</dd></dl></div></div></div>#### <a class="anchor" id="bkmrk--19"></a>Moving nodes

When hovering over the node, the cursor changes.

<div drawio-diagram="3333"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585658.png" alt="drawing-4-1682585658.png"/></div>

<div class="contents" id="bkmrk--3"><div class="contents"><div class="textblock">  
</div></div></div>The adorners gizmo allows to drag the object around, just like in translation mode. If inside a layouter, the Margin property of the node is changed together with its Position. It is also possible to move the object using the keyboard by holding the Shift key and then pressing any of the arrow keys.

<div class="contents" id="bkmrk-while-moving-an-obje"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">While moving an object using the adorners gizmo, if the object is dragged over another layouter, the user will not have the option to switch the layout parent of the dragged object.</p>

</dd><dd></dd></dl></div></div></div>#### <a class="anchor" id="bkmrk--21"></a>Aligning and resizing nodes

The active points on the dashed rectangle can be dragged to change the Layout Size and Margin and/or Position of the node. Pressing the Shift key while dragging active points causes the gizmo to function differently. For example if the Shift key is pressed when dragging upward the upper middle active point of a node inside a stack layouter, the effect will be the same as if manually changing the Layout Size property and keeping the same Position. If the Shift key is not pressed and the upper middle active node is dragged upward, then both the Layout Size and Position of the node will be modified.

<div class="contents" id="bkmrk-the-effect-of-the-sh"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The effect of the Shift key and the functioning of the adorners in general depends on whether the size properties of the layouter and its children are auto or not and on the layout type. The current document does not aim to explain all the possible combinations of properties.</p>

</dd></dl></div></div></div>The chain buttons allow the user to set the desired Layout Vertical Alignment and/or Horizontal Alignment. By default all chains are enabled (closed). Breaking (opening) one chain (the left for example) will close the one opposite to it (the right one in the example), unless the Shift key is pressed. So in order to be able to open both left and right chains, the Shift key needs to be used.

<div class="contents" id="bkmrk-left-chain-right-cha"><div class="contents"><div class="textblock"><table style="width:50.8642%;"><tbody><tr><td style="width:21.8978%;">**Left chain**</td><td style="width:37.0054%;">**Right chain**</td><td style="width:41.0968%;">**Horizontal Alignment**</td></tr><tr><td style="width:21.8978%;">*closed*</td><td style="width:37.0054%;">*closed*</td><td style="width:41.0968%;">*Stretch*</td></tr><tr><td style="width:21.8978%;">*closed*</td><td style="width:37.0054%;">*open*</td><td style="width:41.0968%;">*Left*</td></tr><tr><td style="width:21.8978%;">*open*</td><td style="width:37.0054%;">*closed*</td><td style="width:41.0968%;">*Right*</td></tr><tr><td style="width:21.8978%;">*open*</td><td style="width:37.0054%;">*open (use Shift key)*</td><td style="width:41.0968%;">*Center*</td></tr></tbody></table>

</div></div></div>The same logic goes for the top and bottom chains.

<div drawio-diagram="566"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361448.png" alt="drawing-4-1676361448.png"/></div>

<div drawio-diagram="568"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361532.png" alt="drawing-4-1676361532.png"/></div>

<div class="textblock" id="bkmrk--6"></div><div class="textblock" id="bkmrk--7"><div drawio-diagram="569"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361569.png" alt="drawing-4-1676361569.png"/></div>

</div><div class="contents" id="bkmrk--8"><div class="contents"><div class="textblock">  
</div></div></div>When the node is inside a layouter, the chains buttons have values next to them. If the chain is open, then no value is shown.

<div class="contents" id="bkmrk-the-values-next-to-t"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">The values next to the chain nodes indicate the effective distance in pixels between the layouter area edges (arrange area) and the edges of the dashed rectangle of the node.</p>

</dd></dl></div></div></div>These values are always positive and are not the same as the values of the Margin properties which can be negative. The chain values stay the same even when the scale of the parent layouter or its ancestors changes.

<div class="contents" id="bkmrk-if-the-layoutdirecti"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">If the LayoutDirection of the parent layouter is changed, then the behavior of the gizmo is going to be adapted according to the new direction. For instance, if the LayoutDirection of the parent layouter changes from LeftToRightDirection to RightToLeftDirection, the gizmo functionality will be horizontally reversed. So if a node was previously Left aligned, it will become Righ aligned.</p>

</dd></dl></div></div></div><div drawio-diagram="3335"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-04/drawing-4-1682585777.png" alt="drawing-4-1682585777.png"/></div>

<p class="callout info">The current culture Text Direction also affects the the LayoutDirection of text nodes. When changing the current culture from a left to right culture to a right to left one, an initially Left aligned node, will become Right aligned.  
</p>

<div drawio-diagram="575"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361780.png" alt="drawing-4-1676361780.png"/></div>

<div class="contents" id="bkmrk-while-editing-the-no"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">While editing the node using the adorners the status bar shows the values of the property being modified (Size when dragging active points, Position when moving the node inside the layout area).</p>

</dd></dl></div></div></div>#### <a class="anchor" id="bkmrk--27"></a>Snapping of 2D Nodes

A prerequisite for this functionality is to enable the Snap to Objects option in *File -&gt; Preferences -&gt; Editor -&gt; 2D* . When in layout edit mode, the effect will be to align the dragged object to the layout area as well as to other sibbling nodes in the same layout space based on the snapping sensitivity.

<div drawio-diagram="578"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361850.png" alt="drawing-4-1676361850.png"/></div>

<div class="contents" id="bkmrk--12"><div class="contents"><div class="textblock">  
</div></div></div>In the above image the horizontal blue line represents the snapping of the text node in the right to the lower edge of the layout area. The vertical blue line represents the snapping of the text node in the right relatively to the left text node.

<div drawio-diagram="580"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361874.png" alt="drawing-4-1676361874.png"/></div>

<div class="contents" id="bkmrk-if-the-node-has-rota"><div class="contents"><div class="textblock"><dl class="note"><dt></dt><dd><p class="callout info">If the node has rotation, it will snap only relatively to other nodes having the same rotation.</p>

</dd><dd></dd></dl></div></div></div><div drawio-diagram="582"><img src="https://doc316en.candera.eu/uploads/images/drawio/2023-02/drawing-4-1676361922.png" alt="drawing-4-1676361922.png"/></div>

<div class="contents" id="bkmrk--15"><div class="textblock">  
</div></div>

# Embedded Player

#### Overview

The Embedded Player is a runtime environment for validating solutions created or in progress in Scene Composer. The Embedded Player operates as a panel in Scene Composer, allowing you to view the Scene Editor and Embedded Player side by side, and instantly view updates to your Scene Composer solution in the Embedded Player panel.

<div drawio-diagram="8514"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-08/drawing-7-1754977241.png" alt="drawing-7-1754977241.png"/></div>

The Embedded Player consists of two panels: "Player Panel" and "CGI Panel".

The Player Panel is used to display the solution being created in Scene Composer. It allows you to view the nodes created in Scene Composer and their associated actions, such as 2D/3D nodes, animations, behavior effects, and scene transitions using transitions.

The CGI Panel is used to control the display of the Player Panel. The Player Panel UI allows you to easily switch displayed scenes, play animations, zoom in/out, and rotate the display. You can also run simulations of node values, transitions, state machines, and more.

<div drawio-diagram="8515"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-08/drawing-7-1754979114.png" alt="drawing-7-1754979114.png"/></div>

---

##### Embedded Player UI

##### Player panel

The Player panel can be displayed by selecting \[ View &gt; Embedded Player &gt; Player \] from the menu bar, or click the \[ Player/EmbeddedPlayer \] icon on the toolbar after selecting "Embedded Player". Scroll bars will appear on the right and bottom of the panel depending on the panel size.

<div drawio-diagram="8516"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-08/drawing-7-1754979219.png" alt="drawing-7-1754979219.png"/></div>

##### CGI panel

The CGI panel, similar to the Player panel, can be displayed by selecting \[ View &gt; Embedded Player &gt; CGIPanel \] from the menu bar, or click the \[ Player/EmbeddedPlayer \] icon on the toolbar after selecting "Embedded Player".

This panel controls the display of the Player panel.

<div drawio-diagram="8529"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-08/drawing-7-1755496881.png" alt="drawing-7-1755496881.png"/></div>

<table id="bkmrk-%281%29-%E3%82%AB%E3%83%AB%E3%83%81%E3%83%A3%E3%83%BC-%E8%A8%80%E8%AA%9E%E3%81%AE%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%92%E5%8F%AF%E8%83%BD" style="border-collapse:collapse;width:94.881%;height:650.281px;"><colgroup><col style="width:5.90657%;"></col><col style="width:20.8522%;"></col><col style="width:19.4724%;"></col><col style="width:53.7688%;"></col></colgroup><tbody><tr style="height:29.7969px;"><td style="height:29.7969px;">(1)</td><td style="height:29.7969px;">Culture</td><td colspan="2" style="height:29.7969px;">Allows you to switch languages. If used, Globalization must be enabled.  
</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">(2)</td><td style="height:46.5938px;">Animation</td><td colspan="2" style="height:46.5938px;">All playable animations will be listed in the drop-down menu. Select an animation from the drop-down menu and click the \[ Start \] icon to play the animation.  
</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">(3)</td><td style="height:29.7969px;">Value generation</td><td colspan="2" style="height:29.7969px;">Starts/Stops the Value Generator simulation.</td></tr><tr><td>(4)</td><td>Rendering process</td><td colspan="2">Run or Pause the processing of rendering components.</td></tr><tr style="height:63.3906px;"><td style="height:63.3906px;">(5)</td><td style="height:63.3906px;">Zooming</td><td colspan="2" style="height:63.3906px;">This function is created to assist in the development of high-resolution or low-resolution HMIs. It allows you to zoom in on low-resolution HMIs and zoom out on high-resolution HMIs.  
</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">(6)</td><td style="height:46.5938px;">Rotae</td><td colspan="2" style="height:46.5938px;">Simulates physical display rotation. The toolbar icon allows you to rotate the Player panel display clockwise.  
</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">(7)</td><td style="height:46.5938px;">Scene view panel</td><td colspan="2" style="height:46.5938px;">All scenes included in the solution are listed. To enable any scene, select the corresponding checkbox.  
</td></tr><tr style="height:35.3906px;"><td rowspan="10" style="height:387.516px;">(8)  
</td><td rowspan="10" style="height:387.516px;">Function tab  
</td><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Value Generator](https://doc316en.candera.eu/books/player/page/value-generator)</span></td><td style="height:35.3906px;">You can simulate view elements changing their values without implementing any logic.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Controls](https://doc316en.candera.eu/books/player/page/controls-view)</span></td><td style="height:35.3906px;">Displays all controls for the selected scene. Selecting a control opens a table with all properties and their values. Changing the value will change it in the application.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Transitions](https://doc316en.candera.eu/books/player/page/transitions-view)</span></td><td style="height:35.3906px;">You can trigger transitions.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Data Bindings](https://doc316en.candera.eu/books/player/page/data-bindings)</span></td><td style="height:35.3906px;">You can load predefined data binding files to customize the layout and perform simulations with Value Generator.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Statistics](https://doc316en.candera.eu/books/player/page/statistics-view)</span></td><td style="height:35.3906px;">Memory consumption statistics are displayed.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[State Machine](https://doc316en.candera.eu/books/player/page/state-machine-view)</span></td><td style="height:35.3906px;">The states of all State Machines are displayed.</td></tr><tr style="height:35.3906px;"><td style="height:35.3906px;"><span style="color:rgb(230,126,35);">[Configration](https://doc316en.candera.eu/books/player/page/configuration-view)</span></td><td style="height:35.3906px;">Information about the features enabled in the Embedded Player is displayed. </td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;"><span style="color:rgb(230,126,35);">[Snapshots](https://doc316en.candera.eu/books/player/page/snapshots-view)</span></td><td style="height:46.5938px;">You can create snapshots on the host. The last snapshot created is displayed.</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;"><span style="color:rgb(230,126,35);">[Logging](https://doc316en.candera.eu/books/player/page/logging-view)</span></td><td style="height:46.5938px;">You can also enable or disable logging and set the log level for the main area.</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;"><span style="color:rgb(230,126,35);">[Layout Monitor](https://doc316en.candera.eu/books/player/page/layout-monitor-4Tv)</span></td><td style="height:46.5938px;">The relevant areas calculated by the layouter are displayed as an overlay on top of the application rendering.</td></tr></tbody></table>

<p class="callout info">The Embedded Player has basically the same functions as the Player, so for some explanations in the documentation, please refer to the link to the Player page.</p>

---

#### Basic Operation

##### Embedded Player Playback

- First, click the \[ Player/EmbeddedPlayer \] icon on the toolbar after selecting "Embedded Player".  
    
    - Once the Player Panel and CGI Panel are launched, Embedded Player playback is complete.  
        <div drawio-diagram="8763"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-7-1763365030.png" alt="drawing-7-1763365030.png"/></div>
        
        <p class="callout info">If you want the currently edited scene to be displayed when launching the Embedded Player, select \[ Generate and Play Selected Scene \] from the pull-down menu located to the right of the \[ Play selected scenario... \] icon.</p>

##### Stopping Embedded Player

- While the Embedded Player is running, click the \[ Close Player \] icon on the toolbar. 
    - The Embedded player will stop and the Player panel and CGI Panel will close.  
        <div drawio-diagram="8764"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-7-1763365075.png" alt="drawing-7-1763365075.png"/></div>

##### Updating Embedded Player

- While the Embedded Player is playing, click the \[ Refresh \] icon on the toolbar.  
    
    - Updates made to the solution while the Embedded Player is playing will be reflected in the Embedded Player playback.  
        <div drawio-diagram="8765"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-11/drawing-7-1763365104.png" alt="drawing-7-1763365104.png"/></div>
        
        <p class="callout info">Using Embedded Player Update allows you to immediately see updates to your solution in the Embedded Player. Also, unlike playback using the Player, there is no need to save your solution before playback.</p>

---