Houdini Engine 3.0
 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  * Produced by:
7  * Side Effects Software Inc
8  * 123 Front Street West, Suite 1401
9  * Toronto, Ontario
10  * Canada M5J 2M2
11  * 416-504-9876
12  *
13  * COMMENTS:
14  */
15 
16 #ifndef __HAPI_COMMON_h__
17 #define __HAPI_COMMON_h__
18 
19 #include "HAPI_API.h"
20 
21 /////////////////////////////////////////////////////////////////////////////
22 // Defines
23 
24 #define HAPI_POSITION_VECTOR_SIZE 3
25 #define HAPI_SCALE_VECTOR_SIZE 3
26 #define HAPI_SHEAR_VECTOR_SIZE 3
27 #define HAPI_NORMAL_VECTOR_SIZE 3
28 #define HAPI_QUATERNION_VECTOR_SIZE 4
29 #define HAPI_EULER_VECTOR_SIZE 3
30 #define HAPI_UV_VECTOR_SIZE 2
31 #define HAPI_COLOR_VECTOR_SIZE 4
32 #define HAPI_CV_VECTOR_SIZE 4
33 
34 #define HAPI_PRIM_MIN_VERTEX_COUNT 1
35 #define HAPI_PRIM_MAX_VERTEX_COUNT 16
36 
37 #define HAPI_INVALID_PARM_ID -1
38 
39 /// Common Default Attributes' Names
40 /// @{
41 #define HAPI_ATTRIB_POSITION "P"
42 #define HAPI_ATTRIB_UV "uv"
43 #define HAPI_ATTRIB_UV2 "uv2"
44 #define HAPI_ATTRIB_NORMAL "N"
45 #define HAPI_ATTRIB_TANGENT "tangentu"
46 #define HAPI_ATTRIB_TANGENT2 "tangentv"
47 #define HAPI_ATTRIB_COLOR "Cd"
48 #define HAPI_ATTRIB_NAME "name"
49 #define HAPI_ATTRIB_INSTANCE "instance"
50 /// @}
51 
52 /// This is the name of the primitive group created from all the primitives
53 /// that are not in any user-defined group. This way, when you put all the
54 /// groups together you cover the entire mesh. This is important for some
55 /// clients where the mesh has to be defined in terms of submeshes that cover
56 /// the entire original mesh.
57 #define HAPI_UNGROUPED_GROUP_NAME "__ungrouped_group"
58 
59 /// Common image file format names (to use with the material extract APIs).
60 /// Note that you may still want to check if they are supported via
61 /// HAPI_GetSupportedImageFileFormats() since all formats are loaded
62 /// dynamically by Houdini on-demand so just because these formats are defined
63 /// here doesn't mean they are supported in your instance.
64 /// @{
65 #define HAPI_RAW_FORMAT_NAME "HAPI_RAW" // HAPI-only Raw Format
66 #define HAPI_PNG_FORMAT_NAME "PNG"
67 #define HAPI_JPEG_FORMAT_NAME "JPEG"
68 #define HAPI_BMP_FORMAT_NAME "Bitmap"
69 #define HAPI_TIFF_FORMAT_NAME "TIFF"
70 #define HAPI_TGA_FORMAT_NAME "Targa"
71 /// @}
72 
73 /// Default image file format's name - used when the image generated and has
74 /// no "original" file format and the user does not specify a format to
75 /// convert to.
76 #define HAPI_DEFAULT_IMAGE_FORMAT_NAME HAPI_PNG_FORMAT_NAME
77 
78 /// Name of subnet OBJ node containing the global nodes.
79 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
80 
81 /// Environment variables.
82 #define HAPI_ENV_HIP "HIP"
83 #define HAPI_ENV_JOB "JOB"
84 #define HAPI_ENV_CLIENT_NAME "HAPI_CLIENT_NAME"
85 
86 /// [HAPI_CACHE]
87 /// Common cache names. You can see these same cache names in the
88 /// Cache Manager window in Houdini (Windows > Cache Manager).
89 #define HAPI_CACHE_COP_COOK "COP Cook Cache"
90 #define HAPI_CACHE_COP_FLIPBOOK "COP Flipbook Cache"
91 #define HAPI_CACHE_IMAGE "Image Cache"
92 #define HAPI_CACHE_OBJ "Object Transform Cache"
93 #define HAPI_CACHE_GL_TEXTURE "OpenGL Texture Cache"
94 #define HAPI_CACHE_GL_VERTEX "OpenGL Vertex Cache"
95 #define HAPI_CACHE_SOP "SOP Cache"
96 #define HAPI_CACHE_VEX "VEX File Cache"
97 /// [HAPI_CACHE]
98 
99 // Make sure our enums and structs are usable without those keywords, as-is,
100 // in C.
101 #ifdef __cplusplus
102  #define HAPI_C_ENUM_TYPEDEF( enum_name )
103  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
104 #else
105  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
106  typedef enum enum_name enum_name;
107  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
108  typedef struct struct_name struct_name;
109 #endif // __cplusplus
110 
111 /////////////////////////////////////////////////////////////////////////////
112 // Typedefs
113 
114 // C has no bool.
115 #ifdef __cplusplus
116  typedef bool HAPI_Bool;
117 #else
118  typedef char HAPI_Bool;
119 #endif // __cplusplus
120 
121 // 64-bit Integers
122 typedef long long HAPI_Int64;
123 HAPI_STATIC_ASSERT( sizeof( HAPI_Int64 ) == 8, unsupported_size_of_long );
124 
125 // The process id has to be uint on Windows and int on any other platform.
126 #if ( defined _WIN32 || defined WIN32 )
127  typedef unsigned int HAPI_ProcessId;
128 #else
129  typedef int HAPI_ProcessId;
130 #endif
131 
132 /// Has to be 64-bit.
134 
135 /// Use this with HAPI_GetString() to get the value.
136 /// See @ref HAPI_Fundamentals_Strings.
137 typedef int HAPI_StringHandle;
138 
140 
141 /// See @ref HAPI_Nodes_Basics.
142 typedef int HAPI_NodeId;
143 
144 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
145 /// See @ref HAPI_Parameters.
146 typedef int HAPI_ParmId;
147 
148 /// Use this with ::HAPI_GetPartInfo().
149 /// See @ref HAPI_Parts.
150 typedef int HAPI_PartId;
151 
152 /////////////////////////////////////////////////////////////////////////////
153 // Enums
154 
156 {
164 };
166 
168 {
173 };
175 
177 {
181 
183  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
184 
185  // Used for Results.
187  ///< Equivalent to ::HAPI_STATUSVERBOSITY_0.
189  ///< Equivalent to ::HAPI_STATUSVERBOSITY_1.
191  ///< Equivalent to ::HAPI_STATUSVERBOSITY_2.
192 };
194 
196 {
208 
215 
218 
220 
222 };
224 
226 {
229 };
231 typedef int HAPI_ErrorCodeBits;
232 
234 {
241 };
243 
245 {
246  HAPI_STATE_READY, ///< Everything cook successfully without errors.
247  HAPI_STATE_READY_WITH_FATAL_ERRORS, ///< You should abort the cook.
248  HAPI_STATE_READY_WITH_COOK_ERRORS, ///< Only some objects failed.
254 
256 };
258 
260 {
266 };
268 
270 {
276 };
278 
280 {
285 };
287 
288 /// As you can see, some of these high level types share the same underlying
289 /// raw data type. For instance, both string and file parameter types can be
290 /// represented with strings, yet semantically they are different. We will
291 /// group high level parameter types that share an underlying raw data type
292 /// together, so you can always check the raw data type of a parameter based
293 /// on its high level data type by checking a range of values.
295 {
300 
303 
308 
310 
313 
317 
318  // Helpers
319 
320  HAPI_PARMTYPE_MAX, ///< Total number of supported parameter types.
321 
324 
327 
330 
333 
336 
339 
342 };
344 
346 {
347  HAPI_CHOICELISTTYPE_NONE, ///< Parameter is not a menu.
348  HAPI_CHOICELISTTYPE_NORMAL, ///< Menu Only, Single Selection
349  HAPI_CHOICELISTTYPE_MINI, ///< Mini Menu Only, Single Selection
350  HAPI_CHOICELISTTYPE_REPLACE, ///< Field + Single Selection Menu
351  HAPI_CHOICELISTTYPE_TOGGLE ///< Field + Multiple Selection Menu
352 };
354 
356 {
358  HAPI_PRESETTYPE_BINARY = 0, ///< Just the presets binary blob.
359  HAPI_PRESETTYPE_IDX, ///< Presets blob within an .idx file format.
361 };
363 
365 {
377 };
379 typedef int HAPI_NodeTypeBits;
380 
381 /// Flags used to filter compositions of node lists. Flags marked
382 /// 'Recursive Flag' will exclude children whos parent does not
383 /// satisfy the flag, even if the children themselves satisfy the flag.
385 {
388  HAPI_NODEFLAGS_DISPLAY = 1 << 0, ///< Recursive Flag
389  HAPI_NODEFLAGS_RENDER = 1 << 1, ///< Recursive Flag
395 
396  /// OBJ Node Specific Flags
401 
402  /// SOP Node Specific Flags
403  HAPI_NODEFLAGS_SOP_CURVE = 1 << 11 ///< Looks for "curve".
404 };
406 typedef int HAPI_NodeFlagsBits;
407 
409 {
414 };
416 
418 {
425 };
427 
429 {
435 };
437 
439 {
444 };
446 
448 {
456 };
458 
460 {
462 
463  /// Most geos will be of this type which essentially means a geo
464  /// not of the other types.
466 
467  /// An exposed edit node.
468  /// See @ref HAPI_IntermediateAssetsResults.
470 
471  /// An input geo that can accept geometry from the host.
472  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
474 
475  /// A curve.
476  /// See @ref HAPI_Curves.
478 
480 };
482 
484 {
493 };
495 
497 {
502 };
504 
506 {
512 };
514 
516 {
530 };
532 
534 {
535  HAPI_TRS = 0,
541 
543 };
545 
547 {
548  HAPI_XYZ = 0,
554 
556 };
558 
560 {
568 
570 };
572 
574 {
576  HAPI_IMAGE_PACKING_SINGLE, ///< Single Channel
577  HAPI_IMAGE_PACKING_DUAL, ///< Dual Channel
579  HAPI_IMAGE_PACKING_BGR, ///< RGB Reversed
581  HAPI_IMAGE_PACKING_ABGR, ///< RGBA Reversed
583 
586 };
588 
589 /// This enum is to be used with ::HAPI_GetEnvInt() to retrieve basic
590 /// information about the HAPI implementation currently being linked
591 /// against. Note that as of HAPI version 2.0, these enum values are
592 /// guaranteed never to change so you can reliably get this information from
593 /// any post-2.0 version of HAPI. The same goes for the actual
594 /// ::HAPI_GetEnvInt() API call.
596 {
598 
599  /// The three components of the Houdini version that HAPI is
600  /// expecting to link against.
601  /// @{
606  /// @}
607 
608  /// The two components of the Houdini Engine (marketed) version.
609  /// @{
612  /// @}
613 
614  /// This is a monotonously increasing API version number that can be used
615  /// to lock against a certain API for compatibility purposes. Basically,
616  /// when this number changes code compiled against the HAPI.h methods
617  /// might no longer compile. Semantic changes to the methods will also
618  /// cause this version to increase. This number will be reset to 0
619  /// every time the Houdini Engine version is bumped.
621 
623 };
625 
626 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
627 /// session-specific information.
629 {
631 
632  /// License Type. See ::HAPI_License.
634 
636 };
638 
639 /// [HAPI_CacheProperty]
641 {
642  /// Current memory usage in MB. Setting this to 0 invokes
643  /// a cache clear.
645 
646  HAPI_CACHEPROP_HAS_MIN, ///< True if it actually has a minimum size.
647  HAPI_CACHEPROP_MIN, ///< Min cache memory limit in MB.
648  HAPI_CACHEPROP_HAS_MAX, ///< True if it actually has a maximum size.
649  HAPI_CACHEPROP_MAX, ///< Max cache memory limit in MB.
650 
651  /// How aggressive to cull memory. This only works for:
652  /// - ::HAPI_CACHE_COP_COOK where:
653  /// 0 -> Never reduce inactive cache.
654  /// 1 -> Always reduce inactive cache.
655  /// - ::HAPI_CACHE_OBJ where:
656  /// 0 -> Never enforce the max memory limit.
657  /// 1 -> Always enforce the max memory limit.
658  /// - ::HAPI_CACHE_SOP where:
659  /// 0 -> When to Unload = Never
660  /// When to Limit Max Memory = Never
661  /// 1-2 -> When to Unload = Based on Flag
662  /// When to Limit Max Memory = Never
663  /// 3-4 -> When to Unload = Based on Flag
664  /// When to Limit Max Memory = Always
665  /// 5 -> When to Unload = Always
666  /// When to Limit Max Memory = Always
668 };
669 /// [HAPI_CacheProperty]
671 
672 /////////////////////////////////////////////////////////////////////////////
673 // Main API Structs
674 
675 // GENERICS -----------------------------------------------------------------
676 
678 {
679  float position[ HAPI_POSITION_VECTOR_SIZE ];
680  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
681  float scale[ HAPI_SCALE_VECTOR_SIZE ];
682  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
683 
685 };
687 
689 {
690  float position[ HAPI_POSITION_VECTOR_SIZE ];
691  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
692  float scale[ HAPI_SCALE_VECTOR_SIZE ];
693  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
694 
697 };
699 
700 // SESSIONS -----------------------------------------------------------------
701 
703 {
704  /// The type of session determines the which implementation will be
705  /// used to communicate with the Houdini Engine library.
707 
708  /// Some session types support multiple simultaneous sessions. This means
709  /// that each session needs to have a unique identifier.
710  HAPI_SessionId id;
711 };
713 
714 /// Options to configure a Thrift server being started from HARC.
716 {
717  /// Close the server automatically when all clients disconnect from it.
719 
720  /// Timeout in milliseconds for waiting on the server to
721  /// signal that it's ready to serve. If the server fails
722  /// to signal within this time interval, the start server call fails
723  /// and the server process is terminated.
724  float timeoutMs;
725 };
727 
728 // TIME ---------------------------------------------------------------------
729 
731 {
732  float fps;
733 
734  float startTime;
735  float endTime;
736 };
738 
739 // ASSETS -------------------------------------------------------------------
740 
742 {
743  /// Use the node id to get the asset's parameters.
744  /// See @ref HAPI_Nodes_Basics.
745  HAPI_NodeId nodeId;
746 
747  /// The objectNodeId differs from the regular nodeId in that for
748  /// geometry based assets (SOPs) it will be the node id of the dummy
749  /// object (OBJ) node instead of the asset node. For object based assets
750  /// the objectNodeId will equal the nodeId. The reason the distinction
751  /// exists is because transforms are always stored on the object node
752  /// but the asset parameters may not be on the asset node if the asset
753  /// is a geometry asset so we need both.
754  HAPI_NodeId objectNodeId;
755 
756  /// It's possible to instantiate an asset without cooking it.
757  /// See @ref HAPI_Assets_Cooking.
759 
760  HAPI_StringHandle nameSH; ///< Instance name (the label + a number).
761  HAPI_StringHandle labelSH; ///< This is what any end user should be shown.
762  HAPI_StringHandle filePathSH; ///< Path to the .otl library file.
763  HAPI_StringHandle versionSH; ///< User-defined asset version.
764  HAPI_StringHandle fullOpNameSH; ///< Full asset name and namespace.
765  HAPI_StringHandle helpTextSH; ///< Asset help marked-up text.
766 
767  int objectCount; ///< See @ref HAPI_Objects.
768  int handleCount; ///< See @ref HAPI_Handles.
769 
770  /// Transform inputs exposed by the asset. For OBJ assets this is the
771  /// number of transform inputs on the OBJ node. For SOP assets, this is
772  /// the singular transform input on the dummy wrapper OBJ node.
773  /// See @ref HAPI_AssetInputs.
775 
776  /// Geometry inputs exposed by the asset. For SOP assets this is
777  /// the number of geometry inputs on the SOP node itself. OBJ assets
778  /// will always have zero geometry inputs.
779  /// See @ref HAPI_AssetInputs.
781 
782  /// For incremental updates. Indicates whether any of the assets's
783  /// objects have changed. Refreshed only during an asset cook.
785 
786  /// For incremental updates. Indicates whether any of the asset's
787  /// materials have changed. Refreshed only during an asset cook.
789 };
791 
793 {
794  /// Normally, geos are split into parts in two different ways. First it
795  /// is split by group and within each group it is split by primitive type.
796  ///
797  /// For example, if you have a geo with group1 covering half of the mesh
798  /// and volume1 and group2 covering the other half of the mesh, all of
799  /// curve1, and volume2 you will end up with 5 parts. First two parts
800  /// will be for the half-mesh of group1 and volume1, and the last three
801  /// will cover group2.
802  ///
803  /// This toggle lets you disable the splitting by group and just have
804  /// the geo be split by primitive type alone. By default, this is true
805  /// and therefore geos will be split by group and primitive type. If
806  /// set to false, geos will only be split by primitive type.
808 
809  /// For meshes only, this is enforced by convexing the mesh. Use -1
810  /// to avoid convexing at all and get some performance boost.
812 
813  /// For curves only.
814  /// If this is set to true, then all curves will be refined to a linear
815  /// curve and you can no longer access the original CVs. You can control
816  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
817  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
819 
820  /// Controls the number of divisions per unit distance when refining
821  /// a curve to linear. The default in Houdini is 8.0.
823 
824  /// If this option is turned on, then we will recursively clear the
825  /// errors and warnings (and messages) of all nodes before performing
826  /// the cook.
828 
829  /// Decide whether to recursively cook all templated geos or not.
831 
832  /// Decide whether to split points by vertex attributes. This takes
833  /// all vertex attributes and tries to copy them to their respective
834  /// points. If two vertices have any difference in their attribute values,
835  /// the corresponding point is split into two points. This is repeated
836  /// until all the vertex attributes have been copied to the points.
837  ///
838  /// With this option enabled, you can reduce the total number of vertices
839  /// on a game engine side as sharing of attributes (like UVs) is optimized.
840  /// To make full use of this feature, you have to think of Houdini points
841  /// as game engine vertices (sharable). With this option OFF (or before
842  /// this feature existed) you had to map Houdini vertices to game engine
843  /// vertices, to make sure all attribute values are accounted for.
845 
846  /// Choose how you want the cook to handle packed primitives.
847  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
849 
850  /// Choose which special part types should be handled. Unhandled special
851  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
854 
855  /// For internal use only. :)
857 };
859 
860 // NODES --------------------------------------------------------------------
861 
863 {
864  HAPI_NodeId id;
865  HAPI_NodeId parentId;
866  HAPI_StringHandle nameSH;
868 
869  /// Always true unless the asset's definition has changed due to loading
870  /// a duplicate asset definition and from another OTL asset library
871  /// file OR deleting the OTL asset library file used by this node's asset.
873 
874  /// Total number of cooks of this node.
876 
877  /// Use this unique id to grab the OP_Node pointer for this node.
878  /// If you're linking against the C++ HDK, include the OP_Node.h header
879  /// and call OP_Node::lookupNode().
881 
882  /// This is the internal node path in the Houdini scene graph. This path
883  /// is meant to be abstracted away for most client purposes but for
884  /// advanced uses it can come in handy.
885  HAPI_StringHandle internalNodePathSH;
886 
887  /// Total number of parameters this asset has exposed. Includes hidden
888  /// parameters.
889  /// See @ref HAPI_Parameters.
891 
892  /// Number of values. A single parameter may have more than one value so
893  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
894  /// @{
898  /// @}
899 
900  /// The total number of choices among all the combo box parameters.
901  /// See @ref HAPI_Parameters_ChoiceLists.
903 
904  /// The number of child nodes. This is 0 for all nodes that are not
905  /// node networks.
907 
908  /// The number of inputs this specific node has.
910 
911  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
912  /// this set to true. Only such nodes can be deleted using
913  /// ::HAPI_DeleteNode().
915 };
917 
918 // PARAMETERS ---------------------------------------------------------------
919 
920 /// @struct HAPI_ParmInfo
921 ///
922 /// Contains parameter information like name, label, type, and size.
923 ///
925 {
926  /// The parent id points to the id of the parent parm
927  /// of this parm. The parent parm is something like a folder.
928  HAPI_ParmId id;
929 
930  /// Parameter id of the parent of this parameter.
931  HAPI_ParmId parentId;
932 
933  /// Child index within its immediate parent parameter.
935 
937 
938  /// Some parameter types require additional type information.
939  /// - File path parameters will indicate what file extensions they
940  /// expect in a space-separated list of wild-cards. This is set
941  /// in the Operator Type Properties using the File Pattern
942  /// parameter property.
943  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
944  HAPI_StringHandle typeInfoSH;
945 
946  /// For the majority of parameter types permission will not be applicable.
947  /// For file path parameters these permissions will indicate how the
948  /// asset plans to use the file: whether it will only read it, only write
949  /// to it, or both. This is set in the Operator Type Properties using
950  /// the Browse Mode parameter property.
952 
953  /// Number of tags on this paramter.
954  int tagCount;
955 
956  /// Tuple size. For scalar parameters this value is 1, but for vector
957  /// parameters this value can be greater. For example, a 3 vector would
958  /// have a size of 3. For folders and folder lists, this value is the
959  /// number of children they own.
960  int size;
961 
962  /// Any ::HAPI_ParmType can be a choice list. If this is set to
963  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
964  /// Otherwise, the parameter is a choice list of the indicated type.
965  /// See @ref HAPI_Parameters_ChoiceLists.
967 
968  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
969  /// choice list, this tells you how many choices it currently has.
970  /// Note that some menu parameters can have a dynamic number of choices
971  /// so it is important that this count is re-checked after every cook.
972  /// See @ref HAPI_Parameters_ChoiceLists.
974 
975  /// Note that folders are not real parameters in Houdini so they do not
976  /// have names. The folder names given here are generated from the name
977  /// of the folderlist (or switcher) parameter which is a parameter. The
978  /// folderlist parameter simply defines how many of the "next" parameters
979  /// belong to the first folder, how many of the parameters after that
980  /// belong to the next folder, and so on. This means that folder names
981  /// can change just by reordering the folders around so don't rely on
982  /// them too much. The only guarantee here is that the folder names will
983  /// be unique among all other parameter names.
984  HAPI_StringHandle nameSH;
985 
986  HAPI_StringHandle labelSH;
987 
988  /// If this parameter is a multiparm instance than the
989  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
990  /// containing #'s for the parts of the name that use the instance number.
991  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
992  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
993  /// replaced by the instance number. For regular parms, the
994  /// ::HAPI_ParmInfo::templateNameSH is identical to the
995  /// ::HAPI_ParmInfo::nameSH.
996  HAPI_StringHandle templateNameSH;
997 
998  /// The help string for this parameter
999  HAPI_StringHandle helpSH;
1000 
1001  /// Whether min/max exists for the parameter values.
1002  /// @{
1007  /// @}
1008 
1009  /// Parameter value range, shared between int and float parameters.
1010  /// @{
1011  float min;
1012  float max;
1013  float UIMin;
1014  float UIMax;
1015  /// @}
1016 
1017  /// Whether this parm should be hidden from the user entirely. This is
1018  /// mostly used to expose parameters as asset meta-data but not allow the
1019  /// user to directly modify them.
1021 
1022  /// Whether this parm should appear enabled or disabled.
1024 
1025  /// If true, it means this parameter doesn't actually exist on the node
1026  /// in Houdini but was added by Houdini Engine as a spare parameter.
1027  /// This is just for your information. The behaviour of this parameter
1028  /// is not any different than a non-spare parameter.
1030 
1031  HAPI_Bool joinNext; ///< Whether this parm should be on the same line as
1032  ///< the next parm.
1033  HAPI_Bool labelNone; ///< Whether the label should be displayed.
1034 
1035  /// The index to use to look into the values array in order to retrieve
1036  /// the actual value(s) of this parameter.
1037  /// @{
1042  /// @}
1043 
1044  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1045  /// this parameter accepts.
1047 
1048  /// The node input parameter could have another subtype filter specified,
1049  /// like "Object: Geometry Only". In this case, this value will specify
1050  /// that extra filter. If the filter demands a node that HAPI does not
1051  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1052  /// NONE as such a node is not settable through HAPI.
1054 
1055  /// See @ref HAPI_Parameters_MultiParms.
1056  /// @{
1058 
1059  int instanceNum; ///< The index of the instance in the multiparm.
1060  int instanceLength; ///< The number of parms in a multiparm instance.
1061  int instanceCount; ///< The number of instances in a multiparm.
1062 
1063  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1065 
1067  /// @}
1068 };
1070 
1072 {
1073  HAPI_ParmId parentParmId;
1074  HAPI_StringHandle labelSH;
1075 
1076  /// This evaluates to the value of the token associated with the label
1077  /// applies to string menus only.
1078  HAPI_StringHandle valueSH;
1079 };
1081 
1082 // HANDLES ------------------------------------------------------------------
1083 
1084 /// @struct HAPI_HandleInfo
1085 ///
1086 /// Contains handle information such as the type of handle
1087 /// (translate, rotate, scale, softxform ...etc) and the number of
1088 /// parameters the current handle is bound to.
1089 ///
1091 {
1092  HAPI_StringHandle nameSH;
1093  HAPI_StringHandle typeNameSH;
1094 
1096 };
1098 
1099 /// @struct HAPI_HandleBindingInfo
1100 ///
1101 /// Contains binding information that maps the handle parameter to
1102 /// the asset parameter
1103 ///
1105 {
1106  HAPI_StringHandle handleParmNameSH;
1107  HAPI_StringHandle assetParmNameSH;
1108 
1109  HAPI_ParmId assetParmId;
1110 };
1112 
1113 // OBJECTS ------------------------------------------------------------------
1114 
1116 {
1117  HAPI_StringHandle nameSH;
1118  HAPI_StringHandle objectInstancePathSH;
1119 
1120  /// For incremental updates. Indicates whether the object's transform
1121  /// has changed. Refreshed only during an asset cook.
1123 
1124  /// For incremental updates. Indicates whether any of the object's
1125  /// geometry nodes have changed. Refreshed only during an asset cook.
1127 
1128  /// Whether the object is hidden and should not be shown. Some objects
1129  /// should be hidden but still brought into the host environment, for
1130  /// example those used only for instancing.
1131  /// See @ref HAPI_Instancing.
1133 
1134  /// See @ref HAPI_Instancing.
1136 
1137  /// Determine if this object is being instanced. Normally, this implies
1138  /// that while this object may not be visible, it should still be
1139  /// brought into the host application because it is needed by an instancer.
1140  /// See @ref HAPI_Instancing.
1142 
1143  /// (deprecated) The number of geometries under this object. For those familiar
1144  /// with Houdini, this number will always include the one visible SOP and any
1145  /// SOPs that were exposed as "editable" or "templated".
1146  /// See @ref HAPI_Geos.
1148 
1149  /// Use the node id to get the node's parameters.
1150  /// Using the HDK, you can also get the raw node C++ pointer for this
1151  /// object's internal node.
1152  /// See @ref HAPI_Nodes_Basics.
1153  HAPI_NodeId nodeId;
1154 
1155  /// If the object is an instancer, this variable gives the object id of
1156  /// the object that should be instanced.
1157  /// See @ref HAPI_Instancing.
1158  HAPI_NodeId objectToInstanceId;
1159 };
1161 
1162 // GEOMETRY -----------------------------------------------------------------
1163 
1165 {
1167  HAPI_StringHandle nameSH;
1168 
1169  /// Use the node id to get the node's parameters.
1170  /// Using the HDK, you can also get the raw node C++ pointer for this
1171  /// object's internal node.
1172  HAPI_NodeId nodeId;
1173 
1174  /// Whether the SOP node has been exposed by dragging it into the
1175  /// editable nodes section of the asset definition.
1177 
1178  /// Has the templated flag turned on which means "expose as read-only".
1180 
1181  /// Final Result (Display SOP).
1183 
1184  /// For incremental updates.
1186 
1187  /// (deprecated) This variable is deprecated and should no longer be used.
1188  /// Materials are now separate from parts. They are maintained at the
1189  /// asset level so you only need to check if the material itself has
1190  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1191  /// on the part.
1193 
1194  /// Groups.
1195  /// @{
1198  /// @}
1199 
1200  /// Total number of parts this geometry contains.
1201  /// See @ref HAPI_Parts.
1203 };
1205 
1207 {
1208  HAPI_PartId id;
1209  HAPI_StringHandle nameSH;
1211 
1214  int pointCount; ///< Number of points. Note that this is NOT the number
1215  ///< of "positions" as "points" may imply. If your
1216  ///< geometry has 3 points then set this to 3 and not 3*3.
1217 
1218  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1219 
1220  /// If this is true, don't display this part. Load its data but then
1221  /// instance it where the corresponding instancer part tells you to
1222  /// instance it.
1224 
1225  /// The number of parts that this instancer part is instancing.
1226  /// For example, if we're instancing a curve and a box, they would come
1227  /// across as two parts, hence this count would be two.
1228  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId's.
1230 
1231  /// The number of instances that this instancer part is instancing.
1232  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1233  /// if I'm instancing the merge of a curve and a box 5 times, this count
1234  /// would be 5. To be clear, all instanced parts are instanced the same
1235  /// number of times and with the same transform for each instance.
1236  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1237  /// each instance.
1239 };
1241 
1242 /// See @ref HAPI_Attributes.
1244 {
1246 
1249 
1250  /// When converting from the Houdini native GA geometry format to the
1251  /// GT geometry format HAPI uses, some attributes might change owners.
1252  /// For example, in Houdini GA curves can have points shared by
1253  /// vertices but the GT format only supports curve vertices
1254  /// (no points). This means that if you had point attributes on a curve
1255  /// in Houdini, when it comes out of HAPI those point attributes will now
1256  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1257  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1258  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1260 
1261  /// Number of attributes. This count will match the number of values
1262  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1263  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1264  /// To be clear, this is not the number of values in the attribute, rather
1265  /// it is the number of attributes. If your geometry has three 3D points
1266  /// then this count will be 3 (not 3*3) while the
1267  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1268  int count;
1269 
1270  /// Number of values per attribute.
1271  /// Note that this is NOT the memory size of the attribute. It is the
1272  /// number of values per attributes. Multiplying this by the
1273  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1274  /// size per attribute.
1276 };
1278 
1279 // MATERIALS ----------------------------------------------------------------
1280 
1282 {
1283  /// This is the HAPI node id for the SHOP node this material is attached
1284  /// to. Use it to get access to the parameters (which contain the
1285  /// texture paths).
1286  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1287  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1288  /// will never change for a specific material.
1289  HAPI_NodeId nodeId;
1290 
1292 
1294 };
1296 
1298 {
1299  HAPI_StringHandle nameSH;
1300  HAPI_StringHandle descriptionSH;
1301  HAPI_StringHandle defaultExtensionSH;
1302 };
1304 
1306 {
1307  /// Unlike the other members of this struct changing imageFileFormatNameSH
1308  /// and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1309  /// Use this member variable to derive which image file format will be used
1310  /// by the HAPI_ExtractImageTo...() functions if called with
1311  /// image_file_format_name set to NULL. This way, you can decide whether
1312  /// to ask for a file format conversion (slower) or not (faster).
1313  HAPI_StringHandle imageFileFormatNameSH; // Read-only
1314 
1315  int xRes;
1316  int yRes;
1317 
1319 
1320  HAPI_Bool interleaved; ///< ex: true = RGBRGBRGB, false = RRRGGGBBB
1322 
1323  /// Adjust the gamma of the image. For anything less than
1324  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1325  double gamma;
1326 };
1328 
1329 // ANIMATION ----------------------------------------------------------------
1330 
1332 {
1333  float time;
1334  float value;
1335  float inTangent;
1336  float outTangent;
1337 };
1339 
1340 // VOLUMES ------------------------------------------------------------------
1341 
1342 /// @struct HAPI_VolumeInfo
1343 ///
1344 /// This represents a volume primitive but does not contain the actual voxel
1345 /// values, which can be retrieved on a per-tile basis.
1346 ///
1347 /// See @ref HAPI_Volumes.
1348 ///
1350 {
1351  HAPI_StringHandle nameSH;
1352 
1354 
1355  /// Each voxel is identified with an index. The indices will range
1356  /// between:
1357  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1358  /// @{
1359  int xLength;
1360  int yLength;
1361  int zLength;
1362  int minX;
1363  int minY;
1364  int minZ;
1365  /// @}
1366 
1367  /// Number of values per voxel.
1368  /// The tuple size field is 1 for scalars and 3 for vector data.
1370 
1371  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1373 
1374  /// The dimensions of each tile.
1375  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1377 
1378  /// The transform of the volume with respect to the lengths.
1379  /// The volume may be positioned anywhere in space.
1381 
1382  /// Denotes special situations where the volume tiles are not perfect
1383  /// cubes, but are tapered instead.
1385 
1386  /// If there is taper involved, denotes the amount of taper involved.
1387  /// @{
1388  float xTaper;
1389  float yTaper;
1390  /// @}
1391 };
1393 
1394 /// @struct HAPI_VolumeTileInfo
1395 ///
1396 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1397 /// The size of each dimension is HAPI_VoluemInfo::tileSize
1398 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1399 ///
1401 {
1402  int minX;
1403  int minY;
1404  int minZ;
1406 };
1408 
1409 // CURVES -------------------------------------------------------------------
1410 
1411 /// @struct HAPI_CurveInfo
1412 ///
1413 /// This represents the meta-data associated with a curve mesh (a number
1414 /// of curves of the same type).
1416 {
1418  int curveCount; ///< The number of curves contained in this curve mesh.
1419  int vertexCount; ///< The number of control vertices (CVs) for all curves.
1420  int knotCount; ///< The number of knots for all curves.
1421 
1423  ///< Whether the curves in this curve mesh are periodic.
1425  ///< Whether the curves in this curve mesh are rational.
1426  int order; ///< Order of 1 is invalid. 0 means there is a varying order.
1427 
1428  HAPI_Bool hasKnots; ///< Whether the curve has knots.
1429 };
1431 
1432 // BASIC PRIMITIVES ---------------------------------------------------------
1433 
1435 {
1436  float center[ HAPI_POSITION_VECTOR_SIZE ];
1437  float size[ HAPI_SCALE_VECTOR_SIZE ];
1438  float rotation[ HAPI_EULER_VECTOR_SIZE ];
1439 };
1441 
1443 {
1444  float center[ HAPI_POSITION_VECTOR_SIZE ];
1445  float radius;
1446 };
1448 
1449 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:155
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:754
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:28
True if it actually has a maximum size.
Definition: HAPI_Common.h:648
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1167
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:984
SOP Node Specific Flags.
Definition: HAPI_Common.h:403
HAPI_StringHandle labelSH
This is what any end user should be shown.
Definition: HAPI_Common.h:761
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1209
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1135
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1318
int parmStringValueCount
Definition: HAPI_Common.h:897
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:827
Recursive Flag.
Definition: HAPI_Common.h:389
Recursive Flag.
Definition: HAPI_Common.h:388
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:966
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:379
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1117
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1158
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:818
Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:188
HAPI_ParmId id
Definition: HAPI_Common.h:928
Just the presets binary blob.
Definition: HAPI_Common.h:358
HAPI_Bool isEditable
Definition: HAPI_Common.h:1176
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:24
HAPI_RampType rampType
Definition: HAPI_Common.h:1066
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:848
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:628
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:866
#define HAPI_API
Definition: HAPI_API.h:86
OBJ Node Specific Flags.
Definition: HAPI_Common.h:397
HAPI_NodeFlags
Definition: HAPI_Common.h:384
HAPI_GeoType
Definition: HAPI_Common.h:459
int instanceCount
The number of instances in a multiparm.
Definition: HAPI_Common.h:1061
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:758
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:788
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1046
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1093
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1422
HAPI_RSTOrder
Definition: HAPI_Common.h:533
int parmFloatValueCount
Definition: HAPI_Common.h:896
HAPI_CurveType
Definition: HAPI_Common.h:428
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1247
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:684
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1172
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:880
Single Channel.
Definition: HAPI_Common.h:576
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1289
HAPI_ImageDataFormat
Definition: HAPI_Common.h:559
int handleCount
See Handles.
Definition: HAPI_Common.h:768
HAPI_PartType
Definition: HAPI_Common.h:483
HAPI_EnvIntType
Definition: HAPI_Common.h:595
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1424
HAPI_Bool isValid
Definition: HAPI_Common.h:872
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:696
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:259
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:986
Max cache memory limit in MB.
Definition: HAPI_Common.h:649
HAPI_Permissions
Definition: HAPI_Common.h:269
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:26
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:182
True if it actually has a minimum size.
Definition: HAPI_Common.h:646
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:830
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:999
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:718
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:996
HAPI_AttributeOwner
Definition: HAPI_Common.h:417
HAPI_StringHandle fullOpNameSH
Full asset name and namespace.
Definition: HAPI_Common.h:764
RGBA Reversed.
Definition: HAPI_Common.h:581
Only some objects failed.
Definition: HAPI_Common.h:248
HAPI_ErrorCode
Definition: HAPI_Common.h:225
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1299
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:914
HAPI_NodeType
Definition: HAPI_Common.h:364
HAPI_CurveType curveType
Definition: HAPI_Common.h:1417
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1420
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1006
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1106
int HAPI_StringHandle
Definition: HAPI_Common.h:137
HAPI_StatusVerbosity
Definition: HAPI_Common.h:176
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1259
Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:186
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:715
Total number of supported parameter types.
Definition: HAPI_Common.h:320
See Attributes.
Definition: HAPI_Common.h:1243
HAPI_ChoiceListType
Definition: HAPI_Common.h:345
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1223
Everything cook successfully without errors.
Definition: HAPI_Common.h:246
HAPI_Bool spare
Definition: HAPI_Common.h:1029
Menu Only, Single Selection.
Definition: HAPI_Common.h:348
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:695
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1418
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1428
HAPI_XYZOrder
Definition: HAPI_Common.h:546
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1092
int HAPI_ParmId
Definition: HAPI_Common.h:146
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:931
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:231
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1426
int instancedPartCount
Definition: HAPI_Common.h:1229
int tagCount
Number of tags on this paramter.
Definition: HAPI_Common.h:954
int transformInputCount
Definition: HAPI_Common.h:774
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:853
int instanceStartOffset
First instance's HAPI_ParmInfo::instanceNum. Either 0 or 1.
Definition: HAPI_Common.h:1064
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:934
HAPI_NodeId id
Definition: HAPI_Common.h:864
HAPI_ImagePacking
Definition: HAPI_Common.h:573
HAPI_Transform transform
Definition: HAPI_Common.h:1380
HAPI_SessionType
Definition: HAPI_Common.h:233
HAPI_StorageType storage
Definition: HAPI_Common.h:1248
Presets blob within an .idx file format.
Definition: HAPI_Common.h:359
int instanceNum
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1059
int instanceLength
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1060
HAPI_Permissions permissions
Definition: HAPI_Common.h:951
HAPI_VolumeType
Definition: HAPI_Common.h:438
HAPI_ParmType type
Definition: HAPI_Common.h:936
License Type. See HAPI_License.
Definition: HAPI_Common.h:633
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1300
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:351
HAPI_ImagePacking packing
Definition: HAPI_Common.h:1321
HAPI_Int64 HAPI_SessionId
Has to be 64-bit.
Definition: HAPI_Common.h:133
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:25
HAPI_Bool labelNone
Whether the label should be displayed.
Definition: HAPI_Common.h:1033
HAPI_GeoType type
Definition: HAPI_Common.h:1166
HAPI_SessionId id
Definition: HAPI_Common.h:710
int HAPI_ProcessId
Definition: HAPI_Common.h:129
HAPI_RampType
Definition: HAPI_Common.h:279
HAPI_ParmType
Definition: HAPI_Common.h:294
HAPI_CurveOrders
Definition: HAPI_Common.h:505
HAPI_Bool invisible
Definition: HAPI_Common.h:1020
HAPI_Bool joinNext
the next parm.
Definition: HAPI_Common.h:1031
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1293
int parmIntValueCount
Definition: HAPI_Common.h:895
HAPI_PartType type
Definition: HAPI_Common.h:1210
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1078
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1126
HAPI_StringHandle versionSH
User-defined asset version.
Definition: HAPI_Common.h:763
HAPI_StorageType
Definition: HAPI_Common.h:447
HAPI_STATIC_ASSERT(sizeof(HAPI_Int64)==8, unsupported_size_of_long)
HAPI_Bool hasMax
Definition: HAPI_Common.h:1004
HAPI_NodeId nodeId
Definition: HAPI_Common.h:745
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1301
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1107
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1182
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1185
int vertexCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1419
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1313
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1192
HAPI_NodeId parentId
Definition: HAPI_Common.h:865
Min cache memory limit in MB.
Definition: HAPI_Common.h:647
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1179
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:875
HAPI_StringHandle filePathSH
Path to the .otl library file.
Definition: HAPI_Common.h:762
char HAPI_Bool
Definition: HAPI_Common.h:118
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1005
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:944
HAPI_NodeType type
Definition: HAPI_Common.h:867
HAPI_StatusType
Definition: HAPI_Common.h:167
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:856
HAPI_PresetType
Definition: HAPI_Common.h:355
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1074
HAPI_Bool interleaved
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1320
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:909
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1073
HAPI_Result
Definition: HAPI_Common.h:195
HAPI_InputType
Definition: HAPI_Common.h:496
RGB Reversed.
Definition: HAPI_Common.h:579
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:807
HAPI_State
Definition: HAPI_Common.h:244
HAPI_VolumeType type
Definition: HAPI_Common.h:1353
int objectCount
See Objects.
Definition: HAPI_Common.h:767
HAPI_StringHandle helpTextSH
Asset help marked-up text.
Definition: HAPI_Common.h:765
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:844
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1372
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:406
Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:190
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:784
[HAPI_CacheProperty]
Definition: HAPI_Common.h:677
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:29
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1384
HAPI_GroupType
Definition: HAPI_Common.h:408
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1351
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:107
long long HAPI_Int64
Definition: HAPI_Common.h:122
HAPI_Bool isVisible
Definition: HAPI_Common.h:1132
Field + Single Selection Menu.
Definition: HAPI_Common.h:350
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:142
HAPI_PartId id
Definition: HAPI_Common.h:1208
HAPI_CacheProperty
[HAPI_CacheProperty]
Definition: HAPI_Common.h:640
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1141
You should abort the cook.
Definition: HAPI_Common.h:247
int primitiveGroupCount
Definition: HAPI_Common.h:1197
HAPI_StringHandle nameSH
Instance name (the label + a number).
Definition: HAPI_Common.h:760
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:349
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:139
Parameter is not a menu.
Definition: HAPI_Common.h:347
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_CACHE]
Definition: HAPI_Common.h:105
HAPI_TransformComponent
Definition: HAPI_Common.h:515
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1122
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1118
HAPI_Bool hasMin
Definition: HAPI_Common.h:1003
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:885
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1023
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:852
HAPI_SessionType type
Definition: HAPI_Common.h:706
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1053
int HAPI_PartId
Definition: HAPI_Common.h:150
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1153
int maxVerticesPerPrimitive
Definition: HAPI_Common.h:811
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1057