渲染的主体是IsoSurface,对这个材质的设置手动一次性完成就行,不用每次导入obj都重复做一遍,所以不需要在脚本里设置。
需要注意的是,以下脚本是在我手动渲染了第一张图片后再运行的,对应的旋转、变换大小、位移都是参照第一次渲染所选择的参数,所以我建议最好先手动渲染一次,选择好恰当的参数以及摄像机位置和光照后再进行脚本化渲染。
另外,以下步骤其实和我的另外一篇博客的步骤是类似的,只是在这里把人工操作改成了脚本化处理。
import bpy
from bpy import context
path = 'F:/obj'
//渲染的obj实例为1002~1005
list = [
'1002',
'1003',
'1004',
'1005'
]
scene = bpy.context.scene
//对每个导入的obj都进行如下操作
for i in list:
//导入obj
bpy.ops.import_scene.obj(filepath=path+'/'+i+'.obj')
//设置当前导入的obj为当前选中物体,之后的操作都是对这个物体进行操作
myobj=bpy.data.objects[i]
myobj.select = True
scene.objects.active = myobj
//进行旋转、变换大小、位移
bpy.context.object.rotation_euler[2]=-1.5708
bpy.context.object.scale=(0.034,0.034,0.034)
bpy.context.object.location[0]=10
//添加粒子系统
bpy.ops.object.particle_system_add()
//将粒子系统设置为我们之前预设好的一个模版
bpy.data.objects[i].particle_systems["ParticleSystem"].settings=bpy.data.particles['myset']
//将IsoSurface设置为当前选中物体,之后的操作都是对这个IsoSurface进行操作
myobj=bpy.data.objects["IsoSurface"]
myobj.select = True
scene.objects.active = myobj
//将IsoSurface的Object选项改为当前物体的名字
bpy.context.object.IsoSurf[0].obj=i
//渲染图片保存到对应路径
bpy.data.scenes["Scene"].render.filepath = 'F:/渲染结果/柱体障碍/'+i
bpy.ops.render.render(write_still=True)