Получить сетку экземпляра GeomObject

Как я могу получить сетку из экземпляра 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 ()».

Спасибо за любую помощь.

0

Решение

Чтобы получить доступ к сетке узла, вы можете использовать что-то вроде этого:

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.
}
}
1

Другие решения


По вопросам рекламы [email protected]