HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends 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 /////////////////////////////////////////////////////////////////////////////
145 // Enums
146 
148 {
156 };
158 
160 {
165 };
167 
169 {
173 
175  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
176 
177  // Used for Results.
179  ///< Equivalent to ::HAPI_STATUSVERBOSITY_0.
181  ///< Equivalent to ::HAPI_STATUSVERBOSITY_1.
183  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
184 };
186 
188 {
200 
207 
210 
212 
214 };
216 
218 {
221 };
223 typedef int HAPI_ErrorCodeBits;
224 
226 {
233 };
235 
237 {
238  HAPI_STATE_READY, ///< Everything cook successfully without errors.
239  HAPI_STATE_READY_WITH_FATAL_ERRORS, ///< You should abort the cook.
240  HAPI_STATE_READY_WITH_COOK_ERRORS, ///< Only some objects failed.
246 
248 };
250 
252 {
258 };
260 
262 {
268 };
270 
272 {
277 };
279 
280 /// As you can see, some of these high level types share the same underlying
281 /// raw data type. For instance, both string and file parameter types can be
282 /// represented with strings, yet semantically they are different. We will
283 /// group high level parameter types that share an underlying raw data type
284 /// together, so you can always check the raw data type of a parameter based
285 /// on its high level data type by checking a range of values.
287 {
292 
295 
300 
302 
305 
309 
310  // Helpers
311 
312  HAPI_PARMTYPE_MAX, ///< Total number of supported parameter types.
313 
316 
319 
322 
325 
328 
331 
334 };
336 
338 {
339  HAPI_CHOICELISTTYPE_NONE, ///< Parameter is not a menu.
340  HAPI_CHOICELISTTYPE_NORMAL, ///< Menu Only, Single Selection
341  HAPI_CHOICELISTTYPE_MINI, ///< Mini Menu Only, Single Selection
342  HAPI_CHOICELISTTYPE_REPLACE, ///< Field + Single Selection Menu
343  HAPI_CHOICELISTTYPE_TOGGLE ///< Field + Multiple Selection Menu
344 };
346 
348 {
350  HAPI_PRESETTYPE_BINARY = 0, ///< Just the presets binary blob.
351  HAPI_PRESETTYPE_IDX, ///< Presets blob within an .idx file format.
353 };
355 
357 {
369 };
371 typedef int HAPI_NodeTypeBits;
372 
373 /// Flags used to filter compositions of node lists. Flags marked
374 /// 'Recursive Flag' will exclude children whos parent does not
375 /// satisfy the flag, even if the children themselves satisfy the flag.
377 {
380  HAPI_NODEFLAGS_DISPLAY = 1 << 0, ///< Recursive Flag
381  HAPI_NODEFLAGS_RENDER = 1 << 1, ///< Recursive Flag
387 
388  /// OBJ Node Specific Flags
393 
394  /// SOP Node Specific Flags
395  HAPI_NODEFLAGS_SOP_CURVE = 1 << 11 ///< Looks for "curve".
396 };
398 typedef int HAPI_NodeFlagsBits;
399 
401 {
406 };
408 
410 {
417 };
419 
421 {
427 };
429 
431 {
436 };
438 
440 {
448 };
450 
452 {
454  HAPI_ATTRIBUTE_TYPE_NONE, // Implicit type based on data
456  HAPI_ATTRIBUTE_TYPE_HPOINT, // Homogeneous position
457  HAPI_ATTRIBUTE_TYPE_VECTOR, // Direction vector
463  HAPI_ATTRIBUTE_TYPE_ST, // Parametric interval
464  HAPI_ATTRIBUTE_TYPE_HIDDEN, // "Private" (hidden)
465  HAPI_ATTRIBUTE_TYPE_BOX2, // 2x2 Bounding box
466  HAPI_ATTRIBUTE_TYPE_BOX, // 3x3 Bounding box
467  HAPI_ATTRIBUTE_TYPE_TEXTURE, // Texture coordinate
469 };
471 
473 {
475 
476  /// Most geos will be of this type which essentially means a geo
477  /// not of the other types.
479 
480  /// An exposed edit node.
481  /// See @ref HAPI_IntermediateAssetsResults.
483 
484  /// An input geo that can accept geometry from the host.
485  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
487 
488  /// A curve.
489  /// See @ref HAPI_Curves.
491 
493 };
495 
497 {
506 };
508 
510 {
515 };
517 
519 {
525 };
527 
529 {
543 };
545 
547 {
548  HAPI_TRS = 0,
554 
556 };
558 
560 {
561  HAPI_XYZ = 0,
567 
569 };
571 
573 {
581 
583 };
585 
587 {
589  HAPI_IMAGE_PACKING_SINGLE, ///< Single Channel
590  HAPI_IMAGE_PACKING_DUAL, ///< Dual Channel
592  HAPI_IMAGE_PACKING_BGR, ///< RGB Reversed
594  HAPI_IMAGE_PACKING_ABGR, ///< RGBA Reversed
596 
599 };
601 
602 /// This enum is to be used with ::HAPI_GetEnvInt() to retrieve basic
603 /// information about the HAPI implementation currently being linked
604 /// against. Note that as of HAPI version 2.0, these enum values are
605 /// guaranteed never to change so you can reliably get this information from
606 /// any post-2.0 version of HAPI. The same goes for the actual
607 /// ::HAPI_GetEnvInt() API call.
609 {
611 
612  /// The three components of the Houdini version that HAPI is
613  /// expecting to link against.
614  /// @{
619  /// @}
620 
621  /// The two components of the Houdini Engine (marketed) version.
622  /// @{
625  /// @}
626 
627  /// This is a monotonously increasing API version number that can be used
628  /// to lock against a certain API for compatibility purposes. Basically,
629  /// when this number changes code compiled against the HAPI.h methods
630  /// might no longer compile. Semantic changes to the methods will also
631  /// cause this version to increase. This number will be reset to 0
632  /// every time the Houdini Engine version is bumped.
634 
636 };
638 
639 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
640 /// session-specific information.
642 {
644 
645  /// License Type. See ::HAPI_License.
647 
649 };
651 
652 /// [HAPI_CacheProperty]
654 {
655  /// Current memory usage in MB. Setting this to 0 invokes
656  /// a cache clear.
658 
659  HAPI_CACHEPROP_HAS_MIN, ///< True if it actually has a minimum size.
660  HAPI_CACHEPROP_MIN, ///< Min cache memory limit in MB.
661  HAPI_CACHEPROP_HAS_MAX, ///< True if it actually has a maximum size.
662  HAPI_CACHEPROP_MAX, ///< Max cache memory limit in MB.
663 
664  /// How aggressive to cull memory. This only works for:
665  /// - ::HAPI_CACHE_COP_COOK where:
666  /// 0 -> Never reduce inactive cache.
667  /// 1 -> Always reduce inactive cache.
668  /// - ::HAPI_CACHE_OBJ where:
669  /// 0 -> Never enforce the max memory limit.
670  /// 1 -> Always enforce the max memory limit.
671  /// - ::HAPI_CACHE_SOP where:
672  /// 0 -> When to Unload = Never
673  /// When to Limit Max Memory = Never
674  /// 1-2 -> When to Unload = Based on Flag
675  /// When to Limit Max Memory = Never
676  /// 3-4 -> When to Unload = Based on Flag
677  /// When to Limit Max Memory = Always
678  /// 5 -> When to Unload = Always
679  /// When to Limit Max Memory = Always
681 };
682 /// [HAPI_CacheProperty]
684 
685 /////////////////////////////////////////////////////////////////////////////
686 // Main API Structs
687 
688 // GENERICS -----------------------------------------------------------------
689 
691 {
692  float position[ HAPI_POSITION_VECTOR_SIZE ];
693  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
696 
698 };
700 
702 {
703  float position[ HAPI_POSITION_VECTOR_SIZE ];
704  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
707 
710 };
712 
713 // SESSIONS -----------------------------------------------------------------
714 
716 {
717  /// The type of session determines the which implementation will be
718  /// used to communicate with the Houdini Engine library.
720 
721  /// Some session types support multiple simultaneous sessions. This means
722  /// that each session needs to have a unique identifier.
723  HAPI_SessionId id;
724 };
726 
727 /// Options to configure a Thrift server being started from HARC.
729 {
730  /// Close the server automatically when all clients disconnect from it.
732 
733  /// Timeout in milliseconds for waiting on the server to
734  /// signal that it's ready to serve. If the server fails
735  /// to signal within this time interval, the start server call fails
736  /// and the server process is terminated.
737  float timeoutMs;
738 };
740 
741 // TIME ---------------------------------------------------------------------
742 
744 {
745  float fps;
746 
747  float startTime;
748  float endTime;
749 };
751 
752 // ASSETS -------------------------------------------------------------------
753 
755 {
756  /// Use the node id to get the asset's parameters.
757  /// See @ref HAPI_Nodes_Basics.
758  HAPI_NodeId nodeId;
759 
760  /// The objectNodeId differs from the regular nodeId in that for
761  /// geometry based assets (SOPs) it will be the node id of the dummy
762  /// object (OBJ) node instead of the asset node. For object based assets
763  /// the objectNodeId will equal the nodeId. The reason the distinction
764  /// exists is because transforms are always stored on the object node
765  /// but the asset parameters may not be on the asset node if the asset
766  /// is a geometry asset so we need both.
767  HAPI_NodeId objectNodeId;
768 
769  /// It's possible to instantiate an asset without cooking it.
770  /// See @ref HAPI_Assets_Cooking.
772 
773  HAPI_StringHandle nameSH; ///< Instance name (the label + a number).
774  HAPI_StringHandle labelSH; ///< This is what any end user should be shown.
775  HAPI_StringHandle filePathSH; ///< Path to the .otl library file.
776  HAPI_StringHandle versionSH; ///< User-defined asset version.
777  HAPI_StringHandle fullOpNameSH; ///< Full asset name and namespace.
778  HAPI_StringHandle helpTextSH; ///< Asset help marked-up text.
779 
780  int objectCount; ///< See @ref HAPI_Objects.
781  int handleCount; ///< See @ref HAPI_Handles.
782 
783  /// Transform inputs exposed by the asset. For OBJ assets this is the
784  /// number of transform inputs on the OBJ node. For SOP assets, this is
785  /// the singular transform input on the dummy wrapper OBJ node.
786  /// See @ref HAPI_AssetInputs.
788 
789  /// Geometry inputs exposed by the asset. For SOP assets this is
790  /// the number of geometry inputs on the SOP node itself. OBJ assets
791  /// will always have zero geometry inputs.
792  /// See @ref HAPI_AssetInputs.
794 
795  /// For incremental updates. Indicates whether any of the assets's
796  /// objects have changed. Refreshed only during an asset cook.
798 
799  /// For incremental updates. Indicates whether any of the asset's
800  /// materials have changed. Refreshed only during an asset cook.
802 };
804 
806 {
807  /// Normally, geos are split into parts in two different ways. First it
808  /// is split by group and within each group it is split by primitive type.
809  ///
810  /// For example, if you have a geo with group1 covering half of the mesh
811  /// and volume1 and group2 covering the other half of the mesh, all of
812  /// curve1, and volume2 you will end up with 5 parts. First two parts
813  /// will be for the half-mesh of group1 and volume1, and the last three
814  /// will cover group2.
815  ///
816  /// This toggle lets you disable the splitting by group and just have
817  /// the geo be split by primitive type alone. By default, this is true
818  /// and therefore geos will be split by group and primitive type. If
819  /// set to false, geos will only be split by primitive type.
821 
822  /// For meshes only, this is enforced by convexing the mesh. Use -1
823  /// to avoid convexing at all and get some performance boost.
825 
826  /// For curves only.
827  /// If this is set to true, then all curves will be refined to a linear
828  /// curve and you can no longer access the original CVs. You can control
829  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
830  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
832 
833  /// Controls the number of divisions per unit distance when refining
834  /// a curve to linear. The default in Houdini is 8.0.
836 
837  /// If this option is turned on, then we will recursively clear the
838  /// errors and warnings (and messages) of all nodes before performing
839  /// the cook.
841 
842  /// Decide whether to recursively cook all templated geos or not.
844 
845  /// Decide whether to split points by vertex attributes. This takes
846  /// all vertex attributes and tries to copy them to their respective
847  /// points. If two vertices have any difference in their attribute values,
848  /// the corresponding point is split into two points. This is repeated
849  /// until all the vertex attributes have been copied to the points.
850  ///
851  /// With this option enabled, you can reduce the total number of vertices
852  /// on a game engine side as sharing of attributes (like UVs) is optimized.
853  /// To make full use of this feature, you have to think of Houdini points
854  /// as game engine vertices (sharable). With this option OFF (or before
855  /// this feature existed) you had to map Houdini vertices to game engine
856  /// vertices, to make sure all attribute values are accounted for.
858 
859  /// Choose how you want the cook to handle packed primitives.
860  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
862 
863  /// Choose which special part types should be handled. Unhandled special
864  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
867 
868  /// For internal use only. :)
870 };
872 
873 // NODES --------------------------------------------------------------------
874 
876 {
877  HAPI_NodeId id;
878  HAPI_NodeId parentId;
879  HAPI_StringHandle nameSH;
881 
882  /// Always true unless the asset's definition has changed due to loading
883  /// a duplicate asset definition and from another OTL asset library
884  /// file OR deleting the OTL asset library file used by this node's asset.
886 
887  /// Total number of cooks of this node.
889 
890  /// Use this unique id to grab the OP_Node pointer for this node.
891  /// If you're linking against the C++ HDK, include the OP_Node.h header
892  /// and call OP_Node::lookupNode().
894 
895  /// This is the internal node path in the Houdini scene graph. This path
896  /// is meant to be abstracted away for most client purposes but for
897  /// advanced uses it can come in handy.
898  HAPI_StringHandle internalNodePathSH;
899 
900  /// Total number of parameters this asset has exposed. Includes hidden
901  /// parameters.
902  /// See @ref HAPI_Parameters.
904 
905  /// Number of values. A single parameter may have more than one value so
906  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
907  /// @{
911  /// @}
912 
913  /// The total number of choices among all the combo box parameters.
914  /// See @ref HAPI_Parameters_ChoiceLists.
916 
917  /// The number of child nodes. This is 0 for all nodes that are not
918  /// node networks.
920 
921  /// The number of inputs this specific node has.
923 
924  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
925  /// this set to true. Only such nodes can be deleted using
926  /// ::HAPI_DeleteNode().
928 };
930 
931 // PARAMETERS ---------------------------------------------------------------
932 
933 /// @struct HAPI_ParmInfo
934 ///
935 /// Contains parameter information like name, label, type, and size.
936 ///
938 {
939  /// The parent id points to the id of the parent parm
940  /// of this parm. The parent parm is something like a folder.
941  HAPI_ParmId id;
942 
943  /// Parameter id of the parent of this parameter.
944  HAPI_ParmId parentId;
945 
946  /// Child index within its immediate parent parameter.
948 
950 
951  /// Some parameter types require additional type information.
952  /// - File path parameters will indicate what file extensions they
953  /// expect in a space-separated list of wild-cards. This is set
954  /// in the Operator Type Properties using the File Pattern
955  /// parameter property.
956  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
957  HAPI_StringHandle typeInfoSH;
958 
959  /// For the majority of parameter types permission will not be applicable.
960  /// For file path parameters these permissions will indicate how the
961  /// asset plans to use the file: whether it will only read it, only write
962  /// to it, or both. This is set in the Operator Type Properties using
963  /// the Browse Mode parameter property.
965 
966  /// Number of tags on this paramter.
967  int tagCount;
968 
969  /// Tuple size. For scalar parameters this value is 1, but for vector
970  /// parameters this value can be greater. For example, a 3 vector would
971  /// have a size of 3. For folders and folder lists, this value is the
972  /// number of children they own.
973  int size;
974 
975  /// Any ::HAPI_ParmType can be a choice list. If this is set to
976  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
977  /// Otherwise, the parameter is a choice list of the indicated type.
978  /// See @ref HAPI_Parameters_ChoiceLists.
980 
981  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
982  /// choice list, this tells you how many choices it currently has.
983  /// Note that some menu parameters can have a dynamic number of choices
984  /// so it is important that this count is re-checked after every cook.
985  /// See @ref HAPI_Parameters_ChoiceLists.
987 
988  /// Note that folders are not real parameters in Houdini so they do not
989  /// have names. The folder names given here are generated from the name
990  /// of the folderlist (or switcher) parameter which is a parameter. The
991  /// folderlist parameter simply defines how many of the "next" parameters
992  /// belong to the first folder, how many of the parameters after that
993  /// belong to the next folder, and so on. This means that folder names
994  /// can change just by reordering the folders around so don't rely on
995  /// them too much. The only guarantee here is that the folder names will
996  /// be unique among all other parameter names.
997  HAPI_StringHandle nameSH;
998 
999  HAPI_StringHandle labelSH;
1000 
1001  /// If this parameter is a multiparm instance than the
1002  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
1003  /// containing #'s for the parts of the name that use the instance number.
1004  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
1005  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
1006  /// replaced by the instance number. For regular parms, the
1007  /// ::HAPI_ParmInfo::templateNameSH is identical to the
1008  /// ::HAPI_ParmInfo::nameSH.
1009  HAPI_StringHandle templateNameSH;
1010 
1011  /// The help string for this parameter
1012  HAPI_StringHandle helpSH;
1013 
1014  /// Whether min/max exists for the parameter values.
1015  /// @{
1020  /// @}
1021 
1022  /// Parameter value range, shared between int and float parameters.
1023  /// @{
1024  float min;
1025  float max;
1026  float UIMin;
1027  float UIMax;
1028  /// @}
1029 
1030  /// Whether this parm should be hidden from the user entirely. This is
1031  /// mostly used to expose parameters as asset meta-data but not allow the
1032  /// user to directly modify them.
1034 
1035  /// Whether this parm should appear enabled or disabled.
1037 
1038  /// If true, it means this parameter doesn't actually exist on the node
1039  /// in Houdini but was added by Houdini Engine as a spare parameter.
1040  /// This is just for your information. The behaviour of this parameter
1041  /// is not any different than a non-spare parameter.
1043 
1044  HAPI_Bool joinNext; ///< Whether this parm should be on the same line as
1045  ///< the next parm.
1046  HAPI_Bool labelNone; ///< Whether the label should be displayed.
1047 
1048  /// The index to use to look into the values array in order to retrieve
1049  /// the actual value(s) of this parameter.
1050  /// @{
1055  /// @}
1056 
1057  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1058  /// this parameter accepts.
1060 
1061  /// The node input parameter could have another subtype filter specified,
1062  /// like "Object: Geometry Only". In this case, this value will specify
1063  /// that extra filter. If the filter demands a node that HAPI does not
1064  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1065  /// NONE as such a node is not settable through HAPI.
1067 
1068  /// See @ref HAPI_Parameters_MultiParms.
1069  /// @{
1071 
1072  int instanceNum; ///< The index of the instance in the multiparm.
1073  int instanceLength; ///< The number of parms in a multiparm instance.
1074  int instanceCount; ///< The number of instances in a multiparm.
1075 
1076  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1078 
1080  /// @}
1081 };
1083 
1085 {
1086  HAPI_ParmId parentParmId;
1087  HAPI_StringHandle labelSH;
1088 
1089  /// This evaluates to the value of the token associated with the label
1090  /// applies to string menus only.
1091  HAPI_StringHandle valueSH;
1092 };
1094 
1095 // HANDLES ------------------------------------------------------------------
1096 
1097 /// @struct HAPI_HandleInfo
1098 ///
1099 /// Contains handle information such as the type of handle
1100 /// (translate, rotate, scale, softxform ...etc) and the number of
1101 /// parameters the current handle is bound to.
1102 ///
1104 {
1105  HAPI_StringHandle nameSH;
1106  HAPI_StringHandle typeNameSH;
1107 
1109 };
1111 
1112 /// @struct HAPI_HandleBindingInfo
1113 ///
1114 /// Contains binding information that maps the handle parameter to
1115 /// the asset parameter
1116 ///
1118 {
1119  HAPI_StringHandle handleParmNameSH;
1120  HAPI_StringHandle assetParmNameSH;
1121 
1122  HAPI_ParmId assetParmId;
1123 };
1125 
1126 // OBJECTS ------------------------------------------------------------------
1127 
1129 {
1130  HAPI_StringHandle nameSH;
1131  HAPI_StringHandle objectInstancePathSH;
1132 
1133  /// For incremental updates. Indicates whether the object's transform
1134  /// has changed. Refreshed only during an asset cook.
1136 
1137  /// For incremental updates. Indicates whether any of the object's
1138  /// geometry nodes have changed. Refreshed only during an asset cook.
1140 
1141  /// Whether the object is hidden and should not be shown. Some objects
1142  /// should be hidden but still brought into the host environment, for
1143  /// example those used only for instancing.
1144  /// See @ref HAPI_Instancing.
1146 
1147  /// See @ref HAPI_Instancing.
1149 
1150  /// Determine if this object is being instanced. Normally, this implies
1151  /// that while this object may not be visible, it should still be
1152  /// brought into the host application because it is needed by an instancer.
1153  /// See @ref HAPI_Instancing.
1155 
1156  /// (deprecated) The number of geometries under this object. For those familiar
1157  /// with Houdini, this number will always include the one visible SOP and any
1158  /// SOPs that were exposed as "editable" or "templated".
1159  /// See @ref HAPI_Geos.
1161 
1162  /// Use the node id to get the node's parameters.
1163  /// Using the HDK, you can also get the raw node C++ pointer for this
1164  /// object's internal node.
1165  /// See @ref HAPI_Nodes_Basics.
1166  HAPI_NodeId nodeId;
1167 
1168  /// If the object is an instancer, this variable gives the object id of
1169  /// the object that should be instanced.
1170  /// See @ref HAPI_Instancing.
1171  HAPI_NodeId objectToInstanceId;
1172 };
1174 
1175 // GEOMETRY -----------------------------------------------------------------
1176 
1178 {
1180  HAPI_StringHandle nameSH;
1181 
1182  /// Use the node id to get the node's parameters.
1183  /// Using the HDK, you can also get the raw node C++ pointer for this
1184  /// object's internal node.
1185  HAPI_NodeId nodeId;
1186 
1187  /// Whether the SOP node has been exposed by dragging it into the
1188  /// editable nodes section of the asset definition.
1190 
1191  /// Has the templated flag turned on which means "expose as read-only".
1193 
1194  /// Final Result (Display SOP).
1196 
1197  /// For incremental updates.
1199 
1200  /// (deprecated) This variable is deprecated and should no longer be used.
1201  /// Materials are now separate from parts. They are maintained at the
1202  /// asset level so you only need to check if the material itself has
1203  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1204  /// on the part.
1206 
1207  /// Groups.
1208  /// @{
1211  /// @}
1212 
1213  /// Total number of parts this geometry contains.
1214  /// See @ref HAPI_Parts.
1216 };
1218 
1220 {
1221  HAPI_PartId id;
1222  HAPI_StringHandle nameSH;
1224 
1227  int pointCount; ///< Number of points. Note that this is NOT the number
1228  ///< of "positions" as "points" may imply. If your
1229  ///< geometry has 3 points then set this to 3 and not 3*3.
1230 
1231  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1232 
1233  /// If this is true, don't display this part. Load its data but then
1234  /// instance it where the corresponding instancer part tells you to
1235  /// instance it.
1237 
1238  /// The number of parts that this instancer part is instancing.
1239  /// For example, if we're instancing a curve and a box, they would come
1240  /// across as two parts, hence this count would be two.
1241  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId's.
1243 
1244  /// The number of instances that this instancer part is instancing.
1245  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1246  /// if I'm instancing the merge of a curve and a box 5 times, this count
1247  /// would be 5. To be clear, all instanced parts are instanced the same
1248  /// number of times and with the same transform for each instance.
1249  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1250  /// each instance.
1252 };
1254 
1255 /// See @ref HAPI_Attributes.
1257 {
1259 
1262 
1263  /// When converting from the Houdini native GA geometry format to the
1264  /// GT geometry format HAPI uses, some attributes might change owners.
1265  /// For example, in Houdini GA curves can have points shared by
1266  /// vertices but the GT format only supports curve vertices
1267  /// (no points). This means that if you had point attributes on a curve
1268  /// in Houdini, when it comes out of HAPI those point attributes will now
1269  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1270  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1271  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1273 
1274  /// Number of attributes. This count will match the number of values
1275  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1276  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1277  /// To be clear, this is not the number of values in the attribute, rather
1278  /// it is the number of attributes. If your geometry has three 3D points
1279  /// then this count will be 3 (not 3*3) while the
1280  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1281  int count;
1282 
1283  /// Number of values per attribute.
1284  /// Note that this is NOT the memory size of the attribute. It is the
1285  /// number of values per attributes. Multiplying this by the
1286  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1287  /// size per attribute.
1289 
1290  /// Attribute type info
1291  /// This is used to help identify the type of data stored in an attribute.
1292  /// Using the type is recommended over using just an attribute's name to identify
1293  /// its purpose.
1295 };
1297 
1298 // MATERIALS ----------------------------------------------------------------
1299 
1301 {
1302  /// This is the HAPI node id for the SHOP node this material is attached
1303  /// to. Use it to get access to the parameters (which contain the
1304  /// texture paths).
1305  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1306  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1307  /// will never change for a specific material.
1308  HAPI_NodeId nodeId;
1309 
1311 
1313 };
1315 
1317 {
1318  HAPI_StringHandle nameSH;
1319  HAPI_StringHandle descriptionSH;
1320  HAPI_StringHandle defaultExtensionSH;
1321 };
1323 
1325 {
1326  /// Unlike the other members of this struct changing imageFileFormatNameSH
1327  /// and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1328  /// Use this member variable to derive which image file format will be used
1329  /// by the HAPI_ExtractImageTo...() functions if called with
1330  /// image_file_format_name set to NULL. This way, you can decide whether
1331  /// to ask for a file format conversion (slower) or not (faster).
1332  HAPI_StringHandle imageFileFormatNameSH; // Read-only
1333 
1334  int xRes;
1335  int yRes;
1336 
1338 
1339  HAPI_Bool interleaved; ///< ex: true = RGBRGBRGB, false = RRRGGGBBB
1341 
1342  /// Adjust the gamma of the image. For anything less than
1343  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1344  double gamma;
1345 };
1347 
1348 // ANIMATION ----------------------------------------------------------------
1349 
1351 {
1352  float time;
1353  float value;
1354  float inTangent;
1355  float outTangent;
1356 };
1358 
1359 // VOLUMES ------------------------------------------------------------------
1360 
1361 /// @struct HAPI_VolumeInfo
1362 ///
1363 /// This represents a volume primitive but does not contain the actual voxel
1364 /// values, which can be retrieved on a per-tile basis.
1365 ///
1366 /// See @ref HAPI_Volumes.
1367 ///
1369 {
1370  HAPI_StringHandle nameSH;
1371 
1373 
1374  /// Each voxel is identified with an index. The indices will range
1375  /// between:
1376  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1377  /// @{
1378  int xLength;
1379  int yLength;
1380  int zLength;
1381  int minX;
1382  int minY;
1383  int minZ;
1384  /// @}
1385 
1386  /// Number of values per voxel.
1387  /// The tuple size field is 1 for scalars and 3 for vector data.
1389 
1390  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1392 
1393  /// The dimensions of each tile.
1394  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1396 
1397  /// The transform of the volume with respect to the lengths.
1398  /// The volume may be positioned anywhere in space.
1400 
1401  /// Denotes special situations where the volume tiles are not perfect
1402  /// cubes, but are tapered instead.
1404 
1405  /// If there is taper involved, denotes the amount of taper involved.
1406  /// @{
1407  float xTaper;
1408  float yTaper;
1409  /// @}
1410 };
1412 
1413 /// @struct HAPI_VolumeTileInfo
1414 ///
1415 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1416 /// The size of each dimension is HAPI_VoluemInfo::tileSize
1417 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1418 ///
1420 {
1421  int minX;
1422  int minY;
1423  int minZ;
1425 };
1427 
1428 // CURVES -------------------------------------------------------------------
1429 
1430 /// @struct HAPI_CurveInfo
1431 ///
1432 /// This represents the meta-data associated with a curve mesh (a number
1433 /// of curves of the same type).
1435 {
1437  int curveCount; ///< The number of curves contained in this curve mesh.
1438  int vertexCount; ///< The number of control vertices (CVs) for all curves.
1439  int knotCount; ///< The number of knots for all curves.
1440 
1442  ///< Whether the curves in this curve mesh are periodic.
1444  ///< Whether the curves in this curve mesh are rational.
1445  int order; ///< Order of 1 is invalid. 0 means there is a varying order.
1446 
1447  HAPI_Bool hasKnots; ///< Whether the curve has knots.
1448 };
1450 
1451 // BASIC PRIMITIVES ---------------------------------------------------------
1452 
1454 {
1455  float center[ HAPI_POSITION_VECTOR_SIZE ];
1458 };
1460 
1462 {
1463  float center[ HAPI_POSITION_VECTOR_SIZE ];
1464  float radius;
1465 };
1467 
1468 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:147
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:767
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:20
True if it actually has a maximum size.
Definition: HAPI_Common.h:661
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1180
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:997
SOP Node Specific Flags.
Definition: HAPI_Common.h:395
HAPI_StringHandle labelSH
This is what any end user should be shown.
Definition: HAPI_Common.h:774
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1222
HAPI_Bool isInstancer
See HAPI_Instancing.
Definition: HAPI_Common.h:1148
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1337
int parmStringValueCount
Definition: HAPI_Common.h:910
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:840
Recursive Flag.
Definition: HAPI_Common.h:381
Recursive Flag.
Definition: HAPI_Common.h:380
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:979
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:371
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1130
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1171
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:831
Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:180
HAPI_ParmId id
Definition: HAPI_Common.h:941
Just the presets binary blob.
Definition: HAPI_Common.h:350
HAPI_Bool isEditable
Definition: HAPI_Common.h:1189
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:16
HAPI_RampType rampType
Definition: HAPI_Common.h:1079
MatType shear(Axis axis0, Axis axis1, typename MatType::value_type shear)
Set the matrix to a shear along axis0 by a fraction of axis1.
Definition: Mat.h:683
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:861
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:641
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:879
#define HAPI_API
Definition: HAPI_API.h:79
OBJ Node Specific Flags.
Definition: HAPI_Common.h:389
HAPI_NodeFlags
Definition: HAPI_Common.h:376
HAPI_GeoType
Definition: HAPI_Common.h:472
int instanceCount
The number of instances in a multiparm.
Definition: HAPI_Common.h:1074
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:771
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:801
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1059
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1106
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1441
HAPI_RSTOrder
Definition: HAPI_Common.h:546
int parmFloatValueCount
Definition: HAPI_Common.h:909
HAPI_CurveType
Definition: HAPI_Common.h:420
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1260
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:697
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1185
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:893
Single Channel.
Definition: HAPI_Common.h:589
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1308
HAPI_ImageDataFormat
Definition: HAPI_Common.h:572
int handleCount
See HAPI_Handles.
Definition: HAPI_Common.h:781
HAPI_PartType
Definition: HAPI_Common.h:496
HAPI_EnvIntType
Definition: HAPI_Common.h:608
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1443
HAPI_Bool isValid
Definition: HAPI_Common.h:885
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:709
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:251
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:999
Max cache memory limit in MB.
Definition: HAPI_Common.h:662
HAPI_Permissions
Definition: HAPI_Common.h:261
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:18
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:174
True if it actually has a minimum size.
Definition: HAPI_Common.h:659
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:843
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:1012
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:731
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:1009
HAPI_AttributeOwner
Definition: HAPI_Common.h:409
HAPI_StringHandle fullOpNameSH
Full asset name and namespace.
Definition: HAPI_Common.h:777
RGBA Reversed.
Definition: HAPI_Common.h:594
GLsizeiptr size
Definition: glcorearb.h:663
Only some objects failed.
Definition: HAPI_Common.h:240
HAPI_ErrorCode
Definition: HAPI_Common.h:217
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1318
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:927
HAPI_NodeType
Definition: HAPI_Common.h:356
HAPI_CurveType curveType
Definition: HAPI_Common.h:1436
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1439
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1019
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1119
int HAPI_StringHandle
Definition: HAPI_Common.h:129
HAPI_StatusVerbosity
Definition: HAPI_Common.h:168
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1272
Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:178
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:728
Total number of supported parameter types.
Definition: HAPI_Common.h:312
See HAPI_Attributes.
Definition: HAPI_Common.h:1256
HAPI_ChoiceListType
Definition: HAPI_Common.h:337
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1236
GA_API const UT_StringHolder scale
Everything cook successfully without errors.
Definition: HAPI_Common.h:238
HAPI_Bool spare
Definition: HAPI_Common.h:1042
Menu Only, Single Selection.
Definition: HAPI_Common.h:340
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:708
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1437
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1447
HAPI_XYZOrder
Definition: HAPI_Common.h:559
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1105
int HAPI_ParmId
Definition: HAPI_Common.h:138
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:944
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:223
HAPI_AttributeTypeInfo typeInfo
Definition: HAPI_Common.h:1294
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1445
int instancedPartCount
Definition: HAPI_Common.h:1242
int tagCount
Number of tags on this paramter.
Definition: HAPI_Common.h:967
int transformInputCount
Definition: HAPI_Common.h:787
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:866
int instanceStartOffset
First instance's HAPI_ParmInfo::instanceNum. Either 0 or 1.
Definition: HAPI_Common.h:1077
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:947
HAPI_NodeId id
Definition: HAPI_Common.h:877
HAPI_ImagePacking
Definition: HAPI_Common.h:586
HAPI_Transform transform
Definition: HAPI_Common.h:1399
HAPI_SessionType
Definition: HAPI_Common.h:225
HAPI_StorageType storage
Definition: HAPI_Common.h:1261
Presets blob within an .idx file format.
Definition: HAPI_Common.h:351
int instanceNum
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1072
int instanceLength
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1073
HAPI_Permissions permissions
Definition: HAPI_Common.h:964
HAPI_VolumeType
Definition: HAPI_Common.h:430
HAPI_ParmType type
Definition: HAPI_Common.h:949
License Type. See HAPI_License.
Definition: HAPI_Common.h:646
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1319
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:343
HAPI_ImagePacking packing
Definition: HAPI_Common.h:1340
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:1046
HAPI_GeoType type
Definition: HAPI_Common.h:1179
HAPI_SessionId id
Definition: HAPI_Common.h:723
int HAPI_ProcessId
Definition: HAPI_Common.h:121
HAPI_RampType
Definition: HAPI_Common.h:271
HAPI_ParmType
Definition: HAPI_Common.h:286
HAPI_CurveOrders
Definition: HAPI_Common.h:518
HAPI_Bool invisible
Definition: HAPI_Common.h:1033
HAPI_Bool joinNext
the next parm.
Definition: HAPI_Common.h:1044
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1312
int parmIntValueCount
Definition: HAPI_Common.h:908
HAPI_PartType type
Definition: HAPI_Common.h:1223
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1091
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1139
HAPI_StringHandle versionSH
User-defined asset version.
Definition: HAPI_Common.h:776
HAPI_StorageType
Definition: HAPI_Common.h:439
HAPI_STATIC_ASSERT(sizeof(HAPI_Int64)==8, unsupported_size_of_long)
HAPI_Bool hasMax
Definition: HAPI_Common.h:1017
HAPI_NodeId nodeId
Definition: HAPI_Common.h:758
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1320
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1120
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1195
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1198
int vertexCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1438
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1332
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1205
HAPI_NodeId parentId
Definition: HAPI_Common.h:878
Min cache memory limit in MB.
Definition: HAPI_Common.h:660
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1192
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:888
HAPI_StringHandle filePathSH
Path to the .otl library file.
Definition: HAPI_Common.h:775
char HAPI_Bool
Definition: HAPI_Common.h:110
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1018
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:957
HAPI_NodeType type
Definition: HAPI_Common.h:880
HAPI_StatusType
Definition: HAPI_Common.h:159
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:869
HAPI_PresetType
Definition: HAPI_Common.h:347
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1087
HAPI_Bool interleaved
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1339
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:922
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1086
HAPI_Result
Definition: HAPI_Common.h:187
HAPI_InputType
Definition: HAPI_Common.h:509
RGB Reversed.
Definition: HAPI_Common.h:592
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:820
HAPI_State
Definition: HAPI_Common.h:236
HAPI_VolumeType type
Definition: HAPI_Common.h:1372
int objectCount
See HAPI_Objects.
Definition: HAPI_Common.h:780
HAPI_StringHandle helpTextSH
Asset help marked-up text.
Definition: HAPI_Common.h:778
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:857
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1391
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:398
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:182
HAPI_AttributeTypeInfo
Definition: HAPI_Common.h:451
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:797
[HAPI_CacheProperty]
Definition: HAPI_Common.h:690
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:21
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1403
HAPI_GroupType
Definition: HAPI_Common.h:400
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1370
#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:1145
Field + Single Selection Menu.
Definition: HAPI_Common.h:342
int HAPI_NodeId
See HAPI_Nodes_Basics.
Definition: HAPI_Common.h:134
HAPI_PartId id
Definition: HAPI_Common.h:1221
HAPI_CacheProperty
[HAPI_CacheProperty]
Definition: HAPI_Common.h:653
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1154
You should abort the cook.
Definition: HAPI_Common.h:239
int primitiveGroupCount
Definition: HAPI_Common.h:1210
HAPI_StringHandle nameSH
Instance name (the label + a number).
Definition: HAPI_Common.h:773
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:341
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:131
Parameter is not a menu.
Definition: HAPI_Common.h:339
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_CACHE]
Definition: HAPI_Common.h:97
HAPI_TransformComponent
Definition: HAPI_Common.h:528
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1135
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1131
HAPI_Bool hasMin
Definition: HAPI_Common.h:1016
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:898
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1036
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:865
HAPI_SessionType type
Definition: HAPI_Common.h:719
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1066
int HAPI_PartId
Definition: HAPI_Common.h:142
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1166
int maxVerticesPerPrimitive
Definition: HAPI_Common.h:824
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1070
MatType rotation(const Quat< typename MatType::value_type > &q, typename MatType::value_type eps=static_cast< typename MatType::value_type >(1.0e-8))
Return the rotation matrix specified by the given quaternion.
Definition: Mat.h:169