任意の方法で取得した3Dデータはだいたいにおいて原点から離れたところでいろいろな方向を向いて配置されています。単にビュアーで3D鑑賞をするだけなら,それでも十分なのですが,一歩踏み込んで形態を数理的に分析してみようとするとき,どんなに有機的な形態であっても,やはり直交座標系にカッコよく置きたいものです。もちろん一般的なCADにおいてその調整はできるのですが,なかなか面倒な感じもします。さらに,フリーソフトであるCADでも誰でも気楽に取り組めることを第一に考えるときは,なかなかしっくりくる方法が見たりません。
ここでは,3D関連の代表的なフリーソフトの一つであるMeshLabとCloudCompareを使いながら,できるだけ楽に直感的にオブジェクトの座標軸合わせをする方法を探ってみました。
生成されたままの3Dデータの状況
フォトグラメトリ―でもレーザー測定によっても,3D形状データ取得過程において,希望する通りの座標軸合わせは実施されない傾向にあります。
下図は普通のデジタルカメラで取得した画像からAgisoft Metashapeにより生成した3DデータをMeshLabで開いたものです。

この例は,デフォルトの状態でオブジェクトが原点付近にあるので,まだ性格が良い方ですが,別の事例では図中の\(x,y,z\)座標系の表示から遠く離れたところにオブジェクトが配置され,次の作業への意欲をそがれるケースが多々あります。大した問題ではないのですが,形の読み取り作業においてできるだけ速やかに形態観察の環境を整えたいときには意外と作業を進める上での大きな障害となります。
ここでは余談となりますが,上の図ではパースは外してあります。MeshLabにOBJやSTL形式で代表される3Dデータを読み込むと,デフォルトでパースが掛かりますので,テンキーがあれば「5」,または,Shiftキーを押しながらマウスのホイールを手前に転がすことで,Ortho表示となります。

本題に戻り,もちろんMeshLabでも,

Filtersにより,おおむねの軸合わせ,回転移動,平行移動ができますので,地道に座標軸合わせすることはできますが,正直もう少し直感的に回転,原点移動ができないものかと探しています。
CloudCompareでのオブジェクトの回転
MeshLabで開いた同じデータをCloudCompareで開いてみます。

CloudCompareの楽な点の一つはデフォルトで観察面つまり座標平面が選べるように上図左側に縦に座標平面選択のためのアイコンが並んでいます。
一番上の座標平面は\(x-y\)平面なのですが,以下のようにオブジェクトはどちらの軸にも沿っていません。

ここでは,龍の彫刻(中備)が配置されている虹梁の前面に\(y\)軸を合わせ,鉛直方向を\(z\)軸となるようにしたいと思います。

Translate/Rotateのアイコンを選択し,[Rotation/Translation mode]に入ります。上図中の右のウィンドでRotationをZとし,目視で虹梁の前面を\(y\)軸に合わせます。

次に\(y-z\)平面でRotationの回転軸をXとして,梁が水平となるように調整して,✓をクリックします。さらに,側面の\(x-z\)平面で配置を確認した後に,オブジェクトを内包するボックスの中心を原点に移動します。


Tools>Registration>Move bounding-box center to originにより,原点合わせをしてCloudCompareでの作業を終了となります。
MeshLabでの微調整
CloudCompareで保存したOBJデータをMeshLabで開き,座標軸を表示させますと次のようになります。

MeshLabだけでもここまでの調整は可能ですが,CloudCompareでの画面上で直感的にオブジェクト座標を回転させることができる快適さは,個人的にはとても有難いものです。一般的にはView視点は容易に回転できても,オブジェクトの実際の座標回転をさせるにはCADそれぞれの流儀があって,それぞれに癖があり,そう簡単に仕事を終わらせてくれません。
ここまででこのブログの目的としてはOKなのですが,この例題としている龍の造形における類例との形態比較のためには,もう少し微調整が必要です。鑑賞者に対する龍の造形の印象にとても大事な影響を示す眼を基準として,様々な社寺の向拝の龍の造形比較を数理的に行うために,さらなる基準の整理が必要です。
今のところ,龍が中備として配置される虹梁の前面を\(y-z\)平面に合わせることは完了しているので,あとは,\(x\)軸を眼球の中心を通るように調整します。

Filters>Normals, Curvatures and Orientation>Transform: Translate, Center, set Originを選択し,上図右上のX Axis, Y Axis, Z Axisのコントルールバーにより,位置合わせを行います。

以上で,位置合わせ作業は終了です。本質的な内容ではありませんが,このようにバリエーションが膨大な形態を扱う際には,なかなか自動化は難しいし,むしろこのような地道な作業を繰り返すことでそれぞれの形態の特徴を感じ取ることができますので,大変でも無駄ではないかなと思っています。以上です。何かの参考になるといいのですが。


コメントを残す