e-onのある時点で、Vue製品ラインのギズモを維持しました。
私はあなたに言うことができます、それはあなたに数日、フルタイムかかります。
いくつかのライブラリまたは非常に賢い方法が見つからない限り、古典的な方法は、クリックしたときにウィンドウ内のマウスの座標を取得することです。ビューポートに対する相対座標の場合、幅と高さでxとyを単純に除算できます。 [0,1]の範囲のベクトル(float 2d)を取得します。(0.5,0.5)を減算して、xとyの両方の[-0.5、0.5]の範囲に入ります。
次に、xとyを単に光線のxとyとして使用して、この座標から光線を作成し、zを焦点距離に設定します。時々アスペクト比は、この操作でお尻の痛みです。少しいじると試行錯誤すると、修正されます。
次に、ギズモ要素との交差をチェックする必要があります。生成したメッシュか、ブレンダーまたはその他のDCCでモデル化したものか、相互に接続できるメッシュパーツ...これらのメッシュパーツを光線として使用します/三角交差クエリ。
または、ギズモの外観とパーツに応じて、光線/円柱、光線/球体がある場合。
衝突するプリミティブに変換行列を適用できる交差ルーチンが必要です。ギズモは移動するオブジェクトと平行移動し、回転し、カメラまでの距離の逆数でスケーリングするため、画面上での固定投影サイズを維持するため、非常に重要です。
次に、相互作用部分があります。最も簡単なのは、マウスが最初に「マウスダウン」イベントされたときのポイントのデルタと、現在の「マウス移動」位置を純粋な2Dで取得し、このデルタを現在の軸の動きとして使用することです。ワールドスペースでは、k
経験的に決定した値を掛けます。内部単位、ピクセル、ズームの現在のスケールなどに応じて
。最後の手順は、ギズモのマトリックスを操作対象のオブジェクトに適用し、それに従うようにすることです。
私はそれを実装するのは地獄のかなりの旅であり、あなたがあなたの自由な時間にそれをしているのなら1週間以上は期待しないと言います。フィールドを完全に発見している場合は数週間。週末が他のアクティビティで忙しい場合は、1か月以上:)
IntelからEmbree 2.0をダウンロードして光線/三角形の交差クエリを実行することをお勧めします。そのため、コーディングについて心配する必要はありません。または、ブレンダーからコードを簡単にコピー/貼り付けおよび適応することができます...私はそれらがApacheライセンスに移動したと思いますか?法的に可能であるべきです。