import bpy
from mathutils import Matrix, Vector
import numpy as np
import math
resolution = 1024
# 引擎设置
scene = bpy.data.scenes["Scene"]
scene.camera.data.type = 'ORTHO'
scene.camera.location = 5 * Vector([1, 0, 0])
scene.render.resolution_x = resolution
scene.render.resolution_y = resolution
scene.render.engine = 'BLENDER_WORKBENCH'
scene.display.shading.light = 'MATCAP'
scene.display.shading.color_type = 'SINGLE'
scene.display.shading.single_color = (1, 0.068478, 0.0578055)
scene.display.shading.show_cavity = True
scene.display.shading.cavity_ridge_factor = 1
scene.display.shading.cavity_valley_factor = 1
scene.view_settings.exposure = 1
# 背景设置
bpy.context.scene.world.color = (1, 1, 1)
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.select_by_type(type='MESH')
bpy.ops.object.delete(use_global=False)
bpy.ops.object.select_by_type(type='LIGHT')
bpy.ops.object.delete(use_global=False)
obj_path = "obj模型路径"
im_dir = "保存路径"
bpy.ops.import_scene.obj(filepath=obj_path)
bpy.ops.object.select_by_type(type='MESH')
meshes = [object for object in bpy.data.objects if object.type == 'MESH']
obj = meshes[0]
# scale mesh
factor = 3/max([np.linalg.norm(x.co) for x in obj.data.vertices.values()])
bpy.ops.transform.resize(value=(factor, factor, factor))
bpy.ops.object.origin_set(type='ORIGIN_CENTER_OF_MASS')
obj.location = [0, 0, 0]
# set_tracking
cns = scene.camera.constraints.new('TRACK_TO')
cns.target = obj
cns.track_axis = 'TRACK_NEGATIVE_Z'
cns.up_axis = 'UP_Y'
location = [(0,5,0),(0,-5,0),(5,0,0),(-5,0,0),(0,0,5),(0,0,-5)]
for i in range(6):
scene.camera.location = location[i]
img_path = os.path.join(im_dir,C_" + str(i) + ".jpg")
bpy.data.scenes["Scene"].render.filepath = img_path
bpy.data.scenes["Scene"].render.image_settings.file_format = 'JPEG'
bpy.ops.render.render(write_still=True)
利用blender实现截取模型六视图
于 2020-07-18 15:59:39 首次发布