Reference: Deformable Curve

Model ElementReference_DeformCurveは、CUBICスプライン補間を使用して、指定したマーカーセットの原点を通過する変形可能曲線を指定します。これらのマーカーは別個のボディ上にある場合もあります。マーカーが空間内を動くと、CUBICスプライン補間を使用して曲線形状が再計算され、曲線を変形することができます。

説明

曲線は開いていても閉じていてもかまいません。

フォーマット

<Reference_DeformCurve
     id               = "integer"     
     u_span           = "real"    
    [label            = "string"]
    [end_type_left    = "{NATURAL | PARABOLIC | PERIODIC | CANTILEVER}"]
    [lambda_left      = "real"]
    [end_type_right   = "{NATURAL | PARABOLIC | PERIODIC | CANTILEVER}"]
    [lambda_right     = "real"]
    [is_u_closed      = "boolean"]     
     num_marker_id    = "integer">
           integer …      integer …        integer
  />

属性

id
要素識別番号(整数 > 0)を指定します。この番号は、すべてのReference_DeformCurve要素の中で一意である必要があります。
label
モデリング要素の名前を定義するオプションの文字列。
u_span
uパラメータのスパンを定義する実数値。uパラメータの範囲は-u_span/2からu_span/2までとなります。u_span > 0。
end_type_left

NATURALPARABOLICPERIODIC、またはCANTILEVERからいずれかを選択します。 3

デフォルト = NATURAL

lambda_left
CUBICスプライン補間の左端状態を制御する間隔[0,1]内の実数値パラメータ。0の値はNATURALの終端状態、1の値はPARABOLICの終端状態を意味します。このパラメータは、CANTILEVERタイプの終端状態にのみ適用されます。
デフォルト = 0.0
end_type_right
NATURALPARABOLIC、およびPERIODICからいずれかを選択します。 3
デフォルト = NATURAL
lambda_right
CUBICスプライン補間の左端状態を制御する間隔[0,1]内の実数値パラメータ。0の値はNATURALの終端状態、1の値はPARABOLICの終端状態を意味します。このパラメータは、CANTILEVERタイプの終端状態にのみ適用されます。
デフォルト = 0.0
is_u_closed
曲線を定義するマーカーが閉じているかいないかを決定するブール値(TrueまたはFalse)。 5

デフォルト = “FALSE

num_marker_id
原点が曲線上にあるマーカーの数。 6

例1

次の例では、Constraint_PTdCV要素をReference_DeformCurveおよびPost_Graphic要素と組み合わせて使用する方法を示しています。



図 1. Reference_DeformCurveを使用したConstraint_PTdCV要素の定義

図 1 は、5本の細長い棒状の剛体が、Z方向に沿った軸を持つ並進ジョイントによってグラウンドボディ(青い水平バー)に拘束されている様子を示しています。これらの剛体は、線形スプリングダンパによって地面に結合されています。変形可能曲線が、7つのマーカー(図の1~7)を通過するように定義されています。これらのマーカーのうち5つ(2~6)は、剛体の下端に配置されています。これらのマーカーのうち2つ(1と7)は、グラウンドボディの両端に配置されています。

曲線は開いています。is_u_closedは指定されていないため、デフォルトでFALSEとなります。図 1に黒い点線の曲線で示した変形可能曲線は、Reference_DeformCurve要素を使用して以下のように定義されます:

<Reference_DeformCurve
    id                  = "1"
    end_type_left       = "NATURAL"
    end_type_right      = "NATURAL"     
    num_marker_id       = "7">
    1  2  3  4  5  6  7
 </Reference_DeformCurve>

曲線は、以下に示すPost_Graphic要素を使用することで、HyperViewなどのポストプロセッサに表示できます。この例では、100個のセグメントを使用して、表示ウィンドウでキュービックスプラインを近似しています。

<Post_Graphic
    id                  = "500000"
    type                = "DeformCurve"
    curve_id            = "1"
    nseg                = "100"
 />

小さい球体(赤い球)が変形可能曲線に沿ってスライドするように拘束されています。この拘束は、Constraint_PTdCVによって次のように表されます:

<Constraint_PTdCV
   id                  = "1"
   i_marker_id         = "30107060"
   ref_dcurve_id       = "1"
/>

赤い球には初速度が与えられ、それによりこの球は変形可能曲線上をスライドします。球が曲線に沿ってスライドすると、この球の重みにより、それぞれのスプリングで生じるたわみの量が変化します。その結果、曲線はその形状を変化させます。このシステムの動解析では、この球体が重力によりスライドして行ったり来たりするにつれ、変形可能曲線の形状が変化する様子が示されます。

例2

この例では、Constraint_PTdCV要素をReference_DeformCurveおよびPost_Graphic要素と組み合わせて、閉じた曲線に使用する方法を示しています。



図 2. 閉じた変形可能なパラメトリック曲線の定義

上記図 2では、閉じた曲線が、マーカー20~31の原点で定義された楕円形を表しています。マーカー20~31は別々のボディに属しています。そのため、これらのモーションは、基盤となるボディのモーションによって決まります。この曲線のMotionSolve入力を以下に示します。曲線は閉じているため、マーカーリスト内の最初と最後のマーカーは同じです。以下ではこれが赤色でハイライト表示されています。

<Reference_DeformCurve
       id               = "301"
       label            = "DeformableCurve 1"
       end_type_left    = "NATURAL"
       end_type_right   = "NATURAL"
       u_span           = "1."
       is_u_closed      = "TRUE"
       num_marker_id    = "13">
       20  21  22  23  24  25  26  27  28  29  30  31  20 
</Reference_DeformCurve> 
曲線は閉じているため、次の式が成り立ちます:
  • { x(-0.5) y(-0.5) z(-0.5) } = { x(0.5) y(0.5) z(0.5) }
さらに、end_type_left = NATURALおよびend_type_right = NATURALであるため、次の式が成り立ちます:
  • { x''(-0.5) y''(-0.5) z''(-0.5) } = { x''(0.5) y''(0.5) z''(0.5) }

小さい球体(図 2の紫色の球)が変形可能曲線に沿ってスライドするように拘束されています。この球の質量中心は、Marker 99として定義されます。この拘束は、Constraint_PTdCVによって次のように表されます:

<Constraint_PTdCV
     id                  = "1"
     label               = "Advanced Joint 0"
     i_marker_id         = "99"
     ref_dcurve_id       = "301"
  />

初速度voにより、紫色の球体の滑り運動が開始されます。マーカー20~31を含むボディはそれぞれに動くことができるため、最初は円形だったものが、時間の経過により円形ではなくなります。

曲線の形状は、以下に示すPost_Graphic要素を使用することで、HyperViewなどのポストプロセッサに表示できます。この例では、150個のセグメントを使用して、表示ウィンドウで曲線の形状を近似しています。

<Post_Graphic
     id                  = "2"
     type                = "DeformCurve"
     curve_id            = "30"
     nseg                = "150"
/>

コメント

  1. Reference_DeformCurveは変形可能である点を除き、Reference_ParamCurveによく似ています。曲線の形状は、マーカーのセットの瞬間的な原点(下の図 3に赤レンガ色の球で表示)を通過するキュービックスプラインによって定義されます。したがって、Reference_DeformCurveは3D空間内のパラメトリックな変形可能曲線となります。uは、曲線の範囲を定義する自由曲線パラメータです。これは、umin = - u_span/2からumax = + u_span/2まで変化できます。
    図 3では、曲線上の任意のポイントPのOXYZでの座標は、自由パラメータuについての3つのキュービックスプライン関数f(u)、g(u)、およびh(u)で一意に表すことができます。


    図 3. Reference_DeformCurveの定義
  2. Reference_DeformCurveは開いていても閉じていてもかまいません。閉じた曲線には、次のプロパティがあります:
    • { x(umin) y(umin) z(umin) } = { x(umax) y(umax) z(umax) }
  3. Reference_DeformCurveは、CUBICスプライン補間を使用し、これには補間関数の2次導関数における曲線の終端での仮定が必要です。キーワードNATURAL、PARABOLIC、PERIODIC、およびCANTILEVERは、次のように定義された標準的な4つの仮定を表します:
    • NATURAL(またはフリー):
    • PARABOLIC:
    • PERIODIC:
    • CANTILEVER:
    • λ = 0.0はNATURAL(またはフリー)の終端状態を意味し、λ = 1.0はPARABOLICの終端状態を意味します。
  4. Reference_DeformCurve要素は、固有の慣性、剛性、または減衰プロパティを有していません。
  5. 閉じた曲線はMotionSolveでサポートされています。閉じた曲線を定義するには、曲線を定義するマーカーリストで、最初と最後のマーカーを同じにする必要があります。これにより曲線の連続性が保証されます。滑らかな閉じた曲線を得るには、end_type_leftおよびend_type_rightを指定しないでください。これらはどちらもデフォルトでNATURALになります。これにより必要な滑らかさが保証されます。
  6. 開いた曲線を定義するために必要なマーカーの最小数は、キュービックスプライン補間の本質より、3つとなります。閉じた曲線の場合は、少なくとも4つのマーカーが必要になります(キュービックスプライン補間の3つのマーカーに加え、最初のマーカーと同じ4つ目のマーカーが、1次および2次導関数の滑らかさを保証するために必要です)。
  7. 変形可能曲線を使用して、Constraint_PTDCVを定義します。これにより、ボディ上のポイントが変形可能曲線に沿ってスライドするように拘束されます。
  8. 開いた変形可能曲線の場合、“Parameter U='value' goes out of intended range”というメッセージが表示される場合があります。この状況は、その数値的手法に- u_span/2 ≤ u ≤ + u_span/2という制限を課す明白な方法がないために発生します。この状況において、MotionSolveは、境界(-u_span/2または+u_span/2)での“U”値を保持して、ポイントが再度範囲内(- u_span/2 ≤ U ≤ + u_span/2など)に戻るまでシミュレーションを継続します。モデルが適切に定義されている場合、ポイントは再度範囲内に戻ります。
    注: シミュレーションでこのようなメッセージが表示された場合は、結果を慎重に確認してください。シミュレーションが正常に完了しても結果は誤っている可能性があるためです。
    ただし、このような状況の発生を最小限に抑えるためにできるモデリング変更があります。図 3において、この状況に対処するアプローチの1つが、次の2つの衝撃力の定義です:
    • マーカーPとマーカー1の間
    • マーカーPとマーカーNの間

      Pがuについて指定した制限を超えようとしたときに、マーカーPを使用可能な範囲に押し込む衝撃力が生成されます。