1

Xtk を使用して、ボリューム内の距離を測定するウィジェットを作成しています。シーンには、ボリューム、2 つの球体、1 つの立方体の 4 つのオブジェクトがあります。以下に示すように、立方体は原点に配置され、球体は X 軸と Y 軸に沿ってそれぞれ反対方向に 30 単位移動されます。

https://docs.google.com/file/d/0B2oRl7iWfVvTaXAyckNTOC04RlE/edit?usp=sharing

立方体と球体は正しい位置に配置されますが、ボリュームがシーンに含まれている場合に問題が発生し、座標系が変更され、原点が変換されます。

https://docs.google.com/file/d/0B2oRl7iWfVvTR3BJdk13Zm9BdTQ/edit?usp=sharing

resetBoundingBox()関数は直後に呼び出されますrender()が、違いはありません。最初にオブジェクトを追加してからボリュームをレンダラーに追加しようとしても、結果はありません。

球はドラッグすることもできます。この機能は座標系の変更の影響も受けます。これは、球の動きが始まる瞬間に、これがマウスの位置に対して変換されるためです。

なぜ起源が翻訳されているのですか?ボリュームが無効化することでシーンに影響を与えているよう resetBoundingBox()です。

4

2 に答える 2

0

これは、ボリュームの中心が (0, 0, 0) であると想定しているためだと思いますが、これは間違った想定です。

1- ボリューム バウンディング ボックスから REAL ボリューム センターを計算します。

var volume = new X.volume();
...
var center = [volume.bbox[0] + (volume.bbox[1]-volume.bbox[0])/2,
              volume.bbox[2] + (volume.bbox[3]-volume.bbox[2])/2,
              volume.bbox[4] + (volume.bbox[5]-volume.bbox[4])/2
              ]
...

2-この中心をシーンのオブジェクトへの移動として適用します

お役に立てれば

于 2013-09-03T15:36:30.173 に答える
0

このように onShowtime コールバックで resetBoundingBox() を呼び出す必要があります

r.onShowtime = function() {

  r.resetBoundingBox();

}

r.add(volume);

これは、シーンを中央に配置することに関係しています。XTK の新しいバージョンではオプションになるはずの何か。

于 2013-09-02T16:50:50.780 に答える