Houdini Engine 2.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_NORMAL_VECTOR_SIZE 3
27 #define HAPI_QUATERNION_VECTOR_SIZE 4
28 #define HAPI_EULER_VECTOR_SIZE 3
29 #define HAPI_UV_VECTOR_SIZE 2
30 #define HAPI_COLOR_VECTOR_SIZE 4
31 #define HAPI_CV_VECTOR_SIZE 4
32 
33 #define HAPI_PRIM_MIN_VERTEX_COUNT 1
34 #define HAPI_PRIM_MAX_VERTEX_COUNT 16
35 
36 #define HAPI_INVALID_PARM_ID -1
37 
38 /// Common Default Attributes' Names
39 /// @{
40 #define HAPI_ATTRIB_POSITION "P"
41 #define HAPI_ATTRIB_UV "uv"
42 #define HAPI_ATTRIB_UV2 "uv2"
43 #define HAPI_ATTRIB_NORMAL "N"
44 #define HAPI_ATTRIB_TANGENT "tangentu"
45 #define HAPI_ATTRIB_TANGENT2 "tangentv"
46 #define HAPI_ATTRIB_COLOR "Cd"
47 #define HAPI_ATTRIB_NAME "name"
48 /// @}
49 
50 /// This is the name of the primitive group created from all the primitives
51 /// that are not in any user-defined group. This way, when you put all the
52 /// groups together you cover the entire mesh. This is important for some
53 /// clients where the mesh has to be defined in terms of submeshes that cover
54 /// the entire original mesh.
55 #define HAPI_UNGROUPED_GROUP_NAME "__ungrouped_group"
56 
57 /// Common image file format names (to use with the material extract APIs).
58 /// Note that you may still want to check if they are supported via
59 /// HAPI_GetSupportedImageFileFormats() since all formats are loaded
60 /// dynamically by Houdini on-demand so just because these formats are defined
61 /// here doesn't mean they are supported in your instance.
62 /// @{
63 #define HAPI_RAW_FORMAT_NAME "HAPI_RAW" // HAPI-only Raw Format
64 #define HAPI_PNG_FORMAT_NAME "PNG"
65 #define HAPI_JPEG_FORMAT_NAME "JPEG"
66 #define HAPI_BMP_FORMAT_NAME "Bitmap"
67 #define HAPI_TIFF_FORMAT_NAME "TIFF"
68 #define HAPI_TGA_FORMAT_NAME "Targa"
69 /// @}
70 
71 /// Default image file format's name - used when the image generated and has
72 /// no "original" file format and the user does not specify a format to
73 /// convert to.
74 #define HAPI_DEFAULT_IMAGE_FORMAT_NAME HAPI_PNG_FORMAT_NAME
75 
76 /// Name of subnet OBJ node containing the global nodes.
77 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
78 
79 /// [HAPI_CACHE]
80 /// Common cache names. You can see these same cache names in the
81 /// Cache Manager window in Houdini (Windows > Cache Manager).
82 #define HAPI_CACHE_COP_COOK "COP Cook Cache"
83 #define HAPI_CACHE_COP_FLIPBOOK "COP Flipbook Cache"
84 #define HAPI_CACHE_IMAGE "Image Cache"
85 #define HAPI_CACHE_OBJ "Object Transform Cache"
86 #define HAPI_CACHE_GL_TEXTURE "OpenGL Texture Cache"
87 #define HAPI_CACHE_GL_VERTEX "OpenGL Vertex Cache"
88 #define HAPI_CACHE_SOP "SOP Cache"
89 #define HAPI_CACHE_VEX "VEX File Cache"
90 /// [HAPI_CACHE]
91 
92 /// Environment variables.
93 #define HAPI_ENV_HIP "HIP"
94 #define HAPI_ENV_JOB "JOB"
95 #define HAPI_ENV_CLIENT_NAME "HAPI_CLIENT_NAME"
96 
97 // Make sure our enums and structs are usable without those keywords, as-is,
98 // in C.
99 #ifdef __cplusplus
100  #define HAPI_C_ENUM_TYPEDEF( enum_name )
101  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
102 #else
103  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
104  typedef enum enum_name enum_name;
105  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
106  typedef struct struct_name struct_name;
107 #endif // __cplusplus
108 
109 /////////////////////////////////////////////////////////////////////////////
110 // Typedefs
111 
112 // C has no bool.
113 #ifdef __cplusplus
114  typedef bool HAPI_Bool;
115 #else
116  typedef char HAPI_Bool;
117 #endif // __cplusplus
118 
119 // 64-bit Integers
120 typedef long long HAPI_Int64;
121 HAPI_STATIC_ASSERT( sizeof( HAPI_Int64 ) == 8, unsupported_size_of_long );
122 
123 // The process id has to be uint on Windows and int on any other platform.
124 #if ( defined _WIN32 || defined WIN32 )
125  typedef unsigned int HAPI_ProcessId;
126 #else
127  typedef int HAPI_ProcessId;
128 #endif
129 
130 /// Has to be 64-bit.
132 
133 /// Use this with HAPI_GetString() to get the value.
134 /// See @ref HAPI_Fundamentals_Strings.
135 typedef int HAPI_StringHandle;
136 
138 typedef int HAPI_AssetId;
139 
140 /// See @ref HAPI_Nodes_Basics.
141 typedef int HAPI_NodeId;
142 
143 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
144 /// See @ref HAPI_Parameters.
145 typedef int HAPI_ParmId;
146 
147 /// Use this with ::HAPI_GetObjects().
148 /// See @ref HAPI_ObjectsGeosParts_Objects.
149 typedef int HAPI_ObjectId;
150 
151 /// Use this with ::HAPI_GetGeoInfo().
152 /// See @ref HAPI_ObjectsGeosParts_Geos.
153 typedef int HAPI_GeoId;
154 
155 /// Use this with ::HAPI_GetPartInfo().
156 /// See @ref HAPI_ObjectsGeosParts_Parts.
157 typedef int HAPI_PartId;
158 
159 typedef int HAPI_MaterialId;
160 
161 /////////////////////////////////////////////////////////////////////////////
162 // Enums
163 
165 {
173 };
175 
177 {
182 };
184 
186 {
190 
192  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_2.
193 
194  // Used for Results.
196  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_0.
198  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_1.
200  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_2.
201 };
203 
205 {
217 
224 
227 
229 
231 };
233 
235 {
242 };
244 
246 {
247  HAPI_STATE_READY, ///< Everything cook successfully without errors.
248  HAPI_STATE_READY_WITH_FATAL_ERRORS, ///< You should abort the cook.
249  HAPI_STATE_READY_WITH_COOK_ERRORS, ///< Only some objects failed.
255 
257 };
259 
261 {
267 };
269 
271 {
277 };
279 
281 {
286 };
288 
289 /// As you can see, some of these high level types share the same underlying
290 /// raw data type. For instance, both string and file parameter types can be
291 /// represented with strings, yet semantically they are different. We will
292 /// group high level parameter types that share an underlying raw data type
293 /// together, so you can alway check the raw data type of a parameter based
294 /// on its high level data type by checking a range of values.
296 {
301 
304 
310 
312 
316 
317  // Helpers
318 
319  HAPI_PARMTYPE_MAX, ///< Total number of supported parameter types.
320 
323 
326 
329 
332 
335 
338 
341 
344 };
346 
348 {
349  HAPI_CHOICELISTTYPE_NONE, ///< Parameter is not a menu.
350  HAPI_CHOICELISTTYPE_NORMAL, ///< Menu Only, Single Selection
351  HAPI_CHOICELISTTYPE_MINI, ///< Mini Menu Only, Single Selection
352  HAPI_CHOICELISTTYPE_REPLACE, ///< Field + Single Selection Menu
353  HAPI_CHOICELISTTYPE_TOGGLE ///< Field + Multiple Selection Menu
354 };
356 
358 {
360  HAPI_PRESETTYPE_BINARY = 0, ///< Just the presets binary blob.
361  HAPI_PRESETTYPE_IDX, ///< Presets blob within an .idx file format.
363 };
365 
367 {
385 };
387 
389 {
395 };
397 
399 {
404 };
406 
408 {
415 };
417 
419 {
425 };
427 
429 {
434 };
436 
438 {
444 
445  // Extra Types (After MAX for backwards compatibility).
448 };
450 
452 {
454 
455  /// Most geos will be of this type which essentially means a geo
456  /// not of the other types.
458 
459  /// An exposed edit node.
460  /// See @ref HAPI_IntermediateAssetsResults.
462 
463  /// An input geo that can accept geometry from the host.
464  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
466 
467  /// A curve.
468  /// See @ref HAPI_Curves.
470 
472 };
474 
476 {
483 };
485 
487 {
492 };
494 
496 {
502 };
504 
506 {
520 };
522 
524 {
525  HAPI_TRS = 0,
531 
533 };
535 
537 {
538  HAPI_XYZ = 0,
544 
546 };
548 
550 {
558 
560 };
562 
564 {
566  HAPI_IMAGE_PACKING_SINGLE, ///< Single Channel
567  HAPI_IMAGE_PACKING_DUAL, ///< Dual Channel
569  HAPI_IMAGE_PACKING_BGR, ///< RGB Reveresed
571  HAPI_IMAGE_PACKING_ABGR, ///< RGBA Reversed
573 
576 };
578 
579 /// This enum is to be used with ::HAPI_GetEnvInt() to retrieve basic
580 /// information about the HAPI implementation currently being linked
581 /// against. Note that as of HAPI version 2.0, these enum values are
582 /// guaranteed never to change so you can reliably get this information from
583 /// any post-2.0 version of HAPI. The same goes for the actual
584 /// ::HAPI_GetEnvInt() API call.
586 {
588 
589  /// The three components of the Houdini version that HAPI is
590  /// expecting to link against.
591  /// @{
596  /// @}
597 
598  /// The two components of the Houdini Engine (marketed) version.
599  /// @{
602  /// @}
603 
604  /// This is a monotonously increasing API version number that can be used
605  /// to lock against a certain API for compatibility purposes. Basically,
606  /// when this number changes code compiled against the HAPI.h methods
607  /// might no longer compile. Semantic changes to the methods will also
608  /// cause this version to increase. This number will be reset to 0
609  /// every time the Houdini Engine version is bumped.
611 
613 };
615 
616 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
617 /// session-specific information.
619 {
621 
622  /// License Type. See ::HAPI_License.
624 
626 };
628 
629 /// [HAPI_CacheProperty]
631 {
632  /// Current memory usage in MB. Setting this to 0 invokes
633  /// a cache clear.
635 
636  HAPI_CACHEPROP_HAS_MIN, ///< True if it actually has a minimum size.
637  HAPI_CACHEPROP_MIN, ///< Min cache memory limit in MB.
638  HAPI_CACHEPROP_HAS_MAX, ///< True if it actually has a maximum size.
639  HAPI_CACHEPROP_MAX, ///< Max cache memory limit in MB.
640 
641  /// How aggressive to cull memory. This only works for:
642  /// - ::HAPI_CACHE_COP_COOK where:
643  /// 0 -> Never reduce inactive cache.
644  /// 1 -> Always reduce inactive cache.
645  /// - ::HAPI_CACHE_OBJ where:
646  /// 0 -> Never enforce the max memory limit.
647  /// 1 -> Always enforce the max memory limit.
648  /// - ::HAPI_CACHE_SOP where:
649  /// 0 -> When to Unload = Never
650  /// When to Limit Max Memory = Never
651  /// 1-2 -> When to Unload = Based on Flag
652  /// When to Limit Max Memory = Never
653  /// 3-4 -> When to Unload = Based on Flag
654  /// When to Limit Max Memory = Always
655  /// 5 -> When to Unload = Always
656  /// When to Limit Max Memory = Always
658 };
659 /// [HAPI_CacheProperty]
661 
662 /////////////////////////////////////////////////////////////////////////////
663 // Main API Structs
664 
665 // GENERICS -----------------------------------------------------------------
666 
668 {
669  float position[ HAPI_POSITION_VECTOR_SIZE ];
670  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
671  float scale[ HAPI_SCALE_VECTOR_SIZE ];
672 
674 };
676 
678 {
679  float position[ HAPI_POSITION_VECTOR_SIZE ];
680  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
681  float scale[ HAPI_SCALE_VECTOR_SIZE ];
682 
685 };
687 
688 // SESSIONS -----------------------------------------------------------------
689 
691 {
692  /// The type of session detemines the which implementation will be
693  /// used to communicate with the Houdini Engine library.
695 
696  /// Some session types support multiple simultanous sessions. This means
697  /// that each session needs to have a unique identifier.
698  HAPI_SessionId id;
699 };
701 
702 // TIME ---------------------------------------------------------------------
703 
705 {
706  float fps;
707 
708  float startTime;
709  float endTime;
710 };
712 
713 // ASSETS -------------------------------------------------------------------
714 
716 {
717  HAPI_AssetId id;
718 
719  /// The houdini asset type. There may be all sorts of different assets
720  /// in Houdini, corresponding to the type of data that flows in that
721  /// particular type of data network. For the moment, the only supported
722  /// types are OBJ and SOP assets, though this will change in the future
723  /// to include a greater set.
725 
726  /// Usually this will be ::HAPI_ASSETSUBTYPE_DEFAULT. The other values
727  /// correspond to assets that weren't instantiated through the use of
728  /// .otl files, such as curves.
730 
731  /// This id is primarily used to check whether the asset still exists
732  /// within the Houdini scene running inside the runtime. The asset id
733  /// alone is not enough as asset ids are re-used between sessions.
734  /// We use this id to determine whether we need to re-instatiate an asset
735  /// we have on the client side so that Houdini also knows about it -
736  /// which is different from the case where a new asset is being loaded
737  /// for the first time.
738  ///
739  /// The best example is saving and loading a scene in the host application.
740  /// The host would need to restore the underlying Houdini scene. However,
741  /// in the saved information, the host would have seemingly valid asset
742  /// ids and would have no way of know if those ids are from the current
743  /// session or a previous session. Using this validation id and
744  /// HAPI_IsAssetValid(), the host can check if the asset ids it has are
745  /// valid.
747 
748  /// Use the node id to get the asset's parameters.
749  /// See @ref HAPI_Nodes_Basics.
750  HAPI_NodeId nodeId;
751 
752  /// The objectNodeId differs from the regular nodeId in that for
753  /// geometry based assets (SOPs) it will be the node id of the dummy
754  /// object (OBJ) node instead of the asset node. For object based assets
755  /// the objectNodeId will equal the nodeId. The reason the distinction
756  /// exists is because transforms are always stored on the object node
757  /// but the asset parameters may not be on the asset node if the asset
758  /// is a geometry asset so we need both.
759  HAPI_NodeId objectNodeId;
760 
761  /// It's possible to instantiate an asset without cooking it.
762  /// See @ref HAPI_Assets_Cooking.
764 
765  HAPI_StringHandle nameSH; ///< Instance name (the label + a number).
766  HAPI_StringHandle labelSH; ///< This is what any end user should be shown.
767  HAPI_StringHandle filePathSH; ///< Path to the .otl library file.
768  HAPI_StringHandle versionSH; ///< User-defined asset version.
769  HAPI_StringHandle fullOpNameSH; ///< Full asset name and namespace.
770  HAPI_StringHandle helpTextSH; ///< Asset help marked-up text.
771 
772  int objectCount; ///< See @ref HAPI_ObjectsGeosParts_Objects.
773  int handleCount; ///< See @ref HAPI_Handles.
774  int editableNodeNetworkCount; ///< @ref HAPI_Nodes_EditableNodeNetworks.
775 
776  /// Transform inputs exposed by the asset. For OBJ assets this is the
777  /// number of transform inputs on the OBJ node. For SOP assets, this is
778  /// the singular transform input on the dummy wrapper OBJ node.
779  /// See @ref HAPI_AssetInputs.
781 
782  /// Geometry inputs exposed by the asset. For OBJ assets this is the
783  /// number of SOP-filtered node path parameters exposed plus the Object
784  /// Merge SOPs inside marked as Editable Nodes. For SOP assets this is
785  /// the number of geometry inputs on the SOP node itself plus SOP-filtered
786  /// node path parameters exposed.
787  /// See @ref HAPI_AssetInputs.
789 
790  /// For incremental updates. Indicates whether any of the assets's
791  /// objects have changed. Refreshed only during an asset cook.
793 
794  /// For incremental updates. Indicates whether any of the asset's
795  /// materials have changed. Refreshed only during an asset cook.
797 };
799 
801 {
802  /// Normally, geos are split into parts in two different ways. First it
803  /// is split by group and within each group it is split by primitive type.
804  ///
805  /// For example, if you have a geo with group1 covering half of the mesh
806  /// and volume1 and group2 covering the other half of the mesh, all of
807  /// curve1, and volume2 you will end up with 5 parts. First two parts
808  /// will be for the half-mesh of group1 and volume1, and the last three
809  /// will cover group2.
810  ///
811  /// This toggle lets you disable the splitting by group and just have
812  /// the geo be split by primitive type alone. By default, this is true
813  /// and therefore geos will be split by group and primitive type. If
814  /// set to false, geos will only be split by primtive type.
816 
817  /// For meshes only, this is enforced by convexing the mesh. Use -1
818  /// to avoid convexing at all and get some performance boost.
820 
821  /// For curves only.
822  /// If this is set to true, then all curves will be refined to a linear
823  /// curve and you can no longer access the orginal cvs. You can control
824  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
825  /// If it's false, the curve type (nurbs, bezier etc) will be left as is.
827 
828  /// Controls the number of dvisions per unit distance when refining
829  /// a curve to linear. The default in Houdini is 8.0.
831 
832  /// If this option is turned on, then we will recursively clear the
833  /// errors and warnings (and messages) of all nodes before performing
834  /// the cook.
836 
837  /// Decide whether to recursively cook all templated geos or not.
839 
840  /// Choose how you want the cook to handle packed primitives.
841  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
843 };
845 
846 // NODES --------------------------------------------------------------------
847 
849 {
850  HAPI_NodeId id;
851  HAPI_AssetId assetId;
852  HAPI_StringHandle nameSH;
853 
854  /// Always true unless the asset's definition has changed due to loading
855  /// a duplicate asset definition and from another otl asset library
856  /// file OR deleting the otl asset library file used by this node's asset.
858 
859  /// Total number of cooks of this node.
861 
862  /// Use this unique id to grab the OP_Node pointer for this node.
863  /// If you're linking against the C++ HDK, include the OP_Node.h header
864  /// and call OP_Node::lookupNode().
866 
867  /// This is the internal node path in the Houdini scene graph. This path
868  /// is meant to be abstracted away for most client purposes but for
869  /// advanced uses it can come in handy.
870  HAPI_StringHandle internalNodePathSH;
871 
872  /// Total number of parameters this asset has exposed. Includes hidden
873  /// parameters.
874  /// See @ref HAPI_Parameters.
876 
877  /// Number of values. A single parameter may have more than one value so
878  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
879  /// @{
883  /// @}
884 
885  /// The total number of choices among all the combo box parameters.
886  /// See @ref HAPI_Parameters_ChoiceLists.
888 
889  /// The number of child nodes. This is 0 for all nodes that are not
890  /// node networks.
892 
893  /// The number of inputs this specific node has.
895 
896  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
897  /// this set to true. Only such nodes can be deleted using
898  /// ::HAPI_DeleteNode().
900 };
902 
903 // PARAMETERS ---------------------------------------------------------------
904 
905 /// @struct HAPI_ParmInfo
906 ///
907 /// Contains parameter information like name, label, type, and size.
908 ///
910 {
911  /// The parent id points to the id of the parent parm
912  /// of this parm. The parent parm is something like a folder.
913  HAPI_ParmId id;
914 
915  /// Parameter id of the parent of this parameter.
916  HAPI_ParmId parentId;
917 
918  /// Child index within its immediate parent parameter.
920 
922 
923  /// Some parameter types require additional type information.
924  /// - File path parameters will indicate what file extensions they
925  /// expect in a space-separated list of wild-cards. This is set
926  /// in the Operator Type Properpties using the File Pattern
927  /// parameter property.
928  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
929  /// - Node path parameters will indicate what type of nodes they
930  /// expect in an all-caps "NETWORKTYPE/NODETYPE" pattern. This
931  /// is set in the Operator Type Properpties using the Op Filter
932  /// parameter property.
933  HAPI_StringHandle typeInfoSH;
934 
935  /// For the majority of parameter types permission will not be applicable.
936  /// For file path parameters these permissions will indicate how the
937  /// asset plans to use the file: whether it will only read it, only write
938  /// to it, or both. This is set in the Operator Type Properpties using
939  /// the Browse Mode parameter property.
941 
942  /// Tuple size. For scalar parameters this value is 1, but for vector
943  /// parameters this value can be greater. For example, a 3 vector would
944  /// have a size of 3. For folders and folder lists, this value is the
945  /// number of children they own.
946  int size;
947 
948  /// Any ::HAPI_ParmType can be a choice list. If this is set to
949  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
950  /// Otherwise, the parameter is a choice list of the indicated type.
951  /// See @ref HAPI_Parameters_ChoiceLists.
953 
954  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
955  /// choice list, this tells you how many choices it currently has.
956  /// Note that some menu parameters can have a dynamic number of choices
957  /// so it is important that this count is re-checked after every cook.
958  /// See @ref HAPI_Parameters_ChoiceLists.
960 
961  /// Note that folders are not real parameters in Houdini so they do not
962  /// have names. The folder names given here are generated from the name
963  /// of the folderlist (or switcher) parameter which is a parameter. The
964  /// folderlist parameter simply defines how many of the "next" parameters
965  /// belong to the first folder, how many of the parameters after that
966  /// belong to the next folder, and so on. This means that folder names
967  /// can change just by reordering the folders around so don't rely on
968  /// them too much. The only guarantee here is that the folder names will
969  /// be unique among all other parameter names.
970  HAPI_StringHandle nameSH;
971 
972  HAPI_StringHandle labelSH;
973 
974  /// If this parameter is a multiparm instance than the
975  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
976  /// containing #'s for the parts of the name that use the instance number.
977  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
978  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
979  /// replaced by the instance number. For regular parms, the
980  /// ::HAPI_ParmInfo::templateNameSH is identical to the
981  /// ::HAPI_ParmInfo::nameSH.
982  HAPI_StringHandle templateNameSH;
983 
984  /// The help string for this parameter
985  HAPI_StringHandle helpSH;
986 
987  /// Whether min/max exists for the parameter values.
988  /// @{
993  /// @}
994 
995  /// Parameter value range, shared between int and float parameters.
996  /// @{
997  float min;
998  float max;
999  float UIMin;
1000  float UIMax;
1001  /// @}
1002 
1003  /// Whether this parm should be hidden from the user entirely. This is
1004  /// mostly used to expose parameters as asset meta-data but not allow the
1005  /// user to directly modify them.
1007 
1008  /// Whether this parm should appear enabled or disabled.
1010 
1011  /// If true, it means this parameter doesn't actually exist on the node
1012  /// in Houdini but was added by Houdini Engine as a spare parameter.
1013  /// This is just for your information. The behaviour of this parameter
1014  /// is not any different than a non-spare parameter.
1016 
1017  HAPI_Bool joinNext; ///< Whether this parm should be on the same line as
1018  ///< the next parm.
1019  HAPI_Bool labelNone; ///< Whether the label should be displayed.
1020 
1021  /// The index to use to look into the values array in order to retrieve
1022  /// the actual value(s) of this parameter.
1023  /// @{
1028  /// @}
1029 
1030  /// See @ref HAPI_Parameters_MultiParms.
1031  /// @{
1033 
1034  int instanceNum; ///< The index of the instance in the multiparm.
1035  int instanceLength; ///< The number of parms in a multiparm instance.
1036  int instanceCount; ///< The number of instances in a multiparm.
1037 
1038  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1040 
1042  /// @}
1043 };
1045 
1047 {
1048  HAPI_ParmId parentParmId;
1049  HAPI_StringHandle labelSH;
1050 
1051  /// This evaluates to the value of the token associated with the label
1052  /// applies to string menus only.
1053  HAPI_StringHandle valueSH;
1054 };
1056 
1057 // HANDLES ------------------------------------------------------------------
1058 
1059 /// @struct HAPI_HandleInfo
1060 ///
1061 /// Contains handle information such as the type of handle
1062 /// (translate, rotate, scale, softxform ...etc) and the number of
1063 /// parameters the current handle is bound to.
1064 ///
1066 {
1067  HAPI_StringHandle nameSH;
1068  HAPI_StringHandle typeNameSH;
1069 
1071 };
1073 
1074 /// @struct HAPI_HandleBindingInfo
1075 ///
1076 /// Contains binding information that maps the handle parameter to
1077 /// the asset parameter
1078 ///
1080 {
1081  HAPI_StringHandle handleParmNameSH;
1082  HAPI_StringHandle assetParmNameSH;
1083 
1084  HAPI_ParmId assetParmId;
1085 };
1087 
1088 // OBJECTS ------------------------------------------------------------------
1089 
1091 {
1092  HAPI_ObjectId id;
1093 
1094  HAPI_StringHandle nameSH;
1095  HAPI_StringHandle objectInstancePathSH;
1096 
1097  /// For incremental updates. Indicates whether the object's transform
1098  /// has changed. Refreshed only during an asset cook.
1100 
1101  /// For incremental updates. Indicates whether any of the object's
1102  /// geometry nodes have changed. Refreshed only during an asset cook.
1104 
1105  /// Whether the object is hidden and should not be shown. Some objects
1106  /// should be hidden but still brought into the host environment, for
1107  /// example those used only for instancing.
1108  /// See @ref HAPI_Instancing.
1110 
1111  /// See @ref HAPI_Instancing.
1113 
1114  /// The number of geometries under this object. For those familiar with
1115  /// Houdini, this number will always include the one visible SOP and any
1116  /// SOPs that were exposed as "editable" or "templated".
1117  /// See @ref HAPI_ObjectsGeosParts_Geos.
1119 
1120  /// Use the node id to get the node's parameters.
1121  /// Using the HDK, you can also get the raw node C++ pointer for this
1122  /// object's internal node.
1123  /// See @ref HAPI_Nodes_Basics.
1124  HAPI_NodeId nodeId;
1125 
1126  /// If the object is an instancer, this variable gives the object id of
1127  /// the object that should be instanced.
1128  /// See @ref HAPI_Instancing.
1129  HAPI_ObjectId objectToInstanceId;
1130 };
1132 
1133 // GEOMETRY -----------------------------------------------------------------
1134 
1136 {
1137  HAPI_GeoId id;
1139  HAPI_StringHandle nameSH;
1140 
1141  /// Use the node id to get the node's parameters.
1142  /// Using the HDK, you can also get the raw node C++ pointer for this
1143  /// object's internal node.
1144  HAPI_NodeId nodeId;
1145 
1146  /// Whether the SOP node has been exposed by dragging it into the
1147  /// editable nodes section of the asset definition.
1149 
1150  /// Has the templated flag turned on which means "expose as readonly".
1152 
1153  /// Final Result (Display SOP).
1155 
1156  /// For incremental updates.
1158 
1159  /// (deprecated) This variable is deprecated and should no longer be used.
1160  /// Materials are now seperate from parts. They are maintained at the
1161  /// asset level so you only need to check if the material itself has
1162  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1163  /// on the part.
1165 
1166  /// Groups.
1167  /// @{
1170  /// @}
1171 
1172  /// Total number of parts this geometry contains.
1173  /// See @ref HAPI_ObjectsGeosParts_Parts.
1175 };
1177 
1179 {
1180  HAPI_ObjectId objectId;
1181  HAPI_GeoId geoId;
1182  HAPI_NodeId objectNodeId;
1183 };
1185 
1187 {
1188  HAPI_PartId id;
1189  HAPI_StringHandle nameSH;
1191 
1194  int pointCount; ///< Number of points. Note that this is NOT the number
1195  ///< of "positions" as "points" may imply. If your
1196  ///< geometry has 3 points then set this to 3 and not 3*3.
1197 
1202 
1203  /// If this is true, don't display this part. Load its data but then
1204  /// instance it where the corresponding instancer part tells you to
1205  /// instance it.
1207 
1208  /// The number of parts that this instancer part is instancing.
1209  /// For example, if we're instancing a curve and a box, they would come
1210  /// accross as two parts, hence this count would be two.
1211  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId's.
1213 
1214  /// The number of instances that this instancer part is instancing.
1215  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1216  /// if I'm instancing the merge of a curve and a box 5 times, this count
1217  /// would be 5. To be clear, all instanced parts are instanced the same
1218  /// number of times and with the same transform for each instance.
1219  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1220  /// each instance.
1222 };
1224 
1225 /// See @ref HAPI_Attributes.
1227 {
1229 
1232 
1233  /// When converting from the Houdini native GA geometry format to the
1234  /// GT geometry format HAPI uses, some attributes might change owners.
1235  /// For example, in Houdini GA curves can have points shared by
1236  /// vertices but the GT format only supports curve vertices
1237  /// (no points). This means that if you had point attributes on a curve
1238  /// in Houdini, when it comes out of HAPI those point attributes will now
1239  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1240  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1241  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1243 
1244  /// Number of attributes. This count will match the number of values
1245  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1246  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1247  /// To be clear, this is not the number of values in the attribute, rather
1248  /// it is the number of attributes. If your geometry has three 3D points
1249  /// then this count will be 3 (not 3*3) while the
1250  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1251  int count;
1252 
1253  /// Number of values per attribute.
1254  /// Note that this is NOT the memory size of the attribute. It is the
1255  /// number of values per attributes. Multiplying this by the
1256  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1257  /// size per attribute.
1259 };
1261 
1262 // MATERIALS ----------------------------------------------------------------
1263 
1265 {
1266  HAPI_MaterialId id;
1267  HAPI_AssetId assetId;
1268 
1269  /// This is the HAPI node id for the SHOP node this material is attached
1270  /// to. Use it to get access to the parameters (which contain the
1271  /// texture paths).
1272  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1273  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1274  /// will never change for a specific material.
1275  HAPI_NodeId nodeId;
1276 
1278 
1280 };
1282 
1284 {
1285  HAPI_StringHandle nameSH;
1286  HAPI_StringHandle descriptionSH;
1287  HAPI_StringHandle defaultExtensionSH;
1288 };
1290 
1292 {
1293  /// Unlike the other members of this struct changing imageFileFormatNameSH
1294  /// and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1295  /// Use this member variable to derive which image file format will be used
1296  /// by the HAPI_ExtractImageTo...() functions if called with
1297  /// image_file_format_name set to NULL. This way, you can decide whether
1298  /// to ask for a file format conversion (slower) or not (faster).
1299  HAPI_StringHandle imageFileFormatNameSH; // Readonly
1300 
1301  int xRes;
1302  int yRes;
1303 
1305 
1306  HAPI_Bool interleaved; ///< ex: true = RGBRGBRGB, false = RRRGGGBBB
1308 
1309  /// Adjust the gamma of the image. For anything less than
1310  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1311  double gamma;
1312 };
1314 
1315 // ANIMATION ----------------------------------------------------------------
1316 
1318 {
1319  float time;
1320  float value;
1321  float inTangent;
1322  float outTangent;
1323 };
1325 
1326 // VOLUMES ------------------------------------------------------------------
1327 
1328 /// @struct HAPI_VolumeInfo
1329 ///
1330 /// This represents a volume primitive but does not contain the actual voxel
1331 /// values, which can be retrieved on a per-tile basis.
1332 ///
1333 /// See @ref HAPI_Volumes.
1334 ///
1336 {
1337  HAPI_StringHandle nameSH;
1338 
1340 
1341  /// Each voxel is identified with an index. The indices will range
1342  /// between:
1343  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1344  /// @{
1345  int xLength;
1346  int yLength;
1347  int zLength;
1348  int minX;
1349  int minY;
1350  int minZ;
1351  /// @}
1352 
1353  /// Number of values per voxel.
1354  /// The tuple size field is 1 for scalars and 3 for vector data.
1356 
1357  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1359 
1360  /// The dimensions of each tile.
1361  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1363 
1364  /// The transform of the volume with respect to the lengths.
1365  /// The volume may be positioned anywhere in space.
1367 
1368  /// Denotes special situations where the volume tiles are not perfect
1369  /// cubes, but are tapered instead.
1371 
1372  /// If there is taper involved, denotes the amount of taper involved.
1373  /// @{
1374  float xTaper;
1375  float yTaper;
1376  /// @}
1377 };
1379 
1380 /// @struct HAPI_VolumeTileInfo
1381 ///
1382 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1383 /// The size of each dimension is HAPI_VoluemInfo::tileSize
1384 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1385 ///
1387 {
1388  int minX;
1389  int minY;
1390  int minZ;
1392 };
1394 
1395 // CURVES -------------------------------------------------------------------
1396 
1397 /// @struct HAPI_CurveInfo
1398 ///
1399 /// This represents the meta-data associated with a curve mesh (a number
1400 /// of curves of the same type).
1402 {
1404  int curveCount; ///< The number of curves contained in this curve mesh.
1405  int vertexCount; ///< The number of control vertices (cvs) for all curves.
1406  int knotCount; ///< The number of knots for all curves.
1407 
1409  ///< Whether the curves in this curve mesh are periodic.
1411  ///< Whether the curves in this curve mesh are rational.
1412  int order; ///< Order of 1 is invalid. 0 means there is a varying order.
1413 
1414  HAPI_Bool hasKnots; ///< Whether the curve has knots.
1415 };
1417 
1418 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:164
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:759
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:27
True if it actually has a maximum size.
Definition: HAPI_Common.h:638
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1139
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:970
HAPI_StringHandle labelSH
This is what any end user should be shown.
Definition: HAPI_Common.h:766
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1189
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1112
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1304
int parmStringValueCount
Definition: HAPI_Common.h:882
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:835
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:1182
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:952
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1094
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:826
Equilvalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:197
HAPI_ParmId id
Definition: HAPI_Common.h:913
Just the presets binary blob.
Definition: HAPI_Common.h:360
HAPI_Bool isEditable
Definition: HAPI_Common.h:1148
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:24
HAPI_RampType rampType
Definition: HAPI_Common.h:1041
HAPI_AssetType type
Definition: HAPI_Common.h:724
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:842
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:618
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:852
#define HAPI_API
Definition: HAPI_API.h:86
HAPI_GeoType
Definition: HAPI_Common.h:451
int instanceCount
The number of instances in a multiparm.
Definition: HAPI_Common.h:1036
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:763
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:796
int pointAttributeCount
Definition: HAPI_Common.h:1198
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1068
int editableNodeNetworkCount
Editable Node Networks.
Definition: HAPI_Common.h:774
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1408
HAPI_RSTOrder
Definition: HAPI_Common.h:523
int parmFloatValueCount
Definition: HAPI_Common.h:881
HAPI_CurveType
Definition: HAPI_Common.h:418
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1230
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:673
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1144
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:865
Single Channel.
Definition: HAPI_Common.h:566
HAPI_AssetId assetId
Definition: HAPI_Common.h:1267
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1275
HAPI_ImageDataFormat
Definition: HAPI_Common.h:549
int handleCount
See Handles.
Definition: HAPI_Common.h:773
HAPI_PartType
Definition: HAPI_Common.h:475
HAPI_EnvIntType
Definition: HAPI_Common.h:585
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1410
int detailAttributeCount
Definition: HAPI_Common.h:1201
HAPI_Bool isValid
Definition: HAPI_Common.h:857
int HAPI_ObjectId
Definition: HAPI_Common.h:149
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:684
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:260
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:972
Max cache memory limit in MB.
Definition: HAPI_Common.h:639
HAPI_Permissions
Definition: HAPI_Common.h:270
Equilvalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:191
True if it actually has a minimum size.
Definition: HAPI_Common.h:636
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:838
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:985
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:982
HAPI_AssetType
Definition: HAPI_Common.h:366
HAPI_AttributeOwner
Definition: HAPI_Common.h:407
HAPI_StringHandle fullOpNameSH
Full asset name and namespace.
Definition: HAPI_Common.h:769
RGBA Reversed.
Definition: HAPI_Common.h:571
Only some objects failed.
Definition: HAPI_Common.h:249
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1285
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:899
HAPI_CurveType curveType
Definition: HAPI_Common.h:1403
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1406
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:992
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1081
int HAPI_StringHandle
Definition: HAPI_Common.h:135
HAPI_StatusVerbosity
Definition: HAPI_Common.h:185
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1242
HAPI_ObjectId objectToInstanceId
Definition: HAPI_Common.h:1129
Equilvalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:195
Total number of supported parameter types.
Definition: HAPI_Common.h:319
See Attributes.
Definition: HAPI_Common.h:1226
HAPI_ChoiceListType
Definition: HAPI_Common.h:347
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1206
Everything cook successfully without errors.
Definition: HAPI_Common.h:247
HAPI_Bool spare
Definition: HAPI_Common.h:1015
Menu Only, Single Selection.
Definition: HAPI_Common.h:350
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:683
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1404
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1414
int vertexAttributeCount
Definition: HAPI_Common.h:1200
HAPI_XYZOrder
Definition: HAPI_Common.h:536
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1067
int HAPI_ParmId
Definition: HAPI_Common.h:145
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:916
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1412
int instancedPartCount
Definition: HAPI_Common.h:1212
int transformInputCount
Definition: HAPI_Common.h:780
int instanceStartOffset
First instance's HAPI_ParmInfo::instanceNum. Either 0 or 1.
Definition: HAPI_Common.h:1039
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:919
HAPI_NodeId id
Definition: HAPI_Common.h:850
HAPI_ImagePacking
Definition: HAPI_Common.h:563
int HAPI_GeoId
Definition: HAPI_Common.h:153
HAPI_Transform transform
Definition: HAPI_Common.h:1366
HAPI_SessionType
Definition: HAPI_Common.h:234
HAPI_StorageType storage
Definition: HAPI_Common.h:1231
Presets blob within an .idx file format.
Definition: HAPI_Common.h:361
int instanceNum
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1034
int instanceLength
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1035
HAPI_Permissions permissions
Definition: HAPI_Common.h:940
int faceAttributeCount
Definition: HAPI_Common.h:1199
HAPI_MaterialId id
Definition: HAPI_Common.h:1266
HAPI_VolumeType
Definition: HAPI_Common.h:428
HAPI_ParmType type
Definition: HAPI_Common.h:921
License Type. See HAPI_License.
Definition: HAPI_Common.h:623
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1286
int HAPI_MaterialId
Definition: HAPI_Common.h:159
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:353
HAPI_ImagePacking packing
Definition: HAPI_Common.h:1307
HAPI_Int64 HAPI_SessionId
Has to be 64-bit.
Definition: HAPI_Common.h:131
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:25
HAPI_Bool labelNone
Whether the label should be displayed.
Definition: HAPI_Common.h:1019
HAPI_GeoType type
Definition: HAPI_Common.h:1138
HAPI_SessionId id
Definition: HAPI_Common.h:698
int HAPI_ProcessId
Definition: HAPI_Common.h:127
HAPI_RampType
Definition: HAPI_Common.h:280
HAPI_ParmType
Definition: HAPI_Common.h:295
HAPI_CurveOrders
Definition: HAPI_Common.h:495
HAPI_Bool invisible
Definition: HAPI_Common.h:1006
HAPI_Bool joinNext
the next parm.
Definition: HAPI_Common.h:1017
HAPI_ObjectId objectId
Definition: HAPI_Common.h:1180
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1279
int parmIntValueCount
Definition: HAPI_Common.h:880
HAPI_GeoId id
Definition: HAPI_Common.h:1137
HAPI_PartType type
Definition: HAPI_Common.h:1190
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1053
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1103
HAPI_StringHandle versionSH
User-defined asset version.
Definition: HAPI_Common.h:768
HAPI_StorageType
Definition: HAPI_Common.h:437
HAPI_STATIC_ASSERT(sizeof(HAPI_Int64)==8, unsupported_size_of_long)
HAPI_Bool hasMax
Definition: HAPI_Common.h:990
HAPI_NodeId nodeId
Definition: HAPI_Common.h:750
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1287
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1082
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1154
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1157
int vertexCount
The number of control vertices (cvs) for all curves.
Definition: HAPI_Common.h:1405
int HAPI_AssetId
Definition: HAPI_Common.h:138
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1299
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1164
HAPI_ObjectId id
Definition: HAPI_Common.h:1092
Min cache memory limit in MB.
Definition: HAPI_Common.h:637
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as readonly".
Definition: HAPI_Common.h:1151
HAPI_AssetId assetId
Definition: HAPI_Common.h:851
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:860
HAPI_StringHandle filePathSH
Path to the .otl library file.
Definition: HAPI_Common.h:767
char HAPI_Bool
Definition: HAPI_Common.h:116
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:991
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:933
HAPI_StatusType
Definition: HAPI_Common.h:176
HAPI_PresetType
Definition: HAPI_Common.h:357
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1049
HAPI_Bool interleaved
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1306
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:894
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1048
HAPI_Result
Definition: HAPI_Common.h:204
HAPI_InputType
Definition: HAPI_Common.h:486
RGB Reveresed.
Definition: HAPI_Common.h:569
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:815
HAPI_AssetId id
Definition: HAPI_Common.h:717
HAPI_State
Definition: HAPI_Common.h:245
HAPI_VolumeType type
Definition: HAPI_Common.h:1339
int objectCount
See Objects.
Definition: HAPI_Common.h:772
HAPI_StringHandle helpTextSH
Asset help marked-up text.
Definition: HAPI_Common.h:770
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1358
HAPI_AssetSubType subType
Definition: HAPI_Common.h:729
Equilvalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:199
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:792
[HAPI_CacheProperty]
Definition: HAPI_Common.h:667
HAPI_AssetSubType
Definition: HAPI_Common.h:388
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:28
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1370
HAPI_GroupType
Definition: HAPI_Common.h:398
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1337
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:105
long long HAPI_Int64
Definition: HAPI_Common.h:120
HAPI_GeoId geoId
Definition: HAPI_Common.h:1181
HAPI_Bool isVisible
Definition: HAPI_Common.h:1109
Field + Single Selection Menu.
Definition: HAPI_Common.h:352
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:141
HAPI_PartId id
Definition: HAPI_Common.h:1188
HAPI_CacheProperty
[HAPI_CacheProperty]
Definition: HAPI_Common.h:630
You should abort the cook.
Definition: HAPI_Common.h:248
int primitiveGroupCount
Definition: HAPI_Common.h:1169
HAPI_StringHandle nameSH
Instance name (the label + a number).
Definition: HAPI_Common.h:765
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:351
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:137
Parameter is not a menu.
Definition: HAPI_Common.h:349
#define HAPI_C_ENUM_TYPEDEF(enum_name)
Definition: HAPI_Common.h:103
HAPI_TransformComponent
Definition: HAPI_Common.h:505
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1099
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1095
HAPI_Bool hasMin
Definition: HAPI_Common.h:989
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:870
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1009
HAPI_SessionType type
Definition: HAPI_Common.h:694
int HAPI_PartId
Definition: HAPI_Common.h:157
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1124
int maxVerticesPerPrimitive
Definition: HAPI_Common.h:819
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1032