Просмотр полной версии : Рип - оптимизация
В этой теме попробую описать процесс оптимизации авэшных построек.
Всё это непосредственно связано с идеей, высказанной в этом посте http://forum.activeworlds.ru/showthread.php?451-Браузер-на-Unity-3D&p=3117#post3117
Итак, буду использовать программы 3D Ripper DX 1.8, 3D Max 2009, Visual Author 7.1, Unity3D 5.1 (иногда 5.0), ну и разумеется, наши миры вечной версии 5.1. Да, и нужно ещё установить старый DirectX 9, иначе 3D Ripper отказывается без него работать.
Поехали...
Первым делом открываем 3D Ripper. Пути для директорий со сценами, текстурами и шейдерами я оставил по умолчанию, но каждый может поменять их на своё усмотрение.
http://i.imgur.com/YBIAm0W.png
====================================
Теперь меняем кое какие параметры. В верхнюю строку с помощью кнопки Обзор (значок папки справа от строки) вносим путь к нашему браузеру миров. Потом ставим две верхние галочки.
http://i.imgur.com/vdMLWQ4.png
====================================
Потом внизу жмём кнопку Launch. После этого запускаются наши миры, но за всем, что мы там делаем, теперь зорко следит 3D Ripper, о чём сигнализирует в 3D окне миров вверху слева жёлтая строка.
http://i.imgur.com/L7ygry8.png
Теперь при каждом запуске 3D Ripper можно просто жать на кнопку Launch и попадать в миры. Это будет работать до тех пор, пока не поменяете путь в верхней строке для запуска какой нибудь другой программы с трёхмерной графикой или игры.
Итак, запустили таким образом миры, теперь нужно усвоить главное. Недостаточно просто прийти на нужное место и нажать F12. Сначала ставим в меню Телепорт в браузере миров галку на команде "Запомнить позицию при выходе". Находим нужное место в 3D пространстве. Выходим из миров. Это нужно для того, чтобы камера установилась ровно, и риппер без особых перекосов заснял окружающую сцену. Вручную же поставить аватар на ноги ровно практически невозможно.
Для примера я зашёл в мир Aniwhere, переместился по координатам 39.86N 12.55E 17.08a 334 на место, именуемое в местном каталоге телепортов как "Вершина мира"
http://i.imgur.com/p01k66a.jpg
Выбираем наиболее подходящий ракурс. Выходим из мира.
Снова запускаем через 3D Ripper браузер миров. Так как была запомнена точка выхода, появляемся на том самом месте, откуда вышли. Но теперь камера (то есть всё, что мы видим) расположена ровно, а точнее перпендикулярно горизонтальной плоскости мира.
Жмём F12. В левом верхнем углу сцены жёлтая надпись на некоторое время сменится информацией о том, что идёт захват 3D-сцены. Чем "тяжелее" сцена, тем дольше будет длиться захват, иногда это может быть несколько минут.
Всё, теперь всё, что мы рипанули, раскидывается по папкам соответственно путям, указанным в программе. Миры пока можно закрыть, теперь будем работать с 3D Max'ом
Запускаем 3D Max. Жмём File > Import... Выбираем папку Frame с нашей захваченной сценой. Формат файла со сценой имеет расширение 3dr
http://i.imgur.com/WGi4QSk.png
=================================
Жмём "Открыть". Появится вот такое окно:
http://i.imgur.com/hpGKVgw.png
=================================
В поле Recommended Values выбираем из списка предложенный вариант. Обычно там всего один вариант, иногда бывает больше. Жмём Ок.
http://i.imgur.com/BCLFRna.png
=================================
Сцена может загружаться достаточно долго.
http://i.imgur.com/YhIHLZ7.png
Всё, сцена загрузилась. Далее пойдёт оптимизация сцены - удаление лишних полигонов, поверхностей, текстур и даже объектов. Делать это можно как в самом 3D Max, так и в некоторых других 3D программах. Я для обработки объектов использую программу Visual Author.
http://i.imgur.com/askZyFt.png
В 3д максе выбираем Файл - Экспорт, указываем папку, куда будем складывать сцены, выбираем формат obj и даём файлу любое имя. Жмём Сохранить. Появится такое окно.
http://i.imgur.com/JjWJgF8.jpg
=====================================
Настройки менять не надо, жмём Export. Процесс экспорта будет отображаться в таком окне:
http://i.imgur.com/ihwrlRt.png
================================
Во время экспорта может вылезти окно с информацией о том, что не найдена текстура 00000000.dds Нажимаем Skip.
http://i.imgur.com/55IljGf.png
==================================
Когда всё завершится, нужно закрыть окно нажатием кнопки DONE
http://i.imgur.com/oJ1dzcn.png
==================================
Закрываем 3D Max.
Теперь открываем получившийся obj файл в программе Visual Author. Как обрабатывать объекты в этой проге я расскажу позже.
http://i.imgur.com/zIln9lU.png
http://i.imgur.com/Ss80iVR.jpg
http://i.imgur.com/rS0HfAq.jpg
http://i.imgur.com/L35wQCS.jpg
Поехали дальше. Будем работать с конвертером и обработчиком 3D-моделей SAP Visual Enterprise Author 7.1
Раньше эта программа называлась Deep Exploration.
Запускаем программу. В данном случае у меня открытие файлов obj назначено сразу через Visual Author, поэтому при клике на файле сразу запускается программа. Из предложенных опций выбираем Standard (Стандарт), а язык интерфейса уже каждому как удобно.
http://i.imgur.com/om2TEww.png http://i.imgur.com/WvemsBS.png
==================================
Открывшийся файл в программе будет выглядеть так:
http://i.imgur.com/WbDjTBH.png
==================================
Тек как работаем только с одним файлом, и не вставляем в сцену другие объекты из файлов на компе, можно дерево каталогов и файлов скрыть. Для этого жмём Enter:
http://i.imgur.com/bpJZum5.png
Для работы с объектом в верхних вкладках выберем вкладку Оптимизировать. Благодаря этому ниже откроется нужный нам набор инструментов
http://i.imgur.com/S0Lb0Ku.png
=================================
Сбоку слева откроем вкладку Информация и посмотрим сведения об объекте. Внизу, там где написано Грани - это количество полигонов.
http://i.imgur.com/FWMvURj.png
Теперь немного об управлении сценой.
1. Левая кнопка мыши - поворот всей сцены
2. Правая кнопка мыши - приближение или отдаление сцены. Чтобы точнее приблизить или отдалить - достаточно навести курсор на нужный участок объекта на сцене.
3. Зажатое колесо мыши - перемещение сцены по плоскости экрана
4. Прокрутка колеса мыши - грубое приближение - отдаление сцены.
Благодаря этому достаточно быстро подходим к строению на горе.
http://i.imgur.com/Nrf6z0j.jpg
Ну а теперь по быстрому пытаемся что-либо оптимизировать. Заглядываем под здание, и видим, что там много лишнего
http://i.imgur.com/I3AdCy1.jpg
=====================================
Выделяем какой нибудь объект кликом левой кнопки (в данном случае это подобъект obj файла - кстати соответствует объекту в мире Anywhere). И видим, что он выступает также над землёй, значит его удалять полностью нельзя. Кстати при зажатом Ctrl можно выделять несколько объектов.
http://i.imgur.com/JMekEsR.jpg
http://i.imgur.com/AnAUaQl.jpg
Тем не менее это безобразие под землёй желательно удалить, что же делать? Снимаем выделение Ctrl+D (убирает выделение везде). Выбираем меню Отображение - Прочее - Прозрачный каркас.
http://i.imgur.com/iB9LaW1.jpg
=====================================
И видим сетку, но при этом сам объект тоже виден.
http://i.imgur.com/chNqsGe.jpg
Видно, что стена состоит из минимального количества полигонов. Попробуем выделить отдельный полигон. Для этого жмём кнопку (в виде куба) "Выбрать многоугольник сетки". Остальные пиктограммы кубиков - это выделение поверхностей, элементов мешей, и даже отдельных вершин.
http://i.imgur.com/XagmUsY.jpg
====================================
Вот мы выделили полигон, но это нам тоже ничего не дало, так как в этом объекте полигонов мало, поэтому треугольник вышел тоже за пределы горы на поверхность.
http://i.imgur.com/ABLsveh.jpg
Поэтому решаем вопрос кардинально. Выделяем несколько объектов и поверхность горы. Выделение происходит в обычном режиме (отображается красным). Для этого обязательно отключаем кнопки в виде кубов.
http://i.imgur.com/5iWUwY4.jpg
====================================
Далее идём во вкладку Сцена в окне вверху слева.
В этой вкладке видим один из выделенных объектов. Остальные выделенные объекты в списке не видны
http://i.imgur.com/6fQCuEs.jpg
====================================
Жмём правой кнопкой мыши по одному из выделенных объектов в списке во вкладке Сцена. И выбираем команду Создать группу. Теперь все выделенные объекты оказались в группе.
http://i.imgur.com/43wv4Z1.jpg
====================================
Далее выделяем группу в списке, для этого достаточно кликнуть ПКМ по её названию и нажать команду Выбрать подобъекты, потом снова жмём правой кнопкой мыши по этой группе и выбираем Обратить выделение. Выделится всё, кроме группы. Теперь уже кликаем ПКМ по одному из новых выделившихся объектов и снова выбираем Создать группу. Появится группа под названием Группа1. Кстати группы можно переименовывать
http://i.imgur.com/DTPb1Xb.jpg
===================================
Ну вот, осталось снять галочку с названия второй получившейся группы, и все объекты кроме первоначально выделенных объектов и поверхности горы скроются. Скроются, но не удалятся, и их можно в любой момент снова показать.
http://i.imgur.com/lZoOFi9.jpg
Сейчас будем срезать лишние куски, резать будем сами полигоны.
Выбираем Инструмент "Разрез"
http://i.imgur.com/CSNQyYM.jpg
=================================
В левом нижнем окне выбираем вкладку Ассистент инструментов.
http://i.imgur.com/EvYCJAt.jpg
=================================
Смотрим на сцену. Появилась коробка
http://i.imgur.com/ozmCoxZ.jpg
=================================
В Ассистенте инструментов включаем галочку Разрезать по области. Теперь можно двигать любую сторону коробки. Наша задача - заключить в коробку только те части объектов, которые нужно удалить. Наводим стрелки на нужные стороны коробки и двигаем коробку, сжимая её до нужного положения и нужных размеров. Так как у нас сложная форма, придётся куски объектов заключать в коробку частями
http://i.imgur.com/dyvJ2fM.jpg
http://i.imgur.com/SlEKxnl.jpg
=================================
В Ассистенте инструментов жмём Вырезать. В общем как-то так...
http://i.imgur.com/TAMNnck.jpg
В режиме выделения полигонов видно, что разрез проходит именно по самим полигонам.
http://i.imgur.com/t7a3WLG.jpg
Предположим, что объекты мы оптимизировали. Полученных знаний думаю достаточно для дальнейшего самостоятельного копания в программе. Единственное, о чём ещё скажу - это настройки сохранения.
Для сохранения в формате obj жмём Файл - Экспорт. Выбираем формат, выбираем папку для сохранения, при первоначальных настройках программы (если что-либо сохраняете впервые), жмём кнопку Параметры...
http://i.imgur.com/sj2958K.jpg
=================================
В появившемся окне выбираем вкладку Текстурные карты. Ставим переключатель Преобразовать текстуру, и выбираем просто JPEG. Включить флажок Установить исключения для форматов текстур и выбрать png. Таким образом все исходные png текстуры объекта не будут преобразовываться в формат jpeg. Жмём Ок и Сохранить. Да, кстати, не забываем сделать видимыми объекты из той группы, с которой мы сняли галочку.
http://i.imgur.com/AWwZSHY.jpg
===================================
Всё, в дальнейшем уже будут рассказывать как перенести полученную сцену на движок Unity3D.
Да, кстати, в данной последовательности действий есть кое-какие ошибки, связанные с прозрачностью текстур, в дальнейшем буду искать решение ошибок и описывать это на форуме.
Ну что ж, исправление ошибок оставим на потом, а сейчас начнём перебрасывать рип из миров на движок Unity. Для начала нужно скачать установщик этой программы с официального сайта https://unity3d.com/ru
Начиная с пятой версии оба варианта Юнити (и платный и бесплатный) поставляются со всем имеющимся функционалом. Ограничения бесплатной версии для нас несущественны. Это, например, отсутствие возможности вставить свой заставочный экран, отсутствие доступа к бета-версиям, нет доступа к исходному коду и т. д.
После установки программы нужно зарегистрироваться у них на сервисе и начать работу. После запуска видим такой интерфейс (до этого в предварительном окне было выбрано создание нового проекта New Project):
http://i.imgur.com/YyIt9eX.jpg
Ладно, как понял нафиг это кому-то вообще нужно)