Blender控制台:使用threejs导出器导出单个网格

时间:2016-06-21 18:59:58

标签: three.js blender

我正在使用Blender 2.76b,threejs exporter v1.5.0;我的目标是在Blender场景中导出每个网格。我注意到如果选择单个网格,io_three会导出该网格,所以我在控制台中编写了一个简单的python脚本可执行文件:

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文件都包含场景第一个网格的导出内容。

我怎样才能获得正确的行为? 提前谢谢。

1 个答案:

答案 0 :(得分: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)