0

我想为圆柱体的创建制作动画。这意味着我想将第一个关键帧的比例设置为 0,将最后一个关键帧的比例设置为实际的圆柱体大小。首先,我在两点之间创建一个圆柱体,如下所示:

# p1 is point 1 and p2 is point 2
dx, dy, dz = p2.x - p1.x, p2.y - p1.y, p2.z - p1.z
v_axis = mathutils.Vector((dx, dy, dz)).normalized()
v_obj = mathutils.Vector((0,0,1)) 
v_rot = v_obj.cross(v_axis) 
angle = math.acos(v_obj.dot(v_axis)) 
bpy.ops.mesh.primitive_cylinder_add()
bpy.ops.transform.rotate(value=angle, axis=v_rot)

在这个旋转之后,我想将枢轴点设置在 p1 的位置,以便能够相对于 p1 操纵位置和缩放。我知道如何在搅拌机 UI 中将轴心点设置为 3D 光标,但如何在我的 python 脚本中将轴心点设置为特定位置 (p1)?

4

3 回答 3

1

我认为人们使用的方法是首先平移音量,使所需的枢轴点位于 (0,0),然后旋转,并将其平移回正确的位置。

您还可以看到以下网页的6.1:http: //inside.mines.edu/~gmurray/ArbitraryAxisRotation/

于 2013-06-12T07:21:09.520 回答
0

我最终做的是从 0 缩放到 100%,同时改变圆柱体的位置,使圆柱体的底部始终位于 p1。

但我仍在寻找更好的解决方案。

于 2013-06-04T13:18:33.483 回答
0

另一种尝试的技术是尝试使用父对象。我在原点创建了一个圆柱体。我创建了一个 Empty 对象并将其移至 <0,-4,0>。然后,我使用“属性”窗口中“对象”选项卡的“关系”子选项卡的“父项”字段将“空”设置为圆柱体的父项。<0,0,0> 的圆柱体位置随后被解释为相对于空的。我移动了圆柱体,使它回到了世界原点,但现在它的位置(相对于它的父级)是 <0,4,0>。然后我将 Empty 对象的 Scale 设置为动画,使其从 1 变为 2。作为子对象的圆柱体受到这种缩放的影响,而 Empty 提供了缩放的原点,因此圆柱体在缩放时沿着 y 轴滑动.

于 2013-06-13T15:05:21.677 回答