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-файле может оказаться еще и заранее подготовленная анимация. Следовать ей необязательно, но иногда очень удобно. |