医療現場に少しでも役立つことを目指したリアルタイムiPad 3DCG心臓viewerを作りました。

 
iPad上でインタラクティブ且つリアルタイムに操作可能な、3DCG心臓viewer “MacroView”を、2017年3月8日~3月9日に奈良で開催された、第3回多元計算解剖学国際シンポジウムにて発表致しました。

国立循環器病研究センターから兵庫県立大学に移られた原口亮先生のご研究の中で、今回のviewer制作のお仕事を頂きました。原口先生、本当にありがとうございます!

上記の映像は、iPad上の画面をそのまま動画キャプチャしたものです。PC上でのエミュレートではありません。

3DCGモデルは、MRI撮影された心臓マクロ標本から作成されています。

私は医用画像処理はほとんど素人でして、

・どのようにして医用画像から特定の臓器を出来るだけ正確且つ綺麗に抽出して3DCGモデルを作るか

ではなく

3DCG臓器モデルがあったときに、それをどのように見せれば臨床現場に役立つか

という部分を担当させて頂きました。

この2つは世間一般には同じものと思われてしまうことがほとんどなのですが、実は明確に異なります。
「ピアノそのものを作ること」と「出来上がったピアノを使って演奏すること」とは全く別物ですよね。
「3DCG臓器モデルを作ること」と「出来上がった3DCG臓器モデルを使って臨床現場に役立てること」とは全く別物なのです。

で、研究でこの手のソフトウェアを作る場合、openGLゴリゴリ、C++ゴリゴリ、などで0から作ることがメチャクチャ多いのですが、ガチな3DCG研究をするでもない限り、車輪の再発明は極めて非効率でして、
且つ、世の中何万円かのゲーム機で3DCGのキャラクターがグリグリ自由自在に動き回る時代です。
使えるものは使いましょう。

ということで、今回、リアルタイム3DCGエンジンの二大巨頭の1つであるUnreal Engine 4を使って、iPad用アプリを作りました。
実は昨年までは二大巨頭のもう1つ、Unityで作っていたのですが、今後、研究者用のC++ライブラリなども使ってさらなる拡張などをする可能性を考え、Unreal Engine 4で作り直し + 大幅な機能追加などを行いました。

繰り返しますが、上記の映像は、iPad上の画面をそのまま動画キャプチャしたものです。PC上でのエミュレートではありません。

制作において常に意識したのは、

・格好良いだけでは全く意味が無い
・とにかく医療現場で少しでも役立つように
・それでいて、使いやすいUIと、ワクワクするようなUXを出来るだけ頑張る

の3点です。

◆基本操作
基本操作はメチャクチャ大事ですね。何も意識せずに動かせるようにすることが最大のポイントです。

 
実はこの「何も意識せずに動かせるようにする」というのが結構大変で、Unreal EngineにしろUnityにしろ、
・iPadに指がタッチした、離れた、動いた
という情報は取得できるのですが、
・捻っている
・ピンチ操作をしている
・2本指が平行移動している
みたいなところまでは取得できません。各自が実装する必要があります。まぁ、アセットなども出ているみたいですので、お金でチャチャっと解決したい方はアセットでもある程度出来るのかもしれません。

◆Gyroscopeを用いた操作
iPadだったらやっぱりGyroscopeを使いたいわけです。Gyroscopeというのは、デバイスの回転を取得するセンサーです。

 
スクリーンキャプチャだけだと何やってるかわからないかもしれませんが、iPad本体をグリグリ回しています。

 
↑こんな感じ。

これを見せると、結構な数の方が、「これ、Oculusとかのヘッドマウントディスプレイでやったらもっと格好良いじゃん!」と仰るのですが、それ、全部嘘ですから。
何でもかんでもヘッドマウントディスプレイでVRで実装して「未来の医療!」とか言ってる人たちがいますけれども、皆さん、騙されてはいけませんよ!!!!

なぜかって?

ヘッドマウントディスプレイと同じことを再現するとこうなります。

 
わかりますか?ヘッドマウントディスプレイというのは、基本的には常に一人称視点なのです。これものすごく大事なことなのです。
皆さん、自分の目の前に何か見たいものがあって、それを触れてはいけない状況で横から、或いは後ろからみたいとき、どうしますか?自分が回り込みますよね?

ヘッドマウントディスプレイと同じことを現実世界で再現しようとするとどうなるでしょう?
目の前に見たいものがある状況で、自分が右向け右や回れ右をすることになります。全く意味ないですね。

こんな単純なことなのですが、割と多くの方が誤解されています。

外から全体像を見たいときは、ヘッドマウントディスプレイは極めて不向きなのです。
自分が臓器の内部にいて周囲を見渡したいというときに限り有効になります。
ですので、このMacroViewではどちらの方法にも切り替えられるようにしてあります。

但し、ヘッドマウントディスプレイが回転や加速度だけでなく、自分の絶対位置も取得できるようになるのであれば話は別です。
私は未だ使ったことがありませんが、HoloLensはそのあたりとても優秀なようですので、自分の位置まで取得できるようなものであれば、使用用途によってはヘッドマウントディスプレイが優れている場合も今後は増えてくることと思います。

◆内部を見たい
皆さんも左心房とか右心室とか、どこかで一度は習ったことがあるかと思います。
心臓というのは内部の立体構造が複雑でして、やっぱり内部を見たいわけです。

というわけで内部が見えるようにしました。

 
ここでもまた安易に考えると、「半透明にすれば良いじゃん!」と言われるのですが、本当に半透明が見やすいと思いますか?
色んなものが少しずつ見えるというのは実は多くの場合、とても見にくいのです。

というわけで、ここでは、「常に心臓の表面が消えて、皮を1枚剥がしたような状態で見える」ようにしてあります。
心臓の内部を見ながらも、心臓表面の輪郭も常に見えます。これは現実世界では絶対に表現できず、CGでしか出来ない方法です。

◆心エコーをやりたい
自分が研修医として心エコーをやっていた頃の経験談なのですが、心エコーって、あれよくわかりませんよね…。
いやもちろん訓練すれば手技としてはある程度出来るようにはなるのですが、なんでこうやって操作したらこう見えるのか、それを理解するためには、心臓内部の立体構造を平面で切ったらどのように見えるのかを徹底的に理解しなければいけません。
お肉屋さんで豚の心臓を丸ごと買ってきて包丁で切ってみたり、柔らかい素材で3Dプリンタ出力して切ってみれば断面がわかりますが、一度切ったらおしまいです。
連続的に断面がどう変化するのか、などは当然現実世界では再現できないわけで、ここでもCGでしか出来ない、リアルタイム擬似心エコーを作りました。

 
断面をグリグリ回転させたり、平行移動したりすることが出来ます。
で、この機能は、3DCG系のエンジニアだったら誰でも作れてしまうものなのですが、これだけでは医療現場では全然役立ちません

何故かわかりますか?

この断面、画面上に表示されている小さい円を中心に動いているのですが、例えば経胸壁心エコーの場合、エコーのプローブと呼ばれるコントローラーは、体表上で動きます。
つまり、断面は心臓の外を中心に動くんですね。これを再現していないと全く意味のない断面が出来上がります。

だから、こうしました。

 
ひょっとするとこれはUI的にも新しい?のかも??しれないのですが、マルチタッチが使えるというデバイスの特徴を最大限に活かし、
指を2本使って、1点を固定させてもう1点を動かすと、固定された点に回転中心が自動的に動いてくれます
個人的にはとても直感的なUIだと思っています。

ただ、この操作を可能にするのは結構大変で、上記の基本操作の中に含まれる2本指の操作であるピンチや捻りなどと区別出来るようにしなければいけません。大変でした。

◆まとめ
と、言うわけで、今回は制作に込めた想いをきちんと書き出してみました。大手の医療機器メーカーや医療ソフトウェア会社の方が見たらすぐに盗めるものばかりですのでどこまで書くか迷いましたが、こうやって細かく書いておくことで、また新しい機会なども生まれれば良いなぁと思っております。

私が代表取締役の会社、株式会社サイアメントは「サイエンスを、正しく、楽しく。」を合言葉に、世間一般には格好良い医療CG映像を作る会社と思われていますが、せっかくリアルタイム3DCGが簡単に使えるようになってきた時代ですので、リアルタイム且つインタラクティブにグリグリ動かせて、且つ、時代の流行に振り回されることなく、医療現場で役立つ見せ方をきちんと丁寧に実装することで、医療にもっともっと貢献していきたい、と考えています。手術ミスを減らしたり、検査時間を短くしたり、3DCGを適切に使えば実現可能だと本気で思っております。

今回制作したviewerは、表示するモデルを変えれば何でも表示できます。先天性心疾患モデルを網羅したviewerが作れればとずっと思っておりますし、動く心臓モデルを使えば、動いている心臓でリアルタイム擬似心エコーも出来ます。
臓器抽出アルゴリズムの先生方が協力して下されば、患者さんごとの3DCGデータを使うことも出来るわけです。

ご興味を持って下さった方や、その他何でも、コメントやメールなど、お待ちしております!

 
 


カテゴリー: 3DCG パーマリンク

コメントを残す

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