CTのDICOMデータからOsiriXでobjデータを書き出し、Unityを使ってiPhoneでARとして表現する方法

#医療とAR今後熱いと思う
医療者向けプログラミングスクール『[ものづくり医療センター(通称もいせん)](https://moicen-forest.studio.site/)』を立ち上げた整形外科の北城です。
今回は、表題のようにCTをAR環境で表現することに無料で成功したので、作り方をまとめておきます。
完成したものは以下の通りです。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">CTのDICOMデータをOsiriXを利用してobjデータで書き出し、unityに取り込んでARとして家の床に表現することに成功！<br>同じことがオペ室でもできるのは、整形外科医としては結構画期的かも。<br>今度のオペ症例で実践してみよう！<a href="https://twitter.com/hashtag/unity?src=hash&amp;ref_src=twsrc%5Etfw">#unity</a> <a href="https://twitter.com/hashtag/osirix?src=hash&amp;ref_src=twsrc%5Etfw">#osirix</a> <a href="https://twitter.com/hashtag/%E3%82%B9%E3%82%BF%E3%82%B8%E3%82%AA%E3%81%97%E3%81%BE%E3%81%A5?src=hash&amp;ref_src=twsrc%5Etfw">#スタジオしまづ</a> <a href="https://twitter.com/hashtag/%E3%82%82%E3%81%84%E3%81%9B%E3%82%93?src=hash&amp;ref_src=twsrc%5Etfw">#もいせん</a> <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://t.co/PDyYp23Ltn">pic.twitter.com/PDyYp23Ltn</a></p>&mdash; 北城雅照:医療者向けプログラミングスクール「ものづくり医療センター（もいせん）」院長 (@teru3_kitashiro) <a href="https://twitter.com/teru3_kitashiro/status/1440362540932816897?ref_src=twsrc%5Etfw">September 21, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

早速作り方を以下に示します。

##環境
PC MacOS Big Sur ver. 11.5.2
[OsiriX Lite](https://www.osirix-viewer.com/osirix/osirix-md/download-osirix-lite/) 
Unity 2020.1.17f1

## OsiriXの設定
OsiriXとは無料で医療画像に用いられるDICOMデータを見ることができる、非常に便利なツールです。

###Objectデータの作成方法
患者さんのCTデータをOsiriXに取り込みボリュームレンダリングで表示
[![Image from Gyazo](https://i.gyazo.com/4f809581090967766b9c0b875b26405a.jpg)](https://gyazo.com/4f809581090967766b9c0b875b26405a)

[![Image from Gyazo](https://i.gyazo.com/b5ee9bf8eb1cbf0b86fe82905684d76d.png)](https://gyazo.com/b5ee9bf8eb1cbf0b86fe82905684d76d)

不要な部分をカットツールを用いて削除
[![Image from Gyazo](https://i.gyazo.com/fe5db3b8c04bca7af3708b854c573332.png)](https://gyazo.com/fe5db3b8c04bca7af3708b854c573332)

その後、サーフェイスレンダリングを選択
[![Image from Gyazo](https://i.gyazo.com/65d2c1eed43b65eaf4543c0ec39f1c23.png)](https://gyazo.com/65d2c1eed43b65eaf4543c0ec39f1c23)

選択時に骨条件になるようにCT値を設定（約　280ぐらい）
[![Image from Gyazo](https://i.gyazo.com/e850eae7c6bb0359d31ac17caf921359.png)](https://gyazo.com/e850eae7c6bb0359d31ac17caf921359)

出来上がったサーフェイスレンダリングをobj形式で書き出し
[![Image from Gyazo](https://i.gyazo.com/0aed01e81bba422a8e20f0a879efab2f.jpg)](https://gyazo.com/0aed01e81bba422a8e20f0a879efab2f)

##Unityの設定
基本的なAR環境の作成については下記の記事を参考に進めれば完成します。
[UnityのARFoundationでAR空間に豆腐を召喚する](https://qiita.com/shun-shun123/items/1aa646049474d0e244be)
また、Build関係の設定はこちらの[【IOS】で「AR FOUNDATION」を使用したARアプリの作り方](https://onetech.jp/blog/%E3%80%90ios%E3%80%91ar-foundation-12092)を参考に進めました。
ここでは書き出したCTのobjデータの処理方法についてまとめます。

###Objectデータの処理
取り込んだobjデータをシーンのヒエラルキーに取り込み、子要素のgrp9を開き、Mesh Colliderコンポーネントを追加します。
[![Image from Gyazo](https://i.gyazo.com/871b4a6e4d3bcf0654f66aecca13572e.png)](https://gyazo.com/871b4a6e4d3bcf0654f66aecca13572e)

このgrp9をboneobjなどに名前を変更し、prefab化します。
[![Image from Gyazo](https://i.gyazo.com/3a540405d8fa68a157eae0d90acc66bf.png)](https://gyazo.com/3a540405d8fa68a157eae0d90acc66bf)

###Objectデータの起点の位置に注意！
あとは先程のAR環境構築の記事に沿って環境を構築し、上prefab化したobjデータをAR環境に表現します。
ここで注意するべきことは、objectデータの起点の位置、です。
起点の位置が思った場所よりもかなり遠くに位置してしまうために、設定をミスるととんでもない位置に画像が表現されるため、ARで見えなくなってしまいます。
ポイントは、起点となるオブジェクト（プレーンオブジェクトなど）を作成し、その子要素として先程作成したobjectデータを配置し、起点となるオブジェクトとの位置関係を意識して配置することです。

慣れれば、30分程度で医療AR環境が自作できます。