Задать вопрос
@antonowano
Профессиональный самоучка

Как реализовать рендер 3D с выбранными текстурами для php сайта?

Стоит задача сделать конструктор модели дома для сайта.
Будет сайдбар с разными наборами текстур для разных частей дома (стен, крыши, окон и т.д.) и конечная картинка в JPG, которая должна меняться при изменении в выборе текстур.

Как я полагаю, рендерить нужно на стороне сервера. Были конечно мысли сделать это на фронтенде (JS, Canvas, webgl), но высока вероятность утечки текстур и моделей.

На сервер посылается запрос со всеми необходимыми параметрами, сервер рендерит картинку и отдает клиенту только её.

Теперь, собственно, вопрос - используя какие технологии можно без проблем это реализовать?

Можно не ограничиваться PHP, а выполнить на любом другом языке, а к php "прикрутить" с помощью функции exec.

Были мысли использовать python-функции blender'а, но без понятия, как это сделать. Если есть предложению, буду очень благодарен.
  • Вопрос задан
  • 392 просмотра
Подписаться 3 Сложный 13 комментариев
Решения вопроса 1
Dnebl
@Dnebl
Есть такая сцена в demo.blend

в сцене создал объекты и изменил их названия в дереве сцены
сохраняем сцену в файл
5c6d20b395d4b830957594.png
texture.jpg
5c6d22dd9cdeb375105608.jpeg

и такой скрипт
в скрипте находим объект создаем материал,текстуру,накладываем на объект,и рендерим сцену
#blender-demo.py
import bpy
import os

cubeMesh = bpy.data.objects['CUBE_1'] #находим нужный объект 

mat = bpy.data.materials['Material'] 
tex = bpy.data.textures.new('TextureName', 'IMAGE') 

image_path = '/home/username/texture.jpg'
image = bpy.data.images.load(image_path) 
tex.image = image

slot = mat.texture_slots.add()
slot.texture = tex
cubeMesh.data.materials.append(mat) 

bpy.data.scenes['Scene'].render.filepath = '/home/username/demo.png'
bpy.ops.render.render( write_still=True )


Далее запускаем blender командой
blender demo.blend -b --python "/home/username/blender-demo.py"


вот что на выходе demo.png
5c6d23bfd5576844856177.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы