@rdk

Как сгенерировать изображение 3D кубиков (игральных костей) на стороне сервера?

Необходимо на стороне сервера генерировать изображения с игральными костями, "выпавшими" рандомно (угол поворота, угол проекции, значения на гранях -- все случайное).

Рассчитывать координаты точек в проекции я, к сожалению, не умею, реализовать самостоятельно с нуля не выходит, поэтому ищу либы, которые подобное делать умеют.

Очень хотелось бы реализовать на PHP, но рассматриваю все варианты.

Пока найдено лишь одно решение: www.fmwconcepts.com/imagemagick/3Dbox -- но хочется альтернатив.

Буду признателен за любые подсказки и наводки.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 5
@Dmtm
Android
заранее наделать пару тысяч статических картинок не дешевле получится?
Ответ написан
profesor08
@profesor08 Куратор тега PHP
Рисуй с помощью Three.js, данные генерируй на пхп.
Ответ написан
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
У замечательного 3D редактора blender есть возможность консольного рендера моделей (запускаемого из командной строки без GUI)

Но соглашусь с profesor08, рендерить на клиенте с помощью Three.js выглядит куда более перспективным вариантом
Ответ написан
2ord
@2ord
продвинутый чайник
У меня пока такая идея:
сам рендеринг изображения можно выполнить при помощи запуска headless браузера, в котором выполняется сценарий на JS с библиотекой Three.js. Нужно лишь случайным образом расположить камеру и сохранить изображение объекта.
Ответ написан
zoonman
@zoonman
CEO @ LinuxQuestions.ru
У вас есть 2 пути: сделать рендеринг в браузере, но генерировать данные на сервере, либо сделать рендеринг на сервере.
При выбросе костей на самом деле имеет значение лишь то, что на верхних гранях, а остальное по большому счету не важно. Данных вам нужно немного, по сути массив с выпавшими костяшками.
На мой взгляд, логичнее всего произвести рендеринг на клиенте с использованием Three.js. Благо нарисовать кубик с разными гранями задача элементарная. В threejs вы можете начать с простых кубиков, а потом нарисовать хорошую модель с материалами в Fusion 360, экспортировать в STL, загрузить модель в Three.js и анимированно разместить ее в пространстве.
Так или иначе вы прийдете к тому, что вам захочется иметь красочный результат. Такой результат возможен лишь при наличии контроля освещения и материалов поверхностей. Т.е. нужна работа OpenGL или иного графического движка. Это можно делать на PHP https://github.com/Ponup/php-opengl Вопрос лишь в накладных ресурсах.
Если вам не нужно делать статическую одинаковую картинку, которая будет потом отправляться по почте, то нет смысла делать рендеринг на сервере.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы