プロジェクトというほどおおげさなものではないですが,趣味的に少しずつ進めたいと思っています.
ゴチャゴチャした分子系を平面で可視化してもいまいち詳細がわからない.
高価な立体視ディスプレイやそれ用の大仰なPC機材,没入型VRシステムを使わなくても立体視できる環境を手に入れたい(作りたい).
ここ最近(2021年現在)没入型3D VRへ参入する障壁が低くなっている気がする.また世間的にも盛り上がりつつある.低価格で商用化されている(されそうなものも含む)ハードウェアは枚挙に暇がない(Oculus Rift,Google Cardboard,PS VR,Microsoft HoloLensなど).
そのうち,分子シミュレーションの最大の障壁の一つである,分子計算系の初期状態を作るという大作業を簡単にしたい.田植えをするかのごとく,VR世界で空間に分子を植えてみたい.
モーショントラックとか力覚フィードバックは(いずれ)欲しいところ.
研究に潤いとサイバー感が欲しい.
まずは,手っ取り早く立体視用動画を作成してみる.VMD (Visual Molecular Dynamics)は,立体視出力に対応しているので,VMDを使った作り方を以下に述べる.
本内容はいわゆるSide by Side動画の作成に特化した内容であり,3Dディスプレイや3DTVで採用されている立体視方式(ゴーグルを使うモニターや裸眼立体視ディスプレイ)を前提にしたものではない.
準備するもの
シミュレーション結果
(ちょっと確認するために)平行法による立体視ができる能力とそれ用の普通のディスプレイかモバイル端末
これらを準備した上で,作業を進める.
最終的にはこんな動画を作ることが目標です.
手順
VMDで分子を読み込んで好きなように表示する.トラジェクトリーを読み込んでアニメーションにしてもよい.
メニューから,[Display]->[Stereo]->[SideBySide]で,とりあえずSide by Side方式での立体視用スクリーンになる.が,このスクリーンはそのままレンダリング出力できないので,以下の手順を踏む.
VMDの画面比を8:9にする.これは,Side by Side形式の場合,片目用画像を左右別々に作って連結するという工程になるためである.最終的に1920:1080 (16:9)のフルHDで作りたいなら,960:1080に画面の大きさを整える.例えば,VMDのコンソールから,
> display resize 960 1080
とすればよい.
画像レンダリング出力用のtcl procedureを書く.例えば以下のような感じ.
proc anim_render {{minstep 1} {maxstep 300}} {
#set timestep for filename
set timestep 1
animate goto 0
display update
# snapshot loop
for {set i [ expr $minstep - 1]} {$i < $maxstep} {incr i} {
animate goto $i
display update
# render image (stereo Side by Side)
set filenamel snap.L.[format "%04d" $timestep].tga
display stereo Left
render TachyonInternal $filenamel
# render TachyonLOptiXInternal $filenamel
set filenamer snap.R.[format "%04d" $timestep].tga
display stereo Right
render TachyonInternal $filenamer
# render TachyonLOptiXInternal $filenamer
set filename snap.[format "%04d" $timestep].tga
exec /usr/bin/convert +append $filenamel $filenamer $filename
# exec C:/cygwin64/bin/convert +append $filenamel $filenamer $filename
incr timestep
}
return
}
これを,例えばanim_render.tclというファイル名で保存しておく.
ここでは左目用画像をdisplay stereo Leftとしてレンダリングし,右目用画像をdisplay stereo Rightとして交互にレンダリングすることでそれぞれの画像を取得し,ImageMagickのconvertコマンドで左右連結している.
したがって,システムにImageMagickが必要だが,とりあえず左右の画像を出力しておき,後で別途連結してもよい.
このプロシージャを実行するには,VMDのコンソールから,
> play anim_render.tcl
> anim_render
でレンダリングが開始される.
連番画像ファイルからムービーを作成する.どういう方法でもいいので,画像をつなげてムービーをつくればよい.可能ならVMD内部でやってしまっても構わない.
以上でSide by Sideの動画が完成!とりあえずPCで動画を再生して,平行法で立体的に見えることを確認する.このとき,動画のウィンドウを小さくしておくと平行法がやりやすい(個人的には).
簡易没入型3D VRゴーグルで動画を再生
このままでも平行法で立体視すれば確かに立体的に見えるが,やはり没入感が乏しいので,3D VRゴーグルを使ってみる.例えば,2015年現在Google Cardboardをはじめとした手軽かつ安価に導入可能な3D VRゴーグルが利用可能な状況になっている.
この中で,ここではGoogle Cardboard互換のTao Visor (タオバイザー)を個人的に手に入れたので,動画再生に利用した.Tao Visorはクラウドファンディングで資金調達を行い設計・制作されたVRメガネだが,実質的に1500円の出資のみで(組み立て式の)本体を1個入手できた.5インチクラスのAndroid端末(例えばNexus 5)を表示用に差し込み,Side by Side対応のアプリや動画を端末で表示することで,没入感のある立体視を実現する.
詳しくは,タオバイザーのサイトを参照のこと.
動画再生に必要なものは以下の通り
Google Cardboard的なVRゴーグル
スマートフォン端末
動画を再生できるアプリ,あるいはYoutubeにアップロード可能な状況ならYoutubeでよい.
後は端末を本体に取り付けて,前述した方法で作成した動画を再生するだけで,没入感のある動画を楽しめる.
ちなみにタオバイザーはこんな感じ↓
ここまでで,研究紹介や体験デモ的な利用にはある程度使用できるレベルに到達していると考えられる.
またタオバイザー的なVRメガネは,タオバイザーに限らず1000円そこそこで入手できるようなので,気軽にトライできる状況にあるといえる.
動画作成におけるTips
AO (Ambient Occlusion)を利用した画像レンダリングの方が,より細かい部分での奥行き感が得られる印象.
動画そのものに動き(対象物に対する視点の移動など)があるとより立体感が得られると考えられる.
以降更新予定…
今後の課題
画像に対するレンズの歪み補正を入れられないか?(そこまでやるならアプリ開発に移行した方がよい?)
より没入感の高い動画コンテンツにするためのチューニング
Android向けアプリ(作ってみたい)
Oculus Rift向けアプリ(作ってみたい)
今のところVMD (Ver.1.9.2現在)にはOculus Rift用の出力方式は実装されていないと思われる.対応してくれると一番手っ取り早いかも.
Works with Google Cardboardが発表されています.(4/16/2015)
新しいGoogle Cardboardが発表され,6インチ端末まで対応しています.また,iOSも公式にサポートされました.(5/29/2015)
2015/7/29および7/30に開催された東北大学オープンキャンパスにて,上記SAM forest動画のデモを行いました.予想以上に好評いただいて安心しました.ご来場いただいた皆様,どうもありがとうございました.(7/30/2015)
明治大学宮下教授らのグループがMilboxTouchというVRゴーグルを発表しています.筐体側面に導電性インクで印刷されたパターンを触ることで,中のスマートフォンを操作可能にしているそうです.確かにスマートフォンを一度ゴーグルに収めると,操作に難ありだったので,簡易型3D VRゴーグルの可能性を拡げてくれそうです.個人的には,バッテリーのチャージが外部からできるようになると嬉しいですね(穴を開ければいいという気も).(7/31/2015)
Oculus Riftの製品版がいよいよ2016年1月6日から予約開始されるようです.(1/5/2016)
MilboxTouchがクラウドファンディングMakuakeで出資を募集しているようです.VRパックマンのおまけまでついてくるとのこと.(2/17/2016)
HTCのVIVE VR製品版が2月29日から予約開始されるようです.(2/22/2016)
Google Play StoreでVRサイトがオープンし,3種のVRゴーグルの販売が開始したようです(日本販売はまだ).(3/1/2016)
PlayStation VRの発売が決定したようです.2016年10月発売予定とのこと.(3/16/2016)
IBMの本気…(3/18/2016)
MilboxTouchが届きました.そのうちレポートすると思います.(4/22/2016)
MilboxTouchの一般販売がすでに始まっていました.(4/27/2016)
Stealth VRの国内販売が始まっていました.(5/8/2016)
ARマーカー(コントローラー)を使ったジェスチャーで操作ができるBotsNew VRが発表されています.8月下旬に販売とのこと.(6/13/2016)
VR Foldという折りたたみ可能なコンパクトVRゴーグルを購入しました.環境光を遮るのは難しいですが,持ち運びのしやすさや手軽さが圧倒的にいいです.調整部分が多いのも便利です.デモ用途に最適かと思います.(6/15/2016)
2016/7/27および7/28に開催された東北大学オープンキャンパスにて,SAM forestとInstantaneous Structure of Water Surface動画のデモを行いました.今回もなかなかいい反応をいただきました.ご来場いただいた皆様,誠にありがとうございました.(7/28/2016)
今回のオープンキャンパスでは,メインのVRゴーグルとしてVR Foldを使用しました.多人数が来る展示でデモを行う際には,取り扱いが手軽で充電も簡単にできるので大変重宝しました.(7/28/2016)
Intelが独自のスタンドアロン型VR/AR HMDデバイスProject Alloyを発表しています.(8/17/2016)
Qualcommがスタンドアロン型VRデバイス向けのプロセッサーSnapdragon VR820を発表しています.(9/2/2016)
Google I/O 2016で発表されたGoogle Daydream Viewの実機が明らかになりました.(10/8/2016)
ZEISSのVR One Plusが2016/12/9に国内発売されます.光学設計がユニークなものとなるようです.(11/28/2016)
個人的にPlayStation VRを入手しました.PS 4のYoutubeアップデートで360度動画に対応しましたが,かなりのキラーコンテンツだと感じました.(4/17/2017)
一方でVMD 1.9.3が360度動画の作成に対応しており,今後チャレンジしたいと考えています.(4/17/2017)
AcerからWindows MR (Mixed Reality) HMDの日本発売が発表され,予約が開始されています .HPの発表を待つべきか…(5/23/2017)
Windows Mixed Reality (MR)デバイスを個人的に入手しました.Inside-out方式はセットアップが非常に楽です.(4/27/2018)
Oculus Goを個人的に入手しました.Stand alone型のデバイスは初ですが,低価格帯でのクオリティ向上など進歩が著しいことがわかります.(6/15/2018)
HTC VIVE FOCUSやOculus Questの発表や発売が予告されています.Stand alone+inside-out方式はかなりインパクトがありそうです.(10/19/2018)
HTC VIVE pro EYEが発表されています.視線追跡は,解像度やレンダリング負荷の問題を克服する決定打になりそうです.(1/10/2019)
機械系講義「研修I」で,MDシミュレーション結果を360°VR動画(Youtubeにアップロード)にする試みを行いました.本エントリーで近々情報を更新します.(1/17/2019)
Microsoft HoloLens 2が発表されました.視野角などの改良の他,視線追跡やハンドトラッキングも導入されるそうです.(2/25/2019)
Nintendo Labo VR Kitが発表されました.NintendoはSwitchを利用する方向性を打ち出しました.(3/7/2019)
Oculus Quest 2がもうすぐ発売になります.性能アップがどの程度なのか気になります.(10/9/2020)
HTC VIVE Focus 3およびVIVE Pro 2が発表されました.5K解像度(両目)や視野角の拡大など性能向上が図られています.(5/12/2021)
比較的手軽に入手可能な3DVRゴーグル
Humphrey, W., Dalke, A. and Schulten, K., "VMD - Visual Molecular Dynamics", J. Molec. Graphics, Vol. 14 (1996), pp. 33-38.
ほとんど知識がないのでご協力者や情報大募集中! If you want to join in this project, let me know!
↓