简单的python脚本与搅拌机

时间:2014-03-06 21:52:32

标签: python blender

我最近为我的作品渲染了很多图像,并认为如果我知道该怎么做,可能会自动执行大量渲染。这将有助于我和研究员工作,从长远来看,我们将节省大量时间。这就是我需要的:

我有一个项目,让我们说一把椅子。这个椅子必须以4个不同的摄像机角度渲染,我们必须能够在代码中指定,尽管这4个摄像机角度在整个渲染期间将保持稳定。在渲染了4个图像之后,椅子必须更换材料,然后再渲染另外4个图像。

由于编码经验非常少,我的成像方式如下:

伪代码:

var material = "oak"; //This is the first material
var camPosition = 0;

while(i<12) {

 for(j=0;j<=4;j++) {
    if(i == 0) {
     camPosition = 20 //Example
    }
    if(i == 1) {
     camPosition = 40 //Example
    }
    ... //Do this 4 times, for the 4 different angles

    TakePhoto AT position = camPosition;
    //Render;
 }
material = "Stone";
i++;
}

所以这基本上是运行两个循环,一个while循环改变了椅子的材料,一个for循环迭代4个不同的角度然后渲染。我希望我说清楚,并提供一些帮助,建议或建议。

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先你应该知道一些python脚本。从官方Python3 tutorial开始。坚持使用python3教程,这样你就不会学习使用blender的python v3.3会失败的旧方法。

然后看看如何通过python访问blender的数据。您可以从官方quickstart tutorial开始。从该页面,您还可以访问所有blenders python文档。

另外考虑您可能会发现更容易完成您手动描述的任务。您可以对摄像机位置进行定位和关键帧设置。您还可以设置对象可见性的动画,复制对象(使用 Alt D 将它们share the same mesh data)然后让一个对象可见,每个对象都有不同的材质。然后按一下渲染动画即可完成所有操作。

TrackTo约束可让您定位相机并使其始终指向椅子,因此您也不必设置角度。

您还可以在blender.stackexchange

获得更多有关搅拌机的帮助

一旦你理解了一个小蟒蛇,下面的内容可以让你想要做什么。

import bpy
material_list = ['oak','redwood','plastic']
camera_positions = [[2.0,1.0,1.0],[1.0,2.0,1.0],[2.0,2.0,1.0]]

for mat in material_list:
    bpy.data.objects['Chair'].material_slots[0].material = bpy.data.materials[mat]
    for campos in camera_positions:
        bpy.data.objects['Camera'].location = campos
        bpy.ops.render.render()