Введение
Для игры World Void нам понадобилось портировать в Unreal Engine 4 исторический памятник. Моей задачей было сканирование замка. Я ожидал финансирования, которое всё задерживалось, поэтому решил наконец просто взять и сделать всё самостоятельно, без денег, и у меня получилось — я отсканировал замок! Прошло уже несколько месяцев, а я до сих пор в восторге! В этой статье я расскажу, как мне это удалось. Но сначала я хочу поблагодарить Милоша Лукача, Джеффри Иэна Уилсона и 3D Scanning User Group, без которых это бы оказалось невозможным.
Что такое фотограмметрия?
Если вкратце, то фотограмметрия — это процесс создания 3D-моделей из нескольких фотоснимков одного объекта, сделанных под разными углами.
Я не буду рассматривать трёхмерное сканирование объектов, эта тема уже достаточно освещена.
Если вы хотите начать осваивать фотограмметрию, то рекомендую это короткое видео Джеймса Кэнди с YouTube. Хоть в нём и упоминается Agisoft Photoscan, рассмотренные концепции сработают в любом другом ПО для фотограмметрии. Можно также изучить Руководство по фотограмметрии для бедных.
В своём рабочем процессе фотограмметрию используют очень многие художники, её применяли для демо Kite компании Epic games, в Star Wars Battlefront и бесконечном числе других проектов. Однако большинство этих студий сканировало камни и деревья. Epic games написала пост о том, как создавались ресурсы для демо с открытым миром. Сотрудники компании даже написали пост о выборе оборудования и ещё один, описывающий процесс устранения освещения. Крайне рекомендую прочитать эти посты, если вы ещё их не видели.
Сложности
При сканировании такого большого объекта, как замок, не следует забывать о следующих сложностях:
- Количество снимков: замок объёмнее, чем камень, поэтому даже если вам нужна низкополигональная модель, снимков придётся делать больше. Это значит, что понадобится SD-карта большего размера. Но купив объёмную SD-карту, вы встретитесь с проблемами разряда аккумулятора, так что неплохо будет купить запасную батарею. Это может казаться очевидным, но когда я начал делать больше двух тысяч снимков, для меня это оказалось открытием. На половине этого процесса у меня стала разряжаться батарея. К счастью, охранники замка позволила мне зарядить фотоаппарат в их кабинете. Сделав снимки, вам придётся найти на компьютере достаточно места для хранения, но жёсткие диски в наше время очень дёшевы.
- Больше времени: логично, что чем больше снимаешь, тем больше требуется времени. На сканирование замка у меня ушло 8 часов, то есть вам понадобится 8 часов пасмурной/облачной погоды. Неплохо также будет делать все необходимые фото одного участка замка, а уже потом переходить к следующему. В этом случае, если солнечное освещение немного сместится, и ПО не удастся связать все фотографии вместе, то вы всегда сможете соединить их вручную с помощью контрольных точек.
- Вычислительная мощь: из-за большого количества анализируемых фотографий вам понадобится много вычислительных ресурсов. Требования к компьютеру зависят от ПО для 3d-сканирования, но вот, что нужно знать:
- ОЗУ. Много ОЗУ, 64 ГБ — отличный выбор. Однако в некоторых пакетах 3d-сканирования используется система кеширования, позволяющая обрабатывать сканы с небольшим количеством ОЗУ, но я всё равно не рекомендую работать меньше чем с 32 ГБ.
- Видеопроцессор. Чем быстрее, тем лучше. Много видеопамяти не понадобится, 4 ГБ вполне достаточно. Я бы рекомендовал карту NVidia GTX, потому что часть ПО не поддерживает AMD.
- Процессор. Чем больше ядер, тем лучше.
- Сложные углы съёмки: при сканировании камня вы можете делать снимки под любым углом, а в огромном замке есть труднодоступные места. При возможности пользуйтесь дроном, но у меня его не было, поэтому пришлось решать проблему иначе, о чём я расскажу ниже.
- Сложная конструкция: в отличие от камня, замок имеет более сложные формы, не говоря уже о том, что у камней нет внутренних помещений. Задача становится ещё более сложной, нужно убедиться, что снято всё необходимое. Как этого добиться? Предварительным планированием и проверкой на месте.
Изучи свою цель (предварительное планирование)
Я работаю в историческом памятнике Библ, городе в Ливане, который был населён более десяти тысяч лет. Однако сам замок датируется 12 веком. Это относительно небольшой замок по сравнению с более новыми, построенными в некоторых европейских странах, однако каждая стена этого замка создана из высокодетализированной каменной кладки, отшлифованной самим временем.
Под изучением цели я подразумеваю, что нужно зарисовать на бумаге виды сверху и сбоку, разбить их на несколько элементов, выбрать порядок выполнения съёмки и выделить те области, в которых нужно сделать больше снимков.
Кроме того, при сканировании накапливаются ошибки, что приводит к созданию смещённой геометрии, поэтому нужно всегда делать полный набор круговых снимков объекта, чтобы сканы автоматически корректировались. Открытая геометрия может быть неточной.
Также я воспользовался возможностью и сделал со стен замка множество снимков окружающей местности, что позволило добавить в скан ландшафт.
Подсказка: не делайте несколько изображений под разными углами с одной точки (панорамные изображения). Чаще всего это приводит к нежелательным ошибкам.
Полезный способ сканирования небольших туннелей, в которых из-за ограниченного пространства сложно делать снимки со всех углов: шагайте по прямой, и на каждом шаге делайте снимок направленной вперёд камерой. Эта техника даёт меньшее разрешение, но его может оказаться вполне достаточно.
Очень высока вероятность того, что при сканировании вы пропустите несколько ракурсов и снимки будут недостаточно накладываться друг на друга, что приведёт к появлению в скане областей с низким разрешением, так что я крайне рекомендую проверять результат на месте. ПО для 3D-сканирования Reality Capture, например, может проверить перекрытие огромного количества изображений на ноутбуке всего за несколько минут. Это невероятно полезно — оно даст вам понять, в каких областях нужно больше изображений.
Белыми точками обозначены места, из которых сделаны снимки. Синие точки — это добавленные вручную геодезические пункты, помогающие связать некоторые элементы, которые ПО не может связать автоматически. Заметьте, что на крыше замка есть множество геодезических точек, и это нормально, потому что у меня не было дрона и я не мог сделать достаточное количество снимков крыши. К счастью, мне удалось привязать их вручную, что для больших замков может оказаться невозможным. Всего ПО выполнило привязку 4000 фотографий.
Что вам понадобится?
Если вы стремитесь как можно больше сэкономить, то вот, что вам нужно:
- Камера (ага), обязательно «зеркалка» (DSLR). В новых смартфонах, например, в Galaxy S7 достаточно неплохие камеры, но если вы зарабатываете 3D-сканированием, то купите DSLR. У меня не было «зеркалки», поэтому я позаимствовал её у тёти. Это была Nikon d3200, и поскольку я сканировал замок из камней, мне не потребовалась камера с большей резкостью.
- Объектив. Камеры продаются с объективами с переменным фокусным расстоянием (18-55 мм), но рекомендуется использовать объектив с постоянным фокусным расстоянием. Однако если вы будете использовать предельное значение (18 или 55) для всего скана, то всё должно быть в порядке.
- Штатив. Да, он вам понадобится, особенно если вы снимаете в условиях слабого освещения, например, внутри замка, и не можете использовать вспышку, то есть будете делать снимки с большой выдержкой.
- Монопод полезен, но если у вас не трясутся руки и подобрана нужная скорость затвора, то можно обойтись без него. С другой стороны, он стоит всего 10 долларов, так почему бы и нет?
- SD-карта. Я пользовался SD-картой на 64 ГБ. У меня с собой был ноутбук, и если карта бы переполнилась, я мог бы просто перенести снимки на жёсткий диск.
Что я не использовал
- Аккумулятор. У меня его не было, но если вы собираетесь делать много снимков, рекомендую купить второй или даже третий аккумулятор.
- Дрон. Он может намного облегчить вашу работу, и если есть такая возможность, то подумайте над его приобретением. У меня не было дрона, поэтому приходилось карабкаться и делать снимки из разных опасных точек. К счастью, это сработало, но насколько вам захочется испытывать судьбу, особенно в больших замках?
- Хромированный шар и серый шар. Это устройство используется для получения идеальной точности цветов и идеального процесса устранения освещения. Соблазнительно использовать любые возможности для создания идеального скана. Но сначала задайтесь вопросом, стоит ли оно того? Существуют другие техники устранения освещения, которые не требуют этого устройства, при этом обеспечивая вполне приличные результаты. В моём случае это устройство добавило бы проекту ещё один большой слой сложности, который не стоил возможного улучшения качества.
- Калибровочная мишень Color checker. Это дорогое, но полезное для калибровки камеры приспособление. Я при сканировании его не использовал.
Программное обеспечение
Я протестировал кучу фотограмметрического ПО, и любые из перечисленных ниже пакетов достойно справляются с небольшими сканами, но мне нужно было обрабатывтаь большие объёмы данных (4000 фотографий разрешением 24 мегапикселя).
- Agisoft Photoscan. Agisoft — самое популярное ПО в индустрии развлечений. У него дружественный интерфейс и потрясающее качество готовых сканов. Стандартная версия стоит 180 долларов, но если вам нужна опция создания геодезических пунктов, которая может оказаться очень полезной при создании больших сканов, то придётся купить профессиональную версию за 3500 долларов. При этом Agisoft потребляет много вычислительных ресурсов, и если вы хотите обработать большой объём данных, то вам нужен будет невероятно мощный компьютер. Не говоря уже о том, что Agisoft немного медленнее, чем её конкуренты из этого списка.
- Pix4d. Из-за специализированного набора инструментов это ПО наиболее распространено в промышленности и сельском хозяйстве. На мощном компьютере оно может обрабатывать большие объёмы данных, и при этом немного быстрее, чем Agisoft. Подписка на этот пакет стоит 350 долларов в месяц. Однако мне не очень понравилось качество получающихся текстур.
- Autodesk Recap. Это облачное ПО, имеющее бесплатную версию и создающее сканы хорошего качества. К сожалению, обрабатываемый набор ограничен 250 фотографиями, а загрузка больших объёмов данных в облако занимает целую вечность.
- Reality Capture. Новичок, взявший рынок штурмом. Это невероятно быстрое ПО, оно может обрабатывать большие объёмы данных и способно работать на обычном компьютере с видеопроцессором NVidia. Его можно запустить даже на ноутбуке, однако я не рекомендую этого делать, если только у вас не игровой ноутбук с хорошим охлаждением — сильная и длительная нагрузка на ноутбук снижает его ресурс. У Reality Capture есть отличные функции быстрой привязки, позволяющие связать изображения на ноутбуке за считанные секунды. Это удобный инструмент для проверки набора данных на месте съёмки, чтобы убедиться, что снимков достаточно. По сравнению с Agisoft у этого ПО сканы выходят немного более шумными. Оно стоит 99 евро за три месяца, однако эта версия может обрабатывать не больше 2500 изображений. Если вам нужно больше, то придётся покупать версию CLI за 7500 евро в год. К счастью для меня, при сканировании замка Reality Capture находилась в состоянии беты и была бесплатна в течение 60 дней. Этого более чем достаточно, чтобы закончить сканирование.
Затраты
Это интересная часть. Камеру я позаимствовал, ПО было бесплатным, однако мне всё равно нужно было обработать скан, потому что мой ноутбук с этим не справился бы. Здесь мне помог Милош Лукач, он предложил обработать данные на своём компьютере, и моя благодарность не знает границ. Он помог мне и в процессе привязки данных, показал пару хитростей для исправления некоторых моих ошибок, свойственных новичкам. В результате, мне пришлось потратиться только на штатив, монопод и SD-карту, что в сумме составило 70 долларов + доставка. То есть да, мне удалось отсканировать замок сверху донизу всего за 70 долларов! Я доказал, что имея желание, можно найти способ. Мне повезло, но везение пришло, когда я начал общаться и заводить знакомства.
Можно ли это повторить?
За полгода до начала сканирования замка я ничего не знал о 3D-сканировании. И хотя у меня есть соблазн сказать, что я сделал это в одиночку, это будет неправдой — мне помогли, и во многом эта помощь получена от сообщества и профессионалов отрасли. Как мне удалось их найти? Довольно просто — в группе Facebook 3D Scanning Users Group. Сначала я вступил в группу, потом объяснил, что хочу сделать, и получил от сообщества большую поддержку. Один из участников группы, профессионал Джеффри Иэн Уилсон даже написал мне в «личку», и мы плодотворно пообщались. Он наставил меня на путь истинный, понял, что я готов к сложному проекту и дал рекомендации. Кроме того, он посоветовал относиться к его рекомендациям с определённой долей скептицизма. То же самое относится и к моим советам: на самом деле мой опыт в 3D-сканировании составляет всего шесть месяцев, при сканировании замка я наделал ошибок, к счастью, они были не слишком серьёзными и их удалось исправить. Если мне и удалось отсканировать замок, то это не значит, что я — лучший помощник в сканировании замков. Я просто делюсь своим опытом, изучайте и пробуйте всё самостоятельно. Отвечаю на вопрос в заголовке раздела: да, вы можете повторить мой «подвиг», если у вас есть решимость, то нет ничего невозможного.
В заключение
Я искренне надеюсь, что наш опыт может оказаться полезным для читателей, и если из этого выйдет что-то интересное, напишите мне в Твиттере или поделитесь в группе Facebook, я с удовольствием посмотрю.
Обработка скана из одного миллиарда полигонов и его портирование в игровой движок — это уже совсем другая история, достойная ещё одного поста.