python - 我需要帮助用立方体形成一个圆圈,使用 blender 2.69 和 python 引擎

标签 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))

'

最佳答案

让我们从围成一圈的立方体开始,我们将从那里开始。

你有 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(以弧度为单位),对于从 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,但应该不会太难。

关于python - 我需要帮助用立方体形成一个圆圈,使用 blender 2.69 和 python 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21574926/

相关文章:

algorithm - Phong 反射模型参数

sql - 如何迭代点以将线串拆分为 PgSQL 中的部分?

python - 如何在 Python 中创建哈希算法的单独实例?

python - 在 Blender 中使用 OpenCV

python - 如何从句子中提取字符ngram? - Python

python - Jupyter 笔记本中的自动完成功能不起作用

arrays - 分形维数算法为时间序列给出 >2 的结果

java - 按两个条件排序

c# - 在二次贝塞尔曲线路径上寻找点

python - 在 matplotlib 中绘制表面(球体),以 0,0,0 以外的坐标为中心