オブジェクトのバウンディングボックスを取得したいと思い、ノード共通プロパティの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であらわすと次の通り。
そんな値が欲しいと思いますか?とAutodeskに電話入れたい気分。
「in coordsys local」で取得するとさらにわけ分からん値が戻ってきました。
全ての頂点を精査してmax/min出せばなんとかなるんですが、頂点数の多いオブジェクトになるとすごく重くなりますねぇ。
以下のスレッドを探し当てましたが、僕が考えたのと同じく、全頂点の位置をソートしてみればってことでした。
Align min/max correctly with maxscript?[cgsociety.org]
あれ?ところで点線で描いたワールド座標じゃないバウンディングボックスはどうやって取得するんだろ?