読者です 読者をやめる 読者になる 読者になる

Acetaminophen’s diary

化学に関すること、TeXに関すること、ゆきだるまに関すること。

PowerPointやPDFにいろいろなマルチメディアを埋め込む(7)

化学 TeX ソフト マルチメディア

動く 3D 模型の挿入:PDF の場合(TeX 使用)後編3

予定外に回数が増えたが、第7回では前回までに一通りの完成をみた分子模型の埋め込みにとらわれず、より汎用的な方法を探索する。ただし、導入としては(ほかのサンプル 3D データを持っていないので)分子模型の埋め込みを試してみた。

 

【方法3'】Jmol や PyMOL の利用:PDB から OBJ を経て U3D へ

前回の【方法3】で紹介した Jmol や PyMOL は OBJ 形式のファイル出力に対応している。OBJ 形式のファイルは Jmol や PyMOL に限らず、多くの 3D-CAD ソフトウェアで入出力できるので、なじみ深い方も多いであろう。この OBJ 形式のファイルは、例えば DAZ Studio というフリーソフトによって U3D 形式に変換できる。

とりあえず、まずは Jmol を用いて OBJ ファイルを出力するところから説明する。

例によって 100d.pdb を Jmol で表示し、今度は Spacefill モデルに調節してみた。右クリックメニューから [スタイル] > [モデルの表示方法] > [CPK空間充填] と選択する。

f:id:acetaminophen:20141003173007p:plain

OBJ 形式での出力は、コンソールから

write c:/users/ユーザ名/desktop/100d-spacefill.obj

と入力する。うまくいけば

OK 43971817 Obj c:/users/ユーザ名/desktop/100d-spacefill.obj, 469 c:/users/ユーザ名/desktop/100d-spacefill.mtl

のように表示される。これを見れば分かるように、3D データを含む .obj ファイルと同時にマテリアルを指定する .mtl ファイルも出力される。以下、OBJファイルを開くときは常に .obj ファイルと同じ場所に .mtl ファイルを置いていることが前提である。

OBJ 形式から U3D 形式へ変換するソフトとして先ほど紹介した DAZ Studio は Windows 専用である。個人情報の登録が必要である上、DAZ Install Manager という管理ソフトウェアをはじめにインストールしたのち、DAZ Studio を Install Manager 経由でインストールするというかなり面倒な仕様である。インストールに手間がかかる分時間がかかるし、前回の Universal 3D Sample Software に比べて相当重いのだが、さまざまなファイルの入出力に対応している。

DAZ Studio 4.6 でインポートできるのは以下の形式。

f:id:acetaminophen:20141003173108p:plain

で、先ほど出力した 100d-spacefill.obj を開いてみると以下の通り。

f:id:acetaminophen:20141003173127p:plain

これを U3D 形式でエクスポートする。他にもいくつかの出力形式がある。

f:id:acetaminophen:20141003173145p:plain

残念ながらこの方法では LaTeX ソースを生成してくれない。とりあえず前回 Jmol で IDTF 形式を経由したときに使用した LaTeX ソースを流用する。つまり「3d-jmol_js.tex」の中の本文解説と読み込む U3D ファイル名だけを書き換えた。サンプルはこちら

おそらくレンダリングの解像度の問題だと思うが、非常にサイズの大きな U3D ファイル(33.5MB)を取り込んでしまい、タイプセットにも異常なほど時間を要した。PDF ファイルもサイズが大きい(12.6MB)のはそのためであり、Adobe Reader で開くだけでもかなり時間を要する。

開いてみると、びっくりするほど大きく表示されたうえ、回してみた時の中心もずれていた*1。しかし一回ごとの動作がかなり重いので、僕は実際にこの方法を使うことはないと考え、これ以上の追究はやめておく。ただし、DAZ 3D というソフトウェアの多様な入出力形式は魅力的なので、覚えておいて損はないだろう。

 

動く 3D 模型の挿入:PDF の場合(TeX 不使用)

何か TeX を使わずに簡単に 3D モデルを PDF に埋め込むことができるフリーウェアはないかと探していたところ、見つけた。Bentley View V8i というフリーのソフトウェアが存在し、Windows でのみ利用可能である。

これはさまざまな形式の 3D 情報をもつファイルのビューアとして機能する。インポートできる形式は以下の通り。

f:id:acetaminophen:20141003173410p:plain

もちろん OBJ 形式に対応しているので、先ほど Jmol でエクスポートしたばかりの 100d-spacefill.obj ファイルを開いてみた*2

f:id:acetaminophen:20141003173428p:plain

デフォルトでは背景がグレーになっているので、メニューから [Settings] > [Preferences] を選択し、View Options カテゴリで Design Model Background Color を白に変更した。

f:id:acetaminophen:20141003173443p:plain

f:id:acetaminophen:20141003173530p:plain

そして、すごいのが Print to PDF という機能!

f:id:acetaminophen:20141003173550p:plain

仮想プリンタとして機能し、通常の印刷と同様の操作で 3D モデルを埋め込んだ PDF を作成できる。

f:id:acetaminophen:20141003173604p:plain

ダイアログでしっかり Print to 3D にチェックを入れたことを確認し、上方のプリンターアイコンをクリックすると、PDF ファイルの出力先を指定して出力できる。サンプルはこちら*3。すばらしい。簡単すぎてびっくりするくらいだ。

この Bentley View V8i というフリーソフト

で紹介されており、さらにそのブログの方は

を参照していた。英語リソースとしては

などで、こちらは OBJ 形式の出力にシェアウェアである Accutrans 3D の30日間無料版を使用していたのだが、この方法についても<紙>さんが言及している。

Jmol から VRML 形式に出力し、Accutrans 3D で OBJ 形式に変換している。

 

次回はこれまで全7回の総集編。今後の課題などを考えていく。

*1:当然、これは DAZ 3D で分子模型を表示したときに座標を調節しなかったことに由来する。

*2:先ほどわざわざ TeX 使用の別法として OBJ 形式を使用したのは、まさにこの Bentley View V8i で使用するためである!

*3:本当は 100d-spacefill.obj と 100d-spacefill.mtl も置いておきたいのだが、ファイルサイズが大きすぎるので断念。