次回はじめに前回、Raycastで視線を当てた部位の名称を取得できるようになりました。Tapしたら詳細画面が出るようにしたい、のですがその前に久しぶりにOsiriXを触って肺と心臓をざっくり取ってきました。後ほど骨と臓器の表示切替などを行うのでそれ用と、あとは8/22にデモがあるので骨だけだとさみしいので見栄えよくするためです。肺、心臓の3Dモデル作成CTから骨を取ってくるのは大変でしたが、おかげで今回はスムーズにできました。3Dモデルは改めてきれいなものを作成します。今回は動作確認用のものです。肺葉や心室の分割もしていないのでほんとにざっくりです。肺に気管とかくっついてすらいる始末。心臓はボリュームレンダリングを駆使しました。」が大いに参考になりました。取ってきたのがこちら。テクスチャを設定していないのでまっしろ。困ったことに、心臓や肺は骨と違って複数のメッシュで構成されています。オレンジの枠が1つ1つのメッシュです。画面横軸で分断されていることがわかります。肋骨なんかはこんな感じで1つのメッシュで構成されています。ここでメッシュだのマテリアルだのについて復習。メッシュとはメッシュは立体を三角形や四角形の集まりで表現したものです。要するに莫大な情報を持った現実の物体を近似したものです。下の画像は丸みを帯びたイルカを、三角形のメッシュで表現したものです。荒くなりますが、情報量が圧倒的に少なくて済みます。ポリゴンメッシュマテリアルとはオブジェクトの形はメッシュで表現されました。マテリアルは、オブジェクトの見た目を担います。先ほどのイルカのメッシュに、何色をどんな風に当てるかというのがマテリアルです。要するに何が問題かというと、前回メッシュの本体(下図grp9)にコライダーを設定し、そのメッシュの親オブジェクトである入れ物(下図肋骨r11)に部位の名称を設定しました。心臓の方では複数のメッシュをまとめるために一つ余分なオブジェクト(下図grp9)が挟まれているので困るのです。(心臓にカーソルを当てたとき、ラベルに「grp9」と表示されてしまう。)というわけで、メッシュを1つにまとめる方法を探します。余談ですが実は胸のことをChestって言ってるのめっちゃダサい。医学用語だとthoraxですかね。xxxと形容詞ではよく見たけど、自信なかったのでchestってつけてしまいました。早いとこカラーアトラス購入して解剖学も勉強しなおさないといけない。調べると処理の軽減という文脈でオブジェクトやメッシュの結合の話がいくつかでてきました。Unityのシーン上に配置したモデルを結合する実際に結合したメッシュをつくるようなものは有料のアセットしか見つかりませんでした。複数のメッシュを結合して処理速度アップわざわざ有料のものがあるということは基本機能の範囲内ではできないんだろうと断念。Unity外での結合を調査します。OsiriXでobjファイル吐き出すときの設定でいじれたりしないのか、とも思いますが手元にMacがないので帰ったら調べよう。Unityにobjファイルをインポートする際の挙動とか思いながら調べていると気になる記事を発見。fbx形式だと大きすぎる場合自動で分割されるとのこと。Unity3D:fbx読み込み時の最大ポリゴン数objファイルでも大きすぎてUnity側で勝手に分割されているというのはありえますね。元ファイルの心臓.objを開いてみます。3Dというソフトがサジェストされる。分割されているようには見えないですね。Unity側で分割された可能性が有力になってきました。その場合、ポリゴン数がカギになるのでUnityにインポートする前にメッシュを荒くしてポリゴン数減らすなどの工夫が必要になりそうです。いっても基本的にバラバラにして3Dモデルにする予定なのであまり気にしなくてもいいかも。今回は心臓、肺という大きな括りで3Dモデルにしましたが実際には心室、肺葉で分けてカーソルを当てたときに名前を出したいので。心室って内側の空間のことであって、外側からの見た目で名前を付けていいべきものか、とも考えたり。考えると外部から見たときは「心臓」とひとまとめで表示して、さらに心臓をタップすることで詳細な断面図が表示されてそこで改めて心房・心室などを表示した方がいいのかな。全身解剖の3Dモデルで詳細を見たい部分をタップするとシームレスに詳細画面に移行するとかできたら使い勝手がよい。