MikuMikuDance に分子構造データを持ち込む方法

Twitter で100を超えるRTをいただき、大変驚いています。もう少し練ってからと思っていましたが、取り急ぎ方法をまとめました。まだ試行錯誤中なので、随時改訂していこうと思っています。動作報告・アイデアなど、コメントください。

2011/09/04: 情報追加
2011/09/06: 情報追加
2011/09/07: Metasequoia LE を用いる方法を別エントリに記載

できること


分子モデル(低分子・蛋白質核酸 etc) をビルボードなどではなく、三次元データのまま MMD で表示できます。

分子モデルをミクなどのキャラクタと共演させられるので、「ミクさんと構造生物学を学ぼう」的な講座動画を作ったりできます*1。化学に興味のない人でも、ミクさんをβシートに腰掛けさせたり、ミクさんにクラウンエーテルを被ってもらったりといったシュールな絵を作って遊べます。

多くの人に構造データで遊んでもらって、化学に親しんでもらう機会となれば嬉しいです。

流れ

1. Pymol に PDB データを表示させ、Wavefront 3D 形式(.obj)や VRML 形式(.wrl)で出力する。
2. これを Blender などの 3DCG ソフトで調整する(材質設定・頂点数の削減・スケール調節)。
3. Direct X 形式(.x)でエクスポートし、MMD にアクセサリとして読み込ませる。

いるもの

Pymol (バージョン 1.0 以降)

Ubuntu の場合 apt-get で入ります。Windows の場合、公式サイトで配布されているバイナリは古いバージョンなので、http://www.lfd.uci.edu/~gohlke/pythonlibs/ から独自ビルド版をもらってきてください。

Blender

Ubuntu の場合 apt-get で入ります。Windowsなら公式サイトから入手してください。

VRML97 Importer

09/04 追記: Blender のバージョンが 2.5以上の場合は不要です。

Pymol の出力する VRML は VRML97 であり、Blender に添付されているインポータでは読み込めません。http://en.sourceforge.jp/projects/sfnet_vrml97import/ から VRML97 Importer を入手してください。

MikuMikuDance

Wine でも動くようですが、さすがに Windows の方が安定です。

Step1. Pymol での作業

Pymol で分子モデルを用意し、表現を工夫します。Cartoon 表示が基本でしょう。[File]-[Open]でPDBファイルを読み込んだあと、右のほうの「S」(Show)ボタンを押して、[as]-[cartoon] でOKです。リガンドの出し方など、詳細は http://biokids.org/ などで勉強してください。

Pymol からは、Wavefront 3D 形式またはVRML形式でエクスポートします。メニューには、"Save Image As PNG" しかありませんが、コマンドで

save "output.obj"

のようにすれば Wavefront 3D 形式になります。拡張子 .wrl を付ければ VRML97形式になります。

出力形式について

Wavefront 3D形式では、円柱をエクスポートできないという問題があります*2。そのため、sticks 表示や set cartoon_cylindrical_helices, on になっている部分が消えてしまいます。VRML97形式なら出力は問題ありませんが、Blender での処理がうまくいかなくなることもあり、一長一短です。

09/06追記: VRML97 形式で出力しても、Blender 2.5x 系列で読み込ませればエラーは出ないようです。

Step2. Blender での作業

Blender は操作体系にクセがあり、慣れるまでは大変ですが、それだけの値打ちのあるソフトです。既に他の3DCGソフトに慣れている場合は、それを使ってもできると思います。
Step1で出力したデータをBlenderにインポートします。Blender で調節すべきことは、以下の3点です。

  1. 材質の設定: Cartoon の色が消えてしまうことが多い様子。適当に材質を設定する
  2. 縮小: そのままでは大きすぎるので、オブジェクトを選択して「S」キーで縮小する。
  3. ポリゴン数の削減: Cartoon は曲面なので頂点数が非常に多い。単ドメイン蛋白質でも、20万、30万頂点になることはザラ。このままでは重いので、頑張って減らす。インポート後、全てを選択して、メッシュ編集モードに入り、スペースキーを押して出てくるメニューから、[Edit]-[Vertices]-[Remove Doubles]する。Decimate Modifier も効果的だが、材質の設定が失われる(?)。

09/06追記: ポリゴン数の削減は難しい問題です。現在では、Remove Doubles をしたあとに、Alt+J キーを押して三角ポリゴンを四角ポリゴンに変換したものが比較的ローポリで、見た目もよいようです。

Step3. MMDへの移動

Blenderから[File]-[Export]-[Direct X]で[Export All]します。BlenderMMD では座標系が違うので、[Flip z]をオンにしておきます。
出来上がった .x ファイルを MMD の「アクセサリの読み込み」で読み込ませてみましょう。いかがでしょうか?

現在検討中

  • Jmol からエクスポートしたデータの移行。Blender上ではPymolよりもメッシュが綺麗なようですが、non-manifold mesh を含んでおり、decimate modifier が使えないなどの不便があります。
  • ポリゴン数の調節方法
  • 適切な縮尺(Pymo上での1Åが、MMD単位でいくつになるか)