Houdini Engine 3.3
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros 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 
185  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
186 
187  // Used for Results.
189  ///< Equivalent to ::HAPI_STATUSVERBOSITY_0.
191  ///< Equivalent to ::HAPI_STATUSVERBOSITY_1.
193  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
194 };
196 
198 {
210 
217 
220 
222 
224 };
226 
228 {
231 };
233 typedef int HAPI_ErrorCodeBits;
234 
236 {
243 };
245 
247 {
248  HAPI_STATE_READY, ///< Everything cook successfully without errors.
249  HAPI_STATE_READY_WITH_FATAL_ERRORS, ///< You should abort the cook.
250  HAPI_STATE_READY_WITH_COOK_ERRORS, ///< Only some objects failed.
256 
258 };
260 
262 {
268 };
270 
272 {
278 };
280 
282 {
287 };
289 
290 /// As you can see, some of these high level types share the same underlying
291 /// raw data type. For instance, both string and file parameter types can be
292 /// represented with strings, yet semantically they are different. We will
293 /// group high level parameter types that share an underlying raw data type
294 /// together, so you can always check the raw data type of a parameter based
295 /// on its high level data type by checking a range of values.
297 {
302 
305 
310 
312 
315 
320 
321 
322  // Helpers
323 
324  HAPI_PARMTYPE_MAX, ///< Total number of supported parameter types.
325 
328 
331 
334 
337 
340 
343 
346 };
348 
349 /// Corresponds to the types as shown in the Houdini Type Properties
350 /// window and in DialogScript files. Available on HAPI_ParmInfo
351 /// See: <a href="http://www.sidefx.com/docs/houdini/ref/windows/optype.html#parmtypes">Parameter types</a>
352 ///
354 {
355  HAPI_PRM_SCRIPT_TYPE_INT = 0, ///< "int", "integer"
363  HAPI_PRM_SCRIPT_TYPE_TOGGLE, ///< "toggle", "embed"
366  HAPI_PRM_SCRIPT_TYPE_VECTOR3, ///< "vector", "vector3"
369  HAPI_PRM_SCRIPT_TYPE_INTVECTOR3, ///< "intvector", "intvector3"
373  HAPI_PRM_SCRIPT_TYPE_DIR, ///< "dir", "direction"
374  HAPI_PRM_SCRIPT_TYPE_COLOR, ///< "color", "rgb"
375  HAPI_PRM_SCRIPT_TYPE_COLOR4, ///< "color4", "rgba"
397 
398  // The following apply to HAPI_PARMTYPE_FOLDER type parms
399  HAPI_PRM_SCRIPT_TYPE_GROUPRADIO = 1000, ///< Radio buttons Folder
400  HAPI_PRM_SCRIPT_TYPE_GROUPCOLLAPSIBLE, ///< Collapsible Folder
402  HAPI_PRM_SCRIPT_TYPE_GROUP ///< Tabs Folder
403 };
405 
407 {
408  HAPI_CHOICELISTTYPE_NONE, ///< Parameter is not a menu.
409  HAPI_CHOICELISTTYPE_NORMAL, ///< Menu Only, Single Selection
410  HAPI_CHOICELISTTYPE_MINI, ///< Mini Menu Only, Single Selection
411  HAPI_CHOICELISTTYPE_REPLACE, ///< Field + Single Selection Menu
412  HAPI_CHOICELISTTYPE_TOGGLE ///< Field + Multiple Selection Menu
413 };
415 
417 {
419  HAPI_PRESETTYPE_BINARY = 0, ///< Just the presets binary blob.
420  HAPI_PRESETTYPE_IDX, ///< Presets blob within an .idx file format.
422 };
424 
426 {
438 };
440 typedef int HAPI_NodeTypeBits;
441 
442 /// Flags used to filter compositions of node lists. Flags marked
443 /// 'Recursive Flag' will exclude children whos parent does not
444 /// satisfy the flag, even if the children themselves satisfy the flag.
446 {
449  HAPI_NODEFLAGS_DISPLAY = 1 << 0, ///< Recursive Flag
450  HAPI_NODEFLAGS_RENDER = 1 << 1, ///< Recursive Flag
456 
457  /// OBJ Node Specific Flags
462 
463  /// SOP Node Specific Flags
464  HAPI_NODEFLAGS_SOP_CURVE = 1 << 11, ///< Looks for "curve".
465  HAPI_NODEFLAGS_SOP_GUIDE = 1 << 12, ///< Looks for Guide Geometry
466 
467  /// TOP Node Specific Flags
468  HAPI_NODEFLAGS_TOP_NONSCHEDULER = 1 << 13 /// All TOP nodes except schedulers
469 
470 };
472 typedef int HAPI_NodeFlagsBits;
473 
475 {
480 };
482 
484 {
491 };
493 
495 {
501 };
503 
505 {
510 };
512 
514 {
522 };
524 
526 {
528  HAPI_ATTRIBUTE_TYPE_NONE, // Implicit type based on data
530  HAPI_ATTRIBUTE_TYPE_HPOINT, // Homogeneous position
531  HAPI_ATTRIBUTE_TYPE_VECTOR, // Direction vector
537  HAPI_ATTRIBUTE_TYPE_ST, // Parametric interval
538  HAPI_ATTRIBUTE_TYPE_HIDDEN, // "Private" (hidden)
539  HAPI_ATTRIBUTE_TYPE_BOX2, // 2x2 Bounding box
540  HAPI_ATTRIBUTE_TYPE_BOX, // 3x3 Bounding box
541  HAPI_ATTRIBUTE_TYPE_TEXTURE, // Texture coordinate
543 };
545 
547 {
549 
550  /// Most geos will be of this type which essentially means a geo
551  /// not of the other types.
553 
554  /// An exposed edit node.
555  /// See @ref HAPI_IntermediateAssetsResults.
557 
558  /// An input geo that can accept geometry from the host.
559  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
561 
562  /// A curve.
563  /// See @ref HAPI_Curves.
565 
567 };
569 
571 {
580 };
582 
584 {
589 };
591 
593 {
599 };
601 
603 {
617 };
619 
621 {
622  HAPI_TRS = 0,
628 
630 };
632 
634 {
635  HAPI_XYZ = 0,
641 
643 };
645 
647 {
655 
657 };
659 
661 {
663  HAPI_IMAGE_PACKING_SINGLE, ///< Single Channel
664  HAPI_IMAGE_PACKING_DUAL, ///< Dual Channel
666  HAPI_IMAGE_PACKING_BGR, ///< RGB Reversed
668  HAPI_IMAGE_PACKING_ABGR, ///< RGBA Reversed
670 
673 };
675 
676 /// This enum is to be used with ::HAPI_GetEnvInt() to retrieve basic
677 /// information about the HAPI implementation currently being linked
678 /// against. Note that as of HAPI version 2.0, these enum values are
679 /// guaranteed never to change so you can reliably get this information from
680 /// any post-2.0 version of HAPI. The same goes for the actual
681 /// ::HAPI_GetEnvInt() API call.
683 {
685 
686  /// The three components of the Houdini version that HAPI is
687  /// expecting to link against.
688  /// @{
693  /// @}
694 
695  /// The two components of the Houdini Engine (marketed) version.
696  /// @{
699  /// @}
700 
701  /// This is a monotonously increasing API version number that can be used
702  /// to lock against a certain API for compatibility purposes. Basically,
703  /// when this number changes code compiled against the HAPI.h methods
704  /// might no longer compile. Semantic changes to the methods will also
705  /// cause this version to increase. This number will be reset to 0
706  /// every time the Houdini Engine version is bumped.
708 
710 };
712 
713 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
714 /// session-specific information.
716 {
718 
719  /// License Type. See ::HAPI_License.
721 
723 };
725 
726 /// [HAPI_CacheProperty]
728 {
729  /// Current memory usage in MB. Setting this to 0 invokes
730  /// a cache clear.
732 
733  HAPI_CACHEPROP_HAS_MIN, ///< True if it actually has a minimum size.
734  HAPI_CACHEPROP_MIN, ///< Min cache memory limit in MB.
735  HAPI_CACHEPROP_HAS_MAX, ///< True if it actually has a maximum size.
736  HAPI_CACHEPROP_MAX, ///< Max cache memory limit in MB.
737 
738  /// How aggressive to cull memory. This only works for:
739  /// - ::HAPI_CACHE_COP_COOK where:
740  /// 0 -> Never reduce inactive cache.
741  /// 1 -> Always reduce inactive cache.
742  /// - ::HAPI_CACHE_OBJ where:
743  /// 0 -> Never enforce the max memory limit.
744  /// 1 -> Always enforce the max memory limit.
745  /// - ::HAPI_CACHE_SOP where:
746  /// 0 -> When to Unload = Never
747  /// When to Limit Max Memory = Never
748  /// 1-2 -> When to Unload = Based on Flag
749  /// When to Limit Max Memory = Never
750  /// 3-4 -> When to Unload = Based on Flag
751  /// When to Limit Max Memory = Always
752  /// 5 -> When to Unload = Always
753  /// When to Limit Max Memory = Always
755 };
756 
758 
759 /// Type of sampling for heightfield
761 {
764 };
766 
767 /// Used with PDG functions
769 {
773 
775 };
777 
778 /// Used with PDG functions
780 {
782 
786 
789 
792 
794 
797 
799 
802 
804 
806 
812 
820 
822 
824 
827 
829 
831 
833 
835 };
837 
838 /// Used with PDG functions
840 {
851 };
853 
854 /////////////////////////////////////////////////////////////////////////////
855 // Main API Structs
856 
857 // GENERICS -----------------------------------------------------------------
858 
860 {
861  float position[ HAPI_POSITION_VECTOR_SIZE ];
862  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
863  float scale[ HAPI_SCALE_VECTOR_SIZE ];
864  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
865 
867 };
869 
871 {
872  float position[ HAPI_POSITION_VECTOR_SIZE ];
873  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
874  float scale[ HAPI_SCALE_VECTOR_SIZE ];
875  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
876 
879 };
881 
882 // SESSIONS -----------------------------------------------------------------
883 
885 {
886  /// The type of session determines the which implementation will be
887  /// used to communicate with the Houdini Engine library.
889 
890  /// Some session types support multiple simultaneous sessions. This means
891  /// that each session needs to have a unique identifier.
892  HAPI_SessionId id;
893 };
895 
896 /// Options to configure a Thrift server being started from HARC.
898 {
899  /// Close the server automatically when all clients disconnect from it.
901 
902  /// Timeout in milliseconds for waiting on the server to
903  /// signal that it's ready to serve. If the server fails
904  /// to signal within this time interval, the start server call fails
905  /// and the server process is terminated.
906  float timeoutMs;
907 };
909 
910 // TIME ---------------------------------------------------------------------
911 
913 {
914  float fps;
915 
916  float startTime;
917  float endTime;
918 };
920 
921 // ASSETS -------------------------------------------------------------------
922 
924 {
925  /// Use the node id to get the asset's parameters.
926  /// See @ref HAPI_Nodes_Basics.
927  HAPI_NodeId nodeId;
928 
929  /// The objectNodeId differs from the regular nodeId in that for
930  /// geometry based assets (SOPs) it will be the node id of the dummy
931  /// object (OBJ) node instead of the asset node. For object based assets
932  /// the objectNodeId will equal the nodeId. The reason the distinction
933  /// exists is because transforms are always stored on the object node
934  /// but the asset parameters may not be on the asset node if the asset
935  /// is a geometry asset so we need both.
936  HAPI_NodeId objectNodeId;
937 
938  /// It's possible to instantiate an asset without cooking it.
939  /// See @ref HAPI_Assets_Cooking.
941 
942  HAPI_StringHandle nameSH; ///< Instance name (the label + a number).
943  HAPI_StringHandle labelSH; ///< This is what any end user should be shown.
944  HAPI_StringHandle filePathSH; ///< Path to the .otl library file.
945  HAPI_StringHandle versionSH; ///< User-defined asset version.
946  HAPI_StringHandle fullOpNameSH; ///< Full asset name and namespace.
947  HAPI_StringHandle helpTextSH; ///< Asset help marked-up text.
948  HAPI_StringHandle helpURLSH; ///< Asset help URL.
949 
950  int objectCount; ///< See @ref HAPI_Objects.
951  int handleCount; ///< See @ref HAPI_Handles.
952 
953  /// Transform inputs exposed by the asset. For OBJ assets this is the
954  /// number of transform inputs on the OBJ node. For SOP assets, this is
955  /// the singular transform input on the dummy wrapper OBJ node.
956  /// See @ref HAPI_AssetInputs.
958 
959  /// Geometry inputs exposed by the asset. For SOP assets this is
960  /// the number of geometry inputs on the SOP node itself. OBJ assets
961  /// will always have zero geometry inputs.
962  /// See @ref HAPI_AssetInputs.
964 
965  /// Geometry outputs exposed by the asset. For SOP assets this is
966  /// the number of geometry outputs on the SOP node itself. OBJ assets
967  /// will always have zero geometry outputs.
968  /// See @ref HAPI_AssetInputs.
970 
971  /// For incremental updates. Indicates whether any of the assets's
972  /// objects have changed. Refreshed only during an asset cook.
974 
975  /// For incremental updates. Indicates whether any of the asset's
976  /// materials have changed. Refreshed only during an asset cook.
978 };
980 
982 {
983  /// Normally, geos are split into parts in two different ways. First it
984  /// is split by group and within each group it is split by primitive type.
985  ///
986  /// For example, if you have a geo with group1 covering half of the mesh
987  /// and volume1 and group2 covering the other half of the mesh, all of
988  /// curve1, and volume2 you will end up with 5 parts. First two parts
989  /// will be for the half-mesh of group1 and volume1, and the last three
990  /// will cover group2.
991  ///
992  /// This toggle lets you disable the splitting by group and just have
993  /// the geo be split by primitive type alone. By default, this is true
994  /// and therefore geos will be split by group and primitive type. If
995  /// set to false, geos will only be split by primitive type.
997 
998  /// This toggle lets you enable the splitting by unique values
999  /// of a specified attribute. By default, this is false and
1000  /// the geo be split as described above.
1001  /// as described above. If this is set to true, and splitGeosByGroup
1002  /// set to false, mesh geos will be split on attribute values
1003  /// The attribute name to split on must be created with HAPI_SetCustomString
1004  /// and then the splitAttrSH handle set on the struct.
1006  HAPI_StringHandle splitAttrSH;
1007 
1008  /// For meshes only, this is enforced by convexing the mesh. Use -1
1009  /// to avoid convexing at all and get some performance boost.
1011 
1012  /// For curves only.
1013  /// If this is set to true, then all curves will be refined to a linear
1014  /// curve and you can no longer access the original CVs. You can control
1015  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
1016  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
1018 
1019  /// Controls the number of divisions per unit distance when refining
1020  /// a curve to linear. The default in Houdini is 8.0.
1022 
1023  /// If this option is turned on, then we will recursively clear the
1024  /// errors and warnings (and messages) of all nodes before performing
1025  /// the cook.
1027 
1028  /// Decide whether to recursively cook all templated geos or not.
1030 
1031  /// Decide whether to split points by vertex attributes. This takes
1032  /// all vertex attributes and tries to copy them to their respective
1033  /// points. If two vertices have any difference in their attribute values,
1034  /// the corresponding point is split into two points. This is repeated
1035  /// until all the vertex attributes have been copied to the points.
1036  ///
1037  /// With this option enabled, you can reduce the total number of vertices
1038  /// on a game engine side as sharing of attributes (like UVs) is optimized.
1039  /// To make full use of this feature, you have to think of Houdini points
1040  /// as game engine vertices (sharable). With this option OFF (or before
1041  /// this feature existed) you had to map Houdini vertices to game engine
1042  /// vertices, to make sure all attribute values are accounted for.
1044 
1045  /// Choose how you want the cook to handle packed primitives.
1046  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
1048 
1049  /// Choose which special part types should be handled. Unhandled special
1050  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
1053 
1054  /// If enabled, sets the ::HAPI_PartInfo::hasChanged member during the
1055  /// cook. If disabled, the member will always be true. Checking for
1056  /// part changes can be expensive, so there is a potential performance
1057  /// gain when disabled.
1059 
1060  /// For internal use only. :)
1062 };
1064 
1065 // NODES --------------------------------------------------------------------
1066 
1068 {
1069  HAPI_NodeId id;
1070  HAPI_NodeId parentId;
1071  HAPI_StringHandle nameSH;
1073 
1074  /// Always true unless the asset's definition has changed due to loading
1075  /// a duplicate asset definition and from another OTL asset library
1076  /// file OR deleting the OTL asset library file used by this node's asset.
1078 
1079  /// Total number of cooks of this node.
1081 
1082  /// Use this unique id to grab the OP_Node pointer for this node.
1083  /// If you're linking against the C++ HDK, include the OP_Node.h header
1084  /// and call OP_Node::lookupNode().
1086 
1087  /// This is the internal node path in the Houdini scene graph. This path
1088  /// is meant to be abstracted away for most client purposes but for
1089  /// advanced uses it can come in handy.
1090  HAPI_StringHandle internalNodePathSH;
1091 
1092  /// Total number of parameters this asset has exposed. Includes hidden
1093  /// parameters.
1094  /// See @ref HAPI_Parameters.
1096 
1097  /// Number of values. A single parameter may have more than one value so
1098  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
1099  /// @{
1103  /// @}
1104 
1105  /// The total number of choices among all the combo box parameters.
1106  /// See @ref HAPI_Parameters_ChoiceLists.
1108 
1109  /// The number of child nodes. This is 0 for all nodes that are not
1110  /// node networks.
1112 
1113  /// The number of inputs this specific node has.
1115 
1116  /// The number of outputs this specific node has.
1118 
1119  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
1120  /// this set to true. Only such nodes can be deleted using
1121  /// ::HAPI_DeleteNode().
1123 
1124  /// Indicates if this node will change over time
1126 };
1128 
1129 // PARAMETERS ---------------------------------------------------------------
1130 
1131 /// @struct HAPI_ParmInfo
1132 ///
1133 /// Contains parameter information like name, label, type, and size.
1134 ///
1136 {
1137  /// The parent id points to the id of the parent parm
1138  /// of this parm. The parent parm is something like a folder.
1139  HAPI_ParmId id;
1140 
1141  /// Parameter id of the parent of this parameter.
1142  HAPI_ParmId parentId;
1143 
1144  /// Child index within its immediate parent parameter.
1146 
1147  /// The HAPI type of the parm
1149 
1150  /// The Houdini script-type of the parm
1152 
1153  /// Some parameter types require additional type information.
1154  /// - File path parameters will indicate what file extensions they
1155  /// expect in a space-separated list of wild-cards. This is set
1156  /// in the Operator Type Properties using the File Pattern
1157  /// parameter property.
1158  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
1159  HAPI_StringHandle typeInfoSH;
1160 
1161  /// For the majority of parameter types permission will not be applicable.
1162  /// For file path parameters these permissions will indicate how the
1163  /// asset plans to use the file: whether it will only read it, only write
1164  /// to it, or both. This is set in the Operator Type Properties using
1165  /// the Browse Mode parameter property.
1167 
1168  /// Number of tags on this paramter.
1170 
1171  /// Tuple size. For scalar parameters this value is 1, but for vector
1172  /// parameters this value can be greater. For example, a 3 vector would
1173  /// have a size of 3. For folders and folder lists, this value is the
1174  /// number of children they own.
1175  int size;
1176 
1177  /// Any ::HAPI_ParmType can be a choice list. If this is set to
1178  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
1179  /// Otherwise, the parameter is a choice list of the indicated type.
1180  /// See @ref HAPI_Parameters_ChoiceLists.
1182 
1183  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
1184  /// choice list, this tells you how many choices it currently has.
1185  /// Note that some menu parameters can have a dynamic number of choices
1186  /// so it is important that this count is re-checked after every cook.
1187  /// See @ref HAPI_Parameters_ChoiceLists.
1189 
1190  /// Note that folders are not real parameters in Houdini so they do not
1191  /// have names. The folder names given here are generated from the name
1192  /// of the folderlist (or switcher) parameter which is a parameter. The
1193  /// folderlist parameter simply defines how many of the "next" parameters
1194  /// belong to the first folder, how many of the parameters after that
1195  /// belong to the next folder, and so on. This means that folder names
1196  /// can change just by reordering the folders around so don't rely on
1197  /// them too much. The only guarantee here is that the folder names will
1198  /// be unique among all other parameter names.
1199  HAPI_StringHandle nameSH;
1200 
1201  /// The label string for the parameter
1202  HAPI_StringHandle labelSH;
1203 
1204  /// If this parameter is a multiparm instance than the
1205  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
1206  /// containing #'s for the parts of the name that use the instance number.
1207  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
1208  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
1209  /// replaced by the instance number. For regular parms, the
1210  /// ::HAPI_ParmInfo::templateNameSH is identical to the
1211  /// ::HAPI_ParmInfo::nameSH.
1212  HAPI_StringHandle templateNameSH;
1213 
1214  /// The help string for this parameter
1215  HAPI_StringHandle helpSH;
1216 
1217  /// Whether min/max exists for the parameter values.
1218  /// @{
1223  /// @}
1224 
1225  /// Parameter value range, shared between int and float parameters.
1226  /// @{
1227  float min;
1228  float max;
1229  float UIMin;
1230  float UIMax;
1231  /// @}
1232 
1233  /// Whether this parm should be hidden from the user entirely. This is
1234  /// mostly used to expose parameters as asset meta-data but not allow the
1235  /// user to directly modify them.
1237 
1238  /// Whether this parm should appear enabled or disabled.
1240 
1241  /// If true, it means this parameter doesn't actually exist on the node
1242  /// in Houdini but was added by Houdini Engine as a spare parameter.
1243  /// This is just for your information. The behaviour of this parameter
1244  /// is not any different than a non-spare parameter.
1246 
1247  HAPI_Bool joinNext; ///< Whether this parm should be on the same line as
1248  ///< the next parm.
1249  HAPI_Bool labelNone; ///< Whether the label should be displayed.
1250 
1251  /// The index to use to look into the values array in order to retrieve
1252  /// the actual value(s) of this parameter.
1253  /// @{
1258  /// @}
1259 
1260  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1261  /// this parameter accepts.
1263 
1264  /// The node input parameter could have another subtype filter specified,
1265  /// like "Object: Geometry Only". In this case, this value will specify
1266  /// that extra filter. If the filter demands a node that HAPI does not
1267  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1268  /// NONE as such a node is not settable through HAPI.
1270 
1271  /// See @ref HAPI_Parameters_MultiParms.
1272  /// @{
1274 
1275  int instanceNum; ///< The index of the instance in the multiparm.
1276  int instanceLength; ///< The number of parms in a multiparm instance.
1277  int instanceCount; ///< The number of instances in a multiparm.
1278 
1279  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1281 
1283  /// @}
1284 
1285  /// Provides the raw condition string which is used to evaluate the
1286  /// the visibility of a parm
1287  HAPI_StringHandle visibilityConditionSH;
1288 
1289  /// Provides the raw condition string which is used to evalute whether
1290  /// a parm is enabled or disabled
1291  HAPI_StringHandle disabledConditionSH;
1292 };
1294 
1296 {
1297  HAPI_ParmId parentParmId;
1298  HAPI_StringHandle labelSH;
1299 
1300  /// This evaluates to the value of the token associated with the label
1301  /// applies to string menus only.
1302  HAPI_StringHandle valueSH;
1303 };
1305 
1306 // HANDLES ------------------------------------------------------------------
1307 
1308 /// @struct HAPI_HandleInfo
1309 ///
1310 /// Contains handle information such as the type of handle
1311 /// (translate, rotate, scale, softxform ...etc) and the number of
1312 /// parameters the current handle is bound to.
1313 ///
1315 {
1316  HAPI_StringHandle nameSH;
1317  HAPI_StringHandle typeNameSH;
1318 
1320 };
1322 
1323 /// @struct HAPI_HandleBindingInfo
1324 ///
1325 /// Contains binding information that maps the handle parameter to
1326 /// the asset parameter. The index is only used for int and float vector
1327 /// and colour parms.
1328 ///
1330 {
1331  HAPI_StringHandle handleParmNameSH;
1332  HAPI_StringHandle assetParmNameSH;
1333 
1334  HAPI_ParmId assetParmId;
1336 };
1338 
1339 // OBJECTS ------------------------------------------------------------------
1340 
1342 {
1343  HAPI_StringHandle nameSH;
1344 
1345  /// (deprecated)
1346  HAPI_StringHandle objectInstancePathSH;
1347 
1348  /// For incremental updates. Indicates whether the object's transform
1349  /// has changed. Refreshed only during an asset cook.
1351 
1352  /// For incremental updates. Indicates whether any of the object's
1353  /// geometry nodes have changed. Refreshed only during an asset cook.
1355 
1356  /// Whether the object is hidden and should not be shown. Some objects
1357  /// should be hidden but still brought into the host environment, for
1358  /// example those used only for instancing.
1359  /// See @ref HAPI_Instancing.
1361 
1362  /// See @ref HAPI_Instancing.
1364 
1365  /// Determine if this object is being instanced. Normally, this implies
1366  /// that while this object may not be visible, it should still be
1367  /// brought into the host application because it is needed by an instancer.
1368  /// See @ref HAPI_Instancing.
1370 
1371  /// (deprecated) The number of geometries under this object. For those familiar
1372  /// with Houdini, this number will always include the one visible SOP and any
1373  /// SOPs that were exposed as "editable" or "templated".
1374  /// See @ref HAPI_Geos.
1376 
1377  /// Use the node id to get the node's parameters.
1378  /// Using the HDK, you can also get the raw node C++ pointer for this
1379  /// object's internal node.
1380  /// See @ref HAPI_Nodes_Basics.
1381  HAPI_NodeId nodeId;
1382 
1383  /// If the object is an instancer, this variable gives the object id of
1384  /// the object that should be instanced.
1385  /// See @ref HAPI_Instancing.
1386  HAPI_NodeId objectToInstanceId;
1387 };
1389 
1390 // GEOMETRY -----------------------------------------------------------------
1391 
1393 {
1395  HAPI_StringHandle nameSH;
1396 
1397  /// Use the node id to get the node's parameters.
1398  /// Using the HDK, you can also get the raw node C++ pointer for this
1399  /// object's internal node.
1400  HAPI_NodeId nodeId;
1401 
1402  /// Whether the SOP node has been exposed by dragging it into the
1403  /// editable nodes section of the asset definition.
1405 
1406  /// Has the templated flag turned on which means "expose as read-only".
1408 
1409  /// Final Result (Display SOP).
1411 
1412  /// For incremental updates.
1414 
1415  /// (deprecated) This variable is deprecated and should no longer be used.
1416  /// Materials are now separate from parts. They are maintained at the
1417  /// asset level so you only need to check if the material itself has
1418  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1419  /// on the part.
1421 
1422  /// Groups.
1423  /// @{
1426  /// @}
1427 
1428  /// Total number of parts this geometry contains.
1429  /// See @ref HAPI_Parts.
1431 };
1433 
1435 {
1436  HAPI_PartId id;
1437  HAPI_StringHandle nameSH;
1439 
1442  int pointCount; ///< Number of points. Note that this is NOT the number
1443  ///< of "positions" as "points" may imply. If your
1444  ///< geometry has 3 points then set this to 3 and not 3*3.
1445 
1446  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1447 
1448  /// If this is true, don't display this part. Load its data but then
1449  /// instance it where the corresponding instancer part tells you to
1450  /// instance it.
1452 
1453  /// The number of parts that this instancer part is instancing.
1454  /// For example, if we're instancing a curve and a box, they would come
1455  /// across as two parts, hence this count would be two.
1456  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId's.
1458 
1459  /// The number of instances that this instancer part is instancing.
1460  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1461  /// if I'm instancing the merge of a curve and a box 5 times, this count
1462  /// would be 5. To be clear, all instanced parts are instanced the same
1463  /// number of times and with the same transform for each instance.
1464  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1465  /// each instance.
1467 
1468  /// If this is false, the underlying attribute data appear to match that of
1469  /// the previous cook. In this case you may be able to re-used marshaled
1470  /// data from the previous cook.
1472 };
1474 
1475 /// See @ref HAPI_Attributes.
1477 {
1479 
1482 
1483  /// When converting from the Houdini native GA geometry format to the
1484  /// GT geometry format HAPI uses, some attributes might change owners.
1485  /// For example, in Houdini GA curves can have points shared by
1486  /// vertices but the GT format only supports curve vertices
1487  /// (no points). This means that if you had point attributes on a curve
1488  /// in Houdini, when it comes out of HAPI those point attributes will now
1489  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1490  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1491  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1493 
1494  /// Number of attributes. This count will match the number of values
1495  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1496  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1497  /// To be clear, this is not the number of values in the attribute, rather
1498  /// it is the number of attributes. If your geometry has three 3D points
1499  /// then this count will be 3 (not 3*3) while the
1500  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1501  int count;
1502 
1503  /// Number of values per attribute.
1504  /// Note that this is NOT the memory size of the attribute. It is the
1505  /// number of values per attributes. Multiplying this by the
1506  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1507  /// size per attribute.
1509 
1510  /// Total number of elements for an array attribute.
1511  /// An array attribute can be thought of as a 2 dimensional array where
1512  /// the 2nd dimension can vary in size for each element in the 1st
1513  /// dimension. Therefore this returns the total number of values in
1514  /// the entire array.
1515  /// This should be used to determine the total storage
1516  /// size needed by multiplying with ::HAPI_AttributeInfo::storage.
1517  /// Note that this will be 0 for a non-array attribute.
1519 
1520  /// Attribute type info
1521  /// This is used to help identify the type of data stored in an attribute.
1522  /// Using the type is recommended over using just an attribute's name to identify
1523  /// its purpose.
1525 };
1527 
1528 // MATERIALS ----------------------------------------------------------------
1529 
1531 {
1532  /// This is the HAPI node id for the SHOP node this material is attached
1533  /// to. Use it to get access to the parameters (which contain the
1534  /// texture paths).
1535  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1536  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1537  /// will never change for a specific material.
1538  HAPI_NodeId nodeId;
1539 
1541 
1543 };
1545 
1547 {
1548  HAPI_StringHandle nameSH;
1549  HAPI_StringHandle descriptionSH;
1550  HAPI_StringHandle defaultExtensionSH;
1551 };
1553 
1555 {
1556  /// Unlike the other members of this struct changing imageFileFormatNameSH
1557  /// and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1558  /// Use this member variable to derive which image file format will be used
1559  /// by the HAPI_ExtractImageTo...() functions if called with
1560  /// image_file_format_name set to NULL. This way, you can decide whether
1561  /// to ask for a file format conversion (slower) or not (faster).
1562  HAPI_StringHandle imageFileFormatNameSH; // Read-only
1563 
1564  int xRes;
1565  int yRes;
1566 
1568 
1569  HAPI_Bool interleaved; ///< ex: true = RGBRGBRGB, false = RRRGGGBBB
1571 
1572  /// Adjust the gamma of the image. For anything less than
1573  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1574  double gamma;
1575 };
1577 
1578 // ANIMATION ----------------------------------------------------------------
1579 
1581 {
1582  float time;
1583  float value;
1584  float inTangent;
1585  float outTangent;
1586 };
1588 
1589 // VOLUMES ------------------------------------------------------------------
1590 
1591 /// @struct HAPI_VolumeInfo
1592 ///
1593 /// This represents a volume primitive but does not contain the actual voxel
1594 /// values, which can be retrieved on a per-tile basis.
1595 ///
1596 /// See @ref HAPI_Volumes.
1597 ///
1599 {
1600  HAPI_StringHandle nameSH;
1601 
1603 
1604  /// Each voxel is identified with an index. The indices will range
1605  /// between:
1606  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1607  /// @{
1608  int xLength;
1609  int yLength;
1610  int zLength;
1611  int minX;
1612  int minY;
1613  int minZ;
1614  /// @}
1615 
1616  /// Number of values per voxel.
1617  /// The tuple size field is 1 for scalars and 3 for vector data.
1619 
1620  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1622 
1623  /// The dimensions of each tile.
1624  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1626 
1627  /// The transform of the volume with respect to the lengths.
1628  /// The volume may be positioned anywhere in space.
1630 
1631  /// Denotes special situations where the volume tiles are not perfect
1632  /// cubes, but are tapered instead.
1634 
1635  /// If there is taper involved, denotes the amount of taper involved.
1636  /// @{
1637  float xTaper;
1638  float yTaper;
1639  /// @}
1640 };
1642 
1643 /// @struct HAPI_VolumeTileInfo
1644 ///
1645 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1646 /// The size of each dimension is HAPI_VoluemInfo::tileSize
1647 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1648 ///
1650 {
1651  int minX;
1652  int minY;
1653  int minZ;
1655 };
1657 
1658 // CURVES -------------------------------------------------------------------
1659 
1660 /// @struct HAPI_CurveInfo
1661 ///
1662 /// This represents the meta-data associated with a curve mesh (a number
1663 /// of curves of the same type).
1665 {
1667  int curveCount; ///< The number of curves contained in this curve mesh.
1668  int vertexCount; ///< The number of control vertices (CVs) for all curves.
1669  int knotCount; ///< The number of knots for all curves.
1670 
1672  ///< Whether the curves in this curve mesh are periodic.
1674  ///< Whether the curves in this curve mesh are rational.
1675  int order; ///< Order of 1 is invalid. 0 means there is a varying order.
1676 
1677  HAPI_Bool hasKnots; ///< Whether the curve has knots.
1678 };
1680 
1681 // BASIC PRIMITIVES ---------------------------------------------------------
1682 
1684 {
1685  float center[ HAPI_POSITION_VECTOR_SIZE ];
1686  float size[ HAPI_SCALE_VECTOR_SIZE ];
1687  float rotation[ HAPI_EULER_VECTOR_SIZE ];
1688 };
1690 
1692 {
1693  float center[ HAPI_POSITION_VECTOR_SIZE ];
1694  float radius;
1695 };
1697 
1698 // PDG Structs --------------------------------------------------------------
1699 
1701 {
1702  HAPI_NodeId nodeId; /// id of related node
1703  HAPI_PDG_WorkitemId workitemId; /// id of related workitem
1704  HAPI_PDG_WorkitemId dependencyId; /// id of related workitem dependency
1705  int currentState; /// (HAPI_PDG_WorkItemState) value of current state for state change
1706  int lastState; /// (HAPI_PDG_WorkItemState) value of last state for state change
1707  int eventType; /// (HAPI_PDG_EventType) event type
1708  HAPI_StringHandle msgSH; /// String handle of the event message (> 0 if there is a message)
1709 };
1711 
1713 {
1714  int index; /// index of the workitem
1715  int numResults; /// number of results reported
1716  HAPI_StringHandle nameSH; /// name of the workitem
1717 };
1719 
1721 {
1722  int resultSH; /// result string data
1723  int resultTagSH; /// result tag
1724  HAPI_Int64 resultHash; /// hash value of result
1725 };
1727 
1728 // SESSIONSYNC --------------------------------------------------------------
1729 
1730 /// @struct HAPI_Viewport
1731 ///
1732 /// Contains the information for synchronizing viewport between Houdini
1733 /// and other applications. When SessionSync is enabled, Houdini will
1734 /// update this struct with its viewport state. It will also update
1735 /// its own viewport if this struct has changed.
1736 /// The data stored is in Houdini's right-handed Y-up coordinate system.
1737 ///
1739 {
1740  /// The world position of the viewport camera's pivot.
1741  float position[ HAPI_POSITION_VECTOR_SIZE ];
1742 
1743  /// The direction of the viewport camera stored as a quaternion.
1744  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
1745 
1746  /// The offset from the pivot to the viewport camera's
1747  /// actual world position.
1748  float offset;
1749 };
1751 
1752 /// @struct HAPI_SessionSyncInfo
1753 ///
1754 /// Contains the information for synchronizing general SessionSync
1755 /// state between Houdini and other applications. When SessionSync
1756 /// is enabled, Houdini will update this struct with its state.
1757 /// It will also update its internal state if this struct has
1758 /// changed.
1759 ///
1761 {
1762  /// Specifies whether Houdini's current time is used for Houdini Engine
1763  /// cooks. This is automatically enabled in SessionSync where
1764  /// Houdini's viewport forces cooks to use Houdini's current time.
1765  /// This is disabled in non-SessionSync mode, but can be toggled to
1766  /// override default behaviour.
1768 
1769  /// Specifies whether viewport synchronization is enabled. If enabled,
1770  /// in SessionSync, Houdini will update its own viewport using
1771  /// ::HAPI_Viewport.
1773 };
1775 
1776 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:157
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:936
"vector", "vector3"
Definition: HAPI_Common.h:366
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:20
True if it actually has a maximum size.
Definition: HAPI_Common.h:735
HAPI_StringHandle disabledConditionSH
Definition: HAPI_Common.h:1291
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1395
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1199
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1702
SOP Node Specific Flags.
Definition: HAPI_Common.h:464
HAPI_StringHandle labelSH
This is what any end user should be shown.
Definition: HAPI_Common.h:943
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1437
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1363
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1567
int parmStringValueCount
Definition: HAPI_Common.h:1102
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:1026
Recursive Flag.
Definition: HAPI_Common.h:450
Recursive Flag.
Definition: HAPI_Common.h:449
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:1181
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:440
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1343
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1386
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:1017
HAPI_PDG_WorkitemId workitemId
id of related node
Definition: HAPI_Common.h:1703
Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:190
HAPI_ParmId id
Definition: HAPI_Common.h:1139
Just the presets binary blob.
Definition: HAPI_Common.h:419
Radio buttons Folder.
Definition: HAPI_Common.h:399
"dir", "direction"
Definition: HAPI_Common.h:373
HAPI_Bool isEditable
Definition: HAPI_Common.h:1404
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:1282
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:1047
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:715
"toggle", "embed"
Definition: HAPI_Common.h:363
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1071
#define HAPI_API
Definition: HAPI_API.h:79
OBJ Node Specific Flags.
Definition: HAPI_Common.h:458
int resultTagSH
result string data
Definition: HAPI_Common.h:1723
HAPI_NodeFlags
Definition: HAPI_Common.h:445
HAPI_GeoType
Definition: HAPI_Common.h:546
int instanceCount
The number of instances in a multiparm.
Definition: HAPI_Common.h:1277
HAPI_StringHandle visibilityConditionSH
Definition: HAPI_Common.h:1287
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:940
int eventType
(HAPI_PDG_WorkItemState) value of last state for state change
Definition: HAPI_Common.h:1707
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:977
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1262
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1317
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1671
HAPI_RSTOrder
Definition: HAPI_Common.h:620
int parmFloatValueCount
Definition: HAPI_Common.h:1101
"intvector", "intvector3"
Definition: HAPI_Common.h:369
HAPI_CurveType
Definition: HAPI_Common.h:494
HAPI_PDG_State
Used with PDG functions.
Definition: HAPI_Common.h:768
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1480
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:866
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1400
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:1085
Single Channel.
Definition: HAPI_Common.h:663
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1538
int HAPI_HIPFileId
Definition: HAPI_Common.h:152
HAPI_ImageDataFormat
Definition: HAPI_Common.h:646
int handleCount
See Handles.
Definition: HAPI_Common.h:951
HAPI_PartType
Definition: HAPI_Common.h:570
int currentState
id of related workitem dependency
Definition: HAPI_Common.h:1705
HAPI_EnvIntType
Definition: HAPI_Common.h:682
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1673
HAPI_Bool isValid
Definition: HAPI_Common.h:1077
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:878
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:261
HAPI_StringHandle labelSH
The label string for the parameter.
Definition: HAPI_Common.h:1202
Max cache memory limit in MB.
Definition: HAPI_Common.h:736
HAPI_Permissions
Definition: HAPI_Common.h:271
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:18
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:184
TOP Node Specific Flags.
Definition: HAPI_Common.h:468
True if it actually has a minimum size.
Definition: HAPI_Common.h:733
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:1029
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:1215
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:900
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:1212
HAPI_AttributeOwner
Definition: HAPI_Common.h:483
HAPI_StringHandle fullOpNameSH
Full asset name and namespace.
Definition: HAPI_Common.h:946
RGBA Reversed.
Definition: HAPI_Common.h:668
Only some objects failed.
Definition: HAPI_Common.h:250
HAPI_ErrorCode
Definition: HAPI_Common.h:227
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1548
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:1122
HAPI_Bool splitGeosByAttribute
Definition: HAPI_Common.h:1005
HAPI_NodeType
Definition: HAPI_Common.h:425
HAPI_CurveType curveType
Definition: HAPI_Common.h:1666
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1669
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1222
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1331
int HAPI_StringHandle
Definition: HAPI_Common.h:129
HAPI_StatusVerbosity
Definition: HAPI_Common.h:178
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1492
Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:188
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:897
Total number of supported parameter types.
Definition: HAPI_Common.h:324
See Attributes.
Definition: HAPI_Common.h:1476
HAPI_ChoiceListType
Definition: HAPI_Common.h:406
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1471
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1451
Everything cook successfully without errors.
Definition: HAPI_Common.h:248
HAPI_Bool spare
Definition: HAPI_Common.h:1245
Menu Only, Single Selection.
Definition: HAPI_Common.h:409
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:877
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1667
HAPI_PrmScriptType
Definition: HAPI_Common.h:353
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1677
HAPI_XYZOrder
Definition: HAPI_Common.h:633
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1316
int HAPI_ParmId
Definition: HAPI_Common.h:138
int numResults
index of the workitem
Definition: HAPI_Common.h:1715
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:1142
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:233
HAPI_AttributeTypeInfo typeInfo
Definition: HAPI_Common.h:1524
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1675
int instancedPartCount
Definition: HAPI_Common.h:1457
int tagCount
Number of tags on this paramter.
Definition: HAPI_Common.h:1169
int transformInputCount
Definition: HAPI_Common.h:957
int outputCount
The number of outputs this specific node has.
Definition: HAPI_Common.h:1117
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:1052
int instanceStartOffset
First instance's HAPI_ParmInfo::instanceNum. Either 0 or 1.
Definition: HAPI_Common.h:1280
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:1145
HAPI_NodeId id
Definition: HAPI_Common.h:1069
HAPI_ImagePacking
Definition: HAPI_Common.h:660
HAPI_Transform transform
Definition: HAPI_Common.h:1629
HAPI_PDG_EventType
Used with PDG functions.
Definition: HAPI_Common.h:779
HAPI_SessionType
Definition: HAPI_Common.h:235
HAPI_StorageType storage
Definition: HAPI_Common.h:1481
Presets blob within an .idx file format.
Definition: HAPI_Common.h:420
int instanceNum
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1275
int instanceLength
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1276
int lastState
(HAPI_PDG_WorkItemState) value of current state for state change
Definition: HAPI_Common.h:1706
HAPI_Permissions permissions
Definition: HAPI_Common.h:1166
HAPI_PDG_WorkitemState
Used with PDG functions.
Definition: HAPI_Common.h:839
HAPI_VolumeType
Definition: HAPI_Common.h:504
HAPI_ParmType type
The HAPI type of the parm.
Definition: HAPI_Common.h:1148
License Type. See HAPI_License.
Definition: HAPI_Common.h:720
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1549
HAPI_PDG_WorkitemId dependencyId
id of related workitem
Definition: HAPI_Common.h:1704
HAPI_HeightFieldSampling
Type of sampling for heightfield.
Definition: HAPI_Common.h:760
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:412
HAPI_ImagePacking packing
Definition: HAPI_Common.h:1570
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
Whether the label should be displayed.
Definition: HAPI_Common.h:1249
HAPI_GeoType type
Definition: HAPI_Common.h:1394
HAPI_SessionId id
Definition: HAPI_Common.h:892
int HAPI_ProcessId
Definition: HAPI_Common.h:121
HAPI_RampType
Definition: HAPI_Common.h:281
HAPI_ParmType
Definition: HAPI_Common.h:296
HAPI_CurveOrders
Definition: HAPI_Common.h:592
HAPI_Bool invisible
Definition: HAPI_Common.h:1236
HAPI_Bool joinNext
the next parm.
Definition: HAPI_Common.h:1247
HAPI_StringHandle splitAttrSH
Definition: HAPI_Common.h:1006
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1542
HAPI_PartType type
Definition: HAPI_Common.h:1438
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1302
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1354
HAPI_StringHandle versionSH
User-defined asset version.
Definition: HAPI_Common.h:945
HAPI_StorageType
Definition: HAPI_Common.h:513
HAPI_STATIC_ASSERT(sizeof(HAPI_Int64)==8, unsupported_size_of_long)
HAPI_Bool hasMax
Definition: HAPI_Common.h:1220
HAPI_NodeId nodeId
Definition: HAPI_Common.h:927
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1550
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1332
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1410
HAPI_Bool isTimeDependent
Indicates if this node will change over time.
Definition: HAPI_Common.h:1125
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1413
int vertexCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1668
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1562
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1420
HAPI_NodeId parentId
Definition: HAPI_Common.h:1070
Min cache memory limit in MB.
Definition: HAPI_Common.h:734
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1407
Looks for Guide Geometry.
Definition: HAPI_Common.h:465
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:1080
HAPI_StringHandle filePathSH
Path to the .otl library file.
Definition: HAPI_Common.h:944
HAPI_Bool checkPartChanges
Definition: HAPI_Common.h:1058
char HAPI_Bool
Definition: HAPI_Common.h:110
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1221
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:1159
HAPI_NodeType type
Definition: HAPI_Common.h:1072
HAPI_StatusType
Definition: HAPI_Common.h:169
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:1061
HAPI_PresetType
Definition: HAPI_Common.h:416
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1298
HAPI_Bool interleaved
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1569
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:1114
HAPI_StringHandle helpURLSH
Asset help URL.
Definition: HAPI_Common.h:948
HAPI_Int64 resultHash
result tag
Definition: HAPI_Common.h:1724
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1297
"int", "integer"
Definition: HAPI_Common.h:355
HAPI_Result
Definition: HAPI_Common.h:197
HAPI_InputType
Definition: HAPI_Common.h:583
RGB Reversed.
Definition: HAPI_Common.h:666
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:996
HAPI_State
Definition: HAPI_Common.h:246
HAPI_VolumeType type
Definition: HAPI_Common.h:1602
int objectCount
See Objects.
Definition: HAPI_Common.h:950
HAPI_StringHandle helpTextSH
Asset help marked-up text.
Definition: HAPI_Common.h:947
int HAPI_PDG_WorkitemId
Use this with PDG functions.
Definition: HAPI_Common.h:145
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:1043
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1621
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:472
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:192
HAPI_AttributeTypeInfo
Definition: HAPI_Common.h:525
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:973
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:21
HAPI_Bool cookUsingHoudiniTime
Definition: HAPI_Common.h:1767
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1633
HAPI_GroupType
Definition: HAPI_Common.h:474
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1600
#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:1360
Field + Single Selection Menu.
Definition: HAPI_Common.h:411
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:134
HAPI_PartId id
Definition: HAPI_Common.h:1436
HAPI_CacheProperty
[HAPI_CacheProperty]
Definition: HAPI_Common.h:727
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1369
You should abort the cook.
Definition: HAPI_Common.h:249
int primitiveGroupCount
Definition: HAPI_Common.h:1425
HAPI_PrmScriptType scriptType
The Houdini script-type of the parm.
Definition: HAPI_Common.h:1151
HAPI_Int64 totalArrayElements
Definition: HAPI_Common.h:1518
HAPI_StringHandle nameSH
Instance name (the label + a number).
Definition: HAPI_Common.h:942
HAPI_StringHandle nameSH
number of results reported
Definition: HAPI_Common.h:1716
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:410
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:131
Parameter is not a menu.
Definition: HAPI_Common.h:408
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_CACHE]
Definition: HAPI_Common.h:97
HAPI_TransformComponent
Definition: HAPI_Common.h:602
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1350
HAPI_StringHandle objectInstancePathSH
(deprecated)
Definition: HAPI_Common.h:1346
HAPI_Bool hasMin
Definition: HAPI_Common.h:1219
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:1090
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1239
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:1051
HAPI_StringHandle msgSH
(HAPI_PDG_EventType) event type
Definition: HAPI_Common.h:1708
HAPI_SessionType type
Definition: HAPI_Common.h:888
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1269
int HAPI_PartId
Definition: HAPI_Common.h:142
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1381
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1273