我需要帮助用立方体形成一个圆圈,使用带有python引擎的搅拌器2.69

时间:2014-02-05 10:41:30

标签: python algorithm geometry blender cubes

请原谅我,但我真的只知道如何用VB编写代码,而python并不是我习惯的。我确实试着看看其他人是否已经制作并展示了我想要完成的算法。

我脑子里有一个可视化设计,我一直想做的就是从中心放置一定距离(可能是5-10个搅拌器单元)。场景和角度使面部朝向中心,一面朝向相反方向。我试着从10个立方体开始,因为我觉得希望显示圆形的数字是合适的数字。

我制作了一张图片,以帮助描述我要做的事情:

enter image description here

到目前为止我能够弄清楚的是,我需要添加一个具有特定旋转的立方体,并且需要为每个立方体逐步旋转。所以需要一个小方程,就像这样。

    (10)           (36)
360 / numberOfCubes = steppedAngle

这就是我能够弄清楚的,因为我不知道如何编写python来做这些。

非常感谢任何帮助,并将在最终渲染中记入。

更新:1

感谢下面答案的帮助,我终于得到了我想要的工作方式。 img http://vvcap.net/db/bKKUz3Uw4WUqL_WVDU0j.png

以下是从以下答案的帮助中编写的代码。 “     进口bpy     导入数学

##num of cubes
n = 10

##distange from center
radius = 7

for i in range(1, n + 1):
    angle = (i - 1) * math.pi * 2 / n
    xcoord=(radius * math.cos(angle))
    ycoord=(radius * math.sin(angle))
    bpy.ops.mesh.primitive_cube_add(location=(xcoord,ycoord,0),rotation=(0,0,angle))

1 个答案:

答案 0 :(得分:1)

让我们从圆圈中的立方体开始,我们将从那里开始工作。

你有N个立方体,并且你想把它们放在围绕宇宙中心(0,0,0)的半径为R的圆中。

应用基本三角学: 当你将圆除以N时,每个立方体都在圆的半径上。因此,你的第一个立方体是0 rad,你的第二个立方体是2 * pi / N rad,你的第三个立方体是2 * 360 / N rad,...你的N立方体是(N-1)* 2 * pi / N rad。现在我们有一个公式: 圆圈中立方体的位置=(i - 1)* 2 * pi / N以弧度表示,每个i从1到N. 现在,空间坐标中的位置是(r * cos(角度),r * sin(角度),0)对于放置在XY平面上并且它的中心在的圆(0,0,0) )。

我的Blender Python非常生疏,所以我不能为您提供完整的解决方案,但它应该是这样的:

import math

for i in range(1, N + 1):
    angle = (i - 1) * math.pi * 2 / N
    x_coord = radius * math.cos(angle)
    y_coord = radius * math.sin(angle)
    z_coord = 0
    cube = place_cube(x_coord, y_coord, z_coord)

这会将立方体放在正确的坐标上,但它不会以正确的方式转动它们。幸运的是,您可以按角度旋转每个立方体,并使其朝向正确的方向。所以你可以这样做:

import math

for i in range(1, N + 1):
    angle = (i - 1) * math.pi * 2 / N
    x_coord = radius * math.cos(angle)
    y_coord = radius * math.sin(angle)
    z_coord = 0
    cube = place_cube(x_coord, y_coord, z_coord)
    cube.rotate_around_z(angle)

我没有提供place_cube和rotate_around_z函数,因为我几乎不记得Blender Python api,但它不应该太难。