                     ИСТОРИЧЕСКИЕ МОМЕНТЫ:
Версия 1.39c (багфикс):
I (и единственное): ГЛЮКИ.
1. Исправлен баг усреднителя нормалей (раньше они не усреднялись, а
   складывались с усреднённым вариантом).
2. Теперь изменение нормалей сразу же видно (если, конечно, включено
   отображение нормалей).
3. Исправлен баг вращения сцены по Alt+LMB (LMB - левая кнопка мыши).
4. Оптимизирована загрузка многомегабайтовых MDL (например, моделей 
   персонажей WoW). Те, кому приходилось по часу ждать подгрузки
   очередной MDL, оценят.
5. Конвертер M2 теперь может конвертировать модели из последнего патча
   TBC (где Blizzard'ы изменили формат этих моделей).
6. В редакторе анимок в поле "анимация" можно свободно вводить имя этой
   самой анимации (раньше курсор "вылетал" из Edit'а на середине 
   ввода). 
7. Сами анимки в списке теперь отсортированы по алфавиту. Их можно
   прокручивать (когда поле активно) движением колёсика мыши - для
   этого курсор мыши требуется навести на поле с именем анимки.
8. При смене активной анимки проигрывание анимации не останавливается
   (так удобнее просматривать). Проигрывание "Всей линейки" снова
   активно (причём в чуть модифицированном варианте).
9. Поле "Редкость" перестало самопроизвольно сбрасывать своё содержимое
10. В редакторе вершин при выделении треугольника теперь действуют 
    Shift и Ctrl (раньше они не работали).
11. В редакторе движения исправлен баг со сбросом высвечивания КК
    (сброс происходил при удалении части КК).

-----------------------------------------------------------------------
Версия 1.39b (багфикс):
I. ГЛЮКИ.
 Их исправление - основная цель любого багфикса. Итак, вот что я сумел-
таки исправить в 1.39b:
1. Очередная модификация редактора, позволяющая ему корректно работать
   с некоторыми неканоническими моделями.
2. В редакторе движения заработали (наконец-то!) горячие клавиши.
   Клавиша '~' (тильда) теперь включает "Общий вид".
3. Поправлены баги процедуры специальной вставки. Надеюсь, теперь она
   будет работать стабильно даже при вставке целого набора 
   поверхностей.
4. Раньше в редакторе анимаций на некоторых машинах появлялись 
   паразитные узоры (швы) на модели. Теперь этот баг исправлен.
5. Поправлен (вроде бы) старый баг с "замусориванием" рабочей области
   MdlVis при открытии модели.
6. Исправлен глюк со сбрасыванием выделения в редакторе вершин (при
   клике по пустой области выделение сбрасывалось всегда, даже при
   зажатой клавише Shift - больше такого не будет).
7. После открытия новой модели редактор анимаций не позволял выбирать
   объекты из списка - теперь позволяет.
8. Запрещено проигрывание анимации в режиме "Вся линейка" - дабы не
   сбивать с толку неопытных пользователей.
9. При удалении КК MdlVis иногда вылетал - теперь этот баг исправлен.
10. При связывании костей в редакторе скелета иногда происходил "вылет"
    - теперь и этого бага больше не существует.

II. ДОРАБОТКИ.
 Их немного.
1. Слегка изменён интерфейс - например, в редакторе скелета добавлено
   "подсвечивание" объектов.
2. Стиль окна "Сохранить как" опять изменён - на прежний вариант (тот,
   который был до 1.38 включительно). Если кому-то новый вариант 
   нравился больше - откройте в Блокноте файл "mdlvis.ini" и в 
   секцию "[Params]" добавьте строку:
   SaveDialogStyle=1
   кстати, "старое" диалоговое окно всё же слегка доработано.
3. Когда отключён автовыбор рабочей плоскости, вращение осуществляется
   как прежде - движением курсора мыши по горизонтали.
4. Вращение "вида" в редакторе вершин теперь можно осуществлять так же,
   как в 3DSMax'е - Alt+LMB (т.е. двигать мышь с зажатой левой кнопкой
   и зажатой Alt).
5. Иерархия моделей WoW теперь хранится не в отдельных файлах, а 
   непосредственно в файлах моделей (MDL/MDX). При этом такие модели
   (с "прицепом", так сказать) нормально воспринимаются игрой, но
   совершенно не перевариваются конвертерами/3D-редакторами (W3ME).
   Чтобы "отцепить" дополнительную информацию, когда она станет уже 
   ненужной, воспользуйтесь оптимизатором (см. ниже).

III. НОВОВВЕДЕНИЯ.
1. Модификаторы нормалей. 
 Предназначены для опытных пользователей.
 Работать с нормалями нужно осторожно - т.к. форматы MDX/MDL не
рассчитаны на хранение такой информации. Сам Warcraft воспринимает
модифицированные модели нормально, но вот конвертеры/редакторы будут
глючить (в лучшем случае просто обрежут дополнительную информацию).
 Итак, что же такое нормали? Включить их видимость можно (если кто не
помнит) с помощью команды меню "Вид->Нормали" или же "горячей" клавишей
N. Выглядят они короткими синими росчерками, исходящими из каждой
вершины модели. ОЧЕНЬ короткими росчерками - чтобы их увидеть, вам
потребуется сильно увеличить масштаб. Нормали влияют на освещённость
треугольников модели и на её "гладкость". Если ваша модель содержит
резкие стыки, границы (хорошо видны в режимах "Поверхность" и/или
"Общий вид" при включённом затенении); если ваша модель кажется
собранной из кусочков, отдалённо напоминая робототехнику, то её можно 
сгладить при помощи модификаторов нормалей.
 Для этого требуется выделить ВСЕ вершины, прилегающие к границе (т.е.
тому стыку, от которого вам нужно избавиться). Причём вершины нужно
выделять для ВСЕХ поверхностей, т.к. именно стык поверхностей чаще
всего выглядит негладким. Когда нужные вершины выделены, вам остаётся
только кликнуть клавишей "Усреднить нормали" - и наслаждаться 
результатом.
 Нормали можно также вращать. При вращении нормалей меняется степень
затенения некоторого участка модели (что опять-таки видно лишь в 
режимах "Поверхность" и "Общий вид" и ТОЛЬКО при включённом затенении).
Используя инструмент "Вращение нормалей", вы можете (с помощью курсора
мыши или же координатных полей) устанавливать поворот нормалей и,
соответственно, влиять на затенённость участка модели, создавая
довольно необычные эффекты.
 С помощью спец. инструмента можно снять модификаторы нормалей с
выделенных вершин (этот инструмент активен лишь тогда, когда среди
выделенных вершин есть хотя бы одна вершина с модификатором).
Советую поработать с модификаторами нормалей самостоятельно - и 
"почувствовать", к чему приводит то или иное изменение нормалей.
 Модификаторы нормалей, как уже говорилось, хранятся в виде "прицепа"
к файлу модели (MDL/MDX), что не позволяет другим редакторам/
конвертерам работать с такими моделями (Warcraft, конечно, всё 
отображает как надо - т.е. без глюков!). 
Когда вы полностью настроите модель, вы можете избавиться от этих 
модификаторов с помощью оптимизитора (см. ниже). После этого вы сможете
сохранить модифицированную модель, но БЕЗ самих модификаторов. Такая 
модель занимает меньше места и может без проблем обрабатываться 
другими редакторами/конвертерами. Только при конверсии/редактировании 
такой модели все нормали опять "слетят". Т.е. обрезать модификаторы 
можно лишь в финальной версии, когда все нормали уже настроены, и 
модель полностью готова к импорту в WorldEditor.

2. Оптимизатор. 
 Это - специальный инструмент, направленный на снижение размера файла
модели (MDL/MDX). Оптимизатор старается всеми правдами и неправдами
уменьшить размер MDX/MDL-файла вашей модели. Делается это за счёт
различных приёмов "чёрной" магии и виртуальных танцев с бубном ;).
Вызвать оптимизатор можно с помощью команды меню 
"Оптимизация->Оптимизатор". При этом всплывёт довольно-таки большое
окошко со списком действий. Отметив галочками те оптимизационные 
действия, которые вы хотите выполнить, просто кликните OK, и сохраните
оптимизированную модель. Пока что оптимизатор поддерживает следующие
методы оптимизации (со временем я добавлю ещё):
A. Канонизация. О ней уже говорилось - она позволяет обрезать всю
   дополнительную информацию (например, о группах сглаживания),
   "заботливо" помещаемую в модель MdlVis'ом. При этом размер файла
   модели, естественно, уменьшается. Того же самого эффекта можно
   добиться при помощи команды "Оптимизация->Канонизация".
Б. Удаление повторяющихся поверхностей. Этот способ оптимизации вам уже
   знаком: он полностью аналогичен команде 
   "Оптимизация->Оптимизировать", которая удаляет из моделей WoW
   повторяющиеся поверхности. К не-WoW моделям этот тип оптимизации
   не применим (т.е. никак не повлияет на их размер).
В. Удаление свободных вершин. Когда модельщики удаляют треугольники 
   или их фрагменты, некоторые вершины становятся свободными, т.е. они
   не входят ни в один треугольник. Думаю, вы часто видели такие
   вершины в моделях с wc3sear.ch. Эти вершины не отображаются в игре,
   а лишь даром расходуют место в файле MDX/MDL. Этот тип оптимизации 
   удалит все такие вершины (правда, размер модели при этом падает на 
   считанные байты).
Г. Удаление несвязанных костей. Иногда в моделях попадаются кости, к
   которым вообще ничего не крепится - ни вершин, ни аттачей, ни
   Источников, ни чего-либо ещё. Такие кости появляются при удалении
   части геометрии - особенно характерна эта проблема для моделей 
   персонажей (Characters) WoW. Бывает, что в модели присутствуют
   целые цепочки свободных костей - т.е. кости крепятся друг к другу, 
   образуя цепочку, но ни к одной из них ничего не прикреплено. 
   Этот тип оптимизации удаляет такие "паразитные" кости вместе со
   всеми их контроллерами (т.е. с их КК). В некоторых моделях WoW
   при такой оптимизации кости удаляются целыми десятками. На анимации
   это НИКАК не отражается, но модель становится гораздо меньше.
   Для "обычных" моделей выигрыш невелик - максимум несколько десятков
   байт.
Д. Удаление ничейных КК. Иногда моделисты удаляют из модели ненужные
   анимации - но при этом почему-то забывают вычистить соответствующие
   КК. При этом в модели остаётся куча лишних КК, которые не 
   используются НИКАК. Этим страдают почти все модели с wc3sear.ch.
   Этот тип оптимизации позволяет удалить такие КК, но процесс их 
   поиска может занять некоторое время.
Е. Линеаризация анимации. Замечено, что линейные контроллеры анимации
   занимают почти в три раза меньше места, чем сплайновые (т.к. они
   не хранят тангециальные составляющие). Соответственно, если все
   сплайновые контроллеры модели конвертировать в линейные, то MDL/MDX
   файл сразу станет меньше (правда, при этом несколько падает качество
   анимации). Выигрыш, получаемый при использовании этого вида 
   оптимизации, сильно зависит от количества сплайновых контроллеров
   в модели и возможности их линеаризации.
   В WoW-моделях сплайновых контроллеров нет совсем, т.ч. этот тип
   оптимизации к ним неприменим. А вот большинство "крупных" моделей,
   содержащихся в War MPQ, и всяческих модификаций на их основе
   (т.е. 90% моделей с wc3sear.ch) линеаризуются ОЧЕНЬ эффективно.
   Так, например, после такой оптимизации модель дриады (Dryad.mdx),
   исходно занимавшая 178Кб, уменьшилась до 97Кб! "Вес" некоторых
   моделей может уменьшиться более чем в два раза!
Ж. Ещё один способ оптимизации, основанных на знании приёмов "чёрной"
   магии. За идею этого метода спасибо Guess'у, который подробно
   растолковал его суть на форуме wc3c, и даже привёл небольшую
   программку, демонстрирующую этот метод в действии.
   Дело в том, что любая карта War - это на самом деле MPQ-архив. Да и
   на сайты модели редко поступают в своём "натуральном" виде - гораздо
   чаще их выкладывают уже в архивах. Стало быть, чем эффективнее 
   сжимается модель (т.е. чем сильнее уменьшается её "вес" при 
   архивации), тем лучше. Оказывается, для MDX-файлов можно существенно
   повысить сжимаемость (за счёт некоторых манипуляций с 
   "внутренностями" формата). При этом модель остаётся вполне 
   стандартной, её качество не изменяется, размер также не изменяется, 
   но любой(!) архиватор сожмёт её куда эффективнее. Например, при 
   сжатии модели NightElfCampaign3D.mdx, размер zip-архива составил 
   882Кб, а после применения этого метода оптимизации модель сжималась 
   в 563Кб-архив!
   Видите, насколько меньше места займёт архив после оптимизации
   модели. Но, повторюсь, этот способ оптимизации применим ТОЛЬКО к
   MDX-файлам. Сразу же после применения этого метода оптимизации
   модель нужно сохранить в формате MDX. Если вы сохраните её как MDL,
   то никакого уменьшения размера/увеличения сжимаемости не увидите.
 
-----------------------------------------------------------------------
"Лысая" версия (1.39):
I. ГЛЮКИ.
 Их состав очень сильно изменился. Старые исправлены (не все!), новые
добавлены. Основная задача пользователей этой версии как раз и
состоит в выявлении оставшихся глюков.
Вот что было исправлено:
1. Исправлен глюк процедуры экструзии - ошибки в текстурных 
   координатах и проблемы с "провалом" треугольников.
2. Исправлен баг конвертера M2. Раньше (начиная с 1.38) он обрезал
   контроллеры перемещения, что приводило к неприятным эффектам - 
   навроде анимации "Death", когда модель висит прямо в воздухе.
3. Поправлен движок анимаций - чтобы не было больше ошибок вроде
   "завалов" моделей на бок, судорожного подёргивания, проседания и пр.
4. Загруженные модели больше не "рассыпаются" на части при загрузке их
   прямо в редакторе анимаций.
5. Исправлен баг с отображением текстуры на синфазных (Billboarded)
   объектах - раньше она переворачивалась на 90°.
6. Баг WMO-конвертера, приводящий к "вылетам" на некоторых моделях,
   теперь также исправлен.
7. Поправлена небольшая ошибка, связанная с сохранением WoW-иерерхий
   (MDH-файлы) при использовании команды "Сохранить как".
8. Мелкая сетка в режимах "Поверхность" и "Общий вид" больше не
   затирает крупную сетку.
9. Исправлена ошибка конвертера 3DS, приводящая к вылетам и лагам
   при работе с высокополигональными моделями (свыше 65535 треуголь-
   ников). Кроме того, теперь каждый меш-объект 3DS импортируется в
   отдельную поверхность.
10. Раньше при создании анимаций в середине линейки (например, на
   пустых участках) Warcraft отказывался нормально проигрывать такие 
   анимации. Теперь новые анимации добавляются корректно. Более того,
   при загрузке моделей, список анимаций которых повреждён 
   предыдущими версиями MdlVis, происходит автоматическое исправление
   модели.
11. Исправлен небольшой баг редактора тексурных карт: раньше при его
   повторном открытии в полях координат содержался всякий "мусор".
12. Полностью переработан алгоритм распознавания "горячих" клавиш.
   Надеюсь, теперь не будет их "пробуксовывания" и ложных срабатываний.
13. Несколько небольших подчисток интерфейса.
14. Некоторые модели, изуродованные AnimTransfer'ом, теперь 
   автоматически исправляются при загрузке в MdlVis.

II. ДОРАБОТКИ.
1. Немного изменён вид диалогового окна "Сохранить как". Правда, я
   сильно не уверен, что стало в итоге лучше, чем было ;).
2. Изменён алгоритм создания/клонирования объектов в редакторе скелета.
   Теперь, если на момент создания/клонирования объекта в рабочей
   области есть выделенные вершины, новый объект помещается не в
   начало координат, а в координатный центр выделенного фрагмента
   геометрии.
3. В меню анимационной линейки добавлен пункт "Отрезать". Он полностью
   вырезает выделенную область - вместе со всеми КК, которые там
   находятся. При этом, если выделенная область пересекает границы 
   каких-либо анимаций, то эти анимации тоже удаляются.
   По принципу действия инструмент обратен команде "Добавить": он
   позволяет "выкусывать" пустое пространство из линейки КК и ненужные
   анимации со всеми их КК.
4. Добавлен новый тип объектов скелета - Источники частиц (вторая
   версия источников). Сами частицы пока не видны, но ИЧ отображаются
   как в редакторе скелета, так и в редакторе анимаций. Они выглядят
   зелёными тетраэдрами. Свойства их пока редактировать нельзя - можно
   изменить лишь имена таких источников.
   Создавать новые ИЧ пока нельзя - зато можно клонировать (Ctr+V)
   уже существующие. При этом создаётся полная копия выделенного ИЧ,
   только полностью статическая - без анимаций.
   ИЧ бывают двух видов - точечные и плоскостные. При выделении
   последних около них появляется крастый квадрат - область испускания
   частиц. Именно в ней и появляются новые частицы.

III. НОВОВВЕДЕНИЯ.
 Оно всего одно. А именно - редактор движения. Теперь он полностью
доступен. Этот редактор во многом напоминает редактор скелета, только
позволяет расставлять КК и анимировать объекты. Ни геометрию, ни
структуру скелета в нём изменить нельзя. Он позволяет редактировать
ТОЛЬКО активную анимацию (т.е. ту, которая выбрана в редакторе
последовательностей). Если нужно редактировать другую 
последовательность - выйдите на вкладку 2 ("Анимки") и смените 
активную анимацию.
При входе в этот редактор очень НЕ советую использовать "Всю линейку".
Дело в том, что при выборе этого варианта движок MdlVis будет 
рассмативать ВЕСЬ набор кадров как одну большую анимацию без учёта
границ последовательностей. Как следствие, и проигрываться этот набор
кадров будет так, как проигрывалась бы такая анимация в Warcraft'е.
Проигрывание, к примеру, куска всей линейки, содержащего кадры 
анимации "Stand" НЕ БУДЕТ совпадать с проигрыванием самой анимки.
Это НЕ баг и НЕ фича. Это полное имитирование поведения движка
Warcraft'а. Если анимация проигрыватся как-то "криво", то, скорее 
всего, в самой игре она будет выглядеть ТОЧНО ТАК ЖЕ.
Поэтому старайтесь всё-таки редактировать последовательности по
отдельности.

В редакторе движения доступны любые манипуляции с линейкой КК - можно
выделять КК, очищать выделенные фрагменты, копировать КК, вставлять
их из буфера обмена и т.д.
Можно также выбирать объект для редактирования. Выделенный объект
подсвечивается (ни за что не догадаетесь!) красным. Объект можно
вращать, перемещать и масштабировать - при этом текущий кадр
становится ключевым.
На панели "Свойства объекта" для Источников Частиц и Точек 
Прикрепления можно также анимировать видимость объектов. Для этого
достаточно установить в текущем кадре галочку "Видимость" в нужное
положение. Управлять видимостью костей НЕЛЬЗЯ. Что касается Точек
Прикрепления, то они на самом деле невидимы всегда, а "Видимость"
управляет видимостью прикреплённого (в игре, например триггерно) к ним
объекта. Некоторые Источники Частиц (ИЧ) и Точки прикрепления (ТП) не 
имеют собственных контроллеров видимости. Для них галочка "Видимость" 
неактивна. Однако в этом случае прямо под ней должна находиться кнопка
"анимировать", нажатие которой создаст новый контроллер видимости для
данного объекта.

ОГРАНИЧЕНИЯ.
На той же панели свойств всегда есть список ограничений - на Движение,
Вращение и Масштабирование. Установка этой галочки позволит поставить
соответствующее ограничение. При выборе нового объекта ограничения
со "старого" НЕ снимаются. Т.е. для каждого объекта можно индивидуально
проставлять набор ограничений. 
Только поймите меня правильно.
Установка, к примеру, ограничения на движение вовсе не означает, что
объект ВООБЩЕ перестанет двигаться. Конечно же, нет! Более того: 
эти ограничения никак не отражаются на ходе проигрывания анимации. 
Ограничение на движение означает лишь, что при перемещении/вращении
/масштабировании родительского объекта (или ещё более "высокого" 
родителя), позиция "ограниченного" объекта НЕ изменится. Т.е. для него
тоже будет создан КК, устраняющий его перемещение за счёт влияния 
родителей.
Эта фича может использоваться при анимации некоторых сложных движений.
Например, персонаж по замыслу должен присесть. Приседание 
осуществляется поворотом коленных костей. Но при этом ступни тоже
повернутся и модель "подвиснет" в воздухе! Конечно, позже вы опустите
её обратно на землю (чтобы поза модели в данном кадре была полностью 
правильной). Однако в этом случае будет ОЧЕНЬ трудно подогнать ступни
на то самое место, где они ранее стояли. Так вот, если на кости
ступней установить ограничение "Движения", то при любых поворотах 
любых других костей позиция ступней не измерится! Конечно, при этом
поза модели будет выглядеть ужасно, зато опускать саму модель будет
уже легче.
Это же касается и остальных ограничений. Например, хочется, чтобы
персонаж опустил руку, но раскрытая ладонь руки всё равно была
направлена вперёд. Что может быть проще - установим ограничение на
вращение и можем смело двигать локтевую кость - ладонь при этом будет
повёрнута точно как на момент начала вращения.
Все эти ограничения легко отменить - для этого внизу, под их списком,
есть специальная кнопка. Она действует на ВСЕ объекты сразу.

ВЫДЕЛЕНИЕ ВЕРШИН.
Хотя вершины в редакторе движения не видны (видна только сетка), их
всё же можно выделить мышью - обведя некоторую область "рамочкой".
При этом выделенные вершины отмечаются красным, появляется панель со
списком костей, влияющих на эти вершины, а под ней - координаты 
центра выделенных вершин. Никаких особых возможностей эта особенность
редактора не несёт.

СВОЙСТВА КОНТРОЛЛЕРА.
С каждым объектом может быть связано некоторое количество контроллеров
анимации - т.е. наборов КК, отвечающих за какое-то единственное
анимируемое свойство (например, видимость). Панель "Контроллер"
содержит инструменты для работы с текущим (активным) контроллером.
Под заголовком панели всегда написано, какой контроллер какого объекта
сейчас активен. Если сейчас используется инструмент "выделение", то
это - всегда контроллер видимости. Если у выделенного объекта нет
такого контроллера или есть, но глобальный (см. ниже) - панель 
"Контроллер" не видна.
При выборе инструмента "Движение" на панели отображается контроллер
движения текущего объекта, и т.д.
В общем, текущий контроллер целиком определяется выделенным объектом
и выбранным инструментом. Итак, что же можно делать с контроллером?
Во-первых, можно поменять его тип. Переключатель "Тип контроллера"
всегда отображает текущий тип активного контроллера, а клик по другому
(не отмеченному кружочком) пункту приведёт к смене типа контроллера.
Тип контроллера определяет способ вычисления значения между КК.
Существуют следующие типы контроллеров:
Ступенчатый - нет никакого вычисления. Анимируемый параметр объекта
              не будет меняться, пока не встретится новый КК. Тогда
              он изменится сразу, рывком - в то значение, которое
              записано в этом КК. Некоторые контроллеры (например,
              контроллер видимости) могут быть ТОЛЬКО ступенчатыми.
              Тогда переключатель типов неактивен.
Линейный - между кадрами анимируемый параметр меняется плавно,
           а именно - линейно. Наиболее часто используемый параметр.
Безье - изменение параметра описывается кривой Безье. Это самый
        редкоиспользуемый тип, т.к. он занимает в 3 раза больше места,
        чем линейный (что приводит к увеличению "веса" модели в Кб), и
        не даёт никаких особых преимуществ, кроме плавности движения с 
        замедлением в КК.
Сплайновый - изменение параметра описывается сплайнами Кочанека-
             Бартельса (TCB-тип). Это наиболее интересный тип анимации,
             позволяющий создавать очень красивую и естественно
             выглядящую анимацию (при соответствующем навыке, конечно).
             Когда выбран этот тип контроллера, можно вызвать ещё одну
             дополнительную панель - "Свойства кривой", позволяющую
             настроить параметры сплайна в каждом КК. Это очень
             интересная тема, но без графиков и примеров-скриншотов
             объяснить назначение параметров довольно трудно. 
             В итоге до выхода следующего релиза (а то и документации
             на новый MdlVis) я рекомендую не связываться с такими
             контроллерами.

Так, с типами контроллеров разобрались.
Под переключателем типов находится кнопка "Высветить КК". Она позволяет
скрыть (чтоб не мешали) все КК на панели анимаций кроме тех, которые
принадлежат активному контроллеру. Особенно это актуально для
контроллеров видимости - чтобы сразу увидеть все кадры, в которых
меняется видимость выделенного объекта. Когда "высвечены" только КК
некоторого контроллера, большнство команд меню линейки анимаций 
применимо только к ним. Т.е., например, вставить кадры в другой 
контроллер не удастся - только в высвеченный.
И, наконец, кнопка "удалить контроллер" позволяет стереть контроллер
со всеми его КК.

ГЛОБАЛЬНЫЕ АНИМАЦИИ.
Думаю, все уже давно знают, что помимо "обычных" анимаций модель может
содержать т.н. ГЛОБАЛЬНЫЕ анимации. Они проигрываются все разом,
ОДНОВРЕМЕННО и вне зависимости от того, какая анимация сейчас активна.
Например, в виде глобальных анимаций сделано мерцание ауры Иллидана,
или, к примеру, "волны", проходящие по элементалям. На глобалках 
также выполнен развевающийся флаг орковского Мастера Клинка. Т.е.
его анимировали ОДИН раз, и он развевается во ВСЕХ анимациях!
Вот что такое глобальная анимация.
MdlVis позволяет редактировать и их тоже - для этого нужно выбрать
такую анимацию (они безымянные - обозначаются цифрами размера) в
редакторе анимок.
Все контроллеры, созданные при активной глобальной анимации, являются
ГЛОБАЛЬНЫМИ контроллерами. Они видны ТОЛЬКО в этой глобальной анимации
и ни в одной другой! Не видны они также и при редактировании локальных
анимаций.
Соответственно, "обычные" (неглобальные) контроллеры недоступны при
редактировании глобальных анимаций! 
Это следует всегда иметь в виду, как и тот факт, что один объект не
может иметь по нескольку контроллеров для одного параметра.
Например, если тот же флаг уже двигался в какой-либо глобалке, то
двигать его в других глобалках уже не получится - пропадёт анимирование
в "прежней" глобалке.
Отсюда совет: если не понимаете, что делаете - не связывайтесь с
глобальными анимациями.

ГРУППОВОЙ ВЫБОР.
В редакторе движения можно выделить и несклько объектов сразу - при
помощи "Группового выбора". Механизм этого процесса, думаю, вам уже
известен - ибо давно используется в редакторе скелета. Анимировать
сразу несколько объектов нельзя. Зато при таком выделении на линейке КК
высвечиваются ТОЛЬКО кадры выделенных объектов. Соответственно, их
можно копировать/перемещать/удалять, не затрагивая прочих объектов.

----------------------------------------------------------------------
Багфикс (1.38с):
I. ГЛЮКИ.
 В общем-то, суть багфикса как раз и состоит в их исправлении. Причем
исправлено их не так уж мало.
1. Исправлен глюк, связанный с выделением треугольников (раньше 
   вершины иногда выделялись даже при клике за пределами модели).
2. Исправлен глюк в редакторе скелета - при нажатии Del удалялся не
   только выделенный объект, но и выделенные вершины.
3. Теперь в редакторе скелета рабочие плоскости (XY, ZX, YZ) можно
   переключать и вручную.
4. Раньше в редакторе скелета при выборе инструмента "Двигать"
   обнулялись координаты выделенного объекта.
5. Ещё один глюк, связанный с выделением треугольников - теперь уже
   в редакторе текстурных карт.
6. Исправлен баг в конвертере WoW-моделей (M2/WMO). В 1.38 из-за
   этого бага было совершенно невозможно конвертировать модели.
7. Исправлен глюк, связанный с загрузкой/сохранением моделей. Теперь
   MdlVis уже не портит модели, обработанные W3ME.
8. Глюк с "горячими" клавишами: раньше при нажатии Del в поле
   координат (редактор скелета) удалялся выделенный объект.
9. Ещё один глюк с "горячими" клавишами. Раньше нажатие на клавишу "W" 
   приводило к выбору режима "Вращение" и одновременно - к слиянию
   выделенных вершин. Теперь инструменту "слить" присвоена новая 
   "горячая" клавиша - B (от "Burn").

II. Небольшие подчистки.
1. Теперь в диалоговом окне "Сохранить как..." по умолчанию стоит
   формат MDX (раньше был MDL, но на форуме указали, что MDX будет
   удобнее).
2. Подчистка 3D-движка MdlVis. Теперь текстуры фильтруются перед
   выводом, что обеспечивает плавные цветовые переходы (как в WarIII).
   Раньше цвета были более резкими и неровными, но скорость рендеринга
   была чуть выше.
3. Ещё одна подчистка движка. Раньше если вращать модель в редакторе
   анимок при включённом проигрывании анимации, она "подтормаживала".
   Теперь в этом случае анимация проигрывается без тормозов.
4. Чуть изменён алгоритм разворачивания окна MdlVis на весь экран -
   теперь рабочая область стремится использовать максимум пространства
   окна.

III. Нововведения.
 Их почти нет.
1. В редактор скелета добавлена возможность выделения сразу нескольких
   объектов. Чтобы включить новый режим, нужно установить переключатель
   "Групповой выбор", расположенный под координаными полями.
   После этого панель параметров объекта дополнится списком выделенных
   объектов, и вы сможете выделять НЕСКОЛЬКО ОБЪЕКТОВ ОДНОВРЕМЕННО.
   Это выделение осуществляется так же, как и выделение вершин (т.е.
   клик мышью с зажатыми клавишами Shift или Ctrl). Выделение рамкой на
   объекты НЕ ДЕЙСТВУЕТ и приводит только к выделению вершин.
   Двойной клик по имени объекта в списке выделенных объектов приводит
   к тому, что с этого объекта выделение снимается. Все выделенные
   объекты можно одновременно удалить (нажатием Del) или двигать с
   помощью стандартного инструмента "Двигать".
2. В режиме группового выбора доступен новый инструмент - "выделить
   дочерние объекты (E)". Он активен, если хоть у одного из выделенных
   объектов есть потомки (дочерние объекты). Клик по нему приводит к
   выделению всех их дочерних объектов (т.е. всего того, что в данный
   момент подсвечено жёлтым).
3. В меню "Создать" добавлена коменда "Клонировать объект (Ctrl+V)".
   Она приводит к созданию объекта, аналогичного выделенному. Будет
   создан объект того же типа, что и выделенный, с ТЕМИ ЖЕ 
   КООРДИНАТАМИ (!), с теми же параметрами и тем же родительским
   объектом.
   В общем, отличаться новый объект от исходного будет лишь именем 
   и тем, что к нему не крепится никаких вершин/контроллеров.

----------------------------------------------------------------------

Текущая "бажная" версия (1.38):

I. ГЛЮКИ.
 Их пока немного (активнее ищем, активнее!).
1. Исправлен глюк редактора текстур - при выделении текстурных вершин
   некоторых моделей иногда выделение сбрасывалось даже при нажатой
   клавише Shift.
2. Исправлен глюк, возникавший при удалении глобальных 
   последовательностей.
3. Раньше в редакторе анимок неправильно отображались нормали (N).
4. Исправлен глюк Спец. Вставки, возникавший при вставке нескольких
   поверхностей одновременно.
5. Исправлен глюк инструмента редактора скелета "Пересвязать". Раньше
   он запарывал модель и/или приводил к вылету MdlVis.
6. Раньше, если в MdlVis не была загружена модель, он вылетал при клике
   мышью по рабочей области. Этот глюк теперь тоже исправлен.
7. Небольшое исправление: теперь в редакторе скелета вершины 
   неактивных поверхностей не изображаются, даже если они связаны с
   выделенной костью.
8. Исправлен глюк воспроизведения анимации (на некоторых моделях
   анимация искажалась - например, у Blademaster'а неправильно
   двигался меч).

II. Нововведения.
 Их ещё меньше.
1. Добавлена возможность автоматической подгрузки текстур из MPQ-
  архивов Warcraft'а. В связи с этим теперь MdlVis ДЛЯ СВОЕЙ РАБОТЫ
  ТРЕБУЕТ НАЛИЧИЯ БИБЛИОТЕКИ storm.dll. ЕЁ НУЖНО СКОПИРОВАТЬ В ПАПКУ
  С MdlVis.exe. А ещё лучше - поместить сам MdlVis в папку с War'ом.
2. При запуске MdlVis в контекстное меню Проводника Windows 
   добавляется пункт "Открыть в MdlVis" (естественно, только для 
   MDL/MDX-файлов).
3. Добавлена возможность загрзки файлов по технологии Drag&Drop. Для
  этого нужно схватить файл модели в Проводнике Windows и "бросить"
  ярлычок в рабочую область MdlVis. При этом указанная модель
  загрузится.
4. При клике колёсиком мыши происходит включение/выключение режима
   поворота. А те, у кого нет колёсика (или оно не кликабельное),
   могут использовать для той же цели "горячую" клавишу W.
----------------------------------------------------------------------
Утёкшая версия (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.
И не забывайте сообщать мне о багах!
С уважением, Алексей.