2016-06-21 3 views
0

Я использую Blender 2.76b, threejs exporter v1.5.0; моя цель - экспортировать каждую сетку в сцену Blender. Я заметил, что если один меш выбран, io_three экспорт, что сетка, так что я написал простой исполняемый питон скрипт в консоли:Консоль блендера: экспорт одной сетки с использованием trjs exporter

import bpy 

for ob in bpy.context.scene.objects: 
    bpy.ops.object.select_all(action='DESELECT') 
    bpy.ops.object.select_pattern(pattern = ob.name) 
    bpy.ops.export.three(
     filepath = 'path to folder' + ob.name + ".json", 
     option_vertices=True, 
     option_faces=True, 
     option_normals=True, 
     option_uv_coords=True, 
     option_face_materials=True, 
     option_colors=True) 

Это создает файлы с именами, но с неправильным содержанием: все .json файлов содержат экспортированный контент первой сетки сцены.

Как я могу получить правильное поведение? Спасибо заранее.

ответ

2

Экспортер three.js экспортирует либо всю сцену, либо активный объект. Пока вы меняете выделение, ничто в вашем скрипте не меняет активный объект. abspath() я позволяет получить относительный путь к файлу смеси, начав путь с '//'

import bpy 

for ob in bpy.context.scene.objects: 
    bpy.ops.object.select_all(action='DESELECT') 
    if ob.type == 'MESH': 
     ob.select = True 
     bpy.context.scene.objects.active = ob 
     bpy.ops.export.three(
      filepath = bpy.path.abspath('//' + ob.name + ".json"), 
      option_vertices=True, 
      option_faces=True, 
      option_normals=True, 
      option_uv_coords=True, 
      option_face_materials=True, 
      option_colors=True) 
+0

Спасибо, его действительно работает – vec3h