You are viewing aljasib3d

Previous Entry | Next Entry


Работая над большим проектом, связанным с текстурированием, я, методом проб и ошибок, нашёл очень неплохой пайплайн для работы с текстурами. Хотел бы им поделиться с вами.

Для начала определимся, что должен содержать файл с нашим 3д-объектом. В идеале файл должен хранить геометрию с группами сглаживания, назначенными material_id и текстурной разверткой, ну и, собственно, материал multi/sub-object с названными ID. Таким образом можно добиться любого уровня детализации объекта.

Для наглядности покажу на примере модели стыковочного модуля. В этой модели есть 10 типов материалов (ткань, металл, золото, фольга и т.д.), все они назначены в геометрии через material_id. На картинке, например, выделен белый пластик под номером ID - 3.


Вот так выглядит материал модели.


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

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


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

Теперь немного насчёт форматов. Формат *.obj вообще сразу отпадает, потому как он не поддерживает экспорт материалов vray, не экспортирует material_id геометрии и вообще выносит материал в отдельную библиотеку. О нём можно сразу забыть. Другое дело *.fbx, он может делать всё перечисленное, но таки один недостаток у него есть, он не запоминает наименования material_id в материале multi/sub-object. Это не критично, но важно. Для поддержания порядка всегда нужно называть материалы и номера ID в материале multi/sub-object.

Таким образом в выпадающем списке material_id можно легко выбрать нужные нам полигоны.


Так что же делать, чтобы материалы не теряли названий после экспорта? Я нашёл для себя ответ в использовании библиотек материалов. Раньше я на них не обращал внимания, а зря, ведь это весьма удобно. В старом material editor работать с ними неудобно, а в slate - самый раз :)

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


Последняя (фиолетовая) библиотека - это, собственно, и есть решение проблемы экспорта. Для того, чтобы не загонять каждый раз текстуру в *.fbx файл, можно создать отдельную библиотеку и хранить в ней все нужные материалы. Правда я не использовал формат *.fbx, а пользовался vray proxy. Proxy мне понадобился, потому что ресурсов компьютера не хватало для того, чтобы держать все объекты во вьюпорте. А в итоге оказалось, что это еще и очень хороший способ экспортировать геометрию со всеми нужными параметрами в отдельный файл.

Делается это следующим образом: 1 - выбираем нужную геометрию, жмём правую кнопку и vray mesh export. 2 - выбираем путь для файла и его имя. Для того, чтобы при импорте объект был на нужном месте, ставлю галочку export in a single file. Тогда пивот будет в центре координат. 3 - Для импорта открываем вкладку vray и выбираем VrayProxy. Нажимаем в любом месте экрана курсором - появляется диалоговое окно выбора файла.


Прокси обычно отображается, как ящик, чтобы не тратить ресурсы, но можно выставить preview from file. Тогда будет примерно понятно где объект находится. В конце концов, если нужен меш - есть кнопка import as mesh. Геометрия будет с группами сглаживания и ID, всё как надо. Осталось только из библиотеки нужный материал назначить :)

У 3дмакса есть неприятная особенность, а точнее у его модификатора unwrap. Когда его создаешь, то в списке материалов добавляется куча ненужных материалов из unwrap editor, будь то checker или другая текстура. А если моделей в сцене куча и у каждого unwrap - в списке сплошное месиво :) Потому теперь я всегда удаляю unwrap`ы после редактирования.


Еще хотел бы пару слов написать о такой штуке, как asset tracking. Обычно новички боятся таких окон и не вникают, зачем оно надо, сам таким был :) Но штука действительно полезная. В нём можно отслеживать пути к текстурам а заодно можно легко настроить сетевой рендер. Как известно, для рендера по сети нужно, чтобы текстуры лежали на расшареной по сети папке, а в этом менеджере можно сразу всем текстурам сменить путь на сетевой. Чтобы вместо пути "D:\3D\spaceship\module\adapter" назначить путь, например "rendermachine4\module\adapter" надо всего лишь выделить нужные файлы, нажать правой и выбрать set path. Главное скопировать текстуры в сетевую папку, чтобы 3дмакс их нашёл.



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

Comments

( 8 comments — Leave a comment )
chosenlv
Oct. 2nd, 2012 05:24 pm (UTC)
полезная инфа, спасибо! а можно это все в пдф'ник кинуть!?
aljasib3d
Oct. 2nd, 2012 07:21 pm (UTC)
Можно ) если не будет лень, сделаю :)
chosenlv
Oct. 2nd, 2012 07:23 pm (UTC)
в принципе если ты не против могу завтра этим занятся когда время будет!
aljasib3d
Oct. 2nd, 2012 07:50 pm (UTC)
Ради бога, занимайся, если тебе так удобнее будет.
azazello85
Oct. 2nd, 2012 06:21 pm (UTC)
Спасибо за материал) Я хотел бы побольше узнать об Asset Tracking. Знаю, что там можно узнать, например, о нехватающих текстурах, можно убрать длинную директорию к текстурам (зачем?). Вообщем хотелось узнать, что это такое и с чем его едят)
aljasib3d
Oct. 2nd, 2012 07:25 pm (UTC)
Значит там отслеживаются пути, если какой-то путь нарушен, то вместо ok будет написано failed. А сократить - это видимо про относительный путь к файлу. Не уверен, как это работает, но есть такая штука, чтобы все текстуры подтягивались из папки, где лежит проект.
azazello85
Oct. 3rd, 2012 09:27 am (UTC)
Спасибо)
chosenlv
Oct. 2nd, 2012 10:11 pm (UTC)
вот сделал по быстрому .pdf'ник - http://db.tt/ZFGRIYcu
( 8 comments — Leave a comment )

Profile

aljasib3d
aljasib3d

Latest Month

January 2013
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
Powered by LiveJournal.com