HoloLensを使ってPDBに登録されているタンパク質の立体構造を現実空間に投影する
概要
HoloLens向けのアプリをビルドして実機にデプロイするところをまとめてみました。
Microsoftが用意しているHello World的なチュートリアルをなぞってみます。
Holograms 100
ただのCubeを表示させるだけだと味気ないので、
PDBからタンパク質の立体構造のデータを取ってきて、PyMolとBlenderで適当に加工した3Dデータを表示させます。
動画をキャプチャすると見た目がしょぼく見えてしまいますがこんな感じになります。
このように、HoloLensを使えば、空間を認識してマーカーなしでその場にオブジェクトを置くことができます。
必要なもの
HoloLensのアプリ開発環境
- Visual Studio 2015 Update 3
http://dev.windows.com/downloads - HoloLens Emulator
http://go.microsoft.com/fwlink/?LinkID=823018 - Unity 5.5
https://store.unity.com/download
PDBデータの加工
- Anaconda3 (Python3.5, Scipy)
- PyMOL
- Blender 2.78a
https://www.blender.org/download/
内容
1. HoloLensのアプリ開発に必要なツールのインストール
詳しくは、MicrosoftのInstall the toolsを参照のこと。
https://developer.microsoft.com/ja-jp/windows/holographic/install_the_tools
- Visual Studio 2015 Update 3
http://dev.windows.com/downloads - HoloLens Emulator
http://go.microsoft.com/fwlink/?LinkID=823018 - Unity 5.5
https://store.unity.com/download
をそれぞれインストールする。
インストール時の留意点
Visual Studio 2015 Update 3
Tools (1.4)
とWindows 10 SDK (10.0.10586)
を併せてインストールする必要がある。
HoloLens Emulator
Hyper-V
の機能をあらかじめONにしておく必要がある。
方法は以下の通り。
1. CortanaでHyper-V
と検索。
2. Windowsの機能の無効化と有効化(コントロールパネル)をクリック。
3. Hyper-V
の項目にチェックを付け、パソコンを再起動
Unity
Windows Store .NET Scripting BackEnd
を併せてインストールする。
2. PDBデータの加工に必要なツールのインストール
Anacondaのインストール
PyMolがPythonで動作するソフトであるため、Python3をあらかじめパソコンにインストールしておく。
Download Anaconda Now! | Continuum
Python2.7
でも構わないが、今回はPython3.5
のほうをダウンロードしてインストールした。
PyMOLのインストール
下記の記事に紹介されているので詳しくはそちらを参照のこと。
PyMOL インストール
1. 非公式のPythonパッケージのインストーラーを配布しているサイトへ行き、
Python Extension Packages for Windows - Christoph Gohlke
- Pmw-2.0.1-py3-none-any.whl
- pymol-1.8.5.0-cp35-cp35m-win_amd64.whl
- pymol_launcher-1.0-cp35-cp35m-win_amd64.whl
をそれぞれダウンロードする。
2. コマンドプロンプトを開き、先ほどダウンロードしたファイルからPyMOLをインストールする。
$ pip install Pmw-2.0.1-py3-none-any.whl $ pip install pymol-1.8.5.0-cp35-cp35m-win_amd64.whl $ pip install pymol_launcher-1.0-cp35-cp35m-win_amd64.whl
Anacondaをインストールしていれば、Scipy
とWheel
がインストールされているはずですが、万が一上記のライブラリがインストールされていない場合は下記のように自身でインストールする。
Anaconda Navigatorを起動して、Environmentsをクリックし、Allを選択して、それぞれのライブラリを検索する。 インストールしたいライブラリにチェックを付け、右下のApplyボタンをクリックして該当するライブラリをインストールする。
3. PyMOLの実行ファイルのショートカットを作っておく。
PyMOLはC:\Users\自分のユーザー名\Anaconda3\PyMOL.exe
にあるので、ショートカットを作っておいてデスクトップなどに置いておくと便利です。
Blenderのインストール
下記のURLからインストーラーをダウンロードし、自身の環境にインストールする。
https://www.blender.org/download/
3. Unityに取り込ませるタンパク質の立体構造のデータを用意する
PDBのサイトから適当なタンパク質の立体構造をダウンロード
下記のURLからPDBのサイトへアクセスします。
RCSB Protein Data Bank - RCSB PDB
PDBのサイトから、好きなタンパク質の名前で検索をかけ、適当なタンパク質のデータを選択する。
各立体構造のページに飛んだら、右上のDownload Files
ボタンをクリックして、PDB Format
のファイルをダウンロードする。
ちなみ、今回使用したデータはこちら。
https://files.rcsb.org/download/3Q0L.pdb
PyMOL上でリボン構造とSurface構造を保存する
PyMOLをWindows10上で起動し、[File]->[Open]から先ほどダウンロードしてきたPDBファイルを開く。
開いたデータ(ここでは「3qOl」)の欄の横にあるH
ボタンをクリックし、メニューの先頭のeverything
を選択する。
すると、右図のように立体構造の表示がクリアされる。
次に、S
ボタンをクリックし、メニューのcartoon
を選択する。
すると、リボン構造としてタンパク質の立体構造が表現される。
これをBlenderで取り込めるVRML2
ファイルとして保存する。
Surface構造も同様の手順で取得する。
まず、先ほどと同様にH
ボタンをクリックし、メニューの先頭のeverything
をクリックすることでリボン構造を消す。
次に、S
ボタンをクリックし、メニューの先頭のsurface
を選択する。
すると今度は、Surface構造としてタンパク質の立体構造が表示される。
これをBlenderで取り込めるVRML2
ファイルとして保存する。
Blenderで3Dデータを加工する
Blenderを起動する。起動した初期画面にはCubeがあらかじめ設置されているので、まずはこれを消す。 右クリックでオブジェクトを選択して、キーボードの「Delete」ボタンを押すと、ウインドウ上に「Delete」するか求められるので「Delete」をクリックしてCubeを消す。
BlenderがVRML2
ファイルを取り込めるかどうか確認する。
[File]->[User Preferences]をクリックして、Blender User Preferences
を開く。
Add-onsのタブをクリックし、VAML2を検索する。Web3D X3D/VAML2 format
の項目にチェックが付いていない場合は、チェックを付けて左下のSave User Settings
をクリックする。
次に、Blenderにタンパク質の立体構造のデータ(リボン構造とSurface構造)を取り込ませる。
[File]->[Import]->[X3D Extensible 3D(.x3d/.wrl)]をクリックする。そして、先ほどPyMOLで用意したリボン構造のほうのVAML2ファイルを選択しBlenderにインポートする。
- 取り込んだリボン構造に対して右クリックし、オブジェクトを選択する。
- キーボードの
Tab
キーを押して、Object Mode
からEdit Mode
に切り替える。 - 右端のカラムから
Material
ボタンを押す。 +
ボタンをクリックして、新しいMaterialMaterial.001
を作成する。- 新しく作ったMaterialを選択して、
Assign
ボタンをクリックする。 - Diffuseの項目で適当な色を選択する。
Tab
キーを押して、Object Mode
に戻る。- もとからあった
Shape
を選択し、-
ボタンをクリックして消す。
結果として、このようにリボン構造に色がつくはずです。
同じ要領でSurface構造をBlenderにインポートする。
- 先程と同様に、右クリックでSurface構造のみを選択した状態で、
Tab
キーを押しEdit Mode
に切り替える。 - 右端のカラムから
Material
ボタンを押す。 - Diffuseの項目で適当な色を選択する。
Transparency
にチェックを付ける(リボン構造と異なり、Surface構造は透明になるように設定します)。Alpha
値を0.3
に設定する(透明度を設定。0に近いほど透明度が増す)。Tab
キーを押し、Object Mode
に切り替える。- キーボードの
A
キーを押し、オブジェクトを全選択。 S
キーを押し、マウスを動かしてオブジェクトのサイズが小さくなるように調節する。 もとのサイズだと保存したファイルが大きくなるので、できるだけ容量を抑えるためにサイズを小さくします。
最後に、完成したオブジェクトを、UnityにインポートできるFBX
ファイルとしてエクスポートする。
[File]->[Export]->[FBX(.fbx)]をクリックし、任意の場所・名前で保存。
4. Unity上でHoloLensアプリをつくる
新しいプロジェクトの作成
Unityを起動して、右上のNEW
をクリック。プロジェクト名をPDBViewer
として、Create project
ボタンをクリックして、新しいプロジェクトを作成する。
タンパク質の立体構造のデータをインポート
上記で作成したタンパク質の立体構造のFBX
ファイルをUnityにインポートする。
方法は簡単で、Project
タブのAssetsの直下に、該当のFBXファイルをドラッグ&ドロップでインポートする。
[Ctrl]+[S]で新しいSceneを適当な名前で保存する。今回はPDBViewer
という名前で保存した。
HoloLens向けにMain cameraの設定
次に、HoloLens向けにMain cameraの設定(Inspector)を変更する。
- TransformのPositionを
(X: 0, Y: 1, Z: -10)
から(X: 0, Y: 0, Z: 0)
に変更。 - CamemraのClear Flagsを
Skybox
からSolid color
に変更。 - CameraのBackgroundのRGBA値を
(0, 0, 0, 0)
に変更。 - CameraのNear Clip Planeを
0.3
から0.85
に変更(85 cmより近い地点ではオブジェクトの表示を消す)。
タンパク質の立体構造のデータをSceneに追加
Assetsから、Hierarchy
にタンパク質の立体構造のデータをドラッグ&ドロップで配置する。
TranformでPositionを(X: 0, Y: 0, Z: 0.5)
、Scaleを(X: 0.1, Y: 0.1, Z: 0.1)
に設定する。
HoloLens向けにビルドするための設定変更
1. Unity Performance settings
[Edit]->[Project Settings]->[Quality]をクリックして、Qualityの設定画面を出す。
Default
の横にある下三角ボタンをクリックし、Fastest
を選択する。
QualityをFantastic
からFastest
にしておかないとFPSの低下を招き、結果としてHoloLens上での動作がもたつく。
2. Unity Build settings
HoloLens向けのビルドの設定を行う。
まず、[File]->[Build Setting…]をクリックして、ビルドの設定画面を出す。
- SDKを
Universal 10
に変更。 - UWP Build Typeを
D3D
に変更。 Unity C# Projects
にチェックを付ける。
最後に、Windows Storeを選択して、左下のSwitch Platform
をクリックする。
すると、UnityのマークがWindows Storeに移動し、Build対象が切り替わったことが確認できます。
Player Settings...
をクリックし、Settings for Windows StoreのOther settingsのVirtual Reality Supported
にチェックを付ける。
Virtual Reality SDKsの項目で、Windows Holographic
を選択する。
先ほど行ったビルドの設定を先にしておかないと、Virtual Reality Supported
の設定でWindows Holographic
が選択肢に出てこないので注意。
3. ビルドを行う
[File]->[Build Settings…]をクリックし、ビルドの設定画面を開き、Build
ボタンをクリック。
どこにアプリをビルドするか聞かれるので、App
フォルダを新規作成してそこにアプリをビルドする。
5. Visual StudioからHoloLensへアプリをデプロイする
ビルドが終わるとプロジェクトのウインドウが開くので、AppフォルダからPDBViewer.sln
をクリックする。
Visual Studioが起動する。Package.appxmanifest
を右クリックして、View Code
をクリックする。
TargetDeviceFamily
の名前のところをWindows.Universal
からWindows.Holographic
に変更し、ファイルを保存。
HoloLensをUSB経由でパソコンに接続し、Visual Studio上で以下のように設定する。
Debug
をRelease
に変更。ARM
をx86
に変更。Local Machine
をDevice
に変更。
[Debug]->[Start Without Debugging]をクリックし、HoloLensにアプリをデプロイする。
以上になります。よくよく見ると今回プログラミングを一切していません…。
参考
詳しくはこちらを参照のこと。