Чё за апп?
В описании было написано самсунг, но подробностей я не нашёл((
В описании было написано самсунг, но подробностей я не нашёл((
Привет, хочу поделиться опытом создания трехмерной модели школы. Видеоролик кратко поведает об истории здания. А в статье я расскажу о методике работы с фотографиями и покажу фотографии с пожара.
Летом, крыльцо школы было нашим излюбленным местом сбора. Оно выполняло роль общественного пространства для школьников и студентов. Вечером туда приходили "тусить" и знакомиться. Играть на гитаре и бухать пиво.
Мне запомнился школьный период с теплотой, а со зданием связано много добрых воспоминаний. Несколько раз снился сюжет, словно возвращаюсь домой и заглядываю в гости в школу. Иногда она была причудливо искажена, по логике мира сна, её восстанавливали и дорабатывали... Что-то во мне томилось. Не давало покоя. И захотелось её самому взять и нарисовать.
Однажды, мой приятель Алексей Ляпин показал способ, как при помощи бесплатного плагина для blender-а можно по фотографии подогнать ракурс и поле зрение камеры, чтобы их перспективы совпадали. Представьте подгонку виртуальной камеры под реальную (которой снимали фото) по положению в пространстве и фокусному расстоянию объектива. Тогда я и задумался, что эта методика поможет.
Фотографий со школой было достаточно, это радовало. Сделанные с разным освещением и погодой. И почти со всех ракурсов. Были цифровые, которые я сам снимал, так и из соцсетей. Были так же и фотокарточки, снятые еще на плёнку. Собрал всё в одну папку и стал разбираться.
Заметка: повезло сделать несколько снимков интерьера на цифровую камеру. Зацените инфографику в кабинете биологии! Обожал залипать в эту схему на уроках. Самый глазастый найдет неведому зверушку.
Методика работы с аддоном, примерно: открыть фотографию, прочертить четыре линии, которые должны попарно находиться на разных слоях Grease pencil... Эти линии необходимо ориентировать по прямоугольным объектам кадра. Это довольно серьезное ограничения метода, кстати. Потом нажать кнопку и камера в сцене может встать хаотичным образом ориентированной по отношению к точке отсчета...
Короче, я не вижу смысла вас этими подробностями утомлять, т.к. автор плагина в итоге сделал отдельное приложение. В котором работа упрощалась, становилась наглядней и приятней.
Программа называется fSpy, бесплатная и сделанная с душой. Это тот редкий случай программ, когда она маленькая, удобная, лаконичная и работает идеально. Еще и эстетически приятная, супер!
Этап выравнивания сначала показался рутиной. Но позже стал чем-то вроде сборки трёхмерного паззла. Когда осознаешь, что уже интуитивно чувствуешь перспективу и размеры это можно совмещать с прослушиванием кастов.
Внимание, вот для чего была эта вся подготовка.
Теперь можно прямо из камеры в редакторе технично расставлять окошки, двери, стены и т.п. Без необходимости отвлекаться, что-то считать, измерять и т.п.
Это все выглядит просто, на деле наткнулся на множество мелких проблем и трудностей, даже пришлось два раза пересоздавать файл и начинать почти заново, т.к. допускал ошибки вначале.
Большим подспорьем стал спутниковый снимок, я не помню откуда именно этот скриншот, но сейчас карты обновились. И школы уже нет. Здание ориентировано не по сторонам света, а для удобства. Есть даже пара фотографий с самолёта, но их уже не позволяет приложить лимит публикации.
Далее следовала кропотливая работа, типа прорисовывания проводов, снега, крылечек...
А к табличке применена техника "экстракции текстуры", мне нужна была она без текстурного искажения. Получил.
Перерисовка в векторе.
Адресные таблички.
Тут мы временно влечемся на моментыпожара. Фото: Ларин Владимир.
Вид со стороны главного входа (ракурс почти как вначале видеоролика).
Упавшие по диагонали двора провода. Слева видим наполовину сгоревшую пристройку со входом. На втором этаже была библиотека. Её окна над головой пожарного.
Вид на внутренний угол, где был вход. Со двора. На переднем плане Л-образная опора ЛЭП, которая стоит у въезда в мастерскую. Стены уже почти потеряли очертания.
Никто из людей не пострадал.
Вид места происшествия утром. Слышал байку, что пар и дым, остатки стен источали еще неделю... За правдивость не ручаюсь. Наблюдал подобный пожар, тоже происходивший зимой. Здания раза в три меньшего, чем школа. И действительно, пепелище дымило и пахло несколько дней.
Кстати, процесс горения таких объемов дерева выделяет много тепла. От излучения может оплавиться краска на соседних домах и потемнеть кора стоящих неподалёку деревьев. На фото выше этот эффект тоже можно наблюдать. Березы порыжели от обугливания жаром.
Но вернемся к основному повествованию.
Я хотел опубликовать пост в ВК на каникулах и почти неделю корпел над анимацией, двигая ключи и рисуя эффекты.
Для создания особого настроения еще пару дней пошло на перерисовку школьного каллиграфического шрифта. Помните такой? Кто его застал сам?
А еще пришлось позалипать над созданием искристого материала снега, был получен бесценный опыт. Впрочем, как и от остальных работ над проектом.
Я буду рад, если вам понравилась статья. И интересно ли вам прочитать подобные, о других зданиях? Которые будут реконструироваться со временем.
Возможно будут какие-то предложения, пишите.
Спасибо за внимание!
P.S. если вам не безразлично архитектурное наследие нашей страны старайтесь фотографировать старые здания со всех сторон и делиться ими в интернете, возможно кому-то эти фотографии очень помогут.
Итак, получили мы после запекания текстурки, но они малопригодны для применения, нет бесшовности, цвета не те, резкости нет, также нет карты для отражений.
Дорабатываю в 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. Ну и может в комментариях еще какие вопросы по теме подвезёте.
https://blendermarket.com/products/graswald
Качество: https://s3.amazonaws.com/markets-rails/uploads%2F15249361862...
Уже 12 лет я занимаюсь моделингом и визуализацией и текущая скорость развития CG меня поражает почти ежедневно! Фотограмметрия плотно входит в нашу сферу, качество визуализации и моделей потрясающее. Самое приятное, что все это параллельно перетекает в сферу развлечений, то есть игр и современные движки уже могут почти также, как на этой гифке. В общем, дожил я до будущего, о котором мечтал 10 лет назад )