座標空間

From Neos Wiki
Jump to navigation Jump to search
This page is a translated version of the page Coordinate spaces and the translation is 100% complete.
Other languages:
English • ‎日本語

Neosのワールド内にあるすべてのスロット(オブジェクト)には、ポジション、ローテーション、スケールの値が関連付けられています。これは、スロットに視覚的な要素がない場合でも同じです。Neosのワールド空間は3次元なので、位置はfloat3データ型(X、Y、Z 軸に沿ったポジションの 3D ベクトル)としてエンコードされます。ローテーションはこの3軸の角度変位で表すこともでき、スロットインスペクタパネルでもこのように表示されます。しかし、ローテーションは内部で管理され、LogiXでは4次元の floatQ - 四元数(クォータニオン)として表示されます。スケールはポジションと同様に動作し、float3としてエンコードされます。

インスペクターパネルにネオスの座用軸の参考資料が表示されます。

Neosでは、+X軸方向は「右」、-X 軸方向は「左」と定義されています。+Y軸方向は「上」、-Y軸方向は「下」と定義されます。+Z軸方向は「前」、-Z軸方向は「後」と定義されます。+X軸、+Y軸、+Z軸はギズモツールの赤、緑、青の矢印に対応します。距離は、どの軸方向も1単位が1メートルに相当するようにスケーリングされます。ローテーションは、インスペクタパネルに度単位で表示されます。

グローバルとローカル

どのスロットにも、2つの座標空間が存在する可能性があります。

  • グローバル座標空間: これはワールドルートのスロットを基準にして計算されます。
  • ローカル座標空間: スロット階層内の直属の親を基準にした座標空間。

ローカル座標は、インスペクターパネルに表示される座標です。

ワールドのルートスロットは一意であり、常にワールドスロット階層の最上位に位置します。固定位置は [0,0,0] で、固定回転 (基本的に [0,0,0] 度) と [1,1,1] スケーリングです。つまり、ワールドルート直下に親を持つスロットは、グローバル座標とローカル座標は同じになります。これは、スロットのすべての親が [0,0,0] 位置、 [0,0,0] 回転、 [1,1,1] スケールを持つ場合にのみ当てはまります。

例えば、あるスロット Slot_A がワールドルートの親になり、グローバルポジションが [1,0,0] (ワールドルートから右に1メートル)であれば、インスペクタに示されるように、そのローカルポジションは [1,0,0] になります。別のスロット Slot_B が Slot_A の親になり、同じくローカルポジションが [1,0,0] である場合、そのグローバルポジションは [2,0,0] になります。Slot_Aを[1,1,0]に移動させると、Slot_BはSlot_Aとともに移動し、ローカル位置は[1,0,0]のままですが、グローバル位置は[2,1,0]になっています。

変換

原理的には、あるスロットのグローバルポジションは、そのローカルポジションベクトルとその親スロットのローカルポジションベクトルを合計することで計算できます。しかし、この目的には Global Transform (LogiX node) を使用する方がはるかに簡単です。グローバルなローテーションとスケールも同様ですが、これらの量がどのように組み合わされるかによって、親のローカルなローテーションやスケールの要素ごとの積が必要になります。

LogiXノードブラウザの Transform カテゴリには、スロットの移動、回転、拡大縮小に特に便利な LogiX ノードが多数あります。DriveTweenなどでスロットにトランスフォーム(ポジション、ローテーション、スケール)を適用する場合、通常は入力値がターゲットスロットのローカル座標空間であることが望ましいとされます。意図した効果がスロットの現在のコンテキストに依存しない場合、グローバル座標を使用して変換を最初に計算すると便利な場合があります。逆に、一般的には、スロットの現在の状態に対して変換を行いたいので、ローカル座標を使用する必要があります。グローバル座標とローカル座標の間のポジション、方向、ローテーション、スケールを変換するためのノードがいくつかあります。また、異なる親を持つ2つのスロットのローカル座標空間の間で変換するためのものもあります。

オブジェクトを不均一にスケーリングすることは可能ですが(つまり、X、Y、Zのスケール値が異なる)、子スロットは親からスケーリングを継承するので、これは慎重に行う必要があります。これはデバッグしにくい問題を引き起こし、階層上のどこかでスケールが均一でない親が原因で、子スロットが奇妙に表示されることがあります。プリミティブメッシュ(ボックス、球、円錐、四角形など)で望ましい外観を得るための不均一なスケーリングの要件は、通常、代わりにそれぞれのメッシュコンポーネントのパラメータを変更することで回避できますし、そうする必要があります。

LogiXのほか、Transformコンポーネント(Spinner、Wiggler、Wobblerなど)を使って、スロットにさまざまな動きや変形をさせることができます。

ツール

  • Dev ToolTipは、座標を正確に設定できるトランスフォームギズモやインスペクターパネルにアクセスできるため、非常に便利です。
  • LogiX Tooltipは、LogiXを介して座標値を操作するのに必要です。
  • Measuring Tooltipは、様々な方法で距離を計測するのに役立ちます。

チュートリアル