translate it to english

Справка и учебник по работе с программой LODka 3D

    Оглавление

  1. Скачивание, установка, запуск
    1. Местонахождение самой новой версии программы
    2. Проверка выходили ли новые версии Что нового в них нового Что можно попробовать
    3. Проблемы возникающие при первом запуске программы
    4. Местонахождение предыдущих версий программы
    5. Замедление работы программы, ограничение FPS
    6. Как правильно сообщить об ошибке
  2. Основы работы с программой
    1. Флэш-уроки
    2. Быстрые клавиши
    3. Определение значения кнопок
    4. Значение терминов Mesh, Face, Texture Coords, Points, Tirangles
    5. Начало работы с новой моделью
    6. Очистка модели Отличия New ( Clear all ) и New model
    7. Устройство Undo
    8. Примитивы
    9. Просмотр сетки модели Отображение/сокрытие точек
    10. Установка фокуса камеры
    11. Вращение камеры Приближение/отдаление её
    12. Выделение (выбор) точек/треугольников/суставов скелета/физические тела и геометрии
    13. Добавление новых точек/треугольников
    14. Движение, вращение, масштабирование точек и треугольников
    15. Создание из точек поверхности ( модели )
    16. Объединение нескольких треугольников в один
    17. Как спрятать/показать основную ( левую ) панель
    18. Работа с прокси
  3. Работа с файлами и технические вопросы работы программы
    1. Добавление файла из истории к существующей модели
    2. Автоматическое создание копий при сохранении моделей
    3. Указание путей к папкам с текстурами
    4. Открытие файлов программой из командной строки
    5. Чтение текстовых данных из файлов типа *.LOD в загрузчике моделей для GLScene
    6. Изменение ( перерисовка ) картинок на кнопках
  4. Различные функции и опции программы
    1. Работа с нормалями треугольников
    2. Работа с группами сглаживания ( Smoothing Groups )
    3. Сглаживание модели или отключение сглаживания
    4. Чистка модели от лишних точек/текстурных координат
    5. Вырезание из модели дырок ( отрезание кусков ) примитивами
    6. Примитивы Текст ( Primitives->Text )
    7. Примитивы Геосферы ( Primitives->Geosphere )
    8. Примитивы Автоматическое создание LOD'а модели ( Primitives->LOD )
    9. Уменьшение числа полигонов модели через опцию Combine nearest points
    10. Удаление всех невидимых треугольников
    11. Масштабирование, смещение, поворот всех мешей одновременно ( всей модели )
    12. Уменьшение числа мешей в модели
    13. Работа со второй текстурой ( текстурой лайтмепа )
    14. Использование Цел-шейдеров ( CelShaders )
  5. Скелетная анимация
    1. Работа со скелетной анимацией, загрузка, сохранение
    2. Создание скелета и привязка точек к его костям
    3. Анимирование модели
    4. Назначение галочки Bones и окошка дополнительных параметров анимации
    5. Работа с развесовками костей
    6. Перемещенеие и копирование костей мышью
  6. Вершинная анимация
    1. Работа с вершинными анимациями
  7. Скрипты
    1. Скрипты создания примитивов
    2. Некоторые отличия реализации Паскаля в DelphiWebScripts от реализации в Delphi
    3. Функция скрипта Info
    4. Функция скрипта Main
  8. Физика
    1. Концепция и терминология редактора физики жёстких тел
    2. Описание редактора физики жёстких тел
  9. Форматы файлов
    1. The Longest Journey
    2. Enter The Matrix
    3. 3D Studion *.3DS
    4. Quake I *.MDL
    5. Quake II *.MD2
    6. Quake III *.MD3
  10. Описание кнопок
    1. Описание кнопок окна редактора
    2. Описание кнопок Model->Meshs
    3. Описание кнопок Model->Points
    4. Описание кнопок Model->Texture coord
    5. Описание кнопок Model->Rect
    6. Описание кнопок Model->Face
    7. Описание кнопок Model->Triangles
    8. Описание кнопок Material
    9. Описание кнопок Actor->Bones
    10. Описание кнопок Actor->Animations
    11. Описание кнопок Actor->Animations->Frames
    12. Описание кнопок Physics->Body&Geoms
    13. Описание кнопок Physics->Joints
    14. Описание кнопок окна редактора групп сглаживания Smooth groups
    15. Описание кнопок окна редактора световых схем Light schemes
    16. Описание кнопок окна генератора карт освещённости LightMap generator
  11. Разное
    1. ЛОДка не резиновая
    2. Язык программы
    3. О копирайтах на программу LODka3D и формат *.lod файлов
  1. Скачивание, установка, запуск

      Это технический раздел на случай если что-то не запускается, не так работает или ещё какие-то проблемы. Если всё нормально, то лучше не тратить на него время и переходить сразу к следующему разделу Основы работы с программой

    1. Местонахождение самой новой версии программы

      Самая новая версия программы всегда лежит по ссылке http://lodka3d.narod.ru/lodka3d-setup.exe в виде самораспаковывающегося rar-архива.

    2. Проверка выходили ли новые версии Что в них нового Что можно попробовать

    3. На главной странице сайта есть раздел "Новости". Туда пишется инофрмация обо всех новых версиях и новых возможностях которые появляются у программы.

      Узнать какая версия программы у вас установлена, можно в пункте меню Menu->About.

    4. Проблемы возникающие при первом запуске программы

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

      Если драйверы новые, то надо попробовать запустить программу с параметром '/savemode', это режим в котором она ведёт лог своих действий, каждый раз записывая в файл 'log.txt', что она сделала. Это текстовый файл, который помещается в папку с программой. Его можно посмотреть самому в блокноте, или послать автору программы, чтобы он попытался найти проблему.

      Если на закладке Model видны не все кнопочки, то надо изменить размер панели с ними, до их появления.

      Если на закладке Primitives невидна кнопка Create, то надо увеличить размер окна программы по вертикали.

    5. Местонахождение предыдущих версий программы

      На главной странице сайта в разделе новости есть ссылки почти на все выходившие ранее версии программы.

    6. Замедление работы программы, ограничение FPS

      В настройках вызываемых клавишей F11 на закладке All есть пункт Max FPS который позволяет поставить максимально допустимое число кадров в секунду если видеокарта слишком греется можно понизить этот параметр. Однако если он будет слишком низким, то камера может начать двигаться не плавно, а скачками.

    7. Как правильно сообщить об ошибке

      Допустим не открывается или не сохраняется какая-то модель, вместо этого выдаётся какое-либо сообщение об ошибке на экран. Либо модель открывается и сохраняется, но с ошибкой. Например, без текстур. Или просто после какого-то действия в программе возникает ошибка. Что в такой ситуации можно сделать?

      • Если выдаётся сообщение, попытаться понять это сообщение. Возможно это что-то типа "Файл не найден.", и тогда такую проблему можно попытаться решить своими силами.
      • При проблемах с загрузкой или сохранением, следует почитать раздел справки форматы файлов. Возможно там можно найти решение, например, слишком длинное имя текстуры или слишком много вершин и т. п.
      • Если это ошибка сохранения файла, то можно попытаться её локализовать, например, постепенно удалять меши и фэйс-группы, и пытаться сохранить. Возможно таким образом удастся выяснить, какой именно меш или какая именно фэйс-группа вызывает проблему.
      • В случае некоторых ошибок особенно появляющихся циклически, иногда помогает сделать Undo.
      • Можно прислать автору программы модель которая не открывается, или ссылку на такую модель, если она большая. Если же модель удаётся сохранить, например, в формате LOD, но не удаётся сохранить в каком-либо другом формате, то нужно прислать модель в формате LOD.
      • Также можно зайти в раздел статистики в меню Options->Show statistic возможно там можно будет найти что не так с моделью, скажем отрицательные числа в количестве каких-то элементов или наоборот слишком огромные, возможно включён прокси у того меша, у которого его быть не должно или наоборот. Если есть что-то подозрительное можно скопировать статистику и прислать автору.
      • Если сообщение об ошибке возникает после какого-то действия, то надо сообщить, что это было за действие, и какие действия ему предшествовали. Их можно посмотреть в пунктах меню Undo и Redo. Лучший вариант, когда последовательность действий описывается с момент запуска ЛОДки или с момента загрузки проблемной модели.

      Обязательно указывайте версию программы! Лучше всего, чтобы она была самой новой, так как возможно, там эта ошибка уже исправлена.

  2. Основы работы с программой

    1. Флеш-уроки

      Посмотреть флеш-уроки, повторяя то, что там делается, - это наверное самый простой способ освоить азы работы с программой.

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

      Уроки расположены по адресу: http://lodka3d.narod.ru/flashlessons/index.html.

    2. Быстрые клавиши

      Далее:
      LMB - клик левой кнопкой мыши ( left mouse button ).
      RMB - клик правой кнопкой мыши ( rigth mouse button ).
      CMB - клик средней кнопкой мыши ( center mouse button ).

      Mouse Wheel - приблизить/удалить камеру.
      LMB - вращать камеру.
      LMB+Shift - выделить точку или треугольник. Можно выделять области.
      RMB+Shift - снять выделение с точки или треугольника. Можно выделять области.
      CMB+Shift - выделить всё/снять выделение со всего.
      CMB - установить фокус камеры.
      LMB+Ctrl - двигать выделенные точки мышью.
      СMB+Ctrl - масштабировать выделенные точки мышью.
      RMB+Ctrl - вращать выделенные точки мышью.
      F1 - переключать режим точек и режим треугольников.
      F2 - работаем только с видимыми точками и треугольниками, или со всеми насквозь.
      F3 включён - Shift+LMB - режим установки точек.
      F3 включён - Shift+RMB - разделить треугольник в точке клика.
      F3 включён - Shift+Ctrl+LMB - разделить треугольник по ближайшей к точке клика грани.
      F4 - включить/выключить редактор текстуры.
      F5 - показать/спрятать сетку текущего меша.
      F5+Shift - показать/спрятать сетку всей модели.
      F6 - спрятать/показать точки.
      F8 - поставить точку возврата ( Undo ) в ручную.
      Escape+Shift - спрятать/показать основную панель.
      Ctrl+Z - возврат на одно действие ( Undo ).
      Ctrl+Alt+Z - повтор ( Redo ).
      Ctrl+N - новая модель.
      Ctrl+O - открыть файл.
      Ctrl+Alt+O - добавить из файла.
      Ctrl+S - сохранить в файл.
      Ctrl+1, Ctrl+2, Ctrl+3 - блокировать перемещение точек по осям X, Y, Z соотвeтcтвенно.
      Shift+1, Shift+2, Shift+3 - выбрать одну из осей вращения X, Y, Z вокруг которых можно вращать точки мышью.

      В редакторе текстуры:

      LMB, CMB - двигать текстуру.
      LMB+Shift - выделить текстурную координату. Можно выделять области.
      RMB+Shift - снять выделение с текстурной координаты. Можно выделять области.
      CMB+Shift ( клик ) - выделить всё/снять выделение со всех текстурных координат.
      LMB+Ctrl - двигать выделенные текстурные координаты мышью.
      СMB+Ctrl - масштабировать выделенные текстурные координаты мышью.
      RMB+Ctrl - вращать выделенные текстурные координаты мышью.
      LMB на рамке - двигать этот край рамки.
      CMB на рамке - двигать всю рамку.
      CMB+Shift ( двигать ) - выделить новую область рамки.
      Mouse Wheel - приблизить/удалить камеру.
      F3 включён - LMB - рисовать на текстуре цветом выбранным на закладке материалов, кнопкокой Select color.
      F3 включён - RMB - пипетка. Получить цвет текстуры в точке клика.

    3. В списках элементов

      F2 - переименования элемента, если он имеет имя.
      CMB - установить фокус камеры на этот элемент.

      В окошках редактирования вещественных чисел:

      Mouse Wheel - увеличить уменьшить на 1 .
      Mouse Wheel +Shift - увеличить уменьшить на 10 .
      Mouse Wheel +Ctrl - увеличить уменьшить на 0.1 .
      Mouse Wheel +Ctrl +Shift - увеличить уменьшить на 0.01 .
      Mouse Wheel +Alt - увеличить уменьшить на 0.001 .
      Mouse Wheel +Alt +Shift - увеличить уменьшить на 0.0001 .

    4. Определение значения кнопок

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

    5. Значение терминов Mesh, Face, Texture Coords, Points, Tirangles

      Mesh ( меш ) - модель. Отдельная полноценная модель. Мешей в файле может быть много. Например, один меш - нормальная машина, вторая - чуть чуть разбитая, третья - сильно разбитая, и т. д. Таким образом переключая в игре меши, можно быстро менять вид машины.

      Points ( поинты ) - точки из которых состоит меш. Каждый меш содержит свой набор точек.

      Texture Coords - текстурные координаты. Каждый меш содержит свой набор текстурных координат. Служат для отекстуривания модели.

      Face или Face group ( фэйс или фэйсгруппа ) - Один элемент меша. Содержит набор треугольников Tirangles и имеет свою текстуру.

    6. Tirangles - треугольники. Каждый треугольник состоит из ссылок на три точки в Points и на три текстурные координаты, которые таким образом и образуют отекстуренный треугольник. Таким образом каждая точка может участвовать в нескольких треугольниках, что гарантирует отсутствие дырок.

    7. Начало работы с новой моделью

      Создаём новый объект. File->New ( Clear all ). При этом всё что есть очищается.

      Далее нужно создать один меш Model->Mesh->Add, и выбрать его кликом мыши.

      А также создать в нём один фэйс. Model->Face->Add и также выбрать его.

      Теперь можно добавлять точки, текстурные координаты и треугольники.

      Чтобы каждый раз не делать всё вышеперечисленное можно воспользоваться опцией File->New model

      Помимо создание меша и фэйса ещё также полезно создать хотя бы один материал. Material->New, и выбрать его в созданном фэйсе Model->Face->Select material. Тогда к этому фэйсу будет применяться именно этот материал.

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

      Подобным вышеописанному образом можно создавать и другие фейсы, меши, материалы.

    8. Очистка модели Отличия New ( Clear all ) и New model

      Модель очищается пунктами меню New ( Clear all ) и New model.

      New ( Clear all ) - очищает все структуры программы, удаляет все меши со всеми фэйс-группами, скелет и физику, из материалов оставляет один, а New model - очищает только модель, удаляя все меши, и создавая один Меш, с одной фэйс-группой и если нет ни одного материала, то создаёт и его, таким образом выполняя рутину перед началом работы. Скелет и физика при этом не удаляются. Чтобы быстро удалить физику и скелет нужно выбрать в них Root'ы и нажать на кнопку Delete. Чтобы быстро очистить материалы нужно нажать на кнопку Materials->Delete удерживая клавишу Ctrl, тогда все не используемые материалы будут удалены.

    9. Устройство Undo

      Undo и Redo - это возможность двигаться по истории создания модели на шаг назад или вперёд. Работает примерно как и в других программах. Выполняется нажатиями клавиш Ctrl+Z и Ctrl+Alt+Z соответственно. Либо через меню Menu->Edit->Undo и Menu->Edit->Redo.

      Undo не работает с физикой и материалами, но для материалов есть небольшая замена Undo, со скелетами работает частично, а с моделями должен всегда.

      Возможно иногда Undo может не работать при некоторых перемещениях точек мышью или через окошки. Это недоработка. Просто хорошее, не тормозящее Undo сделать сложно. На всякий случай принудительно сохранить Undo можно кнопкой в панели над редактором или клавишей F8.

      Частично заменить Undo при работе с текстурами материалов можно путём копирования текстуры в буфер обмена. Для того, чтобы потом можно было вставить её обратно.

    10. Примитивы

      Примитивы - это некие элементарные объекты типа куб, шар, цилиндр, но есть и более сложные типа лестница или звёздочка. С них удобно начинать моделирование чего либо.

      Примитивы находятся на закладке Primitives. Они генерируются программой на лету по заданным параметрам. Общие для всех параметры - это положение Primitives->Options->Position, масштаб Primitives->Options->Scale и ротация Primitives->Options->Rotation. Ротация задаётся углами Эйлера. То есть поворот вокруг оси X, потом поворот вокруг оси Y, потом поворот вокруг оси Z. Последовательность поворотов должна быть именно такой, потому, что иначе может получиться другое положение. У окошка задания положения есть всплывающее меню, через которое можно задать положение фокуса камеры, или вставить положение из буфера обмена.

      Чтобы посмотреть в каком положении окажется сгенерированный объект нужно поставить галочку Primitives->Preview, и тогда появится трёхцветный куб. Красная его грань направлена вдоль оси X, синяя вдоль Y и зелёная вдоль Z. Меняя положение, ротацию и масштаб, мы меняем положение, ротацию и масштаб куба, и таким образом можем видеть в какой позиции будет сгенерирован примитив, после нажатия на кнопку Primitives->Create.

      Если в списке типов примитивов Primitives->Type выбран какой-то объект, то он появится в центре куба, в случае, если это возможно.

      Чтоб выделить точки/треугольники создаваемых примитивов нужно поставить галочки на опции Primitives->Options->Select Points и Primitives->Options->Select Triangles, соответственно.

      Помимо основных параметров примитивов есть и дополнительные. Они показываются в зависимости от того какой примитив выбран в Primitives->Type.

      Если вам не понравился созданный примитив, можно отменить его создание через Undo, нажав Ctrl+Z и сделать какой-нибудь другой.

      Если у вас есть интересные алгоритмы генерации примитивов можете мне их прислать, и я попробую их вставить. Язык программирования - Паскаль. Если вы считаете, что программе не хватает какого-то очень важного примитива - пишите, подумаем.

    11. Просмотр сетки модели Отображение/сокрытие точек

      Для просмотра сетки модели можно нажать на нопку F5 или сделать это через меню Edit->View model as lines. В результате текущий меш будет показан в виде сетки. Если надо, чтобы не текущий, а все меши показались в виде сетки, нужно нажать F5+Shift.

      Чтобы выйти из режима показа сетки, нужно ещё раз нажать F5 или F5+Shift.

      Если надо спрятать выделенные точки, чтобы визуально оценить модель или по другим причинам, можно воспользоваться кнопкой F6.

    12. Установка фокуса камеры

      Фокус камеры - это точка, на которую камера смотрит.

      Фокус камеры нужен не только для удобства просмотра, но и на него можно поставить точку относительно которой можно вращать и масштабировать точки User point. А также его положение можно вставлять в Primitives->Position, через всплывающее меню.

      Ставить фокус можно :

      1. Кликнув средней кнопки мыши на модель. В точке клика и будет установлен фокус камеры.
      2. Кликнув средней кнопкой мыши на какой-нибудь элемент в списках точек, треугольников или костей скелета. Если кликнули на треугольник, то фокус камеры будет установлен на его центр.
      3. Кликнув средней кнопки мыши на какой-нибудь элемент в списке мешей или списке Фэйсов. Тогда будет вычислен геометрический центр меша или фэйса, и фокус будет установлен на него.
      4. Menu->Options->Camera focus. Тут все настройки.
      5. Всплывающее меню в Mesh->All->Point.

    13. Вращение камеры Приближение/отдаление её

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

      Приближение/отдаление камеры осуществляется вращением колеса мыши. При этом фокус должен быть на экране, а не на каком нибудь окошке. Фокус на экран устанавливается путём кликом по нему.

    14. Выделение (выбор) точек/треугольников/суставов скелета/физические тела и геометрии

      1. Их можно выбрать помечая в соответствующих списках Points, Face, Joints, Body&Geoms. Точки и треугольники можно выделять независимо друг от друга, но есть возможность по выделенным треугольникам выделять точки, и наоборот ( см. описание кнопок ).
      2. Их можно выбрать помечая на экране мышью. Что в данном случае включено ( треугольники или точки ) видно по двум кнопочкам над окном редактора. На одной изображены точки, на другой треугольники. Если нажимать быструю клавишу F1, они будут переключаться.
        Справа от этих кнопок находится кнопочка с изображением камеры смотрящей на точки и треугольники. Она переключается клавишей F2. Если эта опция включена, то мы можем выделять на экране только видимые точки/треугольники, а если отключена, то все насквозь.
        Выделять можно следующими способами:
        1. Shift + Левая кнопка мыши - выделяет точки/треульники попавшие в выделенную область. При этом на точки/треугольники не попавшие в выделенную область это никак не влияет.
          Вместо выделения области можно просто кликать по нужным точкам/треугольникам.
        2. Shift + Правая кнопка мыши - снимает выделение с точек/треугольников попавших в выделенную область. При этом на точки/треугольники не попавшие в выделенную область это никак не влияет.
          Вместо выделения области можно просто кликать по нужным точкам/треугольникам.
        3. Shift + Средняя кнопка мыши или нажатие на ролик - это Select/Deselect. То есть, если есть хотя бы одна выделенная точка/треугольник, то выделение со всех точек/треугольников снимается. Если нет ни одной выделенной, то выделяются все.
          Таким образом можно довольно просто снимать выделения.
      3. Через кнопки рядом со списками точек и треугольников.
        1. Deselect/Select All - выделить/снять выделение со всех точек/треугольников.
        2. Inverse selection - инвертировать выделение.
        3. Select triangles with 1 or more selected points - выделить те треугольники, у которых есть хотя бы одна помеченная точка.
        4. Select triangles with exactly 3 selected points - выделить те треугольники, у которых помечены все три точки.
        5. Select points of selected tirangles - выделить те точки, которые присутствуют в выделенных треугольниках.
      4. Если включён редактор скелета или физической модели, то Shift + Левая кнопка мыши в режиме треугольников выделяет не треугольники ( так как они в этих редакторах не нужны ), а суставы скелета ( joints, bones ), или геометрии физической модели соответственно.

    15. Добавление новых точек/треугольников

      Добавление новых точек/треугольников можно осуществить

      1. Мышью можно ставить точки на уже имеющуюся модель, а также разделять её треугольники и грани кликами по ним.

        Если модели никакой нет, то проще всего начать с создания примитивной плоскости размером 2 на 2 и использовать её как холст.
        Primitives->Type->Plane.
        Primitives->Type->Parts1 - 2
        Primitives->Type->Parts2 - 2
        Primitives->Type->Create

        Включаем режим добавления точек/треугольников кнопкой F3. И удерживая кнопку Shift начинаем кликать мышью по созданной плоскости левой кнопкой мыши. В точках клика начинают появляться точки.

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

        Если же кликать левой кнопкой мыши удерживая Shift и Ctrl одновременно, то будет найдена ближайшая к точке клика грань, после чего она будет разделена в точке ближайшей к точке клика. Отекстуренность при этом также сохранится.

        Таким образом если где-то в модели не хватает полигонов, то их можно довольно легко добавить, без необходимости переотекстуривать модель.

      2. Кнопкой Clone можно клонировать сразу все выделенные точки. Новые точки после этого помечаются, а со старых пометка снимается. После рекомендуется сместить клонированные точки на новые позиции, чтобы они не сливались с их предками.

      3. Кнопкой Model->Points->Insert тоже можно вставлять точки вводя их координаты от руки.

      4. Кнопками деления треугольников Model->Triangles->Subdivide each of selected triangles to 3 parts и Model->Triangles->Subdivide each of selected triangles to 4 parts можно разделить один выбранный треугольник на 3 и 4 соответственно. Деление происходит ровно по центру треугольника или по центру его граней. Кнопкой Model->Triangles->Subdivide 2 selected triangles to 4 triangles можно разделить два выбранных СМЕЖНЫХ треугольника на 4 части по центру смежной грани. Иногда бывает так, что треугольники только кажутся смежными, а на деле их точки не совпадают. Тогда можно воспользоваться опцией Model->Points->Snap selected points together, которая позволяет объединить выбранные точки в одну. Либо опцией Model->Points->Combine nearest points, которая позволяет объединить близлежащие точки.

    16. Движение, вращение, масштабирование точек и треугольников

      Все операции с треугольниками проводятся только через точки из которых они состоят. Снимаем выделение со всех точек. Model->Points-Deselect. Выделяем точки только выделенных треугольников Model->Triangles->Select points of selected tirangles. И двигаем/вращаем/масштабируем их как угодно, треугольники будут изменяться в соответствии с перемещениями точек.

      Манипуляции над группами выделенных точек производятся в окошке Model->Points->All. Ставим на него мышь и вращаем её ролик ( либо нажимаем кнопки Up или Down ). При вращении точки будут соответственно двигаться/вращаться/масштабироваться. Совместно с вращением колеса мыши можно использовать клавиши :
      1. Без клавиш - перемещение происходит на одну условную единицу длины, вращение осуществляется на один градус, а масштабирование в 1.09 раза.
      2. Shift - приводит к более сильному воздействию. В 10 раз для масштабирования и вращения.
      3. Ctrl - приводит к более слабому воздействию. В 0.1 раза для масштабирования и вращения.
      4. Shift+Ctrl - приводит к ещё более слабому воздействию. В 0.01 раза для масштабирования и вращения.

    17. Также можно двигать и вращать точки мышью с помощь клавиши Ctrl.
      1. Ctrl+Левая кнопка мыши - позволяет двигать точки мыши в плоскости камеры. Ограничить передвижение точек какими либо осями можно через Model->Mesh->Poins->Mouse->Block mouse move by. Здесь можно выбрать по каким осям заблокировать перемещение точек. А именно по осям X, Y, Z, XY, XZ и YZ.
      2. Ctrl+Правая кнопка мыши - позволяет вращать точки мыши в одной из трёх плоскостей X Y Z. Задать в какой плоскости вращать точки можно через Model->Mesh->Poins->Mouse->mouse rotate by. Здесь выбор из трёх осей X Y Z. Также переключать эти оси можно быстрыми клавишами Ctrl+1 для X, Ctrl+2 для Y и Ctrl+3 для Z.

    18. Создание из точек поверхности ( модели )

      Выделяем нужные точки.

      Чтобы сработал алгоритм преобразования все выделенные точки должны иметь возможность быть проецируемыми не перекрывая друг друга на одну из плоскостей X, Y, Z или плоскость камеры. Плоскость камеры - это наверное самый наглядный вариант. Так как её можно всегда повернуть так, чтобы точки правильно смотрелись.

      Жмём на Model->Points->Delaunay . Программа спросит на какую плоскость проецировать. Если ошибочно будет выбрана не правильная плоскость, то можно будет нажать Undo, и выбрать другую. Если ошибки нет, то по выбранных точкам будет создана плоскость. Иногда, но редко, алгоритм работает не точно, и либо оставляет дыры, либо создаёт лишние треугольники. Поэтому для проверки рекомендуется нажать F5 и посмотреть на скелет созданных треугольников.

    19. Объединение нескольких треугольников в один

      Выделяем несколько треугольников. Жмём на Model->Triangles->Join triangles. И треугольники соберутся в один.

      НО эта опция позволяет точно объединить только несколько соприкасающихся треугольников. Например такие как разделённые через опции Model->Triangles->Subdivide each of selected triangles to 3 parts и Model->Triangles->Subdivide each of selected triangles to 4 parts. Либо два треугольника с общей гранью. Конечно, далеко не каждые два треугольника можно объединить так, чтобы при этом не образовались дыры в модели. Но это уже лежит на совести модельера.

      Если обьединяемых треугольников много и/или они не соприкасаются или по каким то другим причинам их сложно объединить, то программа на их основании пытается создать плоскость из двух треугольников. Это может сильно помочь, когда надо уменьшить количество полигонов модели. Правда, не всегда получается именно такая плоскость какая хотелось бы, но тогда можно попробовать уменьшить количество объединяемых треугольников, и повторить попытку.

    20. Как спрятать/показать основную ( левую ) панель

      Основная ( левая ) панель, убирается или показывается нажатием клавиш Shift+Escape.

    21. Работа с прокси

      Прокси - это древовидный список элементов, каждый из которых имеет матрицу ( позицию, ротацию, масштаб ), некоторые параметры и меш-источник, данные которого этот прокси отрисовывает.

      Смысл прокси в более простом отображении уже созданных мешей в новых позициях и с новыми параметрами. Удобен когда необходимо отображать много однотипных объектов. Например, фонарные столбы на улице, стулья в комнате, ящики, на каком-нибудь складе, колонны здания в стиле классицизм или ампир, окна, двери, и т. д. и т. п.

      Всё это можно сделать и без прокси. Просто клонировать меш, и поставить его в новую позицию. Но что делать, если потом понадобиться этот меш изменить? Переделывать каждый фонарный столб индивидуально? Это долго.

      Проще сделать один меш с фонарным столбом и отобразить его через прокси во всех нужных позициях. А если потом этот меш изменить, то он изменится и во всех прокси, которые его отображают.

      Прокси создаются там же где и меши. Mesh->Insert. На вопрос что создавать нужно ответить Proxy. При выборе созданного элемента в списке мешей ( после создания, он выбирается автоматически ), появится древовидный список с элементом Root, к которому можно цеплять элементы прокси. Нажмём на кнопку Clone, чтобы создать один.

      При выборе этого созданного элемента появятся его параметры. Source mesh - целевой меш, Visible - видимость. Postion позиция, Rotation - ротация, Scale - масштаб.

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

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

      Преобразовать прокси в меш, можно нажатием на кнопку Mehs->Insert, удерживая клавишу Shift.

      К преимуществам прокси можно отнести малый размер файлов, при сохранении в формат ЛОДки. При экспорте же моделей в другие форматы, прокси нужно сперва преобразовать в меш.

  3. Работа с файлами и технические вопросы работы программы

    1. Добавление файла из истории к существующей модели

      Чтобы не открыть, а добавить файл из истории Menu->File->History к существующей модели, надо при выборе файла в меню History, удерживать нажатой клавишу Shift.

    2. Автоматическое создание копий при сохранении моделей

      Включается опцией : Save options ->LOD make backup. Когда она включена, то при сохранении модели в файл, если такой файл уже существует, то он не будет затёрт, а будет переименован с добавлением в конец номера. Например, файл temp.lod будет переименован в temp[001].lod. Если же такой файл уже есть, то в temp[002].lod и т. д. Таким образом ничего не стирается, и в случае ошибки, или глюка в программе можно легко вернуться к предыдущей модели.

      Это удобно тем, что в меню сохранения Menu->Save as ..., не надо каждый раз от руки вводить новое имя файла, а можно сразу нажимать на кнопку Сохранить ( на запрос подтверждения - смело отвечать положительно ) , а переименовываться они будут самостоятельно.

      Рекомендуется сохраняться почаще.

    3. Указание путей к папкам с текстурами

      Программы можно указать папки, в которых она будет искать текстуры для загружаемых моделей, и подгружать их автоматически.

      Пути к папкам с текстурами указываются через пункт меню Menu->File->Texture paths ....

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

      Далее нужно поместить путь в список. Это можно сделать кнопками Add ( добавить в конец списка ) или Replace ( заменить выбранный элемент списка на указанный путь ). В случае, если была допущена ошибка, то можно нажать на Delete, чтобы удалить ненужный элемент и повторить снова.

      Если был введён несуществующий путь, или ранее существовавший путь пропал, например, отключили диск на который он вёл, то такой путь в списке будет подсвечен серым цветом. Чтобы удалить все такие пути можно нажать на кнопку Delete invalid paths, заодно эта кнопка удаляет и дублирующиеся пути.

      После введения всех путей важно расположить их в правильном порядке. То есть сначала будет вестись поиск текстуры в папке в которой находилась загружаемая модель. Если там нет, то в папке с первом путём из списка, потом со вторым, потом с третьим и т. д. Чтобы расположить пути в нужном порядке можно воспользоваться стрелками в правой части окна. Одна двигает выделенную текстуру вверх, другая вниз.

      После редактирования путей к текстурам нужно нажать на кнопку OK, чтобы сохранить результаты редактирования или Cancel, чтобы не сохранять.

      В программе в файле lodka3d.ini пути хранятся в одной строке отделённые друг от друга символом ';'. Также как в GLScene.

    4. Открытие файлов программой из командной строки

      Чтобы загрузить модель из командной строки, нужно указать её имя после названия программы. Например: lodka3d.exe C:\myfile.lod

    5. Чтение текстовых данных из файлов типа *.LOD в загрузчике моделей для GLScene

      После загрузки модели текст можно считать из переменной LODFileTextInfo типа string. Записать в редакторе текст можно в Menu->Save options->LOD edit info.

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

    6. Изменение ( перерисовка ) картинок на кнопках

      Для этого надо загрузить файл примера : icons01.bmp . Это файл с картинками программы. Перерисовать в нём картинки, сохранить под именем icons.bmp, и положить в папку программы. Тогда при следующем запуске программа найдёт и загрузит картинки из этого файла.

      При рисовании надо учитывать, что размер каждой картинки должен быть строго 24х24. А размер общей картинки должен быть кратен 24 по горизонтали и вертикали. Также картинок не должно быть меньше, чем в исходном файле.

      Цвет фона задаётся цветом самой нижней левой точки.

  4. Различные функции и опции программы

    1. Работа с нормалями треугольников

      Для работы с нормалям треугольников есть две функции.

      1. Model->Triangles->Invert normals - переворачивает нормали выбранных треугольников в обратную сторону.
      2. Model->Triangles->Rotate normals to camera - поворачивает нормали выбранных треугольников на камеру.
      При использовании опции Model->Points->Create triangles from selected points нормаль всегда поворачивается на камеру. Тоже самое происходит при использовании некоторых других опций.

    2. Работа с группами сглаживания ( Smoothing Groups )

      Чтобы видеть группы сглаживание освещение должно быть включено в меню Edit->Lighting, а опция Options->Flat shaded должна быть отключена.

      Показать панель с группами сглаживания можно кликнув на кнопку Model->Trianlges->Smoothing groups panel ....

      Вверху панели можно выбрать одно из четырёх действий которое можно осуществить над группами сглаживания. Это Select - помечать треугольники ассоциированные с группой сглаживания. Deselect - снять пометки с треугольников ассоциированных с группами сглаживания. Assign - ассоциировать выбранные треугольники с группой сглаживания. Unassign - отключить ассоциирование выбранных треугольников с группой сглаживания.

      Чуть ниже находятся кнопки с цифрами - это группы сглаживания. Их 32, по числу битов в числе типа Integer. 32 бита - 32 группы сглаживания. По одной группе на бит. Нажав на одну из кнопок осуществляется выбранное выше действие с соответствующей группой.

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

      Кнопка Select used позволяет пометить звёздочкой группы сглаживания задействованные в меше. А в их всплывающих подсказках выводится число треугольников которые в них участвуют. Это нужно только для информации,

      Кнопка Autosmooth позволяет автоматически распределить треугольники по группам сглаживания, в зависимости от углов между их нормалями. Чем меньше этот угол - тем больше будет групп.


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

      Благодаря этому модель получается со сглаженными краями.

      Чтобы проассоциировать выбранные треугольники с какой-либо группой сглаживания, нужно выбрать действие Assign, и нажать на кнопку соответствующую этой группе сглаживания. Чтобы отключить ассоциирование выбранных треугольников с группой надо выбрать действия Unassign, и нажать на кнопку соответствующую этой группе сглаживания.

      Если проассоциировать Assign треугольники с группой Empty ( то есть отключить сглаживание ), то для каждого такого треугольника будет вычисляться индивидуальная нормаль. Это аналогично включению опции меню Options->Flat shaded.

      Для примеру, создадим цилиндр Primitives->Cylinder->Create. Откроем панель работы с группами сглаживания Model->Trianlges->Smoothing groups panel. И нажмём на кнопку Select used. При этом кнопки с цифрами 1, 2 и 3 станут помеченными звёздочкой. Это означает, что у нас задействовано три группы сглаживания. По одной для верхней боковой и нижней поверхностей. Благодаря этому боковая поверхность выглядит сглаженной ( без углов ), а между ней, верхней и нижней поверхностью видна жёсткая грань.

      А теперь попробуем отключить группы сглаживания. Для этого выделяем все треугольники. Выбираем в панели групп сглаживания действие Assign и нажимаем на кнопку Empty. Боковая поверхность из гладкой стала гранёной.

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

      Каждый треугольник может участвовать в нескольких группах сглаживания. Благодаря этому можно сглаживать грани между выбранными группами сглаживания.

      Для примеру опять создадим цилиндр Primitives->Cylinder->Create. Выберем на его вершине один из треугольников. И проассоциируем его со второй ( то есть боковой ), группой сглаживания. Model->Trianlges->Smoothing groups panel, Assign, 2. При этом треугольник станет участвовать сразу в двух группах сглаживания, верхней ( первой ) и боковой ( второй ). А грань между боковой поверхностью и верхней в этом месте сотрётся.

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


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

      Другой вопрос, почему иногда группы сглаживания не создаются совсем, например, при использовании опции Autosmooth для куба. Группы сглаживания не создаются, если все треугольники такой группы лежат в одной плоскости. Потому, что все нормали тогда будут идти перпендикулярно этой плоскости, а это тоже самое, что не определять группу сглаживания вообще. При желании, можно самому определить таким треугольникам какую-нибудь группу сглаживания, и лично убедиться, что разницы не будет никакой.

      Для примера, куб состоит из 12 треугольников лежащих парами в 6 плоскостях. В принципе это можно считать как 6 групп сглаживания по два треугольника в каждой. Но поскольку каждая пара треугольников лежит в одной плоскости, то есть имеет одну общую нормаль, то им можно определить нулевую Empty группу сглаживания. И внешне это будет выглядеть точно также.

    3. Сглаживание модели или отключение сглаживания

      За отключение сглаживания отвечает пункт меню Options->Flat shaded. Если его включить, то группы сглаживания не будут учитываться, и для всех треугольников будут вычислены индивидуальные нормали.

      При сохранении модели, при включённой опции File->Save options->LOD Save normals нормали сохраняются в том виде, в котором они в данный момент времени видны. Если нормали не сохранялись, то при загрузке в GLScene они будут сгенерированы без сглаживания ( так, что будут видны отдельные треугольники ).

      Если нормали сохраняются, то размер файла получается больше , а если не сохраняются, а генерируются на лету, то это немного замедляет загрузку.

    4. Чистка модели от лишних точек/текстурных координат

      Иногда координаты некоторых точек практически совпадают, и тогда их можно объединить в одну. Это делается опцией : Model->Points->Combine nearest points. Программа спросит, на каком расстоянии друг от друга должны находиться точки, чтобы их считать совпадающими. С этой опцией надо быть осторожным, чтобы не слить случайно те точки, которые реально должны быть на небольшом расстоянии друг от друга.

      После объединения точек, программа не удаляет лишние точки, для этого служит опция Model->Points->Delete unused points. Она удаляет все незадействованные точки.

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

    5. Вырезание из модели дырок ( отрезание кусков ) примитивами

      Внизу на закладке Primitive, рядом с кнопкой Create есть ещё кнопка Cut, она предназначена не для создания примитива, а для использования выбранного примитива как резательного инструмента, который может отрезать от модели часть или просто разделить её треугольники своей поверхностью.

      Режимов работы этой опции три. Окошко с ними находится под кнопкой Cut, они значат:

      1. cut in - отрезать то, что находится внутри примитива.
      2. cut out - отрезать то, что находится снаружи примитива, и оставить то, что внутри.
      3. cut in - только разрезать модель поверхностью примитива, ничего при этом не удаляя.
    6. При работе опции отекстуренность модели сохраняется. Применяется резательный инструмент только к выбранной фэйс-группе.

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

      Также некоторые треугольники иногда или не разрезаются или разрезаются с ошибками. Это недоработка.

      В качестве примера использования опции можно создать куб с настройками по-умолчанию ( кнопочка Default, которая находится над Cut ). Нажимаем на Primitive->Create. Появляется куб. Далее ставим примитиву позицию в (0.5, 0.5, 0.5), выбираем режим обрезания cut in, и нажимаем на кнопку Cut. В результате из куба вырезается восьмушка, маленький уголок. Так эта опция и работает.

      Полезна при прорезании в моделях окон, дверей, вырезании дыр и т. д и т. п. Особенно полезна, когда от обрезания требуется точность.

      После работы опции часто образуется много треугольников, которые можно объединить воедино. Для этого, сначала объединяем совпадающие точки через опцию Model->Points->Combine nearest points ( в случае с кубом, объединяются 6 точек ), потом выделяем все треугольники и нажимаем на кнопку Model->Triangles->Joint triangles, удерживая клавишу Shift, объединяются 3 треугольника. Лишние точки можно удалить через опцию Model->Points->Delete unused points. В результате 13 точек удалено.

    7. Примитивы Текст ( Primitives->Text )

      Внимание ! Эта очень полезная опция зависит от вашей видеокарты и драйверов, поэтому может функционировать не правильно. Работает конкретно через функцию glFeedbackBuffer OpenGL'я. Когда данных слишком много, то при её вызове программа может просто закрыться, то есть это так сказать вне моей юрисдикции, и я не знаю как это можно исправить. Также с этой же функцией связано возможное обрезание текста по краям. Если кто-нибудь знает, как это поправить - пишите.

      Если показывается сообщение, что шрифт не может быть сгенерирован, то значит так оно и есть. По разным причинам.

      Ответ на вопрос почему я не исключу эту не стабильно работающую функцию из программы прост. Потому, что она позволяет создавать целую кучу примитивов, используя разные таблицы символов. Например, выберите шрифт Primitives->Options-Text->Font->Wingdings, и нажмите Primitives->Create. Появятся, всякие знаки зодиака, стрелки, звёздочки, картёжные символы, религиозные символы, смайлики и т. д. и т. п.

      Функция работает с русскими буквами, ( в отличии от MilkShape ) и вообще со всем тем, что только поддерживается OpenGL'ем.

      Алгоритм сильно "сорит", поэтому после создания примитива этой опцией, точки меша нужно чистить, совмещая близлежащие точки Model->Points->Combine nearest points и удаляя лишние Model->Points-Delete unused points.

      Интересных эффектов можно добиться опцией Smooth Primitives-Options->Smooth. Чем больше её значения, тем сильнее некоторые точки совмещаются, уменьшая количество полигонов в модели. Это эффект OpenGL, и повлиять на него я никак не могу. Учтите также, что эта опция количество "сора" не уменьшает.

      Если Primitives-Options->Scale->Y равно нулю, то будет сформирована, не объёмная фигура, а плоская надпись.

    8. Примитивы Геосферы ( Primitives->Geosphere )

      Для того, чтобы можно было генерировать геосферы нужно загрузить файл LODdata1.dll ( ссылка на главной странице ), и поместить его в папку программы. Геосфера отличается от сферы тем, что её точки равномерно расположены по поверхности шара. ( а у сферы на полюсах концентрация точек выше, а на экваторе ниже ).

      К сожалению формулы по которой можно было бы определить координаты точек равномерно расположенных на шаре для N-ного их количества найти не удалось. Поэтому создаваемые геосферы получены итерационными методами, которые недостаточно точны, но ведь для моделей с небольшим количеством полигонов этого и не требуется. Если же вы знаете формулу, или алгоритм простого генерирования геосфер - пишите. Можно вставить его в программу.

    9. Примитивы Автоматическое создание LOD'а модели ( Primitives->LOD )

      Позволяет быстро создать куб или три взаимно перпендикулярных плоскости со скриншотами модели на плоскостях.

      Допустим в игре есть высоко полигонные модели домов. Если показывать их все одновременно то игра будет тормозить. Если прятать дальние дома, то возникнет пустота на горизонте. Поэтому чтобы пустот не образовывалось показывают не сами дома, а их низко полигонные модели. Эта функция и позволяет быстро создавать такие модели.

      Грузим или создаём какую-нибудь модель. Создаём пустую Фэйс-Группу и выбираем её. Это нужно потому, что фэйс-группе будет присвоен новый материал, и если в ней будут какие либо ещё треугольники, то все они будут отображены с новой текстурой.

      Далее идём на закладку Primitives и выбираем Type->LOD. Появляются окошки позволяющие задать качество текстуры, и что создавать, куб или взаимно перпендикулярные плоскости. Также можно задать цвет фона текстуры кликнув на кнопку Color. Нажимаем на Create.

      Параметр качества текстуры определяет размер скриншотов снимаемых с модели. Увеличение параметра на единицу соответствует увеличению размера текстуры вдвое. Далее при упаковки скриншотов в одну текстуру, её размер может измениться.

      Что именно делать, куб или взаимно перпендикулярные плоскости, зависит от формы модели. Для прямоугольных домов или машин лучше делать куб. Для шаров, листвы, моделей людей или каких-нибудь корявых объектов лучше подойдут плоскости.

      Выбор цвет фона может пригодиться для придания модели прозрачности. Например, если на модели есть чёрные места, и фон будет чёрным, то потом, при придании прозрачности могут возникнуть дыры в чёрных местах модели.

      Далее после нажатия кнопки Create программа выполняет следующие действия : Формирует куб или плоскости по размеру соответствующие видимой модели. Переключает камеру в ортогональную проекцию и поочерёдно ставя её по разные стороны от сформированного куба или плоскостей снимает скриншоты. Всего их получается шесть. Далее они запихиваются в одну текстуру. Создаётся новый материал в списке Materials в который и запихивается созданная текстура, а сам материал ассоциируется с видимой Фэйс-Группой. Весь этот процесс может занять немного времени особенно в первый раз, поэтому возможно придётся подождать.

      Созданную текстуру надо сохранить Materials->Save to .... По-умолчанию созданный LOD непрозрачный, но это легко исправить выбрав ему Blending mode -> BmTransparentcy и TextureImageAlpha скажем tiaTopLeftPointColor.

      Не рекомендуется пытаться создавать LOD с плоскостей. Из-за нулевого размера по одному из направлений может возникнуть ошибка или LOD просто не создастся. На этот случай нужно создать хотя бы одну точку не лежащую в этой плоскости, создать LOD и удалить ненужные плоскости/грани куба.

      Из-за того, что Undo на материалы не распространяется, лишние материалы созданные в результате экспериментов с этой опцией предлагается удалять вручную. Быстро удалить все неиспользуемые материалы можно нажатием на кнопку Material->Delete, удерживая при этом нажатой клавишу Ctrl.

      При изготовлении LOD'а возможно стоит обратить внимание на следующие моменты :

      1. Скриншоты снимаются в таком виде, в каком модель отображена на экране, поэтому возможно стоит включить освещение, чтобы не возникало непредусмотренных теней, либо возможно именно это и стоит использовать, когда тени как раз и нужны. Тоже самое относится и к сглаживанию нормалей.
      2. Если в созданном LOD'е почему то оказывается много пустот, то возможно это из-за наличия в модели лишних, неудалённых точек. Это можно подправить воспользовавшись кнопкой Model->Points->Delete unused points и создав LOD заново.

    10. Уменьшение числа полигонов модели через опцию Combine nearest points

      Создадим текст, и попытаемся уменьшить количество его полигонов.

      Primitives->Type->Text. Выбираем шрифт Arial ( потому, что он должен быть установлен на всех компьютерах ). Установим ему размер, скажем в 20. Напишем текст LODka3D, и нажмём на Primitives->Create.

      Появится трёхмерный текст. А внизу в строке состояния появится надпись Добавлено точек: 8760 и треугольников: 2920. Может быть цифры будут не точно такими, а похожими в зависимости от параметров шрифта.

      Выделяем все точки мышкой, и кликаем на кнопку Model->Points->Combine nearest poitns. Здесь попросят ввести минимальное расстояние между точками, чтобы они считались подлежащими объединению.Укажем 0.05 и нажмём OK.

      Внизу появилась надпись Joint 8234, это значит, что точки объединились и можно удалить лишние. Чтобы это сделать жмём на кнопку Model->Points->Delete unused points

      Внизу появилась надпись, что 8234 точки были удалены. А в окне редактора становится видно, что точки сильно поредели.

      Но это ещё не вся очистка. В результате объединения точек, вершины некоторых треугольников объединились, и треугольники визуально исчезли, но тем не менее они продолжают формально существовать в списке. Чтобы их удалить нужно воспользоваться кнопкой Model->Triangles->Clean. И в появившемся меню выбрать пункт Delete invisible triangles.

      Внизу появится надпись 1874 невидимых треугольника было удалено.

      Таким образом мы уменьшили число точек модели с 8760 до 526, а число треугольников с 2920 до 1046. Хотя, думаю варьируя параметры можно добиться и лучших результатов, но не следует перебарщивать, так как с водой можно выплеснуть и ребёнка.

    11. Удаление всех невидимых треугольников

      Чтобы удалить все невидимые треугольники, можно выделить все видимые, крутя модель и обводя её рамкой выделения. Потом нажать на кнопку Model->Triangles->Inverse selection, чтобы инвертировать выделение ( сделать выделенные не выделенными и наоборот ). И нажать на Model->Triangles->Delete selected удалив выделенные треугольники.

      Также можно воспользоваться опцией Model->Triangles->Clean. Выбрав пункт Delete invisible triangles ( удалить невидимые треугольники. Невидимыми считаются те, у которых площадь равна нулю.

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

    12. Масштабирование, смещение, поворот всех мешей одновременно ( всей модели )

      Для этого можно воспользоваться пунктами меню Menu->Edit->Model. Вращение задаётся в градусах на которые надо повернуть модель относительно осей X, Y и Z. Масштабирование - это во сколько раз надо умножить размер модели. 2 - значит увеличить вдвое. 0.5 - значит уменьшить вдвое и т. д.
      Отцентрировать все меши одновременно можно нажав на кнопку Model->Mesh->Centrate удерживая при этом клавишу Shift.

    13. Уменьшение числа мешей в модели

      Для этого можно воспользоваться пунктами меню Menu->Edit->Model->All meshes to one. Эта опция собирает все меши модели в первый, при этом треугольники группирует по материалам.

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

    14. Работа со второй текстурой ( текстурой лайтмепа )

      Вторая текстура нужна прежде всего для карт освещённости, которые можно создать в генераторе карт освещённости. На эту тему есть урок на главной странице сайта программы, в разделе разное.

      По-умолчанию вторая текстура не используется. Чтобы она начала использоваться надо выбрать для неё материал Model->Face->Change material .... Второй список.

      Соответственно, чтобы вторая текстура перестала использоваться надо просто отключить материал, то есть выбрать в списке . Для первой текстуры материал отключить нельзя, а для второй можно.

      Чтобы переключиться на работу с текстурными координатами второй текстуры, нужно выбрать Model->Textrue coord->Textrue 2. Все действия, которые над ней производятся аналогичны действиям над первой текстурой.

    15. Использование Цел-шейдеров ( CelShaders )

      Чтобы из использовать видеокарта должна поддерживать шейдеры.

      CelShader'ы используются для придания моделям вида как в комиксах. То есть контур , и переходы света-тени делаются очень резкими, всего в несколько градаций.

      CelShader'ы в программе сделаны на компоненте TGLCelShader из состава GLScene. Сделаны специально для GLScene, чтобы можно было посмотреть как модель будет там выглядеть. Но поскольку разные CelShader'ы обычно делают одно и тоже, то это может пригодиться и пользователям других движков.

      Чтобы посмотреть как это работает, можно, например, создав геосферу на 100 точек Primitives->Geosphere->Points = 100->Create. Создать текстуру Materials->Textrue effects->Random texture. И включить шейдеры Materials->CelShader.

      Появляются две галочки Outlines и Textured. Первая - это включить показ контура. Вторая - включить текстуру. Кроме них появляется окошко выбора ширины контура, и кнопка выбора цвета контура. Если текстура отключена, то можно изменяя цвет материала через Materials->Diffuse можно получать различные расцветки.

      Играясь со всеми этими опциями можно понять как это выглядит.

  5. Скелетная анимация

    1. Работа со скелетной анимацией, загрузка, сохранение

      Включить работу со скелетами можно галочкой Actor->Enabled. Под ней ниже находится древовидный список костей. Здесь можно выбирать, добавлять, удалять, переименовывать кости, а также ассоциировать с костями точки модели.

      Чуть ниже находятся два списка: анимации Actor->Animations и фреймы анимации Actor->Frames, Когда вы выбираете какую-нибудь анимацию в списке анимаций, то в списке фреймов показываются её фреймы.

      Под списком анимаций находится кнопка Actor->Animations->Play, при нажатии на которую созданная анимация будет проигрываться, и окошко Actor->Animations->Interval в котором можно указать интервал проигрывания. По-умолчанию интервал равен 100. Чем больше интервал, тем меньше скорость.

      Ещё ниже находятся два окошка, в которых можно изменить положение и ротацию кости, выбранной в списке костей Actor->Position и Actor->Rotation. Ротация задаётся углами Эйлера. То есть последовательным поворотом относительно осей X, Y и Z.

      Загружать модели со скелетами можно из файлов типа *.smd. Это формат файлов от HalfLife'а. Smd-файлы бывают двух типов, с моделями и с анимациями. Файлы с моделями содержат раздел "triangles", файлы с анимациями - нет. Загружать надо сначала файл с моделью, тогда в списке костей появится её скелет. А потом добавлять(!) File->Add from file файлы с анимациями, тогда в списке анимаций для каждого файла будет добавляться по анимации. Само собой нельзя добавлять анимации от одной модели к другой, потому, что скелеты в smd-файлах должны быть одинаковыми. Это легко узнать открыв файлы smd в текстовом редакторе.

      При сохранении модели в smd-файл возникнет вопрос, сохранять в файл модель или сохранять текущую выбранную анимацию ( если она выбрана ). При сохранении в файлы типа *.lod такого вопроса не возникает, так как такие файлы хранят и то и то в одном флаконе. При сохранении не забывайте. что скелет должен быть включён, так как иначе он не сохранится, а вместо него будет создана одна единственная кость в позиции (0, 0, 0) и все точки модели будут привязаны к ней.

      Возможно пользователей движка GLScene заинтересует то, что загрузка скелетной анимации из файлов типа *.lod происходит намного быстрее чем из файлов типа *.smd, так как в smd информация хранится в виде текста, и требует большого количества вызовов функции FloatToStr.

    2. Создание скелета и привязка точек к его костям

      Для этого надо включить скелетную анимацию Actor->Enabled и выбрать пункт Actor->Create. При этом списки анимаций и фреймов станут недоступными.

      Выбираем какую-нибудь кость в списке костей. При этом на модели в месте этой кости появятся три разноцветные оси. Красная - x синяя - y зелёна - z. Теперь мы можем внизу в Actor->Position и Actor->Rotation менять позицию и ротацию этой кости. При изменении позиции кость на модели будет смещаться, а при изменении ротации, будет изменяться только направление оси.

      Добавлять, удалять и переименовывать кости можно кнопками Actor->Add, Actor->Rotation и Actor->Rename соответственно. Удалять кость можно только если к ней не привязаны другие кости. Удалить корневую кость Root - нельзя, вместо этого надо отключить скелет. Переименовать же корневую кость можно.

      Осуществлять привязку точек модели к скелету можно с помощью кнопок с изображениями человечков. Кнопка Actor->Select assigned points позволяет выделить точки привязанные к выбранной кости. Кнопка Actor->Select unassigned (root) points позволяет выделить точки привязанные к корневой кости. К этой кости по умолчанию привязаны все точки, так как она является своеобразным началом координат скелета.

      Чтобы привязать точки к какой либо кости нужно выделить эти точки, выбрать кость в списке костей, и нажать на кнопку Actor->Assign selected points to selected bone. Чтобы отвязать выбранные точки от выбранной кости нужно нажать на кнопку Actor->Assign selected points to a root bone. Таким образом выбранные точки будут проассоциированны с корневой костью.

      При анимировании, точки модели привязанные к костям, движутся вместе с костями, но при создании скелета это отключено .

    3. Анимирование модели

      Для анимирования модели нужно включить скелетную анимацию Actor->Enabled и выбрать пункт Actor->Animate. При этом некоторые пункты связанные с редактированием костей скелета станут недоступными. Учтите, что создавать скелет надо перед его анимированием. А то, если после анимирования начать удалять/добавлять кости, анимации могут сбиться. В принципе этого быть не должно, но иногда возникают такие ошибки. Пишите о них, если обнаружите.

      В списке анимации Actor->Animations всегда по-умолчанию есть одна анимация. Удалить её нельзя. В списке фреймов Actor->Frames всегда должен быть хотя бы один фрейм.

      Хочу обратить внимание на то, что первый фрейм первой анимации - это базовое положение костей. То самое, которое записано в *.smd-файле модели. Поэтому первую анимацию и первый её фрейм лучше оставить на месте, не трогать её и не изменять, если вы конечно, не очень хорошо понимаете что именно произойдёт в противном случае. Сперва я хотел её блокировать, но потом подумал, что может кому то понадобиться её менять, и оставил на общих основаниях.

      Анимации - это просто наборы фреймов. Один фрейм - это одно положение костей скелета. При анимировании фреймов, кости скелета плавно перемещаются из положения заданного в текущем фрейме к положению заданному в следующем фрейме. И так по списку в циклическом порядке.

      Чтобы изменить положение скелета, в данном конкретном фрейме. Нужно выбрать анимацию, выбрать фрейм, выбрать кость которую мы хотим сдвинуть или повернуть, и в окошках Actor->Position и Actor->Rotation меняем её позицию и ротацию соответственно. В отличии от режима создания скелета, в данном случае точки модели привязанные к кости повернуться вместе с нею.

      Если создать хотя бы два отличных друг от друга фрейма, и нажать на кнопку Actor->Animations->Play, то созданные вами фреймы будут анимироваться. Интервал между кадрами анимации ( скорость ) задаётся в Actor->Animations->Interval.

      Фреймы можно удалять, клонировать, двигать по списку, копировать в другие анимации. Анимации можно клонировать, удалять, переименовывать, перемещать. Всё как обычно.

      Из особенностей возможно заинтересует значение кнопки Actor->Animations->Make skeletal translation static. Эта кнопка нужна для некоторых smd-анимаций, которые при анимировании "скользят", сдвигаются в разные стороны. Причём, при, например, анимировании ходьбы модель скользит не вперёд, что было бы логично, а назад. Почему - не знаю. Вопрос к создателям первого Халф-лайфа. Но эта кнопка позволяет убрать скольжение. Если же при нажатии кнопки удерживать клавишу Shift, то скольжение не уберётся, а перевернётся. И, скажем, при ходьбе перемещение скелета будет происходить в правильном направлении.

    4. Назначение галочки Bones и окошка дополнительных параметров анимации

      Галочка Bones предназначена только чтобы показывать или скрывать проволочный скелет в модели. Чтобы можно было легче рассмотреть результат или чтобы снять скриншот без него.

      Окошко дополнительных параметров анимации находится над окошком задания интервала Interval. В нём можно выбрать режим проигрывания анимации. Режимы соответствуют режимам движка GLScene.

      Режимы:

      1. None - анимирование отсутствует.
      2. Play Once - единичное проигрывание от первого до последнего фрейма.
      3. Loop - циклическое проигрывание от первого до последнего фрейма, после чего идёт переключение на первый фрейм, и т. д. Режим по-умолчанию.
      4. Bounce Forward - проигрывание фреймов от выбранного до последнего, после чего переключение в режим Bounce Backward.
      5. Bounce Backward - проигрывание фреймов от выбранного до первого, после чего переключение в режим Bounce Forward.
      6. Loop Backward - циклическое проигрывание фреймов в обратном порядке от последнего до первого, после чего идёт переключение на последний фрейм и т. д.
      7. External - анимирование отсутствует. Предполагается, что оно должно осуществляться внешней программой.
    5. Работа с развесовками костей

      С версии 1.42 в программе появилась возможность работы с весами костей, то есть сопостовлять каждой вершине более чем одной кости с приданием каждой кости своего веса. Чем вес больше, тем сильнее данная кость влияет на смещение вершины в процессе анимирования, таким образом можно добиться большей плавности.

      Посмотреть сопоставленность костей вершинам можно через меню. Для этого надо выделить интересующие вершины и нажать на Menu->Options->Show bones weight. Появится список в нём будут столбцы с номерами выделенных вершин, числом костей ассоциированных с вершинами, и парами номеров костей и их весов. Если развесовки отсутствуют, то есть, каждой вершине ассоциирована только одна кость, то в списке будут только номера вершин и их кости. Веса при этом считаются равными единице.

      Также можно подсветить веса вершин на модели. Для этого выбираем кость, и кликаем на кнопку Actor->Skeleton->Select assigned points удерживая клавишу Shift. В результате вершины не ассоциированные с данной костью будут окрашены чёрным цветом, вершины ассоциированные только с выбранной костью - белым. В остальных случаях степень окрашенности белым зависит от веса данной кости. чем он больше по сравнению с общим весом приходящимся на данную вершину, тем она будет белее. ( Пока опция немного глючит ).

      Добавлять кости к вершинам и/или менять их веса можно нажатием на кнопку Actor->Skeleton->Assigned selected points to selected bones удерживая клавишу Shift. Если нажать без клавиши Shift, то выбранная кость будет просто поассоциированна с выбранными вершинами с затиранием всех других уже имеющихся ассоциаций. А Shift означает именно добавление и/или изменение веса.

      Для добавления кости к вершинам нужно указать ей вес. Вес можно указать числом или формулой, для ввода которых появляется окошко. Если была выбрана одна единственная вершина, то в окошке будет написан её текущий вес ( если кость ранее ассоциирована с данной вершиной не была, то её вес равен нулю ). Вес можно изменить на любой другой и сохранить.

      Если выбрана группа вершин, то появится последняя введённая формула по которой для вершин вычисляются и присваиваются им веса. То есть формула применяется поочерёдно ко всем выбранным вершинам, со своими значениями специальных функций ( см. ниже ) для каждой вершины.

      В формуле можно использовать

      1. Пять математических действий: + - сложение, - вычитание, * - умножение, / - деление и ^ возведение в степень.
      2. Стандартные математические функции: Sin, Cos, Tan, Arcsin, Arccos, ArcTan, Exp, Ln, Log, Sign, Not, Abs, Sqrt, Sqr, Int, Frac, Trunc, Round, Pi. Их значения, если они непонятны, можно поискать в каком-нибудь справочнике по программированию. Если какой-то важной функции не хватает или какая-то из имеющихся не работает, или работает не так - пишите, можно попробовать это исправить.
      3. Специальные функции возвращающие информацию о косте или вершине. А именно:
        1. BD ( Bone Distance ) - расстояние от вершины до выбранной кости. Оно всегда удерживается в пределах от 10-5 до 105. Это нужно, чтоб избежать деления на ноль когда вес кости вычисляется как обратно пропорциональный расстоянию до неё и если расстояние от вершины до кости равно нулю.
        2. BDX, BDY, BDZ ( Bone distance by x, y, z ) - расстояние от вершины до выбранной кости по осям X, Y, Z. Если допустим интересует только расстояние по осям X и Y, то можно воспользоваться теоремой Пифагора: (BDX^2 + BDY^2)^0.5 . Эти расстояния также всегда удерживаются в пределах от 10-5 до 105.
        3. MaxBD ( Maximum Bone Distance ) - расстояние от кости до самой дальней из выделенных вершин. Эти расстояния также всегда удерживаются в пределах от 10-5 до 105.
        4. MinBD ( Minimum Bone Distance ) - расстояние от кости до самой ближней из выделенных вершин. Эти расстояния также всегда удерживаются в пределах от 10-5 до 105.
        5. X, Y, Z ( point position by x, y, z ) - позиция вершины по осям X, Y, Z.
        6. BnX, BnY, BnZ ( bone position by x, y, z ) - позиция выделенной кости по осям X, Y, Z .
        7. W ( weight ) - вес кости для данной вершины. Если ранее эта кость с вершиной ассоциирована не была, то он равен нулю.
        8. VW ( vertex weight ) - вес вершины. То есть общий вес всех костей ассоциированных с данной вершиной.

      Используя вышеприведённые функции можно составлять различные формулы для вычисления весов. Например:

      1. 1 - устанавливает во всех выделенных вершинах вес кости в единицу.
      2. 0 - обнуляет вес кости, то есть просто отключает её. Отключить ассоциирование кости с вершинами также можно нажатием на кноку Actor->Skeleton->Assign selected points to a root bone only, удерживая клавишу Shift.
      3. W*2 - удваивает вес кости. Берёт её текущий вес W и умножает на 2.
      4. 1/BD - устанавливает вес кости в зависимости от рассотяния между ней и вершиной ( BD ). Зависимость обратная. То есть чем расстояние меньше, тем вес больше. Деления на ноль, при нулевом расстоянии бояться не надо, так как переменная Bd всегда не меньше 10-5.
      5. (1/BD)^2 - аналогична предыдущей формуле, но значение возведено в квадрат. Это сделано для того, чтобы зависимость была не линейная, а параболлическая. То есть, чтобы сгладить развесовки, сделать их более плавными.
      6. Sin(Pi *((1 -Bd/MaxBd)))^2 - синусоидальная зависимость, напоминающая волны.
      7. Sin(Pi/2 +Pi *((1 -Bd/MaxBd)))^2 - синусоидальная зависимость, напоминающая волны, но со сдвигом на четверть периода (пол Pi).

      Если у вас есть интересные формулы или идеи как это можно улучшить - присылайте.

      Веса костей в процессе редактирования не нормализуются, а нормализация происходит только при анимировании. Принудительно нормализовать веса можно кликнув на кнопку Actor->Skeleton->Select assigned points удерживая клавишу Alt. При сохранении в файл веса также можно нормализовывать, для этого надо поставить галочку в меню Menu->File->Save options->LOD normalize bones weight

      Отключить ассоциирование кости с вершинами можно выбрав кость, выделив нужные вершины и нажав на кнопку Actor->Skeleton->Assign selected points to a root bone only, удерживая клавишу Shift. Если Shift не удерживать, то откреплены будут все кости, а не только выбранная.

    6. Перемещенеие и копирование костей мышью

      Начиная с версии программы 1.51.4 появилось возможность таскать мышью кости по скелету методом Drag And Drop. То есть подключать кости к другой кости-предку. При этом действии есть несколько интересных, но неочевидных возможностей.

      Кости можно перетаскивать такими способами:

      • Без нажатия дополнительных клавиш. Тогда кости только переподключаются к другой родительской кости. Все их локальные позиции и матрицы остаются такими же как и были. То есть если мы подключаем таким образом кости ноги к какой нибудь другой кости, то нога будет также трепыхатся, но повёрнутой в какую-нибудь другую сторону, по матрице новой кости.

      • С нажатым Control. Этот способ переноса кости похож на перенос без нажатий клавиш, с тем лишь отличием, что кость сохранит тоже направление в котором была до переноса. То есть, если это, допустим, кость ноги смотрящая вниз, то как бы матрица целевой кости не была вывернута, кость после переноса всё равно будет смотреть вниз.

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

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

      Если при перемещении костей удерживать клавишу Shift, то кости будут не перемещены, а скопированы. Вместе с клавишей Shift также можно нажимать клавиши Control и Alt получая такие же, как описаные выше, эффекты.

  6. Вершинные анимации

    1. Работа с вершинными анимациями

      Панель для работы с вешринными анимациями находится на закладке Actor->Vertex Animation. Здесь рассположены четыри списка. Верхний - это древовидный список коллекций вершинных анимаций. Его элементы можно крепить друг к другу и перетаскивать мышью. Под этим списком справа находится список анимаций. Для каждой коллекции он свой. Справа от списка анимаций находится список фреймов. Для каждой анимации он свой. Под этими двумя списками находится древовидный список мешей и костей. Для каждой коллекции он свой. Кости можно таскать мышью и крепить друг к другу. Меши - нельзя.

      Ещё ниже находятся три закладки. Bones - кости. Q3Collider - коллайдеры соотвествующие коллайдерам в моделях от Quake 3 и Points - вершины. На закладке Bones можно задавать позиции костей, для этого надо сперва выбрать (или создать хотя бы одну) коллекцию, в ней выбрать анимацию, а в анимации фрейм. Также надо не забыть выбрать (или создать хоты бы одну) кость в списке мешей и костей. Тогда на экране отобразятся три оси указывающие положение матрицы кости и её направление. На закладке Bones параметры кости можно менять. Для каждого фрейма каждой анимации каждой коллекции они свои. Параметры - это положение, ротация и масштаб.

      Если фреймов в анимации есть больше одного, то их положения отображаются на экране точками. Эти точки можно выделять мышью и двигать также как вершины в редакторе (LMB+Ctrl). Это удобно, когда кости задают пути движения актёра.

      Закладка Q3Collider позволяет редактировать параметры коллайдера. Коллайдер есть всего один на каждую коллекцию. Но зато в каждом фрейме у него свои параметры. Параметров три. Это позиция, ориентированная по осям коробка (Bounding Box) и радиус сферы. При переходе на эту закладку коробка и сфера отображаются на экране. Предполагается, что когда объект далеко, то проверка столкновений осуществляется со сферой, а когда близко, с коробкой. В прочем всё это может быть использовано на усмотрение пользователя.

      Закладка Points позволяет редактировать положения вершин анимаций. Чтобы вершины отобразились надо выбрать какой-нибудь меш в списке мешей и костей. Если меша нету, то его можно добавить через кнопку Insert этого списка. После выбора меша, на экране появляются его вершины. Их можно выделять мышкой как и вершины в основном редакторе. Сдвиг, вращение и масштабирование, тоже осуществляются как в основном редакторе. Действия производимые через окошки на закладке Points также аналогичны действия в основном редакторе.

      Галочка Show passive meshes нужна чтобы показывать незадействованные в анимациях меши. Например, если загружены модели актёра и уровня, то актёр показываться небудет, так как он задействован в анимациях, а уровень будет. Это удобно для постановки путей хождения актёра и просто для сопоставления его размеров и вида с окружающим пространством.

      Каждую коллекцию можно перетаскивать мышью и крепить к другой коллекции, при этом по-умолчанию она крепится к первой её кости, или к началу локальных координат дочерней модели. Кость, к которой прикреплена коллекция можно менять через кнопку находящуюся справа от списка. Когда коллекция предок анимируется и её кость движется, то доченяя коллекция движется вместе с костью. Эта конструкция почерпнута из моделей от Quake 3, в которых есть отдельно модель ног, торса, головы и оружия. Каждая из которых имеет свои кости, к которым можно крепить другие модели. Таким образом модели видоизменять частично. Например сделать новое оружие, или новую голову и поставить её на старые торс и ноги. Или сделать другой торс, надев его на эти ноги, или даже переделав сами ноги. В общем поле для фантазии.

      В отличии от Quake 3, однако, где кости - это список, в ЛОДке кости - это дерево. То есть их можно крепить друг к другу, что даёт больше возможностей в частности при задании путей актёру или при построении различных хитрых механизмов.

  7. Скрипты

    1. Скрипты создания примитивов

      Скрипты создания примитивов нужны чтобы автоматизировать создание большого количества примитивов. Скажем есть примитив лестницы ( steps ), но лестничный пролёт между этажами состоит из двух лестниц, и двух площадей между ними. Поэтому, чтобы пролёт создавался автоматически можно написать скрипт, который и будет создавать эти две лестницы и площадки между ними. См. скрипт "aHouse-steps1.pas". Кроме того в скрипте можно указать, на сколько этажей пролёты нужно создавать, из какого количества ступенек должна состоять лестница , нужен ли промежуток под лифт между лестницами и прочие параметры.

      Пишутся скрипты в обычном текстовом редакторе, например, входящим в Windows notepad.exe . Но можно использовать, например, Far с подсветкой синтаксиса плагином Colorer, или что-нибудь ещё. Располагаются скрипты в папке "PrimitiveScripts". При запуске программы имена всех находящихся в ней файлов типа *.pas, записываются в список примитивов Primitive->Type. Там их можно выбирать и запускать нажатием кнопки Create.

      Для написания скрипта нужно знать язык программирования Паскаль в реализации DelphiWebScripts. Возможно создание скриптов несколько сложно́, но зато создав один раз, их можно использовать многократно и сильно облегчить себе работу.

    2. Некоторые отличия реализации Паскаля в DelphiWebScripts от реализации в Delphi

      • Нет goto, asm и overload'ов для методов.
      • Перед объявлением каждой константы надо писать const, а перед объявлением каждого типа type.
      • Из вещественных типов есть только Float, соответствующий дельфийскому Double. Типа Single нет. И аналогов его тоже нет. Вместо него всё делается через Float.
      • Есть проблемы с with. Толи она вообще не поддерживается, толи поддерживается как то криво.

      Подробнее об отличиях можно узнать из файла справки по DelphiWebScript, которую можно загрузить на главной странице сайта.

    3. Функция скрипта Info

      Эта функция позволяет указать какие CheckBox'ы ( галочки ) и окошке ввода чисел показывать, для этого скрипта, а какие нет. Это делается всего лишь заполнением следующей структуры :

        type
          TParamsAInfo = record
            Description : string;
            CheckText   : array [0..7] of string;
            IntText     : array [0..7] of string;
            IntMin      : array [0..7] of Integer;
            IntMax      : array [0..7] of Integer;
            FloatText   : array [0..7] of string;
            FloatMin    : array [0..7] of Float; // Double
            FloatMax    : array [0..7] of Float; // Double
          end;
        

      , где Description - описание скрипта. Выводится в статусной строке.

      CheckText - 8 надписей для CheckBox'ы ( галочек ). Если текст не задан, а по умолчанию он не задан, то галочка не показывается.

      IntText и FloatText - тоже самое для окошек ввода целых и вещественных чисел.

      IntMin, IntMax, FloatMin, FloatMax - минимальные и максимальные значения, которые может принимать целое или вещественное число, соответственно. Если Min больше Max, то соответствующее окошко не показывается.

      Пример функции из скрипта "simple.pas" :

          // Information function.
        function Info: TParamsAInfo;
        begin
            // Задаём описание скрипта.
          Result.Description  := 'Simple demo. Adds a box, and a sphere.';
      
            // Задаём текст первого чекбокса ( нумерация с нуля ! )
          Result.CheckText[0] := 'Rotate cube 45';
      
            // Задаём параметры для окошка ввода первого числа.
          Result.IntText[0]   := 'sp stacks';
          Result.IntMin[0]    :=    2;
          Result.IntMax[0]    := 1000;
      
            // Задаём параметры для окошка ввода второго числа.
          Result.IntText[1]   := 'sp slices';
          Result.IntMin[1]    :=    3;
          Result.IntMax[1]    := 1000;
        end;
        
      Функция показывает один чекбокс ( галочку ) с надписью 'Rotate cube 45'. И два окошка ввода целых чисел. Первое - 'sp stacks' и второе - 'sp slices'. Первое может изменяться в интервале от 2 до 1000, а второе от 3 до 1000.

      Если функция Info отсутствует, или в ней ничего не задаётся, значит чекбоксы и окошки ввода чисел показываться не будут.

    4. Функция скрипта Main

      Основная функция скрипта. Она вызывается, когда пользователь программы нажимает на кнопку Create. Функция должна быть объявлена так :

        procedure Main( anInt1,  anInt2,  anInt3,  anInt4, 
                        anInt5,  anInt6,  anInt7,  anInt8  : Integer;
                        aCheck1, aCheck2, aCheck3, aCheck4, 
                        aCheck5, aCheck6, aCheck7, aCheck8 : Boolean 
                        aFloat1, aFloat2, aFloat3, aFloat4,
                        aFloat5, aFloat6, aFloat7, aFloat8 : Float; // Double
                        );
        

      Параметры anInt1-anInt8 и aFloat1-aFloat8 - содержат целые и вещественные числа которые ввёл пользователь перед нажатием на кнопку Create. А параметры aCheck1-aCheck8 - содержат значения чекбоксов ( галочек ). Скрипту передаются все 24 параметра, но надо понимать, что могли быть изменены, только те из них, которые были сделаны доступными в функции Info, и поэтому только их значения в дальнейшем следует использовать.

      Чтобы создать через скрипт примитив, нужно вызвать функцию Add(Param1 : TParamsA);, задав ей в качестве параметра структуру TParamsA в которой описано какой примитив и с какими параметрами нужно создавать :

    5.   type
          TParamsA = record
            Type1                           : TPrimitiveType;
            Position, Rotation, Scale       : TVector3D;
            Int1, Int2, Int3, Int4,
            Int5, Int6, Int7, Int8          : Integer;
            Check1, Check2, Check3, Check4, 
            Check5, Check6, Check7, Check8  : Boolean;
            Float1, Float2, Float3, Float4,
            Float5, Float6, Float7, Float8  : Float // Double
          end;
        

      где Type1 - определяет какой примитив нужно создавать.

        type
          TPrimitiveType = (
            ptNone,
            ptBox, ptTetraedr, ptPiramid, ptDisk, ptCylinder,
            ptAnnulus, ptArrow, ptArrow2, ptCone, ptBobbin,
            ptWasher, ptWasher2, ptSphere, ptPlane,
            ptIcosahedron, ptDodecahedron, ptOctaedr, ptCubeUnknown1,
            ptCapsule, ptRoundCube, ptBushing, ptTorus, ptSteps, ptStar,
            ptGearWheel, ptGeosphere, ptNone2, ptCorner
          );
        

      Список возможно будет дополнен. По названиям интуитивно понятно, о каком примитиве идёт речь.

      Параметры Position, Rotation и Scale - это три вектора, которые задают позицию, ротацию и масштабирование примитива. Ротация задаётся в градусах, в углах Эйлера.

        type
          TVector3D = array [0..2] of Float; // Double;
        

      Параметры Int1-Int8, Float1-Float8 и Check1-Check8 - указывают какие целые, вещественные числа и значения галочек должны передаваться функции создания примитива.

      Пример заполнения структуры :

        var
          Param1 : TParamsA;
        begin
            // Указываем, что нужно создать бокс.
          Param1.Type1    := ptBox;
            // Указываем позицию. В данном случае точка X=1, Y=2, Z=3
          Param1.Position := Vector3DMake( 1, 2, 3);
            // Масштабируем бокс. По X в 3 раза, по Y в 5 и по Z - в 6.
          Param1.Scale    := Vector3DMake( 4, 5, 6);
            // Задаём вращение куба. Вокруг оси X на 45 градусов, 
            //   вокруг остальных осей вращения нет.
          Param1.Rotation := Vector3DMake(45, 0, 0);
            // Создаём бокс вызывая функцию Add.
          Add(Param1);
        

      Всё.

      Галочки, целые и вещественные числа устанавливаются так :

          Param1.Check1 := True;
          Param1.Int1   := 7;
          Param1.Float1 := 1.5;
        

      При создании нескольких объектов подряд стоит помнить, что параметры структуры остаются установленными и после вызова функции. Особенно осторожно в этом плане нужно обращаться с Check'ами и Int'ами. Как выход, можно либо обнулять их после создания каждого примитива, либо просто помнить об этом и учитывать создавая последующие.

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

      О том какие функции можно использовать в скриптах, можно узнать из файла справки по DelphiWebScript, которую можно загрузить на главной странице сайта.

  8. Физика

    1. Концепция и терминология редактора физики жёстких тел

      Сама программа не включает в себя каких либо физических движков, а только позволяет расставить жёсткие тела, их геометрии ( коллизии ) и жоинты в определённые позиции, а также указать некоторые их параметры.

      Параметры которые можно указывать соответствуют параметрам жёстких тел в движках ODE ( Open Dynamic Engine ) и Newton ( Newton Dynamics ), но так как параметры у разных физических движков сходны, то их можно использовать и в других движках, например в GLScene'овским движком DCE, или любом сходном.

      Терминологическая ориентация редактора - на ODE. Поэтому то, что в Newton'e называется коллизиями или коллайдерами, в ODE и редакторе называется геометриями ( Geoms ).

      То, что в Newtone называется сфероид, в ODE называется сфера. Отличие в том, что в Newton'e у сферы можно задавать масштаб по всем трём координатам, а в ODE только радиус. Таким образом в Newton'e из сферы можно сделать нечто подобное мячу для регби , и поставив его "на попа" применять для коллизий актёров. А в ODE для этого рекомендуется использовать капсулу.

      Чтобы переключить способ отображения сферы в Newton'овский вид надо поставить галочку File->Save options->LOD Physics Newton.

      Помимо влияния на тип отображения сферы, галочка также влияет на тип отображения цилиндров и капсул. Дело в том, что их оси в ODE и Newton'e направлены по-разному. И опция позволяет их направить в соответствии с используемым движком.

      В движке ODE до версии 0.6 капсулы назвались CCylinders, в 0.6 были переименованы в капсулы. В программе они тоже названы как капсулы.

      Количество геометрий в Newton'e больше чем в ODE, поэтому в случае если вы используете ODE, то лишние нужно просто игнорировать.


      В загрузчике моделей для GLScene ни к какому физическому движку привязки нет. Загрузчик только предоставляет три записи в которых описаны тела, геометрии ( коллизии ) и жоинты. А как именно на их основе создавать физические объекты - решает программист.

      Возможно может показаться странным, что можно задавать и массу и плотность и объём совершенно независимо друг от друга. Хотя они и связаны простой формулой p = m/v . Также может вызвать вопросы то, что массу можно задавать и для тел ( Body ) и для геометрий ( Geoms ), и много тому подобных вещей.

      Это связано с тем, что программа никак не вынуждает вас использовать все параметры одновременно. Вы сами должны определиться что вы хотите использовать, а в чём себя ограничить. Можете использовать массу и объём, а плотность игнорировать, можете использовать плотность и объём, а массу игнорировать. Можете использовать массы отдельных геометрий составляющих трансформированную геометрию, и на их основании вычислить общую массу тела ( Body ), а можете просто использовать ту массу которая указана для Body. В общем это вам решать, что именно использовать, а что из предоставляемого программой не учитывать.

    2. Описание редактора физики жёстких тел

      Редактор физики находится на закладке Physics. Чтобы его включить надо поставить галочку Physics->Enabled. Чуть ниже находятся две закладки Physics->Body & Geoms и Physics->Joints.

      Body & Geoms - это тела и геометрии. Они представлены в виде древовидного списка. Геометрии привязываются к телам, поэтому сначала можно создавать только Body и лишь потом привязать к ним геометрии. Геометрий и тел может быть много.

      Бывают случаи когда геометрию надо привязать не к телу, а к миру, то есть указать в качестве Body - nil. Никаких специальных обозначений в программе для этого не предусмотрено. Но никто не мешает вам, скажем, назвать одно из тел "World", и в своей программе вместо создания этого тела, присвоить ему значение nil, и таким образом считать, что это и есть мир. ( Пример см. в демке )

      Кроме того пользователю предоставляется параметр Tag, который нужен только чтобы как-то помечать или группировать различные тела.

      Body в редакторе отображаются в виде проволочных конструкций. Эти конструкции визуально отображают массы которые используются для тел в ODE. Массы могут задаваться как куб, сфера, цилиндр и капсула. В большинстве случаев можно пожалуй не обращать на это внимание, и везде использовать что-нибудь одно. В Newton'e вместо подобных способов задания массы используется матрица инерции. Её можно задавать через Scale тела.

      Geoms'ы в редакторе задаются цельными ( не проволочными ) объектами. Это куб, сфера, цилиндр, капсула, конус, плоскость, луч, ChamferCylinder ( это что-то напоминающее тор накрытый с обоих концов крышками, или шар обрезанный с двух концов ). Ещё есть TriMesh, который предполагает, что объект - это набор треугольников определяемый прикреплённой к этой геометрии графической моделью из списка мешей. Возможно в будущем будут добавлены и другие объекты.

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

      Joint'ы содержатся на отдельной закладке в отдельном спиcке. Они бывают типа шарнир, слайдер ( передняя вилка мотоцикла ), петля ( типа дверная ), двойная петля ( переднее колесо автомобиля которое поворачивается и крутится ) и юнивёсал ( типа карданный вал ). Возможно в будущему будут добавлены и другие. Каждый жоинт должен быть связан с двумя телами, которые берутся из списка Body, а также имеет некоторые параметры соответствующие параметрам ODE, о котором лучше почитать на его страничке : http://opende.sourceforge.net/ode-latest-userguide.html. Моторов в программе нету, и всего, что с ними связано тоже.

  9. Форматы файлов

    1. The Longest Journey

      Перед загрузкой в ЛОДку, модели, анимации и текстуры надо из игры распаковать. Это можно сделать любым распаковщиком знающим формат файлов The Longest Journey. Например, таким: tljextract.zip,

      Модели - это *.cir-файлы, анимации - *.ani, текстуры - *.tm. В каждом *.tm-файле может быть по несколько текстур. Их все надо распаковать. MipMaps-уровни в данном случае не нужны.

      Тестировался загрузчик в основном на модели Эйприл Райан. С более чем сотней анимаций. Но если какие-то другие модели не работают ( их всего более 70, как написано на диске ), можно посмотреть. Пишите.

      Сначала загружается *.cir-модель. Первоначально она будет выглядеть как куча треугольников, это после можно будет поправить. Потом грузятся *.ani-анимации модели. Это можно сделать оптом File->Add many animations ... . Бывают некоторые глюки с анимациями из-за сложностей перевода фреймов из формата игры, и неопределённости с тем, должна такая то анимация проигрываться циклически, или она одноразовая.

      Чтобы загруженная модель не выглядела как куча треугольников нужно выбрать понравившийся кадр анимации, в котором модель выглядит хорошо, и сделать его основным. Для этого нужно нажать в Actor->Animation на кнопку с изображением человека и оси координат, удерживая кнопку Ctrl. То есть Actor->Animation->Set selected frame as reference pos. Тогда модель примет вид выбранного фрейма.

      Поменять оси координат для модели, чтобы голова была вверху, можно через меню. Edit->Model->Change axis.

    2. Enter The Matrix

      Из игры Enter The Matrix поддерживается только загрузка моделей типа *.dcx. К сожалению без анимаций которые мне там очень нравились.

      Есть модели Агента Смита, Тринити, Нео, Морфеуса, Ключника, Бейна, Ниоби, Призрака, Близнецов, Мировингина, и прочих в общем всей честной компании. Кроме этого модели разных людей из игры, матричной атрибутики типа телефонов или шнура втыкаемого в голову, машин, самолётов, оружия, пуль с матричным шлейфом, и много чего ещё на 206 мегабайт.

      Большинство моделей в трёх качествах. Низкополигонные, среднеполигонные, и высокополигонные. В программу грузятся сразу все три. Модели очень качественные, видимо их делали для фильма, а потом вставили в игру. И возможно модели не моделировались, а как-то сканировались с актёров. Потому, что слишком похожи.

      При открытии модели программой возникает окно, где спрашивается раскладка текстуры, и прямой порядок следования текстур или обратный. У моделей порядок вроде обратный, а у всего остального - прямой. Почему так и от чего зависит - не знаю. Поэтому и есть эта опция. С раскладкой текстуры - тоже самое. Надо угадать.

      Файлы *.dcx из игры содержат сразу и текстуры и модели. Но, почему-то некоторых текстур иногда не хватает. То есть скажем текстур только 34, а модель ссылается на 37-ую текстуру. В этом случае вместо отсутствующей 37-ой текстуры грузится первая. А потом в программе надо ручками это подкорректировать. Иногда из-за этого ещё и сбиваются все остальные текстуры, что тоже требует ручной коррекции. И ещё есть некоторая неопределённость с прозрачностью. То есть её надо делать самому.

      Грузиться должны все файлы кроме одного.

      К сожалению, в формате *.dcx-файлов недоразгаданным остался скелет. Я в общем то и взялся за этот формат потому, что очень хотелось выдрать оттуда матричные анимации боёв, ударов всяких, прыжков и прочего. Но вот на этом месте всё застопорилось. Но если кому-то это удастся - пишите, можно будет сделать в программе загрузку и скелета.

      Любопытный момент. Когда игра вышла, на неё обрушился шквал критики за квадратные колёса машин в гоночных эпизодах. И было неясно почему это. Теперь же, когда я более менее разобрал формат *.dcx, можно сделать предположение. Это видимо потому, что как уже было сказано, модели в игре обычно в трёх качествах. Низком, среднем и высоком. И там квадратные колёса - это обычно в низком разрешении. Видимо сначала хотели, чтобы низкое разрешение включалось только для объектов заднего плана, а потом в настройках сделали так, чтобы его можно было включать всегда. Ну и получились квадратные колёса, для тех, кто выбрал низкое разрешение.

    3. 3D Studion *.3DS

      Этот формат файлов отводит под имена текстур всего 8 байт, и 3 под расширение. Поэтому при сохранении в этот формат, надо сперва изменить названия файлов текстур на более короткие.

      Другая особенность этого формата файла - это то, что под индексы вершин отводится всего 2 байта или 16 бит. А в 16 бит помещается максимум 65536 элементов. Если же какой-то программой в них используются знаковые числа, то число элементов вообще уменьшается до 32767. Поэтому рекомендуется большие меши разделять на более мелкие.

    4. Quake I *.MDL

      Это формат моделей из игры Quake 1. Файлы *.mdl (не путать с моделями от Халф-Лайфа). Программа может их только читать. Внутри файлов находятся текстуры, модель и её анимации. Упаковка вершин сделана также как у формата *.md2. См. его описание. Сжатия текстурных координат не производится.

      Модели в этом формате в основном низкополигонные, так как игра старая, но смотрятся в общем то не плохо. В этом формате в игре записаны не только монстры, но и некоторые предметы, например горящие факелы.

      Некоторые фреймы в формате записываются со своими временами показа, эту информацию ЛОДка не читает, так как не умеет показывать фреймы с индивидуальным временем.

      Также не читаются ориентированные по осям коробки-коллайдеры и позиция камеры. Может быть позже будут добавлены.

      Формат тестировался на малом колличестве файлов, так что если у вас какой-то файл не открывается - присылайте, посмотрим. Также интересуют сайты где можно скачать побольше моделей этого формата. Знаете - пишите.

    5. Quake II *.MD2

      Это формат моделей из игры Quake 2. Файлы *.md2. Программа может их читать и записывать. К сожалению формат позволяет хранить только один меш и одну фэйс-группу. Зато размер файла получается довольно небольшим из-за того, что на каждую вершину в нём отвтдится всего 3 байта, вместо обычных 12 ( 3 числа типа Single ). Это достигается за счёт того, что для каждого фрейма хранятся свои масштаб и позиция, а вершины его как бы рассполагаются на шкале от 0 до 255. Минимальная на нуле, максимальная на 255, а остальные округляются к ближайшим целым числам. Таким образом происходит потеря качества, но зато размер ужимается почти в 4 раза.

      Подобное сжатие происходит и с текстурными координтами, только их ужимают менее крепко. До четыёрх байт, вместо обычных восьми ( 2 числа типа Single ).

      Каждый файл может хранить до 32 скинов. После открытия файлов скины помещаются в описание файла Menu->File->LOD-file info. Там создаётся блок с тестком 'Additional data from md2 file=', после которого идёт имя файла. Строчкой ниже перечисляются скины строками типа : Skin=weapons/unit01/weapon.pcx. Таких строк может быть несколько. То, что после слов 'Skin=' и есть имя текстуры с относительным путём. Его можно исправить, удалить или вписать своё.

      Помимо имени текстуры далее могут идти дополнительные данные OpenGL. Я не знаю что это, поэтому в ЛОДке они помещаются в виде блока шестнадцатеричных 32-битных чисел. Их тоже можно редактировать, или удалить.

      При сохранении все эти данные блока считывается и помещаются обратно в файл.

      В файл можно сохранять как анимированные модели, так и статичные, при этом в них просто создаётся один единственный фрейм с данными.

      Из проблем с форматом файла могу отметить следующие:

      • Непонятно что за параметр LightNormalIndex размером в байт, который пишется для каждой вершины. Вернее можно догадаться, что это индекс нормали, но откуда берутся сами нормали - не знаю.
      • Почему-то после чтения данных OpenGL и концом блока остаются недочитанными какие-то данные. Хотелось бы знать что они из себя представляют.
      • Непонятно что за данные хранятся в блоке OpenGL. То есть, понятно, что там команды OpenGL, но хотелось бы больше подробностей.

      Кто знает ответы - пишите.

    6. Quake III *.MD3

      Это формат моделей из игры Quake 3. Файлы *.md3. Программа может их читать и записывать. Формат позволяет хранить много мешей, но не позволяет хранить более одной фэйс-группы на меш. Поэтому при сохранении, меши у которых много фэйс-групп делятся на части, по одной фэйс-группе на каждый меш.

      Помимо мешей формат позволяет сохранять кости и коллайдеры. На каждый фрейм анимации приходится по одному положению для каждой кости и по одному коллайдеру.

      Модели актёров в Quake 3 состоят из четырёх частей (ноги, торс, голова, оружие). Каждая часть имеет свои анимации, которые могут проигрываться независимо от остальных. Руки могут стрелять, а ноги в этом время бежать, прыгать, присядать, стоять, ходить. А руки в этом время могут подолжать стрелять независимо от действий ног.

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

      К сожалению в формате md3 нет стандартных средств для хранения анимаций, поэтому к каждой анимации требуется файл *.cfg. Это не очень удобно. И поэтому программа LODka делает небольшой трюк, чтобы этого избежать. В конец поля (StrFile) заголовка файла заносится сигнатура 'LODka3D', а в имена коллайдеров, которые в принципе зачем нужны - непонятно, заносятся имена анимаций текущего фрейма. Таким образом если открывать сохранённый ЛОДкой файл, то программа сначала проверяет наличие сигнатуры в заголовке, и если сигнатура присутствует, интерпретирует имена коллайдеров как анимации, к которым фреймы относятся.

      Для сохранения вершин в формате md3 используется сжатие. Вместо 12 байт на вершину (3 числа типа Single), отводится 6 байт (3 числа типа SmallInt). Это накладывает определённые ограничения. Положения вершин должны быть в области от -512 до 511,984375 .

      Каждый меш в этом формате может иметь несколько скинов. При загрузке список скинов извлекается из файла и помещается в виде текста в информацию о файле. File->LOD-file info. Там её можно отредактировать, и при сохранении информация запишется обратно в файл.

      Поскольку программа может содержать много коллекций анимаций, а формат MD3 поддерживает только одну, то при сохранении, если коллекций много, будет задан вопрос, какую именно коллекцию сохранять.

  10. Описание кнопок

    1. Описание кнопок окна редактора

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Select vertex by mouse
        FastKey: F1
        - включить режим выбора мышью вершин. Когда в редакторе обводим рамкой область, или просто кликаем в него мышью - выбираются точки попавшие в область, или точка находящаяся поблизости от клика соответственно. Степень близости можно задать параметром Menu->Edit->Point selection size.
        Быстрая клавиша - F1. Повторное нажатие на F1 переводит редактор в режима выбора треугольников.
      • Select triangles by mouse
        FastKey: F1
        - включить режим выбора мышью треугольников. Когда в редакторе обводим рамкой область, или просто кликаем в него мышью - выбираются треугольники, центры которых попали в заданную область, или те/тот на который пришёлся клик соответственно.
        Быстрая клавиша - F1. Повторное нажатие на F1 переводит редактор в режима выбора вершин.
      • Enable: select only visible vertex/triangles
        Disable: select all vertex/triangles
        FastKey: F2
        - если в нажатом состоянии, то выбираются только видимые треугольники, если в отпущенном, то все насквозь.
        Быстрая клавиша - F2.
      • Enable : Insert points/triangles mode
        Disable : Selection mode
        FastKey: F3
        - режим вставки точек/треугольников. Если в этом режиме, удерживая клавишу Shift, кликать по модели левой кнопкой мыши, то в месте клика будут добавляться новые точки. А если кликать правой кнопкой мыши, то треугольник, на который пришёлся клик будет разделён на три части в месте клика. При этом его отекстуренность сохранится.
        Если же при клике левой кнопкой мыши удерживать нажатыми клавиши Shift и Ctrl, то разделён будет не треугольник, а его ближайшая к месту клику грань. При этом отекстуренность также сохраняется.
        Быстрая клавиша - F3.
      • Enable: texture editor
        Disable: model editor
        FastKey: F4
        - переключиться на редактор текстуры. Редактор текстуры показывается в том же окне, что и трёхмерный вид.
        Быстрая клавиша - F4.
      • Enable/Disable lightig Включить/выключить освещение.
      • Light schemes ... Показать окно редактора световых схем.
      • LightMap generator ... Показать окно генератора карты освещения ( лайтмэпа ).
      • 1 or 4 viewers - переключиться в четырёхоконный режим. Добавляются 3 вида в ортогональной проекции. При этом в левом верхнем угле отображён вид по оси X, в правом верхнем по Y, слева внизу по Z, а справа внизу - трёхмерный вид, или редактор текстуры.
        Первое переключение может занять некоторое время, зато последующие осуществляются быстрее.
      • Ortogonal change camera up - меняет у камеры Up. То есть верх и низ меняются местами. Доступная только для камер ортогональных проекций.
      • Ortogonal change camera side - заставляет камеру смотреть с обратной стороны. Доступно только для камер ортогональных проекций. То есть если, допустим, раньше смотрели на модель по оси X в одном направлении, то теперь смотрим на модель по той же оси X, но только с другой стороны.
      • Set custom undo
        Fast Key : F8
        - установить точку возвращения Undo "в ручную". Сделано на случай, если в каком то месте они не ставятся, или ставятся, но как то не так.
        Быстрая клавиша - F8.

    2. Описание кнопок Model->Mesh

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список мешей.
      • Insert - создать новый меш, и вставить его в выбранную позицию.
      • Delete - удалить выбранный меш.
      • Rename ... Fast key: F2 - переименовать выбранный меш. Быстрая клавиша - F2.
      • Move Up - двигать выбранный меш вверх по списку.
      • Move Down - двигать выбранный меш вниз по списку.
      • Clone - клонировать меш. То есть создать точно такой же в конце списка. Другое у нового меша только имя.
      • Centrate ...
        +Shift Centrate all ...
        - позволяет отцентрировать меш, то есть все его точки, по осям координат X Y Z. В появившемся окошке надо указать тип центрирования для каждой из них.
        • none - означает, что центрировать по этой оси не нужно.
        • by up - означает, что меш должен сдвинуться так, чтобы его самая верхняя точка оказалась в нуле.
        • by down - означает, что меш должен сдвинуться так, чтобы его самая нижняя точка оказалась в нуле.
        • by center - означает, что меш должен сдвинуться так, чтобы самая верхняя его точка отстояла от нуля на столько же, на сколько и нижняя. То есть, чтобы он встал по центру.
      • Если при нажатии на кнопку удерживать клавишу Shift, то отцентрированы будут все меши. То есть вся модель одновременно.

    3. Описание кнопок Model->Points

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список точек. На эту кнопку бывает полезно нажать перед тем, как выбирать точки из списка. При нажатии на кнопку в строке состояния появляется надпись сколько всего точек на данный момент выделено.
      • Clone - клонировать все выделенные точки. То есть создаются точно такие же точки как и выделенные и помещаются в конец списка.
      • Insert ... - вставить точку. Появляется окно, для ручного ввода координат той точки, которую нужно вставить в список. Вставляется новая точка в конец списка. Если нужно вставить точку в текущую позицию, то она списка, то при нажатии на кнопку Insert нужно удерживать нажатой клавишу Shift.
        Вообще вставлять точки в ручную - не самый лучший способ создания моделей. Горазды проще добавлять не отдельные точки, а примитивы ( элементарные объекты ). Их можно выбрать на закладке Primitives в разделе Type и создать нажатием клавиши Create.
      • Delete - удалить все выбранные точки. А также все треугольники в которых они задействованы.
      • Move Up - двигать выбранные точки по списку вверх.
      • Move Down - двигать выбранные точки по списку вниз.
      • Inverse selection - инвертировать выделение точек. То есть помеченные точки становятся непомеченными, и не помеченные становятся помеченными.
      • Deselect/Select All - Если есть выделенные точки, то с них выделение снимается, а если нет выделенных точек, то выделяются они все. Тоже самое можно сделать нажатием средней кнопки мыши с удержанием клавиши Shift при включённом режиме точек ( переключается клавишей F1 )
      • Combine nearest points ...
        +Shift - just for current face
        +Ctrl - just for visible faces
        ++Alt - and just for selected points
        +Shift+Ctrl - calc distance between
        first 2 selected points
        - Объединяет находящиеся в одном месте или рядом друг с другом точки и/или делает модель немного более грубой , уменьшая в ней количество задействованных точек.
        Сначала в появившемся окне спрашивается какое расстояние между точками следует считать максимально допустимым, чтобы они считались одинаковыми и подлежали объединению.
        Далее составляются списки таких точек.
        После чего, перебираются все треугольники, и если в них оказываются точки попавшие в эти списки, то они заменяются на первые из них.
        Таким образом, из точек признанных одинаковыми оказываются задействованы только первые. А остальные ни в каких треугольниках больше не участвуют и могут быть удалены опцией Delete unused points.
        Если при нажатии на данную кнопку удерживать клавишу Shift, то опция будет применена только к текущей фэйс-группе.
        Если при нажатии на данную кнопку удерживать клавишу Ctrl, то опция будет применена только для видимых ( включённых ) фэйс-групп.
        Эту опцию полезно применять, чтобы между гранями треугольников не оказывалось дыр. Это может получиться, когда грани вроде бы прилегают друг к другу, но на самом деле используют разные точки, и поэтому когда при различных матричных преобразованиях эти точки немного расходятся. то между гранями образуются просветы. Таким багом грешил, например, один из первых Tomb Raider'ов ( какой именно уже не помню ).
        Если при нажатии на кнопку удерживать клавиши Shift и Ctrl одновременно, то будет вычислено расстояние между первыми двумя выделенными точками.
      • Delete unused points - удалить незадействованные в треугольниках точки. Обычно применяется сразу после опции Combine nearest points .... Или если удалялись какие то треугольники и после них остались лишние точки. Или если надо просто "почистить" модель.
      • Select triangles with 1
        or more selected points
        - выбрать в списке треугольников те, в которых присутствует хотя бы одна из выбранных точек.
      • Select triangles with
        exactly 3 selected points
        - выбрать в списке треугольников те, в которых все точки являются выбранными.
      • Delaunay ...
        Create triangles from selected points
        +Shift - alternative texturate ( triangle, plane )
        - создание треугольников по выбранным точкам.
        Чтобы узнать сколько именно точек в данным момент выделено можно нажать на Update и в строке состояния появится надпись.
        1. Если выбрано три точки - создаёт один треугольник. Если выбрано четыре точки, создаёт два треугольника с общей гранью.
          Нормали создаваемых треугольников всегда ориентируются на камеру.
          При удержании клавиши Shift выполняется альтернативное отекстуривание.
          То есть, если клавиша не нажата, то ищутся какие-нибудь уже имеющиеся текстурные координаты для выбранных точек, и используются они. Таким образом можно заткнуть дырку в уже отекстуренной модели, без необходимости подбора новых текстурных координат для вновь созданных треугольников.
          Если же найти текстурные координаты не удаётся, то точка ассоциируется с самой первой текстурной координатой из их списка.
          При нажатой клавише Shift ( альтернативное текстурирование ), новые треугольники всегда отекстуриваются четырёхугольником с текстурными координатами: 0.0, 0.1, 1.1, 1.0 .
        2. Если выбрано больше четырёх точек, то треугольники создаются по алгоритму. Delaunay. Это алгоритм позволяющий из выбранных точек создать поверхность.
          После нажатия на кнопку предлагается выбрать на какую плоскость проецировать точки, для создания поверхности. Проецировать можно на поверхности Y - Z, X - Z, X - Y и на камеру. Проще всего проецировать на камеру предварительно расположив её в нужной точке.
          Опция требует много памяти, и возможны некоторые глюки, если точек будет слишком много. На этот случай рекомендуется выделять их частями.
      • Snap selected points together ...
        +Shift - snap to grid
        - объединение выбранных точек воедино. Объединять можно по следующим осям : XYZ, X, Y, Z, XY, XZ, YZ. При объединении по осям XYZ, все выбранные точки треугольников объединяются о одну. А при остальных способах объединения, они только сдвигаются на общий геометрический центр по соответствующим осям.
        В качестве дополнения в этой же опции можно не собирать точки воедино, а сдвигать их к ближайшей грани. Это нужно, чтобы избежать дырок в моделях, в некоторых ситуациях. Называется эта опция Move selected points to nearest edge.
        Если при нажатии на кнопку удерживать клавишу Shift, то точки будут не объединяться, а сдвигаться к сетке с указанным шагом. С этой опцией надо быть осторожнее, потому, что при сдвигании к сетке шарообразных поверхностей, их вид будет портится. Кроме того, если шаг сетки будет выбран слишком большой, то некоторые поверхности могут пропасть.
      • Mirror ...
        Special rotation for selected points
        - Зеркало. Позволяет переместить выбранные точки зеркально относительно осей X, Y, Z. А также обменять их координаты по осям X и Y, Y и Z, Z и X.

    4. Описание кнопок Model->Texture coord

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список текстурных координат. На эту кнопку бывает полезно нажать перед тем, как выбирать координаты из списка.
        При нажатии на эту кнопку в строке состояния пишется сколько на данный момент текстурных координат выделено.
      • Delete - удалить выбранные текстурные координаты. При этом если в треугольниках была задействована такая текстурная координата, то вместо неё ставится нулевая из списка.
        Полностью удалить все текстурные координаты нельзя. Хотя бы одна должна быть.
      • Deselect/Select All - Если есть выделенные текстурные координаты, то с них выделение снимается, а если нет выделенных текстурных координат, то выделяются они все.
      • Inverse selection - инвертировать выделение текстурных координат. То есть помеченные текстурные координаты становятся непомеченными, и не помеченные становятся помеченными.
      • Combine nearest texture corrdinates ... - соединить воедино близлежащие текстурные координаты с заданной точностью. Аналог опции Model->Triangles->Combine nearest points, но только не для точек, а для текстурных координат.
        С этой опцией надо быть осторожным, так как некоторые текстурные координаты находятся очень близко друг от друга, но тем не менее не сливаются воедино.
      • Delete unused texture coordinates - удалить неиспользуемые в треугольниках текстурные координаты. Аналог опции Model->Triangles->Delete unused points. Snap selected texture coordinates together ... - объединяет выбранные текстурные координаты воедино. Аналог опции Snap selected points together ..., но только не для точек, а для текстурных координат. Объединение возможно по оси x Axis X, y Axis Y и по обоим осям All axises. В случае объединения по обоим осям, все выбранные точки заменяются на одну. В остальных случаях, точки только сдвигаются на их геометрический центр по выбранной оси.

    5. Описание кнопок Model->Rect

      Эта закладка доступна только в режиме редактора текстуры. Чтобы в него перейти надо нажать F4.

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Reposit rect ...
        +Shift - scale
        +Ctrl - change position
        - изменить положение рамки на текстуре. Можно позиционировать рамку через окошки Left, Top, Rigth, Bottom, можно средней кнопкой мыши, удерживая клавишу Shift, а можно здесь. Предлагается 3 варианта.
        • Whole texture - поставить рамку по всей текстуре.
        • Selected triangles - поставить рамку по выбранным треугольникам. Они подсвечены в редакторе текстуры.
        • Selected points - поставить рамку по выбранным точкам. Они подсвечены в редакторе текстуры.
        Если при нажатии на кнопку удерживать клавишу Shift, то рамку можно будет масштабировать.
        Если при нажатии на кнопку удерживать клавишу Ctrl, то рамке можно будет задать новую позицию.
      • Reposit selected points ... - переставить точки на текстуре по области рамки. В появившимся окне предлагается целая куча вариантов. Первая буква в них, X, Y и Z означает направление нормали, или откуда смотрит камера при наложении текстуры. Допустим мы смотрим сверху, то есть по оси Z и у нас в руках есть материя, которую мы хотим положить на модель. Легко убедиться, что при возможности поворачивать её на 90 градусов, и переворачивать обратной стороной вверх, у нас насчитывается восемь различных способов наложения. Эти 8 способов и задаются модификаторами up, down, up mirror, down mirror, rotate up, rotate down, rotate mirror up и rotate mirror down.
        Кроме того предлагается ещё несколько способов отекстуривания, начинающихся словами Each triangel, то есть каждый треугольник. Берутся по очереди все треугольники, и каждый из них отекстуривается одним из следующих способов.
        • All points to corners - расположить текстурные координаты треугольника по углам рамки.
        • One point to center of border - расположить две текстурные координаты по углам одной из сторон, а третью поставить на центр борта находящегося с другой стороны.
        • Center of triangle to center of rect - поставить координаты так, чтобы центр образованного ими треугольника оказался бы в центре рамки выделения.
        Если у вас есть ещё какие-нибудь идеи, пожелания как можно отекстуривать модель - пишите Подумаем.

    6. Описание кнопок Model->Face

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список фэйсов.
      • Insert - создать новый фэйс, и вставить его в выбранную позицию.
      • Delete - удалить выбранный фэйс.
      • Rename ... Fast key: F2 - переименовать выбранный фэйс. Быстрая клавиша - F2.
      • Move Up - двигать выбранный фэйс вверх по списку.
      • Move Down - двигать выбранный фэйс вниз по списку.
      • Change material ... - сменить материал ассоциированный с данным фэйсом. Список показываемых материалов соответствует списку на закладке Materials. После смены материала, все треугольники фэйса начинают отекстуриваться им.
      • Clone
        +Shift - Clone to another mesh ...
        - клонировать фэйс. То есть создать точно такой же фэйс в конце списка. Другое у нового фэйса будет только имя.
        При удержании клавиши Shift можно будет клонировать фэйс в другой меш. При этом спросят в какой именно меш клонировать и надо ли копировать только выбранный фэйс Current Face, или все помеченные галочками All selected Faces.
        При таком клонировании в другой меш будут скопированы не только фэйсы но и все точки их треугольников.

    7. Описание кнопок Model->Triangles

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список треугольников. На эту кнопку бывает полезно нажать перед тем, как выбирать треугольники из списка. При нажатии на эту кнопку в строке состояния пишется сколько на данный момент треугольников выделено.
      • Build a contour ... - Берёт выделенные треугольники и вытягивает их из модели в выбранном пользователем направлении X, Y, Z, -X, -Y, -Z, +Camera, -Camera на заданное расстояние. Вокруг вытянутых из модели треугольников создаётся контур из треугольников так, что модель остаётся цельной. С помощью этой опции можно не только вытянуть треугольники, но и вдавить их внутрь выбрав другой знак.
      • Clone
        +Shift - without points
        - клонировать все выделенные треугольники вместе с их точками, и добавить и те и другие в конец списков.
        Если при нажатии на кнопку удерживалась клавиша Shift, то будут клонированы только треугольники, без точек. То есть и новые и старые треугольники будут ссылаться на одни и те же точки. Это может пригодиться, например, для создания второй стороны поверхности. Тогда после такого клонирования полезно воспользоваться кнопкой Invert normals, чтобы повернуть нормали вновь созданных треугольников в обратную сторону.
        При клонировании со старых треугольников и точек выделение снимается, а вновь созданные наоборот выделяются.
      • Delete - удалить выбранные треугольники. При этом их точки не удаляются. Чтобы после удаления не оставалось незадействованных ни в каких треугольниках точек, можно воспользоваться опцией Model->Points->Delete unused points.
      • Move Up - двигать выбранные треугольники по списку вверх.
      • Move Down - двигать выбранные треугольники по списку вниз.
      • Deselect/Select All
        +Shift - Select/deselect vector dot product ...
        - Если есть выделенные треугольники, то с них выделение снимается, а если нет выделенных треугольников, то выделяются они все. Тоже самое можно сделать нажатием средней кнопки мыши с удержанием клавиши Shift при включённом режиме треугольников ( переключается клавишей F1 )
        Если при нажатии кнопки удерживать клавишу Shift, то появится меню, через которое можно выделять/снимать выделение с треугольников, чьи нормали находятся под определённым углом к осям X, Y, Z или к нормали плоскости камеры.
        В верхнем списке выбираем ось и её направление: +X, -X, +Y, -Y, +Z, -Z, to camera ( на камеру ), в нижнем задаём максимально допустимый угол на которой нормаль треугольника должна отклоняться от выбранной оси, чтобы треугольник был выделен/спрятан. Угол задаётся в градусах, и может быть от 0 до 180.
        Проще всего понять как это работает, это создать сферу размером где-нибудь 20 на 20. И попробовать у неё выделять с помощью этой опции различные треугольники.
      • Inverse selection - инвертировать выделение треугольников. То есть помеченные треугольники становятся непомеченными, и не помеченные становятся помеченными.
      • Move selected triangles
        to another group ...
        - Переместить выбранные треугольники в другую Фэйс-группу. При нажатии на кнопку показывается список всех фэйс-групп во всех мешах. Если вы копируете треугольники в пределах данного меша, то копируются только треугольники. Если же копирование идёт в другой меш, то копируются также и точке выбранных треугольников.
      • Invert normals - перевернуть нормали выбранных треугольников в обратную сторону.
      • Rotate normals
        to camera
        - повернуть нормали выбранных треугольников на камеру.
      • Subdivide each of selected
        triangles to 3 parts
        - разделить каждый из выбранных треугольников на три части, путём постановки в его центр новой точки. Текстурная координата для новой точки определяется аналогичным образом.
        Один из полученных новых треугольников ставится в списке на место исходного, остальные добавляются в конец списка.
      • Subdivide each of selected
        triangles to 4 parts
        - разделяет каждый из выбранных треугольников на четыре части, путём разделения каждой его грани поровну и создания в его центре нового треугольника. Текстурные координаты для новых точек определяются аналогичным образом.
        Один из полученных новых треугольников ставится в списке на место исходного, остальные добавляются в конец списка.
      • Turn edge of 2 selected jont triangles - перевернуть общую грань двух треугольников. Опция может не сработать, если будет выделено больше двух треугольников ( чтобы узнать количество выделенных можно нажать на Update ) Треугольников должно быть выделено строго два, и они обязательно должны иметь общую грань. Иногда может только казаться, что у треугольников есть общая грань, а на самом деле они состоят из разных точек находящихся или в одном месте или очень близко друг к другу, в чём можно убедиться заглянув в списки. Чтобы совместить близкие точки можно воспользоваться кнопкой Model->Triangles->Combine nearest points.
        Проще всего понять как работает эта опция можно создав примитив Primitives->Plane->2x2->Create, и выделив два его треугольника нажимать на эту кнопку.
      • Subdivide 2 selected
        triangles to 4 triangles
        - разделить 2 выбранных треугольника с общей гранью на 4 части. При нажатии на кнопку, общая грань делится посредине, разделяя таким образом каждый из треугольников надвое. Расчёт текстурной координаты новой точки производится аналогичным образом.
        Почему может не срабатывать эта опция, см. комментарий к опции Turn edge of 2 selected jont triangles
        Вообще довольно редко требуется разделять грань ровно по центру, чтобы это сделать в произвольной точкой можно переключиться в режим вставки F3 одновременно нажать Shift и Ctrl и кликнуть на нужную грань левой кнопкой мыши.
      • Extract points
        Makes points of selected triangles unique.
        - открепить точки выделенных треугольников от остальных не выбранных треугольников. То есть если выбрать несколько треугольников на какой-нибудь поверхности, и начать их двигать, то окружающие треугольники будут двигаться вместе с ними. А если их сначала открепить, то при их смещении, остальные треугольники останутся на месте, и в модели в этом месте возникнет дырка.
      • Extract texture coordinates
        Makes texture coordinates
        of selected triangles unique
        +Shift - and only for selected points
        - делает для текстурных координат тоже самое, что и опция Extract points для точек.
      • Select points of selected tirangles - выделить точки выделенных треугольников.
      • Select texture coordinates
        of selected tirangles
        +Shift - and only for selected points
        - делает для текстурных координат тоже самое. что и опция Select points of selected tirangles для точек.
      • Join triangles - собирает выбранные треугольники в один или в два. Если, скажем, это треугольник разделённый опциями Subdivide each of selected triangles to 3 parts или Subdivide each of selected triangles to 4 parts, то он будет собран в один. А если это некое непонятное нагромождение треугольников, то программа попытается создать из них плоскость. Два треугольника с общей гранью. Само собой это возможно не всегда, поэтому иногда получаются в модели дыры. Чтобы этого не случалось, следует выбрать поменьше треугольников и повторить попытку.
      • Clean - небольшой очиститель для треугольников. Опция Delete invisible triangles удаляет невидимые треугольники, у которых, два или три угла образованы одной и той же точкой. Почему то у некоторых моделей такое бывает.
        Опция Make untistrip предназначена для борьбы со стрипами. Это такой вариант хранения треугольников, когда каждый треугольник задаётся одной точкой а остальные три задаются двумя предыдущими. Визуально это выглядит как сильно дырявая модель.
        Во всех остальных случаях опция бесполезна.
        Опция Select triangles with minimum area позволяет выделить треугольники, чья площадь меньше указанной. Их можно осмотреть и удалить ненужные.
      • Smoothing groups panel - показать панель редактирования групп сглаживания.

    8. Описание кнопок Material

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список материалов.
      • Create a new material - создать новый материал, и поместить его в конец списка.
      • Delete
        +Shift - delete only texture
        +Ctrl - delete unused materials
        - удалить материал. Если при нажатии на кнопку удерживать клавишу Shift, то удалена будет только текстура материала.
        Если при нажатии на кнопку удерживать клавишу Ctrl, то будут удалены все неиспользуемые в модели материалы.
      • Rename ... Fast key: F2 - переименовать выбранный материал. Быстрая клавиша - F2.
      • Load texture ...
        +Shift - Load material library ...
        - загрузить в материал новую текстуру.
        Если при нажатии на кнопку удерживать клавишу Shift, то можно будет загрузить библиотеку материалов в формате движка GLScene ( *.glml ).
      • Save as ...
        +Shift - Save material library ...
        - сохранить текстуру материала в файл. При сохранении в формат jpg задать качество можно через меню: File->Save options->Jpeg quality range ...
        Если при нажатии на кнопку удерживать клавишу Shift, то можно будет сохранить библиотеку материалов в формате движка GLScene ( *.glml ).
      • Copy texture to clipboard - скопировать текстуру в буфер обмена. Формат bmp.
        Буфер обмена позволяет организовать небольшое Undo для материалов. То есть, можно скопировать текстуру в буфер обмена, произвести над ней некоторые действия, и если результат не понравился, то вставить текстуру из буфера обмена обратно.
      • Paste texture from clipboard - вставить текстуру из буфера обмена. Формат bmp.
      • Textrue effects >
        +Shift - for whole texture
        - при нажатии на кнопку появляется всплывающее меню, в котором можно выполнить некоторые действия над выделенной рамкой частью текстуры материала. Если при выборе пунктов меню удерживать клавишу Shfit, то действие будет происходить не над выделенной частью текстуры, а над всей текстурой сразу.
        Установить рамку на всю текстуру можно в Mesh->Rect->Reposit rect ... , выбрав пункт меню Whole texture.
        • Random texture 128x128 - создать случайную разлинованную текстуру размером 128 на 128. Цвет выбирается случайно. Опция удобна, когда надо быстро покрыть модель, хоть какой-нибудь текстурой, чтобы посмотреть, как она будет выглядеть.
        • Random texture Custom size - создать случайную разлинованную текстуру произвольного размера, который предлагается задать. Цвет выбирается случайно. Лучше создавать текстуры с размерами сторон кратными квадрату двойки. То есть 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096. Именно с такими текстурами работает OpenGL, а отличные от них, он масштабирует к этим числам, что отнимает некоторое время и портит качество.
        • Fill with color - залить текстуру выбранным цветом.
        • Fill with color Custom style - залить текстуру выбранным цветом c выбором типа заливки.
        • Chess-board - нарисовать шахматную доску выбранными цветами. Если размер клеток по горизонтали выбран равным нулю, то рисуются вертикальные полоски. Если размер клеток по вертикали выбран равным нулю, то рисуются горизонтальные полоски.
        • Round rect - опция подобная заливке текстуры выбранным цветом, но при этом скругляет края и рисует контур, если его размер указан большим нуля.
        • Ellipse - рисует эллипс вписывая его в указанную область, при этом рисует контур эллипса дополнительным цветом, если его размер указан большим нуля.
        • Blur - Размыть текстуру. По Гауссу. Требуется указать радиус размытия. Опция полезна для карт освещённости, чтобы сделать переходы света и тени не такими резкими. Иногда у этой опции бывают глюки, поэтому в таком случае, следует слегка изменить значение радиуса и повторить попытку.
        • Noise - Добавить шум. Уровень шума может быть от 1 до 255. Можно использовать монохромный тип шума, если поставить соответствующую галочку.
        • To gray - Сделать текстуру чёрно-белой.
        • Invert colors - Изменить цвета на противоположенные.
        • Sharpen - Сделать текстуру более резкой.
        • Gamma - Сделать текстуру более светлой если ввести число большее единицы, или более тёмной, если меньше единицы.
        • Resize - Изменить размер текстуры. В появившемся окне предлагается ввести новые размеры текстуры, после чего, она будет перемасштабирована под них.
        • Crop - Обрезать текстуру по рамке.
        • Text - Выводит введённый текст в заданную рамкой область выбранным шрифтом. Если текст не влезает, то он обрезается. Шрифт можно выбрать нажав на кнопку Select font .... Выбирать можно не только буквенные, но и символьные шрифты. такие как WingDings, Webdings, Symbol и тому подобные. Тогда можно рисовать и различные значки. Текст в окне вводится именно тем шрифтом, который выбран.
      • Select color ...
        +Shift - second material
        +Ctrl - exchange colors
        - выбрать основной или дополнительный цвет, если при нажатии на кнопку удерживать клавишу Shift. Используется в текстурных эффектах. Цвета по умолчанию - это чёрный как основной, и белый как дополнительный.
        Чтобы обменять цвета местами ( основной и дополнительный ), то надо при нажатии на кнопку удерживать клавишу Ctrl.
      • Select font ... выбрать шрифт. Шрифт используется в текстурном эффекте Text.

      Не забывайте сохранять созданные и отредактированные текстуры !

    9. Описание кнопок Actor->Bones

      Это тот древовидный список, который находится в самом верху закладки Actor.

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список костей.
      • Insert
        +Shift - get matrix from bone
        +Ctrl - set matrix to center of selected points
        - создать новую кость и прикрепить её к выбранной в данный момент кости.
        Если удерживать нажатой клавишу Shift, то появится возможность выбрать любую кость и скопировать её ротацию Rotation, позицию Position, или их обоих одновременно Both в выбранную кость. Позиция и ротация - в локальных координатах. То есть относительно предыдущей кости.
        Если удерживать нажатой клавишу Ctrl, то при клике кость установится на центр масс выбранных точек. Эта опция может пригодиться, например для того, чтобы, установить ось ( кость ) строго на центр колеса.
      • Delete - удалить выбранную кость. Или если выбрана корневая кость, то удаляется весь скелет. При этом возникает вопрос на подтверждение удаления.
      • Rename ... Fast key: F2 - переименовать выбранную кость. Быстрая клавиша - F2.
      • Select assigned points - выделить точки, ассоциированные с выбранной костью. На другие точки эта опция никак не влияет.
      • Select unassigned (root) points - выделить точки, не ассоциированные ни с какой точкой. Такие точки считаются ассоциированными с нулевой костью. Поэтому, это тоже самое, что выбрать нулевую кость и нажать на Select assigned points.
        На другие точки эта опция никак не влияет.
      • Assign selected points to selected bone
        +Shift - add or set bone and weight
        +Ald - normalize weights
        - проассоциировать все выделенные точки с выбранной костью, удаляя все имеющиеся ассоциации с костями, если они были. На ассоциированность всех других точек эта опция никак не влияет.
        В случае, если при нажатии удерживается клавиша Shift, то происходит добавление кости к выделенным точкам, при этом появляется окошко в котором надо ввести значение веса или формулу по которой этот вес должен быть вычислен. Подробнее об этом см. раздел работа с развесовками костей.
        Если при нажатии удерживать клавишу Alt, то вес кости нормализуется, то есть будет приведён к единице. Эта опция работает когда на вершину приходится более одной кости.
      • Assign selected points to a root bone
        +Shift - unassign selected points from selected bones
        - проассоциировать все выделенные точки с корневой точкой, при это все имеющиеся ассоциации с костями, если они были, удаляются. Это тоже самое, что выделить корневую кость и нажать на Assign selected points to selected bone.
        На ассоциированность всех других точек эта опция никак не влияет.
        В случае, если при нажатии удерживается клавиша Shift, то происходит удаление ассоциации выделенных вершин только с выбранной костью, все остальные ассоциации с костями не изменяются. Эта опция работает когда на вершину приходится более одной кости.
        Подробнее об этом см. раздел работа с развесовками костей.
      • Scale skeleton ... - при это спрашивается на сколько надо умножить линейные размеры скелета по трём осям, и какой тип масштабирования. То есть если All bones, то масштабируется весь скелет, а если Current bone, то масштабируется только выбранная кость.
        В процессе масштабирования преобразовываются все фреймы всех анимаций.
      • Set matrix to all antimations - присвоить матрицу выбранной кости всем матрицам этой же кости во всех фреймах всех анимаций.
        После добавления к имеющемуся скелету новой кости, то во всех анимациях ей присваиваются нулевые позиции и ротации. Таким образом в анимациях она как бы сливается со своей предшественницей и невидна́. Поэтому если ей в режиме создания скелета были присвоены другие значения, то их можно присвоить и костям в анимациях.
        Также через эту опцию удобно обнулять анимирование в какой-либо кости.

    10. Описание кнопок Actor->Animations

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список анимаций.
      • Clone - клонировать выбранную анимацию. Если надо начать анимирования, то проще всего выбрать первую анимацию, обычно состоящую из одного фрейма, и клонировать её. При этом изменится только её имя.
      • Rename ... Fast key: F2 - переименовать выбранную анимацию. Быстрая клавиша - F2.
      • Delete - удалить выбранную анимацию.
      • Make skeletal translation static
        +Shift - invert
        - Преобразовывает сдвигающиеся smd-анимации от моделей Half-Life в статические. Обычно это анимации ходьбы, или бега, которые уползают назад. Почему там это так - для меня загадка. В общем берётся положение из начального и конечного положения актёра. По ним рассчитывается сдвиг за 1 кадр, после чего все фреймы сдвигаются на размер этого сдвига помноженный на номер фрейма.
        Если при нажатии удерживать клавишу Shift, то сдвиги просто инвертируются. То есть если актёр при ходьбе сдвигался назад, лунной походкой Майкла Джексона, то теперь он будет нормально идти вперёд.
      • Move Up - двигать выбранную анимацию вверх по списку.
      • Move Down - двигать выбранную анимацию вниз по списку.

    11. Описание кнопок Actor->Animations->Frames

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список фреймов. Фреймы не имеют имён. У них есть некие условные названия в виде номеров, и иногда знаков плюс и буквы m после них. Плюс добавляется после клонирования, а буква m - после добавления средних фреймов.
        Если нажать на Update, то названия фреймов будут преобразованы к списку где первый фрейм - это 1, второй - 2, и т. д.
      • Clone - клонировать выделенные фреймы. После клонирования к каждому фрейму будет приписан сзади плюс. Чисто, чтобы не запутаться.
      • Delete - удалить все выделенные фреймы.
      • Move Up - двигать выбранные фреймы вверх по списку.
      • Move Down - двигать выбранные фреймы вниз по списку.
      • Copy selected frames to ... - скопировать выбранные фреймы в другую анимацию.
      • Insert middle - рассчитать и вставить средние фреймы между выбранным и последующим. Выбран должен быть только один фрейм. В появившемся окне будет задан вопрос, сколько фреймов добавить, и какой использовать фактор скорости. То, сколько фреймов нужно добавить эквивалентно времени проигрывания. Так как на смену фреймов уходит равное количество времени. А фактор скорости - это то, насколько сильнее в каждом последующем фрейме сменятся позиции и ротации костей, относительно позиций и ротаций в предыдущем фрейме. То есть геометрическая прогрессия. Поэтому чем больше добавляется фреймов, тем сильнее этот фактор влияет. ( Возможно это не очень удобно, и если у кого есть идеи, как сделать лучше, то пишите, можно изменить )
        Если фактор скорости равен 1, то фреймы добавляются равномерно. Если больше 1, то с ускорением, если меньше 1, но больше 0, то с замедлением. Слишком большие или слишком маленькие значения лучше не применять, из-за возможных ошибок.
        Сначала рекомендуется решить сколько надо добавить фреймов, а потом подбирать фактор скорости. Если не понравилось, то можно сделать Undo, и повторить изменив значение.
        К названиям новых фреймов добавляется буква m.
      • Copy matrix to another bone ... - скопировать позицию и/или ротацию одной кости в другую кость, для выбранных фреймов. В появившемся окне предлагается выбрать исходную кость Source bone, целевую кость Destanation bone и тип копирования Copy type. Копировать можно только ротацию Rotation, только позицию Position, или и то и другое одновременно Both.
        После нажатия на OK, программа перебирает все выбранные фреймы текущей анимации и для каждого из них позиции/ротации исходной кости присваивает присваивает целевым костям.
        Координаты - локальные. Поэтому целевая кость будет выполнять те же движения, что и исходная, но находясь на другом месте.

    12. Описание кнопок Physics->Body&Geoms

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список тел и геометрий.
      • Add - добавить тело или геометрию. Если выбран корень Root, то добавляем тело. Если выбрано тело, то добавляем к нему геометрию.
        Добавление происходит в конец списка.
      • Clone - клонировать выделенное тело или геометрию. В случае клонирования тела, все его геометрии также клонируются. Изменяется только имя.
      • Delete - удалить тело или геометрию. В случае удаления тела, удаляются и все её геометрии.
      • Change color - изменить цвет которым эта геометрия отображается в редакторе. Новый цвет выбирается случайным образом.
      • Rename ... Fast key: F2 - переименовать выбранное тело или его геометрию. Быстрая клавиша - F2.
      • Move Up - двигать выбранное тело или геометрию вверх по списку.
      • Move Down - двигать выбранное тело или геометрию вниз по списку.

    13. Описание кнопок Physics->Joints

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Update - обновить список жоинтов. Имён у жоинтов нету, есть только порядковые номера.
      • Insert - добавить новый жоинт в конец списка.
      • Clone - клонировать текущий жоинт. В общем то аналогично Insert, но в отличии от него не обнуляет параметры жоинта, а копирует текущие. Новый жоинт добавляется в конец списка.
      • Delete
        +Shift - Delete all
        - Удалить выбранный жоинт. В случае если при нажатии удерживалась клавиша Shift, то удаляются вообще все жоинты.
      • Move Up - двигать выбранный жоинт вверх по списку.
      • Move Down - двигать выбранное жоинт вниз по списку.

    14. Описание кнопок окна редактора групп сглаживания Smooth groups

      Включить окно редактора групп сглаживания Smooth groups можно нажав на кнопку Model->Triangles->Smoothing group panel ...

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Select - выбрать ( выделить ) треугольники участвующие в указанной группе сглаживания. После выбора опции Select нужно нажать на номер нужной группы сглаживания ( или на кнопку Empty ), и тогда треугольники будут выбраны.
      • DeSelect - снять выделение с треугольников участвующих в указанной группе сглаживания. После выбора опции DeSelect нужно нажать на номер нужной группы сглаживания ( или на кнопку Empty ), и тогда с таковых треугольников будет снято выделение.
      • Assign - проассоциировать выделенные треугольники с указанной группой сглаживания. После выбора опции Assign нужно нажать на номер нужной группы сглаживания, и тогда треугольники будут проассоциированы.
        Внимание ! При этом ассоциирование треугольников с другими группами не снимается ! А только добавляется новая ассоциация. Чтобы снять все ассоциации с треугольников, нужно сперва кликнуть на кнопку Empty, а уже потом на нужный номер группы.
      • DeAssign - отключить ассоциирование выделенных треугольников с указанной группой сглаживания. После выбора опции DeAssign нужно нажать на номер нужной группы сглаживания. Номера располагаются ниже.
        Эта опция снимает ассоциацию только с указанной группой сглаживания, ассоциации же с другими группами сохраняются.
        Нажатие на кнопку Empty ни к чему не приводит.
      • 1..32 - цифровые кнопки. Это номера групп сглаживания. Каждый треугольник может участвовать он ни одной, до 32 групп сглаживания. Что произойдёт при нажатии на кнопку, зависит от того действия которое выбрано чуть выше. Действия - это : Select, DeSelect, Assign, DeAssign.
      • Empty - пусто. Отсутствие ассоциации с какой либо группой сглаживания. Что произойдёт при нажатии на кнопку, зависит от того действия которое выбрано чуть выше. Действия - это : Select, DeSelect, Assign, DeAssign.
      • Mark used ( sel trigs ) - пометить группы сглаживания, в которых участвуют выбранные треугольники. Пометка заключается в том, что рядом с цифрами групп сглаживания появятся звёздочки.
      • Mark used ( all trigs ) - пометить группы сглаживания, в которых участвуют все треугольники всех фэйс-групп данного меша. Пометка заключается в том, что рядом с цифрами групп сглаживания появятся звёздочки.
      • Auto Smooth - автоматическое создание групп сглаживания по заданному углу нормали. Угол задаётся в градусах. Если угол между нормалями треугольников меньше указанного, то они помещаются в одну группу сглаживания. С помощью этой опции можно быстро и легко развести треугольники модели по разным группам сглаживания.
      • Stay on top - оставаться поверх всех окно.
      • Close - закрыть окно.

    15. Описание кнопок окна редактора световых схем Light schemes

      Включить окно редактора световых схем light schemes можно через меню Menu->Edit->light schemes ..., или кнопкой над экраном редактора.

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • light schemes - расположены в левой части редактора. Под заголовком есть две закладки: LODka3D и File. На закладке LODka3D содержатся световые схемы программы. Они записаны в файле light.dat расположенном в папке программы. Файл генерирует программа при первом запуске, и пишет в него все свои световые схемы.
        А световые схемы расположенные на закладке File - это световые схемы открытого файла.
        Кнопки:
        • Update - обновить список световых схем.
        • Clone
          + Shift - clone to another page
          - клонировать выбранную световую схему. Если при нажатии на кнопку удерживать клавишу Shift, то схема будет скопирована на другую страницу. Таким образом можно добавлять схемы программы к схемам файла, и наоборот схемы файла к схемам программы.
        • Delete - удалить выбранную световую схему.
        • Rename ... Fast key - F2 - переименовать выбранную световую схему. Быстрая клавиша - F2.
        • Move up - двигать световую схему вверх по списку.
        • Move down - двигать световую схему вниз по списку.
      • Light sources - источники света выбранной в light schemes световой схемы. Их в каждой схеме восемь ( это ограничение OpenGL ), при этом включены могут быть только некоторые из них.
        В списке те которые помечены плюсом - включены. Помеченные минусом - выключены. Следующие три цифры - это их позиция в пространстве.
      • Options - правая часть редактора, где отображаются параметры выбранного в Light sources источника света.
        Параметры:
        • Shining - сияние. Включён или не включён данный источник освещения.
        • Position - позиция источника освещения в пространстве.
        • Direction - направление света. Имеет значение для прожекторов. Прожектор - это тип освещения Spot. И его параметр Spot cut of в области от 0 до 90. Также задаёт направление при типе освещения Parallel.
        • light style - тип источника освещения.
          • Spot - пятно. То есть имитирует прожектор. Правда, если pot cut of равно 180, то светит во все направления.
          • Omni - от слова omnidirectional, то есть всенаправленный или не имеющий определённого направления.
          • Parallel - светит по направлению заданному в Direction. Такой тип освещения помогает ускорить рендеринг.
        • Spot cut of - это угол распространения света при типе источника света Spot. То есть направление света, и этот угол, задают световой конус. А если угол задать равным 180 градусом, то это означает, что свет светит во все стороны.
        • Spot exponent - Коэффициент ослабления света прожектора. Чем больше, тем сильнее свет ослабляется при отклонении от оси прожектора, и тем более сконцентрированным выглядит свет.
        • Const attenuation - постоянная величина ослабления света, независимая от расстояния. Можно сказать, что это просто яркость.
        • Linear attenuation - величина ослабления света зависимая от расстояния до источника.
        • Quadratic attenuation - величина ослабления света зависимая от квадрата расстояния до источника. То есть ослабление происходит значительно интенсивнее чем при Linear attenuation. Удобно применять когда надо ограничить источник света, чтобы он не освещал комнаты за стенкой.
        • Ambient color - окружающий свет от этого источника. Окружающий - это значит, что свет не зависит от направления нормалей поверхности освещаемой модели. Это как свет в тени, в ясный солнечный день. Многократно отражённый от окружающих предметов свет, не имеющий явного источника, и освещающий всё равномерно.
          Для этого типа освещения имеет только расстояние до его источника.
        • Diffuse color - направленный свет. Он зависит не только от расстояния до источника, но и от нормалей поверхности модели. Если нормаль повёрнута от источника света, то значит эта поверхность в тени и не освещается. Если нормаль смотрит на источник света, то она освещается максимально сильно. Остальное - промежуточные значения.
        • Specular color - зеркальный свет. Он зависит не только от расстояния до источника, и нормалей поверхности модели, но и от положения наблюдателя ( камеры ). Максимальная яркость будет тогда, когда свет от источника отражаясь от модели попадает точно в камеру. Таким образом можно имитировать блик.

        Общая формула для вычисления ослабления света - это:
        k = Const attenuation +Linear attenuation*Distance +Quadratic attenuation*Distance*Distance

        Параметры света влияют на модель, только когда у её материала включён соответствующий параметр. Например, если у материала модели зеркальный цвет ( specular color ) выставлен в ноль, то есть в чёрный, то как его у источника освещения не увеличивай, на этот материал он влиять не будет.

    16. Описание кнопок окна генератора карт освещённости LightMap Generator

      Включить окно генератора карты освещённости ( лайтмэпов ) можно через меню Menu->Edit->LightMap generator ..., или кнопкой над экраном редактора.

      Чтобы увидеть значение кнопки, нужно навести на неё мышь и прочитать всплывающую подсказку.

      • Texture size - размер текстуры лайтмэпа. Именно такого размера текстура будет сгенерирована, и проассоциирована с материалом использующимся в качестве лайтмэпа у выбранной фэйс-группы. Если у этого материала уже была какая то текстура, то она будет заменена на текстуру лайтмэпа, так, что надо быть с этим осторожнее. Если материал лайтмэпа для фэйсгруппы не выбран, то он будет автоматически сгенерирован.
        Текстуры квадратные, их стороны могут иметь размерность кратную степеням двойки: 32, 64, 128, 256, 512, 1024, 2048, 4096. Кратность двойки связана с тем, что OpenGL работает именно с такими размерностями текстур, а если текстура имеет нестандартную размерность, то она предварительно переводится к такому формату, что отнимает некоторое время.
        Лайтмэпы для маленьких текстур генерируются значительно быстрее, чем для больших, но имеют худшее качество.
      • Log - показать/спрятать лог работы генератора карты освещённости. В него записываются этапы генерации и время на их осуществление. Первая цифра - время прошедшее с предыдущего этапа. Вторая - общая время с начала генерирования.
      • lightMap packing - позволяет расположить текстурные координаты треугольников на текстуре так, чтобы они не перекрывали друг друга и по-возможности соприкасались друг с другом теми же гранями, которыми они соприкасаются в модели. То есть образовывали группы.
        Опции:
        • Padding - расстояние между группами. В пикселях. Поэтому размер текстуры важен и здесь.
        • Normals angle - это максимальное расхождение нормалей треугольников, чтобы они считались находящимися в одной группе. Чем меньше, тем больше групп будет создаваться ( если, конечно, это возможно ). Задаётся в градусах.
      • Direct Lighting - это тип расчёта карты освещённости, при котором используются точечные источники освещения.
        Опции:
        • Calc shadows - рассчитывать ли тени ? Если нет, то расчёт идёт намного быстрее, но без теней. Для пробы можно рассчитывать без теней, а когда параметры освещённости будут смотреться хорошо, то можно включить и тени.
        • Octree accuracy - точность при вычислении теней. То есть насколько длина луча света, падающего на точку, рассчитанная при помощи алгоритма Octree может отличается от реального расстояния между источником света и вычисляемой точкой.
          Эта опция может пригодиться когда есть пересекающиеся треугольники. Если в местах пересечений наблюдаются нежелательные затемнения, то увеличение этой опции может в ряде случаев решить эту проблему.
        • Draft - черновик. Вычисляются не все точки подряд, а через раз. Образовавшиеся же дырки закрываются среднем арифметическим цветов близлежащих высчитанных точек. Опция нужна для ускорения.
        • Quality - качество. Если галочка стоит, то освещённость точек на текстуре вычисляется более точно. Что отнимает больше времени, но даёт лучшую точность.
        • Texture color - цвет текстуры в "пустых" местах. Между полигонами. Изначально текстура окрашивается именно в этот цвет, а потом уже вычисляются и рисуются на ней цвета точек полигонов.
        • Emission color - цвет добавляемый ко всем вычисляемым точкам ( в том числе и тем, которые находятся в тени ). С помощью этой опции лайтмэп можно осветлить. Если оставить параметр равным чёрному, то в тени будет абсолютная темнота.
        • Brightness - яркость источников освещения. Общая для всех источников. На места находящиеся в тени опция не влияет. С помощью этой опции можно одновременно сделать все источники освещения ярче или темнее.
          Удобно, когда надо подобрать яркость лайтмепа под текущую текстуру. На тёмных текстурах, лучше сделать её чуть побольше, на светлных - поменьше.
          Индивидуальную яркость источников освещения лучше менять не здесь, а через различные attenuation в редакторе световых схем.
      • Start - запуск генерации лайтмэпа. При этом будет показываться индикатор хода процесса генерирования и писаться этап на котором процесс находится.
      • Cancel - закрыть окно генератора или прервать процесс генерации, если он идёт.

  11. Разное

    1. ЛОДка не резиновая

      Это значит, что не надо испытывать программу на прочность. Миллиард вершин или треугольников ни в какую программу не влезет. Слишком сложно понаставить проверок на все возможные подобные ситуации, поэтому просто надо соизмерять возможности и не пытаться запихнуть в ЛОДку весь Vice City, или что-нибудь подобное. Скорее всего программа либо зависнет, либо вылетит без предупреждений.

      В Undo каждый раз сохраняются все текущие данные программы. То есть, если загрузить в ЛОДку тысячу анимаций, а потом начать их редактирвоать, то при каждом Undo, вся эта тысяча анимаций будут запоминаться. А если ещё при этом и размер Undo сделать огромным, то память в конце концов кончится. Если уж очень надо редактировать именно тысячу анимаций разом, то лучше уменьшить размер Undo до минимума.

      В прокси, скелетных и вершинных анимациях нельзя делать слишком больших уровней вложенности. Это ограничение не ЛОДки, а OpenGL.

      Слишком много огромных текстур тоже напихивать не рекомендуется.

    2. Язык программы

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

      Многоязыковой поддержки нет. Так как она довольно сильно усложняет программирование. Вместо простой строчки ShowMessage('Hello world!');, надо вводить переменную, вставлять её вместо текста, саму строчку переносить куда-то в другое место, что в последствии осложняет чтение и редактирования кода, да и сама программа раздувается.

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

    3. О копирайтах на программу LODka3D и формат *.lod файлов

      Программа является бесплатной для коммерческого и некоммерческого использования. Формат файлов *.lod также является бесплатным для коммерческого и некоммерческого использования.

      Единственная просьба упомянуть программу где-нибудь в титрах или в About.


Если вы не нашли тут ответа на свой вопрос, то рекомендуется :


©  LODka3D  2006 —
Hosted by uCoz