0

请原谅我,但我真的只知道如何在 VB 中进行一些编码,而 python 不是我习惯的。我确实尝试查看其他人是否已经制作或展示了我正在尝试完成的算法。

我脑子里有一个可视化设计,我一直在尝试做的是让一些立方体(现在是可变输入)放置在距场景中心和角度一定距离(可能是 5-10 个搅拌器单元)的地方面,使一个面指向中心,一个面指向相反方向。我试图从 10 个立方体开始,因为我觉得这将是一个公平的数字,希望显示一个圆形。

我制作了一张图片来帮助描述我正在尝试做的事情:

在此处输入图像描述

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

    (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))

'

4

1 回答 1

1

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

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

应用基本三角法:每个立方体都在圆的一个半径上,当你将圆除以 N 时。因此,你的第一个立方体是 0 弧度,你的第二个立方体是 2*pi/N 弧度,你的第三个立方体是在 2 * 360/N rad, ... 你的 N 立方体在 (N-1) * 2*pi/N rad。现在我们有一个公式:立方体在圆中的位置 = (i - 1) * 2*pi/N 以弧度表示,对于从 1 到 N 的每个 i。现在,空间坐标中的位置是 (r*cos(angle ), r*sin(angle), 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,但它应该不会太难。

于 2014-02-05T11:07:15.493 回答