Houdini Engine 1.9
 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 /////////////////////////////////////////////////////////////////////////////
23 // Defines
24 
25 #define HAPI_POSITION_VECTOR_SIZE 3
26 #define HAPI_SCALE_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 /// @}
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 /// See ::HAPI_GlobalNodes.
78 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
79 
80 // Make sure our enums and structs are usable without those keywords, as-is,
81 // in C.
82 #ifdef __cplusplus
83  #define HAPI_C_ENUM_TYPEDEF( enum_name )
84  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
85 #else
86  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
87  typedef enum enum_name enum_name
88  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
89  typedef struct struct_name struct_name
90 #endif // __cplusplus
91 
92 /////////////////////////////////////////////////////////////////////////////
93 // Typedefs
94 
95 // C has no bool.
96 #ifdef __cplusplus
97  typedef bool HAPI_Bool;
98 #else
99  typedef char HAPI_Bool;
100 #endif // __cplusplus
101 
102 /// Use this with HAPI_GetString() to get the value.
103 /// See @ref HAPI_Fundamentals_Strings.
104 typedef int HAPI_StringHandle;
105 
107 typedef int HAPI_AssetId;
108 
109 /// See @ref HAPI_Parameters_Nodes.
110 typedef int HAPI_NodeId;
111 
112 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
113 /// See @ref HAPI_Parameters.
114 typedef int HAPI_ParmId;
115 
116 /// Use this with ::HAPI_GetObjects().
117 /// See @ref HAPI_ObjectsGeosParts_Objects.
118 typedef int HAPI_ObjectId;
119 
120 /// Use this with ::HAPI_GetGeoInfo().
121 /// See @ref HAPI_ObjectsGeosParts_Geos.
122 typedef int HAPI_GeoId;
123 
124 /// Use this with ::HAPI_GetPartInfo().
125 /// See @ref HAPI_ObjectsGeosParts_Parts.
126 typedef int HAPI_PartId;
127 
128 typedef int HAPI_MaterialId;
129 
130 /////////////////////////////////////////////////////////////////////////////
131 // Enums
132 
134 {
142 };
144 
146 {
151 };
153 
155 {
159 
161  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_2.
162 
163  // Used for Results.
165  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_0.
167  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_1.
169  ///< Equilvalent to ::HAPI_STATUSVERBOSITY_2.
170 };
172 
174 {
186 
192 
195 
197 };
199 
201 {
202  HAPI_STATE_READY, ///< Everything cook successfully without errors.
203  HAPI_STATE_READY_WITH_FATAL_ERRORS, ///< You should abort the cook.
204  HAPI_STATE_READY_WITH_COOK_ERRORS, ///< Only some objects failed.
210 
212 };
214 
216 {
222 };
224 
226 {
231 };
233 
234 /// As you can see, some of these high level types share the same underlying
235 /// raw data type. For instance, both string and file parameter types can be
236 /// represented with strings, yet semantically they are different. We will
237 /// group high level parameter types that share an underlying raw data type
238 /// together, so you can alway check the raw data type of a parameter based
239 /// on its high level data type by checking a range of values.
241 {
246 
249 
255 
257 
261 
262  // Helpers
263 
264  HAPI_PARMTYPE_MAX, ///< Total number of supported parameter types.
265 
268 
271 
274 
277 
280 
283 
286 
289 };
291 
293 {
295  HAPI_PRESETTYPE_BINARY = 0, ///< Just the presets binary blob.
296  HAPI_PRESETTYPE_IDX, ///< Presets blob within an .idx file format.
298 };
300 
302 {
320 };
322 
324 {
330 };
332 
334 {
339 };
341 
343 {
350 };
352 
354 {
360 };
362 
364 {
370 };
372 
374 {
376 
377  /// Most geos will be of this type which essentially means a geo
378  /// not of the other types.
380 
381  /// An exposed edit node.
382  /// See @ref HAPI_IntermediateAssetsResults.
384 
385  /// An input geo that can accept geometry from the host.
386  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
388 
389  /// A curve.
390  /// See @ref HAPI_Curves.
392 
394 };
396 
398 {
403 };
405 
407 {
413 };
415 
417 {
431 };
433 
435 {
436  HAPI_TRS = 0,
442 };
444 
446 {
447  HAPI_XYZ = 0,
453 };
455 
457 {
462 };
464 
466 {
474 
476 };
478 
480 {
482  HAPI_IMAGE_PACKING_SINGLE, ///< Single Channel
483  HAPI_IMAGE_PACKING_DUAL, ///< Dual Channel
485  HAPI_IMAGE_PACKING_BGR, ///< RGB Reveresed
487  HAPI_IMAGE_PACKING_ABGR, ///< RGBA Reversed
489 
492 };
494 
496 {
498 
499  /// The three components of the Houdini version that HAPI is
500  /// expecting to compile against.
501  /// @{
506  /// @}
507 
508  /// The three components of the Houdini version that HAPI belongs to.
509  /// The HAPI library itself can come from a different baseline than
510  /// the Houdini it is being compiled against when we do something like
511  /// "backgrafting" where we take, say, a 13.0 (1.5) HAPI and ship it
512  /// with a Houdini 12.5. This version is always locked with the
513  /// actual Houdini Engine version (below) because Houdini Engine is in
514  /// the same baseline as Houdini so their releases always coincide.
515  /// @{
520  /// @}
521 
522  /// The two components of the Houdini Engine (marketed) version.
523  /// @{
526  /// @}
527 
528  /// This is a monotonously increasing API version number that can be used
529  /// to lock against a certain API for compatibility purposes. Basically,
530  /// when this number changes code compiled against the HAPI.h methods
531  /// might no longer compile. Semantic changes to the methods will also
532  /// cause this version to increase. This number will be reset to 0
533  /// every time the Houdini Engine version is bumped.
535 
536  /// License Type. See ::HAPI_License.
538 
540 };
542 
543 /////////////////////////////////////////////////////////////////////////////
544 // Main API Structs
545 
546 // GENERICS -----------------------------------------------------------------
547 
549 {
550  float position[ HAPI_POSITION_VECTOR_SIZE ];
551  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
552  float scale[ HAPI_SCALE_VECTOR_SIZE ];
553 
555 };
557 
559 {
560  float position[ HAPI_POSITION_VECTOR_SIZE ];
561  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
562  float scale[ HAPI_SCALE_VECTOR_SIZE ];
563 
566 };
568 
569 // TIME ---------------------------------------------------------------------
570 
572 {
573  float fps;
574 
575  float startTime;
576  float endTime;
577 };
579 HAPI_DECL_RETURN( void )
583 
584 // ASSETS -------------------------------------------------------------------
585 
587 {
589 
590  /// The houdini asset type. There may be all sorts of different assets
591  /// in Houdini, corresponding to the type of data that flows in that
592  /// particular type of data network. For the moment, the only supported
593  /// types are OBJ and SOP assets, though this will change in the future
594  /// to include a greater set.
596 
597  /// Usually this will be ::HAPI_ASSETSUBTYPE_DEFAULT. The other values
598  /// correspond to assets that weren't instantiated through the use of
599  /// .otl files, such as curves.
601 
602  /// This id is primarily used to check whether the asset still exists
603  /// within the Houdini scene running inside the runtime. The asset id
604  /// alone is not enough as asset ids are re-used between sessions.
605  /// We use this id to determine whether we need to re-instatiate an asset
606  /// we have on the client side so that Houdini also knows about it -
607  /// which is different from the case where a new asset is being loaded
608  /// for the first time.
609  ///
610  /// The best example is saving and loading a scene in the host application.
611  /// The host would need to restore the underlying Houdini scene. However,
612  /// in the saved information, the host would have seemingly valid asset
613  /// ids and would have no way of know if those ids are from the current
614  /// session or a previous session. Using this validation id and
615  /// HAPI_IsAssetValid(), the host can check if the asset ids it has are
616  /// valid.
618 
619  /// Use the node id to get the asset's parameters.
620  /// See @ref HAPI_Parameters_Nodes.
622 
623  /// The objectNodeId differs from the regular nodeId in that for
624  /// geometry based assets (SOPs) it will be the node id of the dummy
625  /// object (OBJ) node instead of the asset node. For object based assets
626  /// the objectNodeId will equal the nodeId. The reason the distinction
627  /// exists is because transforms are always stored on the object node
628  /// but the asset parameters may not be on the asset node if the asset
629  /// is a geometry asset so we need both.
631 
632  /// It's possible to instantiate an asset without cooking it.
633  /// See @ref HAPI_Assets_Cooking.
635 
636  HAPI_StringHandle nameSH; ///< Instance name (the label + a number).
637  HAPI_StringHandle labelSH; ///< This is what any end user should be shown.
638  HAPI_StringHandle filePathSH; ///< Path to the .otl library file.
639  HAPI_StringHandle versionSH; ///< User-defined asset version.
640  HAPI_StringHandle fullOpNameSH; ///< Full asset name and namespace.
641  HAPI_StringHandle helpTextSH; ///< Asset help marked-up text.
642 
643  int objectCount; ///< See @ref HAPI_ObjectsGeosParts_Objects.
644  int handleCount; ///< See @ref HAPI_Handles.
645 
646  /// Transform inputs exposed by the asset. For OBJ assets this is the
647  /// number of transform inputs on the OBJ node. For SOP assets, this is
648  /// the singular transform input on the dummy wrapper OBJ node.
649  /// See @ref HAPI_AssetInputs.
651 
652  /// Geometry inputs exposed by the asset. For OBJ assets this is the
653  /// number of SOP-filtered node path parameters exposed plus the Object
654  /// Merge SOPs inside marked as Editable Nodes. For SOP assets this is
655  /// the number of geometry inputs on the SOP node itself plus SOP-filtered
656  /// node path parameters exposed.
657  /// See @ref HAPI_AssetInputs.
659 
660  /// For incremental updates. Indicates whether any of the assets's
661  /// objects have changed. Refreshed only during an asset cook.
663 
664  /// For incremental updates. Indicates whether any of the asset's
665  /// materials have changed. Refreshed only during an asset cook.
667 };
669 HAPI_DECL_RETURN( void )
673 
675 {
676  /// Normally, geos are split into parts in two different ways. First it
677  /// is split by group and within each group it is split by primitive type.
678  ///
679  /// For example, if you have a geo with group1 covering half of the mesh
680  /// and volume1 and group2 covering the other half of the mesh, all of
681  /// curve1, and volume2 you will end up with 5 parts. First two parts
682  /// will be for the half-mesh of group1 and volume1, and the last three
683  /// will cover group2.
684  ///
685  /// This toggle lets you disable the splitting by group and just have
686  /// the geo be split by primitive type alone. By default, this is true
687  /// and therefore geos will be split by group and primitive type. If
688  /// set to false, geos will only be split by primtive type.
690 
691  /// For meshes only, this is enforced by convexing the mesh. Use -1
692  /// to avoid convexing at all and get some performance boost.
694 
695  /// For curves only.
696  /// If this is set to true, then all curves will be refined to a linear
697  /// curve and you can no longer access the orginal cvs. You can control
698  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
699  /// If it's false, the curve type (nurbs, bezier etc) will be left as is.
701 
702  /// Controls the number of dvisions per unit distance when refining
703  /// a curve to linear. The default in Houdini is 8.0.
705 
706  /// If this option is turned on, then we will recursively clear the
707  /// errors and warnings (and messages) of all nodes before performing
708  /// the cook.
710 
711  /// Decide whether to recursively cook all templated geos or not.
713 };
715 HAPI_DECL_RETURN( void )
719 
720 // NODES --------------------------------------------------------------------
721 
723 {
727 
728  /// Always true unless the asset's definition has changed due to loading
729  /// a duplicate asset definition and from another otl asset library
730  /// file OR deleting the otl asset library file used by this node's asset.
732 
733  /// Total number of cooks of this node.
735 
736  /// Use this unique id to grab the OP_Node pointer for this node.
737  /// If you're linking against the C++ HDK, include the OP_Node.h header
738  /// and call OP_Node::lookupNode().
740 
741  /// This is the internal node path in the Houdini scene graph. This path
742  /// is meant to be abstracted away for most client purposes but for
743  /// advanced uses it can come in handy.
745 
746  /// Total number of parameters this asset has exposed. Includes hidden
747  /// parameters.
748  /// See @ref HAPI_Parameters.
750 
751  /// Number of values. A single parameter may have more than one value so
752  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
753  /// @{
757  /// @}
758 
759  /// The total number of choices among all the combo box parameters.
760  /// See @ref HAPI_Parameters_ChoiceLists.
762 };
764 HAPI_DECL_RETURN( void )
768 
769 /// This contains node ids for the default global nodes that are created
770 /// by HAPI in the default Houdini scene underneath. These nodes will be used
771 /// for global asset-independent functionality like rendering material
772 /// to file.
774 {
778 };
780 HAPI_DECL_RETURN( void )
784 
785 // PARAMETERS ---------------------------------------------------------------
786 
787 /// @struct HAPI_ParmInfo
788 ///
789 /// Contains parameter information like name, label, type, and size.
790 ///
792 {
793  /// The parent id points to the id of the parent parm
794  /// of this parm. The parent parm is something like a folder.
796 
797  /// Parameter id of the parent of this parameter.
799 
801 
802  /// Some parameter types require additional type information.
803  /// - File path parameters will indicate what file extensions they
804  /// expect in a space-separated list of wild-cards. This is set
805  /// in the Operator Type Properpties using the File Pattern
806  /// parameter property.
807  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
808  /// - Node path parameters will indicate what type of nodes they
809  /// expect in an all-caps "NETWORKTYPE/NODETYPE" pattern. This
810  /// is set in the Operator Type Properpties using the Op Filter
811  /// parameter property.
813 
814  /// For the majority of parameter types permission will not be applicable.
815  /// For file path parameters these permissions will indicate how the
816  /// asset plans to use the file: whether it will only read it, only write
817  /// to it, or both. This is set in the Operator Type Properpties using
818  /// the Browse Mode parameter property.
820 
821  /// Tuple size. For scalar parameters this value is 1, but for vector
822  /// parameters this value can be greater. For example, a 3 vector would
823  /// have a size of 3. For folders and folder lists, this value is the
824  /// number of children they own.
825  int size;
826 
827  /// Any ::HAPI_ParmType can be a choice list. If this is zero then this
828  /// parameter is not a choice list. Otherwise, it is one.
829  /// See @ref HAPI_Parameters_ChoiceLists.
831 
832  /// Note that folders are not real parameters in Houdini so they do not
833  /// have names. The folder names given here are generated from the name
834  /// of the folderlist (or switcher) parameter which is a parameter. The
835  /// folderlist parameter simply defines how many of the "next" parameters
836  /// belong to the first folder, how many of the parameters after that
837  /// belong to the next folder, and so on. This means that folder names
838  /// can change just by reordering the folders around so don't rely on
839  /// them too much. The only guarantee here is that the folder names will
840  /// be unique among all other parameter names.
842 
844 
845  /// If this parameter is a multiparm instance than the
846  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
847  /// containing #'s for the parts of the name that use the instance number.
848  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
849  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
850  /// replaced by the instance number. For regular parms, the
851  /// ::HAPI_ParmInfo::templateNameSH is identical to the
852  /// ::HAPI_ParmInfo::nameSH.
854 
855  /// The help string for this parameter
857 
858  /// Whether min/max exists for the parameter values.
859  /// @{
864  /// @}
865 
866  /// Parameter value range, shared between int and float parameters.
867  /// @{
868  float min;
869  float max;
870  float UIMin;
871  float UIMax;
872  /// @}
873 
874  /// Whether this parm should be hidden from the user entirely. This is
875  /// mostly used to expose parameters as asset meta-data but not allow the
876  /// user to directly modify them.
878 
879  /// Whether this parm should appear enabled or disabled.
881 
882  /// If true, it means this parameter doesn't actually exist on the node
883  /// in Houdini but was added by Houdini Engine as a spare parameter.
884  /// This is just for your information. The behaviour of this parameter
885  /// is not any different than a non-spare parameter.
887 
888  HAPI_Bool joinNext; ///< Whether this parm should be on the same line as
889  ///< the next parm.
890  HAPI_Bool labelNone; ///< Whether the label should be displayed.
891 
892  /// The index to use to look into the values array in order to retrieve
893  /// the actual value(s) of this parameter.
894  /// @{
899  /// @}
900 
901  /// See @ref HAPI_Parameters_MultiParms.
902  /// @{
904 
905  int instanceNum; ///< The index of the instance in the multiparm.
906  int instanceLength; ///< The number of parms in a multiparm instance.
907  int instanceCount; ///< The number of instances in a multiparm.
908 
909  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
911 
913  /// @}
914 };
916 
917 /// Clears the struct to default values.
918 HAPI_DECL_RETURN( void )
920 
921 /// Creates a struct with default values and returns it.
924 
925 /// Convenience function that checks on the value of the ::HAPI_ParmInfo::type
926 /// field to tell you the underlying data type.
927 /// @{
929  HAPI_ParmInfo_IsInt( const HAPI_ParmInfo * in );
931  HAPI_ParmInfo_IsFloat( const HAPI_ParmInfo * in );
935  HAPI_ParmInfo_IsPath( const HAPI_ParmInfo * in );
940 /// @}
941 
942 /// Parameter has no underlying No data type. Examples of this are UI items
943 /// such as folder lists and separators.
946 
947 /// Convenience function. If the parameter can be represented by this data
948 /// type, it returns ::HAPI_ParmInfo::size, and zero otherwise.
949 /// @{
950 HAPI_DECL_RETURN( int )
952 HAPI_DECL_RETURN( int )
954 HAPI_DECL_RETURN( int )
956 /// @}
957 
959 {
962 
963  /// This evaluates to the value of the token associated with the label
964  /// applies to string menus only.
966 };
968 HAPI_DECL_RETURN( void )
972 
973 // HANDLES ------------------------------------------------------------------
974 
975 /// @struct HAPI_HandleInfo
976 ///
977 /// Contains handle information such as the type of handle
978 /// (translate, rotate, scale, softxform ...etc) and the number of
979 /// parameters the current handle is bound to.
980 ///
982 {
985 
987 };
989 HAPI_DECL_RETURN( void )
993 
994 /// @struct HAPI_HandleBindingInfo
995 ///
996 /// Contains binding information that maps the handle parameter to
997 /// the asset parameter
998 ///
1000 {
1003 
1005 };
1007 HAPI_DECL_RETURN( void )
1011 
1012 // OBJECTS ------------------------------------------------------------------
1013 
1015 {
1017 
1020 
1021  /// For incremental updates. Indicates whether the object's transform
1022  /// has changed. Refreshed only during an asset cook.
1024 
1025  /// For incremental updates. Indicates whether any of the object's
1026  /// geometry nodes have changed. Refreshed only during an asset cook.
1028 
1029  /// Whether the object is hidden and should not be shown. Some objects
1030  /// should be hidden but still brought into the host environment, for
1031  /// example those used only for instancing.
1032  /// See @ref HAPI_Instancing.
1034 
1035  /// See @ref HAPI_Instancing.
1037 
1038  /// The number of geometries under this object. For those familiar with
1039  /// Houdini, this number will always include the one visible SOP and any
1040  /// SOPs that were exposed as "editable" or "templated".
1041  /// See @ref HAPI_ObjectsGeosParts_Geos.
1043 
1044  // Use the node id to get the node's parameters.
1045  // Using the HDK, you can also get the raw node C++ pointer for this
1046  // object's internal node.
1047  /// See @ref HAPI_Parameters_Nodes.
1049 
1050  /// If the object is an instancer, this variable gives the object id of
1051  /// the object that should be instanced.
1052  /// See @ref HAPI_Instancing.
1054 };
1056 HAPI_DECL_RETURN( void )
1060 
1061 // GEOMETRY -----------------------------------------------------------------
1062 
1064 {
1068 
1069  // Use the node id to get the node's parameters.
1070  // Using the HDK, you can also get the raw node C++ pointer for this
1071  // object's internal node.
1073 
1074  /// Whether the SOP node has been exposed by dragging it into the
1075  /// editable nodes section of the asset definition.
1077 
1078  /// Has the templated flag turned on which means "expose as readonly".
1080 
1081  /// Final Result (Display SOP).
1083 
1084  /// For incremental updates.
1086 
1087  /// (deprecated) This variable is deprecated and should no longer be used.
1088  /// Materials are now seperate from parts. They are maintained at the
1089  /// asset level so you only need to check if the material itself has
1090  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1091  /// on the part.
1093 
1094  /// Groups.
1095  /// @{
1098  /// @}
1099 
1100  /// Total number of parts this geometry contains.
1101  /// See @ref HAPI_ObjectsGeosParts_Parts.
1103 };
1105 HAPI_DECL_RETURN( void )
1109 HAPI_DECL_RETURN( int )
1111  HAPI_GeoInfo * in, HAPI_GroupType type );
1112 
1114 {
1118 };
1120 HAPI_DECL_RETURN( void )
1124 
1126 {
1129 
1132  int pointCount; ///< Number of points. Note that this is NOT the number
1133  ///< of "positions" as "points" may imply. If your
1134  ///< geometry has 3 points then set this to 3 and not 3*3.
1135 
1140 
1143 };
1145 HAPI_DECL_RETURN( void )
1149 HAPI_DECL_RETURN( int )
1151  HAPI_PartInfo * in, HAPI_AttributeOwner owner );
1152 HAPI_DECL_RETURN( int )
1154  HAPI_PartInfo * in, HAPI_GroupType type );
1155 HAPI_DECL_RETURN( int )
1157  HAPI_PartInfo * in, HAPI_AttributeOwner owner );
1158 
1159 /// See @ref HAPI_Attributes.
1161 {
1163 
1166 
1167  /// When converting from the Houdini native GA geometry format to the
1168  /// GT geometry format HAPI uses, some attributes might change owners.
1169  /// For example, in Houdini GA curves can have points shared by
1170  /// vertices but the GT format only supports curve vertices
1171  /// (no points). This means that if you had point attributes on a curve
1172  /// in Houdini, when it comes out of HAPI those point attributes will now
1173  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1174  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1175  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1177 
1178  /// Number of attributes. This count will match the number of values
1179  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1180  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1181  /// To be clear, this is not the number of values in the attribute, rather
1182  /// it is the number of attributes. If your geometry has three 3D points
1183  /// then this count will be 3 (not 3*3) while the
1184  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1185  int count;
1186 
1187  /// Number of values per attribute.
1188  /// Note that this is NOT the memory size of the attribute. It is the
1189  /// number of values per attributes. Multiplying this by the
1190  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1191  /// size per attribute.
1193 };
1195 HAPI_DECL_RETURN( void )
1199 
1200 // MATERIALS ----------------------------------------------------------------
1201 
1203 {
1206 
1207  /// This is the HAPI node id for the SHOP node this material is attached
1208  /// to. Use it to get access to the parameters (which contain the
1209  /// texture paths).
1210  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1211  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1212  /// will never change for a specific material.
1214 
1216 
1218 };
1220 HAPI_DECL_RETURN( void )
1224 
1226 {
1230 };
1232 HAPI_DECL_RETURN( void )
1236 
1238 {
1239  // Unlike the other members of this struct changing imageFileFormatNameSH
1240  // and giving this struct back to HAPI_SetImageInfo() nothing will happen.
1241  // Use this member variable to derive which image file format will be used
1242  // by the HAPI_ExtractImageTo...() functions if called with
1243  // image_file_format_name set to NULL. This way, you can decide whether
1244  // to ask for a file format conversion (slower) or not (faster).
1246 
1247  int xRes;
1248  int yRes;
1249 
1251 
1252  HAPI_Bool interleaved; // ex: true = RGBRGBRGB, false = RRRGGGBBB
1254 
1255  /// Adjust the gamma of the image. For anything less than
1256  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1257  double gamma;
1258 };
1260 HAPI_DECL_RETURN( void )
1264 
1265 // ANIMATION ----------------------------------------------------------------
1266 
1268 {
1269  float time;
1270  float value;
1271  float inTangent;
1272  float outTangent;
1273 };
1275 HAPI_DECL_RETURN( void )
1279 
1280 // VOLUMES ------------------------------------------------------------------
1281 
1282 /// @struct HAPI_VolumeInfo
1283 ///
1284 /// This represents a volume primitive but does not contain the actual voxel
1285 /// values, which can be retrieved on a per-tile basis.
1286 ///
1287 /// See @ref HAPI_Volumes.
1288 ///
1290 {
1292 
1293  /// Each voxel is identified with an index. The indices will range
1294  /// between:
1295  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1296  /// @{
1297  int xLength;
1298  int yLength;
1299  int zLength;
1300  int minX;
1301  int minY;
1302  int minZ;
1303  /// @}
1304 
1305  /// Number of values per voxel.
1306  /// The tuple size field is 1 for scalars and 3 for vector data.
1308 
1309  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1311 
1312  /// The dimensions of each tile.
1313  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1315 
1316  /// The transform of the volume with respect to the lengths.
1317  /// The volume may be positioned anywhere in space.
1319 
1320  /// Denotes special situations where the volume tiles are not perfect
1321  /// cubes, but are tapered instead.
1323 
1324  /// If there is taper involved, denotes the amount of taper involved.
1325  /// @{
1326  float xTaper;
1327  float yTaper;
1328  /// @}
1329 };
1331 HAPI_DECL_RETURN( void )
1335 
1336 /// @struct HAPI_VolumeTileInfo
1337 ///
1338 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1339 /// The size of each dimension is HAPI_VoluemInfo::tileSize
1340 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1341 ///
1343 {
1344  int minX;
1345  int minY;
1346  int minZ;
1348 };
1350 HAPI_DECL_RETURN( void )
1354 
1355 
1356 // CURVES -------------------------------------------------------------------
1357 
1358 /// @struct HAPI_CurveInfo
1359 ///
1360 /// This represents the meta-data associated with a curve mesh (a number
1361 /// of curves of the same type).
1363 {
1365  int curveCount; ///< The number of curves contained in this curve mesh.
1366  int vertexCount; ///< The number of control vertices (cvs) for all curves.
1367  int knotCount; ///< The number of knots for all curves.
1368 
1370  ///< Whether the curves in this curve mesh are periodic.
1372  ///< Whether the curves in this curve mesh are rational.
1373  int order; ///< Order of 1 is invalid. 0 means there is a varying order.
1374 
1375  HAPI_Bool hasKnots; ///< Whether the curve has knots.
1376 };
1378 HAPI_DECL_RETURN( void )
1382 
1383 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:133
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:630
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:28
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1067
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:841
HAPI_StringHandle labelSH
This is what any end user should be shown.
Definition: HAPI_Common.h:637
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1128
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1036
HAPI_VolumeTileInfo_Init(HAPI_VolumeTileInfo *in)
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1250
int parmStringValueCount
Definition: HAPI_Common.h:756
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:709
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:1117
HAPI_HandleBindingInfo_Create()
HAPI_ParmInfo_IsNodePath(const HAPI_ParmInfo *in)
HAPI_NodeInfo_Create()
HAPI_CurveInfo_Init(HAPI_CurveInfo *in)
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1018
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:700
HAPI_PartInfo_GetAttributeCountByOwner(HAPI_PartInfo *in, HAPI_AttributeOwner owner)
Equilvalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:166
HAPI_ParmId id
Definition: HAPI_Common.h:795
Just the presets binary blob.
Definition: HAPI_Common.h:295
HAPI_Bool isCurve
Definition: HAPI_Common.h:1142
HAPI_Bool isEditable
Definition: HAPI_Common.h:1076
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:25
HAPI_RampType rampType
Definition: HAPI_Common.h:912
int floatValuesIndex
Definition: HAPI_Common.h:896
HAPI_AssetType type
Definition: HAPI_Common.h:595
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:726
HAPI_ParmInfo_IsNonValue(const HAPI_ParmInfo *in)
#define HAPI_API
Definition: HAPI_API.h:83
HAPI_AssetInfo_Init(HAPI_AssetInfo *in)
HAPI_GeoType
Definition: HAPI_Common.h:373
HAPI_CookOptions_Init(HAPI_CookOptions *in)
int instanceCount
The number of instances in a multiparm.
Definition: HAPI_Common.h:907
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:634
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:666
HAPI_GeoInputInfo_Create()
int pointAttributeCount
Definition: HAPI_Common.h:1136
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:984
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic.
Definition: HAPI_Common.h:1369
HAPI_HandleInfo_Create()
HAPI_RSTOrder
Definition: HAPI_Common.h:434
int parmFloatValueCount
Definition: HAPI_Common.h:755
HAPI_VolumeInfo_Init(HAPI_VolumeInfo *in)
HAPI_CurveType
Definition: HAPI_Common.h:353
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1164
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:554
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1072
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:739
Single Channel.
Definition: HAPI_Common.h:482
HAPI_AssetId assetId
Definition: HAPI_Common.h:1205
HAPI_GlobalNodes_Create()
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1213
HAPI_ImageDataFormat
Definition: HAPI_Common.h:465
int handleCount
See Handles.
Definition: HAPI_Common.h:644
HAPI_EnvIntType
Definition: HAPI_Common.h:495
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1371
HAPI_ParmInfo_IsFilePath(const HAPI_ParmInfo *in)
int detailAttributeCount
Definition: HAPI_Common.h:1139
HAPI_Bool isValid
Definition: HAPI_Common.h:731
int HAPI_ObjectId
Definition: HAPI_Common.h:118
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:565
HAPI_ImageFileFormat_Init(HAPI_ImageFileFormat *in)
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:843
HAPI_Permissions
Definition: HAPI_Common.h:215
HAPI_CookOptions_Create()
HAPI_ParmChoiceInfo_Create()
Equilvalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:160
HAPI_PartInfo_Init(HAPI_PartInfo *in)
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:712
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:856
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:853
HAPI_AssetType
Definition: HAPI_Common.h:301
HAPI_ParmInfo_Create()
Creates a struct with default values and returns it.
HAPI_AttributeOwner
Definition: HAPI_Common.h:342
int stringValuesIndex
Definition: HAPI_Common.h:897
HAPI_StringHandle fullOpNameSH
Full asset name and namespace.
Definition: HAPI_Common.h:640
RGBA Reversed.
Definition: HAPI_Common.h:487
Only some objects failed.
Definition: HAPI_Common.h:204
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1227
HAPI_Keyframe_Init(HAPI_Keyframe *in)
HAPI_NodeInfo_Init(HAPI_NodeInfo *in)
HAPI_ObjectInfo_Create()
HAPI_CurveType curveType
Definition: HAPI_Common.h:1364
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1367
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:863
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1001
int HAPI_StringHandle
Definition: HAPI_Common.h:104
HAPI_StatusVerbosity
Definition: HAPI_Common.h:154
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1176
HAPI_ObjectId objectToInstanceId
Definition: HAPI_Common.h:1053
HAPI_ParmInfo_IsPath(const HAPI_ParmInfo *in)
Equilvalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:164
Total number of supported parameter types.
Definition: HAPI_Common.h:264
See Attributes.
Definition: HAPI_Common.h:1160
HAPI_PartInfo_GetElementCountByGroupType(HAPI_PartInfo *in, HAPI_GroupType type)
Everything cook successfully without errors.
Definition: HAPI_Common.h:202
HAPI_Bool spare
Definition: HAPI_Common.h:886
HAPI_MaterialInfo_Init(HAPI_MaterialInfo *in)
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:564
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1365
HAPI_ParmInfo_IsString(const HAPI_ParmInfo *in)
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1375
int vertexAttributeCount
Definition: HAPI_Common.h:1138
HAPI_TimelineOptions_Create()
HAPI_XYZOrder
Definition: HAPI_Common.h:445
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:983
HAPI_MaterialInfo_Create()
int HAPI_ParmId
Definition: HAPI_Common.h:114
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:798
HAPI_HandleBindingInfo_Init(HAPI_HandleBindingInfo *in)
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1373
HAPI_ImageInfo_Create()
int transformInputCount
Definition: HAPI_Common.h:650
HAPI_ImageFileFormat_Create()
HAPI_VolumeTileInfo_Create()
int instanceStartOffset
First instance's HAPI_ParmInfo::instanceNum. Either 0 or 1.
Definition: HAPI_Common.h:910
HAPI_NodeId id
Definition: HAPI_Common.h:724
HAPI_ImagePacking
Definition: HAPI_Common.h:479
int HAPI_GeoId
Definition: HAPI_Common.h:122
HAPI_GeoInfo_Create()
HAPI_NodeId defaultLight
Definition: HAPI_Common.h:776
HAPI_ParmInfo_Init(HAPI_ParmInfo *in)
Clears the struct to default values.
HAPI_TimelineOptions_Init(HAPI_TimelineOptions *in)
HAPI_Transform transform
Definition: HAPI_Common.h:1318
HAPI_StorageType storage
Definition: HAPI_Common.h:1165
Presets blob within an .idx file format.
Definition: HAPI_Common.h:296
int instanceNum
The index of the instance in the multiparm.
Definition: HAPI_Common.h:905
int instanceLength
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:906
HAPI_ShaderType
Definition: HAPI_Common.h:456
HAPI_Permissions permissions
Definition: HAPI_Common.h:819
int faceAttributeCount
Definition: HAPI_Common.h:1137
HAPI_MaterialId id
Definition: HAPI_Common.h:1204
HAPI_ParmType type
Definition: HAPI_Common.h:800
HAPI_VolumeInfo_Create()
HAPI_Bool hasVolume
Definition: HAPI_Common.h:1141
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1228
int HAPI_MaterialId
Definition: HAPI_Common.h:128
HAPI_ImagePacking packing
Definition: HAPI_Common.h:1253
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:26
HAPI_Bool labelNone
Whether the label should be displayed.
Definition: HAPI_Common.h:890
HAPI_GeoType type
Definition: HAPI_Common.h:1066
HAPI_RampType
Definition: HAPI_Common.h:225
HAPI_ParmType
Definition: HAPI_Common.h:240
HAPI_CurveOrders
Definition: HAPI_Common.h:406
HAPI_Bool invisible
Definition: HAPI_Common.h:877
HAPI_Bool joinNext
the next parm.
Definition: HAPI_Common.h:888
HAPI_ObjectId objectId
Definition: HAPI_Common.h:1115
HAPI_HandleInfo_Init(HAPI_HandleInfo *in)
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1217
HAPI_CurveInfo_Create()
int parmIntValueCount
Definition: HAPI_Common.h:754
#define HAPI_DECL_RETURN(r)
Definition: HAPI_API.h:100
HAPI_AssetInfo_Create()
HAPI_GeoId id
Definition: HAPI_Common.h:1065
HAPI_GeoInfo_Init(HAPI_GeoInfo *in)
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:965
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1027
HAPI_StringHandle versionSH
User-defined asset version.
Definition: HAPI_Common.h:639
HAPI_StorageType
Definition: HAPI_Common.h:363
HAPI_Bool hasMax
Definition: HAPI_Common.h:861
License Type. See HAPI_License.
Definition: HAPI_Common.h:537
HAPI_NodeId nodeId
Definition: HAPI_Common.h:621
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1229
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1002
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1082
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1085
HAPI_ParmInfo_IsFloat(const HAPI_ParmInfo *in)
int vertexCount
The number of control vertices (cvs) for all curves.
Definition: HAPI_Common.h:1366
int HAPI_AssetId
Definition: HAPI_Common.h:107
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1245
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1092
HAPI_ImageInfo_Init(HAPI_ImageInfo *in)
HAPI_ObjectId id
Definition: HAPI_Common.h:1016
HAPI_ParmChoiceInfo_Init(HAPI_ParmChoiceInfo *in)
HAPI_PartInfo_Create()
HAPI_ParmInfo_IsInt(const HAPI_ParmInfo *in)
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as readonly".
Definition: HAPI_Common.h:1079
HAPI_GeoInputInfo_Init(HAPI_GeoInputInfo *in)
HAPI_AssetId assetId
Definition: HAPI_Common.h:725
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:734
HAPI_StringHandle filePathSH
Path to the .otl library file.
Definition: HAPI_Common.h:638
char HAPI_Bool
Definition: HAPI_Common.h:99
HAPI_ParmInfo_GetIntValueCount(const HAPI_ParmInfo *in)
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:862
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:812
HAPI_StatusType
Definition: HAPI_Common.h:145
HAPI_AttributeInfo_Init(HAPI_AttributeInfo *in)
HAPI_PresetType
Definition: HAPI_Common.h:292
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:961
HAPI_Bool interleaved
Definition: HAPI_Common.h:1252
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:960
HAPI_Result
Definition: HAPI_Common.h:173
HAPI_NodeId mantraRenderer
Definition: HAPI_Common.h:777
HAPI_InputType
Definition: HAPI_Common.h:397
RGB Reveresed.
Definition: HAPI_Common.h:485
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:689
HAPI_AssetId id
Definition: HAPI_Common.h:588
HAPI_State
Definition: HAPI_Common.h:200
int objectCount
See Objects.
Definition: HAPI_Common.h:643
HAPI_StringHandle helpTextSH
Asset help marked-up text.
Definition: HAPI_Common.h:641
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1310
HAPI_AssetSubType subType
Definition: HAPI_Common.h:600
Equilvalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:168
HAPI_Keyframe_Create()
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:662
HAPI_AssetSubType
Definition: HAPI_Common.h:323
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:29
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1322
HAPI_NodeId defaultCamera
Definition: HAPI_Common.h:775
HAPI_GroupType
Definition: HAPI_Common.h:333
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1291
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:88
HAPI_GeoId geoId
Definition: HAPI_Common.h:1116
HAPI_ParmInfo_GetFloatValueCount(const HAPI_ParmInfo *in)
HAPI_Bool isVisible
Definition: HAPI_Common.h:1033
int HAPI_NodeId
See Nodes.
Definition: HAPI_Common.h:110
HAPI_PartId id
Definition: HAPI_Common.h:1127
You should abort the cook.
Definition: HAPI_Common.h:203
HAPI_AttributeInfo_Create()
int primitiveGroupCount
Definition: HAPI_Common.h:1097
HAPI_ObjectInfo_Init(HAPI_ObjectInfo *in)
HAPI_StringHandle nameSH
Instance name (the label + a number).
Definition: HAPI_Common.h:636
HAPI_ParmInfo_GetStringValueCount(const HAPI_ParmInfo *in)
HAPI_PartInfo_GetElementCountByAttributeOwner(HAPI_PartInfo *in, HAPI_AttributeOwner owner)
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:106
HAPI_GlobalNodes_Init(HAPI_GlobalNodes *in)
#define HAPI_C_ENUM_TYPEDEF(enum_name)
Definition: HAPI_Common.h:86
HAPI_TransformComponent
Definition: HAPI_Common.h:416
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1023
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1019
HAPI_Bool hasMin
Definition: HAPI_Common.h:860
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:744
HAPI_GeoInfo_GetGroupCountByType(HAPI_GeoInfo *in, HAPI_GroupType type)
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:880
int HAPI_PartId
Definition: HAPI_Common.h:126
HAPI_NodeId nodeId
See Nodes.
Definition: HAPI_Common.h:1048
int maxVerticesPerPrimitive
Definition: HAPI_Common.h:693
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:903