112 {
113 HAPI_PartInfo partInfo;
114 HE_CHECK(HAPI_GetPartInfo(&session, nodeId, partId, &partInfo))
115
116 if (partInfo.type == HAPI_PARTTYPE_MESH)
117 {
118 std::cout << indent << "Part " << partId << ":" << std::endl;
119 std::cout << indent << " Type = Mesh" << std::endl;
120 std::cout << indent << " Point Count = " << partInfo.pointCount << std::endl;
121 }
122 else if(partInfo.type == HAPI_PARTTYPE_CURVE)
123 {
124 std::cout << indent << "Part " << partId << ":" << std::endl;
125 std::cout << indent << " Type = Curve" << std::endl;
126 std::cout << indent << " Point Count = " << partInfo.pointCount << std::endl;
127 }
128 else if (partInfo.type == HAPI_PARTTYPE_INSTANCER)
129 {
130 std::cout << indent << "Part " << partId << ":" << std::endl;
131 std::cout << indent << " Type = Instancer" << std::endl;
132 std::cout << indent << " Point Count = " << partInfo.pointCount << std::endl;
133 std::cout << indent << " Instance Count = " << partInfo.instanceCount << std::endl;
134 std::cout << indent << " Instanced Part Count = " << partInfo.instancedPartCount << std::endl;
135
136 std::vector<HAPI_Transform> instanceTransforms(partInfo.instanceCount);
137 HE_CHECK(HAPI_GetInstancerPartTransforms(&session, nodeId, partId, HAPI_RSTORDER_DEFAULT, instanceTransforms.data(), 0, partInfo.instanceCount))
138
139 std::cout << indent << " Instance Transforms: " <<
std::endl;
140
141 for (auto instanceTransform : instanceTransforms)
142 {
143 float* p = &instanceTransform.position[0];
144 std::cout << indent << " " << p[0] << "." << p[1] << "." << p[2] << std::endl;
145 }
146
147 std::vector<HAPI_PartId> instancedPartIds(partInfo.instancedPartCount);
148 HE_CHECK(HAPI_GetInstancedPartIds(&session, nodeId, partId, instancedPartIds.data(), 0, partInfo.instancedPartCount))
149
150 std::cout << indent << " Instanced Parts: " <<
std::endl;
151
152 for (auto instancedPartId : instancedPartIds)
153 {
155 }
156 }
157 }
#define HE_CHECK(expr)
HoudiniEngine Check macro. Verify HoudiniEngine API Effectiveness.
static void PrintPartInfo(HAPI_Session &session, HAPI_NodeId nodeId, HAPI_PartId partId, std::string indent)