ru24.pro
Работа
Октябрь
2024
1 2 3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Написать алгоритм генерации 3D теней для 2D картинок без фона

0
необходимо решить интересную задачу по генерации реалистичных теней, которые могут отбрасывать 2д обьекты на пол. На вход приходит 2д картинка без фона, параметры света, а на выходе надо получить 3D тень картинкой, и совместить с изначальной фоткой в растре.

Пример: надо генерировать релистичные (но упрощённые) тени с фото стула с ножками и поперечными перекладинами (фон уже вырезан), в зависимости от направления света на обьект. Тень должна реалистично начинаться от каждой ножки и так же видна тень от перекладин и сидения.

Из быстрых экспериментов стало ясно что сделать это вполне реально, как вариант: делаем 3D экструзию 2D контура (с вырезами) нашей картинки, далее размещаем на сцене и дальше просто крутим свет параметрами скрипта. Но возможно есть и другие варианты.


Проблема:
  • сложная математика и 3D моделирование это не моя компетенция, сообенно если надо всё довести до уровня стабильных результатов. Всё остальное - деплой, обёртка и размещение на сервере - по моей части. В остальном задача точно решаемая.

Методы решения:
  • моделирование в 3D
  • все варианты с трансформациями копии обьекта в 2D уже пробовал - не получается сделать реализм никак. На сложных обьектах ломается либо тень нереалистичная.

Технологии:
  • Blender - Python API
  • Unity/WebGL/OpenGL - Web
  • ThreeJS - Web
  • Предпочитетельней быстрый Web, но и серверное решение тоже подходит

Требования:
  • Полная автоматизация, то есть это должен быть скрипт которому скармливаем наше фото без фона и получаем тень обратно (реализовать локально под Win/Linux)
  • Угол, направление и интенсивность света - параметры на вход
  • Есть упрощения: так как тень у нас всё равно размытая это помогает срезать углы в скорости рендера и т.д. Нет необходимости идеально повторять обьект в 3д - достаточно повторить общую форму
  • Должно работать быстро <3сек

Просьба писать только исполнителям с реальным опытом решения подобных задач. Если опыта нет - можете попробовать сделать демку чтобы отклик стал предметный.

По отклику могу дать больше информации и примеры.