本文整理汇总了C++中NURBSSet::GetNURBSObject方法的典型用法代码示例。如果您正苦于以下问题:C++ NURBSSet::GetNURBSObject方法的具体用法?C++ NURBSSet::GetNURBSObject怎么用?C++ NURBSSet::GetNURBSObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NURBSSet
的用法示例。
在下文中一共展示了NURBSSet::GetNURBSObject方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: xPack
//.........这里部分代码省略.........
int uvLoftSurf = MakeTestUVLoftSurface(nset);
// 1 Rail Sweep
int oneRailSurf = MakeTest1RailSweepSurface(nset);
// 2 Rail Sweep
int twoRailSurf = MakeTest2RailSweepSurface(nset);
// MultiCurveTrim Surface
int multiTrimSurf = MakeTestMultiCurveTrimSurface(nset);
// Now make the curves and surfaces that we'll use later for the join tests
int jc1, jc2, js1, js2;
AddObjectsForJoinTests(nset, jc1, jc2, js1, js2);
int bc, bs;
AddObjectsForBreakTests(nset, bc, bs);
Object *obj = CreateNURBSObject(mpIp, &nset, mat);
INode *node = mpIp->CreateObjectNode(obj);
node->SetName(GetString(IDS_TEST_OBJECT));
NURBSSet addNset;
// build a point surface
int addptSurf = AddTestPointSurface(addNset);
// add an iso curve to the previously created CV Surface
NURBSId id = nset.GetNURBSObject(cvSurf)->GetId();
int addIsoCrv = AddTestIsoCurve(addNset, id);
AddNURBSObjects(obj, mpIp, &addNset);
// now test some changing functionality
// Let's change the name of the CVSurface
NURBSObject* nObj = nset.GetNURBSObject(cvSurf);
nObj->SetName(_T("New CVSurf Name")); // testing only, no need to localize
// now let's change the position of one of the points in the point curve
NURBSPointCurve* ptCrvObj = (NURBSPointCurve*)nset.GetNURBSObject(ptCrv);
ptCrvObj->GetPoint(0)->SetPosition(0, Point3(10, 160, 0)); // moved from 0,150,0
// now let's change the position and weight of one of the CVs
// in the CV Surface
NURBSCVSurface* cvSurfObj = (NURBSCVSurface*)nset.GetNURBSObject(cvSurf);
cvSurfObj->GetCV(0, 0)->SetPosition(0, Point3(-150.0, -100.0, 20.0)); // moved from 0,0,0
cvSurfObj->GetCV(0, 0)->SetWeight(0, 2.0); // from 1.0
// now let's do a transform of a curve.
NURBSIdTab xfmTab;
NURBSId nid = nset.GetNURBSObject(jc1)->GetId();
xfmTab.Append(1, &nid);
Matrix3 xfmMat;
xfmMat = TransMatrix(Point3(10, 10, -10));
SetXFormPacket xPack(xfmMat);
NURBSResult res = Transform(obj, xfmTab, xPack, xfmMat, 0);
示例2: Save
bool AlembicCurves::Save(double time, bool bLastFrame)
{
ESS_PROFILE_FUNC();
//TimeValue ticks = GET_MAX_INTERFACE()->GetTime();
TimeValue ticks = GetTimeValueFromFrame(time);
Object *obj = mMaxNode->EvalWorldState(ticks).obj;
if(mNumSamples == 0){
bForever = CheckIfObjIsValidForever(obj, ticks);
}
else{
bool bNewForever = CheckIfObjIsValidForever(obj, ticks);
if(bForever && bNewForever != bForever){
ESS_LOG_INFO( "bForever has changed" );
}
}
SaveMetaData(mMaxNode, this);
// check if the spline is animated
if(mNumSamples > 0)
{
if(bForever)
{
return true;
}
}
AbcG::OCurvesSchema::Sample curvesSample;
std::vector<AbcA::int32_t> nbVertices;
std::vector<Point3> vertices;
std::vector<float> knotVector;
std::vector<Abc::uint16_t> orders;
if(obj->ClassID() == EDITABLE_SURF_CLASS_ID){
NURBSSet nurbsSet;
BOOL success = GetNURBSSet(obj, ticks, nurbsSet, TRUE);
AbcG::CurvePeriodicity cPeriod = AbcG::kNonPeriodic;
AbcG::CurveType cType = AbcG::kCubic;
AbcG::BasisType cBasis = AbcG::kNoBasis;
int n = nurbsSet.GetNumObjects();
for(int i=0; i<n; i++){
NURBSObject* pObject = nurbsSet.GetNURBSObject((int)i);
//NURBSType type = pObject->GetType();
if(!pObject){
continue;
}
if( pObject->GetKind() == kNURBSCurve ){
NURBSCurve* pNurbsCurve = (NURBSCurve*)pObject;
int degree;
int numCVs;
NURBSCVTab cvs;
int numKnots;
NURBSKnotTab knots;
pNurbsCurve->GetNURBSData(ticks, degree, numCVs, cvs, numKnots, knots);
orders.push_back(degree+1);
const int cvsCount = cvs.Count();
const int knotCount = knots.Count();
for(int j=0; j<cvs.Count(); j++){
NURBSControlVertex cv = cvs[j];
double x, y, z;
cv.GetPosition(ticks, x, y, z);
vertices.push_back( Point3((float)x, (float)y, (float)z) );
}
nbVertices.push_back(cvsCount);
//skip the first and last entry because Maya and XSI use this format
for(int j=1; j<knots.Count()-1; j++){
knotVector.push_back((float)knots[j]);
}
if(i == 0){
if(pNurbsCurve->IsClosed()){
cPeriod = AbcG::kPeriodic;
}
}
else{
if(pNurbsCurve->IsClosed()){
if(cPeriod != AbcG::kPeriodic){
ESS_LOG_WARNING("Mixed curve wrap types not supported.");
}
}
else{
if(cPeriod != AbcG::kNonPeriodic){
ESS_LOG_WARNING("Mixed curve wrap types not supported.");
}
}
}
//.........这里部分代码省略.........