Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #64, МАРТ 2006 г.

dead can dance

ФЛЕНОВ МИХАИЛ AKA HORRIFIC

Спецвыпуск: Хакер, номер #064, стр. 064-052-3


Все остальные кости крепятся к основной, создавая иерархическое дерево. Если поворачивается какая-нибудь часть этого скелета, перемещаются все дочерние кости. Такая схема создана только для удобства, чтобы она хоть немного напоминала человека. Если взглянуть на иерархию скелета в памяти, то она покажется похожей на дерево с множеством уровней, а не на человека. Если выстроить скелет таким, как он находится в памяти, то может получиться, что нога находится на одном уровне с грудью.

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

загрузка скелета

Для загрузки информации из .x-файла с учетом скелета можно воспользоваться функцией D3DXLoadMeshHierarchyFromX, в общем виде она выглядит следующим образом:

HRESULT D3DXLoadMeshHierarchyFromX(

LPCTSTR Filename,

DWORD MeshOptions,

LPDIRECT3DDEVICE9 pDevice,

LPD3DXALLOCATEHIERARCHY pAlloc,

LPD3DXLOADUSERDATA pUserDataLoader,

LPD3DXFRAME* ppFrameHeirarchy,

LPD3DXANIMATIONCONTROLLER* ppAnimController

);

Коротко пробежимся по параметрам этой функции.

Filename — что-то подсказывает мне, что это путь к загружаемому .x-файлу.

MeshOptions — опции загрузки. Чаще всего будет нужна опция D3DXMESH_MANAGED, чтобы можно было управлять загруженными данными вершинного буфера. Если управление не нужно, то можно вообще ничего не указывать, чтобы использовать значения по умолчанию.

pDevice — указатель на интерфейс IDirect3DDevice. Я думаю, тут не нужно пояснять, что это такое и зачем.

pAlloc — указатель на интерфейс ID3DXAllocateHierarchy, методы которого вызываются во время загрузки информации из .x-файла. Этот интерфейс необходим для выделения и освобождения фреймов и контейнера объектов.

pUserDataLoader — указатель на интерфейс ID3DXLoadUserData для загрузки пользовательских данных. Да, .x-файл является свободным, гибким, расширяемым, и поэтому может содержать и пользовательские данные, которые можно обработать указав здесь собственный экземпляр интерфейса ID3DXLoadUserData.

ppFrameHeirarchy — возвращает указатель на иерархию загруженных фреймов в виде массива структур D3DXFRAME.

ppAnimController — указатель на интерфейс ID3DXAnimationController, в котором будет размещена информация об анимации. Да, в .x-файле может оказаться еще и заранее подготовленная анимация. Следовать ей необязательно, но иногда очень удобно.

Назад на стр. 064-052-2  Содержание  Вперед на стр. 064-052-4