经过大量工作,我在 Python 中开发了以下代码来绘制一个向量 [在这种情况下为 (2,2,2)],以便它以您期望的方式指向原点。我花了一些时间来收集三个旋转参数在横滚、俯仰和偏航方面的含义。您可能需要设置 Euler XYZ。
我使用了一个细长的圆柱体作为我的矢量,这符合我的目的,也符合我对搅拌机的瘦身体验。这段代码在中途绘制了一个带有箭头的向量(一个圆锥),非常适合我的目的,但有点麻烦。我适用于大多数向量,但当 x<0 和 y>0 和 z>0 时失败
import bpy
import math
from math import *
x=-5
y=-10
z=12
yParameter=-1.0
if y < 0:
if x < 0:
yParameter = 1.0
#print ("y para is ",yParameter
for i in range (0,1):
length=sqrt(z*z+y*y+x*x)
#Create a vector at correct orientation at the origin
bpy.ops.mesh.primitive_cylinder_add(vertices=16, radius=0.04, depth=length, end_fill_type='NGON', view_align=False, enter_editmode=False, location=(0,0,0),rotation=(-acos(z/sqrt(x*x+y*y+z*z)),0,yParameter*acos(y/sqrt(x*x+y*y))))
bpy.ops.transform.translate(value=(x/2, y/2, z/2))
bpy.ops.mesh.primitive_cone_add(vertices=32, radius1=0.1, radius2=0, depth=0.4, end_fill_type='NGON', view_align=False, enter_editmode=False, location=(0,0,0), rotation=(-acos(z/sqrt(x*x+y*y+z*z)),0,yParameter*acos(y/sqrt(x*x+y*y))))
bpy.ops.transform.translate(值=(x/2, y/2, z/2))
我确信向量和矩阵操作中的巨大 API 应该使这项工作更容易,但我正在努力寻找除了这个自行开发的笛卡尔工作之外的方法。
任何人都可以向我指出一个可以理解的代码片段,或者一个关于如何在搅拌机 python 中操作向量(在数学意义上)的教程
我发现搅拌机 API 对参数的名称以及如何对其进行编码非常清楚,但我几乎找不到或根本找不到参数的实际含义。