3d форум по Blender

Blender => Вопросы от новичков => Тема начата: Friend123 от 31 Август 2017, 10:21:30

Название: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 31 Август 2017, 10:21:30
Добрый день.

Имеется модель четырехполосной дороги (1 меш) и 2 уличных светильника вдоль нее (2 меша). Модели оттекстурированы, на каждый меш наложен один или несколько материалов, например на дороге имеется разделительная полоса (трава), разметка дороги, тротуар - всё это отдельные материалы. Приложил картинку.

Задача стоит такая - сделать конечную модель для Unity3D, чтобы был 1 меш (объединить дорогу и светильники), но самое главное - чтобы на модель был наложен всего один материал(!), одна общая текстура.

Я сильно новичок в блендере, я вообще не моделлер, а программист. Изучаю его от недостатка людей в проекте. Насколько я понимаю, чтобы получить сей результат, нужно делать это через UV-развертку, но может быть имеется какой-то более простой способ? Моделей у меня таких немало и боюсь убью на это огромную массу времени. По сути-то модели уже готовые и текстурированные, просто их нужно преобразовать.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: ThreeDancingFlies от 31 Август 2017, 10:51:22
Объединить через "cntr+J" выделить предварительно все объекты
Создай для общего меша еще одну развертку, создай пустую текстуру
Переключись на новую развертку и располож на ней все развертки объектов как тебе удобно (как я понял развертки уже есть для каждой модели если нет надо ручками или смартУВ развернуть)
Запеки дуфузию общего меша на новую текстуру по созданной тобой развертки
Создай новый материал с запеченной текстурой и назнач его объеденному мешу
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 31 Август 2017, 10:58:17
Объединить через "cntr+J" выделить предварительно все объекты
Создай для общего меша еще одну развертку, создай пустую текстуру
Переключись на новую развертку и располож на ней все развертки объектов как тебе удобно (как я понял развертки уже есть для каждой модели если нет надо ручками или смартУВ развернуть)
Запеки дуфузию общего меша на новую текстуру по созданной тобой развертки
Создай новый материал с запеченной текстурой и назнач его объеденному мешу
Я так и делал, объединил меши, создал развертку для общего меша. Но тут я немного встал, потому что развертка получилась какая-то немного "кривая" (светильники вон как расперло, их приходиться скейлить), приложил. Я так понимаю, чтобы развернуло более четко, надо на швы резать по ребрам? А что такое смартУВ?
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: ThreeDancingFlies от 31 Август 2017, 11:03:51
Так первоначальные объекты были развернуты? Если нет то надо их развернуть нормально а потом уже объединить. SmartUV автоматически через одно место разворачивает объект. Для упаковки частей развертки юзай ПакУИ (cntr+p)
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 31 Август 2017, 11:07:11
Так первоначальные объекты были развернуты? Если нет то надо их развернуть нормально а потом уже объединить. SmartUV автоматически через одно место разворачивает объект. Для упаковки частей развертки юзай ПакУИ (cntr+p)
Полагаю, что развернуты не были (если чисто визуально смотреть). Понял. Спасибо за совет. Буду пробовать!
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Николай Николаев от 31 Август 2017, 13:39:40
>> немного "кривая" (светильники вон как расперло, их приходиться скейлить), приложил.
... для юнити делай развертку по Lighmap pack, особо если будешь потом еще нормали запекать ...
... а лучше выложи модели ...
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 31 Август 2017, 14:30:55
>> немного "кривая" (светильники вон как расперло, их приходиться скейлить), приложил.
... для юнити делай развертку по Lighmap pack, особо если будешь потом еще нормали запекать ...
... а лучше выложи модели ...
Модель приложил (текстур много, без них), сделал развертки для каждого объекта, уж не знаю насколько корректно получилось, пытаюсь теперь их объединить в единую.
Спс, почитаю про Lighmap pack, нормали в перспективе будут. Приходиться всё самому делать, нету моделлера свободного ))
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Николай Николаев от 31 Август 2017, 19:01:03
... еще это дополнение посмотри https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/UV/TextureAtlas ...

>> Модель приложил (текстур много, без них)
... выложи все что есть в каком-нибудь файловом обменнике (яндекс диск, майл облако и т.п.) ...



Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 01 Сентябрь 2017, 14:49:24
... еще это дополнение посмотри https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/UV/TextureAtlas ...

>> Модель приложил (текстур много, без них)
... выложи все что есть в каком-нибудь файловом обменнике (яндекс диск, майл облако и т.п.) ...

Спасибо, гляну плагин.
Полностью выложил тут: https://cloud.mail.ru/public/2Tnx/3yDBrkjnt
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Николай Николаев от 01 Сентябрь 2017, 18:37:08
... ссылка битая ...
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 04 Сентябрь 2017, 09:37:47
... ссылка битая ...

Работает: https://cloud.mail.ru/public/2Tnx/3yDBrkjnt
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 08 Сентябрь 2017, 15:05:01
Получилось создать развертку и одну текстуру с помощью видео: https://www.youtube.com/watch?v=Tj-S5QAac3U
Но получилась на выходе фигня (запекал текстуры только, не Full Render, потому что он черный выдает), текстуры стали размытые какие-то (приложил картинку).
На верхней картинке - исходная модель с кучей материалов на частях меша. Нижняя - это уже с новой разверткой (где 1 текстура, 1 материал).

Вероятно, что в исходном файле использовалось некое смешение материалов, или текстуры запеклись по-другому (или еще что-то нужно запекать?).
Ребята, куда покопать можно?
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Николай Николаев от 10 Сентябрь 2017, 05:46:39
>> Вероятно, что в исходном файле использовалось некое смешение материалов, или текстуры запеклись по-другому (или еще что-то нужно запекать?).
>> Ребята, куда покопать можно?
... а т осознал уже причину? до запекания в моделях использовались несколько текстур и некоторые из них как тайловые, а теперь все это у тебя упаковано в один файл с меньшей площадью ...
... копать нужно в осмысленное запекание и возможно не стоит объединять столбы и дорогу в один объект ...

>> сделать конечную модель для Unity3D, чтобы был 1 меш (объединить дорогу и светильники)
... зачем это делать? поясни ...
... насколько в курсе, юнити эти объекты объединит сама в статическую группу ...
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 25 Сентябрь 2017, 09:24:46
... зачем это делать? поясни ...
... насколько в курсе, юнити эти объекты объединит сама в статическую группу ...
Цель простая - оптимизация. Когда у меня на сцене объект с кучей материалов на нем (около 10), и если таких объектов понятное дело не один и не десять, то начинаются жуткие тормоза. После того как я сделал объединение текстур (в один материал) - тормоза пропадают, что логично.
Это же касается и той ситуации, когда в одну модель я запихал и дороги, и столбы, и всякие урны, скамейки, чтобы движок рендерил все объекты за один проход - опять же оптимизация.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 04 Октябрь 2017, 14:33:33
Крутил тут вертел - пришел к выводу, что можно использовать атлас текстур и куски его накладывать на части дороги. Также сделано и в модели, только используются отдельные файлы-изображения.
В приложении "кусок после" я попытался изобразить сей момент, вопрос в том - как затайлить данный кусок атласа на кусочек модели? Repeat почему-то не помогает в настройках текстуры, хотя отдельное изображение тайлится нормально. Пересмотрел уроки разные - тоже ничего такого не говорится как сделать.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: solonmaun от 05 Октябрь 2017, 09:13:05
Ну наверное нужно подразделить этот газон, вдоль на равные полигоны, каждый полигон отдельно развернуть и накладывать на таил.
Или ещё можно привязать к нужным полигонам своё отдельное изображение в редакторе развёрток, хотя это уже не атлас будет.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 05 Октябрь 2017, 10:10:11
Ну наверное нужно подразделить этот газон, вдоль на равные полигоны, каждый полигон отдельно развернуть и накладывать на таил.
Или ещё можно привязать к нужным полигонам своё отдельное изображение в редакторе развёрток, хотя это уже не атлас будет.
Да вот не хотелось бы дробить меш на более мелкие куски. Хм, т.е. никак не избежать - либо увеличивать количество полигонов, либо количество текстур/материалов.
Просто думал может есть какая-то простая технология тайлинга данного куска из атласа на выбранную часть меша, типа repeat. Просто получается, что если применяется отдельное изображение для меша, то оно тайлится успешно.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: solonmaun от 05 Октябрь 2017, 16:35:28
Не вижу тут путей решения "стандартными" средствами, тем более простых. Но возможно здесь поможет программирование.

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

Идея взята из принципов работы 2д игр использующих spitesheet (множество спрайтов в одном файле изображения)
(https://i.stack.imgur.com/UYrFf.png)
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Friend123 от 05 Октябрь 2017, 16:58:43
Не вижу тут путей решения "стандартными" средствами, тем более простых. Но возможно здесь поможет программирование.

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

Идея взята из принципов работы 2д игр использующих spitesheet (множество спрайтов в одном файле изображения)
(https://i.stack.imgur.com/UYrFf.png)

Спасибо за совет, но я решил сделать модель с нуля, уменьшить ее и раздробить для более четкого наложения текстур.
Название: Re: Как сделать из разных мешей - один меш, один материал?
Отправлено: Samovar от 08 Октябрь 2017, 00:34:59
Дополнение в помощь: http://blender-3d.ru/forum/index.php/topic,1949.new.html#new