POV-Rayを用いた,Computer Graphics 表示 2020年8月10日
1.Chroma Depth 3D Glasses で観る立体震源地図
震源地図を3Dで作りたいという希望が随分前からあって(実は私が最初にBASICでプログラミングを始めたのはこれが動機です),様々な試行版を作ってきました.そのうちまずまずうまく行ったと思われるのがこの3D震源地図です.
拙作サイトに地図の画像をアップしています.
http://www.yossi-okamoto.net/Contents/Seismic_Maps.html
この地図はそのままでも若干奥行きが感じれますが,米国特許のメガネ(Chroma Depth 3D Glasses)を用いると,見事な立体感が浮かびあがります.授業や教員研修で使っていますが,皆さん本当に驚かれます.
<3D眼鏡の入手>
この眼鏡はよくある,青赤メガネや偏光メガネとは全くちがう原理で立体視を行います.
詳細は下記文献や私の発表をごらんください.
メガネの入手先は下記です.
https://the3dmarket.com/collections/chromadepth/products/chromadepth-standard
メガネは何種類のあるので,かならず3D ChromaDepth® glasses の standard を選んでください.筆者はいつもこの会社で100本単位で買っていました.米国から日本までのshipping cost(送料)をメールであらかじめ問い合わせます.
送料を入れて,1本100円程度です.Fedexの国際宅急便で1週間から10日程度で到着します.
最近は国内にも幾つか代理店があるようです.多少高いですが.またAmazonでも買えるようです(2020年8月上旬現在は品切れ中).
<震源地図の印刷>
また,印刷はレーザープリンタではなく,大型のインクジェットプリンタがおすすめです.学会ポスターなどを印刷するやつです.A0版などで印刷すると迫力が違います(もし大きな画像が必要ならメールをください).最低でもA3サイズがおすすめです.
ただし,黒インクを多量に使いますのでランニングコストはかかりますが.ちなみにこのメガネは背景が黒指定です.ほかの色にすると立体感がスポイルされます.そのあたりは特許の壁で製作企業も公開していません.
<参考文献など>
唯一の科学的文献は以下のものです.
Christian Ucke(1998):”3-D Vision with ChromaDepth Glasses” published in
the proceedings of the ICPE/GIREP-conference ‘Hands-On Experiments in
Physics Education’ Augus 23 - 28, 371-374.
https://www.researchgate.net/publication/239327826_3-D_Vision_with_ChromaDepth_Glasses よりダウンロードできます.
なお著者のChristian Ucke氏は私の下記の学会発表に際し,上記文献の内容を引用することを,快諾していただきました.また眼鏡の詳細についても議論していただきました.
私の発表文献は学会発表のものが下記です.
Yoshio Okamoto: Seismicity Maps for “Chroma Depth 3D Glasses”using “The Generic Mapping Tools”,33rd IGC Oslo abstract CDROM, 2008
Yoshio Okamoto:New 3D seismicity maps using chromo-stereoscopy with two alternative freewares. 2011 AGU Fall Meeting, Abstract
日本語バージョンは
岡本義雄:Chroma Depth 3D眼鏡で視る「2011年東北地方太平洋沖地震」(POV-Rayバージョン),日本地学教育学会広島大会講演予稿集,2011
です.
きちんとした論文は上記の前後に投稿したのですが,和文の方は東北地震のゴタゴタで2〜3年放りっぱなしにされて,あげくに大幅修正の要求.英語の方はそ
れほど時間がかからなかったものの.こちらもMajor
revisionという結果でどちらも,仕事が忙しくなったりで,修正する気が失せてしまいそのままになっています.英文の方だけでもそのうちに何とか出
版に漕ぎ着けたいと思っているのですが(英文の方はわざわざ編集長が筆者の拙い英語を添削してくれて,修正例まで添付していただいたのでしたが).
<POV-Rayでの作成法について>
当時使っていたPOV-Rayでコンパイルするシーンファイルの簡単な例を添付します.何かの参考に(個々のコマンドの意味はPOV-Rayの参考書でお調べください).
sphere{<lon-139,lat-37.5,dep/50>,mg*mg*0.0002
の部分でMの大きさに応じた球体の半径を
pigment{color rgb<0,3.2*pow(dep/dpmx,2)-6.8*(dep/dpmx)+3.6,-4.8*pow(dep/dpmx,2)+9.2*(dep/dpmx)-3.4>}
のコマンドが,震源の深さに応じた,球体の色を決定しています.この色がレインボーカラーとなり,3Dメガネをかけると色に応じて立体的に見えます.
この場合hinet.csv
がデータファイルですが,震源の北緯,東経,深さ,Mをそれぞれコンマ区切りのテキストファイルで与えます.上記アップした画像のものは,震源数が数10
万個に及び,例トレーイングはその震源1個1個に光を当てる計算をするために,膨大な時間がかかります.夜中に計算を始めて,翌朝に回収するということをよくしていました.
#version 3.5
// PDE Eq. data display
// Y.Okamoto 25.Apr.2005-
#include "colors.inc"
#include "shapes.inc"
#declare dpmx=20
camera {
location <0.0, 200,-100.0>
direction <0.0, 0.0, 3>
angle 0.2
up <0.0, 1, 0.0>
right <4/3, 0.0, 0.0>
look_at <0, 0, 0>
}
light_source { <-300, 200, 200> color White }
light_source { <300, 400, 400> color White }
#fopen data "hinet.csv" read
#while (defined(data))
#read(data,d1,d2,d3,d4,d5,d6,lat,lon,dep,mg)
object{
sphere{<lon-139,lat-37.5,dep/50>,mg*mg*0.0002
#switch(dep/dpmx)
#range(1.0,100.0)
pigment{color rgb<0,0,1>}
#break
#range(0.75,1.00)
pigment{color rgb<0,3.2*pow(dep/dpmx,2)-6.8*(dep/dpmx)+3.6,-4.8*pow(dep/dpmx,2)+9.2*(dep/dpmx)-3.4>}
#break
#range(0.5,0.75)
pigment{color
rgb<-2.13*pow(dep/dpmx/0.9,4)-1.07*pow(dep/dpmx/0.9,3)+0.133*pow(dep/dpmx/0.9,2)+0.0667*(dep/dpmx/0.9)+1.0,3.2*pow(dep/dpmx,2)-6.8*(dep/dpmx)+3.6,-4.8*pow(dep/dpmx,2)+9.2*(dep/dpmx)-3.4>}
#break
#else
pigment{color
rgb<-2.13*pow(dep/dpmx/0.9,4)-1.07*pow(dep/dpmx/0.9,3)+0.133*pow(dep/dpmx/0.9,2)+0.0667*(dep/dpmx/0.9)+1.0,1.6*pow(dep/dpmx,2)+1.2*(dep/dpmx),0>}
#end
}
}
#end
2.津波3DCG表示 暫定版(今古いHDDから発掘中です)
初期はワイヤーフレームなどを用いていたのですが,そのうちPOV-Rayと
いうフリーのレイトレーシングソフトを知り,これを用いました.
ただ海底地形を波の波高データに重ねて,水面を透明処理して表すのには苦労しました.当時あったPOV-Rayの参考書をだされていた小室さんと
いう方に
小室 日出樹
(著)
直接メールを送って教えていただいた方法です.POV-Rayのコマンドのうち,height fieldというのを使う方法です.
水深と波高の格子データでそれぞれ,z軸つまり,上下方向の高さを白黒濃淡で表示した.pgmファイルという白黒濃淡の画像を作ります(下図参
照,下図は海底地形を示す).これをベースに色や屈折率,散乱などの各パラメータ処理をして3次元のCG処理をします.
詳しくはまたいずれ公開します(というか当時の資料が行方不明で備忘録をメモっていないのです).
これで素晴らしく美しいCG画像が作れます.波高データは時間とともに変化しますから,画像を時間順にどんどん作って行って,最後にそれを動画に
まとめるわけです.
今であれば様々な動画作成ソフトがありますが,当時私が使っていたのは,画像ファイル(ppm形式)を動画ファイル(.fli形式)にまとめる
ppm2fliというUNIXベースのコマンドでした.今なら信じられないですが,当時はこういった一つ一つの処理が,最初から試行の連続でし
た.やがて
専門家も同様の手法で透明な波高処理をするようになったようですが,私の手法は結構時代を先んじていたと自負しています.
スマトラ津波の動画は右のリンクをどうぞ. 2006年スマトラ津波動画.
下記にスマトラ津波を描く際に用いた,海底地形のpgmファイルを示します(pgmファイルは直接ブラウザで再生できないのでpngファイルに換
えてあります).何となく海底のイメージがわくと思います.
上記津波シミュレーションの海底地形として下記pgmファイルが用いられています.波の波高の格子数値データと海底の格子水深データを重ねてレンダリング(レイトレーシング処理)しています.
なお,このあたりの処理の詳細について,当時の備忘録で唯一見つけたのが下記です.
okushiri.html
tsunami_sim_reminder.html
これをみるとPOV-Rayで描く画像はtga形式という画像でこれをppmに直しさらに動画になおしているようです.
元のレンダリングに用いる水深や波高のpgmファイルを作成するソフトはc言語で書いていました.
次のプログラムです.
bt-pgm.c
このpgm画像を3次元レンダリングに用いる手法はその後,地震波動伝播などの画像処理にも用いています.とても便利な手法で同様のことを試され
る方にはおすすめです.
Copyright (c) Yoshio Okamoto 2020, all
rights reserved.