Полуавтоматический метод - Моделирование эффектов

На данном этапе было принято решение сменить инструмент для создания трехмерной модели объекта. В качестве такого инструмента был выбран itSeez3D. iPad-приложение Itseez3D, использующее технологии компьютерного зрения, может превратить картинку, полученную с помощью камеры iOS-устройства, в 3D-объект. Чтобы программа выполнила свою задачу, к iPad нужно прикрепить структурный сенсор -- устройство Structure Sensor. Устройство надевается на планшет, после чего нужно сделать несколько снимков нужного объекта. Сфотографировать объект нужно с разных сторон. После этого фотографии передаются в приложение Itseez3D, которое обрабатывает их и создает трехмерную их модель.

При этом созданная трехмерная модель в точности передаст цвет, структуру объекта, преобразуя данные в весьма реалистичную модель. Единственное требование - при съемке объекта камера должна находиться в максимально неподвижном состоянии Приложение Itseez3D создаст трехмерное "селфи" // 3d-expo. ru URL: 3d-expo Источник: http://3d-expo. ru/ru/prilozhenie-itseez3d-sozdast-trehmernoe-selfi (дата обращения: 02.05.2015)..

Данное приложение подаст на вход алгоритму следующие данные:

    - model_mesh. ply - финальная трехмерная модель объекта в системе координат rgb-камеры; - model_texture. jpg - финальная текстура объекта; - planeCoeffs. yml - уравнение плоскости стола в системе координат rgb-камеры; - intrinsics_ios. yml - внутренние параметры rgb-камеры; - ios_image_00000.jpg - изображение стола без объекта; - ios_image_00001.jpg - изображения стола с объектом (будет использоваться для сравнения).

Для создания полуавтоматического метода была использована возможность Blender работать со скриптами, написанными на языке Python. Python - это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает модули, исключения, динамическую типизацию, очень высокоуровневые динамические типы данных и классы. Python комбинирует потрясающую мощность с очень ясным синтаксисом.

Скрипты на Python - сильный и универсальный способ расширения функциональных возможностей Blender'а. Большинство областей Blender'а может быть заскриптовано, включая: анимацию, визуализацию, импорт и экспорт, создание объектов и автоматизация повторяющихся задач.

Алгоритм:

    - Строим модель в itSeez3D, получаем данные, описанные выше; - Создаем сцену в Blender без объекта; - С помощью автоматического скрипта на Python: O Создаем плоскость на основе полученного уравнения; O Выставляем камеру согласно параметрам; O Вставляем объект, текстурируем его; O Выставляем источники освещения; O Запускаем рендеринг с помощью Cycle Render метода рендеринга изображения по слоям.

Отдельно следует остановиться на возникшей задаче конвертации параметров камеры, которые использует Itseez3D и Blender. Программное обеспечение Itseez3D использует модель "pinhole camera model" библиотеки алгоритмов компьютерного зрения OpenCV. В данной модели вид сцены формируется с помощью проекции трехмерных точек на плоскость изображения, используя трансформацию:

Или

, где

- координаты трехмерной точки;

- координаты проекции точки в пикселях;

- матрица камеры (внутренних параметров);

- принципиальная точка (обычно центр изображения);

- фокусное расстояние, выраженное в пикселях.

Камера в Blender имеет следующие параметры:

Lens -- характеризует размер линзы, в миллиметрах;

Resolution_x/resolution_y - характеризует разрешение итогового изображения;

Angle_x/angle_y - позволяет задать фокусное расстояние;

Sensor_width/sensor_height - позволяет задать соотношение сторон (например, 4:3).

Для конвертации была написана следующая функция:

Def getCameraParameters(K_list):

K = np. reshape(np. array(K_list), (3,3))

Resolution_x = round(2 * K[0, 2] + 1)

Resolution_y = round(2 * K[1, 2] + 1)

Fx = K[0, 0]

Fy = K[1, 1]

Angle_x = 2 * math. atan(resolution_x/(2 * fx))

Angle_y = 2 * math. atan(resolution_y/(2 * fy)) return CameraBlender(resolution_x, resolution_y, angle_x, angle_y)

Для выставления параметров камеры в Blender была написана следующая функция:

Def setCameraParameters(camera_blender):

Bpy. context. scene. objects. active=bpy. data. objects['Camera']

Bpy. context. scene. camera = bpy. data. objects['Camera']

Scene = bpy. data. scenes["Scene"]

Scene. render. resolution_x = camera_blender. resolution_x

Scene. render. resolution_y = camera_blender. resolution_y

Scene. render. resolution_percentage = 100

Bpy. data. cameras[0].sensor_width = 25.4 * 4

Bpy. data. cameras[0].sensor_height = 25.4 * 3

Bpy. data. cameras[0].lens_unit == 'FOV'

Bpy. data. cameras[0].angle_x = camera_blender. angle_x

Bpy. data. cameras[0].angle_y = camera_blender. angle_y

Scene. camera. data. angle_x = camera_blender. angle_x

Scene. camera. data. angle_y = camera_blender. angle_y

# Set camera rotation in euler angles

Scene. camera. rotation_mode = 'XYZ'

Scene. camera. rotation_euler[0] = math. radians(180)

Scene. camera. rotation_euler[1] = 0

Scene. camera. rotation_euler[2] = 0

# Set camera translation

Scene. camera. location. x = 0

Scene. camera. location. y = 0

Scene. camera. location. z = 0

Автоматический скрипт выставляет объект и плоскость под ним, камеру, а также создает необходимые материалы для объекта. Листинг представлен в Приложении 1. Результат работы скрипта представлен на рисунке ниже.

Рисунок 39

Рисунок 40

Результат работы автоматического скрипта представлен на рисунке ниже (слева направо: настоящая фотография, смоделированное изображение без эффектов освещения). Рисунок демонстрирует точность позиции объекта).

Рисунок 41

Результат работы алгоритма с эффектами освещения представлен на рисунке ниже:

Рисунок 42

Было выявлено, что данный способ имеет ряд преимуществ:

    1. Качество полученной модели существенно выше; 2. Доступна дополнительная информация о сцене, позволяющая точно вставить объект, задать параметры камеры; 3. Существенная часть работы автоматизирована; 4. Автоматизация дает возможность дальнейшего поиска наилучшего способа смоделировать тени для достижения максимальной реалистичности.

Похожие статьи




Полуавтоматический метод - Моделирование эффектов

Предыдущая | Следующая