    

 ## On this page

  

 

 # dynamic\_scene\_graph

 Last update: 16.07.2025 

<a id="l00001" name="l00001"></a> 1 // \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

<a id="l00002" name="l00002"></a> 2 // Copyright 2022 ANSYS, Inc.

<a id="l00003" name="l00003"></a> 3 // All Rights Reserved.

<a id="l00004" name="l00004"></a> 4 //

<a id="l00005" name="l00005"></a> 5 // Restricted Rights Legend

<a id="l00006" name="l00006"></a> 6 //

<a id="l00007" name="l00007"></a> 7 // Use, duplication, or disclosure of this

<a id="l00008" name="l00008"></a> 8 // software and its documentation by the

<a id="l00009" name="l00009"></a> 9 // Government is subject to restrictions as

<a id="l00010" name="l00010"></a> 10 // set forth in subdivision \[(b)(3)(ii)\] of

<a id="l00011" name="l00011"></a> 11 // the Rights in Technical Data and Computer

<a id="l00012" name="l00012"></a> 12 // Software clause at 52.227-7013.

<a id="l00013" name="l00013"></a> 13 // \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

<a id="l00014" name="l00014"></a> 14 

<a id="l00015" name="l00015"></a> 15 syntax = "proto3";

<a id="l00016" name="l00016"></a> 16 

<a id="l00017" name="l00017"></a> 17 //@ingroup grpc

<a id="l00018" name="l00018"></a> 18 // Dynamic scene graph gRPC service definition

<a id="l00019" name="l00019"></a> 19 

<a id="l00020" name="l00020"></a> 20 package ensightservice;

<a id="l00021" name="l00021"></a> 21 

<a id="l00022" name="l00022"></a> 22 //@defgroup DSG DynamicSceneGraphService

<a id="l00023" name="l00023"></a> 23 //@ingroup grpc

<a id="l00024" name="l00024"></a> 24 //@brief The dynamic scene graph gRPC service

<a id="l00025" name="l00025"></a> 25 //

<a id="l00026" name="l00026"></a> 26 // The dynamic scene graph gRPC service provides a mechanism by which a client

<a id="l00027" name="l00027"></a> 27 // application can attach to a running EnSight session and read the current scene

<a id="l00028" name="l00028"></a> 28 // geometry. The API allows the client application to track the client scene

<a id="l00029" name="l00029"></a> 29 // graph state. It supports both complete and incremental updates. For incremental

<a id="l00030" name="l00030"></a> 30 // updates, the EnSight client tracks the remote scene graph state specific to each

<a id="l00031" name="l00031"></a> 31 // active scene stream.

<a id="l00032" name="l00032"></a> 32 //

<a id="l00033" name="l00033"></a> 33 // The EnSight distribution includes a simple example client written in Python. The

<a id="l00034" name="l00034"></a> 34 // renderer in the example client is not complete (e.g. it does not support all of 

<a id="l00035" name="l00035"></a> 35 // the texturing modes or two sided lighting), but it does demonstrate how a client

<a id="l00036" name="l00036"></a> 36 // should interpret the various messages that constitute a scene update operation.

<a id="l00037" name="l00037"></a> 37 // This example is located in the same directory (ensightXXX/site\_preferences/extensions/grpc) 

<a id="l00038" name="l00038"></a> 38 // as this .proto file and is named dynamic\_scene\_graph\_example\_client.py. To

<a id="l00039" name="l00039"></a> 39 // run the example client (Windows example, ANSYS 2021 R1 distribution), first start 

<a id="l00040" name="l00040"></a> 40 // EnSight with the following command line:

<a id="l00041" name="l00041"></a> 41 // \\code{.unparsed}

<a id="l00042" name="l00042"></a> 42 // ensight.bat -grpc\_server 12345

<a id="l00043" name="l00043"></a> 43 // \\endcode

<a id="l00044" name="l00044"></a> 44 // Then in another shell window run the Python script using the EnSight Python

<a id="l00045" name="l00045"></a> 45 // interpreter:

<a id="l00046" name="l00046"></a> 46 // \\code{.unparsed}

<a id="l00047" name="l00047"></a> 47 // cpython.bat dynamic\_scene\_graph\_example\_client.py

<a id="l00048" name="l00048"></a> 48 // \\endcode

<a id="l00049" name="l00049"></a> 49 // Load some data into the EnSight session and then select "Update" from the

<a id="l00050" name="l00050"></a> 50 // example client GUI menus to initiate a scene refresh. By default, the example

<a id="l00051" name="l00051"></a> 51 // client will send a SceneClientCommand (SceneClientCommand::ClientCommandType::INIT)

<a id="l00052" name="l00052"></a> 52 // message and EnSight will respond with a sequence of update messages. If the File-&gt;Allow push updates

<a id="l00053" name="l00053"></a> 53 // option is enabled in the sample client, it will allow EnSight to push scene graph updates

<a id="l00054" name="l00054"></a> 54 // in asynchronous fashion. An EnSight initiated scene update can be started from the Python 

<a id="l00055" name="l00055"></a> 55 // interpreter in the EnSight client using this code fragment:

<a id="l00056" name="l00056"></a> 56 // \\code{.python}

<a id="l00057" name="l00057"></a> 57 // import enspyqtgui\_int

<a id="l00058" name="l00058"></a> 58 // enspyqtgui\_int.dynamic\_scene\_graph\_command("dynamicscenegraph://localhost/client/update")

<a id="l00059" name="l00059"></a> 59 // \\endcode

<a id="l00060" name="l00060"></a> 60 // This update will be seen by all current dynamic scene graph sessions that have the 

<a id="l00061" name="l00061"></a> 61 // allow\_spontaneous flag set in their SceneClientCommand INIT messages.

<a id="l00062" name="l00062"></a> 62 //

<a id="l00063" name="l00063"></a> 63 // EnSight will export all of the geometry visible in the viewport 0 as the scene

<a id="l00064" name="l00064"></a> 64 // contents. Individual parts may have the metadata tag "ENS\_DSG\_HINTS" set to a 

<a id="l00065" name="l00065"></a> 65 // string. If the string contains the substring "HIDE", that part will not be

<a id="l00066" name="l00066"></a> 66 // included in the export, even if it is visible in viewport 0.

<a id="l00067" name="l00067"></a> 67 //

<a id="l00068" name="l00068"></a> 68 // @section entities Overview of the dynamic scene graph API entities

<a id="l00069" name="l00069"></a> 69 // &lt;hr&gt;

<a id="l00070" name="l00070"></a> 70 //

<a id="l00071" name="l00071"></a> 71 // The gRPC API update commands define a collection of entities that describe the

<a id="l00072" name="l00072"></a> 72 // scene graph. These entities refer to each other using entity IDs. The IDs are

<a id="l00073" name="l00073"></a> 73 // a proxy for pointers. An individual entity can be updated (one SceneUpdateCommand 

<a id="l00074" name="l00074"></a> 74 // message for each update message) or destroyed by SceneUpdateCommand messages.

<a id="l00075" name="l00075"></a> 75 // All addressable entities have a 64bit "id" associated with them. An "update" command 

<a id="l00076" name="l00076"></a> 76 // is used to create an entity and to update its attributes. 

<a id="l00077" name="l00077"></a> 77 //

<a id="l00078" name="l00078"></a> 78 // An incremental update will only send updates for the entities that have changed

<a id="l00079" name="l00079"></a> 79 // since the previous update. If an entity no longer exists after this update, the

<a id="l00080" name="l00080"></a> 80 // entity ID will be sent in a DeleteID command.

<a id="l00081" name="l00081"></a> 81 //

<a id="l00082" name="l00082"></a> 82 // The currently defined entities are:

<a id="l00083" name="l00083"></a> 83 //

<a id="l00084" name="l00084"></a> 84 // Entity | Description

<a id="l00085" name="l00085"></a> 85 // ------ | -----------

<a id="l00086" name="l00086"></a> 86 // Scene | Top of the tree of entities. It may contain View and Variable entities.

<a id="l00087" name="l00087"></a> 87 // View | Contains timestep and camera information for a tree of geometry. It may contain Group and Part entities.

<a id="l00088" name="l00088"></a> 88 // Group | Child of a View or another Group. It may contain Part and Group entities. Includes a 4x4 matrix transform and arbitrary attributes.

<a id="l00089" name="l00089"></a> 89 // Part | Child of a Group, parent to Geom entities. Defines a "mesh" and display attributes.

<a id="l00090" name="l00090"></a> 90 // Geom | Child of a Part. Storage for the arrays that define a block of a geometry. Note: a single Geom will have connectivity defining either be LINES or TRIANGLES, not both. Includes: Coordinates, Connectivity, current variable data, edge flags 

<a id="l00091" name="l00091"></a> 91 // Variable | Defines variable display properties: Nodal, Elemental, ranges, interpolation, etc. Child of a Scene.

<a id="l00092" name="l00092"></a> 92 //

<a id="l00093" name="l00093"></a> 93 // The View, Group, Part, Geom and Variable entities all include a hash field. This string

<a id="l00094" name="l00094"></a> 94 // is unique to the contents of the update message. Thus, if two messages of the same type

<a id="l00095" name="l00095"></a> 95 // have the same hash, they can be considered to have identical contents.

<a id="l00096" name="l00096"></a> 96 //

<a id="l00097" name="l00097"></a> 97 // @subsection updateprocess The entity update gRPC message sequence

<a id="l00098" name="l00098"></a> 98 // &lt;hr&gt;

<a id="l00099" name="l00099"></a> 99 //

<a id="l00100" name="l00100"></a> 100 // The update process is initiated by the client application unless a SceneClientCommand message 

<a id="l00101" name="l00101"></a> 101 // has enabled spontaneous updates. A spontaneous update starts with step 2.

<a id="l00102" name="l00102"></a> 102 //

<a id="l00103" name="l00103"></a> 103 // 1. Client sends a SceneClientCommand (SceneClientCommand::ClientCommandType::INIT)

<a id="l00104" name="l00104"></a> 104 // message to the EnSight gRPC service of the type SceneClientInit. This triggers 

<a id="l00105" name="l00105"></a> 105 // the update sequence.

<a id="l00106" name="l00106"></a> 106 //

<a id="l00107" name="l00107"></a> 107 // 2. EnSight sends a SceneUpdateCommand UpdateSceneBegin (SceneUpdateCommand::SceneUpdateCommandType::UPDATE\_SCENE\_BEGIN) 

<a id="l00108" name="l00108"></a> 108 // message to the client.

<a id="l00109" name="l00109"></a> 109 //

<a id="l00110" name="l00110"></a> 110 // 3. EnSight sends a series of SceneUpdateCommand messages to the client. These messages

<a id="l00111" name="l00111"></a> 111 // can be of these types (DeleteID, UpdatePart, UpdateGroup, UpdateGeom, UpdateVariable, UpdateView).

<a id="l00112" name="l00112"></a> 112 // Note there should be no assumption about the order of these messages.

<a id="l00113" name="l00113"></a> 113 //

<a id="l00114" name="l00114"></a> 114 // 4. EnSight sends a final SceneUpdateCommand UpdateSceneEnd (SceneUpdateCommand::SceneUpdateCommandType::UPDATE\_SCENE\_END) 

<a id="l00115" name="l00115"></a> 115 // message to the client, signifying the end of a scene graph update.

<a id="l00116" name="l00116"></a> 116 //

<a id="l00117" name="l00117"></a> 117 // @subsection entitydiagram Entity relationship diagram

<a id="l00118" name="l00118"></a> 118 // &lt;hr&gt;

<a id="l00119" name="l00119"></a> 119 //

<a id="l00120" name="l00120"></a> 120 // \\image html ./dynamic\_scene\_graph\_service\_entities.svg

<a id="l00121" name="l00121"></a> 121 //

<a id="l00123" name="l00123"></a> 123 service DynamicSceneGraphService {

<a id="l00124" name="l00124"></a> 124 //@addtogroup DSG

<a id="l00126" name="l00126"></a> 126  

<a id="l00127" name="l00127"></a> 127 // @brief Start a new dynamic scene graph stream

<a id="l00128" name="l00128"></a> 128 //

<a id="l00129" name="l00129"></a> 129 // This gRPC call opens a bi-directional stream between the client application and the

<a id="l00130" name="l00130"></a> 130 // EnSight gRPC server. The client application can make requests for updates to the

<a id="l00131" name="l00131"></a> 131 // current scene graph by sending SceneClientCommand messages. The EnSight server

<a id="l00132" name="l00132"></a> 132 // responds with a series of SceneUpdateCommand messages.

<a id="l00133" name="l00133"></a> 133 // @param SceneClientCommand A stream of SceneClientCommand objects

<a id="l00134" name="l00134"></a> 134 // @return SceneUpdateCommand A stream of SceneUpdateCommand messages from the EnSight client

<a id="l00135" name="l00135"></a>[ 135](group___d_s_g.xhtml#ga013fc67ee73abc7c3d7ce82115972b67) rpc [GetSceneStream](group___d_s_g.xhtml#ga013fc67ee73abc7c3d7ce82115972b67) (stream [SceneClientCommand](structensightservice_1_1_scene_client_command.xhtml)) returns (stream [SceneUpdateCommand](structensightservice_1_1_scene_update_command.xhtml)) {};

<a id="l00136" name="l00136"></a> 136 

<a id="l00137" name="l00137"></a> 137 // @brief Get the server version of the dynamic scene graph stream

<a id="l00138" name="l00138"></a> 138 // @param versionrequest dummy argument

<a id="l00139" name="l00139"></a> 139 // @return VersionReply the API version currently supported by the server

<a id="l00140" name="l00140"></a>[ 140](group___d_s_g.xhtml#ga52fdddcd2932b5fd9a19d0a740d24680) rpc [GetAPIVersion](group___d_s_g.xhtml#ga52fdddcd2932b5fd9a19d0a740d24680) ([VersionRequest](structensightservice_1_1_version_request.xhtml)) returns ([VersionReply](structensightservice_1_1_version_reply.xhtml)) {};

<a id="l00141" name="l00141"></a> 141 

<a id="l00143" name="l00143"></a> 143 }

<a id="l00145" name="l00145"></a> 145 

<a id="l00146" name="l00146"></a> 146 

<a id="l00147" name="l00147"></a> 147 // @brief Request for the server API version

<a id="l00148" name="l00148"></a> 148 //

<a id="l00149" name="l00149"></a> 149 // Dummy argument for the GetAPIVersion rpc

<a id="l00150" name="l00150"></a>[ 150](structensightservice_1_1_version_request.xhtml) message [VersionRequest](structensightservice_1_1_version_request.xhtml) {

<a id="l00151" name="l00151"></a> 151 }

<a id="l00152" name="l00152"></a> 152 

<a id="l00153" name="l00153"></a> 153 // @brief The server API version

<a id="l00154" name="l00154"></a> 154 //

<a id="l00155" name="l00155"></a> 155 // This command returns the version number of the DynamicSceneGraphService that the server

<a id="l00156" name="l00156"></a> 156 // supports. The number is defined in this .proto file as VersionEnumType::CURRENT\_VERSION.

<a id="l00157" name="l00157"></a> 157 // The protocol passes this value as an int32 so that the client can receive the value

<a id="l00158" name="l00158"></a> 158 // properly and then compare it to its own value of the VersionEnumType::CURRENT\_VERSION enum

<a id="l00159" name="l00159"></a> 159 // generated by the version of the proto file it had compiled.

<a id="l00160" name="l00160"></a>[ 160](structensightservice_1_1_version_reply.xhtml) message [VersionReply](structensightservice_1_1_version_reply.xhtml) {

<a id="l00161" name="l00161"></a> 161 // @brief version number

<a id="l00162" name="l00162"></a> 162 //

<a id="l00163" name="l00163"></a> 163 // The version type is used to determine the version number the protocol corresponds to.

<a id="l00164" name="l00164"></a> 164 enum [VersionEnumType](structensightservice_1_1_version_reply.xhtml#ad59fbb277db8881f4b306869ca3d2527) {

<a id="l00165" name="l00165"></a>[ 165](structensightservice_1_1_version_reply.xhtml#ad59fbb277db8881f4b306869ca3d2527) UNDEFINED = 0; // No version number specified

<a id="l00166" name="l00166"></a>[ 166](structensightservice_1_1_version_reply.xhtml#ad59fbb277db8881f4b306869ca3d2527a09799e59a4e5da5ed7d83462de5c6f0f) CURRENT_VERSION = 101; // Current version of the .proto file/protocol 

<a id="l00167" name="l00167"></a>[ 167](structensightservice_1_1_version_reply.xhtml#ad59fbb277db8881f4b306869ca3d2527ac0cc9bff427faa2d8dac5e2258b3eaf9) }

<a id="l00168" name="l00168"></a> 168 int32 version = 1; // The API version number as an integer. It should be the value VersionEnumType::CURRENT\_VERSION.

<a id="l00169" name="l00169"></a>[ 169](structensightservice_1_1_version_reply.xhtml#a980a3ce6bac7e2583368811a8ef2a865) }

<a id="l00170" name="l00170"></a> 170 

<a id="l00171" name="l00171"></a> 171 // @brief Request by the client for an EnSight scene update

<a id="l00172" name="l00172"></a> 172 //

<a id="l00173" name="l00173"></a> 173 // This SceneClientCommand sub message is sent by the client at startup or whenever the client 

<a id="l00174" name="l00174"></a> 174 // would like a scene update. The server will respond by starting a scene update command sequence, 

<a id="l00175" name="l00175"></a> 175 // beginning with a SceneUpdateCommand message, UpdateSceneBegin sub command. The update sequence

<a id="l00176" name="l00176"></a> 176 // will end with a SceneUpdateCommand message, UpdateSceneEnd sub command.

<a id="l00177" name="l00177"></a> 177 //

<a id="l00178" name="l00178"></a> 178 // This message also informs the server what the maximum size of a block of data should be (in bytes). 

<a id="l00179" name="l00179"></a> 179 // It also can be used to enable "spontaneous" scene updates that can be started by the EnSight server

<a id="l00180" name="l00180"></a> 180 // at any time. If the client would like the server to rebroadcast the entire scene, it should

<a id="l00181" name="l00181"></a> 181 // set the allow\_incremental\_updates flag to false, suppressing state cache tracking by the server.

<a id="l00182" name="l00182"></a> 182 message [SceneClientInit](structensightservice_1_1_scene_client_init.xhtml) {

<a id="l00183" name="l00183"></a>[ 183](structensightservice_1_1_scene_client_init.xhtml) bool allow_spontaneous = 1; // If true, EnSight is allowed to spontaneously start a scene update. If false, updates can only be initiated by the client via this message.

<a id="l00184" name="l00184"></a>[ 184](structensightservice_1_1_scene_client_init.xhtml#af8d24ffa4b58dc110e12f89f677c83f0) bool allow_incremental_updates = 2; // If true, EnSight is allowed/encouraged to send the minimal number of update packets. If false, the client must re-send the entire scene.

<a id="l00185" name="l00185"></a>[ 185](structensightservice_1_1_scene_client_init.xhtml#af86e19a41881498e54c38c6e75aa0c76) int32 maximum_chunk_size = 3; // Sets the maximum payload blocksize in bytes in a single UpdateGeom message (0=unrestricted payload size).

<a id="l00186" name="l00186"></a>[ 186](structensightservice_1_1_scene_client_init.xhtml#a628ea445b5f241ed67b8cd1010b91c16) bool include_temporal_geometry = 4; // If true, request that the current temporal geometry be sent. If false, the current static view is sent

<a id="l00187" name="l00187"></a>[ 187](structensightservice_1_1_scene_client_init.xhtml#aa76dee20a520300fa4fba143f7bf7d05) }

<a id="l00188" name="l00188"></a> 188 

<a id="l00189" name="l00189"></a> 189 // @brief Update a parameter in the EnSight session

<a id="l00190" name="l00190"></a> 190 //

<a id="l00191" name="l00191"></a> 191 // Message from client to change some EnSight session state. This command is currently unimplemented. The

<a id="l00192" name="l00192"></a> 192 // intent is that this message would be sent from the VR environment to interact with the EnSight session (e.g. load data, clip plane motion)

<a id="l00193" name="l00193"></a> 193 message [SceneClientUpdate](structensightservice_1_1_scene_client_update.xhtml) {

<a id="l00194" name="l00194"></a>[ 194](structensightservice_1_1_scene_client_update.xhtml) // To be defined

<a id="l00195" name="l00195"></a> 195 }

<a id="l00196" name="l00196"></a> 196 

<a id="l00197" name="l00197"></a> 197 // @brief Aggregate command sent by a dynamic scene graph client

<a id="l00198" name="l00198"></a> 198 //

<a id="l00199" name="l00199"></a> 199 // This command represents a union of two different base commands: SceneClientInit and SceneClientUpdate. To 

<a id="l00200" name="l00200"></a> 200 // use the message, set the command\_type to the type of the message and fill in the appropriate ClientCommand

<a id="l00201" name="l00201"></a> 201 // sub-message.

<a id="l00202" name="l00202"></a> 202 message [SceneClientCommand](structensightservice_1_1_scene_client_command.xhtml) {

<a id="l00203" name="l00203"></a> 203 // The type of the ClientCommand oneof that has been set

<a id="l00204" name="l00204"></a>[ 204](structensightservice_1_1_scene_client_command.xhtml) enum [ClientCommandType](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9d) {

<a id="l00205" name="l00205"></a> 205 INIT = 0; // Initial command to be sent. Can be sent repeatedly to reset session parameters or request a scene update

<a id="l00206" name="l00206"></a> 206 UPDATE = 1; // Undefined at present, but used to send interaction information from VR1 back to EnSight

<a id="l00207" name="l00207"></a>[ 207](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9d) }

<a id="l00208" name="l00208"></a>[ 208](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9daf4d487da2248189a4581a1da2ef697a6) [ClientCommandType](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9d) command_type = 1; // The command type

<a id="l00209" name="l00209"></a>[ 209](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9da541ae893b9023272d6d91bc98e91ae28) // message union

<a id="l00210" name="l00210"></a> 210 oneof ClientCommand {

<a id="l00211" name="l00211"></a>[ 211](structensightservice_1_1_scene_client_command.xhtml#adaad41cd970c13986e303aa114d76c32) [SceneClientInit](structensightservice_1_1_scene_client_init.xhtml) init = 2; // Init a session/request a scene graph update

<a id="l00212" name="l00212"></a> 212 [SceneClientUpdate](structensightservice_1_1_scene_client_update.xhtml) update = 3; // Modify an EnSight session 

<a id="l00213" name="l00213"></a> 213 }

<a id="l00214" name="l00214"></a> 214 }

<a id="l00215" name="l00215"></a>[ 215](structensightservice_1_1_scene_client_command.xhtml#a308cfda6fa9526f29110cc95e3e08553) 

<a id="l00216" name="l00216"></a>[ 216](structensightservice_1_1_scene_client_command.xhtml#a872d1d1e4a69b5da888d1c41bd77c118) // @brief Begin an update sequence

<a id="l00217" name="l00217"></a>[ 217](structensightservice_1_1_scene_client_command.xhtml#ab8fc63b3d61dc3fd04f63950464ff8fa) //

<a id="l00218" name="l00218"></a> 218 // Sent to mark the start of an update operation, the scene will not be complete until UpdateSceneEnd is received

<a id="l00219" name="l00219"></a> 219 message [UpdateSceneBegin](structensightservice_1_1_update_scene_begin.xhtml) {

<a id="l00220" name="l00220"></a> 220 bool reset = 1; // If true, scene being updated will replace the current scene, client deletes all existing entity definitions. If false, this is an incremental update to be merged into existing scene entities

<a id="l00221" name="l00221"></a> 221 uint64 id = 2; // The scene entity id

<a id="l00222" name="l00222"></a> 222 }

<a id="l00223" name="l00223"></a>[ 223](structensightservice_1_1_update_scene_begin.xhtml) 

<a id="l00224" name="l00224"></a>[ 224](structensightservice_1_1_update_scene_begin.xhtml#ab0bcefb0b4bf7b01da91974c63bc5722) // @brief End an update sequence

<a id="l00225" name="l00225"></a>[ 225](structensightservice_1_1_update_scene_begin.xhtml#a8584816dd64dfcf475dedf17e355a5c1) //

<a id="l00226" name="l00226"></a> 226 // Sent when the entire scene as been defined and can now be rendered

<a id="l00227" name="l00227"></a> 227 message [UpdateSceneEnd](structensightservice_1_1_update_scene_end.xhtml) {

<a id="l00228" name="l00228"></a> 228 uint64 id = 1; // The scene entity id

<a id="l00229" name="l00229"></a> 229 }

<a id="l00230" name="l00230"></a> 230 

<a id="l00231" name="l00231"></a>[ 231](structensightservice_1_1_update_scene_end.xhtml) // @brief Delete a list of entities.

<a id="l00232" name="l00232"></a>[ 232](structensightservice_1_1_update_scene_end.xhtml#a41801c28d60ca4511241acc47d681df9) message [DeleteID](structensightservice_1_1_delete_i_d.xhtml) {

<a id="l00233" name="l00233"></a> 233 repeated uint64 ids = 1 [packed=true]; // A list of entity ids that have been deleted (and non longer exist in the cache)

<a id="l00234" name="l00234"></a> 234 }

<a id="l00235" name="l00235"></a> 235 

<a id="l00236" name="l00236"></a>[ 236](structensightservice_1_1_delete_i_d.xhtml) // @brief Update a View entity

<a id="l00237" name="l00237"></a>[ 237](structensightservice_1_1_delete_i_d.xhtml#a5f5d749d9a9940f19348775c91e08691) //

<a id="l00238" name="l00238"></a> 238 // Scenes contain a collection of View entities that provide camera definitions and 

<a id="l00239" name="l00239"></a> 239 // have groups (leading to Parts entities) as children. A View also provides a timeline 

<a id="l00240" name="l00240"></a> 240 // over which its children should be considered visible. The timeline contains

<a id="l00241" name="l00241"></a> 241 // two time values. Children of the View are considered visible at some time t, 

<a id="l00242" name="l00242"></a> 242 // if: `timeline\[0\] &lt;= t &lt; timeline\[1\]`. 

<a id="l00243" name="l00243"></a> 243 message [UpdateView](structensightservice_1_1_update_view.xhtml) {

<a id="l00244" name="l00244"></a> 244 uint64 id = 1; // View entity id.

<a id="l00245" name="l00245"></a> 245 uint64 parent_id = 2; // Scene entity id.

<a id="l00246" name="l00246"></a> 246 repeated float timeline = 3; // Start and end time these children are to be displayed, two values.

<a id="l00247" name="l00247"></a>[ 247](structensightservice_1_1_update_view.xhtml) repeated float lookat = 4; // X,Y,Z of the view lookat point.

<a id="l00248" name="l00248"></a>[ 248](structensightservice_1_1_update_view.xhtml#a710e8281655cb6105e3d314c1fa78b4a) repeated float lookfrom = 5; // X,Y,Z of the view lookfrom point.

<a id="l00249" name="l00249"></a>[ 249](structensightservice_1_1_update_view.xhtml#adfb04eacfd5961c784480579641ec041) repeated float upvector = 6; // NX,NY,NZ of the view up vector.

<a id="l00250" name="l00250"></a>[ 250](structensightservice_1_1_update_view.xhtml#ab0ed4c943caa0238719b3fea7823e6d5) float fieldofview = 7; // The field of view angle in degrees.

<a id="l00251" name="l00251"></a>[ 251](structensightservice_1_1_update_view.xhtml#af8b3e1311c74d08a2948d1bf70db3561) float aspectratio = 8; // Display rectangle aspect ratio (dx/dy).

<a id="l00252" name="l00252"></a>[ 252](structensightservice_1_1_update_view.xhtml#a71effeffd55ab1f28cf79e9bf5f5b475) repeated float nearfar = 9; // The distance from the lookfrom point to the near and far clipping planes.

<a id="l00253" name="l00253"></a>[ 253](structensightservice_1_1_update_view.xhtml#a29d32f5c19cd2a583886e7c751c4ee17) 

<a id="l00254" name="l00254"></a>[ 254](structensightservice_1_1_update_view.xhtml#ac98c44d2fd231ce53686082c3f6f45e9) string hash = 10; // hash for this message payload

<a id="l00255" name="l00255"></a>[ 255](structensightservice_1_1_update_view.xhtml#a2dbf500de41e301bcf8ac9b94345fa8f) } 

<a id="l00256" name="l00256"></a>[ 256](structensightservice_1_1_update_view.xhtml#a45e7fe4fe997a2c753d2ff0383ead241) 

<a id="l00257" name="l00257"></a>[ 257](structensightservice_1_1_update_view.xhtml#a13abec7e352a8c8bd28f6a2626aca772) 

<a id="l00258" name="l00258"></a> 258 // @brief Update a Part entity

<a id="l00259" name="l00259"></a> 259 //

<a id="l00260" name="l00260"></a> 260 // Sent to update part rendering attributes. Parts have Geom entity children that define 

<a id="l00261" name="l00261"></a> 261 // the bulk data arrays.

<a id="l00262" name="l00262"></a> 262 //

<a id="l00263" name="l00263"></a> 263 // The material name needs additional work. If 'steel' or 'glass' are specified, are we expecting the client 

<a id="l00264" name="l00264"></a> 264 // to come up with shaders for those materials, or just informing that fill\_color and shininess parameters 

<a id="l00265" name="l00265"></a> 265 // are steel-like or glass-like. General thinking is to use common namespaces (e.g. granta, etc)

<a id="l00266" name="l00266"></a> 266 // for known material specifications and namespace prefixed JSON for others (e.g. ensight:{json payload}

<a id="l00267" name="l00267"></a> 267 message [UpdatePart](structensightservice_1_1_update_part.xhtml) {

<a id="l00268" name="l00268"></a> 268 // The rendering mode is actually a bit field, defining what should be rendered.

<a id="l00269" name="l00269"></a>[ 269](structensightservice_1_1_update_part.xhtml) enum [RenderingMode](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddec) {

<a id="l00270" name="l00270"></a> 270 NODES = 0; // render the nodes of the connectivity (spheres)

<a id="l00271" name="l00271"></a> 271 CONNECTIVITY = 1; // render the elements defined by the connectivity, triangles or lines. Note: if edgeflags are specified and the connectivity is triangle, element boundaries are to be outlined

<a id="l00272" name="l00272"></a>[ 272](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddec) }

<a id="l00273" name="l00273"></a>[ 273](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddecac09b801c81ff9a17215d193690acb941) 

<a id="l00274" name="l00274"></a>[ 274](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddeca91f814245db2858844fd78dc9010c205) // Define the location of normals

<a id="l00275" name="l00275"></a> 275 enum [ShadingMode](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01) {

<a id="l00276" name="l00276"></a> 276 ELEMENTAL = 0; // Normals are specified per element face (e.g. one normal per triangle).

<a id="l00277" name="l00277"></a> 277 NODAL = 1; // Normals are specified per node.

<a id="l00278" name="l00278"></a>[ 278](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01) }

<a id="l00279" name="l00279"></a>[ 279](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01acdfc4ad1532f97699bedfad3653ac2fe) 

<a id="l00280" name="l00280"></a>[ 280](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01a5cb3cf33dd6e04ce4bbe8721d36f2c6a) // 2D texture options for tex coords outside \[0,1\]

<a id="l00281" name="l00281"></a> 281 enum [TextureWrapMode](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796) {

<a id="l00282" name="l00282"></a> 282 REPEAT = 0; // Like GL\_REPEAT

<a id="l00283" name="l00283"></a> 283 CLAMP = 1; // Like GL\_CLAMP\_TO\_BORDER, except values outside \[0,1\] get the usual part color/lighting/color by var in DECAL mode, and killed in REPLACE or MODULATE mode.

<a id="l00284" name="l00284"></a>[ 284](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796) CLAMP_TEXTURE = 2; // Like GL\_CLAMP\_TO\_EDGE

<a id="l00285" name="l00285"></a>[ 285](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796ae49b8828574680d1dedb130bbbb9c2bc) }

<a id="l00286" name="l00286"></a>[ 286](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796a244b83109d047b4fb87cd9ed347c5463) // 2D texture options for combining texture color with part color, lighting, color by var

<a id="l00287" name="l00287"></a>[ 287](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796ae6e175e4e97f97b923fd496da72346c2) enum [TextureApplyMode](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736) {

<a id="l00288" name="l00288"></a> 288 REPLACE = 0; // 2D texture color replaces all other color. No lighting. Same as DECAL unless wrap mode is CLAMP.

<a id="l00289" name="l00289"></a> 289 DECAL = 1; // 2D texture color replaces all other color. No lighting.

<a id="l00290" name="l00290"></a> 290 MODULATE = 2; // Color as usual with part color, lighting, color by var, etc. Then multiply by the 2D texture color.

<a id="l00291" name="l00291"></a>[ 291](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736) }

<a id="l00292" name="l00292"></a>[ 292](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736a5e4ea0327459d1bf936e5a7db32ef0ba) // 2D texture interpolation

<a id="l00293" name="l00293"></a>[ 293](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736a520aea4e9aa1ff0b3627e4812e77fa8a) enum [TextureSampleMode](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163) {

<a id="l00294" name="l00294"></a>[ 294](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736a801b9e7ee05853ab08f92695c4453fb8) NEAREST = 0; // Like GL\_NEAREST

<a id="l00295" name="l00295"></a> 295 LINEAR = 1; // Like GL\_LINEAR

<a id="l00296" name="l00296"></a> 296 }

<a id="l00297" name="l00297"></a> 297 

<a id="l00298" name="l00298"></a>[ 298](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163) uint64 id = 1; // The Part entity id

<a id="l00299" name="l00299"></a>[ 299](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163afb41518d4aa2322e1822a7ad6860f896) uint64 parent_id = 2; // Parent Group id

<a id="l00300" name="l00300"></a>[ 300](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163abf80688fd45aec45cc89bbf4929aabbd) 

<a id="l00301" name="l00301"></a> 301 string name = 3; // The name of the Part

<a id="l00302" name="l00302"></a>[ 302](structensightservice_1_1_update_part.xhtml#a146d625ee8cfdc2174a4d040c60911c3) repeated float matrix4x4 = 4; // Rigid body motion

<a id="l00303" name="l00303"></a>[ 303](structensightservice_1_1_update_part.xhtml#a05419f0c4aabaa6070aa80a3910d567f) 

<a id="l00304" name="l00304"></a>[ 304](structensightservice_1_1_update_part.xhtml#a64d2b287913002e8dc978450e91d717d) repeated float fill_color = 5; // Base color for the part (rgba). If color\_variableid is not set, draw the part with this RGB. Even if color\_variableid is set, combine RGB from color\_variableid with A in fill\_color.

<a id="l00305" name="l00305"></a>[ 305](structensightservice_1_1_update_part.xhtml#a7899500fa988dd96cfa7456351ab7332) repeated float line_color = 6; // Used for rendering line connectivity and element boundaries if edgeflags are specified

<a id="l00306" name="l00306"></a>[ 306](structensightservice_1_1_update_part.xhtml#a6fa26455ae14b97ed2ff47bc81a2fe01) [RenderingMode](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddec) render = 7; // What to aspect of the mesh to render

<a id="l00307" name="l00307"></a>[ 307](structensightservice_1_1_update_part.xhtml#a518b58bb817746904e20bae13df42336) [ShadingMode](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01) shading = 8; // Defines the location of the normals. If normals are specified per-element, triangles should be shaded as "flat"

<a id="l00308" name="l00308"></a>[ 308](structensightservice_1_1_update_part.xhtml#a7bc6066b491f0e0d53f74f89e897e62a) 

<a id="l00309" name="l00309"></a>[ 309](structensightservice_1_1_update_part.xhtml#a5f0ab89caa52e901e519bb0312097b6b) float ambient = 9; // OpenGL style ambient coloring factor: GL\_AMBIENT

<a id="l00310" name="l00310"></a>[ 310](structensightservice_1_1_update_part.xhtml#a1bdde519e13ec4fe017e3cd33ac19101) float diffuse = 10; // OpenGL style diffuse coloring rgb: GL\_DIFFUSE 

<a id="l00311" name="l00311"></a>[ 311](structensightservice_1_1_update_part.xhtml#af1fac323130745d692092724afad5305) float specular_shine = 11; // OpenGL style specular factor: GL\_SHININESS

<a id="l00312" name="l00312"></a>[ 312](structensightservice_1_1_update_part.xhtml#ae870baf91c0272bacc9a6b767dce9fc0) float specular_intensity = 12; // OpenGL style specular factor: GL\_SPECULAR

<a id="l00313" name="l00313"></a>[ 313](structensightservice_1_1_update_part.xhtml#a435c23c1109c77b9880a22e4e97f6ecb) string material_name = 13; // The material name specification

<a id="l00314" name="l00314"></a>[ 314](structensightservice_1_1_update_part.xhtml#aef2cbe0ee256ed43444ce8b46fdf7897) float node_size_default = 14; // If node rendering is specified, the base size of each node

<a id="l00315" name="l00315"></a>[ 315](structensightservice_1_1_update_part.xhtml#af0d873b7ed1de4234c494af420bc3bd3) uint64 color_variableid = 15; // per-node or per-element coloring specification

<a id="l00316" name="l00316"></a>[ 316](structensightservice_1_1_update_part.xhtml#a06f276651bacf17d190576631064b80b) uint64 alpha_variableid = 16; // If this is set, transparency varies over the part, and comes from the alpha channel for alpha\_variableid. It supercedes the alpha value in fill\_color.

<a id="l00317" name="l00317"></a>[ 317](structensightservice_1_1_update_part.xhtml#ad7834ca7d0348aef62bd8349f2c49707) uint64 node_size_variableid = 17; // If the 'render' variable has 'NODES' set, the size of rendered points can vary by the value of a variable instead of the node\_size\_default.

<a id="l00318" name="l00318"></a>[ 318](structensightservice_1_1_update_part.xhtml#adcfa62e75a9159c60598b4b15ace17f1) uint64 displacement_variableid = 18; // if this is set, the vector variable should be added to the coordinate variable to generate the final coordinate.

<a id="l00319" name="l00319"></a>[ 319](structensightservice_1_1_update_part.xhtml#abca6bd2a86631f927e86eaa68905ea80) 

<a id="l00320" name="l00320"></a>[ 320](structensightservice_1_1_update_part.xhtml#a2fab0e62a37c14a713f2d522e167e34b) uint64 texture_id = 19; // 2D texture to apply.

<a id="l00321" name="l00321"></a>[ 321](structensightservice_1_1_update_part.xhtml#a5342169c3591f1324c3bf0c8ea4e68b6) [TextureWrapMode](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796) texture_wrap_mode = 20; // 2D texture wrapping options

<a id="l00322" name="l00322"></a>[ 322](structensightservice_1_1_update_part.xhtml#a69b91fc0cbd910578edb81ed45b3c66c) [TextureApplyMode](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736) texture_apply_mode = 21; // 2D texture color blending options

<a id="l00323" name="l00323"></a>[ 323](structensightservice_1_1_update_part.xhtml#ada36d973467e004165e916c9b4da47df) [TextureSampleMode](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163) texture_sample_mode = 22; // 2D texture sampling options

<a id="l00324" name="l00324"></a>[ 324](structensightservice_1_1_update_part.xhtml#a91ffdc6c84e47f69bde3fedc8424fdac) 

<a id="l00325" name="l00325"></a> 325 string hash = 23; // hash for this message payload

<a id="l00326" name="l00326"></a> 326 

<a id="l00327" name="l00327"></a> 327 // could specify a projected plane for tex coords, then sometimes would not need to send the TEX\_COORDINATES update

<a id="l00328" name="l00328"></a> 328 // TBD: "control" variables (e.g. clip plane position, etc) that can be modified in the VR environment

<a id="l00329" name="l00329"></a> 329 // TBD: attributes specific to certain types of parts, like animation options on particle traces

<a id="l00330" name="l00330"></a> 330 // TBD: mirroring/instancing. perhaps add an array of transformation matrices, or just the mirror plane/rotational axis parameters

<a id="l00331" name="l00331"></a> 331 }

<a id="l00332" name="l00332"></a> 332 

<a id="l00333" name="l00333"></a> 333 

<a id="l00334" name="l00334"></a> 334 // @brief Update a Group entity

<a id="l00335" name="l00335"></a> 335 //

<a id="l00336" name="l00336"></a> 336 // Sent to update a group entity. The group is a simple entity serving as the basic "tree"

<a id="l00337" name="l00337"></a> 337 // node.

<a id="l00338" name="l00338"></a> 338 //

<a id="l00339" name="l00339"></a> 339 // The attributes are open for various uses, but several attribute key values have already been

<a id="l00340" name="l00340"></a> 340 // defined:

<a id="l00341" name="l00341"></a> 341 //

<a id="l00342" name="l00342"></a> 342 // \[EnSight Units\]: https://nexusdemo.ensight.com/docs/python/html/ENS\_UNITSSchema.html#TOC-ENS\_UNITS\_SYSTEM "EnSight Units System"

<a id="l00343" name="l00343"></a> 343 //

<a id="l00344" name="l00344"></a> 344 // Attribute | Value

<a id="l00345" name="l00345"></a> 345 // --------- | -----

<a id="l00346" name="l00346"></a> 346 // ENS\_OBJ\_TYPE | The EnSight object type associated with this Group entity (e.g. "ENS\_PART", "ENS\_CASE", "ENS\_VAR").

<a id="l00347" name="l00347"></a> 347 // ENS\_OBJ\_ID | The EnSight object ID associated with the Group entity.

<a id="l00348" name="l00348"></a>[ 348](structensightservice_1_1_update_group.xhtml) // ENS\_UNITS\_SYSTEM | The unit system for the a specific ENS\_CASE. Encoded in JSON. An example would be: '{"system":"SI","label":"Metric SI","M":"kg","L":"m","T":"s","K":"K","Q":"A","D":"rad","I":"cd","A":"mol"}'. See also \[EnSight Units\].

<a id="l00349" name="l00349"></a>[ 349](structensightservice_1_1_update_group.xhtml#a4b06508d1f2c67eed03e08761c4ffc70) // ENS\_CASE\_DATAFORMAT | The EnSight data reader used to load this portion of the tree. An example would be: 'Fluent'.

<a id="l00350" name="l00350"></a>[ 350](structensightservice_1_1_update_group.xhtml#aca9ddd6ca9436d5ae2c30a7ba9330512) message [UpdateGroup](structensightservice_1_1_update_group.xhtml){

<a id="l00351" name="l00351"></a>[ 351](structensightservice_1_1_update_group.xhtml#a2a58f9e6568b11df1cae46a0cb52644a) uint64 id = 1; // The Group entity id

<a id="l00352" name="l00352"></a>[ 352](structensightservice_1_1_update_group.xhtml#a59de9866a1bb62fa95f4171d0e4a6fd4) uint64 parent_id = 2; // Parent Group or View id

<a id="l00353" name="l00353"></a>[ 353](structensightservice_1_1_update_group.xhtml#aaad1709ec0adb4af890bbf63e81cd673) string name = 3; // The name of the Group

<a id="l00354" name="l00354"></a>[ 354](structensightservice_1_1_update_group.xhtml#a1c833986aaea9d12f310c5b739424148) repeated float matrix4x4 = 4; // A 4x4 transformation matrix 

<a id="l00355" name="l00355"></a> 355 map&lt;string,string&gt; attributes = 5; // General attributes associated with this Group

<a id="l00356" name="l00356"></a> 356 

<a id="l00357" name="l00357"></a> 357 string hash = 6; // hash for this message payload

<a id="l00358" name="l00358"></a> 358 }

<a id="l00359" name="l00359"></a> 359 

<a id="l00360" name="l00360"></a> 360 // @brief Update a Geom entity

<a id="l00361" name="l00361"></a> 361 // 

<a id="l00362" name="l00362"></a> 362 // The geom entity holds the physical arrays used for rendering.

<a id="l00363" name="l00363"></a> 363 // It contains a coordinate array and connectivity that is relative to the coordinate array

<a id="l00364" name="l00364"></a> 364 // for this geom. The connectivity can be triangles, lines or empty (points).

<a id="l00365" name="l00365"></a> 365 // If triangles, optional edgeflags specify the "line" representation of the triangles (for element outlining)

<a id="l00366" name="l00366"></a> 366 // Otherwise, the geom object can hold the data payloads for other variables tagged via their variable id.

<a id="l00367" name="l00367"></a> 367 // The use of these variables is dictated by fields in the Part entity that note the use of specific

<a id="l00368" name="l00368"></a> 368 // variables for other purposes (e.g. normals, coloring, node size, etc).

<a id="l00369" name="l00369"></a> 369 // Multiple UpdateGeom packets are send to fill in an entire array, limited by the size specified 

<a id="l00370" name="l00370"></a>[ 370](structensightservice_1_1_update_geom.xhtml) // in the init command. All Geom packets for a specific array will include the full size of the

<a id="l00371" name="l00371"></a> 371 // target array (in base type units, uint32 or float) and an offset where the payload of a specific

<a id="l00372" name="l00372"></a> 372 // UpdateGeom packet should be stored in the array.

<a id="l00373" name="l00373"></a>[ 373](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0e) message [UpdateGeom](structensightservice_1_1_update_geom.xhtml) {

<a id="l00374" name="l00374"></a>[ 374](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0ea97e70b5168d95bb016e911d62cc90413) // The type of array the Geom represents

<a id="l00375" name="l00375"></a>[ 375](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0ea45c719afcca86d40ae188d08a4382b2e) enum [ArrayType](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0e) {

<a id="l00376" name="l00376"></a>[ 376](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0eae234c44b853e8e5aec672debc9c6c633) COORDINATES = 0; // x1,y1,z1,x2,y2,z2 ...

<a id="l00377" name="l00377"></a>[ 377](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0eab3ca9a043cffdaff1405f788c5e433f7) TRIANGLES = 1; // 3\*uint32 per triangle (zero based)

<a id="l00378" name="l00378"></a>[ 378](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0ea821476181227b91975248ddb117280e7) LINES = 2; // 2\*uint32 per line segment (zero based)

<a id="l00379" name="l00379"></a>[ 379](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0eaa9c8b71b1e2d2d6750c1e37d2b59acaa) EDGEFLAGS = 3; // uint32 per element (only used with triangles)

<a id="l00380" name="l00380"></a>[ 380](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0ea8e054c010865baf89a5933978d87cb96) ELEM_VARIABLE = 4; // per element 1D variable values from the variable\_id

<a id="l00381" name="l00381"></a>[ 381](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0eac21f3699ed4e6ab0583a8c0becf04189) NODE_VARIABLE = 5; // per node 1D variable values from the variable\_id

<a id="l00382" name="l00382"></a>[ 382](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0ea81b336746a62b3cc584202840ce51810) ELEM_NORMALS = 6; // x1,y1,z1,x2,y2,z2 ... 

<a id="l00383" name="l00383"></a> 383 NODE_NORMALS = 7; // x1,y1,z1,x2,y2,z2 ...

<a id="l00384" name="l00384"></a>[ 384](structensightservice_1_1_update_geom.xhtml#a42863e16202a18571b4b4bc42525873d) TEX_COORDINATES = 8;// 2\*float, always per vertex, u1,v1,u2,v2 ...

<a id="l00385" name="l00385"></a>[ 385](structensightservice_1_1_update_geom.xhtml#ab03f346bd14498df04b4207f2e93c145) }

<a id="l00386" name="l00386"></a>[ 386](structensightservice_1_1_update_geom.xhtml#a29bdb809b9ca3a2d515296c7e40fef76) 

<a id="l00387" name="l00387"></a>[ 387](structensightservice_1_1_update_geom.xhtml#a546c77b8d3c2c0ad1dc3928d9f7b0264) uint64 id = 1; // The Geom entity id

<a id="l00388" name="l00388"></a>[ 388](structensightservice_1_1_update_geom.xhtml#a73bd310bba7f5ea16a52da72d5d2929f) uint64 parent_id = 2; // Parent Part entity id

<a id="l00389" name="l00389"></a>[ 389](structensightservice_1_1_update_geom.xhtml#a4de5b11969632599324c7b304388dd9d) 

<a id="l00390" name="l00390"></a>[ 390](structensightservice_1_1_update_geom.xhtml#a8af8c0efbd1661f75a5d486bd9339511) [ArrayType](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0e) payload_type = 3; // The type of the array represented by this entity

<a id="l00391" name="l00391"></a>[ 391](structensightservice_1_1_update_geom.xhtml#ae9574561ee21483fc13e0a252f6b655f) uint64 variable_id = 4; // If the ArrayType is VARIABLE, this is the associated entity id of a Variable 

<a id="l00392" name="l00392"></a>[ 392](structensightservice_1_1_update_geom.xhtml#afc7c61ce6676bea469456c73b70c0146) 

<a id="l00393" name="l00393"></a> 393 repeated float flt_array = 5 [packed=true]; // Used when payload\_type is VARIABLE or COORDINATES

<a id="l00394" name="l00394"></a> 394 repeated uint32 int_array = 6 [packed=true]; // Used when payload\_type is TRIANGLES, LINES or EDGEFLAGS

<a id="l00395" name="l00395"></a> 395 uint64 chunk_offset = 7; // The offset in "elements" (floats, uint32, etc) of the array represented by this Geom

<a id="l00396" name="l00396"></a> 396 uint64 total_array_size = 8; // The total size in "elements" (floats, uint32, etc) of the array represented by this Geom

<a id="l00397" name="l00397"></a> 397 

<a id="l00398" name="l00398"></a>[ 398](structensightservice_1_1_variable_level.xhtml) string hash = 9; // hash for this message payload

<a id="l00399" name="l00399"></a>[ 399](structensightservice_1_1_variable_level.xhtml#af281887e8328145a817abdac740998b2) }

<a id="l00400" name="l00400"></a>[ 400](structensightservice_1_1_variable_level.xhtml#aa9bb1e96e7f011a89af624dca154ee1e) 

<a id="l00401" name="l00401"></a>[ 401](structensightservice_1_1_variable_level.xhtml#a327318940a4765a749e93425bb09a39c) 

<a id="l00402" name="l00402"></a>[ 402](structensightservice_1_1_variable_level.xhtml#a805baa0b7821ec1ceeba2ae6095911d3) // @brief A "knot" point in the palette for the Variable

<a id="l00403" name="l00403"></a>[ 403](structensightservice_1_1_variable_level.xhtml#a6d406e152cb6f786900e21ba6819567a) //

<a id="l00404" name="l00404"></a> 404 // This message maps a variable value to a specific color.

<a id="l00405" name="l00405"></a> 405 message [VariableLevel](structensightservice_1_1_variable_level.xhtml) {

<a id="l00406" name="l00406"></a> 406 float value = 1; // The variable value the color is associated with

<a id="l00407" name="l00407"></a> 407 float red = 2; // Red \[0, 1\]

<a id="l00408" name="l00408"></a> 408 float green = 3; // Green \[0, 1\]

<a id="l00409" name="l00409"></a> 409 float blue = 4; // Blue \[0, 1\]

<a id="l00410" name="l00410"></a> 410 float alpha = 5; // Alpha \[0, 1\]

<a id="l00411" name="l00411"></a> 411 }

<a id="l00412" name="l00412"></a> 412 

<a id="l00413" name="l00413"></a> 413 // @brief Update a Variable entity

<a id="l00414" name="l00414"></a> 414 //

<a id="l00415" name="l00415"></a> 415 // General meta data about a variable, and about how to color by that variable.

<a id="l00416" name="l00416"></a> 416 // All parts colored by a the same variable in EnSight use the same palette, same var range, etc.

<a id="l00417" name="l00417"></a> 417 //

<a id="l00418" name="l00418"></a> 418 // The attributes are open for various uses, but several attribute key values have already been

<a id="l00419" name="l00419"></a> 419 // defined:

<a id="l00420" name="l00420"></a> 420 //

<a id="l00421" name="l00421"></a>[ 421](structensightservice_1_1_update_variable.xhtml) // \[EnSight Units\]: https://nexusdemo.ensight.com/docs/python/html/ENS\_UNITSSchema.html#TOC-ENS\_UNITS\_SYSTEM "EnSight Units System"

<a id="l00422" name="l00422"></a> 422 //

<a id="l00423" name="l00423"></a> 423 // Attribute | Value

<a id="l00424" name="l00424"></a> 424 // --------- | -----

<a id="l00425" name="l00425"></a> 425 // ENS\_OBJ\_TYPE | The EnSight object type associated with this Group entity (e.g. "ENS\_PART", "ENS\_CASE", "ENS\_VAR").

<a id="l00426" name="l00426"></a>[ 426](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34) // ENS\_OBJ\_ID | The EnSight object ID associated with the Group entity.

<a id="l00427" name="l00427"></a>[ 427](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34a45652249bc0510f101449c35fb92219a) // ENS\_UNITS\_DIMS | The unit dimensionality for the a specific ENS\_VAR. An example for a pressure variable would be: 'M/LTT'. See also \[EnSight Units\].

<a id="l00428" name="l00428"></a>[ 428](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34a5bae0693219c95072c79a57e97220cf3) message [UpdateVariable](structensightservice_1_1_update_variable.xhtml) {

<a id="l00429" name="l00429"></a> 429 // @brief Declare where a variable is defined to exist

<a id="l00430" name="l00430"></a> 430 //

<a id="l00431" name="l00431"></a> 431 // Variables can located at each node or element of the mesh.

<a id="l00432" name="l00432"></a> 432 enum [VarLocation](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34) {

<a id="l00433" name="l00433"></a> 433 NODAL = 0; // The variable is specified per mesh node

<a id="l00434" name="l00434"></a> 434 ELEMENTAL = 1; // The variable is specified per mesh element (e.g. triangle)

<a id="l00435" name="l00435"></a>[ 435](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832) }

<a id="l00436" name="l00436"></a>[ 436](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832a181c94167aff4fa32434f11a9517014a) 

<a id="l00437" name="l00437"></a>[ 437](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832a89579192578351c228f25c88386790e3) // @brief Declare the variable dimension

<a id="l00438" name="l00438"></a> 438 //

<a id="l00439" name="l00439"></a> 439 // Variables can either be a single float (SCALAR) per observed location or

<a id="l00440" name="l00440"></a> 440 // a 3 float vector (VECTOR).

<a id="l00441" name="l00441"></a> 441 enum [VarDimension](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832) {

<a id="l00442" name="l00442"></a> 442 [SCALAR](dynamic__visualization__store__enums_8h.xhtml#af6aa6351345da4151507012681b3aff0a7efbb6cac96595e63e8fa171bde1eb68) = 0; // The variable has one value per location

<a id="l00443" name="l00443"></a>[ 443](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1) [VECTOR](dynamic__visualization__store__enums_8h.xhtml#af6aa6351345da4151507012681b3aff0a1a85ef13eaa80e8561743892f9dba958) = 1; // The variable has three values per location

<a id="l00444" name="l00444"></a>[ 444](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1a6dd78f8b0d101f7bb8c0d74c15c2af04) }

<a id="l00445" name="l00445"></a>[ 445](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1a227dce087f42b9dfa5231856c003529b) 

<a id="l00446" name="l00446"></a> 446 // @brief Palette interpolation options

<a id="l00447" name="l00447"></a> 447 //

<a id="l00448" name="l00448"></a> 448 // Specify if palette interpolation should be linear or stepwise.

<a id="l00449" name="l00449"></a> 449 enum [PaletteInterpolation](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1) {

<a id="l00450" name="l00450"></a> 450 CONTINUOUS = 0; // The interpolation of the variable palette is linear

<a id="l00451" name="l00451"></a> 451 BANDED = 1; // The interpolation of the variable palette is a step function

<a id="l00452" name="l00452"></a> 452 }

<a id="l00453" name="l00453"></a>[ 453](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0e) 

<a id="l00454" name="l00454"></a>[ 454](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0eaa8c810fb96b63318847e385ab1ab93ea) // @brief Undefined interpretation

<a id="l00455" name="l00455"></a>[ 455](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0ea0a11d139963b16f66721378f6f1f7bcd) //

<a id="l00456" name="l00456"></a>[ 456](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0eadb5b985665804d7818f7cbd18708ee3e) // EnSight has a special float value indicating that the variable is undefined for a vertex or element.

<a id="l00457" name="l00457"></a>[ 457](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0ea4ac541b1e6a12dfca57f55bfea21aac5) // Options for drawing these elements are in the UndefinedDisplay enum. The value that means 'undefined' is

<a id="l00458" name="l00458"></a> 458 // given below in undefined\_value. By default, the undefined value is -1.2345e-10.

<a id="l00459" name="l00459"></a>[ 459](structensightservice_1_1_update_variable.xhtml#a740d5ab7439756963cb274aa5d7a395d) enum [UndefinedDisplay](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0e) {

<a id="l00460" name="l00460"></a>[ 460](structensightservice_1_1_update_variable.xhtml#af0b57f59c0e4898f197637e2130d3652) AS_ZERO = 0; // Draw 'undefined' as 0.0

<a id="l00461" name="l00461"></a>[ 461](structensightservice_1_1_update_variable.xhtml#af45690c2e8743fe83baa699967ca3737) AS_INVISIBLE = 1; // Don't draw any pixels where the variable value is undefined.

<a id="l00462" name="l00462"></a>[ 462](structensightservice_1_1_update_variable.xhtml#a3d45de0de8053126384af3e5442478f4) USE_PART_COLOR = 2; // Draw 'undefined' areas using the 'fill\_color' value on the part

<a id="l00463" name="l00463"></a>[ 463](structensightservice_1_1_update_variable.xhtml#a54f1a5d2fdf41622a3fdd1a29c622b5e) USE_UNDEF_COLOR = 3; // Draw 'undefined' areas using a color given below in undefined\_color

<a id="l00464" name="l00464"></a>[ 464](structensightservice_1_1_update_variable.xhtml#abf6d0768db50f923d6ac481949e484a8) }

<a id="l00465" name="l00465"></a>[ 465](structensightservice_1_1_update_variable.xhtml#a93a37d3801ebe892afd00598cc36e86b) 

<a id="l00466" name="l00466"></a>[ 466](structensightservice_1_1_update_variable.xhtml#a3a45f0682d9ce64655fdb7c9d21ff9c9) uint64 id = 1; // The Variable entity id

<a id="l00467" name="l00467"></a>[ 467](structensightservice_1_1_update_variable.xhtml#ae886d67fd989c05978d7c8eb5fc17001) uint64 parent_id = 2; // The parent scene id

<a id="l00468" name="l00468"></a>[ 468](structensightservice_1_1_update_variable.xhtml#aae718fe32c4eb203a3b93df836aa65ad) 

<a id="l00469" name="l00469"></a>[ 469](structensightservice_1_1_update_variable.xhtml#a83751ee84d20f8d059c7d792c4e58be3) string name = 3; // The name of the variable

<a id="l00470" name="l00470"></a>[ 470](structensightservice_1_1_update_variable.xhtml#a0da0813441db9e33553d5fb4c87ed3ce) [VarLocation](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34) location = 4; // The location of the variable

<a id="l00471" name="l00471"></a>[ 471](structensightservice_1_1_update_variable.xhtml#ac82ea8d2dd9ad7410db2a784dfb95921) [VarDimension](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832) dimension = 5; // The dimensionality of the variable

<a id="l00472" name="l00472"></a>[ 472](structensightservice_1_1_update_variable.xhtml#affd2266602a0ce71ea4765dd9d2b830b) float undefined_value = 6; // The float value that should be interpreted as "Undefined"

<a id="l00473" name="l00473"></a> 473 

<a id="l00474" name="l00474"></a> 474 [PaletteInterpolation](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1) pal_interp = 7; // How the color palette specified by levels should be interpolated

<a id="l00475" name="l00475"></a> 475 repeated [VariableLevel](structensightservice_1_1_variable_level.xhtml) levels = 8; // The color and var value at palette levels. Lowest to highest.

<a id="l00476" name="l00476"></a> 476 uint32 sub_levels = 9; // The number of "sub-levels" that might be used with BANDED interpolation. The total number of bands is (levels-1)\*(sub\_levels+1). The color in each level is used on the band at and above the level value, except for the last level's color, which is use on the band below it. Linearly interpolate in RGB space to get the colors of the bands between levels.

<a id="l00477" name="l00477"></a> 477 [UndefinedDisplay](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0e) undefined_display = 10; // How should the undefined values be displayed.

<a id="l00478" name="l00478"></a>[ 478](structensightservice_1_1_update_texture.xhtml) repeated float undefined_color = 11; // If undefined\_display==USE\_UNDEF\_COLOR, rgb in \[0,1\] given here

<a id="l00479" name="l00479"></a> 479 bytes texture = 12; // rgba pixel values (rrggbbaa 4 bytes/pixel) in \[0,255\]. For the color\_variableid, use only the rgb portion of this texture. For the alpha\_variableid, use only the 'a' portion of this texture. levels\[0\].value should map to tex coord==0 for banded, 0.5 texel for continuous levels\[levels.size()-1\].value should map to tex coord==1 for banded, 1 - 0.5 texel for continuous.

<a id="l00480" name="l00480"></a> 480 map&lt;string,string&gt; attributes = 13; // General attributes associated with this Variable

<a id="l00481" name="l00481"></a> 481 

<a id="l00482" name="l00482"></a> 482 string hash = 14; // hash for this message payload

<a id="l00483" name="l00483"></a> 483 }

<a id="l00484" name="l00484"></a> 484 

<a id="l00485" name="l00485"></a>[ 485](structensightservice_1_1_update_texture.xhtml#ad2a6342613ada16aa3484548ba964889) 

<a id="l00486" name="l00486"></a> 486 // @brief Update a Texture entity

<a id="l00487" name="l00487"></a> 487 //

<a id="l00488" name="l00488"></a> 488 // Sent to update a 2D texture. 

<a id="l00489" name="l00489"></a>[ 489](structensightservice_1_1_update_texture.xhtml#af496b2a924971f081cbfef9915e0ea3e) message [UpdateTexture](structensightservice_1_1_update_texture.xhtml) {

<a id="l00490" name="l00490"></a>[ 490](structensightservice_1_1_update_texture.xhtml#a508115e6ce403414933c692698e26b2b) // @brief Define the imaging format of a texture

<a id="l00491" name="l00491"></a>[ 491](structensightservice_1_1_update_texture.xhtml#aeeab37c4b13729da0f33b95e5b479d25) //

<a id="l00492" name="l00492"></a>[ 492](structensightservice_1_1_update_texture.xhtml#a2a421dfc3b0431e38ed9b2d988de3420) // Texture images are always a single byte per component, but images can be

<a id="l00493" name="l00493"></a>[ 493](structensightservice_1_1_update_texture.xhtml#aa1e144f705e33bd9d96d2e15bcd6e9e7) // RGB (three components) or RGBA (four components) per pixel. RGBA are the

<a id="l00494" name="l00494"></a>[ 494](structensightservice_1_1_update_texture.xhtml#a70a85aa4869aab5dd34af3bc0e226b3f) // red, blue, green and alpha channels of the image.

<a id="l00495" name="l00495"></a>[ 495](structensightservice_1_1_update_texture.xhtml#a77a50c661bd0b3eb1d7c9814cd046ded) enum [TextureFormat](structensightservice_1_1_update_texture.xhtml#ad2a6342613ada16aa3484548ba964889) {

<a id="l00496" name="l00496"></a> 496 RGB = 0;

<a id="l00497" name="l00497"></a> 497 RGBA = 1;

<a id="l00498" name="l00498"></a> 498 }

<a id="l00499" name="l00499"></a> 499 uint64 id = 1; // texture entity id

<a id="l00500" name="l00500"></a> 500 uint64 parent_id = 2; // scene entity id

<a id="l00501" name="l00501"></a> 501 TextureFormat format = 3; // RGB or RGBA

<a id="l00502" name="l00502"></a> 502 uint32 width = 4; // texture width. not generally a power of 2

<a id="l00503" name="l00503"></a> 503 uint32 height = 5; // texture height. not generally a power of 2

<a id="l00504" name="l00504"></a>[ 504](structensightservice_1_1_scene_update_command.xhtml) bytes texels = 6; // packed RGB or RGBA values depending on 'format', in range \[0,255\]

<a id="l00505" name="l00505"></a> 505 

<a id="l00506" name="l00506"></a> 506 string hash = 7; // hash for this message payload

<a id="l00507" name="l00507"></a> 507 }

<a id="l00508" name="l00508"></a> 508 

<a id="l00509" name="l00509"></a> 509 

<a id="l00510" name="l00510"></a> 510 // @brief Aggregate command sent by EnSight to a client

<a id="l00511" name="l00511"></a>[ 511](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32ea) //

<a id="l00512" name="l00512"></a>[ 512](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaa1e55874750a5e9ffbf781850865d9db5) // This command represents a union of a number of different commands: UpdateSceneBegin, 

<a id="l00513" name="l00513"></a>[ 513](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaa376ded6d437b36e6d4723d10ebbce06d) // UpdateSceneEnd, DeleteID, UpdatePart, UpdateGroup, UpdateGeom, UpdateVariable and 

<a id="l00514" name="l00514"></a>[ 514](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaad94f319f295905fad771274a948f23b2) // UpdateView. To use the message, set the command\_type to the type of the message 

<a id="l00515" name="l00515"></a>[ 515](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaaff12110c26e2432cbb51f8376c754bfd) // and fill in the appropriate UpdateCommand sub-message.

<a id="l00516" name="l00516"></a>[ 516](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaa8bebef7917e62e6865b14ee4324fe63a) message [SceneUpdateCommand](structensightservice_1_1_scene_update_command.xhtml) {

<a id="l00517" name="l00517"></a>[ 517](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaaf50142ca9e996b6413249efd12a2932f) // @brief Specify the specific command type

<a id="l00518" name="l00518"></a>[ 518](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaabd21a4f2e37dc407eba9c73772229def) //

<a id="l00519" name="l00519"></a>[ 519](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaa96e7a65483ceb6e275395d287ca8ba82) // SceneUpdateCommand object can represent many different sub-commands, but

<a id="l00520" name="l00520"></a>[ 520](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32eaa9168213baa0fd71f984bdd986816c17d) // packed into a common message. The SceneUpdateCommandType is the specific

<a id="l00521" name="l00521"></a> 521 // sub-command type of the base message.

<a id="l00522" name="l00522"></a>[ 522](structensightservice_1_1_scene_update_command.xhtml#ad2e574a10bc991d150969412e8f02b83) enum [SceneUpdateCommandType](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32ea) {

<a id="l00523" name="l00523"></a> 523 UPDATE_SCENE_BEGIN = 0; // Marks the beginning of a scene update

<a id="l00524" name="l00524"></a> 524 UPDATE_SCENE_END = 1; // Marks the completion of a scene update

<a id="l00525" name="l00525"></a> 525 DELETE_ID = 2; // Tell the client to delete an entity ID that was defined in a previous scene update

<a id="l00526" name="l00526"></a> 526 UPDATE_PART = 3; // Create/update a Part entity

<a id="l00527" name="l00527"></a> 527 UPDATE_GROUP = 4; // Create/update a Group entity

<a id="l00528" name="l00528"></a> 528 UPDATE_GEOM = 5; // Create/update a Geom entity

<a id="l00529" name="l00529"></a>[ 529](structensightservice_1_1_scene_update_command.xhtml#a91bcb68baf42d2999d8c2d2a0ea432d8) UPDATE_VARIABLE = 6; // Create/update a Variable entity

<a id="l00530" name="l00530"></a>[ 530](structensightservice_1_1_scene_update_command.xhtml#a500d13e1434ddfb826009b35fee6f239) UPDATE_VIEW = 7; // Create/update a View entity

<a id="l00531" name="l00531"></a>[ 531](structensightservice_1_1_scene_update_command.xhtml#a15181da6b860d74a19145537a80b1ecd) UPDATE_TEXTURE = 8; // Create/update a Texture entity

<a id="l00532" name="l00532"></a>[ 532](structensightservice_1_1_scene_update_command.xhtml#a2be43cc114ba1ac05547163ae93ca436) }

<a id="l00533" name="l00533"></a>[ 533](structensightservice_1_1_scene_update_command.xhtml#aeeb4f30ece87f1297a61731661e907de) [SceneUpdateCommandType](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32ea) command_type = 1; // The update command type

<a id="l00534" name="l00534"></a>[ 534](structensightservice_1_1_scene_update_command.xhtml#ab5e63e84ec5a82863f9bfec43d77139d) 

<a id="l00535" name="l00535"></a>[ 535](structensightservice_1_1_scene_update_command.xhtml#afcde7ceff14d9abaee4db377b210b702) // @brief The union of the sub-command messages

<a id="l00536" name="l00536"></a>[ 536](structensightservice_1_1_scene_update_command.xhtml#abb22169ff158a93f91877af137ca0418) //

<a id="l00537" name="l00537"></a>[ 537](structensightservice_1_1_scene_update_command.xhtml#a43555d303a7430fd6687b357a063cdea) // Each SceneUpdateCommand message can be one of the types defined by the

<a id="l00538" name="l00538"></a>[ 538](structensightservice_1_1_scene_update_command.xhtml#a3b33359b9097d62e5a9936dcae649351) // command\_type. These are represented via a union message construct.

<a id="l00539" name="l00539"></a> 539 oneof UpdateCommand { 

<a id="l00540" name="l00540"></a> 540 [UpdateSceneBegin](structensightservice_1_1_update_scene_begin.xhtml) scene_begin = 2; // Begin a scene update 

<a id="l00541" name="l00541"></a> 541 [UpdateSceneEnd](structensightservice_1_1_update_scene_end.xhtml) scene_end = 3; // End a scene update

<a id="l00542" name="l00542"></a> 542 [DeleteID](structensightservice_1_1_delete_i_d.xhtml) delete_id = 4; // Delete a collection of entities from the cache

<a id="l00543" name="l00543"></a> 543 [UpdatePart](structensightservice_1_1_update_part.xhtml) update_part = 5; // Update a Part entity

<a id="l00544" name="l00544"></a> 544 [UpdateGroup](structensightservice_1_1_update_group.xhtml) update_group = 6; // Update a Group entity

<a id="l00545" name="l00545"></a> 545 [UpdateGeom](structensightservice_1_1_update_geom.xhtml) update_geom = 7; // Update a Geom entity

<a id="l00546" name="l00546"></a> 546 [UpdateVariable](structensightservice_1_1_update_variable.xhtml) update_variable = 8; // Update a Variable entity

<a id="l00547" name="l00547"></a> 547 [UpdateView](structensightservice_1_1_update_view.xhtml) update_view = 9; // Update a View entity

<a id="l00548" name="l00548"></a> 548 [UpdateTexture](structensightservice_1_1_update_texture.xhtml) update_texture = 10; // Update a Texture entity

<a id="l00549" name="l00549"></a> 549 }

<a id="l00550" name="l00550"></a> 550 }

[VECTOR](dynamic__visualization__store__enums_8h.xhtml#af6aa6351345da4151507012681b3aff0a1a85ef13eaa80e8561743892f9dba958)

@ VECTOR

XYZ Coordinates.

**Definition:** [dynamic\_visualization\_store\_enums.h:32](dynamic__visualization__store__enums_8h_source.xhtml#l00032)



[SCALAR](dynamic__visualization__store__enums_8h.xhtml#af6aa6351345da4151507012681b3aff0a7efbb6cac96595e63e8fa171bde1eb68)

@ SCALAR

Scalar.

**Definition:** [dynamic\_visualization\_store\_enums.h:31](dynamic__visualization__store__enums_8h_source.xhtml#l00031)



[ensightservice::DynamicSceneGraphService::GetSceneStream](group___d_s_g.xhtml#ga013fc67ee73abc7c3d7ce82115972b67)

rpc GetSceneStream(stream SceneClientCommand) returns(stream SceneUpdateCommand)

Start a new dynamic scene graph stream.

**Definition:** [dynamic\_scene\_graph.proto:135](dynamic__scene__graph_8proto_source.xhtml#l00135)



[ensightservice::DynamicSceneGraphService::GetAPIVersion](group___d_s_g.xhtml#ga52fdddcd2932b5fd9a19d0a740d24680)

rpc GetAPIVersion(VersionRequest versionrequest) returns(VersionReply)

Get the server version of the dynamic scene graph stream.

**Definition:** [dynamic\_scene\_graph.proto:140](dynamic__scene__graph_8proto_source.xhtml#l00140)



[ensightservice::DeleteID](structensightservice_1_1_delete_i_d.xhtml)

Delete a list of entities.

**Definition:** [dynamic\_scene\_graph.proto:236](dynamic__scene__graph_8proto_source.xhtml#l00236)



[ensightservice::SceneClientCommand](structensightservice_1_1_scene_client_command.xhtml)

Aggregate command sent by a dynamic scene graph client.

**Definition:** [dynamic\_scene\_graph.proto:204](dynamic__scene__graph_8proto_source.xhtml#l00204)



[ensightservice::SceneClientCommand::ClientCommandType](structensightservice_1_1_scene_client_command.xhtml#a0d35bc799b8649f6ca89ba7b81d85c9d)

ClientCommandType

**Definition:** [dynamic\_scene\_graph.proto:207](dynamic__scene__graph_8proto_source.xhtml#l00207)



[ensightservice::SceneClientInit](structensightservice_1_1_scene_client_init.xhtml)

Request by the client for an EnSight scene update.

**Definition:** [dynamic\_scene\_graph.proto:183](dynamic__scene__graph_8proto_source.xhtml#l00183)



[ensightservice::SceneClientUpdate](structensightservice_1_1_scene_client_update.xhtml)

Update a parameter in the EnSight session.

**Definition:** [dynamic\_scene\_graph.proto:194](dynamic__scene__graph_8proto_source.xhtml#l00194)



[ensightservice::SceneUpdateCommand](structensightservice_1_1_scene_update_command.xhtml)

Aggregate command sent by EnSight to a client.

**Definition:** [dynamic\_scene\_graph.proto:504](dynamic__scene__graph_8proto_source.xhtml#l00504)



[ensightservice::SceneUpdateCommand::SceneUpdateCommandType](structensightservice_1_1_scene_update_command.xhtml#a80ae6b52bf49715cfdc5392b614b32ea)

SceneUpdateCommandType

Specify the specific command type.

**Definition:** [dynamic\_scene\_graph.proto:511](dynamic__scene__graph_8proto_source.xhtml#l00511)



[ensightservice::UpdateGeom](structensightservice_1_1_update_geom.xhtml)

Update a Geom entity.

**Definition:** [dynamic\_scene\_graph.proto:370](dynamic__scene__graph_8proto_source.xhtml#l00370)



[ensightservice::UpdateGeom::ArrayType](structensightservice_1_1_update_geom.xhtml#a3ed862b91954d35069a7744676f30c0e)

ArrayType

**Definition:** [dynamic\_scene\_graph.proto:373](dynamic__scene__graph_8proto_source.xhtml#l00373)



[ensightservice::UpdateGroup](structensightservice_1_1_update_group.xhtml)

Update a Group entity.

**Definition:** [dynamic\_scene\_graph.proto:348](dynamic__scene__graph_8proto_source.xhtml#l00348)



[ensightservice::UpdatePart](structensightservice_1_1_update_part.xhtml)

Update a Part entity.

**Definition:** [dynamic\_scene\_graph.proto:269](dynamic__scene__graph_8proto_source.xhtml#l00269)



[ensightservice::UpdatePart::RenderingMode](structensightservice_1_1_update_part.xhtml#a08774fd175375ce53267c2596831ddec)

RenderingMode

**Definition:** [dynamic\_scene\_graph.proto:272](dynamic__scene__graph_8proto_source.xhtml#l00272)



[ensightservice::UpdatePart::TextureSampleMode](structensightservice_1_1_update_part.xhtml#a41ed8e636c5565d44c63fe1e8cd62163)

TextureSampleMode

**Definition:** [dynamic\_scene\_graph.proto:298](dynamic__scene__graph_8proto_source.xhtml#l00298)



[ensightservice::UpdatePart::TextureWrapMode](structensightservice_1_1_update_part.xhtml#a694e8e5cb74ec402c0edeb2c9d232796)

TextureWrapMode

**Definition:** [dynamic\_scene\_graph.proto:284](dynamic__scene__graph_8proto_source.xhtml#l00284)



[ensightservice::UpdatePart::TextureApplyMode](structensightservice_1_1_update_part.xhtml#a7d558b62f6603608dd88a4a1469f6736)

TextureApplyMode

**Definition:** [dynamic\_scene\_graph.proto:291](dynamic__scene__graph_8proto_source.xhtml#l00291)



[ensightservice::UpdatePart::ShadingMode](structensightservice_1_1_update_part.xhtml#a8a65fed5c948b9c4ee6165818da35b01)

ShadingMode

**Definition:** [dynamic\_scene\_graph.proto:278](dynamic__scene__graph_8proto_source.xhtml#l00278)



[ensightservice::UpdateSceneBegin](structensightservice_1_1_update_scene_begin.xhtml)

Begin an update sequence.

**Definition:** [dynamic\_scene\_graph.proto:223](dynamic__scene__graph_8proto_source.xhtml#l00223)



[ensightservice::UpdateSceneEnd](structensightservice_1_1_update_scene_end.xhtml)

End an update sequence.

**Definition:** [dynamic\_scene\_graph.proto:231](dynamic__scene__graph_8proto_source.xhtml#l00231)



[ensightservice::UpdateTexture](structensightservice_1_1_update_texture.xhtml)

Update a Texture entity.

**Definition:** [dynamic\_scene\_graph.proto:478](dynamic__scene__graph_8proto_source.xhtml#l00478)



[ensightservice::UpdateTexture::TextureFormat](structensightservice_1_1_update_texture.xhtml#ad2a6342613ada16aa3484548ba964889)

TextureFormat

Define the imaging format of a texture.

**Definition:** [dynamic\_scene\_graph.proto:485](dynamic__scene__graph_8proto_source.xhtml#l00485)



[ensightservice::UpdateVariable](structensightservice_1_1_update_variable.xhtml)

Update a Variable entity.

**Definition:** [dynamic\_scene\_graph.proto:421](dynamic__scene__graph_8proto_source.xhtml#l00421)



[ensightservice::UpdateVariable::VarLocation](structensightservice_1_1_update_variable.xhtml#a6049149a3d23ac732df1287d464a5e34)

VarLocation

Declare where a variable is defined to exist.

**Definition:** [dynamic\_scene\_graph.proto:426](dynamic__scene__graph_8proto_source.xhtml#l00426)



[ensightservice::UpdateVariable::VarDimension](structensightservice_1_1_update_variable.xhtml#a8a27406b9f0d1b4d04c7e220290a8832)

VarDimension

Declare the variable dimension.

**Definition:** [dynamic\_scene\_graph.proto:435](dynamic__scene__graph_8proto_source.xhtml#l00435)



[ensightservice::UpdateVariable::UndefinedDisplay](structensightservice_1_1_update_variable.xhtml#ab07eddb89db3f17a4111c2a2b0ba1c0e)

UndefinedDisplay

Undefined interpretation.

**Definition:** [dynamic\_scene\_graph.proto:453](dynamic__scene__graph_8proto_source.xhtml#l00453)



[ensightservice::UpdateVariable::PaletteInterpolation](structensightservice_1_1_update_variable.xhtml#aba525af8da57834327a98c6258f5fda1)

PaletteInterpolation

Palette interpolation options.

**Definition:** [dynamic\_scene\_graph.proto:443](dynamic__scene__graph_8proto_source.xhtml#l00443)



[ensightservice::UpdateView](structensightservice_1_1_update_view.xhtml)

Update a View entity.

**Definition:** [dynamic\_scene\_graph.proto:247](dynamic__scene__graph_8proto_source.xhtml#l00247)



[ensightservice::VariableLevel](structensightservice_1_1_variable_level.xhtml)

A "knot" point in the palette for the Variable.

**Definition:** [dynamic\_scene\_graph.proto:398](dynamic__scene__graph_8proto_source.xhtml#l00398)



[ensightservice::VersionReply](structensightservice_1_1_version_reply.xhtml)

The server API version.

**Definition:** [dynamic\_scene\_graph.proto:160](dynamic__scene__graph_8proto_source.xhtml#l00160)



[ensightservice::VersionReply::VersionEnumType](structensightservice_1_1_version_reply.xhtml#ad59fbb277db8881f4b306869ca3d2527)

VersionEnumType

version number

**Definition:** [dynamic\_scene\_graph.proto:165](dynamic__scene__graph_8proto_source.xhtml#l00165)



[ensightservice::VersionRequest](structensightservice_1_1_version_request.xhtml)

Request for the server API version.

**Definition:** [dynamic\_scene\_graph.proto:150](dynamic__scene__graph_8proto_source.xhtml#l00150)