0

円柱の作成をアニメートしたい。つまり、最初のキーフレームのスケールを 0 に設定し、最後のキーフレームのスケールを実際のシリンダー サイズに設定します。まず、次のように 2 点間に円柱を作成します。

# 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) に設定するにはどうすればよいですか?

4

3 に答える 3

1

人々が使用するアプローチは、最初に目的のピボット ポイントが (0,0) になるようにボリュームを変換し、次に回転させて適切な位置に戻すことだと思います。

次の Web ページの 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

もう 1 つのテクニックは、親オブジェクトの使用を試すことです。原点に円柱を作成しました。Empty オブジェクトを作成し、<0,-4,0> に移動しました。次に、[プロパティ] ウィンドウの [オブジェクト] タブの [関係] サブタブにある [親] フィールドを使用して、円柱の親として空を設定します。次に、シリンダーの位置 <0,0,0> は、空に対して相対的に解釈されました。円柱を動かして世界の原点に戻しましたが、現在の場所 (親に対して相対的) は <0,4,0> でした。次に、Empty オブジェクトの Scale を 1 から 2 にアニメーション化しました。子である円柱はこのスケーリングの影響を受け、Empty はスケーリングの原点を提供したため、円柱はスケーリングに伴って y 軸に沿ってスライドしました。 .

于 2013-06-13T15:05:21.677 に答える