Render.ru

Создание скелета ( bones ) на API

#1
Помогите, пожалуйста, разобраться с импортом модели в Макс для последующей анимации. Геометрия ( треугольники с вершинами ) импортируется нормально. Со скелетом есть проблемы.

Скелет у меня это ряд объектов, связанных друг с другом, т.е. имеем обычную связку родитель-ребенок ( parent-child, master-slave ). В плагине делаю так

INode** bones = new INode*[oc];
for( int j = 0; j < oc; j++ ) {
Object* obj = (Object*) iptrImport->Create( GEOMOBJECT_CLASS_ID, BONE_OBJ_CLASSID );
bones[j] = (INode*) i_ptr->CreateObjectNode( obj );
}

Point3 p;
for( j = 0; j < oc; j++ ) {
// skipped
if( object[j].owner != -1 )
bones[ object[j].owner ]->AttachChild( bones[j], 1 );
}

i_ptr->RedrawViews( 0 );

Сначала создаем все кости, а затем их связываем. Из второго цикла убрал именование объекта и установку его координат.

В результате получаю отдельно стоящие кости ( правда, стоящие на своих местах ), но при этом не соединенные между собой, и сама фигурка кости как бы вогнута сама в себя, т.е. она Уже, чем та, которая появляется при создании скелета в самом Максе. При этом в окне Свойств кости все параметры укащаны правильно - имя, родитель, количество детей и т.д.

Видимо, забыл поставить какой-то параметр. Из файла bones.cpp из примеров я понял, что надо ставить длину кости через ее параметры, но как это сделать, не создавая свой собственный класс, как в bones.cpp, не понял совсем.

Приветствуются любые идеи на тему. Заранее благодарен, Артем.
 
Сверху