Как я создаю бесшовные материалы (часть 2)
Итак, получили мы после запекания текстурки, но они малопригодны для применения, нет бесшовности, цвета не те, резкости нет, также нет карты для отражений.
Дорабатываю в Nuke, первым делом цветокоррекция для диффуза, поджимание черного и белого для карты высот, выставление гаммы для карты нормалей. Это то, что для каждой входящей текстуры уникально, далее идёт switch, это просто для удобства выходного рендеринга, чтобы атвоматически переключались входы в зависимости от того, какую текстуру рендеришь нюком.
А вот дальше идет пакетная обработка, т.е. все операции применяются сразу ко всем текстурам. У меня уже готовы настройки для 4К, 8К, 16К текстур, просто подключаю новые файлы. Первым делом скрываю швы, сначала вертикальный, потом горизонтальный. Разберем ноды вертикального шва. Смысл тут простой, раздвигаем трансформациями 2 копии влево и вправо, с небольшим нахлёстом. Тут не очень удачный пример, т.к. запёк я недостаточно информации, обычно я запекаю нужный мне кусок с запасом +10% в каждую сторону. Потом на эти 10% и делаю нахлёст.
Потом с верхнего слоя срезаю по маске контур, если фактура мелкая, то можно вообще вертикальную линию нарисовать и не париться, т.к. альфа канал я еще дорабатываю подмешиванием в него изначальных RGB данных, так получается рваный контур, который хорошо маскирует искусственность маски. Но если речь идет о каменной кладке или кирпичах, то маску придется вручную подвигать, обводя камни или кирпичи. Как можете заметить в этом примере я забил на это)) Аргументирую тем, что в общей массе и при общей равномерности всех входных текстур шов не бросается в глаза.
Нодой Tile я тут же проверяю собственно тайлинг. Какие-то ярко выраженные элементы или пятна можно закрыть штампом как в фотошопе, с один лишь отличием, здесь этот штамп применяется на всё одновременно и его можно легко редактировать.
Примитивныем кейнгом (подрезкой по цветам) по желтому я сделал маску по краске. Она нам пригодится для двух вещей.
Создание спекулярной карты, чтобы материал бликовал краской, а кирпичом и цементом не бликовал, либо был очень шероховатым.
И последующей перекраски на уровне материала.
Всё, текстуры готовы. Одна лишь карта высот выделяется, все потому что её я шакалить не стал. Конечно, убавил у неё разрешение, но 32-битный цвет оставил. О том почему нельзя использовать 8-битные карты для дисплейсмента я упоминал в этом посте https://pikabu.ru/story/normalnyiy_likbez_5014197
Осталось только всё это собрать в материал. Просто подключить в соответствующие инпуты.
Разберём подробнее, диффузный цвет. Тут оригинальная текстура, а поверх цвет по маске. Вот и перекрашиваем.
Карты specular и glossinnes это один и тот же файл. Получается где на текстуре темно там слабый и матовый блик, где светло там яркий и четкий блик. Большего и не требуется.
Дисплейсмент заведён через модификатор VrayDisplacementMod, никогда не использую дисплейсмент внутри самого материала. И микродетали с помощью VrayColor2Bump в которую закинул диффуз, делать отдельную текстуру под такое накладно, она должна быть также 8К разрешением, а память-то не лишняя, вот и грузим одну карту в разные слоты. А еще я немного диффуза подмешал в дисплейсмент через overlay. Кидаем на какую-нибудь болванку, я выбрал цилиндр, на нем играет светотень.
Свет, камера, рендер!
Вот таким образом я создаю подобные материалы.
А тем кто долистал до конца, вот несколько ответов.
Q: Почему не фотоаппарат, а телефон?
A: Иду такой, вижу текстуру или объект, погода позволяет снять, где я достану фотоаппарат? И больше я в этом месте возможно не побываю. Телефон всегда со мной и сейчас их камеры выдают хороший результат. У меня вообще телефон приобретен только для этого.
Q: Почему макс, а не blender, houdini,cinema 4D (нужное подчеркнуть)
A: На самом деле я хотел бы все этапы проводить в Houdini, но в 3д максе я уже более 10 лет, а в гудини плаваю сильно. Так что пока по накатанной, чтобы не терять время. параллельно пытаясь в другом софте.
Q: Сабстанс не модный?
A: Если мне надо будет наколбасить процедурок, то я полезу в гудини. А если фотореал, то только сканы. Я часто мониторю артстейшн и прочие ресурсы где люди выкладывают свои сложнейшие материалы в сабстансе. Но по мне это все мультяшно, а то что не мультяшно, так оно и основано на входных фотосканах. Мне всего-то надо немного обработать картинки, с нюком примерно та же история, что и с 3д максом. И еще мне нравится переносить реальный мир в 3д, фотосканы - это именно тот инструмент.
Ну и вообще ответом будет то, что:
Как я создаю бесшовные материалы
Сразу оговорюсь, что это не туториал как правильно и нужно делать, это только мой личный подход с удобными для меня инструментами.
Что мне требуется для фотоскана, железо:
Телефон с топовой или около-топовой камерой, нужна высокая детализация кадра, адекватный динамический диапазон, чтобы не было пересветов и чтобы не было черных теней, шумодав в камере без артефактов. Летом долго выбирал на gsamarena и прочих тестах камер, мой выбор - MiMix2S.
Комплюктер. Что-то многоядерное, но и не 20 медленных ядер ксеонов, согласно исследованиям, фотоскан не ускоряется линейно от прибавления ядер (привет закон Амдала). Мой выбор остановился на Threadripper 1920X.
Память - от 64Гб, я пока мучаюсь с 32Гб, поэтому приходится идти на компромиссы качества или уменьшать площадь сканируемого образца. Скорость памяти кардинально не повлияет, лучше около 3000мГц.
Софт:
Прога сканирования - Agisoft PhotoScan. Тут практически без конкурентов.
Что-то для работы с высокополигональной сеткой. Zbrush например. Но сам я мало дорабатываю именно форму, поэтому делаю все в 3ds max. Запекаю на текстуру иногда там же, но лучше в xNormal, в один клик без шаманства делает отличные бэйки. Прога где скорректировать у текстур неровности освещения и формы, сделать бесшовность. Photoshop тут сразу нет. Нужно что-то пакетное. After effects, например, и процедурное... упс, тогда Nuke - мой выбор. В сабстансе не работал и не буду))
Погода, дааа... вот тут засада с этими фотосканами, мало просто найти подходящий референс, нужно чтобы погодные и световые условия соответсвовали. Вы не можете скнировать под солнцем, вы не можете сканировать в дождь, вы не можете сканировать при переменной облачности. И сканируя в неравномерном освещении, например в тени дерева или забора, рискуете получить слишком неравномерную пятнистую текстуру, что потом тяжело вытягивать, либо вообще не получится, нельзя забывать, что мы же не в RAW на профессиональный фотик делаем снимки. Да и там проблемы будут те же.
Ну что народ, погнали.
Первое, конечно, правильно сфотографировать поверхность. Фотографируется перпендикулярно поверхности, всё в фокусе, перекрытие кадров между собой 40-50%. Примерно 40 фоток на квадратный метр стены/земли. Большую плотность мои 32гб не вывезут при 12мп фотографиях. На моей камере мылят крайние углы, лучше выбрать квадратное кадрирование.
Дальше все эти 150-200 фоток закидываются в фотоскан. Там все просто как 1-2-3-4. Минимум ручной работы. Настройки для этой стенки были такие. HeghtField и Orthophoto применимы только к плоским поверхностям, зато экономит памяти и считается быстро. Обычный меш можно считать и 10, и 20 часов.
Первый этап - определение позиций камер. Для 12мп фоток, опять же по исследованиям, не смысла в более чем 60000 key points. Пока что-то непонятное. На то он и первый этап.
На втором этапе создается плотное облако точек, в тысячи раз плотнее первого. Дырки- это не страшно, они сами закроются, да и на текстуре все равно не будет видно этих вертикальных разрывов поверхности.
Далее - полигональная сетка поверх этих точек. Дырки закрылись как и говорил, всё из-за Interpolation "Enabled".
Ну и вишенкой на торте осталась текстура с цветом. Для поверхности подобного размера достаточно 16K текстуры. При 32K уже видно скорее артефакты и шумы камеры, чем новые детали.
Вот и всё, прога сама сделала высокодетализированную полигональную поверхность с 16к текстурой и Вы великолепны. Но постойте, чего делать с 9 миллионами полигонов. Поставить в углу сцены эту стенку, чтоб не отсвечивала и тихонько сжирала свои гигабайты памяти на рендер. Ну уж нет уж. Джесси, нам надо варить печь!
Чтобы запечь высокополигональную поверхность, нам нужна низкополигональная. Тут я использовал обычную плоскость, но ручками подвигал вершины чтобы поверхности были более согласованы. Особенно это важно по краям плоскости, чтобы на карте высот избежать слишком больших несоответствий по яркости, для более простой доработки.
Получить текстуру цвета и нормалей можно прямо в 3дмаксе, но там надо создавать проекцию, настраивать всё, а нам карту высот еще надо, там вообще плохо с этим. Надо переключаться в scanline render, шаманствовать с настройками, короче к чёрту все это. Делаем два экспорта - лоупольки и хайпольки, импортируем в xNormal, надо указать base текстуру для хайпольки, еще пара кликов мышкой и всё, текстуры запечены. Запекаю я уже в 8К, а карты высот и нормалей в будущем вообще порежутся до 2-4К, т.к. они не содержат в себе столько деталей, чтобы шиковать на 8К. Тут 8192*4096, т.к. текстура будет с соотношением 2:1, так устроен наш взгляд, что для кирпичной кладки важнее добавить кирпичей по горизонтали, чтобы повторяемость была менее явной. Все естественно в EXR 32-bit. Иначе никак.
Вот что выдает xNormal после себя. При желании уже можно использовать.
Вот только всё какое-то блеклое, гамма потеряна, карта высот не понятно что показывает, да и весит это все еще много, напомню, openEXR 8192*4096 32-bit float. Нам бы шакалоформат, жпег родимый. А еще нет никакой текстуры позволяющей делать отражения материалу.
Тут я пожалуй разделю на еще одну часть, думал в один пост уместится, похоже что нет. Как я дорабатываю текстуры после xNormal в Nuke и собираю Vray материал обратно в 3ds max запилю еще один пост поменьше. А еще отвечу почему телефон, а не фотик, почему 3ds max, а не Houdini, почему Nuke, а не Substance. Ну и может в комментариях еще какие вопросы по теме подвезёте.
Очередной 8K скан материала с помощью смартфона
Реалистичный рендеринг в Blender.
https://blendermarket.com/products/graswald
Качество: https://s3.amazonaws.com/markets-rails/uploads%2F15249361862...
Уже 12 лет я занимаюсь моделингом и визуализацией и текущая скорость развития CG меня поражает почти ежедневно! Фотограмметрия плотно входит в нашу сферу, качество визуализации и моделей потрясающее. Самое приятное, что все это параллельно перетекает в сферу развлечений, то есть игр и современные движки уже могут почти также, как на этой гифке. В общем, дожил я до будущего, о котором мечтал 10 лет назад )
3D модель из фотографий
Просматривая Пикабу наткнулся на тему создания 3D моделей по фото, и что-то она меня так зацепило что решил попробовать, и вот результат.
Можно повертеть модель щелкнув сюда
Данный метод называет "Фотограмметрия", под него есть и платные и бесплатные программы.
Плюсом такого метода является то, что тебе нужен лишь фотоаппарат и компьютер. Из минусов, например, такой метод очень плохо работает на одноцветных объектах без заметной текстуры.
Я использовал пиратку ознакомительную версию Photoscan (все равно тыкаю ради любопытства и пока не собираюсь на ней зарабатывать).
В ход пошли фотки типа такой
К слову, зеленый хромокей я потом попробовал ради эксперимента, но он на данной статуэтке бликует слишком сильно и зеленые блики я не смог убрать не портя цвета модели (впрочем, я не мастер фотошопа).
В принципе, фотограмметрия позволяет не использовать хромокей вообще, но тогда нужно переставлять камеру вокруг модели, но я же типа самый умный и решил поворачивать саму статуэтку, и лишь пару раз изменить положение фотоаппарата относительно статуэтки. За что поплатился тем, что пришлось для каждой фотки делать маску в фотошопе. Да, на 100 фотках.
Хорошо что я недавно узнал что в фотошопе можно автоматизировать обработку, но этот вопрос я раньше не изучал, заоодно узнал как это делается.
Конечно, маски получилось не идеальные, и для разных групп фотографий приходилось автоматизацию немного подстраивать для более приемлемого результата, но зато не ручками все 100 фоток обрабатывать.
Пример маски чтобы программа знала какие области фотографии нужно обрабатывать, а какие нет:
Из интересного - при повторных попытка сделать ту же модель используя немного другой подход я стал получал недоделанную модель с дырками. Пока что не я понял где именно я косячил.
После всех страданий окно программы выглядело так:
100 фотографий 5000х3200, чистое время работы компьютера ( i5 4 GHz, 16GB RAM, GF GTX 760 2GB) составило порядка часа на не самых крутых настройках (на максимуме кое где потребуется памяти сильно побольше чем 16 GB).
А в сумме, включая прыжки нуба по граблям, я потратил 1 день.
В 3D редакторах не обрабатывал - просто не умею, если честно. Запекать текстуру, делать низкополигональную модель - мне сейчас все это не нужно так как сейчас я просто ради интереса попробовал как работать с данным инструментом, и мне просто некуда девать полученный результат.
P.S. Возможно вы спросите "кому это вообще нужно?"
Например, игроделам - можно добавить в игру объект из реального мира.
Или еще фотограмметрия используются для создания рельефа местности используя аэрофотоснимки .
3D сканирование/фотограмметрия
Узрел пост про Photoscan, прогу, создающую облако точек из серии фотографий и строящую полигональную сетку, а также накладывающую текстуру на модель. До этого юзал Autodesk ReCap. Осваиваю технологию, в восторге. Решил поделиться результатом и предостеречь от ошибок)
Модель в 3dMax, Vray:
Сетка:
Сетка крупно:
430 фото на CANON EOS 7D, кит 18-55мм. Резкость должна быть во всем кадре, чтобы программа лучше понимала, но я не заморачивался.. из-за этого пришлось знатно чистить облако точек. Можно было сделать маски на каждую фотку 5184x3456, но чтобы было не так геморно - нужно фоткать на однородном фоне.
Sparse (Thin) Point cloud:
Dense Point Cloud:
Текстура тупо Diffuse 11к прям из проги, альбедо не делал, как и бамп, specular и прочие. Lopoly пока ищу как сделать автоматически менее геморно.
Если кто этим займется, наверняка прежде всего разберется в мануалах, но вот советы:
Облако точек чистить от шума и ошибок очень неудобно, поэтому не ленитесь делать маски. Чтобы их было делать проще - снимайте на нормальном однородном фоне, цвет которого отличается от подавляющей палитры объекта. И снимайте так, чтобы все было в фокусе, то есть с расстояния и закрытой диафрагмой. Также решает низкое ISO, поскольку шумы порождают кучу ошибок. Возможно, соблюдение этих условий позволит задействовать меньше исходных фотографий, я уверен, что для полученной выше модели с таким подходом потребовалось бы 80-100 фоток вместо 430.. а это значительно снизит время обработки.
Бонус: первым делом я принялся, конечно, искать HD видео полетов квадрокоптера, и вытаскивать оттуда кадры для обработки. Получается так себе (не хватает ракурсов, трудно найти видео с полными облетами), но все же интересно.
Фотограмметрия - как из фоточек сделать 3д модель
Как используя слабый компьютер и камеру (сгодиться даже телефон) сделать 3д модель почти любого предмета.

















































