Render.ru

Проекция диффузной карты но новую развертк

Кудря

Пользователь сайта
Рейтинг
2
#1
Уважаемое сообщество, в процессе работы возникла проблема, требующая вашего совета.
В конкретику вдаваться пока не будем, пока всё на уровне абстракции. Модель предназначена для использования в игровом движке. Предположим, что мы долго её моделировали, потом долго разворачивали, потом упорно текстурировали и оказались довольны результатом. На выходе есть развернутая модель, диффузная карта, карта спекуляра, карта нормалей. И тут мы понимаем, что в модель необходимо добавить еще некоторые объекты. Моделим их, но места на развертке уже нету, поэтому необходимо двигать, масштабировать уже старую UVW, а это означает, что и текстуры тоже придется переделывать.
Вопрос: Как спроецировать старые текстуры в исконном их виде на новую развертку? Ответ крутится около render to texture, но я так и не решил эту проблему.
P.S. Подобную задачу решал, когда в наличии было 2 меша (кресло и пилот) с соответствующими текстурами, и их нужно было впихнуть в большую текстуру деталей самолета, швов видно не было, но было заметно, что карты немного изменились.
Понятно, что можно прибегнуть к Multi/Sub-Object, но хотелось бы знать, как решать проблему, описанную выше (именно проецирование карт на новую развертку).
Извините за длинную формулировку вопроса.
 

Вложения

Рейтинг
82
#3
А не пробовал "пририсовать" к уже существующей текстуре, дополнительные элементы и сохранить с тем же именем?И опять таки
, что мешает "затекстуировать" отдельно?

P.S.Изображения в сообщении №1 очень маленькие(128х128) понять толком,что изображено довольно трудно.
 

Кудря

Пользователь сайта
Рейтинг
2
#4
А не пробовал "пририсовать" к уже существующей текстуре, дополнительные элементы и сохранить с тем же именем?И опять таки
, что мешает "затекстуировать" отдельно?

P.S.Изображения в сообщении №1 очень маленькие(128х128) понять толком,что изображено довольно трудно.
Пририсовать к текстуре дополнительные элементы... Что имеется в виду при условии, что свободного места на текстурах уже нету, а размер текстур требуется сохранить прежним?
Текстурить отдельно можно, не спорю, но это означает увеличение количества материалов в движке и, как следствие, снижение производительности (незначительное) за счет увеличения дроколлов. И хорошо, если только одно добавление к модели делается.
По картинкам:
1. Кресло пилота отдельно
2. Пилот отдельно
3. Кресло и пилот на другой развертке вместе с остальными элементами.

Более подробное описание того, что было сделано с пилотами и креслом в прикрепленном изображении.
 

Вложения

Кудря

Пользователь сайта
Рейтинг
2
#5
Спасибо за ссылку. Это очень близко к правде. С этим уже можно работать. Скрипт использует render to texture. Но нужно еще узнать, c какими настройками идет этот рендер, чтобы иметь возможность проделать эти же операции вручную.
 

Кудря

Пользователь сайта
Рейтинг
2
#6
Хочу выразить ОГРОМНУЮ благодарность! Скрипт справляется со своей работой на все 100. Все вышеописанные проблемы с его помощью решаются. Были проблемы с выполнением скрипта на фотошопе с русским интерфейсом. Английская версия работает стабильно.
 

Кудря

Пользователь сайта
Рейтинг
2
#7
При необходимости проделать то же самое, что и скрипт, на геометрии должен быть модификатор UnwrapUVW со значением map channel 1 со старой разверткой. Поверх назначается следующий UnwrapUVW со значением map channel 2 с новой разверткой. На объект назначается материал с исходной картой в слоте диффузного цвета. у текстуры ставим map channel 1 (это означает, что текстура будет наложена по нашей исходной развертке). Выбираем объект, заходим в Rendering -> Render To Texture... Из настроек включаем Selected Object Settings -> Enabled, Projection Mapping -> Enabled. Кнопку Pick оставляем в покое - в таком случае объект будет проецироваться сам на себя. Включаем Object level и Sub-Object Levels. В разделе Mapping Coordinates используем Use Existing Channel, причем у Object выставляем Channel 2, а у Sub-Objects - Channel 1. Это означает, что проецирование текстуры будет происходить на новую развертку, а исходная текстура будет применена к модели с использованием старой развертки. В свитке Output добавляем новый Texture Element (Add... -> Diffuse Map), задаем необходимое место для сохранения, формат и размер выходного изображения. Нажимаем Render и ждем абсолютно недолгого просчета. В окне рендера будет Complete map, которая нам, можно сказать, не нужна, а на диске будет сохранен слой Diffuse, который и является необходимой нам текстурой.
P.S. Тот же самый порядок действий при проецировании карт нормалей, спекуляра, глосса и всех, которые вы используете. Ставим их в материале объекта в диффузный слой и рендерим по тому же алгоритму.

Может не самый оптимальный способ, но работает. Всем лучи добра!
 

Вложения

Сверху