Мне нужна помощь в формировании круга с кубиками, используя блендер 2.69 с движком Python
Пожалуйста, прости меня, но я действительно знаю, как немного кодировать на VB, а Python - это не то, к чему я привык. Я действительно пытался увидеть, разработали ли другие люди и / или показали алгоритм, который я пытаюсь выполнить.
У меня в голове дизайн визуализатора, и я пытаюсь сделать так, чтобы несколько кубов (переменный ввод на данный момент) были расположены на определенном расстоянии (возможно, 5-10 единиц блендера) от центра сцены и угла грани, так что будет одна грань, указывающая на центр, и одна грань, указывающая противоположное направление. Я пытаюсь начать с 10 кубов, потому что я чувствую, что это будет справедливое число, которое, как мы надеемся, покажет форму круга.
Я сделал изображение, чтобы помочь описать то, что я пытаюсь сделать:
Все, что мне удалось выяснить до сих пор, - это то, что мне нужно добавить куб с определенным вращением, и это вращение нужно пошагово для каждого куба. поэтому нужно небольшое уравнение, что-то вроде этого.
(10) (36)
360 / numberOfCubes = steppedAngle
Это все, что мне удалось выяснить, потому что я не знаю, как программировать на Python для этого.
Любая помощь будет принята с благодарностью и будет зачтена в финальной версии.
Обновление: 1
Благодаря помощи из ответа ниже, я наконец-то заставил его работать так, как я хотел. 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 ответ
Давайте начнем с кубов в кругу, и мы будем работать оттуда.
У вас есть N кубов, и вы хотите поместить их в круг радиуса R вокруг центра вселенной (0,0,0).
Применение базовой тригонометрии: каждый куб находится на одном из радиусов круга, когда вы делите круг на N. Следовательно, ваш первый куб находится на 0 рад, ваш второй куб на 2* пи /N рад, ваш третий куб в 2 * 360/N рад,... ваш куб N находится в (N-1) * 2* пи /N рад. Теперь у нас есть формула: Расположение куба в круге = (i - 1) * 2*pi/N в радианах, для каждого i от 1 до N. Теперь местоположение в пространственных координатах равно (r*cos(angle)), 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, потому что я почти не помню API-интерфейс Blender Python, но он не должен быть слишком сложным.