Как я могу получить сетку из экземпляра GeomObject?
В maxscript я делаю:
gsphere = createInstance geosphere radius:1 segs:4
gsphere_mesh = gsphere.mesh
Вот первая строка maxscript, переведенная на C ++:
GeomObject *GSphere = (GeomObject*)ip->CreateInstance(GEOMOBJECT_CLASS_ID, GSPHERE_CLASS_ID);
GSphere->GetParamBlockByID(2)->SetValue(0, 0, 1);
GSphere->GetParamBlockByID(2)->SetValue(1, 0, 4);
Теперь мне нужно получить сетку, но я не могу понять, как. Нет функций «GetMesh ()» или «GetTriMesh ()».
Спасибо за любую помощь.
Чтобы получить доступ к сетке узла, вы можете использовать что-то вроде этого:
for (int t = 0; maxscene->NumChildren() > t; t++)
{
INode* currNode = maxscene->GetChildNode(t);
Object* obj;
ObjectState os = currNode->EvalWorldState(GetCOREInterface()->GetTime());
obj = os.obj;
switch (os.obj->SuperClassID())
{
case GEOMOBJECT_CLASS_ID:
TriObject *p_triobj = NULL;
BOOL fConvertedToTriObject = obj->CanConvertToType(triObjectClassID) && (p_triobj = (TriObject*)obj->ConvertToType(0, triObjectClassID)) != NULL;
if (!fConvertedToTriObject)
{
mprintf(L"Error: Could not triangulate object.);
return false;
}
Mesh *p_trimesh = &p_triobj->mesh;
int faceCount = p_trimesh->getNumFaces();
//work with the mesh here.
}
}