如何将对象的轴点移动到特定位置

时间:2013-06-01 21:59:22

标签: python pivot blender

我想为圆柱体的创建设置动画。这意味着我想将第一个关键帧的比例设置为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的位置和缩放。 我知道如何在blender UI中将轴心点设置为3D光标,但是如何在我的python脚本中将轴心点设置为特定位置(p1)?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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