Houdini Engine 9.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
HAPI_Common.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  */
7 
8 #ifndef __HAPI_COMMON_h__
9 #define __HAPI_COMMON_h__
10 
11 #include "HAPI_API.h"
12 
13 /////////////////////////////////////////////////////////////////////////////
14 // Defines
15 
16 #define HAPI_POSITION_VECTOR_SIZE 3
17 #define HAPI_SCALE_VECTOR_SIZE 3
18 #define HAPI_SHEAR_VECTOR_SIZE 3
19 #define HAPI_NORMAL_VECTOR_SIZE 3
20 #define HAPI_QUATERNION_VECTOR_SIZE 4
21 #define HAPI_EULER_VECTOR_SIZE 3
22 #define HAPI_UV_VECTOR_SIZE 2
23 #define HAPI_COLOR_VECTOR_SIZE 4
24 #define HAPI_CV_VECTOR_SIZE 4
25 
26 #define HAPI_PRIM_MIN_VERTEX_COUNT 1
27 #define HAPI_PRIM_MAX_VERTEX_COUNT 16
28 
29 #define HAPI_INVALID_PARM_ID -1
30 
31 #define HAPI_MAX_NUM_CONNECTIONS 128
32 
33 /// Common Default Attributes' Names
34 /// @{
35 #define HAPI_ATTRIB_POSITION "P"
36 #define HAPI_ATTRIB_UV "uv"
37 #define HAPI_ATTRIB_UV2 "uv2"
38 #define HAPI_ATTRIB_NORMAL "N"
39 #define HAPI_ATTRIB_TANGENT "tangentu"
40 #define HAPI_ATTRIB_TANGENT2 "tangentv"
41 #define HAPI_ATTRIB_COLOR "Cd"
42 #define HAPI_ATTRIB_NAME "name"
43 #define HAPI_ATTRIB_INSTANCE "instance"
44 #define HAPI_ATTRIB_ROT "rot"
45 #define HAPI_ATTRIB_SCALE "scale"
46 /// @}
47 
48 /// This is the name of the primitive group created from all the primitives
49 /// that are not in any user-defined group. This way, when you put all the
50 /// groups together you cover the entire mesh. This is important for some
51 /// clients where the mesh has to be defined in terms of submeshes that cover
52 /// the entire original mesh.
53 #define HAPI_UNGROUPED_GROUP_NAME "__ungrouped_group"
54 
55 /// Common image file format names (to use with the material extract APIs).
56 /// Note that you may still want to check if they are supported via
57 /// HAPI_GetSupportedImageFileFormats() since all formats are loaded
58 /// dynamically by Houdini on-demand so just because these formats are defined
59 /// here doesn't mean they are supported in your instance.
60 /// @{
61 #define HAPI_RAW_FORMAT_NAME "HAPI_RAW" // HAPI-only Raw Format
62 #define HAPI_PNG_FORMAT_NAME "PNG"
63 #define HAPI_JPEG_FORMAT_NAME "JPEG"
64 #define HAPI_BMP_FORMAT_NAME "Bitmap"
65 #define HAPI_TIFF_FORMAT_NAME "TIFF"
66 #define HAPI_TGA_FORMAT_NAME "Targa"
67 /// @}
68 
69 /// Default image file format's name - used when the image generated and has
70 /// no "original" file format and the user does not specify a format to
71 /// convert to.
72 #define HAPI_DEFAULT_IMAGE_FORMAT_NAME HAPI_PNG_FORMAT_NAME
73 
74 /// Name of subnet OBJ node containing the global nodes.
75 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
76 
77 /// Environment variables.
78 #define HAPI_ENV_HIP "HIP"
79 #define HAPI_ENV_JOB "JOB"
80 #define HAPI_ENV_CLIENT_NAME "HAPI_CLIENT_NAME"
81 
82 /// [HAPI_CACHE]
83 /// Common cache names. You can see these same cache names in the
84 /// Cache Manager window in Houdini (Windows > Cache Manager).
85 #define HAPI_CACHE_COP2_COOK "Old COP Cook Cache"
86 #define HAPI_CACHE_COP2_FLIPBOOK "Composite View Cache"
87 #define HAPI_CACHE_IMAGE "Image Cache"
88 #define HAPI_CACHE_OBJ "Object Transform Cache"
89 #define HAPI_CACHE_GL_TEXTURE "OpenGL Texture Cache"
90 #define HAPI_CACHE_GL_VERTEX "OpenGL Vertex Cache"
91 #define HAPI_CACHE_SOP "SOP Cache"
92 #define HAPI_CACHE_VEX "VEX File Cache"
93 /// [HAPI_CACHE]
94 
95 /// [HAPI_InputCurve]
96 /// HAPI input curve attribute
97 #define HAPI_ATTRIB_INPUT_CURVE_COORDS "hapi_input_curve_coords"
98 /// [HAPI_InputCurve]
99 
100 // Make sure our enums and structs are usable without those keywords, as-is,
101 // in C.
102 #ifdef __cplusplus
103  #define HAPI_C_ENUM_TYPEDEF( enum_name )
104  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
105 #else
106  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
107  typedef enum enum_name enum_name;
108  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
109  typedef struct struct_name struct_name;
110 #endif // __cplusplus
111 
112 /////////////////////////////////////////////////////////////////////////////
113 // Typedefs
114 
115 // C has no bool.
116 #ifdef __cplusplus
117  typedef bool HAPI_Bool;
118 #else
119  typedef char HAPI_Bool;
120 #endif // __cplusplus
121 
122 // x-bit Integers
123 // Thrift doesn't support unsigned integers, so we cast it as a signed 8-bit int, but only
124 // for automated code generation and thrift
125 #ifdef HAPI_AUTOGEN
126  typedef signed char int8_t;
127  typedef short int16_t;
128  typedef long long int64_t;
129  typedef signed char HAPI_UInt8; // signed 8-bit int for thrift to avoid overflow
130 #else
131  #include <stdint.h>
132  #ifdef HAPI_THRIFT_ABI
133  typedef int8_t HAPI_UInt8; // signed 8-bit int for thrift to avoid overflow
134  #else
135  typedef uint8_t HAPI_UInt8;
136  HAPI_STATIC_ASSERT(sizeof(HAPI_UInt8) == 1, unsupported_size_of_uint8);
137  #endif
138 #endif
139 
140 typedef int8_t HAPI_Int8;
141 HAPI_STATIC_ASSERT(sizeof(HAPI_Int8) == 1, unsupported_size_of_int8);
142 typedef int16_t HAPI_Int16;
143 HAPI_STATIC_ASSERT(sizeof(HAPI_Int16) == 2, unsupported_size_of_int16);
144 typedef int64_t HAPI_Int64;
145 HAPI_STATIC_ASSERT(sizeof(HAPI_Int64) == 8, unsupported_size_of_long);
146 
147 
148 // The process id has to be uint on Windows and int on any other platform.
149 #if ( defined _WIN32 || defined WIN32 )
150  typedef unsigned int HAPI_ProcessId;
151 #else
152  typedef int HAPI_ProcessId;
153 #endif
154 
155 /// Has to be 64-bit.
156 typedef HAPI_Int64 HAPI_SessionId;
157 
158 /// Use this with HAPI_GetString() to get the value.
159 /// See @ref HAPI_Fundamentals_Strings.
160 typedef int HAPI_StringHandle;
161 
163 
164 /// See @ref HAPI_Nodes_Basics.
165 typedef int HAPI_NodeId;
166 
167 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
168 /// See @ref HAPI_Parameters.
169 typedef int HAPI_ParmId;
170 
171 /// Use this with ::HAPI_GetPartInfo().
172 /// See @ref HAPI_Parts.
173 typedef int HAPI_PartId;
174 
175 /// Use this with PDG functions
177 
178 /// Backwards compatibility for HAPI_PDG_WorkitemId
179 typedef HAPI_PDG_WorkItemId HAPI_PDG_WorkitemId;
180 
181 /// Use this with PDG functions
183 
184 /// When we load a HIP file, we associate a HIP file ID with the created nodes
185 /// so that they can be looked up later
186 typedef int HAPI_HIPFileId;
187 
188 /////////////////////////////////////////////////////////////////////////////
189 // Enums
190 
192 {
203 };
205 
207 {
212 };
214 
216 {
218 
222 
223  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
225  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_0
227  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_1
229  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
231 };
233 
235 {
239 };
241 
243 {
255 
264 
267 
269 
271 };
273 
275 {
278 };
280 typedef int HAPI_ErrorCodeBits;
281 
283 {
290 };
292 
294 {
295  /// Everything cook successfully without errors
297  /// You should abort the cook.
299  /// Only some objects failed.
306 
308 };
310 
312 {
318 };
320 
322 {
328 };
330 
332 {
337 };
339 
340 /// Represents the data type of a parm.
341 /// As you can see, some of these high level types share the same underlying
342 /// raw data type. For instance, both string and file parameter types can be
343 /// represented with strings, yet semantically they are different. We will
344 /// group high level parameter types that share an underlying raw data type
345 /// together, so you can always check the raw data type of a parameter based
346 /// on its high level data type by checking a range of values.
348 {
349  /// @{
354  /// }@
355 
356  /// @{
359  /// @}
360 
361  /// @{
366  /// @}
367 
369 
370  /// @{
373  /// @}
374 
375  /// @{
380  /// @}
381 
382  // Helpers
383 
384  /// Total number of supported parameter types.
386 
389 
392 
395 
398 
401 
404 
407 };
409 
410 /// Corresponds to the types as shown in the Houdini Type Properties
411 /// window and in DialogScript files. Available on HAPI_ParmInfo
412 /// See: <a href="http://www.sidefx.com/docs/houdini/ref/windows/optype.html#parmtypes">Parameter types</a>
413 ///
415 {
416  /// "int", "integer"
425  /// "toggle", "embed"
429  /// "vector", "vector3"
433  /// "intvector", "intvector3"
438  /// "dir", "direction"
440  /// "color", "rgb"
442  /// "color4", "rgba"
466 
467  /// The following apply to HAPI_PARMTYPE_FOLDER type parms.
468  /// Radio buttons Folder
470  /// Collapsible Folder
472  /// Simple Folder
474  /// Tabs Folder
476 };
478 
480 {
481  /// Parameter is not a menu
483  /// Menu Only, Single Selection
485  /// Mini Menu Only, Single Selection
487  /// Field + Single Selection Menu
489  /// Field + Multiple Selection Menu
491 };
493 
495 {
497  /// Just the presets binary blob
499  /// Presets blob within an .idx file format
502 };
504 
506 {
520 };
522 typedef int HAPI_NodeTypeBits;
523 
524 /// Flags used to filter compositions of node lists.
525 /// Flags marked 'Recursive Flag' will exclude children whos parent does not
526 /// satisfy the flag, even if the children themselves satisfy the flag.
528 {
531  /// Recursive Flag
533  /// Recursive Flag
540 
541  /// OBJ Node Specific Flags
546 
547  /// SOP Node Specific Flags
548  /// Looks for "curve"
550  /// Looks for Guide Geometry
552 
553  /// TOP Node Specific Flags
554  /// All TOP nodes except schedulers
556 
557  /// Recursive Flag
558  /// Nodes that are not bypassed
560 };
562 typedef int HAPI_NodeFlagsBits;
563 
565 {
571 };
573 
575 {
582 };
584 
586 {
592 };
594 
596 {
601 };
603 
605 {
611 };
613 
615 {
620 };
622 
624 {
629 };
631 
633 {
641 };
643 
645 {
647 
657 
667 
669 };
671 
673 {
675  /// Implicit type based on data
677  /// Position
679  /// Homogeneous position
681  /// Direction vector
683  /// Normal
685  /// Color
687  /// Quaternion
689  /// 3x3 Matrix
691  /// Matrix
693  /// Parametric interval
695  /// "Private" (hidden)
697  /// 2x2 Bounding box
699  /// 3x3 Bounding box
701  /// Texture coordinate
704 };
706 
708 {
710 
711  /// Most geos will be of this type which essentially means a geo
712  /// not of the other types.
714 
715  /// An exposed edit node.
716  /// See @ref HAPI_IntermediateAssetsResults.
718 
719  /// An input geo that can accept geometry from the host.
720  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
722 
723  /// A curve.
724  /// See @ref HAPI_Curves.
726 
728 };
730 
732 {
742 };
744 
746 {
751 };
753 
755 {
761 };
763 
765 {
779 };
781 
783 {
784  HAPI_TRS = 0,
790 
792 };
794 
796 {
797  HAPI_XYZ = 0,
803 
805 };
807 
809 {
817 
819 };
821 
823 {
825  HAPI_IMAGE_PACKING_SINGLE, /// Single Channel
826  HAPI_IMAGE_PACKING_DUAL, /// Dual Channel
828  HAPI_IMAGE_PACKING_BGR, /// RGB Reversed
830  HAPI_IMAGE_PACKING_ABGR, /// RGBA Reversed
832 
835 };
837 
838 /// Used with ::HAPI_GetEnvInt() to retrieve basic information
839 /// about the HAPI implementation currently being linked
840 /// against. Note that as of HAPI version 2.0, these enum values are
841 /// guaranteed never to change so you can reliably get this information from
842 /// any post-2.0 version of HAPI. The same goes for the actual
843 /// ::HAPI_GetEnvInt() API call.
845 {
847 
848  /// The three components of the Houdini version that HAPI is
849  /// expecting to link against.
850  /// @{
855  /// @}
856 
857  /// The two components of the Houdini Engine (marketed) version.
858  /// @{
861  /// @}
862 
863  /// This is a monotonously increasing API version number that can be used
864  /// to lock against a certain API for compatibility purposes. Basically,
865  /// when this number changes code compiled against the HAPI.h methods
866  /// might no longer compile. Semantic changes to the methods will also
867  /// cause this version to increase. This number will be reset to 0
868  /// every time the Houdini Engine version is bumped.
870 
872 };
874 
875 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
876 /// session-specific information.
878 {
880 
881  /// License Type. See ::HAPI_License.
883 
885 };
887 
888 /// Identifies a memory cache
890 {
891  /// Current memory usage in MB. Setting this to 0 invokes
892  /// a cache clear.
894 
895  HAPI_CACHEPROP_HAS_MIN, /// True if it actually has a minimum size.
896  HAPI_CACHEPROP_MIN, /// Min cache memory limit in MB.
897  HAPI_CACHEPROP_HAS_MAX, /// True if it actually has a maximum size.
898  HAPI_CACHEPROP_MAX, /// Max cache memory limit in MB.
899 
900  /// How aggressive to cull memory. This only works for:
901  /// - ::HAPI_CACHE_COP2_COOK where:
902  /// 0 -> Never reduce inactive cache.
903  /// 1 -> Always reduce inactive cache.
904  /// - ::HAPI_CACHE_OBJ where:
905  /// 0 -> Never enforce the max memory limit.
906  /// 1 -> Always enforce the max memory limit.
907  /// - ::HAPI_CACHE_SOP where:
908  /// 0 -> When to Unload = Never
909  /// When to Limit Max Memory = Never
910  /// 1-2 -> When to Unload = Based on Flag
911  /// When to Limit Max Memory = Never
912  /// 3-4 -> When to Unload = Based on Flag
913  /// When to Limit Max Memory = Always
914  /// 5 -> When to Unload = Always
915  /// When to Limit Max Memory = Always
917 };
918 
920 
921 /// Type of sampling for heightfield
923 {
926 };
928 
929 /// Used with PDG functions
931 {
935 
937 };
939 
940 /// Used with PDG functions
942 {
943  /// An empty, undefined event. Should be ignored.
945 
946  /// Sent when a new work item is added by a node
948  /// Sent when a work item is deleted from a node
950  /// Sent when a work item's state changes
952 
953  /// Sent when a work item has a dependency added
955  /// Sent when a dependency is removed from a work item
957 
958  /// Sent from dynamic work items that generate from a cooked item
960  /// Sent when the parent item for a work item is deleted
962 
963  /// A node event that indicates that node is about to have all its work items cleared
965 
966  /// Sent when an error is issued by the node
968  /// Sent when an warning is issued by the node
970 
971  /// Sent for each node in the graph, when a cook completes
973 
974  /// A node event indicating that one more items in the node will be dirtied
976  /// A node event indicating that the node has finished dirtying items
978 
979  /// A event indicating that the entire graph is about to be dirtied
981 
982  /// A work item event that indicates the item has been selected in the TOPs UI
984 
985  /// Sent when a new node is created
987  /// Sent when a node was removed from the graph
989  /// Sent when a node was renamed
991  /// Sent when a node was connected to another node
993  /// Sent when a node is disconnected from another node
995  /// Sent when a node cooks for the first time
997 
998  /// Deprecated
1000  /// Deprecated
1002  /// Deprecated
1004  /// Deprecated
1006  /// Deprecated
1008  /// Deprecated
1010  /// Deprecated
1012  /// Deprecated
1014  /// Sent when an output file is added to a work item
1016 
1017  /// Deprecated
1019  /// Sent for each node in the graph, when a cook starts
1021  /// Deprecated
1023  /// Deprecated
1025 
1026  /// Deprecated
1028  /// Deprecated
1030  /// A special enum that represents the OR of all event types
1032  /// A special enum that represents the OR of both the `CookError` and `CookWarning` events
1034 
1035  /// Sent when a new scheduler is added to the graph
1037  /// Sent when a scheduler is removed from the graph
1039  /// Deprecated
1041  /// Deprecated
1043 
1044  /// Sent when a node finishes cooking
1046  /// Sent when a node finished generating
1048 
1049  /// Sent when a work item's frame changes
1051 
1053 };
1055 
1056 /// Used with PDG functions
1058 {
1069 };
1071 
1072 /// Backwards compatibility for HAPI_PDG_WorkitemState
1074 
1076 {
1080 };
1082 
1084 {
1087 };
1089 
1090 /////////////////////////////////////////////////////////////////////////////
1091 // Main API Structs
1092 
1093 // GENERICS -----------------------------------------------------------------
1094 
1095 /// A Transform with Quaternion rotation
1097 {
1098  float position[ HAPI_POSITION_VECTOR_SIZE ];
1099  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
1100  float scale[ HAPI_SCALE_VECTOR_SIZE ];
1101  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
1102 
1104 };
1106 
1107 /// A Transform with Euler rotation
1109 {
1110  float position[ HAPI_POSITION_VECTOR_SIZE ];
1111  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
1112  float scale[ HAPI_SCALE_VECTOR_SIZE ];
1113  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
1114 
1117 };
1119 
1120 // SESSIONS -----------------------------------------------------------------
1121 
1122 /// Identifies a session
1124 {
1125  /// The type of session determines the which implementation will be
1126  /// used to communicate with the Houdini Engine library.
1128 
1129  /// Some session types support multiple simultaneous sessions. This means
1130  /// that each session needs to have a unique identifier.
1131  HAPI_SessionId id;
1132 };
1134 
1135 /// Configurations for sessions
1137 {
1138  /// The number of subconnections in this session
1140 
1141  /// Specification for the port numbers
1143 
1144  /// Specifies a range of port numbers, [minPort, maxPort]
1145  int minPort;
1146  int maxPort;
1147 
1148  /// Specifies a list of port numbers
1150 
1151  // Must match the buffer type passed to the HARS executable through the
1152  // command line or ::HAPI_StartThriftSharedMemoryServer
1154 
1155  // Must match the buffer size passed to the HARS executable through the
1156  // command line or ::HAPI_StartThriftSharedMemoryServer. This is the size of
1157  // the shared memory buffer in megabytes (MB).
1159 
1161 };
1163 
1164 /// Options to configure a Thrift server being started from HARC.
1166 {
1167  /// Close the server automatically when all clients disconnect from it.
1169 
1170  /// Timeout in milliseconds for waiting on the server to
1171  /// signal that it's ready to serve. If the server fails
1172  /// to signal within this time interval, the start server call fails
1173  /// and the server process is terminated.
1174  float timeoutMs;
1175 
1176  // Specifies the maximum status verbosity that will be logged.
1178 
1179  // Only used when starting a Thrift shared memory server. This controls the
1180  // type of buffer that is used in the underlying communication protocol. A
1181  // fixed length buffer is faster but the data passed to any single HAPI API
1182  // call cannot exceed the total length of the buffer. A ring buffer is
1183  // slower but has no limitations on the size of the data.
1185 
1186  // Only used when starting a Thrift shared memory server. This variable
1187  // specifies the size in megabytes (MB) of the allocated shared memory
1188  // buffer.
1190 };
1192 
1193 // TIME ---------------------------------------------------------------------
1194 
1195 /// Data for global timeline, used with ::HAPI_SetTimelineOptions()
1197 {
1198  double fps;
1199 
1200  double startTime;
1201  double endTime;
1202 };
1204 
1205 // ASSETS -------------------------------------------------------------------
1206 
1207 /// Meta-data about an HDA, returned by ::HAPI_GetAssetInfo()
1209 {
1210  /// Use the node id to get the asset's parameters.
1211  /// See @ref HAPI_Nodes_Basics.
1212  HAPI_NodeId nodeId;
1213 
1214  /// The objectNodeId differs from the regular nodeId in that for
1215  /// geometry based assets (SOPs) it will be the node id of the dummy
1216  /// object (OBJ) node instead of the asset node. For object based assets
1217  /// the objectNodeId will equal the nodeId. The reason the distinction
1218  /// exists is because transforms are always stored on the object node
1219  /// but the asset parameters may not be on the asset node if the asset
1220  /// is a geometry asset so we need both.
1221  HAPI_NodeId objectNodeId;
1222 
1223  /// It's possible to instantiate an asset without cooking it.
1224  /// See @ref HAPI_Assets_Cooking.
1226 
1227  HAPI_StringHandle nameSH; /// Instance name (the label + a number).
1228  HAPI_StringHandle labelSH; /// This is what any end user should be shown.
1229  HAPI_StringHandle filePathSH; /// Path to the .otl library file.
1230  HAPI_StringHandle versionSH; /// User-defined asset version.
1231  HAPI_StringHandle fullOpNameSH; /// Full asset name and namespace.
1232  HAPI_StringHandle helpTextSH; /// Asset help marked-up text.
1233  HAPI_StringHandle helpURLSH; /// Asset help URL.
1234 
1235  int objectCount; /// See @ref HAPI_Objects.
1236  int handleCount; /// See @ref HAPI_Handles.
1237 
1238  /// Transform inputs exposed by the asset. For OBJ assets this is the
1239  /// number of transform inputs on the OBJ node. For SOP assets, this is
1240  /// the singular transform input on the dummy wrapper OBJ node.
1241  /// See @ref HAPI_AssetInputs.
1243 
1244  /// Geometry inputs exposed by the asset. For SOP assets this is
1245  /// the number of geometry inputs on the SOP node itself. OBJ assets
1246  /// will always have zero geometry inputs.
1247  /// See @ref HAPI_AssetInputs.
1249 
1250  /// Geometry outputs exposed by the asset. For SOP assets this is
1251  /// the number of geometry outputs on the SOP node itself. OBJ assets
1252  /// will always have zero geometry outputs.
1253  /// See @ref HAPI_AssetInputs.
1255 
1256  /// For incremental updates. Indicates whether any of the assets's
1257  /// objects have changed. Refreshed only during an asset cook.
1259 
1260  /// For incremental updates. Indicates whether any of the asset's
1261  /// materials have changed. Refreshed only during an asset cook.
1263 };
1265 
1266 /// Options which affect how nodes are cooked.
1268 {
1269  /// Normally, geos are split into parts in two different ways. First it
1270  /// is split by group and within each group it is split by primitive type.
1271  ///
1272  /// For example, if you have a geo with group1 covering half of the mesh
1273  /// and volume1 and group2 covering the other half of the mesh, all of
1274  /// curve1, and volume2 you will end up with 5 parts. First two parts
1275  /// will be for the half-mesh of group1 and volume1, and the last three
1276  /// will cover group2.
1277  ///
1278  /// This toggle lets you disable the splitting by group and just have
1279  /// the geo be split by primitive type alone. By default, this is true
1280  /// and therefore geos will be split by group and primitive type. If
1281  /// set to false, geos will only be split by primitive type.
1283  HAPI_StringHandle splitGroupSH;
1284 
1285  /// This toggle lets you enable the splitting by unique values
1286  /// of a specified attribute. By default, this is false and
1287  /// the geo be split as described above.
1288  /// as described above. If this is set to true, and splitGeosByGroup
1289  /// set to false, mesh geos will be split on attribute values
1290  /// The attribute name to split on must be created with HAPI_SetCustomString
1291  /// and then the splitAttrSH handle set on the struct.
1293  HAPI_StringHandle splitAttrSH;
1294 
1295  /// For meshes only, this is enforced by convexing the mesh. Use -1
1296  /// to avoid convexing at all and get some performance boost.
1298 
1299  /// For curves only.
1300  /// If this is set to true, then all curves will be refined to a linear
1301  /// curve and you can no longer access the original CVs. You can control
1302  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
1303  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
1305 
1306  /// Controls the number of divisions per unit distance when refining
1307  /// a curve to linear. The default in Houdini is 8.0.
1309 
1310  /// If this option is turned on, then we will recursively clear the
1311  /// errors and warnings (and messages) of all nodes before performing
1312  /// the cook.
1314 
1315  /// Decide whether to recursively cook all templated geos or not.
1317 
1318  /// Decide whether to split points by vertex attributes. This takes
1319  /// all vertex attributes and tries to copy them to their respective
1320  /// points. If two vertices have any difference in their attribute values,
1321  /// the corresponding point is split into two points. This is repeated
1322  /// until all the vertex attributes have been copied to the points.
1323  ///
1324  /// With this option enabled, you can reduce the total number of vertices
1325  /// on a game engine side as sharing of attributes (like UVs) is optimized.
1326  /// To make full use of this feature, you have to think of Houdini points
1327  /// as game engine vertices (sharable). With this option OFF (or before
1328  /// this feature existed) you had to map Houdini vertices to game engine
1329  /// vertices, to make sure all attribute values are accounted for.
1331 
1332  /// Choose how you want the cook to handle packed primitives.
1333  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
1335 
1336  /// Choose which special part types should be handled. Unhandled special
1337  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
1340 
1341  /// If enabled, sets the ::HAPI_PartInfo::hasChanged member during the
1342  /// cook. If disabled, the member will always be true. Checking for
1343  /// part changes can be expensive, so there is a potential performance
1344  /// gain when disabled.
1346 
1347  /// This toggle lets you enable the caching of the mesh topology.
1348  /// By default, this is false. If this is set to true, cooking a mesh
1349  /// geometry will update only the topology if the number of points changed.
1350  /// Use this to get better performance on deforming meshes.
1352 
1353  /// If enabled, calls to ::HAPI_CookNode() on an OBJ node will cook the output
1354  /// nodes of any nested SOP nodes. If none exist or the option is disabled,
1355  /// HAPI will instead cook the display nodes of any nested SOP nodes.
1357 
1358  /// For internal use only. :)
1360 };
1362 
1363 // NODES --------------------------------------------------------------------
1364 
1365 /// Meta-data for a Houdini Node
1367 {
1368  HAPI_NodeId id;
1369  HAPI_NodeId parentId;
1370  HAPI_StringHandle nameSH;
1372 
1373  /// Always true unless the asset's definition has changed due to loading
1374  /// a duplicate asset definition and from another OTL asset library
1375  /// file OR deleting the OTL asset library file used by this node's asset.
1377 
1378  /// Total number of cooks of this node.
1380 
1381  /// Use this unique id to grab the OP_Node pointer for this node.
1382  /// If you're linking against the C++ HDK, include the OP_Node.h header
1383  /// and call OP_Node::lookupNode().
1385 
1386  /// This is the internal node path in the Houdini scene graph. This path
1387  /// is meant to be abstracted away for most client purposes but for
1388  /// advanced uses it can come in handy.
1389  HAPI_StringHandle internalNodePathSH;
1390 
1391  /// Total number of parameters this asset has exposed. Includes hidden
1392  /// parameters.
1393  /// See @ref HAPI_Parameters.
1395 
1396  /// Number of values. A single parameter may have more than one value so
1397  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
1398  /// @{
1402  /// @}
1403 
1404  /// The total number of choices among all the combo box parameters.
1405  /// See @ref HAPI_Parameters_ChoiceLists.
1407 
1408  /// The number of child nodes. This is 0 for all nodes that are not
1409  /// node networks.
1411 
1412  /// The number of inputs this specific node has.
1414 
1415  /// The number of outputs this specific node has.
1417 
1418  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
1419  /// this set to true. Only such nodes can be deleted using
1420  /// ::HAPI_DeleteNode().
1422 
1423  /// Indicates if this node will change over time
1425 };
1427 
1428 // PARAMETERS ---------------------------------------------------------------
1429 
1430 ///
1431 /// Contains parameter information like name, label, type, and size.
1432 ///
1434 {
1435  /// The parent id points to the id of the parent parm
1436  /// of this parm. The parent parm is something like a folder.
1437  HAPI_ParmId id;
1438 
1439  /// Parameter id of the parent of this parameter.
1440  HAPI_ParmId parentId;
1441 
1442  /// Child index within its immediate parent parameter.
1444 
1445  /// The HAPI type of the parm
1447 
1448  /// The Houdini script-type of the parm
1450 
1451  /// Some parameter types require additional type information.
1452  /// - File path parameters will indicate what file extensions they
1453  /// expect in a space-separated list of wild-cards. This is set
1454  /// in the Operator Type Properties using the File Pattern
1455  /// parameter property.
1456  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
1457  HAPI_StringHandle typeInfoSH;
1458 
1459  /// For the majority of parameter types permission will not be applicable.
1460  /// For file path parameters these permissions will indicate how the
1461  /// asset plans to use the file: whether it will only read it, only write
1462  /// to it, or both. This is set in the Operator Type Properties using
1463  /// the Browse Mode parameter property.
1465 
1466  /// Number of tags on this parameter.
1468 
1469  /// Tuple size. For scalar parameters this value is 1, but for vector
1470  /// parameters this value can be greater. For example, a 3 vector would
1471  /// have a size of 3. For folders and folder lists, this value is the
1472  /// number of children they own.
1473  int size;
1474 
1475  /// Any ::HAPI_ParmType can be a choice list. If this is set to
1476  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
1477  /// Otherwise, the parameter is a choice list of the indicated type.
1478  /// See @ref HAPI_Parameters_ChoiceLists.
1480 
1481  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
1482  /// choice list, this tells you how many choices it currently has.
1483  /// Note that some menu parameters can have a dynamic number of choices
1484  /// so it is important that this count is re-checked after every cook.
1485  /// See @ref HAPI_Parameters_ChoiceLists.
1487 
1488  /// Note that folders are not real parameters in Houdini so they do not
1489  /// have names. The folder names given here are generated from the name
1490  /// of the folderlist (or switcher) parameter which is a parameter. The
1491  /// folderlist parameter simply defines how many of the "next" parameters
1492  /// belong to the first folder, how many of the parameters after that
1493  /// belong to the next folder, and so on. This means that folder names
1494  /// can change just by reordering the folders around so don't rely on
1495  /// them too much. The only guarantee here is that the folder names will
1496  /// be unique among all other parameter names.
1497  HAPI_StringHandle nameSH;
1498 
1499  /// The label string for the parameter
1500  HAPI_StringHandle labelSH;
1501 
1502  /// If this parameter is a multiparm instance than the
1503  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
1504  /// containing #'s for the parts of the name that use the instance number.
1505  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
1506  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
1507  /// replaced by the instance number. For regular parms, the
1508  /// ::HAPI_ParmInfo::templateNameSH is identical to the
1509  /// ::HAPI_ParmInfo::nameSH.
1510  HAPI_StringHandle templateNameSH;
1511 
1512  /// The help string for this parameter
1513  HAPI_StringHandle helpSH;
1514 
1515  /// Whether min/max exists for the parameter values.
1516  /// @{
1521  /// @}
1522 
1523  /// Parameter value range, shared between int and float parameters.
1524  /// @{
1525  float min;
1526  float max;
1527  float UIMin;
1528  float UIMax;
1529  /// @}
1530 
1531  /// Whether this parm should be hidden from the user entirely. This is
1532  /// mostly used to expose parameters as asset meta-data but not allow the
1533  /// user to directly modify them.
1535 
1536  /// Whether this parm should appear enabled or disabled.
1538 
1539  /// If true, it means this parameter doesn't actually exist on the node
1540  /// in Houdini but was added by Houdini Engine as a spare parameter.
1541  /// This is just for your information. The behaviour of this parameter
1542  /// is not any different than a non-spare parameter.
1544 
1545  HAPI_Bool joinNext; /// Whether this parm should be on the same line as
1546  /// the next parm.
1547  HAPI_Bool labelNone; /// Whether the label should be displayed.
1548 
1549  /// The index to use to look into the values array in order to retrieve
1550  /// the actual value(s) of this parameter.
1551  /// @{
1556  /// @}
1557 
1558  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1559  /// this parameter accepts.
1561 
1562  /// The node input parameter could have another subtype filter specified,
1563  /// like "Object: Geometry Only". In this case, this value will specify
1564  /// that extra filter. If the filter demands a node that HAPI does not
1565  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1566  /// NONE as such a node is not settable through HAPI.
1568 
1569  /// See @ref HAPI_Parameters_MultiParms.
1570  /// @{
1572 
1573  int instanceNum; /// The index of the instance in the multiparm.
1574  int instanceLength; /// The number of parms in a multiparm instance.
1575  int instanceCount; /// The number of instances in a multiparm.
1576 
1577  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1579 
1581  /// @}
1582 
1583  /// Provides the raw condition string which is used to evaluate the
1584  /// the visibility of a parm
1585  HAPI_StringHandle visibilityConditionSH;
1586 
1587  /// Provides the raw condition string which is used to evalute whether
1588  /// a parm is enabled or disabled
1589  HAPI_StringHandle disabledConditionSH;
1590 
1591  /// Whether or not the "Use Menu Item Token As Value" checkbox was checked in a integer menu item.
1593 };
1595 
1596 /// Meta-data for a combo-box / choice parm
1598 {
1599  HAPI_ParmId parentParmId;
1600  HAPI_StringHandle labelSH;
1601 
1602  /// This evaluates to the value of the token associated with the label
1603  /// applies to string menus only.
1604  HAPI_StringHandle valueSH;
1605 };
1607 
1608 // HANDLES ------------------------------------------------------------------
1609 
1610 ///
1611 /// Contains handle information such as the type of handle
1612 /// (translate, rotate, scale, softxform ...etc) and the number of
1613 /// parameters the current handle is bound to.
1614 ///
1616 {
1617  HAPI_StringHandle nameSH;
1618  HAPI_StringHandle typeNameSH;
1619 
1621 };
1623 
1624 ///
1625 /// Contains binding information that maps the handle parameter to
1626 /// the asset parameter. The index is only used for int and float vector
1627 /// and colour parms.
1628 ///
1630 {
1631  HAPI_StringHandle handleParmNameSH;
1632  HAPI_StringHandle assetParmNameSH;
1633 
1634  HAPI_ParmId assetParmId;
1636 };
1638 
1639 // OBJECTS ------------------------------------------------------------------
1640 
1641 /// Meta-data for an OBJ Node
1643 {
1644  HAPI_StringHandle nameSH;
1645 
1646  /// @deprecated This member is no longer used
1647  HAPI_StringHandle objectInstancePathSH;
1648 
1649  /// For incremental updates. Indicates whether the object's transform
1650  /// has changed. Refreshed only during an asset cook.
1652 
1653  /// For incremental updates. Indicates whether any of the object's
1654  /// geometry nodes have changed. Refreshed only during an asset cook.
1656 
1657  /// Whether the object is hidden and should not be shown. Some objects
1658  /// should be hidden but still brought into the host environment, for
1659  /// example those used only for instancing.
1660  /// See @ref HAPI_Instancing.
1662 
1663  /// See @ref HAPI_Instancing.
1665 
1666  /// Determine if this object is being instanced. Normally, this implies
1667  /// that while this object may not be visible, it should still be
1668  /// brought into the host application because it is needed by an instancer.
1669  /// See @ref HAPI_Instancing.
1671 
1672  /// @deprecated No longer used. See @ref HAPI_Geos
1674 
1675  /// Use the node id to get the node's parameters.
1676  /// Using the HDK, you can also get the raw node C++ pointer for this
1677  /// object's internal node.
1678  /// See @ref HAPI_Nodes_Basics.
1679  HAPI_NodeId nodeId;
1680 
1681  /// If the object is an instancer, this variable gives the object id of
1682  /// the object that should be instanced.
1683  /// See @ref HAPI_Instancing.
1684  HAPI_NodeId objectToInstanceId;
1685 };
1687 
1688 // GEOMETRY -----------------------------------------------------------------
1689 
1690 /// Meta-data for a SOP Node
1692 {
1694  HAPI_StringHandle nameSH;
1695 
1696  /// Use the node id to get the node's parameters.
1697  /// Using the HDK, you can also get the raw node C++ pointer for this
1698  /// object's internal node.
1699  HAPI_NodeId nodeId;
1700 
1701  /// Whether the SOP node has been exposed by dragging it into the
1702  /// editable nodes section of the asset definition.
1704 
1705  /// Has the templated flag turned on which means "expose as read-only".
1707 
1708  /// Final Result (Display SOP).
1710 
1711  /// For incremental updates.
1713 
1714  /// @deprecated This variable is deprecated and should no longer be used.
1715  /// Materials are now separate from parts. They are maintained at the
1716  /// asset level so you only need to check if the material itself has
1717  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1718  /// on the part.
1720 
1721  /// Groups.
1722  /// @{
1726  /// @}
1727 
1728  /// Total number of parts this geometry contains.
1729  /// See @ref HAPI_Parts.
1731 };
1733 
1734 /// Meta-data describing a Geo Part
1736 {
1737  /// Id to identify this part relative to it's Geo
1738  HAPI_PartId id;
1739  /// String handle for the name of the part
1740  HAPI_StringHandle nameSH;
1742 
1745  /// Number of points. Note that this is NOT the number
1746  /// of "positions" as "points" may imply. If your
1747  /// geometry has 3 points then set this to 3 and not 3*3.
1749 
1750  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1751 
1752  /// If this is true, don't display this part. Load its data but then
1753  /// instance it where the corresponding instancer part tells you to
1754  /// instance it.
1756 
1757  /// The number of parts that this instancer part is instancing.
1758  /// For example, if we're instancing a curve and a box, they would come
1759  /// across as two parts, hence this count would be two.
1760  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId.
1762 
1763  /// The number of instances that this instancer part is instancing.
1764  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1765  /// if I'm instancing the merge of a curve and a box 5 times, this count
1766  /// would be 5. To be clear, all instanced parts are instanced the same
1767  /// number of times and with the same transform for each instance.
1768  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1769  /// each instance.
1771 
1772  /// If this is false, the underlying attribute data appear to match that of
1773  /// the previous cook. In this case you may be able to re-used marshaled
1774  /// data from the previous cook.
1776 };
1778 
1779 /// Meta-data describing an attribute
1780 /// See @ref HAPI_Attributes.
1782 {
1784 
1787 
1788  /// When converting from the Houdini native GA geometry format to the
1789  /// GT geometry format HAPI uses, some attributes might change owners.
1790  /// For example, in Houdini GA curves can have points shared by
1791  /// vertices but the GT format only supports curve vertices
1792  /// (no points). This means that if you had point attributes on a curve
1793  /// in Houdini, when it comes out of HAPI those point attributes will now
1794  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1795  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1796  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1798 
1799  /// Number of attributes. This count will match the number of values
1800  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1801  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1802  /// To be clear, this is not the number of values in the attribute, rather
1803  /// it is the number of attributes. If your geometry has three 3D points
1804  /// then this count will be 3 (not 3*3) while the
1805  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1806  int count;
1807 
1808  /// Number of values per attribute.
1809  /// Note that this is NOT the memory size of the attribute. It is the
1810  /// number of values per attributes. Multiplying this by the
1811  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1812  /// size per attribute.
1814 
1815  /// Total number of elements for an array attribute.
1816  /// An array attribute can be thought of as a 2 dimensional array where
1817  /// the 2nd dimension can vary in size for each element in the 1st
1818  /// dimension. Therefore this returns the total number of values in
1819  /// the entire array.
1820  /// This should be used to determine the total storage
1821  /// size needed by multiplying with ::HAPI_AttributeInfo::storage.
1822  /// Note that this will be 0 for a non-array attribute.
1824 
1825  /// Attribute type info
1826  /// This is used to help identify the type of data stored in an attribute.
1827  /// Using the type is recommended over using just an attribute's name to identify
1828  /// its purpose.
1830 };
1832 
1833 // MATERIALS ----------------------------------------------------------------
1834 
1836 {
1837  /// This is the HAPI node id for the SHOP node this material is attached
1838  /// to. Use it to get access to the parameters (which contain the
1839  /// texture paths).
1840  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1841  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1842  /// will never change for a specific material.
1843  HAPI_NodeId nodeId;
1844 
1846 
1848 };
1850 
1851 /// Describes an image format, used with ::HAPI_GetSupportedImageFileFormats()
1853 {
1854  HAPI_StringHandle nameSH;
1855  HAPI_StringHandle descriptionSH;
1856  HAPI_StringHandle defaultExtensionSH;
1857 };
1859 
1860 /// Data for an image, used with ::HAPI_GetImageInfo() and ::HAPI_SetImageInfo()
1862 {
1863  /// Unlike the other members of this struct changing imageFileFormatNameSH
1864  /// and giving this struct back to ::HAPI_SetImageInfo() nothing will happen.
1865  /// Use this member variable to derive which image file format will be used
1866  /// by the ::HAPI_ExtractImageToFile() and ::HAPI_ExtractImageToMemory()
1867  /// functions if called with image_file_format_name set to NULL. This way,
1868  /// you can decide whether to ask for a file format conversion (slower) or
1869  /// not (faster).
1870  /// (Read-only)
1871  HAPI_StringHandle imageFileFormatNameSH;
1872 
1873  int xRes;
1874  int yRes;
1875 
1877 
1878  HAPI_Bool interleaved; /// ex: true = RGBRGBRGB, false = RRRGGGBBB
1880 
1881  /// Adjust the gamma of the image. For anything less than
1882  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1883  double gamma;
1884 };
1886 
1887 // ANIMATION ----------------------------------------------------------------
1888 
1889 /// Data for a single Key Frame
1891 {
1892  float time;
1893  float value;
1894  float inTangent;
1895  float outTangent;
1896 };
1898 
1899 // VOLUMES ------------------------------------------------------------------
1900 
1901 ///
1902 /// This represents a volume primitive but does not contain the actual voxel
1903 /// values, which can be retrieved on a per-tile basis.
1904 ///
1905 /// See @ref HAPI_Volumes.
1906 ///
1908 {
1909  HAPI_StringHandle nameSH;
1910 
1912 
1913  /// Each voxel is identified with an index. The indices will range
1914  /// between:
1915  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1916  /// @{
1917  int xLength;
1918  int yLength;
1919  int zLength;
1920  int minX;
1921  int minY;
1922  int minZ;
1923  /// @}
1924 
1925  /// Number of values per voxel.
1926  /// The tuple size field is 1 for scalars and 3 for vector data.
1928 
1929  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1931 
1932  /// The dimensions of each tile.
1933  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1935 
1936  /// The transform of the volume with respect to the lengths.
1937  /// The volume may be positioned anywhere in space.
1939 
1940  /// Denotes special situations where the volume tiles are not perfect
1941  /// cubes, but are tapered instead.
1943 
1944  /// If there is taper involved, denotes the amount of taper involved.
1945  /// @{
1946  float xTaper;
1947  float yTaper;
1948  /// @}
1949 };
1951 
1952 ///
1953 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1954 /// The size of each dimension is ::HAPI_VolumeInfo::tileSize
1955 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1956 ///
1958 {
1959  int minX;
1960  int minY;
1961  int minZ;
1963 };
1965 
1966 ///
1967 /// Describes the visual settings of a volume.
1968 ///
1970 {
1972  float iso;
1973  float density;
1974 };
1976 
1977 // CURVES -------------------------------------------------------------------
1978 
1979 ///
1980 /// Represents the meta-data associated with a curve mesh (a number
1981 /// of curves of the same type).
1983 {
1985 
1986  /// The number of curves contained in this curve mesh.
1988 
1989  /// The number of control vertices (CVs) for all curves.
1991 
1992  /// The number of knots for all curves.
1994 
1995  /// Whether the curves in this curve mesh are periodic (closed by appending a new point)
1997 
1998  /// Whether the curves in this curve mesh are rational.
2000 
2001  /// Order of 1 is invalid. 0 means there is a varying order.
2002  int order;
2003 
2004  /// Whether the curve has knots.
2006 
2007  /// Similar to isPeriodic, but creates a polygon instead of a separate point
2009 };
2011 
2012 // Curve info dealing specifically with input curves
2014 {
2015  /// The desired curve type of the curve.
2016  /// Note that this is NOT necessarily equal to the value in HAPI_CurveInfo
2017  /// in the case of curve refinement.
2019 
2020  /// The desired order for your input curve.
2021  /// This is your desired order, which may differ from HAPI_CurveInfo
2022  /// as it will do range checks and adjust the actual order accordingly.
2023  int order;
2024 
2025  /// Whether or not the curve is closed.
2026  /// May differ from HAPI_CurveInfo::isPeriodic depending on the curveType
2027  /// (e.g. A NURBs curve is never technically closed according to HAPI_CurveInfo).
2029 
2030  /// Whether or not to reverse the curve input.
2032 
2033  // Input method type (CVs or Brekapoints).
2035 
2036  // Parameterization - Only used when inputMethod is BREAKPOINTS
2038 
2039 };
2041 
2042 // BASIC PRIMITIVES ---------------------------------------------------------
2043 
2044 /// Data for a Box Part
2046 {
2047  float center[ HAPI_POSITION_VECTOR_SIZE ];
2048  float size[ HAPI_SCALE_VECTOR_SIZE ];
2049  float rotation[ HAPI_EULER_VECTOR_SIZE ];
2050 };
2052 
2053 /// Data for a Sphere Part
2055 {
2056  float center[ HAPI_POSITION_VECTOR_SIZE ];
2057  float radius;
2058 };
2060 
2061 /// Data for SOP camera primitives
2063 {
2064  double focal;
2065  double aperture;
2066  double pixelAspect;
2068  double fStop;
2070  HAPI_Int64 resX;
2071  HAPI_Int64 resY;
2072  double cropX[ 2 ];
2073  double cropY[ 2 ];
2074  double winX[ 2 ];
2075  double winY[ 2 ];
2076  double clipNear;
2077  double clipFar;
2078  double shutterOpen;
2080  double orthoZoom;
2081  double guideScale;
2083 };
2085 
2086 // PDG Structs --------------------------------------------------------------
2087 
2088 /// Data associated with a PDG Event
2090 {
2091  /// id of related node.
2092  HAPI_NodeId nodeId;
2093 
2094  /// id of related work item.
2095  HAPI_PDG_WorkItemId workItemId;
2096 
2097  /// id of related work item dependency.
2098  HAPI_PDG_WorkItemId dependencyId;
2099 
2100  /// ::HAPI_PDG_WorkItemState value of current state for state change.
2102 
2103  /// ::HAPI_PDG_WorkItemState value of last state for state change.
2105 
2106  /// ::HAPI_PDG_EventType event type.
2108 
2109  /// String handle of the event message (> 0 if there is a message).
2110  HAPI_StringHandle msgSH;
2111 };
2113 
2114 /// Info for a PDG work item
2116 {
2117  /// The work item's index
2118  int index;
2119 
2120  /// The number of output files reported by the work item.
2122 
2123  /// Name of the work item
2124  HAPI_StringHandle nameSH;
2125 };
2127 
2128 /// Backwards compatibility for HAPI_PDG_WorkitemInfo
2130 
2131 /// Data for a PDG output file
2133 {
2134  /// The file path of the output.
2136 
2137  /// The file tag of the output.
2138  int tagSH;
2139 
2140  /// Hash of the output file. Properties such as the file path and
2141  /// modification time of the file are typical inputs to the hash function,
2142  /// but this will vary based on the node that is producing the output file.
2143  HAPI_Int64 hash;
2144 };
2146 
2147 /// Backwards compatibility for HAPI_PDG_WorkitemResultInfo
2149 
2150 // SESSIONSYNC --------------------------------------------------------------
2151 
2152 ///
2153 /// Contains the information for synchronizing viewport between Houdini
2154 /// and other applications. When SessionSync is enabled, Houdini will
2155 /// update this struct with its viewport state. It will also update
2156 /// its own viewport if this struct has changed.
2157 /// The data stored is in Houdini's right-handed Y-up coordinate system.
2158 ///
2160 {
2161  /// The world position of the viewport camera's pivot.
2162  float position[ HAPI_POSITION_VECTOR_SIZE ];
2163 
2164  /// The direction of the viewport camera stored as a quaternion.
2165  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
2166 
2167  /// The offset from the pivot to the viewport camera's
2168  /// actual world position.
2169  float offset;
2170 };
2172 
2173 ///
2174 /// Contains the information for synchronizing general SessionSync
2175 /// state between Houdini and other applications. When SessionSync
2176 /// is enabled, Houdini will update this struct with its state.
2177 /// It will also update its internal state if this struct has
2178 /// changed.
2179 ///
2181 {
2182  /// Specifies whether Houdini's current time is used for Houdini Engine
2183  /// cooks. This is automatically enabled in SessionSync where
2184  /// Houdini's viewport forces cooks to use Houdini's current time.
2185  /// This is disabled in non-SessionSync mode, but can be toggled to
2186  /// override default behaviour.
2188 
2189  /// Specifies whether viewport synchronization is enabled. If enabled,
2190  /// in SessionSync, Houdini will update its own viewport using
2191  /// ::HAPI_Viewport.
2193 };
2195 
2196 /// Configuration options for Houdini's compositing context
2198 {
2199  /// Specifies the maximum allowed width of an image in the compositor
2201 
2202  /// Specifies the maximum allowed height of an image in the compositor
2204 };
2206 
2207 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:191
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:1221
"vector", "vector3"
Definition: HAPI_Common.h:430
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:20
Min cache memory limit in MB.
Definition: HAPI_Common.h:897
A event indicating that the entire graph is about to be dirtied.
Definition: HAPI_Common.h:980
HAPI_StringHandle disabledConditionSH
Definition: HAPI_Common.h:1589
Sent when a dependency is removed from a work item.
Definition: HAPI_Common.h:956
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1694
Sent when an output file is added to a work item.
Definition: HAPI_Common.h:1015
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1497
int maximumResolutionX
Specifies the maximum allowed width of an image in the compositor.
Definition: HAPI_Common.h:2200
HAPI_NodeId nodeId
id of related node.
Definition: HAPI_Common.h:2092
Data for an image, used with HAPI_GetImageInfo() and HAPI_SetImageInfo()
Definition: HAPI_Common.h:1861
HAPI_StringHandle labelSH
Instance name (the label + a number).
Definition: HAPI_Common.h:1228
HAPI_StringHandle nameSH
String handle for the name of the part.
Definition: HAPI_Common.h:1740
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1664
HAPI_VolumeVisualType
Definition: HAPI_Common.h:632
Sent for each node in the graph, when a cook completes.
Definition: HAPI_Common.h:972
HAPI_Bool reverse
Whether or not to reverse the curve input.
Definition: HAPI_Common.h:2031
Sent when an error is issued by the node.
Definition: HAPI_Common.h:967
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1876
int parmStringValueCount
Definition: HAPI_Common.h:1401
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:1313
Texture coordinate.
Definition: HAPI_Common.h:702
Recursive Flag.
Definition: HAPI_Common.h:534
Recursive Flag.
Definition: HAPI_Common.h:532
HAPI_JobStatus
Definition: HAPI_Common.h:234
A work item event that indicates the item has been selected in the TOPs UI.
Definition: HAPI_Common.h:983
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:1479
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:522
HAPI_PDG_WorkItemId HAPI_PDG_WorkitemId
Backwards compatibility for HAPI_PDG_WorkitemId.
Definition: HAPI_Common.h:179
int16_t HAPI_Int16
Definition: HAPI_Common.h:142
Data for a PDG output file.
Definition: HAPI_Common.h:2132
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1644
Sent when a node finished generating.
Definition: HAPI_Common.h:1047
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1684
HAPI_PDG_WorkItemId dependencyId
id of related work item dependency.
Definition: HAPI_Common.h:2098
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:1304
HAPI_StatusVerbosity verbosity
Definition: HAPI_Common.h:1177
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:228
HAPI_ParmId id
Definition: HAPI_Common.h:1437
int HAPI_PDG_WorkItemId
Use this with PDG functions.
Definition: HAPI_Common.h:176
Just the presets binary blob.
Definition: HAPI_Common.h:498
int intValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1552
"dir", "direction"
Definition: HAPI_Common.h:439
HAPI_Bool isEditable
Definition: HAPI_Common.h:1703
int HAPI_PDG_GraphContextId
Use this with PDG functions.
Definition: HAPI_Common.h:182
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:16
HAPI_RampType rampType
Definition: HAPI_Common.h:1580
int floatValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1553
HAPI_CameraProjectionType
Definition: HAPI_Common.h:614
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:1334
Parametric interval.
Definition: HAPI_Common.h:694
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:877
"toggle", "embed"
Definition: HAPI_Common.h:426
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1370
#define HAPI_API
Definition: HAPI_API.h:79
OBJ Node Specific Flags.
Definition: HAPI_Common.h:542
HAPI_NodeFlags
Definition: HAPI_Common.h:527
HAPI_GeoType
Definition: HAPI_Common.h:707
A special enum that represents the OR of all event types.
Definition: HAPI_Common.h:1031
int instanceCount
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1575
HAPI_StringHandle visibilityConditionSH
Definition: HAPI_Common.h:1585
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:1225
int eventType
HAPI_PDG_EventType event type.
Definition: HAPI_Common.h:2107
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:1262
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1560
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1618
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic (closed by appending a new point) ...
Definition: HAPI_Common.h:1996
HAPI_RSTOrder
Definition: HAPI_Common.h:782
int parmFloatValueCount
Definition: HAPI_Common.h:1400
"intvector", "intvector3"
Definition: HAPI_Common.h:434
HAPI_CurveType
Definition: HAPI_Common.h:585
HAPI_PDG_State
Used with PDG functions.
Definition: HAPI_Common.h:930
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1785
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:1103
Sent when a work item has a dependency added.
Definition: HAPI_Common.h:954
Single Channel.
Definition: HAPI_Common.h:826
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1699
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:1384
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1843
Sent when a node cooks for the first time.
Definition: HAPI_Common.h:996
int HAPI_HIPFileId
Definition: HAPI_Common.h:186
HAPI_ImageDataFormat
Definition: HAPI_Common.h:808
int handleCount
See Objects.
Definition: HAPI_Common.h:1236
Sent when a new node is created.
Definition: HAPI_Common.h:986
HAPI_PartType
Definition: HAPI_Common.h:731
int currentState
HAPI_PDG_WorkItemState value of current state for state change.
Definition: HAPI_Common.h:2101
HAPI_EnvIntType
Definition: HAPI_Common.h:844
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1999
HAPI_Bool isValid
Definition: HAPI_Common.h:1376
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:1116
int choiceIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1555
Sent when the parent item for a work item is deleted.
Definition: HAPI_Common.h:961
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:311
HAPI_StringHandle labelSH
The label string for the parameter.
Definition: HAPI_Common.h:1500
True if it actually has a maximum size.
Definition: HAPI_Common.h:898
HAPI_Permissions
Definition: HAPI_Common.h:321
Sent when a node is disconnected from another node.
Definition: HAPI_Common.h:994
Info for a PDG work item.
Definition: HAPI_Common.h:2115
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:18
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:224
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:1316
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:1513
HAPI_VolumeVisualType type
Definition: HAPI_Common.h:1971
3x3 Bounding box
Definition: HAPI_Common.h:700
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:1168
HAPI_ThriftSharedMemoryBufferType
Definition: HAPI_Common.h:1083
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:1510
Meta-data about an HDA, returned by HAPI_GetAssetInfo()
Definition: HAPI_Common.h:1208
HAPI_AttributeOwner
Definition: HAPI_Common.h:574
int stringValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1554
HAPI_InputCurveParameterization
Definition: HAPI_Common.h:604
HAPI_StringHandle fullOpNameSH
User-defined asset version.
Definition: HAPI_Common.h:1231
Only some objects failed.
Definition: HAPI_Common.h:300
HAPI_ErrorCode
Definition: HAPI_Common.h:274
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1854
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:1421
HAPI_Bool splitGeosByAttribute
Definition: HAPI_Common.h:1292
HAPI_InputCurveParameterization breakpointParameterization
Definition: HAPI_Common.h:2037
HAPI_Int64 resY
Definition: HAPI_Common.h:2071
Meta-data for an OBJ Node.
Definition: HAPI_Common.h:1642
HAPI_NodeType
Definition: HAPI_Common.h:505
HAPI_CurveType curveType
Definition: HAPI_Common.h:1984
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1993
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1520
Sent when a work item is deleted from a node.
Definition: HAPI_Common.h:949
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1631
int HAPI_StringHandle
Definition: HAPI_Common.h:160
HAPI_StatusVerbosity
Definition: HAPI_Common.h:215
Sent when a node finishes cooking.
Definition: HAPI_Common.h:1045
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1797
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:226
HAPI_ThriftSharedMemoryBufferType sharedMemoryBufferType
Definition: HAPI_Common.h:1153
int minPort
Specifies a range of port numbers, [minPort, maxPort].
Definition: HAPI_Common.h:1145
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:1165
Total number of supported parameter types.
Definition: HAPI_Common.h:385
HAPI_ChoiceListType
Definition: HAPI_Common.h:479
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1775
HAPI_Bool enableSharedMemoryDataTransfer
Definition: HAPI_Common.h:1160
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1755
Everything cook successfully without errors.
Definition: HAPI_Common.h:296
HAPI_Bool spare
Definition: HAPI_Common.h:1543
Menu Only, Single Selection.
Definition: HAPI_Common.h:484
int index
The work item's index.
Definition: HAPI_Common.h:2118
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:1115
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1987
HAPI_Bool cacheMeshTopology
Definition: HAPI_Common.h:1351
HAPI_PrmScriptType
Definition: HAPI_Common.h:414
A node event indicating that the node has finished dirtying items.
Definition: HAPI_Common.h:977
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:2005
HAPI_STATIC_ASSERT(sizeof(HAPI_UInt8)==1, unsupported_size_of_uint8)
HAPI_XYZOrder
Definition: HAPI_Common.h:795
HAPI_CurveType curveType
Definition: HAPI_Common.h:2018
Data associated with a PDG Event.
Definition: HAPI_Common.h:2089
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1617
int HAPI_ParmId
Definition: HAPI_Common.h:169
int tagSH
The file tag of the output.
Definition: HAPI_Common.h:2138
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:1440
Meta-data describing a Geo Part.
Definition: HAPI_Common.h:1735
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:280
HAPI_AttributeTypeInfo typeInfo
Definition: HAPI_Common.h:1829
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:2002
int instancedPartCount
Definition: HAPI_Common.h:1761
int tagCount
Number of tags on this parameter.
Definition: HAPI_Common.h:1467
int transformInputCount
See Handles.
Definition: HAPI_Common.h:1242
int outputCount
The number of outputs this specific node has.
Definition: HAPI_Common.h:1416
HAPI_TCP_PortType portType
Specification for the port numbers.
Definition: HAPI_Common.h:1142
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:1339
Sent when a work item's frame changes.
Definition: HAPI_Common.h:1050
HAPI_PDG_WorkItemState
Used with PDG functions.
Definition: HAPI_Common.h:1057
int instanceStartOffset
The number of instances in a multiparm.
Definition: HAPI_Common.h:1578
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:1443
HAPI_NodeId id
Definition: HAPI_Common.h:1368
HAPI_ImagePacking
Definition: HAPI_Common.h:822
HAPI_CameraProjectionType projection
Definition: HAPI_Common.h:2082
Meta-data for a Houdini Node.
Definition: HAPI_Common.h:1366
int connectionCount
The number of subconnections in this session.
Definition: HAPI_Common.h:1139
HAPI_Transform transform
Definition: HAPI_Common.h:1938
HAPI_PDG_EventType
Used with PDG functions.
Definition: HAPI_Common.h:941
HAPI_SessionType
Definition: HAPI_Common.h:282
HAPI_StorageType storage
Definition: HAPI_Common.h:1786
Presets blob within an .idx file format.
Definition: HAPI_Common.h:500
int instanceLength
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1574
int lastState
HAPI_PDG_WorkItemState value of last state for state change.
Definition: HAPI_Common.h:2104
HAPI_Permissions permissions
Definition: HAPI_Common.h:1464
Configuration options for Houdini's compositing context.
Definition: HAPI_Common.h:2197
HAPI_VolumeType
Definition: HAPI_Common.h:623
Data for SOP camera primitives.
Definition: HAPI_Common.h:2062
HAPI_ParmType type
The HAPI type of the parm.
Definition: HAPI_Common.h:1446
HAPI_Int64 sharedMemoryBufferSize
Definition: HAPI_Common.h:1158
License Type. See HAPI_License.
Definition: HAPI_Common.h:882
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1855
HAPI_HeightFieldSampling
Type of sampling for heightfield.
Definition: HAPI_Common.h:922
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:490
HAPI_ImagePacking packing
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1879
HAPI_Int64 HAPI_SessionId
Has to be 64-bit.
Definition: HAPI_Common.h:156
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:17
HAPI_Bool labelNone
the next parm.
Definition: HAPI_Common.h:1547
HAPI_GeoType type
Definition: HAPI_Common.h:1693
HAPI_SessionId id
Definition: HAPI_Common.h:1131
int HAPI_ProcessId
Definition: HAPI_Common.h:152
HAPI_RampType
Definition: HAPI_Common.h:331
Configurations for sessions.
Definition: HAPI_Common.h:1136
Options which affect how nodes are cooked.
Definition: HAPI_Common.h:1267
HAPI_ParmType
Definition: HAPI_Common.h:347
Homogeneous position.
Definition: HAPI_Common.h:680
HAPI_Bool useMenuItemTokenAsValue
Whether or not the "Use Menu Item Token As Value" checkbox was checked in a integer menu item...
Definition: HAPI_Common.h:1592
HAPI_CurveOrders
Definition: HAPI_Common.h:754
HAPI_Bool invisible
Definition: HAPI_Common.h:1534
HAPI_Bool joinNext
Definition: HAPI_Common.h:1545
A node event that indicates that node is about to have all its work items cleared.
Definition: HAPI_Common.h:964
HAPI_StringHandle splitAttrSH
Definition: HAPI_Common.h:1293
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1847
double focusDistance
Definition: HAPI_Common.h:2067
Sent when a new scheduler is added to the graph.
Definition: HAPI_Common.h:1036
HAPI_PartType type
Definition: HAPI_Common.h:1741
#define HAPI_MAX_NUM_CONNECTIONS
Definition: HAPI_Common.h:31
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1604
double imagingDistance
Definition: HAPI_Common.h:2069
Identifies a session.
Definition: HAPI_Common.h:1123
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1655
HAPI_StringHandle versionSH
Path to the .otl library file.
Definition: HAPI_Common.h:1230
HAPI_StorageType
Definition: HAPI_Common.h:644
HAPI_Bool hasMax
Definition: HAPI_Common.h:1518
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1212
HAPI_ThriftSharedMemoryBufferType sharedMemoryBufferType
Definition: HAPI_Common.h:1184
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1856
int maximumResolutionY
Specifies the maximum allowed height of an image in the compositor.
Definition: HAPI_Common.h:2203
Sent when a node was renamed.
Definition: HAPI_Common.h:990
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1632
Meta-data for a SOP Node.
Definition: HAPI_Common.h:1691
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1709
"Private" (hidden)
Definition: HAPI_Common.h:696
A Transform with Euler rotation.
Definition: HAPI_Common.h:1108
HAPI_Bool isTimeDependent
Indicates if this node will change over time.
Definition: HAPI_Common.h:1424
Sent from dynamic work items that generate from a cooked item.
Definition: HAPI_Common.h:959
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1712
Sent when a work item's state changes.
Definition: HAPI_Common.h:951
int vertexCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1990
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1871
int64_t HAPI_Int64
Definition: HAPI_Common.h:144
Data for global timeline, used with HAPI_SetTimelineOptions()
Definition: HAPI_Common.h:1196
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1719
A node event indicating that one more items in the node will be dirtied.
Definition: HAPI_Common.h:975
HAPI_NodeId parentId
Definition: HAPI_Common.h:1369
Sent when a new work item is added by a node.
Definition: HAPI_Common.h:947
True if it actually has a minimum size.
Definition: HAPI_Common.h:896
RGBA Reversed.
Definition: HAPI_Common.h:831
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1706
Looks for Guide Geometry.
Definition: HAPI_Common.h:551
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:1379
HAPI_StringHandle filePathSH
This is what any end user should be shown.
Definition: HAPI_Common.h:1229
HAPI_Int64 resX
Definition: HAPI_Common.h:2070
HAPI_Bool checkPartChanges
Definition: HAPI_Common.h:1345
char HAPI_Bool
Definition: HAPI_Common.h:119
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1519
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:1457
HAPI_PDG_WorkItemId workItemId
id of related work item.
Definition: HAPI_Common.h:2095
HAPI_NodeType type
Definition: HAPI_Common.h:1371
HAPI_StatusType
Definition: HAPI_Common.h:206
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:1359
HAPI_StringHandle splitGroupSH
Definition: HAPI_Common.h:1283
HAPI_PresetType
Definition: HAPI_Common.h:494
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1600
Data for a Box Part.
Definition: HAPI_Common.h:2045
HAPI_Bool interleaved
Definition: HAPI_Common.h:1878
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:1413
HAPI_StringHandle helpURLSH
Asset help marked-up text.
Definition: HAPI_Common.h:1233
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1599
"int", "integer"
Definition: HAPI_Common.h:417
HAPI_Result
Definition: HAPI_Common.h:242
Direction vector.
Definition: HAPI_Common.h:682
int outputFileCount
The number of output files reported by the work item.
Definition: HAPI_Common.h:2121
HAPI_InputType
Definition: HAPI_Common.h:745
Max cache memory limit in MB.
Definition: HAPI_Common.h:916
HAPI_StringHandle nameSH
Name of the work item.
Definition: HAPI_Common.h:2124
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:1282
HAPI_State
Definition: HAPI_Common.h:293
HAPI_VolumeType type
Definition: HAPI_Common.h:1911
Sent for each node in the graph, when a cook starts.
Definition: HAPI_Common.h:1020
int objectCount
Asset help URL.
Definition: HAPI_Common.h:1235
HAPI_StringHandle helpTextSH
Full asset name and namespace.
Definition: HAPI_Common.h:1232
Implicit type based on data.
Definition: HAPI_Common.h:676
Sent when a scheduler is removed from the graph.
Definition: HAPI_Common.h:1038
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:1330
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1930
HAPI_InputCurveMethod
Definition: HAPI_Common.h:595
HAPI_InputCurveMethod inputMethod
Definition: HAPI_Common.h:2034
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:562
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:230
Data for a Sphere Part.
Definition: HAPI_Common.h:2054
Sent when a node was removed from the graph.
Definition: HAPI_Common.h:988
HAPI_AttributeTypeInfo
Definition: HAPI_Common.h:672
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:1258
A Transform with Quaternion rotation.
Definition: HAPI_Common.h:1096
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:21
HAPI_Bool cookUsingHoudiniTime
Definition: HAPI_Common.h:2187
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1942
HAPI_Int64 sharedMemoryBufferSize
Definition: HAPI_Common.h:1189
HAPI_GroupType
Definition: HAPI_Common.h:564
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1909
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:108
HAPI_Bool isVisible
Definition: HAPI_Common.h:1661
Field + Single Selection Menu.
Definition: HAPI_Common.h:488
Sent when an warning is issued by the node.
Definition: HAPI_Common.h:969
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:165
HAPI_PartId id
Id to identify this part relative to it's Geo.
Definition: HAPI_Common.h:1738
Describes an image format, used with HAPI_GetSupportedImageFileFormats()
Definition: HAPI_Common.h:1852
HAPI_CacheProperty
Identifies a memory cache.
Definition: HAPI_Common.h:889
HAPI_TCP_PortType
Definition: HAPI_Common.h:1075
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1670
You should abort the cook.
Definition: HAPI_Common.h:298
Sent when a node was connected to another node.
Definition: HAPI_Common.h:992
int primitiveGroupCount
Definition: HAPI_Common.h:1724
HAPI_PrmScriptType scriptType
The Houdini script-type of the parm.
Definition: HAPI_Common.h:1449
Data for a single Key Frame.
Definition: HAPI_Common.h:1890
HAPI_Int64 totalArrayElements
Definition: HAPI_Common.h:1823
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1227
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:486
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:162
HAPI_Bool isClosed
Similar to isPeriodic, but creates a polygon instead of a separate point.
Definition: HAPI_Common.h:2008
A special enum that represents the OR of both the CookError and CookWarning events.
Definition: HAPI_Common.h:1033
Parameter is not a menu.
Definition: HAPI_Common.h:482
2x2 Bounding box
Definition: HAPI_Common.h:698
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_InputCurve]
Definition: HAPI_Common.h:106
HAPI_TransformComponent
Definition: HAPI_Common.h:764
int filePathSH
The file path of the output.
Definition: HAPI_Common.h:2135
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1651
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1647
int8_t HAPI_Int8
Definition: HAPI_Common.h:140
HAPI_Bool hasMin
Definition: HAPI_Common.h:1517
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:1389
An empty, undefined event. Should be ignored.
Definition: HAPI_Common.h:944
HAPI_Bool preferOutputNodes
Definition: HAPI_Common.h:1356
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1537
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:1338
HAPI_StringHandle msgSH
String handle of the event message (> 0 if there is a message).
Definition: HAPI_Common.h:2110
Meta-data for a combo-box / choice parm.
Definition: HAPI_Common.h:1597
HAPI_SessionType type
Definition: HAPI_Common.h:1127
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1567
int HAPI_PartId
Definition: HAPI_Common.h:173
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1679
Dual Channel.
Definition: HAPI_Common.h:827
uint8_t HAPI_UInt8
Definition: HAPI_Common.h:135
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1571