Увы, у меня не установлен B4W, но где-то так примерно...
... поэтому уточни что именно клиент веба должен сделать с моделью/моделями ...... в целом задачи автоматизации в blender решаются достаточно незатратно, как минимум: автоматический групповая конвертация всех obj-файлов из указанного каталога в blend-файлы (уже обсуждалась),и вторая задача генерация из полученных моделей b4w проекты тоже в принципе реализуемо, но обычно дефолтный b4w проект - это одна страница с одной сценой, а что на самом деле тебе нужно от веба ты не пояснил ...... требуется (как обычно) хорошая постановка задачи ...
... кстати, а как эта модель загружалась в b4w - через создание нового проекта или просто импортом obj-файла в blender? ...... для "смягчения теней" можно на вкладке World редактора свойств активного объекта в секции Environment Lighting активизировать свет, исходящий из окружающей среды и установить силу воздействия в пределах 0.5 ...... в дефолтных проектах это уже сделано, но там стоит сила 0.2 и еще небо рендерится ...
демка b4w - https://sungreen.github.io/projects/model_b4w/model_b4w.htmlссылка на проект с настройками blend-файла https://github.com/sungreen/sungreen.github.io/tree/master/projects/model_b4w
>> Нужна схема мини-конвеера, загрузил, минимум тыков и экспортировал. ... выложи для теста ещё пяток моделей ...
Блин, круто, а можно такое без расставления света реализовать?
import bpyimport osme_path = "/home/sungreen/_MODELING/_AUTO_B4W/objs/"print("start convertz")for root, dirs, files in os.walk(me_path): for name in files: objs = [] if name.endswith('obj'): print(root,name) bpy.ops.import_scene.obj(filepath=os.path.join(root, name)) bpy.ops.object.select_all(action='DESELECT') for obj in bpy.data.objects: if not obj.name.startswith('SMPP'): objs.append(obj) obj.select = True obj.scale = (0.01, 0.01, 0.01) bpy.ops.export_scene.b4w_html(filepath=os.path.join(root, name+'.html')) bpy.data.scenes['Scene'].render.filepath = os.path.join(root, name+'.jpg') bpy.ops.render.render(write_still=True) bpy.ops.object.delete()
... вот совсем ленивый вариант в котором ничего руками делать не нужно, кроме копирования obj файлов в каталог и запуска скрипта https://yadi.sk/d/ARnd4QCT3aC82k ...... работает следующим образом:1) необходимо создать на компьютере папку и выложить в неё все obj модели требуемые для конвертации в html ...2) открыть в blender файл auto_b4w.blend3) в окне текстового редактора поправить скрипт, указав в 4 строке путь к obj файлам, у меня me_path = "/home/sungreen/_MODELING/_AUTO_B4W/objs/"4) запустить скрипт Alt+P или кнопка Run Script5) искать результаты там же где objs ...
import bpyimport osme_path = "/home/sungreen/_MODELING/_AUTO_B4W/models/"print("start convertz")for root, dirs, files in os.walk(me_path): for name in files: objs = [] if name.endswith('obj') or name.endswith('stl'): print(root,name) if name.endswith('obj'): bpy.ops.import_scene.obj(filepath=os.path.join(root, name)) else: bpy.ops.import_mesh.stl(filepath=os.path.join(root, name)) bpy.ops.object.select_all(action='DESELECT') for obj in bpy.data.objects: if not obj.name.startswith('SMPP'): objs.append(obj) obj.select = True s = 4/max(obj.dimensions) obj.scale = (s,s,s) bpy.ops.export_scene.b4w_html(filepath=os.path.join(root, name+'.html')) bpy.ops.export_scene.b4w_json(filepath=os.path.join(root, name+'.json')) bpy.data.scenes['Scene'].render.filepath = os.path.join(root, name+'.jpg') bpy.ops.render.render(write_still=True) bpy.ops.object.delete()
... вот код для обработки stl и obj с авто масштабированием модели ...... в строке s = 4/max(obj.dimensions) можно менять константу, например 4 заменить на 2 (размер стандартного куба по умолчанию) ...Код: pythonimport bpyimport osme_path = "/home/sungreen/_MODELING/_AUTO_B4W/models/"print("start convertz")for root, dirs, files in os.walk(me_path): for name in files: objs = [] if name.endswith('obj') or name.endswith('stl'): print(root,name) if name.endswith('obj'): bpy.ops.import_scene.obj(filepath=os.path.join(root, name)) else: bpy.ops.import_mesh.stl(filepath=os.path.join(root, name)) bpy.ops.object.select_all(action='DESELECT') for obj in bpy.data.objects: if not obj.name.startswith('SMPP'): objs.append(obj) obj.select = True s = 4/max(obj.dimensions) obj.scale = (s,s,s) bpy.ops.export_scene.b4w_html(filepath=os.path.join(root, name+'.html')) bpy.ops.export_scene.b4w_json(filepath=os.path.join(root, name+'.json')) bpy.data.scenes['Scene'].render.filepath = os.path.join(root, name+'.jpg') bpy.ops.render.render(write_still=True) bpy.ops.object.delete()