                          WHAT'S NEW, или
                          ЧТО НОВЕНЬКОГО?
Новенького немного. Версия 1.37 - отладочная в прямом смысле этого 
слова. Она выпущена лишь для того, чтобы протестировать редактор
скелета (один из компонентов редактора анимаций).

I. Глюки.
 Их всего 2, причём оба связаны с конвертерами M2/WMO-моделей.
1. Некоторые WMO-модели после конверсии не сохранялись как MDX - только
   как MDL.
2. При конверсии некоторых M2/WMO-моделей неправильно конвертировались
   параметры материала (так что текстуры сильно "съезжали", 
   превращаясь в нагромождение точек и линий).

II. Невоспроизводимые глюки.
 Ещё 3 глюка у меня не воспроизвелись, но я переработал все 
подозрительные участки кода и надеюсь, что они тоже исправлены. Если
нет - сообщайте, буду копать дальше.
1. При загрузке MdlVis на некоторых машинах на пару мгновений в 
   рабочей области оказывался "мусор" - случайный набор точек (Iron,
   проверь, пофиксен ли этот глюк).
2. В редакторе текстур не срабатывала "горячая" клавиша Ctrl+Z
   (Wolverine, проверь, не заработала ли).
3. На старых машинах вместо изображения моделей появлялось хаотическое
   нагромождение точек и линий (все, у кого был этот глюк, проверьте,
   и если он остался - киньте, пожалуйста скриншот).

III. Модификации.
 Кнопка "Открыть" теперь функционирует и в редакторе анимаций (раньше
она работала только в редакторе вершин).


IV. Новый компонент.
 Итак, теперь в MdlVis появился редактор скелета. Это компонент
редактора анимаций, позволяющий создавать/удалять объекты (в данной
версии пока поддерживается работа только с костями и точками 
прикрепления [Attachment points]), менять начальное положение объектов
(т.е. их координаты ДО анимации), связывать объекты друг с другом и с 
вершинами поверхностей.
Как им пользоваться?
                        А. Вход в редактор скелета.
 Для начала войдите в редактор анимаций с помощью команды меню 
"Модули->Редактор анимаций" или нажатия F3. При этом в верхней части
экрана появится список доступных компонентов редактора (пока что там
всего 2 компонента - "Скелет" и "Анимки", но в следующей версии 
добавится ещё и редактор движения). Итак, кликаем по закладке "Скелет",
и попадаем в режим редактирования скелета.
                              Б. Интерфейс.
 Прежде всего, панель ключевых кадров анимаций в этом режиме не видна,
т.к. мы редактируем не скелет и не движение, а сам набор анимируемых
объектов. И любые действия (за исключением удаления объектов) на 
ключевые кадры НЕ ВЛИЯЮТ.
 Итак, редактор скелета работает только с костями и креплениями
(Attachment points). При входе в режим редактирования скелета все эти
объекты становятся видимыми и доступными. При этом кости отображаются
в виде зелёных квадратиков (или кубиков), а крепления - в виде 
фиолетовых треугольников (или пирамидок). У каждого объекта может быть
РОДИТЕЛЬ (он же - родительский объект). В этом случае дочерний объект 
повторяет (или, как говорят, НАСЛЕДУЕТ) все движения родительского 
объекта. Например, кисть руки наследует движения локтевого сустава, а 
тот, в свою очередь, движения плеча.
Те объекты, у которых нет родителя, выделяются более тёмным цветом
(кости - тёмно-зелёным, крепления - тёмно-синим). У каждого объекта
может быть только ОДИН родитель, но сколько угодно дочерних объектов.
Воспользовавшись командой меню "Вид->Объекты->Скелет", вы можете
включить отображение связей между объектами. Связи выделяются линиями,
причём светлый конец каждой такой линии крепится к дочернему
объекту, а тёмный - к родительскому.
Повторное использование этой команды вновь отключит видимость линий
связи. Можно также отключить видимость и самих объектов. Команда
"Вид->Объекты->Кости" переключает видимость костей, а 
"Вид->Объекты->Точки прикрепления" - видимость этих самых точек.
 В режимах "Поверхность (S)" и "Общий вид (F)" объекты могут находиться
внутри геометрии (например, внутри тела персонажа). Все объекты, 
закрытые какими-либо фрагментами геометрии, изображаются пунктиром.
То же касается и линий связи между объектами.
 Если кликнуть мышью по какому-либо объекту, то он станет выделенным.
Выделено может быть не более одного объекта. При выборе нового объекта
с предыдущего выделение снимается. Выделенный объект изображается 
красным цветом, а все дочерние относительно него объекты (а также и их
потомки) подсвечиваются жёлтым. Родитель выделенного объекта 
окрашивается в чёрный цвет. Очень часто в одной точке модели может
находиться сразу несколько объектов. Тогда последовательные клики по 
этой точке приводят к последовательному перебору (выделению) всех 
объектов, лежащих под курсором мыши. Имя выделенного объекта 
отображается в поле имени (справа). Чуть ниже выводится тип объекта.
Пока таких типов всего три: кость, помощник (это тоже кость, только к
ней не крепится ни одной вершины) и крепление.
С костями могут быть связаны вершины поверхностей. В этом случае они
повторяют каждое движение кости. Вершины, связанные с выделенной 
костью, подсвечиваются чёрным цветом, а с дочерними (относительно
выделенной) костями - серым. На информационной панели (справа) 
указывается количество вершин, связанных непосредственно с данной 
костью. Причём подсчитываются вершины ТОЛЬКО активных поверхностей
(т.е. тех, напротив которых стоят галочки в списке поверхностей ;).
 Выделять объект можно и путём непосредственного выбора из списка,
а также с помощью окна иерархий.
                         В. Окно иерархий.
Его можно вызвать с помощью команды меню "Вид->Иерархия" или нажатием
"горячей" клавиши H. Там отображается полный список всех объектов,
упорядоченный по типу (вначале идут кости, потом помощники [для тех,
кто уже забыл, напоминаю - это тоже кости, только такие, к которым не
прикреплено ни единой вершины], и, наконец, крепления). Внутри 
каждой группы объекты отсортированы по имени (в алфавитном порядке).
Кликнув по объекту в окне иерархий, вы выделяете этот объект.
Если установить флажок "Иерархия" внизу окна иерархий, то вид окна
изменится: перед объектами, имеющими потомков (дочерние объекты), 
появится иконка с изображением закрытой папочки. Двойной клик по 
такому объекту приведёт к отображению полного списка дочерних для
данного объектов (если они, в свою очередь, имеют потомков, то перед
их именами появятся аналогичные иконки и можно будет зайти ещё глубже
в недра иерархии объектов). Вверху будет отображено имя данного объекта
(родительского для всей активной группы), и перед ним появится иконка
с ОТКРЫТОЙ папочкой. Клик по этой иконке приведёт к поднятию на
уровень вверх (всё это напоминает работу с файлами в Windows. Объяснить
суть процесса очень сложно, особенно без скриншотов [которые нельзя
помещать в txt-файлы], а на практике всё просто). Кроме того, ПЕРЕД
именем родительского объекта будет помещено имя ЕГО родителя, а перед
тем - имя родителя родителя родительского объекта и т.д. Двойной клик
по любому из этих имён приводит к выводу соответствующей группы 
объектов.
                       Г. Создание и удаление объектов.
 Чтобы создать новый объект, воспользуйтесь командами меню "Создать"
или "горячими" клавишами (Ctrl+A создаёт новое крепление, Ctrl+B - 
новую кость). При этом новый объект помещается в начало координат и
сразу же становится выделенным (новые кости имеют имя bone_new, а
новые крепления - New Ref). Родителей (равно как и потомков) у вновь
созданных объектов нет. Имя объекта можно изменить либо путём его ввода
в поле имени (справа, только не забывайте после ввода имени жать ENTER,
иначе изменения не сохранятся), либо через окно иерархий (делается это
так же, как и переименование файлов в проводнике Windows. Короткий 
клик с последующим небольшим скольжением курсора мыши - и имя 
становится доступным для редактирования). Помните, что имя крепления
должно обязательно дополняться суффиксом "Ref", и что назначение
крепления зависит от его имени (т.е. допустимо далеко не любое имя).
Для удаления объекта можно воспользоваться инструментом "Удалить" или
"горячей" клавишей Del. Если у этого объекта были потомки, они остаются
без родителя :). Это же касается и связанных вершин.
[ПРИМЕЧАНИЕ: Опытные моделисты знают, что каждая вершина должна быть
             связана хотя бы с одной костью. И наверняка уже задались
             вопросом: "а что будет, если после удаления костей часть
             вершин окажется не связана вообще ни с чем?". MdlVis
             отслеживает такую ситуацию при сохранении модели, и 
             создаёт кость-заглушку без родителя с именем bone_null, 
             к которой и цепляет все "бесхозные" вершины.
Ещё раз: это было примечание для опытных моделистов, которые понимают,
о чём вообще идёт речь. Всем прочим рекомендуется его не читать (не
забивать себе мозги)].
                          Д. Движение объектов.
Осуществляется аналогично перемещению вершин в редакторе вершин. 
Инструмент "Двигать", те же рабочие плоскости, тот же механизм и даже
те же "горячие" клавиши M и Q (на выбор). При движении меняются
координаты НАЧАЛЬНОЙ позиции кости, от которой потом будут 
отсчитываться все движения/повороты/масштабирования при анимации. 
ВНИМАНИЕ: двигать синфазные (см. ниже) объекты не рекомендуется, т.к.
синфазность нормально функционирует лишь при совпадении центра кости
с геометрическим центром связанных вершин. Это не глюк, а фича движка 
Warcraft, и MdlVis её повторяет.
                             Е. Синфазность.
Вы, наверное, уже заметили этот флажок. Клик по этому переключателю
позволяет изменять синфазность объекта.
СИНФАЗНЫМИ называют объекты, всегда повёрнутые "лицом" к наблюдателю.
Например, именно так реализованы сферы у Лекаря эльфов и на луке
Сильваны: на самом деле это - квадраты (текстура превращает их в 
круги), но они присоединены к синфазным костям и ВСЕГДА, при ЛЮБОМ
повороте камеры (и самого юнита) поворачиваются своим "лицевым"
разворотом к наблюдателю.
Синфазность - довольно тонкая штука. Если вы не знаете, как ей 
пользоваться, то при переключении этого параметра просто-напросто
запорете модель.
Следует отметить также, что MdlVis для снижения нагрузки на процессор
и видеокарту перерасчитывает положение синфазных объектов только
ПО ОКОНЧАНИИ поворота модели (т.е. вращаете модель, а потом при
отпускании клавиши мыши синфазные объекты разворачиваются в нужную
позицию).
                   Ж. Связывание и отсоединение объектов.
 Для связывания объектов друг с другом нужно проделать следующее
(по порядку):
1. Выделить потенциально дочерний объект (т.е. тот, который после 
   связывания станет дочерним).
2. Далее использовать инструмент "Начать связывание" или 
   воспользоваться "горячей" клавишей T. После этого выделенный объект 
   окрасится в тёмно-бордовый цвет.
3. Выделить тот объект, к которому вы хотите привязать данный (т.е.
   объект, который станет родетельским). Выделять объект можно любым
   способом. Если случайно выделили не тот - можете выделить новый.
   При этом выделенный объект соединяется с "потенциально дочерним"
   жирной красной линией.
    Если вы передумали проводить связывание, кликните по кнопке
   "Выделение" или нажмите клавишу A.
4. Когда родительский объект выбран, используйте инструмент 
   "Завершить связывание" (появляется на месте "начать связывание")
   или вновь нажмите клавишу T.
Всё! Связывание завершено. Только помните, что объект нельзя связывать
с самим собой (в т.ч. косвенно - если родителем родительского объекта
окажется данный объект, то после связывания "тот" родитель останется
без родителя. Хм. Сам не понял, что написал. В общем, просто запомните,
что объект не следует связывать с самим собой).
 Отсоединение объекта несравнимо проще: достаточно использовать 
инструмент "отсоединить объект" или нажать клавишу D - и выделенный
объект отсоединяется от родительского.
                 З. Присоединение вершин к костям.
Да, вершины можно присоединять только к костям (ну, и к помощникам,
конечно, т.к. помощник - это разновидность кости). А вот, например, к
аттачам присоединить вершины не удастся.
 Прежде всего, нужно выделить объект, к которому вы хотите присоединить
вершины, и сами вершины, которые нужно присоединить. Вершины выделяются
так же, как и в редакторе вершин. Если выделена хоть одна вершина, то
под списком поверхностей появляется ещё и список костей, влияющих на
выделенные вершины (там будут перечислены те кости, к которым 
выделенные вершины УЖЕ присоединены). Если вершина уже присоединена к
данной кости, то её повторное присоединение не даст никакого эффекта.
Двойной клик по имени кости в этом списке приведёт к её выделению.
 Когда выделены и кость, и присоединяемые вершины, можно осуществить
собственно присоединение. В MdlVis существуют два инструмента, 
позволяющих присоединять вершины к костям.
1. "Присоединить вершины к кости" ("горячая" клавиша - C). Выполняет
   это самое присоединение. Если вершины уже присоединены к другим
   костям, то они и остаются присоединёнными к ним, плюс присоединяются
   ещё и к выделенной кости. Всего вершина может присоединяться не
   более чем к пяти костям одновременно [вообще-то Blizzard'ы создали
   модели, чьи вершины присоединяются более чем к 10 костям сразу, но
   не будем спорить с документацией. Всё же умные люди её написали].
   Соответственно, если хоть одна из выделенных вершин присоединена
   сразу к пяти костям, данный инструмент неактивен (и кликнуть по
   нему не получится). 
2. "Пересвязать вершины" ("горячая" клавиша - R). Вначале отсоединяет
   выделенные вершины от ВСЕХ костей, с которыми они уже связаны, а 
   затем связывает с выделенной костью. Т.е. после этой команды
   вершины окажутся связаны только с выделенной костью.

Ну, вот пока и всё. Успехов вам в тестировании новой версии MdlVis.
И не забывайте сообщать мне о багах!
С уважением, Алексей.