Render.ru

Как сохранить AO в PolyPaint?

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#1
Простой вопрос знатокам збраша: есть ли в нём способ посчитать АО и сохранить его в цвета вершин (aka vertex colors aka polypaint)?
Да, можно посчитать в текстуру. Но надо именно в вертексы. Если интересно зачем - подробно описал тут, и истоки проблемы - тут.
 

M.R.K.

Модератор форума
Команда форума
Рейтинг
349
#2
Ну так сохрани из multimap exporter, потом примени эту карту, как текстуру, потом c нужным уровнем дивайда, для точного сохранения цвета, нажать polypaint from texture, в свитке tools>>polypaint.

P.S. Подробно здесь.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#3
В текстуру сохранить нельзя никак:
  • На хайпольке нет увих.
  • В хайпольке стопицот сабтулов. Развернуть для каждого из них отдельную UV-раскладку, а потом ещё ковыряться с правильным назначением текстур на нужные хайпольки - не вариант.
  • Если смерджить, то мерджить надо на высшем уровне разбиения. А там 15 млн вертексов. При таком полигонаже Zbrush'евский UV master крашится (в системе 6 Гб памяти). Пара тулов смоделированы вообще без уровней разбиения. Их UV master не прожуёт в любом случае.
  • Создать увихи через любой стандартный Збрашевский механизм маппинга (Свиток UV Map) тоже не получается. Фэйсы такие маленькие, что при разрешении 8К каждый из них значительно меньше пикселя. Т.е., в текстуре больше места будет потрачено на промежутки между UV-шеллами, чем на сами шеллы. Збраш на это ругается и просто не даёт мне создать увихи.
  • Перегнать хайпольку в Майю, чтоб там развернуть увихи авто-маппингом... Она авто-маппит хоть и криво-косо, но хотя бы не по полигону. Всё равно не вариант: Майя тупо падает. Даже на 6 гигах памяти. Даже если передавать сабтулы по одному. Даже в батч моде (когда весь интерфейс даже не грузится, работает только ядро).
Если бы я мог хоть как-нибудь сохранить в текстуру - я бы это сделал. В конце концов, мне надо получить АО на хайпольке для последующего перепекания на лоупольку в икснормале. И неважно, в вертексах АО или в текстуре.
Но текстурой никак не удастся - я перепробовал уже все возможные способы.

Вопрос именно в том, чтобы запечь АО в вертексы, и сделать это напрямую. Увих нет. И они не могут быть созданы.
 

M.R.K.

Модератор форума
Команда форума
Рейтинг
349
#4
Может проще заново переделать модель?)) К чему такой гемор?
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#5
Обожаю русские форумы. Наиболее оперативные и конструктивные ответы всегда удаётся найти только тут.
Странно, что я сам не догадался до такого очевидного и элементарного решения. Спасибо за помощь. Наверное, так и сделаю.

Но, если вы не против, я всё-таки пока поищу другие пути решения. Так, из праздного любопытства. Я ведь именно поэтому задал сабжевый вопрос.
 

M.R.K.

Модератор форума
Команда форума
Рейтинг
349
#6
Русские форумы тут не при чем. А вот когда выпрямляешь руки и изучаешь матчасть перед моделированием фэйсов меньше пикселя, то потом не возникает вопросов.
Нужно идти от истоков. В браше все логично когда моделируешь. Либо динамеш, либо обычным методом. После динамеш ретопология в 90% случаев. Если способом с дивайдом, то уровни должны оставаться, если их кто-то случайно(или по незнанию) не удалил. Можно их восстановить, при условии, что нет трианглов в сабтуле.
Можно смерджить сабтулы и в UV master нажать polygroups, чтобы отдельно для каждой полигруппы координаты считались.
 

kresh

Мастер
Рейтинг
202
#7
На самом деле сделать полипейнт из АО достаточно просто:
1. Masking -> Mask Ambient Occlusion
2. Masking -> Inverse
3. Polypaint -> Colorize
4. Выбираем цвет. (наверное, черный).
5. Меню Color (сверху, рядом с Brush) -> Fill Object

Покраска готова.

Но есть несколько больших НО:

Не знаю почему, но ZBrush считает АО как Маску особенно долго. Mожно пойти покурить, выпить чашечку кофе, пообщаться с друзьями, посетить вечеринку... И, возможно, если браш за это время не дал дубу, то он таки АО просчитает.
НО:
1. Если делать АО для каждого сабтула отдельно, то ZBrush считает АО только для активного сабтула и на другие ему совершенно наплевать. То есть от них не будет затенения.
2. Если все сабтулы смержить в один, то вероятность того, что ZBrush даст дуба при просчете АО увеличивается до 99% (один процент оставляем на то, что может свершиться чудо), так как ЗБ очень не любит считать АО, если части меша пересекаются и входят друг в друга.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#8
kresh,
Полагаю, как маску он считает АО долго потому, что считает по-честному. Для UV Master'а я более чем уверен: збраш считает не честный АО, а какую-то оптимизированную аппроксимацию.
Попробую завтра поставить на весь рабочий день это печься на тачке для запекания. По результатам отпишусь. Спасибо за наводку.

m.r.k.,
1. Хайпольки мы заказываем у аутсорсеров. Какой материал пришёл - такой пришёл.
2. Чтобы тем же UV master'ом развернуть все объекты на один UV-квадрат, надо их смерджить, и делать это на высшем уровне разбиения... По-моему, я уже это где-то писал.
3. Запечь надо АО и запечь надо в вертекс колор. Увих нет. Это условия задачи. Переделать всё с ноля, чтобы запечь не в вертекс колор - так же близко к решению задачи, как Autodesk к написанию стабильного софта. Я сам всегда отвечаю либо по существу, либо не отвечаю вовсе. И на подобное рассчитываю от остальных. Если рекомендацию "переделать всё с ноля" я получил бы от амбициозного новичка - скорей всего, этот пост я бы просто оставил без внимания. Но прочитать такое от модератора раздела...
4. Да, большинство тех, кто задаёт элементарные вопросы, делают это от лени. Но, вы удивитесь, бывают такие редкие случаи, когда человек пытается до последнего решить проблему самостоятельно, и лишь когда всё перебрал, а сроки поджимают - обращается к форумам. А ещё бывают такие случаи, когда с первого взгляда вопрос кажется идиотским, но, стоит хоть чуть-чуть призадуматься (а не отвечать машинально "ты криворукий неуч, и всё делаешь через одно место"), и оказывается, что проблема отнюдь не тривиальная.
 

M.R.K.

Модератор форума
Команда форума
Рейтинг
349
#9
Если рекомендацию "переделать всё с ноля" я получил бы от амбициозного новичка - скорей всего, этот пост я бы просто оставил без внимания. Но прочитать такое от модератора раздела...
Иногда бывают моменты, когда проще сделать заново, чем долго и нудно искать решение. Исхожу из собственного опыта и здравого смысла. Если заказываете у сторонних людей, то почему бы не отдать обратно, чтобы они переделали?


Первый пост по этой теме 26.06, прошло полтора месяца. За это время можно было заново смоделить.

Если это "спортивный" интерес, то тогда другое дело.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#10
Первый пост был так давно по 3-м причинам:
  • Как я упоминал, с возникающими проблемами предпочитаю разбираться основательно и самостоятельно.
  • Если не считать хайполек и текстур, всё дальнейшее изготовление 3D-контента лежит на мне. И параллельно мы (команда из 3 человек) работаем над 2-мя играми. Игры разрабатываются оооочень неспешно, но зато дёшево. Если в какой-то задаче затык - приходится её отложить и переключиться на другую. Так, АО я отложил сразу, как перепробовал все варианты на тот момент.
  • Конкретно АО нужны не срочно. Их можно переснять в любой момент. У нас в любом случае текстуры разбираются на несколько служебных карт в нюке - нужно для наших спец. шейдеров. Заменить передаваемые в нюк АО и переэкспортить текстуры для всех персов - это вопрос максимум нескольких минут.
И это не спортивный интерес. "Более-менее нормальные" АО-хи есть (сняты в xNormal'е по частям). Нужно получить не "более-менее" а чистовые.

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

Может быть, я вас неправильно понял, но ваши предложения сводились к тому, чтобы сделать увихи и запечь текстуры. И вы так и не ответили, как создать увихи для хайпольки на одной UV-раскладке.
  • Если не мерджить - у каждого сабтула будет своя. Запекать их все поштучно - не вариант, т.к. их около 2-х сотен.
  • Смерджить на низшем уровне разбиения (допустим, мне удалось восстановить дивайды для сабтулов, у которых их нет) - тоже не вариант: теряем деталзацию.
  • Смерджить на высоком уровне разбиения - опять не пройдёт: зБраш (да и любой другой софт) лопнет при создании увих.
  • Проэкспортить каждый сабтул в обж, чтоб развернуть их где-то ещё, а потом снова передать в збраш - тоже не решение: см. п. 1.
 

M.R.K.

Модератор форума
Команда форума
Рейтинг
349
#11
Созрел еще вариант, ну или направление в котором мыслить.

1.Можно смерджить всю модель в единое целое, потом с помощью Qremesher(1,2) создать новую топологию, выставить нужный уровень сабдивайда и сделать Project all.
2.Если все смерджить не получается, то смерджить по группам(например по 30 сабтулов), чтобы каждая получалось приемлемой для дальнейших действий. Потом с помощью Qremesher создать новую топологию, выставить нужный уровень сабдивайда и сделать Project all. И так для каждой группы.
3.Remesh all с нужным значением resolution и опять таки Project all с пробой различного значения Dist.

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

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#12
kresh,
Сегодня на свободной тачке поставить запекаться АО не получилось - ей не хватило оперативы. Поставлю на ночь на основной.

m.r.k.,
Благодарю за конструктивное предложение. Попробую завтра-послезавтра, по результатам отпишусь.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
#13
Извиняюсь за некропостинг. Видимо, чтоб у меня выдалось свободное время на то, чтоб добить отложенную задачу - нужно не менее, чем новогодние праздники. Печалька...

Итоги таковы:
за прошедшие... чёрт знает, сколько месяцев... я так и не нашёл ни одного софта, который мог бы делать сабж. Т.е. печь АО в вертекс-колор для адски хайпольных мешек.
Единственное решение - это таки получить увихи на хайпольке.
qRemesher пробовал, слишком долго.
Наиболее быстрым способом оказалось следующее:
берём нашу готовую лоупольку, импортим её в браш. Она уже размаплена - игровая же.
Потом поочерёдно накидываем сабдивы (сглаживание увих выключено). И делаем Project All.
Когда получена хайполя с достаточной детализацией - экспортим её.
Дальше - 3 варианта:
1. получаем карту высот с лоуполи на хайполю из збраша и, пользуясь RenderMan'ом, накидываем на него эту карту как дисплейс и бэйкаем в АО. Поскольку развёртки лоу и хай совпадают - текстура готова.
2. в xNormal'е есть тул, который считает АО на видюхе. Считаем его на хайпольке. Поскольку развёртки совпадают... ну вы поняли.
3. Оптимальный вариант. В последних версиях икснормала появилась фича "Match UVs". Она позволяет устанавливать соответствие между хайполькой и лоуполькой безо всяких кейджей. По UV пространству, если развёртки хай и лоу совпадают (именно поэтому надо было накидывать дивайды, не сглаживая увихи). У нас теперь как раз тот случай. Один минус: фича пока с багами, и не работает (утечка памяти где-то, видимо). Отписал репорт на сайт икснормала, автор пообщела отдебажить. Жду ответа.

А то, что нет софта, способного решить оригинальную задачу - очень жаль.
 
Сверху