SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Curve_Marshalling()

static void HoudiniEngine::Curve_Marshalling ( )
static

Definition at line 612 of file HoudiniTestSource.h.

613 {
614 HAPI_Session session;
615
616 HAPI_ThriftServerOptions serverOptions{ 0 };
617 serverOptions.autoClose = true;
618 serverOptions.timeoutMs = 3000.0f;
619
620 HE_CHECK(HAPI_StartThriftNamedPipeServer(&serverOptions, "hapi", nullptr, nullptr))
621
622 HAPI_SessionInfo sessionInfo = HAPI_SessionInfo_Create();
623
624 HE_CHECK(HAPI_CreateThriftNamedPipeSession(&session, "hapi", &sessionInfo))
625
626 HAPI_CookOptions cookOptions = HAPI_CookOptions_Create();
627 HE_CHECK(HAPI_Initialize(&session, &cookOptions, true, -1, nullptr, nullptr, nullptr, nullptr, nullptr))
628
629 HAPI_NodeId newNode;
630 HE_CHECK(HAPI_CreateInputNode(&session, -1, &newNode, "Curve"))
631 HE_CHECK(HAPI_CookNode(&session, newNode, &cookOptions))
632
633 int cookStatus;
634 HAPI_Result cookResult;
635
636 do
637 {
638 cookResult = HAPI_GetStatus(&session, HAPI_STATUS_COOK_STATE, &cookStatus);
639 }
640 while(cookStatus > HAPI_STATE_MAX_READY_STATE && cookResult == HAPI_RESULT_SUCCESS);
641
642 HE_CHECK(cookResult)
643 HE_CHECK_COOK(cookStatus)
644
645 HAPI_PartInfo newNodePart = HAPI_PartInfo_Create();
646 newNodePart.type = HAPI_PARTTYPE_CURVE;
647 newNodePart.faceCount = 1;
648 newNodePart.vertexCount = 4;
649 newNodePart.pointCount = 4;
650 HE_CHECK(HAPI_SetPartInfo(&session, newNode, 0, &newNodePart))
651
652 HAPI_CurveInfo curveInfo;
653 curveInfo.curveType = HAPI_CURVETYPE_NURBS;
654 curveInfo.curveCount = 1;
655 curveInfo.vertexCount = 4;
656 curveInfo.knotCount = 8;
657 curveInfo.isPeriodic = false;
658 curveInfo.order = 4;
659 curveInfo.hasKnots = true;
660 HE_CHECK(HAPI_SetCurveInfo(&session, newNode, 0, &curveInfo))
661
662 int curveCount = 4;
663 HE_CHECK(HAPI_SetCurveCounts(&session, newNode, newNodePart.id, &curveCount, 0, 1))
664
665 float curveKnots[8] = { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f };
666 HE_CHECK(HAPI_SetCurveKnots(&session, newNode, newNodePart.id, curveKnots, 0, 8))
667
668 HAPI_AttributeInfo attrInfo = HAPI_AttributeInfo_Create();
669 attrInfo.count = 4;
670 attrInfo.tupleSize = 3;
671 attrInfo.exists = true;
672 attrInfo.storage = HAPI_STORAGETYPE_FLOAT;
673 attrInfo.owner = HAPI_ATTROWNER_POINT;
674
675 HE_CHECK(HAPI_AddAttribute(&session, newNode, 0, "P", &attrInfo))
676
677 float positions[12] = { -4.0f, 0.0f, 4.0f, -4.0f, 0.0f, -4.0f, 4.0f, 0.0f, -4.0f, 4.0f, 0.0f, 4.0f };
678 HE_CHECK(HAPI_SetAttributeFloatData(&session, newNode, 0, "P", &attrInfo, positions, 0, 4))
679
680 HE_CHECK(HAPI_CommitGeo(&session, newNode))
681 HE_CHECK(HAPI_SaveHIPFile(&session, "C:/Users/Administrator/Desktop/Curve_Marshalling.hip", true))
682
683 HE_CHECK(HAPI_Cleanup(&session))
684
685 return;
686 }
#define HE_CHECK_COOK(expr)
HoudiniEngine Check Cook macro. Verify HoudiniEngine Cook API Effectiveness.
Definition HoudiniCore.h:32
#define HE_CHECK(expr)
HoudiniEngine Check macro. Verify HoudiniEngine API Effectiveness.
Definition HoudiniCore.h:17