タンパク質3Dモデリングでかっこいい画像を作る Pymol+Blender

個人的に大仕事をしたので、メモを兼ねてはじめてQiitaに書きます。
Blenderを使い始めて3週間ほどのペーペーです。

# こういうかっこいい画像を作りたい
![alt](http://dmnfarrell.github.io/img/blender_mhc2.png)
（画像はリンク先より引用）http://dmnfarrell.github.io/bioinformatics/proteins-blender

# 環境
- Windows10 64bit
- メモリ8GB, グラボなし

# やること
- Anacondaのインストール
- Pymolのインストール
- Blenderのインストール
- PDBから必要なタンパク質モデルをダウンロード
- Pymolでプレ加工してwrlファイルでエクスポート
- Blenderでかっこよく加工 

# 必要なもののインストール
AnacondaとPymolに関してはこちら
https://qiita.com/tonets/items/1927058e4297fc1c060d
Pymolはcp36mなどバージョンを確認しないとインストール時エラーが出ます。
https://qiita.com/hnishi/items/5e5e1fd4902fbe809e73

私の会社用Windows10はどうしてもAnacondaをインストールできず（OSをクリーンインストールしてもダメ）
VirtualBoxにUbuntuを入れてやるという力業で進めました。
自宅のWin機では問題なくできたので、以下の話はubuntu環境に限りません。

# Blenderのバージョンで罠にはまる
Blenderは無料で利用できる高機能3Dモデリングソフトです。
https://www.blender.org/
Blenderはちょうど大きなバージョンアップの最中で、もうすぐ2.80が正式リリースされます。

ここで注意していただきたいこととして、
**Pymolで表示する "stick" をBlenderに取り込むには、旧バージョン2.79である必要があります。**
私は2.80で操作を覚えてきたため、2.79で取り込んだ後2.80で編集するという方法で進めました。

# PDBファイルのPymol描画
![alt](https://cdn.rcsb.org/images/rutgers/rp/6rpg/6rpg.pdb1-500.jpg)
流行りのPD-1のデータをダウンロードしてみます。（http://www.rcsb.org/structure/6RPG）
検索して一番最近アップされたものを適当に選びました。

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/66133cb1-c24e-950b-4584-445846fd59af.png)

Pymolを開き、file → open でダウンロードしたPDBファイルを開きます。

![Screenshot from 2019-07-30 17-50-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/c77f733a-2911-79d6-f600-336aae677e0d.png)


allのH - Everuthing で全て消した後、6rpgのS - Surface を表示します。
![Screenshot from 2019-07-30 17-51-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/b0f1b001-fd86-ddb9-2f76-26bf561098f9.png)

![Screenshot from 2019-07-30 17-52-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/aa964c38-baca-ea90-d2a1-f86af6451587.png)


かっこいい・・・。 同様に H - EverythingのあとS - cartoon, C - ssでこのようになります。
![Screenshot from 2019-07-30 17-52-55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/001873aa-4752-b139-7607-09f1d40bcbfb.png)


今回はsurfaceのみ表示させたあと、コマンドラインに set surface_quality,1 として画質の調整をします。
file → save image as VRML2 で wrlファイルを作成します。
前述のとおり、ここで S - stick として表示させたあとwrlファイルを作成しても
Blender 2.80ではインポート時にエラーとなります。stickで取り込みたい場合は2.79を使用してください。
（これに気づくのに3日かかった）
surface, cartoonについては2.80でも直接いけました。

それと私の場合はPymolで追加のペプチドを作りました。作成にはbuilderを使っています。
参考 https://pymolwiki.org/index.php/Builder
作成しただけのペプチドからエクスポートしたwrlファイルは、PDBからダウンロードしたファイルと違い
3D位置情報を含みません。例えば酵素に基質が結合するような形状を作りたい場合は、
別途位置情報のシミュレーション等をする必要があると思われます。

# Blenderにインポートして加工
Blender 2.80を開いて、x で最初のオブジェクトを削除。
ファイル → インポート → X3D extensible 3D で先ほどのwrlファイルをインポート。

![blend2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/c0f9da78-c722-0e95-2767-d61e3b42c3df.png)


巨大なメッシュオブジェクトが開かれるので s で適当なサイズに縮小して位置を調整。
見てのとおりまだカクカクです。

通常メッシュをなめらかにするにはモディファイヤーでサブディビジョンサーフェスを使いますが、
PDBから落としてきたファイルには通用しません。謎の斑点になります。あと重い。。

![blend4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/e078219b-f714-8a41-d03e-054d12422ca1.png)


どうすればいいのか色々といじくりまわした結果、モディファイヤーからリメッシュで解決しました。
深度8、モード：スムーズ、スムーズシェーディングにチェック、とするとご覧の通り。

![blend6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/f5e3aade-a869-f9b1-8389-08349963db29.png)


あとは好みの加工をしていくことになります。
メッシュをクリックしてマテリアルを新規追加。ベースカラーを紫、粗さを0.3。
3dビューのシェーディングをオンにすればあっというまに生々しい（グロテスクな？）モデルができます。

![blend7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/5676b2bf-c05f-3cd5-7da3-95dd13e707ca.png)


今回は以下に並べるような加工を施してみました。

- 位置を上にずらして、平面メッシュを追加（床の作成）
- エリアのライトを３つほど設置して明るさの調整
- ポイントのライトをオブジェクトの中心付近に置いて色と明るさの調整
- レンダー → 「プルーム」、「スクリーンスペース反射」とその中の「屈折」にチェック
- カメラ位置を調整してレンダリング（F12）


![blend5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/2303cd32-c689-c397-81ad-52a381da6e27.png)



完成したものがこちら！
![untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470061/cadb0aa7-0a58-ad70-e3a7-590b84e7b677.png)



# まとめ
Blenderのバージョン違いと、リメッシュに気づかなかったことでだいぶ時間がかかりました。
インストール系を除けば、これらの加工は20分程度でできます。
冒頭に挙げたような画像もほとんどこの流れで作れるはずです。
あとは位置情報を含むPDBファイルをシミュレートで作るところが難しそう。
サイエンスイラストレーション楽しい！

# 参考
http://www.protein.osaka-u.ac.jp/rcsfp/supracryst/suzuki/jpxtal/Katsutani/index.php
https://pymolwiki.org/index.php/2._Translucent_Surfaces