请原谅我,但我真的只知道如何用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))
答案 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,但它不应该太难。