Сразу оговорюсь, что это не туториал как правильно и нужно делать, это только мой личный подход с удобными для меня инструментами.
Что мне требуется для фотоскана, железо:
Телефон с топовой или около-топовой камерой, нужна высокая детализация кадра, адекватный динамический диапазон, чтобы не было пересветов и чтобы не было черных теней, шумодав в камере без артефактов. Летом долго выбирал на 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. Ну и может в комментариях еще какие вопросы по теме подвезёте.