オブジェクトのバウンディングボックスを取得したいと思い、ノード共通プロパティのmax/minで取得してみたのですがどうも結果がよろしくない。あ、ちなみに3dsmax9(まだ使ってます)の話。

target = selection[1]
BBoxMax = target.max
BBoxMin = target.min
myBox = box width:(BBoxMax.x - BBoxMin.x) \
		length:(BBoxMax.y - BBoxMin.y) \
		height:(BBoxMax.z - BBoxMin.z)
myBox.center = target.center

オブジェクトに回転が入っていない場合は正確なものが得られるのですが、回転が入っているとバウンディングボックスのバウンディングボックスを取得してしまっている模様。2Dであらわすと次の通り。

BBox Problem in maxscript

そんな値が欲しいと思いますか?とAutodeskに電話入れたい気分。
「in coordsys local」で取得するとさらにわけ分からん値が戻ってきました。

全ての頂点を精査してmax/min出せばなんとかなるんですが、頂点数の多いオブジェクトになるとすごく重くなりますねぇ。

以下のスレッドを探し当てましたが、僕が考えたのと同じく、全頂点の位置をソートしてみればってことでした。
Align min/max correctly with maxscript?[cgsociety.org]

あれ?ところで点線で描いたワールド座標じゃないバウンディングボックスはどうやって取得するんだろ?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です