![image](https://habrastorage.org/getpro/habr/post_images/a1d/629/d52/a1d629d5295edf7406ab6646c56cc920.jpg)
Сегодня мы продолжим рассказ о наших изысканиях в области фотограмметрии, но уже на примере создания материалов. Напомню, что в прошлый раз мы начали рассказывать вам об этой дисциплине и её опыте использовании при создании контента для трёхмерной компьютерной игры во вселенной Half-Life. Что ж, сразу приступим к делу.
Съёмки и обработка
После наших первых вылазок в ближайшие лесопарки стало ясно, что для эффективного использования времени, отведённого для съёмки на натуре, нам нужно найти место с максимальной концентрацией интересных объектов и разнообразным ландшафтом. В городском лесопарке вы, к примеру, не найдёте старые поваленные деревья, огромные валуны и скалистые обрывы. После непродолжительных поисков мы нашли подходящее место — федеральный заповедник «неподалёку» от города.
Не долго думая мы собрались и отправились на один день в небольшую 130 километровую экспедицию, и очутились в настоящей сказке!
![image](https://habrastorage.org/getpro/habr/post_images/a92/6d8/b56/a926d8b569d363c0a9c5d25c7cb023cf.jpg)
Съёмка поверхностей для создания материалов оказалась сопряжена со своими особенностями и трудностями. Чтобы в конечном счёте получить интересный материал с разнообразием деталей, нужно отснять достаточно большую поверхность — хотя бы 3х3 метра. При этом, для получения высокой детализации материала, необходимо снимать с близкого расстояния и следить за тем, чтобы соседние снимки пересекались, т.е. чтобы на соседних снимках 50-60% кадра занимал один и тот же участок поверхности (именно это пересечение и будет использоваться в процессе фотограмметрии).
В силу вышесказанного, при съёмке приходится медленно продвигаться по намеченной площади и делать подряд огромное количество снимков (150, а то и все 200 фото) за один раз в согнутом, неудобном положении. Если же делать передышки, то возрастает риск потерять точное место, на котором ты остановился, или же получить изменение в освещении, если солнце успеет выйти из-за тучи, пока ты отдыхал. Ещё один нюанс, за которым стоит постоянно следить — то куда ты ступаешь. Ветка, которую ты случайно не заметил и сдвинул в середине съёмки, может испортить всю работу, а отпечатки твоих ботинок или забытые вещи могут перекочевать на финальный материал в игре, что очень нежелательно.
Хотя нам и показалось, что съёмка различных поверхностей для создания материалов выходит труднее (во всяком случае физически), чем съёмка объектов, но по времени она вышла, напротив, быстрее. За один день мы успели отснять шесть природных материалов, множество фото-референсов леса, пару моделей и даже материал кирпича на обратной дороге, который изначально не входил в наши планы. Материал кирпича, впрочем, нам очень даже пригодился.
![image](https://habrastorage.org/getpro/habr/post_images/704/8f7/eae/7048f7eaeb14dacc222c9a4ee78ad97a.jpg)
Обработка фотографий для создания материалов в целом ничем не отличается от того, что мы описывали в предыдущей части дневника, разве что в этот раз у моделей вышло чуть больше полигонов. Результаты фотограмметрии вы видите выше — высокополигональные модели поверхностей (от 11 до 16 млн треугольников), каждая с альбедо картой размером 16 384 пикселей.
Тайлинг
Так как мы задумали использование фотограмметрии в первую очередь для материалов ландшафта (земля, трава, скалы), перед нами неизбежно встала проблема тайлинга. Тайлинг — это методика для оптимизации в 3D графике, при которой для заполнения больших пространств на полигоны накладывается всего одна текстура, которая повторяется во всех направлениях и заполняет собой всё указанное пространство. Чтобы такая текстура на поверхности выглядела наилучшим образом, она должна быть подготовлена так, чтоб её края плавно продолжали друг друга.
Очевидно, что в результате фотограмметрии никаких плавных переходов на краях высокополигональных моделей мы не получаем. Как вариант, можно попытаться состыковать девять копий полученной в результате фотограмметрии модели и при помощи специального ПО в ручную изменить форму полигональной сетки, чтоб получить плавные переходы. К сожалению, времени в таком случае уходит уйма, при этом для каждого нового материала стыковать модели приходится с нуля. Для быстрой обработки результатов фотограмметрии этот способ явно не подходит. Поэтому, мы избрали другой путь.
Мы решили работать с уже полученными от высокополигональной модели текстурными картами и подготовить их для тайлинга в одной из программ, используемых для создания процедурных материалов. Прелесть такой программы заключается в том, что она позволила нам при помощи граф-схем создать свои собственные шаблоны, которые сохранят нам кучу времени при создании похожих материалов в будущем.
![image](https://habrastorage.org/getpro/habr/post_images/86a/dde/ee2/86addeee26390048cb8d8a5ad804cd67.jpg)
Мы создали два крупных шаблона (см. изображение выше), состоящие из десятков операций. Один предназначен для материалов с хаотичной структурой (трава, почва, мох, каменная поверхность и прочие природные материалы), другой для материалов с неким повторяющимся узором (кирпич, плитка и прочие рукотворные материалы). Однако, оба шаблона объединяет то, что они позволяют извлечь и настроить все дополнительные текстурные карты для создании полноценного материала, а также получить без потери качества материал, подготовленный для тайлинга.
Для того чтобы при подготовке материала к тайлингу не терять качество полученное в результате фотограмметрии, нам пришлось кардинально переделать уже встроенную в программу граф-схему для тайлинга. Наша новая граф-схема позволяет использовать при смешивании различных тайлов (копий исходной текстурной карты) информацию о высоте расположения над поверхностью той или иной детали на текстуре (на изображении ниже можно заметить, как отдельные листики и палочки проступают поверх ровной поверхности земли).
Стандартная же граф-схема просто смешивала края тайлов текстурных карт. Такой метод возможно допустим при подготовке к тайлингу альбедо карт, но вот при использовании с картами нормалей полностью теряется информация на стыке тайлов. Именно поэтому мы и отказались от стандартной граф-схемы. Вы сами можете сравнить полученный результат при подготовке карт нормалей на изображении ниже (различные тайлы были развёрнуты и покрашены в разные цвета для большей наглядности).
![image](https://habrastorage.org/getpro/habr/post_images/314/5d0/1e8/3145d01e85ae1c7e5b2f056c88486bc7.jpg)
На основе самодельной граф-схемы, мы смогли создать ещё одну, новую граф-схему для подготовки к тайлингу материалов с узором, где мы добавили больше настроек для маски смешивания и деформации тайла. Новая граф-схема, в свою очередь, и переросла во второй шаблон.
Таким образом, после того, как мы получили первый готовый материал, у нас на руках остался шаблон, который позволил нам создать каждый последующий природный материал всего за два дня (без учёта времени на съёмку). А материал кирпича, удачно подвернувшийся нам по дороге домой, позволил нам создать второй шаблон, который, безусловно, так же сильно сократит нам время на создание различных рукотворных материалов с узором в будущем.
Результаты
Ну что ж, пришло время подводить итоги. Но что же может рассказать об итогах фотограмметрии лучше, чем изображения финальных результатов? Правильно, ничего! Поэтому рендеры финальных материалов ждут вас ниже.
![image](https://habrastorage.org/getpro/habr/post_images/9f2/b37/ee7/9f2b37ee7e512a98b59b6237890363eb.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/fc5/507/bc7/fc5507bc702d7e4a4b5d91fa0a6f7b79.jpg)
Мы также подготовили небольшую сцену на тестовой карте, чтобы показать новые модели и материалы так, как они будут выглядеть в самой игре. К тому же в небольшом «видео» вы можете проследить все изменения на карте, которые произошли с ней за пару дней, пока мы готовили её для показа в этом дневнике. Сообщите нам, если вас заинтересовал такой формат.
![image](https://habrastorage.org/getpro/habr/post_images/856/933/f07/856933f07fa831539b26d1f272b6589d.jpg)
Отметим, что это не финальный вид природных локаций, нам ещё предстоит заняться новыми деревьями, травой и прочей растительностью, а также небосводом. Возможно, о чём-то из этого мы расскажем в следующих дневниках разработки игры.
И ещё немного скриншотов напоследок, чтобы рассмотреть всё подробнее.
![image](https://habrastorage.org/getpro/habr/post_images/fe1/2bf/8ae/fe12bf8ae9b31afc7e4960d282d05790.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/e6e/3f3/9a2/e6e3f39a24f781045012e26ce655c264.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/638/a31/41a/638a3141ab1a23e7da1c8e421c032644.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/cc7/a55/b3ecc7a55362eed7f7b3eca80bd366ac.jpg)
Теперь же вернёмся к итогам в текстовом виде. Наш эксперимент с фотограмметрией, как мы считаем, полностью удался. Мы не только многому научились, но и выработали готовую цепочку методик для работы с этой технологией.
Фотограмметрия полностью оправдала себя как мощный и надёжный инструмент разработчика, который способен решать ряд непростых задач в спартанских условиях в небольшой команде игроделов, и мы с удовольствием взяли этот инструмент на вооружение. Мы обязательно сделаем ещё несколько вылазок для новых съёмок природных объектов и материалов, к тому же мы подумываем о вылазках в промышленные зоны за интересными рукотворными материалами (а может и объектами). Ждите, скучно не будет.
Ну, а на этом у нас пока всё. Оставайтесь с нами и не забывайте делиться своим мнение о дневниках разработки и о развитии «Lost Story: The Last Days of Earth» в целом.
Eugeny1987
Крутотень!
Это же в Substance Designer сделано?
Можете поделиться графами?
hitmen047
Да, материалы были сделаны при помощи Substance Designer.
Графами вряд ли сможем поделиться в данный момент.