Houdini Engine 3.5
 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 /// Common Default Attributes' Names
32 /// @{
33 #define HAPI_ATTRIB_POSITION "P"
34 #define HAPI_ATTRIB_UV "uv"
35 #define HAPI_ATTRIB_UV2 "uv2"
36 #define HAPI_ATTRIB_NORMAL "N"
37 #define HAPI_ATTRIB_TANGENT "tangentu"
38 #define HAPI_ATTRIB_TANGENT2 "tangentv"
39 #define HAPI_ATTRIB_COLOR "Cd"
40 #define HAPI_ATTRIB_NAME "name"
41 #define HAPI_ATTRIB_INSTANCE "instance"
42 /// @}
43 
44 /// This is the name of the primitive group created from all the primitives
45 /// that are not in any user-defined group. This way, when you put all the
46 /// groups together you cover the entire mesh. This is important for some
47 /// clients where the mesh has to be defined in terms of submeshes that cover
48 /// the entire original mesh.
49 #define HAPI_UNGROUPED_GROUP_NAME "__ungrouped_group"
50 
51 /// Common image file format names (to use with the material extract APIs).
52 /// Note that you may still want to check if they are supported via
53 /// HAPI_GetSupportedImageFileFormats() since all formats are loaded
54 /// dynamically by Houdini on-demand so just because these formats are defined
55 /// here doesn't mean they are supported in your instance.
56 /// @{
57 #define HAPI_RAW_FORMAT_NAME "HAPI_RAW" // HAPI-only Raw Format
58 #define HAPI_PNG_FORMAT_NAME "PNG"
59 #define HAPI_JPEG_FORMAT_NAME "JPEG"
60 #define HAPI_BMP_FORMAT_NAME "Bitmap"
61 #define HAPI_TIFF_FORMAT_NAME "TIFF"
62 #define HAPI_TGA_FORMAT_NAME "Targa"
63 /// @}
64 
65 /// Default image file format's name - used when the image generated and has
66 /// no "original" file format and the user does not specify a format to
67 /// convert to.
68 #define HAPI_DEFAULT_IMAGE_FORMAT_NAME HAPI_PNG_FORMAT_NAME
69 
70 /// Name of subnet OBJ node containing the global nodes.
71 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
72 
73 /// Environment variables.
74 #define HAPI_ENV_HIP "HIP"
75 #define HAPI_ENV_JOB "JOB"
76 #define HAPI_ENV_CLIENT_NAME "HAPI_CLIENT_NAME"
77 
78 /// [HAPI_CACHE]
79 /// Common cache names. You can see these same cache names in the
80 /// Cache Manager window in Houdini (Windows > Cache Manager).
81 #define HAPI_CACHE_COP_COOK "COP Cook Cache"
82 #define HAPI_CACHE_COP_FLIPBOOK "COP Flipbook Cache"
83 #define HAPI_CACHE_IMAGE "Image Cache"
84 #define HAPI_CACHE_OBJ "Object Transform Cache"
85 #define HAPI_CACHE_GL_TEXTURE "OpenGL Texture Cache"
86 #define HAPI_CACHE_GL_VERTEX "OpenGL Vertex Cache"
87 #define HAPI_CACHE_SOP "SOP Cache"
88 #define HAPI_CACHE_VEX "VEX File Cache"
89 /// [HAPI_CACHE]
90 
91 // Make sure our enums and structs are usable without those keywords, as-is,
92 // in C.
93 #ifdef __cplusplus
94  #define HAPI_C_ENUM_TYPEDEF( enum_name )
95  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
96 #else
97  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
98  typedef enum enum_name enum_name;
99  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
100  typedef struct struct_name struct_name;
101 #endif // __cplusplus
102 
103 /////////////////////////////////////////////////////////////////////////////
104 // Typedefs
105 
106 // C has no bool.
107 #ifdef __cplusplus
108  typedef bool HAPI_Bool;
109 #else
110  typedef char HAPI_Bool;
111 #endif // __cplusplus
112 
113 // 64-bit Integers
114 typedef long long HAPI_Int64;
115 HAPI_STATIC_ASSERT( sizeof( HAPI_Int64 ) == 8, unsupported_size_of_long );
116 
117 // The process id has to be uint on Windows and int on any other platform.
118 #if ( defined _WIN32 || defined WIN32 )
119  typedef unsigned int HAPI_ProcessId;
120 #else
121  typedef int HAPI_ProcessId;
122 #endif
123 
124 /// Has to be 64-bit.
126 
127 /// Use this with HAPI_GetString() to get the value.
128 /// See @ref HAPI_Fundamentals_Strings.
129 typedef int HAPI_StringHandle;
130 
132 
133 /// See @ref HAPI_Nodes_Basics.
134 typedef int HAPI_NodeId;
135 
136 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
137 /// See @ref HAPI_Parameters.
138 typedef int HAPI_ParmId;
139 
140 /// Use this with ::HAPI_GetPartInfo().
141 /// See @ref HAPI_Parts.
142 typedef int HAPI_PartId;
143 
144 /// Use this with PDG functions
146 
147 /// Use this with PDG functions
149 
150 /// When we load a HIP file, we associate a HIP file ID with the created nodes
151 /// so that they can be looked up later
152 typedef int HAPI_HIPFileId;
153 
154 /////////////////////////////////////////////////////////////////////////////
155 // Enums
156 
158 {
166 };
168 
170 {
175 };
177 
179 {
183 
184  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
186  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_0
188  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_1
190  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
192 };
194 
196 {
208 
215 
218 
220 
222 };
224 
226 {
229 };
231 typedef int HAPI_ErrorCodeBits;
232 
234 {
241 };
243 
245 {
246  /// Everything cook successfully without errors
248  /// You should abort the cook.
250  /// Only some objects failed.
257 
259 };
261 
263 {
269 };
271 
273 {
279 };
281 
283 {
288 };
290 
291 /// Represents the data type of a parm.
292 /// As you can see, some of these high level types share the same underlying
293 /// raw data type. For instance, both string and file parameter types can be
294 /// represented with strings, yet semantically they are different. We will
295 /// group high level parameter types that share an underlying raw data type
296 /// together, so you can always check the raw data type of a parameter based
297 /// on its high level data type by checking a range of values.
299 {
300  /// @{
305  /// }@
306 
307  /// @{
310  /// @}
311 
312  /// @{
317  /// @}
318 
320 
321  /// @{
324  /// @}
325 
326  /// @{
331  /// @}
332 
333  // Helpers
334 
335  /// Total number of supported parameter types.
337 
340 
343 
346 
349 
352 
355 
358 };
360 
361 /// Corresponds to the types as shown in the Houdini Type Properties
362 /// window and in DialogScript files. Available on HAPI_ParmInfo
363 /// See: <a href="http://www.sidefx.com/docs/houdini/ref/windows/optype.html#parmtypes">Parameter types</a>
364 ///
366 {
367  /// "int", "integer"
376  /// "toggle", "embed"
380  /// "vector", "vector3"
384  /// "intvector", "intvector3"
389  /// "dir", "direction"
391  /// "color", "rgb"
393  /// "color4", "rgba"
416 
417  /// The following apply to HAPI_PARMTYPE_FOLDER type parms.
418  /// Radio buttons Folder
420  /// Collapsible Folder
422  /// Simple Folder
424  /// Tabs Folder
426 };
428 
430 {
431  /// Parameter is not a menu
433  /// Menu Only, Single Selection
435  /// Mini Menu Only, Single Selection
437  /// Field + Single Selection Menu
439  /// Field + Multiple Selection Menu
441 };
443 
445 {
447  /// Just the presets binary blob
449  /// Presets blob within an .idx file format
452 };
454 
456 {
468 };
470 typedef int HAPI_NodeTypeBits;
471 
472 /// Flags used to filter compositions of node lists.
473 /// Flags marked 'Recursive Flag' will exclude children whos parent does not
474 /// satisfy the flag, even if the children themselves satisfy the flag.
476 {
479  /// Recursive Flag
481  /// Recursive Flag
488 
489  /// OBJ Node Specific Flags
494 
495  /// SOP Node Specific Flags
496  /// Looks for "curve"
498  /// Looks for Guide Geometry
500 
501  /// TOP Node Specific Flags
502  /// All TOP nodes except schedulers
504 
505 };
507 typedef int HAPI_NodeFlagsBits;
508 
510 {
515 };
517 
519 {
526 };
528 
530 {
536 };
538 
540 {
545 };
547 
549 {
557 };
559 
561 {
569 };
571 
573 {
575  /// Implicit type based on data
577  /// Position
579  /// Homogeneous position
581  /// Direction vector
583  /// Normal
585  /// Color
587  /// Quaternion
589  /// 3x3 Matrix
591  /// Matrix
593  /// Parametric interval
595  /// "Private" (hidden)
597  /// 2x2 Bounding box
599  /// 3x3 Bounding box
601  /// Texture coordinate
604 };
606 
608 {
610 
611  /// Most geos will be of this type which essentially means a geo
612  /// not of the other types.
614 
615  /// An exposed edit node.
616  /// See @ref HAPI_IntermediateAssetsResults.
618 
619  /// An input geo that can accept geometry from the host.
620  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
622 
623  /// A curve.
624  /// See @ref HAPI_Curves.
626 
628 };
630 
632 {
641 };
643 
645 {
650 };
652 
654 {
660 };
662 
664 {
678 };
680 
682 {
683  HAPI_TRS = 0,
689 
691 };
693 
695 {
696  HAPI_XYZ = 0,
702 
704 };
706 
708 {
716 
718 };
720 
722 {
724  HAPI_IMAGE_PACKING_SINGLE, /// Single Channel
725  HAPI_IMAGE_PACKING_DUAL, /// Dual Channel
727  HAPI_IMAGE_PACKING_BGR, /// RGB Reversed
729  HAPI_IMAGE_PACKING_ABGR, /// RGBA Reversed
731 
734 };
736 
737 /// Used with ::HAPI_GetEnvInt() to retrieve basic information
738 /// about the HAPI implementation currently being linked
739 /// against. Note that as of HAPI version 2.0, these enum values are
740 /// guaranteed never to change so you can reliably get this information from
741 /// any post-2.0 version of HAPI. The same goes for the actual
742 /// ::HAPI_GetEnvInt() API call.
744 {
746 
747  /// The three components of the Houdini version that HAPI is
748  /// expecting to link against.
749  /// @{
754  /// @}
755 
756  /// The two components of the Houdini Engine (marketed) version.
757  /// @{
760  /// @}
761 
762  /// This is a monotonously increasing API version number that can be used
763  /// to lock against a certain API for compatibility purposes. Basically,
764  /// when this number changes code compiled against the HAPI.h methods
765  /// might no longer compile. Semantic changes to the methods will also
766  /// cause this version to increase. This number will be reset to 0
767  /// every time the Houdini Engine version is bumped.
769 
771 };
773 
774 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
775 /// session-specific information.
777 {
779 
780  /// License Type. See ::HAPI_License.
782 
784 };
786 
787 /// Identifies a memory cache
789 {
790  /// Current memory usage in MB. Setting this to 0 invokes
791  /// a cache clear.
793 
794  HAPI_CACHEPROP_HAS_MIN, /// True if it actually has a minimum size.
795  HAPI_CACHEPROP_MIN, /// Min cache memory limit in MB.
796  HAPI_CACHEPROP_HAS_MAX, /// True if it actually has a maximum size.
797  HAPI_CACHEPROP_MAX, /// Max cache memory limit in MB.
798 
799  /// How aggressive to cull memory. This only works for:
800  /// - ::HAPI_CACHE_COP_COOK where:
801  /// 0 -> Never reduce inactive cache.
802  /// 1 -> Always reduce inactive cache.
803  /// - ::HAPI_CACHE_OBJ where:
804  /// 0 -> Never enforce the max memory limit.
805  /// 1 -> Always enforce the max memory limit.
806  /// - ::HAPI_CACHE_SOP where:
807  /// 0 -> When to Unload = Never
808  /// When to Limit Max Memory = Never
809  /// 1-2 -> When to Unload = Based on Flag
810  /// When to Limit Max Memory = Never
811  /// 3-4 -> When to Unload = Based on Flag
812  /// When to Limit Max Memory = Always
813  /// 5 -> When to Unload = Always
814  /// When to Limit Max Memory = Always
816 };
817 
819 
820 /// Type of sampling for heightfield
822 {
825 };
827 
828 /// Used with PDG functions
830 {
834 
836 };
838 
839 /// Used with PDG functions
841 {
843 
847 
850 
853 
855 
858 
860 
863 
865 
867 
873 
882 
884 
886 
889 
891 
893 
896 
900 
902 
904 };
906 
907 /// Used with PDG functions
909 {
920 };
922 
923 /////////////////////////////////////////////////////////////////////////////
924 // Main API Structs
925 
926 // GENERICS -----------------------------------------------------------------
927 
928 /// A Transform with Quaternion rotation
930 {
931  float position[ HAPI_POSITION_VECTOR_SIZE ];
932  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
933  float scale[ HAPI_SCALE_VECTOR_SIZE ];
934  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
935 
937 };
939 
940 /// A Transform with Euler rotation
942 {
943  float position[ HAPI_POSITION_VECTOR_SIZE ];
944  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
945  float scale[ HAPI_SCALE_VECTOR_SIZE ];
946  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
947 
950 };
952 
953 // SESSIONS -----------------------------------------------------------------
954 
955 /// Identifies a session
957 {
958  /// The type of session determines the which implementation will be
959  /// used to communicate with the Houdini Engine library.
961 
962  /// Some session types support multiple simultaneous sessions. This means
963  /// that each session needs to have a unique identifier.
964  HAPI_SessionId id;
965 };
967 
968 /// Options to configure a Thrift server being started from HARC.
970 {
971  /// Close the server automatically when all clients disconnect from it.
973 
974  /// Timeout in milliseconds for waiting on the server to
975  /// signal that it's ready to serve. If the server fails
976  /// to signal within this time interval, the start server call fails
977  /// and the server process is terminated.
978  float timeoutMs;
979 };
981 
982 // TIME ---------------------------------------------------------------------
983 
984 /// Data for global timeline, used with ::HAPI_SetTimelineOptions()
986 {
987  float fps;
988 
989  float startTime;
990  float endTime;
991 };
993 
994 // ASSETS -------------------------------------------------------------------
995 
996 /// Meta-data about an HDA, returned by ::HAPI_GetAssetInfo()
998 {
999  /// Use the node id to get the asset's parameters.
1000  /// See @ref HAPI_Nodes_Basics.
1001  HAPI_NodeId nodeId;
1002 
1003  /// The objectNodeId differs from the regular nodeId in that for
1004  /// geometry based assets (SOPs) it will be the node id of the dummy
1005  /// object (OBJ) node instead of the asset node. For object based assets
1006  /// the objectNodeId will equal the nodeId. The reason the distinction
1007  /// exists is because transforms are always stored on the object node
1008  /// but the asset parameters may not be on the asset node if the asset
1009  /// is a geometry asset so we need both.
1010  HAPI_NodeId objectNodeId;
1011 
1012  /// It's possible to instantiate an asset without cooking it.
1013  /// See @ref HAPI_Assets_Cooking.
1015 
1016  HAPI_StringHandle nameSH; /// Instance name (the label + a number).
1017  HAPI_StringHandle labelSH; /// This is what any end user should be shown.
1018  HAPI_StringHandle filePathSH; /// Path to the .otl library file.
1019  HAPI_StringHandle versionSH; /// User-defined asset version.
1020  HAPI_StringHandle fullOpNameSH; /// Full asset name and namespace.
1021  HAPI_StringHandle helpTextSH; /// Asset help marked-up text.
1022  HAPI_StringHandle helpURLSH; /// Asset help URL.
1023 
1024  int objectCount; /// See @ref HAPI_Objects.
1025  int handleCount; /// See @ref HAPI_Handles.
1026 
1027  /// Transform inputs exposed by the asset. For OBJ assets this is the
1028  /// number of transform inputs on the OBJ node. For SOP assets, this is
1029  /// the singular transform input on the dummy wrapper OBJ node.
1030  /// See @ref HAPI_AssetInputs.
1032 
1033  /// Geometry inputs exposed by the asset. For SOP assets this is
1034  /// the number of geometry inputs on the SOP node itself. OBJ assets
1035  /// will always have zero geometry inputs.
1036  /// See @ref HAPI_AssetInputs.
1038 
1039  /// Geometry outputs exposed by the asset. For SOP assets this is
1040  /// the number of geometry outputs on the SOP node itself. OBJ assets
1041  /// will always have zero geometry outputs.
1042  /// See @ref HAPI_AssetInputs.
1044 
1045  /// For incremental updates. Indicates whether any of the assets's
1046  /// objects have changed. Refreshed only during an asset cook.
1048 
1049  /// For incremental updates. Indicates whether any of the asset's
1050  /// materials have changed. Refreshed only during an asset cook.
1052 };
1054 
1055 /// Options which affect how nodes are cooked.
1057 {
1058  /// Normally, geos are split into parts in two different ways. First it
1059  /// is split by group and within each group it is split by primitive type.
1060  ///
1061  /// For example, if you have a geo with group1 covering half of the mesh
1062  /// and volume1 and group2 covering the other half of the mesh, all of
1063  /// curve1, and volume2 you will end up with 5 parts. First two parts
1064  /// will be for the half-mesh of group1 and volume1, and the last three
1065  /// will cover group2.
1066  ///
1067  /// This toggle lets you disable the splitting by group and just have
1068  /// the geo be split by primitive type alone. By default, this is true
1069  /// and therefore geos will be split by group and primitive type. If
1070  /// set to false, geos will only be split by primitive type.
1072 
1073  /// This toggle lets you enable the splitting by unique values
1074  /// of a specified attribute. By default, this is false and
1075  /// the geo be split as described above.
1076  /// as described above. If this is set to true, and splitGeosByGroup
1077  /// set to false, mesh geos will be split on attribute values
1078  /// The attribute name to split on must be created with HAPI_SetCustomString
1079  /// and then the splitAttrSH handle set on the struct.
1081  HAPI_StringHandle splitAttrSH;
1082 
1083  /// For meshes only, this is enforced by convexing the mesh. Use -1
1084  /// to avoid convexing at all and get some performance boost.
1086 
1087  /// For curves only.
1088  /// If this is set to true, then all curves will be refined to a linear
1089  /// curve and you can no longer access the original CVs. You can control
1090  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
1091  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
1093 
1094  /// Controls the number of divisions per unit distance when refining
1095  /// a curve to linear. The default in Houdini is 8.0.
1097 
1098  /// If this option is turned on, then we will recursively clear the
1099  /// errors and warnings (and messages) of all nodes before performing
1100  /// the cook.
1102 
1103  /// Decide whether to recursively cook all templated geos or not.
1105 
1106  /// Decide whether to split points by vertex attributes. This takes
1107  /// all vertex attributes and tries to copy them to their respective
1108  /// points. If two vertices have any difference in their attribute values,
1109  /// the corresponding point is split into two points. This is repeated
1110  /// until all the vertex attributes have been copied to the points.
1111  ///
1112  /// With this option enabled, you can reduce the total number of vertices
1113  /// on a game engine side as sharing of attributes (like UVs) is optimized.
1114  /// To make full use of this feature, you have to think of Houdini points
1115  /// as game engine vertices (sharable). With this option OFF (or before
1116  /// this feature existed) you had to map Houdini vertices to game engine
1117  /// vertices, to make sure all attribute values are accounted for.
1119 
1120  /// Choose how you want the cook to handle packed primitives.
1121  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
1123 
1124  /// Choose which special part types should be handled. Unhandled special
1125  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
1128 
1129  /// If enabled, sets the ::HAPI_PartInfo::hasChanged member during the
1130  /// cook. If disabled, the member will always be true. Checking for
1131  /// part changes can be expensive, so there is a potential performance
1132  /// gain when disabled.
1134 
1135 
1136  /// This toggle lets you enable the caching of the mesh topology.
1137  /// By default, this is false. If this is set to true, cooking a mesh
1138  /// geometry will update only the topology if the number of points changed.
1139  /// Use this to get better performance on deforming meshes.
1141 
1142  /// For internal use only. :)
1144 };
1146 
1147 // NODES --------------------------------------------------------------------
1148 
1149 /// Meta-data for a Houdini Node
1151 {
1152  HAPI_NodeId id;
1153  HAPI_NodeId parentId;
1154  HAPI_StringHandle nameSH;
1156 
1157  /// Always true unless the asset's definition has changed due to loading
1158  /// a duplicate asset definition and from another OTL asset library
1159  /// file OR deleting the OTL asset library file used by this node's asset.
1161 
1162  /// Total number of cooks of this node.
1164 
1165  /// Use this unique id to grab the OP_Node pointer for this node.
1166  /// If you're linking against the C++ HDK, include the OP_Node.h header
1167  /// and call OP_Node::lookupNode().
1169 
1170  /// This is the internal node path in the Houdini scene graph. This path
1171  /// is meant to be abstracted away for most client purposes but for
1172  /// advanced uses it can come in handy.
1173  HAPI_StringHandle internalNodePathSH;
1174 
1175  /// Total number of parameters this asset has exposed. Includes hidden
1176  /// parameters.
1177  /// See @ref HAPI_Parameters.
1179 
1180  /// Number of values. A single parameter may have more than one value so
1181  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
1182  /// @{
1186  /// @}
1187 
1188  /// The total number of choices among all the combo box parameters.
1189  /// See @ref HAPI_Parameters_ChoiceLists.
1191 
1192  /// The number of child nodes. This is 0 for all nodes that are not
1193  /// node networks.
1195 
1196  /// The number of inputs this specific node has.
1198 
1199  /// The number of outputs this specific node has.
1201 
1202  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
1203  /// this set to true. Only such nodes can be deleted using
1204  /// ::HAPI_DeleteNode().
1206 
1207  /// Indicates if this node will change over time
1209 };
1211 
1212 // PARAMETERS ---------------------------------------------------------------
1213 
1214 ///
1215 /// Contains parameter information like name, label, type, and size.
1216 ///
1218 {
1219  /// The parent id points to the id of the parent parm
1220  /// of this parm. The parent parm is something like a folder.
1221  HAPI_ParmId id;
1222 
1223  /// Parameter id of the parent of this parameter.
1224  HAPI_ParmId parentId;
1225 
1226  /// Child index within its immediate parent parameter.
1228 
1229  /// The HAPI type of the parm
1231 
1232  /// The Houdini script-type of the parm
1234 
1235  /// Some parameter types require additional type information.
1236  /// - File path parameters will indicate what file extensions they
1237  /// expect in a space-separated list of wild-cards. This is set
1238  /// in the Operator Type Properties using the File Pattern
1239  /// parameter property.
1240  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
1241  HAPI_StringHandle typeInfoSH;
1242 
1243  /// For the majority of parameter types permission will not be applicable.
1244  /// For file path parameters these permissions will indicate how the
1245  /// asset plans to use the file: whether it will only read it, only write
1246  /// to it, or both. This is set in the Operator Type Properties using
1247  /// the Browse Mode parameter property.
1249 
1250  /// Number of tags on this paramter.
1252 
1253  /// Tuple size. For scalar parameters this value is 1, but for vector
1254  /// parameters this value can be greater. For example, a 3 vector would
1255  /// have a size of 3. For folders and folder lists, this value is the
1256  /// number of children they own.
1257  int size;
1258 
1259  /// Any ::HAPI_ParmType can be a choice list. If this is set to
1260  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
1261  /// Otherwise, the parameter is a choice list of the indicated type.
1262  /// See @ref HAPI_Parameters_ChoiceLists.
1264 
1265  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
1266  /// choice list, this tells you how many choices it currently has.
1267  /// Note that some menu parameters can have a dynamic number of choices
1268  /// so it is important that this count is re-checked after every cook.
1269  /// See @ref HAPI_Parameters_ChoiceLists.
1271 
1272  /// Note that folders are not real parameters in Houdini so they do not
1273  /// have names. The folder names given here are generated from the name
1274  /// of the folderlist (or switcher) parameter which is a parameter. The
1275  /// folderlist parameter simply defines how many of the "next" parameters
1276  /// belong to the first folder, how many of the parameters after that
1277  /// belong to the next folder, and so on. This means that folder names
1278  /// can change just by reordering the folders around so don't rely on
1279  /// them too much. The only guarantee here is that the folder names will
1280  /// be unique among all other parameter names.
1281  HAPI_StringHandle nameSH;
1282 
1283  /// The label string for the parameter
1284  HAPI_StringHandle labelSH;
1285 
1286  /// If this parameter is a multiparm instance than the
1287  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
1288  /// containing #'s for the parts of the name that use the instance number.
1289  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
1290  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
1291  /// replaced by the instance number. For regular parms, the
1292  /// ::HAPI_ParmInfo::templateNameSH is identical to the
1293  /// ::HAPI_ParmInfo::nameSH.
1294  HAPI_StringHandle templateNameSH;
1295 
1296  /// The help string for this parameter
1297  HAPI_StringHandle helpSH;
1298 
1299  /// Whether min/max exists for the parameter values.
1300  /// @{
1305  /// @}
1306 
1307  /// Parameter value range, shared between int and float parameters.
1308  /// @{
1309  float min;
1310  float max;
1311  float UIMin;
1312  float UIMax;
1313  /// @}
1314 
1315  /// Whether this parm should be hidden from the user entirely. This is
1316  /// mostly used to expose parameters as asset meta-data but not allow the
1317  /// user to directly modify them.
1319 
1320  /// Whether this parm should appear enabled or disabled.
1322 
1323  /// If true, it means this parameter doesn't actually exist on the node
1324  /// in Houdini but was added by Houdini Engine as a spare parameter.
1325  /// This is just for your information. The behaviour of this parameter
1326  /// is not any different than a non-spare parameter.
1328 
1329  HAPI_Bool joinNext; /// Whether this parm should be on the same line as
1330  /// the next parm.
1331  HAPI_Bool labelNone; /// Whether the label should be displayed.
1332 
1333  /// The index to use to look into the values array in order to retrieve
1334  /// the actual value(s) of this parameter.
1335  /// @{
1340  /// @}
1341 
1342  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1343  /// this parameter accepts.
1345 
1346  /// The node input parameter could have another subtype filter specified,
1347  /// like "Object: Geometry Only". In this case, this value will specify
1348  /// that extra filter. If the filter demands a node that HAPI does not
1349  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1350  /// NONE as such a node is not settable through HAPI.
1352 
1353  /// See @ref HAPI_Parameters_MultiParms.
1354  /// @{
1356 
1357  int instanceNum; /// The index of the instance in the multiparm.
1358  int instanceLength; /// The number of parms in a multiparm instance.
1359  int instanceCount; /// The number of instances in a multiparm.
1360 
1361  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1363 
1365  /// @}
1366 
1367  /// Provides the raw condition string which is used to evaluate the
1368  /// the visibility of a parm
1369  HAPI_StringHandle visibilityConditionSH;
1370 
1371  /// Provides the raw condition string which is used to evalute whether
1372  /// a parm is enabled or disabled
1373  HAPI_StringHandle disabledConditionSH;
1374 };
1376 
1377 /// Meta-data for a combo-box / choice parm
1379 {
1380  HAPI_ParmId parentParmId;
1381  HAPI_StringHandle labelSH;
1382 
1383  /// This evaluates to the value of the token associated with the label
1384  /// applies to string menus only.
1385  HAPI_StringHandle valueSH;
1386 };
1388 
1389 // HANDLES ------------------------------------------------------------------
1390 
1391 ///
1392 /// Contains handle information such as the type of handle
1393 /// (translate, rotate, scale, softxform ...etc) and the number of
1394 /// parameters the current handle is bound to.
1395 ///
1397 {
1398  HAPI_StringHandle nameSH;
1399  HAPI_StringHandle typeNameSH;
1400 
1402 };
1404 
1405 ///
1406 /// Contains binding information that maps the handle parameter to
1407 /// the asset parameter. The index is only used for int and float vector
1408 /// and colour parms.
1409 ///
1411 {
1412  HAPI_StringHandle handleParmNameSH;
1413  HAPI_StringHandle assetParmNameSH;
1414 
1415  HAPI_ParmId assetParmId;
1417 };
1419 
1420 // OBJECTS ------------------------------------------------------------------
1421 
1422 /// Meta-data for an OBJ Node
1424 {
1425  HAPI_StringHandle nameSH;
1426 
1427  /// @deprecated This member is no longer used
1428  HAPI_StringHandle objectInstancePathSH;
1429 
1430  /// For incremental updates. Indicates whether the object's transform
1431  /// has changed. Refreshed only during an asset cook.
1433 
1434  /// For incremental updates. Indicates whether any of the object's
1435  /// geometry nodes have changed. Refreshed only during an asset cook.
1437 
1438  /// Whether the object is hidden and should not be shown. Some objects
1439  /// should be hidden but still brought into the host environment, for
1440  /// example those used only for instancing.
1441  /// See @ref HAPI_Instancing.
1443 
1444  /// See @ref HAPI_Instancing.
1446 
1447  /// Determine if this object is being instanced. Normally, this implies
1448  /// that while this object may not be visible, it should still be
1449  /// brought into the host application because it is needed by an instancer.
1450  /// See @ref HAPI_Instancing.
1452 
1453  /// @deprecated No longer used. See @ref HAPI_Geos
1455 
1456  /// Use the node id to get the node's parameters.
1457  /// Using the HDK, you can also get the raw node C++ pointer for this
1458  /// object's internal node.
1459  /// See @ref HAPI_Nodes_Basics.
1460  HAPI_NodeId nodeId;
1461 
1462  /// If the object is an instancer, this variable gives the object id of
1463  /// the object that should be instanced.
1464  /// See @ref HAPI_Instancing.
1465  HAPI_NodeId objectToInstanceId;
1466 };
1468 
1469 // GEOMETRY -----------------------------------------------------------------
1470 
1471 /// Meta-data for a SOP Node
1473 {
1475  HAPI_StringHandle nameSH;
1476 
1477  /// Use the node id to get the node's parameters.
1478  /// Using the HDK, you can also get the raw node C++ pointer for this
1479  /// object's internal node.
1480  HAPI_NodeId nodeId;
1481 
1482  /// Whether the SOP node has been exposed by dragging it into the
1483  /// editable nodes section of the asset definition.
1485 
1486  /// Has the templated flag turned on which means "expose as read-only".
1488 
1489  /// Final Result (Display SOP).
1491 
1492  /// For incremental updates.
1494 
1495  /// @deprecated This variable is deprecated and should no longer be used.
1496  /// Materials are now separate from parts. They are maintained at the
1497  /// asset level so you only need to check if the material itself has
1498  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1499  /// on the part.
1501 
1502  /// Groups.
1503  /// @{
1506  /// @}
1507 
1508  /// Total number of parts this geometry contains.
1509  /// See @ref HAPI_Parts.
1511 };
1513 
1514 /// Meta-data describing a Geo Part
1516 {
1517  /// Id to identify this part relative to it's Geo
1518  HAPI_PartId id;
1519  /// String handle for the name of the part
1520  HAPI_StringHandle nameSH;
1522 
1525  /// Number of points. Note that this is NOT the number
1526  /// of "positions" as "points" may imply. If your
1527  /// geometry has 3 points then set this to 3 and not 3*3.
1529 
1530  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1531 
1532  /// If this is true, don't display this part. Load its data but then
1533  /// instance it where the corresponding instancer part tells you to
1534  /// instance it.
1536 
1537  /// The number of parts that this instancer part is instancing.
1538  /// For example, if we're instancing a curve and a box, they would come
1539  /// across as two parts, hence this count would be two.
1540  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId's.
1542 
1543  /// The number of instances that this instancer part is instancing.
1544  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1545  /// if I'm instancing the merge of a curve and a box 5 times, this count
1546  /// would be 5. To be clear, all instanced parts are instanced the same
1547  /// number of times and with the same transform for each instance.
1548  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1549  /// each instance.
1551 
1552  /// If this is false, the underlying attribute data appear to match that of
1553  /// the previous cook. In this case you may be able to re-used marshaled
1554  /// data from the previous cook.
1556 };
1558 
1559 /// Meta-data describing an attribute
1560 /// See @ref HAPI_Attributes.
1562 {
1564 
1567 
1568  /// When converting from the Houdini native GA geometry format to the
1569  /// GT geometry format HAPI uses, some attributes might change owners.
1570  /// For example, in Houdini GA curves can have points shared by
1571  /// vertices but the GT format only supports curve vertices
1572  /// (no points). This means that if you had point attributes on a curve
1573  /// in Houdini, when it comes out of HAPI those point attributes will now
1574  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1575  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1576  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1578 
1579  /// Number of attributes. This count will match the number of values
1580  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1581  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1582  /// To be clear, this is not the number of values in the attribute, rather
1583  /// it is the number of attributes. If your geometry has three 3D points
1584  /// then this count will be 3 (not 3*3) while the
1585  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1586  int count;
1587 
1588  /// Number of values per attribute.
1589  /// Note that this is NOT the memory size of the attribute. It is the
1590  /// number of values per attributes. Multiplying this by the
1591  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1592  /// size per attribute.
1594 
1595  /// Total number of elements for an array attribute.
1596  /// An array attribute can be thought of as a 2 dimensional array where
1597  /// the 2nd dimension can vary in size for each element in the 1st
1598  /// dimension. Therefore this returns the total number of values in
1599  /// the entire array.
1600  /// This should be used to determine the total storage
1601  /// size needed by multiplying with ::HAPI_AttributeInfo::storage.
1602  /// Note that this will be 0 for a non-array attribute.
1604 
1605  /// Attribute type info
1606  /// This is used to help identify the type of data stored in an attribute.
1607  /// Using the type is recommended over using just an attribute's name to identify
1608  /// its purpose.
1610 };
1612 
1613 // MATERIALS ----------------------------------------------------------------
1614 
1616 {
1617  /// This is the HAPI node id for the SHOP node this material is attached
1618  /// to. Use it to get access to the parameters (which contain the
1619  /// texture paths).
1620  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1621  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1622  /// will never change for a specific material.
1623  HAPI_NodeId nodeId;
1624 
1626 
1628 };
1630 
1631 /// Describes an image format, used with ::HAPI_GetSupportedImageFileFormats()
1633 {
1634  HAPI_StringHandle nameSH;
1635  HAPI_StringHandle descriptionSH;
1636  HAPI_StringHandle defaultExtensionSH;
1637 };
1639 
1640 /// Data for an image, used with ::HAPI_GetImageInfo() and ::HAPI_SetImageInfo()
1642 {
1643  /// Unlike the other members of this struct changing imageFileFormatNameSH
1644  /// and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1645  /// Use this member variable to derive which image file format will be used
1646  /// by the HAPI_ExtractImageTo...() functions if called with
1647  /// image_file_format_name set to NULL. This way, you can decide whether
1648  /// to ask for a file format conversion (slower) or not (faster).
1649  /// (Read-only)
1650  HAPI_StringHandle imageFileFormatNameSH;
1651 
1652  int xRes;
1653  int yRes;
1654 
1656 
1657  HAPI_Bool interleaved; /// ex: true = RGBRGBRGB, false = RRRGGGBBB
1659 
1660  /// Adjust the gamma of the image. For anything less than
1661  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1662  double gamma;
1663 };
1665 
1666 // ANIMATION ----------------------------------------------------------------
1667 
1668 /// Data for a single Key Frame
1670 {
1671  float time;
1672  float value;
1673  float inTangent;
1674  float outTangent;
1675 };
1677 
1678 // VOLUMES ------------------------------------------------------------------
1679 
1680 ///
1681 /// This represents a volume primitive but does not contain the actual voxel
1682 /// values, which can be retrieved on a per-tile basis.
1683 ///
1684 /// See @ref HAPI_Volumes.
1685 ///
1687 {
1688  HAPI_StringHandle nameSH;
1689 
1691 
1692  /// Each voxel is identified with an index. The indices will range
1693  /// between:
1694  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1695  /// @{
1696  int xLength;
1697  int yLength;
1698  int zLength;
1699  int minX;
1700  int minY;
1701  int minZ;
1702  /// @}
1703 
1704  /// Number of values per voxel.
1705  /// The tuple size field is 1 for scalars and 3 for vector data.
1707 
1708  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1710 
1711  /// The dimensions of each tile.
1712  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1714 
1715  /// The transform of the volume with respect to the lengths.
1716  /// The volume may be positioned anywhere in space.
1718 
1719  /// Denotes special situations where the volume tiles are not perfect
1720  /// cubes, but are tapered instead.
1722 
1723  /// If there is taper involved, denotes the amount of taper involved.
1724  /// @{
1725  float xTaper;
1726  float yTaper;
1727  /// @}
1728 };
1730 
1731 ///
1732 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1733 /// The size of each dimension is ::HAPI_VolumeInfo::tileSize
1734 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1735 ///
1737 {
1738  int minX;
1739  int minY;
1740  int minZ;
1742 };
1744 
1745 ///
1746 /// Describes the visual settings of a volume.
1747 ///
1749 {
1751  float iso;
1752  float density;
1753 };
1755 
1756 // CURVES -------------------------------------------------------------------
1757 
1758 ///
1759 /// Represents the meta-data associated with a curve mesh (a number
1760 /// of curves of the same type).
1762 {
1764  int curveCount; /// The number of curves contained in this curve mesh.
1765  int vertexCount; /// The number of control vertices (CVs) for all curves.
1766  int knotCount; /// The number of knots for all curves.
1767 
1769  /// Whether the curves in this curve mesh are periodic.
1771  /// Whether the curves in this curve mesh are rational.
1772  int order; /// Order of 1 is invalid. 0 means there is a varying order.
1773 
1774  HAPI_Bool hasKnots; /// Whether the curve has knots.
1775 };
1777 
1778 // BASIC PRIMITIVES ---------------------------------------------------------
1779 
1780 /// Data for a Box Part
1782 {
1783  float center[ HAPI_POSITION_VECTOR_SIZE ];
1784  float size[ HAPI_SCALE_VECTOR_SIZE ];
1785  float rotation[ HAPI_EULER_VECTOR_SIZE ];
1786 };
1788 
1789 /// Data for a Sphere Part
1791 {
1792  float center[ HAPI_POSITION_VECTOR_SIZE ];
1793  float radius;
1794 };
1796 
1797 // PDG Structs --------------------------------------------------------------
1798 
1799 /// Data associated with a PDG Event
1801 {
1802  HAPI_NodeId nodeId; /// id of related node
1803  HAPI_PDG_WorkitemId workitemId; /// id of related workitem
1804  HAPI_PDG_WorkitemId dependencyId; /// id of related workitem dependency
1805  int currentState; /// (HAPI_PDG_WorkItemState) value of current state for state change
1806  int lastState; /// (HAPI_PDG_WorkItemState) value of last state for state change
1807  int eventType; /// (HAPI_PDG_EventType) event type
1808  HAPI_StringHandle msgSH; /// String handle of the event message (> 0 if there is a message)
1809 };
1811 
1812 /// Info for a PDG Workitem
1814 {
1815  int index; /// index of the workitem
1816  int numResults; /// number of results reported
1817  HAPI_StringHandle nameSH; /// name of the workitem
1818 };
1820 
1821 /// Data for a PDG file result
1823 {
1824  int resultSH; /// result string data
1825  int resultTagSH; /// result tag
1826  HAPI_Int64 resultHash; /// hash value of result
1827 };
1829 
1830 // SESSIONSYNC --------------------------------------------------------------
1831 
1832 ///
1833 /// Contains the information for synchronizing viewport between Houdini
1834 /// and other applications. When SessionSync is enabled, Houdini will
1835 /// update this struct with its viewport state. It will also update
1836 /// its own viewport if this struct has changed.
1837 /// The data stored is in Houdini's right-handed Y-up coordinate system.
1838 ///
1840 {
1841  /// The world position of the viewport camera's pivot.
1842  float position[ HAPI_POSITION_VECTOR_SIZE ];
1843 
1844  /// The direction of the viewport camera stored as a quaternion.
1845  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
1846 
1847  /// The offset from the pivot to the viewport camera's
1848  /// actual world position.
1849  float offset;
1850 };
1852 
1853 ///
1854 /// Contains the information for synchronizing general SessionSync
1855 /// state between Houdini and other applications. When SessionSync
1856 /// is enabled, Houdini will update this struct with its state.
1857 /// It will also update its internal state if this struct has
1858 /// changed.
1859 ///
1861 {
1862  /// Specifies whether Houdini's current time is used for Houdini Engine
1863  /// cooks. This is automatically enabled in SessionSync where
1864  /// Houdini's viewport forces cooks to use Houdini's current time.
1865  /// This is disabled in non-SessionSync mode, but can be toggled to
1866  /// override default behaviour.
1868 
1869  /// Specifies whether viewport synchronization is enabled. If enabled,
1870  /// in SessionSync, Houdini will update its own viewport using
1871  /// ::HAPI_Viewport.
1873 };
1875 
1876 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:157
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:1010
"vector", "vector3"
Definition: HAPI_Common.h:381
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:20
Min cache memory limit in MB.
Definition: HAPI_Common.h:796
HAPI_StringHandle disabledConditionSH
Definition: HAPI_Common.h:1373
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1475
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1281
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1802
Data for an image, used with HAPI_GetImageInfo() and HAPI_SetImageInfo()
Definition: HAPI_Common.h:1641
HAPI_StringHandle labelSH
Instance name (the label + a number).
Definition: HAPI_Common.h:1017
HAPI_StringHandle nameSH
String handle for the name of the part.
Definition: HAPI_Common.h:1520
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1445
HAPI_VolumeVisualType
Definition: HAPI_Common.h:548
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1655
int parmStringValueCount
Definition: HAPI_Common.h:1185
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:1101
Texture coordinate.
Definition: HAPI_Common.h:602
Recursive Flag.
Definition: HAPI_Common.h:482
Recursive Flag.
Definition: HAPI_Common.h:480
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:1263
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:470
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1425
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1465
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:1092
HAPI_PDG_WorkitemId workitemId
id of related node
Definition: HAPI_Common.h:1803
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:189
HAPI_ParmId id
Definition: HAPI_Common.h:1221
Just the presets binary blob.
Definition: HAPI_Common.h:448
int intValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1336
"dir", "direction"
Definition: HAPI_Common.h:390
HAPI_Bool isEditable
Definition: HAPI_Common.h:1484
int HAPI_PDG_GraphContextId
Use this with PDG functions.
Definition: HAPI_Common.h:148
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:16
HAPI_RampType rampType
Definition: HAPI_Common.h:1364
int floatValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1337
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:1122
Parametric interval.
Definition: HAPI_Common.h:594
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:776
"toggle", "embed"
Definition: HAPI_Common.h:377
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1154
#define HAPI_API
Definition: HAPI_API.h:79
OBJ Node Specific Flags.
Definition: HAPI_Common.h:490
int resultTagSH
result string data
Definition: HAPI_Common.h:1825
HAPI_NodeFlags
Definition: HAPI_Common.h:475
HAPI_GeoType
Definition: HAPI_Common.h:607
int instanceCount
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1359
HAPI_StringHandle visibilityConditionSH
Definition: HAPI_Common.h:1369
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:1014
int eventType
(HAPI_PDG_WorkItemState) value of last state for state change
Definition: HAPI_Common.h:1807
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:1051
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1344
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1399
HAPI_Bool isPeriodic
The number of knots for all curves.
Definition: HAPI_Common.h:1768
HAPI_RSTOrder
Definition: HAPI_Common.h:681
int parmFloatValueCount
Definition: HAPI_Common.h:1184
"intvector", "intvector3"
Definition: HAPI_Common.h:385
HAPI_CurveType
Definition: HAPI_Common.h:529
HAPI_PDG_State
Used with PDG functions.
Definition: HAPI_Common.h:829
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1565
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:936
Single Channel.
Definition: HAPI_Common.h:725
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1480
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:1168
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1623
int HAPI_HIPFileId
Definition: HAPI_Common.h:152
HAPI_ImageDataFormat
Definition: HAPI_Common.h:707
int handleCount
See Objects.
Definition: HAPI_Common.h:1025
HAPI_PartType
Definition: HAPI_Common.h:631
int currentState
id of related workitem dependency
Definition: HAPI_Common.h:1805
HAPI_EnvIntType
Definition: HAPI_Common.h:743
HAPI_Bool isRational
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1770
HAPI_Bool isValid
Definition: HAPI_Common.h:1160
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:949
int choiceIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1339
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:262
HAPI_StringHandle labelSH
The label string for the parameter.
Definition: HAPI_Common.h:1284
True if it actually has a maximum size.
Definition: HAPI_Common.h:797
HAPI_Permissions
Definition: HAPI_Common.h:272
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:18
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:185
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:1104
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:1297
HAPI_VolumeVisualType type
Definition: HAPI_Common.h:1750
3x3 Bounding box
Definition: HAPI_Common.h:600
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:972
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:1294
Meta-data about an HDA, returned by HAPI_GetAssetInfo()
Definition: HAPI_Common.h:997
Data for a PDG file result.
Definition: HAPI_Common.h:1822
HAPI_AttributeOwner
Definition: HAPI_Common.h:518
int stringValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1338
HAPI_StringHandle fullOpNameSH
User-defined asset version.
Definition: HAPI_Common.h:1020
Only some objects failed.
Definition: HAPI_Common.h:251
HAPI_ErrorCode
Definition: HAPI_Common.h:225
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1634
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:1205
HAPI_Bool splitGeosByAttribute
Definition: HAPI_Common.h:1080
Meta-data for an OBJ Node.
Definition: HAPI_Common.h:1423
HAPI_NodeType
Definition: HAPI_Common.h:455
HAPI_CurveType curveType
Definition: HAPI_Common.h:1763
int knotCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1766
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1304
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1412
int HAPI_StringHandle
Definition: HAPI_Common.h:129
HAPI_StatusVerbosity
Definition: HAPI_Common.h:178
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1577
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:187
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:969
Total number of supported parameter types.
Definition: HAPI_Common.h:336
HAPI_ChoiceListType
Definition: HAPI_Common.h:429
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1555
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1535
Everything cook successfully without errors.
Definition: HAPI_Common.h:247
HAPI_Bool spare
Definition: HAPI_Common.h:1327
Menu Only, Single Selection.
Definition: HAPI_Common.h:434
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:948
HAPI_Bool cacheMeshTopology
Definition: HAPI_Common.h:1140
HAPI_PrmScriptType
Definition: HAPI_Common.h:365
HAPI_Bool hasKnots
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1774
HAPI_XYZOrder
Definition: HAPI_Common.h:694
Data associated with a PDG Event.
Definition: HAPI_Common.h:1800
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1398
int HAPI_ParmId
Definition: HAPI_Common.h:138
int numResults
index of the workitem
Definition: HAPI_Common.h:1816
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:1224
Meta-data describing a Geo Part.
Definition: HAPI_Common.h:1515
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:231
HAPI_AttributeTypeInfo typeInfo
Definition: HAPI_Common.h:1609
int order
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1772
int instancedPartCount
Definition: HAPI_Common.h:1541
int tagCount
Number of tags on this paramter.
Definition: HAPI_Common.h:1251
int transformInputCount
See Handles.
Definition: HAPI_Common.h:1031
int outputCount
The number of outputs this specific node has.
Definition: HAPI_Common.h:1200
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:1127
int instanceStartOffset
The number of instances in a multiparm.
Definition: HAPI_Common.h:1362
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:1227
HAPI_NodeId id
Definition: HAPI_Common.h:1152
HAPI_ImagePacking
Definition: HAPI_Common.h:721
Meta-data for a Houdini Node.
Definition: HAPI_Common.h:1150
HAPI_Transform transform
Definition: HAPI_Common.h:1717
HAPI_PDG_EventType
Used with PDG functions.
Definition: HAPI_Common.h:840
HAPI_SessionType
Definition: HAPI_Common.h:233
HAPI_StorageType storage
Definition: HAPI_Common.h:1566
Presets blob within an .idx file format.
Definition: HAPI_Common.h:450
int instanceLength
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1358
int lastState
(HAPI_PDG_WorkItemState) value of current state for state change
Definition: HAPI_Common.h:1806
HAPI_Permissions permissions
Definition: HAPI_Common.h:1248
HAPI_PDG_WorkitemState
Used with PDG functions.
Definition: HAPI_Common.h:908
HAPI_VolumeType
Definition: HAPI_Common.h:539
HAPI_ParmType type
The HAPI type of the parm.
Definition: HAPI_Common.h:1230
License Type. See HAPI_License.
Definition: HAPI_Common.h:781
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1635
HAPI_PDG_WorkitemId dependencyId
id of related workitem
Definition: HAPI_Common.h:1804
HAPI_HeightFieldSampling
Type of sampling for heightfield.
Definition: HAPI_Common.h:821
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:440
HAPI_ImagePacking packing
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1658
HAPI_Int64 HAPI_SessionId
Has to be 64-bit.
Definition: HAPI_Common.h:125
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:17
HAPI_Bool labelNone
the next parm.
Definition: HAPI_Common.h:1331
HAPI_GeoType type
Definition: HAPI_Common.h:1474
HAPI_SessionId id
Definition: HAPI_Common.h:964
int HAPI_ProcessId
Definition: HAPI_Common.h:121
HAPI_RampType
Definition: HAPI_Common.h:282
Options which affect how nodes are cooked.
Definition: HAPI_Common.h:1056
HAPI_ParmType
Definition: HAPI_Common.h:298
Homogeneous position.
Definition: HAPI_Common.h:580
HAPI_CurveOrders
Definition: HAPI_Common.h:653
HAPI_Bool invisible
Definition: HAPI_Common.h:1318
HAPI_Bool joinNext
Definition: HAPI_Common.h:1329
HAPI_StringHandle splitAttrSH
Definition: HAPI_Common.h:1081
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1627
HAPI_PartType type
Definition: HAPI_Common.h:1521
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1385
Identifies a session.
Definition: HAPI_Common.h:956
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1436
HAPI_StringHandle versionSH
Path to the .otl library file.
Definition: HAPI_Common.h:1019
HAPI_StorageType
Definition: HAPI_Common.h:560
HAPI_STATIC_ASSERT(sizeof(HAPI_Int64)==8, unsupported_size_of_long)
HAPI_Bool hasMax
Definition: HAPI_Common.h:1302
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1001
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1636
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1413
Meta-data for a SOP Node.
Definition: HAPI_Common.h:1472
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1490
"Private" (hidden)
Definition: HAPI_Common.h:596
A Transform with Euler rotation.
Definition: HAPI_Common.h:941
HAPI_Bool isTimeDependent
Indicates if this node will change over time.
Definition: HAPI_Common.h:1208
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1493
int vertexCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1765
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1650
Data for global timeline, used with HAPI_SetTimelineOptions()
Definition: HAPI_Common.h:985
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1500
HAPI_NodeId parentId
Definition: HAPI_Common.h:1153
True if it actually has a minimum size.
Definition: HAPI_Common.h:795
RGBA Reversed.
Definition: HAPI_Common.h:730
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1487
Looks for Guide Geometry.
Definition: HAPI_Common.h:499
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:1163
HAPI_StringHandle filePathSH
This is what any end user should be shown.
Definition: HAPI_Common.h:1018
HAPI_Bool checkPartChanges
Definition: HAPI_Common.h:1133
char HAPI_Bool
Definition: HAPI_Common.h:110
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1303
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:1241
HAPI_NodeType type
Definition: HAPI_Common.h:1155
HAPI_StatusType
Definition: HAPI_Common.h:169
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:1143
HAPI_PresetType
Definition: HAPI_Common.h:444
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1381
Data for a Box Part.
Definition: HAPI_Common.h:1781
HAPI_Bool interleaved
Definition: HAPI_Common.h:1657
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:1197
HAPI_StringHandle helpURLSH
Asset help marked-up text.
Definition: HAPI_Common.h:1022
HAPI_Int64 resultHash
result tag
Definition: HAPI_Common.h:1826
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1380
"int", "integer"
Definition: HAPI_Common.h:368
HAPI_Result
Definition: HAPI_Common.h:195
Direction vector.
Definition: HAPI_Common.h:582
HAPI_InputType
Definition: HAPI_Common.h:644
Max cache memory limit in MB.
Definition: HAPI_Common.h:815
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:1071
HAPI_State
Definition: HAPI_Common.h:244
HAPI_VolumeType type
Definition: HAPI_Common.h:1690
int objectCount
Asset help URL.
Definition: HAPI_Common.h:1024
HAPI_StringHandle helpTextSH
Full asset name and namespace.
Definition: HAPI_Common.h:1021
int HAPI_PDG_WorkitemId
Use this with PDG functions.
Definition: HAPI_Common.h:145
Implicit type based on data.
Definition: HAPI_Common.h:576
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:1118
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1709
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:507
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:191
Data for a Sphere Part.
Definition: HAPI_Common.h:1790
HAPI_AttributeTypeInfo
Definition: HAPI_Common.h:572
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:1047
A Transform with Quaternion rotation.
Definition: HAPI_Common.h:929
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:21
HAPI_Bool cookUsingHoudiniTime
Definition: HAPI_Common.h:1867
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1721
HAPI_GroupType
Definition: HAPI_Common.h:509
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1688
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:99
long long HAPI_Int64
Definition: HAPI_Common.h:114
HAPI_Bool isVisible
Definition: HAPI_Common.h:1442
Field + Single Selection Menu.
Definition: HAPI_Common.h:438
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:134
HAPI_PartId id
Id to identify this part relative to it's Geo.
Definition: HAPI_Common.h:1518
Describes an image format, used with HAPI_GetSupportedImageFileFormats()
Definition: HAPI_Common.h:1632
HAPI_CacheProperty
Identifies a memory cache.
Definition: HAPI_Common.h:788
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1451
You should abort the cook.
Definition: HAPI_Common.h:249
int primitiveGroupCount
Definition: HAPI_Common.h:1505
Info for a PDG Workitem.
Definition: HAPI_Common.h:1813
HAPI_PrmScriptType scriptType
The Houdini script-type of the parm.
Definition: HAPI_Common.h:1233
Data for a single Key Frame.
Definition: HAPI_Common.h:1669
HAPI_Int64 totalArrayElements
Definition: HAPI_Common.h:1603
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1016
HAPI_StringHandle nameSH
number of results reported
Definition: HAPI_Common.h:1817
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:436
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:131
Parameter is not a menu.
Definition: HAPI_Common.h:432
2x2 Bounding box
Definition: HAPI_Common.h:598
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_CACHE]
Definition: HAPI_Common.h:97
HAPI_TransformComponent
Definition: HAPI_Common.h:663
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1432
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1428
HAPI_Bool hasMin
Definition: HAPI_Common.h:1301
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:1173
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1321
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:1126
HAPI_StringHandle msgSH
(HAPI_PDG_EventType) event type
Definition: HAPI_Common.h:1808
Meta-data for a combo-box / choice parm.
Definition: HAPI_Common.h:1378
HAPI_SessionType type
Definition: HAPI_Common.h:960
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1351
int HAPI_PartId
Definition: HAPI_Common.h:142
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1460
Dual Channel.
Definition: HAPI_Common.h:726
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1355