Дата: Понедельник, 09.07.2012, 16:07 | Сообщение # 1
Сообщений: [984]
Начало работы. Установка.
скачайте Maratis
распакуйте его в нужную вам папку
Что внутри:
Bin/ приложения Maratis и MaratisPlayer Examples/ несколько демок Maratis по использованию script, SDK, shaders… SDK/ Maratis SDK (c++) и библиотеки Utils/ Blender Export script
Однажды установив Maratis, вы можете связывать файлы проектов Maratis (.mproj) с Maratis.exe
Editor
Здесь расположено основное описание Maratis
Как перемещаться в меню просмотра VIEW :
Выбор обьекта: левый клик мышью (удерживать CTRL для множественного выбора ) Вращение: средняя кнопка мыши и движение мыши Зум: колёсико мыши Панорама: CTRL + средняя кнопка мыши + движение мыши
Вы можете начать открытие проекта примера: File > Load project > Examples/Demos/Demos.mproj
Вот как выглядит панель редактирования (edit), когда выбрана камера:
Вверху 3 кнопки: Transform / Properties / Behaviors Кнопка Transform изменяет только координаты объекта Кнопка Properties меняет настройки объекта (зависит от типа объекта) Кнопка Behaviors позволяет вам управлять поведением( в этом примере, камера включает поведения « LookAt » и « Follow »)
Project
Проект всегда загружает "старт" Уровня (Level), в предыдущем примере это был « Jules.level ». Вы можете загружать другие уровни проекта, нажав File > Load level
Как создать новый проект File > New project Лучший путь, что бы создать или выбрать проект это создать пустую папку, которая станет папкой вашего проекта. Когда это выполнено, Maratis автоматически создаст файл вашего проекта (.mproj) и папки основных данных:
Это место, куда вам следует копировать ваши производственные файлы (естественно вы можете создавать под папки). Текстуры на карте/ Модели на карте/ и т.д.
Это не обязывает вас использовать папки, но это настоятельно рекомендуется, особенно для организации и распространения
▬▬▬▬▬ Как создать игровой интерфейс.
В этом примере мы собираемся создать игровой интерфейс, используя С++ и Maratis SDK. Мы будем использовать демо SimpleGamePlugin(http://www.maratis3d.org/?p=500), как базовый проект и легко изменим класс Game (MyGame.h and MyGame.cpp).
Основная идея заключается в рисовании сцены панелью здоровья и курсором мыши (GUI сцены) одна над другой (текущая сцена):
1: Создание проекта:
В новом уровне создадим 2 сцены: - Scene-1 будет игровой сценой: На ней несколько коробок, с камерой в режиме перспектива и spot light с динамичными тенями
- GUIScene будет сеной интерфейса:
Модели, сделанные в Blender' с простой четырёхугольной текстурой, способ наложения текстур Материала это « Alpha blending ».
В Maratis, GUI объекты по осям X и Y, что бы быть в том же пространстве, что и координаты мыши. Для более лёгкой организации сцены в 2d, выберете режим просмотра « Bottom ».
Создадим камеру, ориентированную вдоль оси Z. Затем, в настройках камеры, выберите « Ortho », что бы активировать орфографическую проекцию (2D).
2: Создание игрового плагина
Теперь мы собираемся создать игровой плагин, взятый из SimpleGamePlugin Demo. -Мы модифицируем игровой класс, для отрисовки этой сцены поверх другой и для движения объекта курсора, согласно позиции мыши.
Давайте для начала разрешим следующие функции класса Game в MyGame.h(http://www.maratis3d.org/code/GUIDemo/MyGame.h) :
void onBeginScene(); void update(); void draw();
И напишем код в MyGame.cpp(http://www.maratis3d.org/code/GUIDemo/MyGame.cpp) :
Эти функции виртуальны, если они не настроены, они исполняют стандартный код Maratis. В этом примере мы хотим отрисовать текущую сцену нормально и просто отрисуем текущую сцену поверх.
DOWNLOAD THE COMPLETE PROJECT(http://www.maratis3d.org/download/GUIDemo.zip)
▬▬▬▬▬ Как создать игровой плагин.
В этом примере мы увидим, как создать игровой плагин, используя с++ и Maratis SDK. Создание игрового плагина и настройка поведения могут показаться сложными в начале и потребовать некоторого опыта в программировании.
1: Создание проекта
Начнём с создания нового проекта, для этого нажмём: File > New Project
Давайте назовём его « SimpleGamePlugin » (SimpleGamePlugin.mproj)
Экспортируйте или копируйте ваши игровые данные (модели, карты, звуки...) в соответствующие подпапки проекта. В этом примере я буду просто копировать заранее созданную модель коробки (box.mesh) в папку SimpleGamePlugin/meshs/
Добавим на текущую сцену: бокс (кнопка « add Entity »), свет и камеру.
Сохраните ваш проект, нажав: File > Save - В начале вас попросят создать файл уровня, пусть его имя будет « main » (main.level)
Закройте Maratis.
2: Создание игрового плагина
Теперь мы собираемся создать игровой плагин, содержащий настройку игрового класса и поведения. - В этом примере, игровой класс не будет делать чегото специального, и поведение будет просто вращать обьект, используя его.
Давайте создадим новую папку в папке проекта, назовём её, к примеру, « _GamePlugin ». В этом примере папка будет содержать исходный код, проект visual cpp и проект xcode (эквивалент visual cpp для mac). Цель - создать динамичную библиотеку, используя Maratis SDK.
В вашем проекте visual cpp, xcode или вашем makefile, добавьте:
Компилируйте и проверьте, что скомпилированная библиотека называется Game.dll (для windows) и Game.dylib (для mac) и расположена в той же папке, что и файл проекта.
Выберите коробку, и перейдите на панель поведения (слева) « MyBehavior » должно быть добавлено в список поведений.
Добавьте поведение и запустите игру, используя кнопку с пакменом. Бокс должен вращаться вокруг оси z, на « rotationSpeed ».
Для более полного использования настроек игры и поведения посмотрите « WaterGameDemo », дающее пример того, как создать поведение рыбы. Этот пример расположен в папке « Examples/ ».
▬▬▬▬▬ Скриптовые функции Maratis.
Ниже вы можете найти список скриптовых функций движка Maratis. Для более продвинутого использования рекомендуется использовать язык Lua.
Список функций:
Объект:
getObject(« objectName ») rotate(object, {x, y, z}, angle, « local ») translate(object, {x, y, z}, « local ») getPosition(object) getRotation(object) getScale(object) setPosition(object, {x, y, z};) setRotation(object, {x, y, z};) setScale(object, {x, y, z};) isVisible(object) activate(object) deactivate(object)
1) Запуск terragen -> настройка и генерация вашего terrain -> использование кнопки предпросмотра; 2) В окне рендера : - Отключите "Fixed height above surface" - Выберите наилучшее возможное качество - Выберите размер изображения 512*512
3) Откройте Блокнот, скопируйте скрипт и сохраните, как skyboxscript.tgs
Код
initanim "C:\sky", 1 ; You can set another path. ; The last part (here : "sky") is the prefix ; to name your files, and the first part ; (here : "C:\") show where you gonna save the files
;_ft Zoom 1.0 CamH 0 CamP 0 CamB 0 frend
;_lf Zoom 1.0 CamH 90 CamP 0 CamB 0 frend
;_up Zoom 1.0 CamH 270 CamP 90 CamB 0 frend
;_bk Zoom 1.0 CamH 180 CamP 0 CamB 0 frend
;_rt Zoom 1.0 CamH 270 CamP 0 CamB 0 frend
;_dn Zoom 1.0 CamH 270 CamP -90 CamB 0 frend
4) В terragen, в верхней части меню нажмите "Execute script" -> выберите ваш skyboxscript.tgs; 5) Как только рендер завершится, откройте папку, где вы сохраняли, в ней ваши 6 BMP файлов -> вы можете конвертировать их в JPG, если хотите; 6) Ура, сделали!
ПРИМЕЧАНИЕ: Присмотритесь к скрипту под каждой камерой вращение
Это разрешение вашего изображения так, когда вы отрендерите, переназовите их, используя любые имена, что бы вы знали, какие изображения ваши.
Использование Blender
Если вы хотите небольшое сокращение, то здесь .blend файл с готовой коробкой: (Включает: Skybox.blend1 и Skybox.blend2 я не знаю нужны ли они, что бы запустить Skybox.blend) http://dl.dropbox.com/u/19970067/Blender/Skybox.rar
Что я сделал здесь: - Разделил все 6 сторон куба - Развернул их - Прикрепил материал на каждую сторону, поставил материал "Emit" на (1.11). (спасибо anael) - Прикрепил текстуры и связал UV координаты (теперь вы должны просто открыть ваши изображения) - Назвал стороны, материалы и текстуры: UP, DOWN, LEFT, RIGHT, FRONT, BACK - Передвинул каждую сторону на 0.004 / -0.004 на правильном x/y/z так что ребра куба не видно (там было очень маленькое пространство на каждом краю куба, который был виден)
Здесь вы должны:
- Загрузить текстуры на каждую сторону куба; - Установите текстуры для каждой стороны UV карты окна (Edit режим).
- Изменим окно на "Textured" (это трудно выбрать стороны, когда вы в окне текстур без прикреплённых текстур) - Когда все стороны затекстурены, выберите сторону выберите стороны по одной и прикрепите на каждую из них: 1) В режиме Object -> Выберите сторону 2) Нажмите TAB для входа в Edit mode -> в Tool shelt, под кнопкой "normals", нажмите "Flip direction" (Текстуры будут отображены внутри куба а не снаружи) (В меню UV ( только для EDIT MODE) используй UV -> Mirror -> Ось X или ось Y если текстура отображается не правильно) 3) Снова нажмите TAB (что бы вернуться в Objet mode) и повторите шаг 1-2 для каждой стороны куба - Когда это будет сделано, нажмите "A" (выбрать всё) затем экспортируйте как maratis mesh (вы не присоединили стороны)
Как это должно выглядеть, когда всё сделано: Снаружи коробки
внутри
В maratis: Я не сказал, что это лучший способ сделать skybox, но это работает у меня и это было довольно быстро и легко это должно работать и у вас. И обратите внимание: вы можете изменять настройки в Terragen для создания совершенно разных атмосфер.
Если вы найдёте в этом туториале что-либо непонятное, ошибки, лучшие способы сделать это, путь для импровизации - просто скажите! И спасибо anael за указание для меня дороги!
Результаты :
NOTE: в maratis попытайтесь изменить camera FOV и посмотрите на результат
▬▬▬▬▬ Введение в использование .BVH файлов
Файлы *.bvh это ни что иное как текстовый файл, который хранит данные, полученные от движущейся скелетной системы. Другое название для этого типа файлов это "Motion Capture", которое сокращается как mocap.
Первый сайт имеет 2500 движений распространяемых бесплатно! Я никогда не тестировал bvh с других сайтов, потому что с 2500 движений от CG у меня было больше, чем мне когда либо было нужно =p
BVHacker - это бесплатная программа для настройки и организации BVH файлов, если они не удовлетворяют вашим нуждам. С ней вы можете:
• Просматривать BVH анимации • Модифицировать/откатывать совместные вращения и перемещения • Обрезать анимацию • Разбить частоту кадров по 2/4/8/16... • Добавить первый кадр с T позицией на bvh модель • Сохранять/Загружать bvh's • И ещё многое, но это всё что нам нужно пока
▬═ ПОДГОТОВКА BVH ═▬
Что бы использовать BVH в игре, скажем для играбельного персонажа, вы должны установить перемещение анимации на 0, которое заставит модель стоять на месте
- Вы будете использовать сброс всех перемещений Pivot в bvh, который установит вращения x, y, z на 0 (нажмите кнопку XYZ)
Это заставит анимацию замереть (это нужно, если вы хотите комбинировать несколько BVH файлов ->подробнее об этом позже)
Примечание:Не устанавливайте вращение pivot, иначе анимация будет плохо выглядеть (попробуйте для себя)
Было бы хорошо, если вы обрежете анимацию (ведь вам не нужно 1000 кадров для простого запуска цикла, который мог бы поместиться в 90 кадрах +/-)
Всё, что вам нужно сделать - здесь:
Mark in: выбирает начало движения Mark out: выбирает последний кадр Crop: удалить всё, что между Mark in и Mark out Knit: Удалить несколько кадров что бы сделать бесшовный цикл
Ниже пример, обрезанного, запущенного цикл:
Примечание:есть движение, которому не нужен идеальный цикл, маленький удар или что то типа того:
Потому, что они будут показаны один раз, за игру.
▬═ РАЗДЕЛ BLENDER ═▬
Простое использование BVH файла в blender
Шаг 1: Загрузите 3D модель
Шаг 2: Нажмите File -> Import BVH motion capture
Шаг 3: Ничего не трогайте и в поле Костей, выберите "Rest position" и активируйте X-rays
Шаг 4: Масштабирование, Перемещение, Вращение костей, что бы вписаться в модель (настолько, как только возможно)
Шаг 5: Выберите 3D модель -> Нажмите Shift -> Выберите кость, затем нажмите CONTROL + P, и выбирет Set Parent To -> With Automatic Weights
Шаг 6: Под Костным полем, нажмите "Pose position" и выключте X-rays
Шаг 7: Нажмите play на timeline и посмотрите результат
Если есть проблемы с весом отображения, вы можете исправить это с исправлением веса цвета и векторных групп
Выберите всё, экспортируйте через maratis exporter (не забудьте активировать анимацию).
▬═ "Сращивание" файлов BVH вместе ═▬
Шаг 1: Откройте Blender и установите окно на NLA Editor
Шаг 3: Нажмите на штуку, которая похожа на снежинку Вы получите это:
Шаг 4: Импортируйте другой BVH файл (теперь у вас будет 2 скелета на 3d сцене) Шаг 5: Повторите шаг 3
Шаг 6: Выберите первый BVH трек и в меню NLA Editor, нажмите Add -> Add track(s)
Шаг 7: Останьтесь в менюNLA Editor, нажмите Add -> Add Action strip, появится окно поиска, просто введите название вашего второго bvh файла, затем подтвердите
Шаг 8: Теперь вы можете удалить второй скелет, так как анимация сохранится в первом скелете, без перезаписи базовой анимации
Шаг 9: Выберите перввую анимационную панель и в инструмент shelt, установите extrapola на "nothing" и blender на "replace"
Примечание:С этим методом вы можете добавить любую анимацию, какую захотите:
а так же, легко регулировать скорость анимации (edit -> scale)
Ну это всё на сегодня.
▬▬▬▬▬ Применение анимированной текстуры на примере Blender и дальнейший экспорт в Maratis
Простая движущаяся текстура:
Применим текстуру (бесшовную) на вашу 3d модель Убедитесь, что UV отображается Перейдите в окно Animation, затем: Убедитесь, что вы на первом кадре timeline'а Перейдите под texture tab -> Mapping, и поместите курсор на "Offset"
(Примечание: нажмите левой кнопкой мышии на смещение по оси X или Y ,что бы увидеть результаты в реальном времени)
Нажмите "i", это добавит ключевой кадр на кадр 1, заметьте, что смещение будет желтеть и будет добавленно 3 опции в граф редактор, как вы можете видеть сдесь:
В окне Graph editor, снимите два смещения по осям (зависит от ваших нужд, сдесь мне просто нужно активировать Y ) и перейдите на последний кадрна Timeline (200 в этом случае) Установите смещение Y на 1.00, затем наведите вашу мышь за Offset снова и нажмите "i", это добавит другой ключевой кадр в кадре 200.
До сих пор, у нас был 1 ключевой кадр в кадре 1 со смещением Y : 0.00 и 1 ключевой кадр в кадре 200 со смещением Y : 1.00 (от 0 до 1 = один завершённый цикл)
Теперь, в окне graph editor, нажмите Key -> Interpolation mode -> Linear Это будет заменять изогнутые линии на прямые
Если вы не облажались, график должен выглядеть так:
Теперь экспортируйте в maratis используя экспортер (не забудьте активировать анимацию) И это всё.
В maratis, несколько примеров:
Привязка скрипта к объекту
В Maratis editor один раз нажмите "Add Mesh"
Выберите ваш объект и назовите его, как вам угодно (я оставил стандартное имя)
Теперь создайте новый текстовый файл в папке project/scripts, назовите его, как вам угодно, например: new.lua Я быстро отредактировал этот файл, в нём содержится скрипт, вращающий меш вокруг оси X.
Нажмите на кнопке Scene и поместите ваш скрипт:
Всё!
Примечание: Только один скрипт может быть добавлен на сцену за раз, что бы добавить больше нужно использовать 'dofile' функцию внутри скрипта и включать другие сложные скрипты.
Дата: Понедельник, 09.07.2012, 19:25 | Сообщение # 2
Сообщений: [34]
Не стал читать, не пользуюсь Maratis. Но то что ты переводишь статьи и выкладываешь здесь, это уже хорошо.) Кстати, стоить выложить еще сюда: http://make-games.ru/publ/ Назарбек
Дата: Понедельник, 09.07.2012, 22:15 | Сообщение # 6
( Разлагаюсь )
Сообщений: [936]
Сайко, да не за что. И поправь еще скобки в некоторых местах. Они должны отстоять на один пробел от слов вне, но не отстоять от слов внутри. Здесь что-то написано (наверное, это древние письмена)
Добавлено (09.07.2012, 22:15) --------------------------------------------- Если есть какие-то материалы на примете (для опубликования, для перевода), то стукни в аську. Тоже помогу с контентом.
В этом примере мы собираемся создать игровой интерфейс, используя С++ и Maratis SDK. Мы будем использовать демо SimpleGamePlugin(http://www.maratis3d.org/?p=500), как базовый проект и легко изменим класс Game (MyGame.h and MyGame.cpp).
Основная идея заключается в рисовании сцены панелью здоровья и курсором мыши (GUI сцены) одна над другой (текущая сцена):
1: Создание проекта:
В новом уровне создадим 2 сцены: - Scene-1 будет игровой сценой: На ней несколько коробок, с камерой в режиме перспектива и spot light с динамичными тенями
- GUIScene будет сеной интерфейса:
Модели, сделанные в Blender' с простой четырёхугольной текстурой, способ наложения текстур Материала это « Alpha blending ».
В Maratis, GUI объекты по осям X и Y, что бы быть в том же пространстве, что и координаты мыши. Для более лёгкой организации сцены в 2d, выберете режим просмотра « Bottom ».
Создадим камеру, ориентированную вдоль оси Z. Затем, в настройках камеры, выберите « Ortho », что бы активировать орфографическую проекцию (2D).
2: Создание игрового плагина
Теперь мы собираемся создать игровой плагин, взятый из SimpleGamePlugin Demo. -Мы модифицируем игровой класс, для отрисовки этой сцены поверх другой и для движения объекта курсора, согласно позиции мыши.
Давайте для начала разрешим следующие функции класса Game в MyGame.h(http://www.maratis3d.org/code/GUIDemo/MyGame.h) :
void onBeginScene(); void update(); void draw();
И напишем код в MyGame.cpp(http://www.maratis3d.org/code/GUIDemo/MyGame.cpp) :
Эти функции виртуальны, если они не настроены, они исполняют стандартный код Maratis. В этом примере мы хотим отрисовать текущую сцену нормально и просто отрисуем текущую сцену поверх.
DOWNLOAD THE COMPLETE PROJECT(http://www.maratis3d.org/download/GUIDemo.zip)
В этом примере мы увидим, как создать игровой плагин, используя с++ и Maratis SDK. Создание игрового плагина и настройка поведения могут показаться сложными в начале и потребовать некоторого опыта в программировании.
1: Создание проекта
Начнём с создания нового проекта, для этого нажмём: File > New Project
Давайте назовём его « SimpleGamePlugin » (SimpleGamePlugin.mproj)
Экспортируйте или копируйте ваши игровые данные (модели, карты, звуки...) в соответствующие подпапки проекта. В этом примере я буду просто копировать заранее созданную модель коробки (box.mesh) в папку SimpleGamePlugin/meshs/
Добавим на текущую сцену: бокс (кнопка « add Entity »), свет и камеру.
Сохраните ваш проект, нажав: File > Save - В начале вас попросят создать файл уровня, пусть его имя будет « main » (main.level)
Закройте Maratis.
2: Создание игрового плагина
Теперь мы собираемся создать игровой плагин, содержащий настройку игрового класса и поведения. - В этом примере, игровой класс не будет делать чегото специального, и поведение будет просто вращать обьект, используя его.
Давайте создадим новую папку в папке проекта, назовём её, к примеру, « _GamePlugin ». В этом примере папка будет содержать исходный код, проект visual cpp и проект xcode (эквивалент visual cpp для mac). Цель - создать динамичную библиотеку, используя Maratis SDK.
В вашем проекте visual cpp, xcode или вашем makefile, добавьте:
Компилируйте и проверьте, что скомпилированная библиотека называется Game.dll (для windows) и Game.dylib (для mac) и расположена в той же папке, что и файл проекта.
Выберите коробку, и перейдите на панель поведения (слева) « MyBehavior » должно быть добавлено в список поведений.
Добавьте поведение и запустите игру, используя кнопку с пакменом. Бокс должен вращаться вокруг оси z, на « rotationSpeed ».
Для более полного использования настроек игры и поведения посмотрите « WaterGameDemo », дающее пример того, как создать поведение рыбы. Этот пример расположен в папке « Examples/ ».
1) Запуск terragen -> настройка и генерация вашего terrain -> использование кнопки предпросмотра; 2) В окне рендера : - Отключите "Fixed height above surface" - Выберите наилучшее возможное качество - Выберите размер изображения 512*512
3) Откройте Блокнот, скопируйте скрипт и сохраните, как skyboxscript.tgs
Code
initanim "C:\sky", 1 ; You can set another path. ; The last part (here : "sky") is the prefix ; to name your files, and the first part ; (here : "C:\") show where you gonna save the files
;_ft Zoom 1.0 CamH 0 CamP 0 CamB 0 frend
;_lf Zoom 1.0 CamH 90 CamP 0 CamB 0 frend
;_up Zoom 1.0 CamH 270 CamP 90 CamB 0 frend
;_bk Zoom 1.0 CamH 180 CamP 0 CamB 0 frend
;_rt Zoom 1.0 CamH 270 CamP 0 CamB 0 frend
;_dn Zoom 1.0 CamH 270 CamP -90 CamB 0 frend
4) В terragen, в верхней части меню нажмите "Execute script" -> выберите ваш skyboxscript.tgs; 5) Как только рендер завершится, откройте папку, где вы сохраняли, в ней ваши 6 BMP файлов -> вы можете конвертировать их в JPG, если хотите; 6) Ура, сделали!
ПРИМЕЧАНИЕ: Присмотритесь к скрипту под каждой камерой вращение
Это разрешение вашего изображения так, когда вы отрендерите, переназовите их, используя любые имена, что бы вы знали, какие изображения ваши.
Использование Blender
Если вы хотите небольшое сокращение, то здесь .blend файл с готовой коробкой: (Включает: Skybox.blend1 и Skybox.blend2 я не знаю нужны ли они, что бы запустить Skybox.blend) http://dl.dropbox.com/u/19970067/Blender/Skybox.rar
Что я сделал здесь: - Разделил все 6 сторон куба - Развернул их - Прикрепил материал на каждую сторону, поставил материал "Emit" на (1.11). (спасибо anael) - Прикрепил текстуры и связал UV координаты (теперь вы должны просто открыть ваши изображения) - Назвал стороны, материалы и текстуры: UP, DOWN, LEFT, RIGHT, FRONT, BACK - Передвинул каждую сторону на 0.004 / -0.004 на правильном x/y/z так что ребра куба не видно (там было очень маленькое пространство на каждом краю куба, который был виден)
Здесь вы должны:
- Загрузить текстуры на каждую сторону куба; - Установите текстуры для каждой стороны UV карты окна (Edit режим).
- Изменим окно на "Textured" (это трудно выбрать стороны, когда вы в окне текстур без прикреплённых текстур) - Когда все стороны затекстурены, выберите сторону выберите стороны по одной и прикрепите на каждую из них: 1) В режиме Object -> Выберите сторону 2) Нажмите TAB для входа в Edit mode -> в Tool shelt, под кнопкой "normals", нажмите "Flip direction" (Текстуры будут отображены внутри куба а не снаружи) (В меню UV ( только для EDIT MODE) используй UV -> Mirror -> Ось X или ось Y если текстура отображается не правильно) 3) Снова нажмите TAB (что бы вернуться в Objet mode) и повторите шаг 1-2 для каждой стороны куба - Когда это будет сделано, нажмите "A" (выбрать всё) затем экспортируйте как maratis mesh (вы не присоединили стороны)
Как это должно выглядеть, когда всё сделано: Снаружи коробки
внутри
В maratis: Я не сказал, что это лучший способ сделать skybox, но это работает у меня и это было довольно быстро и легко это должно работать и у вас. И обратите внимание: вы можете изменять настройки в Terragen для создания совершенно разных атмосфер.
Если вы найдёте в этом туториале что-либо непонятное, ошибки, лучшие способы сделать это, путь для импровизации - просто скажите! И спасибо anael за указание для меня дороги!
Результаты :
NOTE: в maratis попытайтесь изменить camera FOV и посмотрите на результат
Файлы *.bvh это ни что иное как текстовый файл, который хранит данные, полученные от движущейся скелетной системы. Другое название для этого типа файлов это "Motion Capture", которое сокращается как mocap.
Первый сайт имеет 2500 движений распространяемых бесплатно! Я никогда не тестировал bvh с других сайтов, потому что с 2500 движений от CG у меня было больше, чем мне когда либо было нужно =p
BVHacker - это бесплатная программа для настройки и организации BVH файлов, если они не удовлетворяют вашим нуждам. С ней вы можете:
• Просматривать BVH анимации • Модифицировать/откатывать совместные вращения и перемещения • Обрезать анимацию • Разбить частоту кадров по 2/4/8/16... • Добавить первый кадр с T позицией на bvh модель • Сохранять/Загружать bvh's • И ещё многое, но это всё что нам нужно пока
▬═ ПОДГОТОВКА BVH ═▬
Что бы использовать BVH в игре, скажем для играбельного персонажа, вы должны установить перемещение анимации на 0, которое заставит модель стоять на месте
- Вы будете использовать сброс всех перемещений Pivot в bvh, который установит вращения x, y, z на 0 (нажмите кнопку XYZ)
Это заставит анимацию замереть (это нужно, если вы хотите комбинировать несколько BVH файлов ->подробнее об этом позже)
Примечание:Не устанавливайте вращение pivot, иначе анимация будет плохо выглядеть (попробуйте для себя)
Было бы хорошо, если вы обрежете анимацию (ведь вам не нужно 1000 кадров для простого запуска цикла, который мог бы поместиться в 90 кадрах +/-)
Всё, что вам нужно сделать - здесь:
Mark in: выбирает начало движения Mark out: выбирает последний кадр Crop: удалить всё, что между Mark in и Mark out Knit: Удалить несколько кадров что бы сделать бесшовный цикл
Ниже пример, обрезанного, запущенного цикл:
Примечание:есть движение, которому не нужен идеальный цикл, маленький удар или что то типа того:
Потому, что они будут показаны один раз, за игру.
▬═ РАЗДЕЛ BLENDER ═▬
Простое использование BVH файла в blender
Шаг 1: Загрузите 3D модель
Шаг 2: Нажмите File -> Import BVH motion capture
Шаг 3: Ничего не трогайте и в поле Костей, выберите "Rest position" и активируйте X-rays
Шаг 4: Масштабирование, Перемещение, Вращение костей, что бы вписаться в модель (настолько, как только возможно)
Шаг 5: Выберите 3D модель -> Нажмите Shift -> Выберите кость, затем нажмите CONTROL + P, и выбирет Set Parent To -> With Automatic Weights
Шаг 6: Под Костным полем, нажмите "Pose position" и выключте X-rays
Шаг 7: Нажмите play на timeline и посмотрите результат
Если есть проблемы с весом отображения, вы можете исправить это с исправлением веса цвета и векторных групп
Выберите всё, экспортируйте через maratis exporter (не забудьте активировать анимацию).
▬═ "Сращивание" файлов BVH вместе ═▬
Шаг 1: Откройте Blender и установите окно на NLA Editor
Шаг 3: Нажмите на штуку, которая похожа на снежинку Вы получите это:
Шаг 4: Импортируйте другой BVH файл (теперь у вас будет 2 скелета на 3d сцене) Шаг 5: Повторите шаг 3
Шаг 6: Выберите первый BVH трек и в меню NLA Editor, нажмите Add -> Add track(s)
Шаг 7: Останьтесь в менюNLA Editor, нажмите Add -> Add Action strip, появится окно поиска, просто введите название вашего второго bvh файла, затем подтвердите
Шаг 8: Теперь вы можете удалить второй скелет, так как анимация сохранится в первом скелете, без перезаписи базовой анимации
Шаг 9: Выберите перввую анимационную панель и в инструмент shelt, установите extrapola на "nothing" и blender на "replace"
Примечание:С этим методом вы можете добавить любую анимацию, какую захотите:
а так же, легко регулировать скорость анимации (edit -> scale)
Применение анимированной текстуры на примере Blender и дальнеший экспорт в Maratis
Простая движущаяся текстура:
Применим текстуру (бесшовную) на вашу 3d модель Убедитесь, что UV отображается Перейдите в окно Animation, затем: Убедитесь, что вы на первом кадре timeline'а Перейдите под texture tab -> Mapping, и поместите курсор на "Offset"
(Примечание: нажмите левой кнопкой мышии на смещение по оси X или Y ,что бы увидеть результаты в реальном времени)
Нажмите "i", это добавит ключевой кадр на кадр 1, заметьте, что смещение будет желтеть и будет добавленно 3 опции в граф редактор, как вы можете видеть сдесь:
В окне Graph editor, снимите два смещения по осям (зависит от ваших нужд, сдесь мне просто нужно активировать Y ) и перейдите на последний кадрна Timeline (200 в этом случае) Установите смещение Y на 1.00, затем наведите вашу мышь за Offset снова и нажмите "i", это добавит другой ключевой кадр в кадре 200.
До сих пор, у нас был 1 ключевой кадр в кадре 1 со смещением Y : 0.00 и 1 ключевой кадр в кадре 200 со смещением Y : 1.00 (от 0 до 1 = один завершённый цикл)
Теперь, в окне graph editor, нажмите Key -> Interpolation mode -> Linear Это будет заменять изогнутые линии на прямые
Если вы не облажались, график должен выглядеть так:
Теперь экспортируйте в maratis используя экспортер (не забудьте активировать анимацию) И это всё.