独り言日記

独り言日記
iPhone SDK 3.2(2010/01/30)
iPhone の 3.2 開発キットのベータが配布されましたね(デベロッパとして登録された方のみ使えま
す)。
目玉は iPad シミュレータでしょうかね。といっても、iPad では iPhoneOS がそのまま動作するらし
く、iPhone/iPod touch アプリはそのまま使えるようです。
http://plusd.itmedia.co.jp/pcuser/articles/1001/29/news098.html
iPad は XGA(1024 x 768 pixel)、iPhone は 320 x 480 pixel、なので過去の資産は引き延ばすことで
対応とするみたい。
というわけで SDK 3.2 をインストール中。ライセンス上、情報は出せない気がしてますので個人
的な勉強にとどめておこうかと。しかし、時間がなくていじれてない、、、。
多角形を三角形分解する(2010/01/29)
3D の多角形を三角形に分解する、という処理は結構よく使うのですが、Shade プラグイン SDK で
は、以下のようにして分解してくることが可能です。リファレンスには書いてない使い方、とい
うことで記載。
/**
* 三角形情報を追加する(三角形に分割される)
* @param[in] vCou
頂点数
* @param[in] pIndex
頂点インデックス
* @param[in] pVertices 頂点座標
* @param[in] pUV
UV 値
*/
bool CPolygonMeshCtrl::AppendPolygon(const int vCou, int *pIndex,
vec3 *pVertices, vec2 *pUV)
{
//------------------------------------------------------//
// 多角形を三角形に分割するコールバッククラス
//
//------------------------------------------------------//
class CDividePolygon : public shade_interface::output_function_class
{
private:
CPolygonMeshCtrl *m_pPoly;
int *m_pIndex;
vec2 *m_pUV;
public:
/**
* @param[in] pPoly
呼び出しの親クラス
* @param[in] pIndex
多角形の頂点インデックス
* @param[in] pUV
多角形の頂点ごとの UV
*/
CDividePolygon(CPolygonMeshCtrl *pPoly, int *pIndex, vec2 *pUV) {
m_pPoly = pPoly;
m_pIndex = pIndex;
m_pUV
= pUV;
}
/**
* 取得した三角形情報を格納
*/
virtual void output (int i0 , int i1 , int i2 , int i3) {
int indexA[4];
vec2 uvA[4];
1
indexA[0]
indexA[1]
indexA[2]
uvA[0]
uvA[1]
uvA[2]
};
}
=
=
=
=
=
=
m_pIndex[i0];
m_pIndex[i1];
m_pIndex[i2];
m_pUV[i0];
m_pUV[i1];
m_pUV[i2];
// 三角形情報を独自メモリに追加
// indexA[] が三角形の頂点インデックス
// uvA[] が三角形の UV 値
m_pPoly->AppendTriangle(indexA, uvA);
// 多角形を三角形に分割する
CDividePolygon divPoly(this, pIndex, pUV);
m_pShade->divide_polygon(divPoly, vCou, pVertices, true);
}
return true;
AppendPolygon という関数にまとめた例。shade_interface::divide_polygon にて第一引数に分解結果
の受け取りクラスを登録、第二引数に多角形の頂点数、第三引数に頂点座標配列の先頭ポインタ、
第四引数に true を入れます。
こ れ で、 多 角 形 が 三 角 形 分 割 さ れ た と き の 頂 点 イ ン デ ッ ク ス が、
shade_interface::output_function_class の派生クラスの「output」関数にて頂点インデックスとして格
納されます。
以前、日記にて長々と多角形分解の方法を説明したりしたのですが、Shade プラグイン SDK では
その機能が存在してます。
ちょっと時間が取れてなかったのですが、隙を見つけては「ディスプレイスメントマップ」の実
験をしていたりします(といっても 1 週間以上ブランクが空きましたが (^_^;;)。どうやって実装
しようかという理論は大体固まったのですが、面の分割が結構大変になるなぁと。
仕事の都合もありどこまでできるかはちと未定ですが、作品的に表現したいのがあり、バンプ
じゃない凸凹でもっと汚れをつけたいんですわ。ということで、原点に返って何か作るために表
現として足りない部分をプログラムで補うようにしようかと思ってます(雲表現も実はそのため
に作ったというのがあります)。
しかし、Shade の画像を外部参照にしても、画像編集ソフトでレタッチしてレンダリング、では反
映されないんですね。イメージの形状情報から更新ボタンを押さないといけないです。これも
画像ファイルのタイムスタンプが変更されたら自動読み込み、とかしてほしいなぁ。プラグイン
で対応できるもんかな。これはすぐできそうなので試してみようか。
BootCamp での Windows 環境から Mac ディレクトリが見れない場合(2010/01
/22)
Mac 上で X11 を使うアプリを入れたら、Win 上から Mac のユーザディレクトリが見れなくなりま
した。調べた結果、
「/Users/ ユーザ名 /」ディレクトリ直下の「.Xauthority」をターミナルから削除
すれば認識するとのこと。
2
http://forums.macrumors.com/archive/index.php/t-775422.html
システム壊れたのかと思ってあせってしまいました。無事見ることができましたが、バッチ化し
ておかないと面倒ですね。
アバター(2010/01/21)
近所(といっても徒歩 1 時間強)に映画館があるので「アバター」の 3D 字幕のを見てきました。
ということで、交通費はタダ。最近歩いてないので運動もかねて。
ちょっと時間があったので、近くで空画像を撮ってました。今日はいろんな雲が入り組んでる空
模様でした。飛行機雲もあります。
3
雲は今後も表現したいもののために、気になって最近は外に出ると空を見上げてますわ。なんと
なくですが、場所によって雲に違いがある感じがします。大阪はもっと大粒だった感じが。もち
ろん、時期や天候によっても変わるでしょうけど。
で、アバターなんですが 3D のメガネは久々です。昔、万博に行った以来かもしれない。平日で人
が少ないかと思ったら、結構埋まってました。指定席の映画館なもんで、真ん中の席を陣取って
4
みてました。なかなかよかったです。けど、ストーリーの流れに見覚えが、、、。もしかして、もの
のけ姫か?と思って後で検索すると、案の定同じ感想の方が多いみたい (^_^;;。
しかし、3D 映像はなかなか迫力ありますね。目が疲れるかと思ったけど、そんなでもなかったで
す。で、一部の人は気になる 3D(3D 映像じゃなくて 3DCG ね)表現ですが、個人的には「おっ、
このドラゴン、SSS を見せびらかしてるな」というのと破壊表現っすかねぇ。背景の空や雲も気に
なったのですが、なんとなくベース部分は描いている(マットペイント)気がしました。実際は
どうなんでしょうね。ですが、見ている最中は微塵もそんなのを感じず、楽しめましたよ。後、車
椅子の役者さん、後半あたりに異常に細い足の表現がちらっとあったんだけど、本当に足だけや
せていたのか、CG として加工してたんだろうか。ここは妙にリアルティを感じて気になりまし
た。
映画前の予告で、アリスやってましたがこれも面白そうです。
http://www.disney.co.jp/movies/alice/index2.html
MacBook 上の SAI の挙動にて(2010/01/18)
ペイントツールの SAI を MacBook にてタブレット(BAMBOO)を使って使用していると、ライン
を引いたら数秒でスポイト発動、という現象が発生。まともに絵を描ける状態じゃなかったので
タブレットドライバを再度インストールしたり試行錯誤してました。
掲示板の以下に同じ現象が。「何故かスポイトしてしまう。」
http://www.systemax.jp/bbs/saibbs.cgi?mode=threadall&tid=2449
同じ MacBook の症状です。
で、他の常駐ソフトで怪しいのは、、、ProMouseEnabler
http://www.vector.co.jp/soft/win95/util/se256849.html
これは Mac でマウス右クリックをキーコンボで代用するやつなのですが、これを終了させると正
常動作しました。
と い う こ と で、こ れ が 原 因 の よ う で す。タ ブ レ ッ ト で 右 ク リ ッ ク は で き る わ け で す の で、
ProMouseEnabler は使用せずとも問題なさそうですね。早速、SAI の掲示板に書き込みしてこよ
うっと。、、、とコメント書いてきました。1 年以上前のもののレスなのでスレ主が見ているかどう
かは不明ですが (^_^;;
ディスプレイスメントマップ(2010/01/17)
ニコニコ動画で 2 次元が浮き出る動画があって面白かったため、プログラム実験かねて遊んでみ
ました。いわゆるディスプレイスメントマップになります。
5
以下は Shade のレンダリング画面です。プラグインで凸凹をつけてます。
左がバンプマップ、右がディスプレイスメントマップです。
初音ミク画像に凹凸をつけてみました。アゴあたりが厳しいですが (^_^;;
6
7
元の 2 次元画像にて角度がついているためか、回転させてみたら粗が見えたので一方のみの視点
から。元は四角形のみで、ミクの描かれたテクスチャ画像と高さ用のテクスチャ画像の 2 枚を与
えてます。
元画像はクリプトンさんの公式サイトの
http://www.crypton.co.jp/mp/pages/prod/vocaloid/cv01.jsp
の顔のところね。
高さマップは以下のようにしてます(SAI で描きました)。
8
これ、SAI と Shade を行き来しながらペイントしてレンダリング、を繰り返し行っていたのですが、
ディスプレイスメントマップの場合は、高さ画像を読み込むだけじゃなくて Z-Brush みたいなペ
イントしながら確認できる機能もほしいかもしれませんね。この反復による高さマップをペイ
ントする微調整が結構大変でした。
今は平面に決めうちで凸凹つける実装にしていますが、曲面のある形状のバンプをディスプレイ
スメントマップに置き換える、なんてこともできるとは思います。2 月から仕事が忙しくなるた
め今月中にこのへん実装してしまいたいですが、時間的に厳しいかな。高さ用画像を指定するイ
ンターフェイスをどうするかが難しいですが、それ以外は普通にディスプレイスメントマップ実
装はできそうではあります。
日本文学(2010/01/15)
先日東京に行ったときにちょっと時間があったため、古本屋で三島由紀夫の「仮面の告白」を買っ
てきました。美しい文章と聞いていたので読んでおきたくて。でも、この本の内容はちと過激な
ので大人向けの小説ですな。夜な夜な読んでようやく終わりました。
遠い学生時代は良さが理解できなかったのですが、今読むと情景が浮かぶように引き込まれます
ね。年齢を重ねないと理解できないこともあるなぁと。詩的な表現が多くリズム感があるのが
いいね。
文章というのは時代を感じさせないもので、かつその時代を表現しているもので、引き込まれる
とその世界を垣間見れたような錯覚が起こる気がしてます(映画一本を見終えた後のような)。
「仮面の告白」は自分が読んだ本の中で、ひさびさに余韻が残った読み物でした。ただ、普段はあ
まり本を読まないもんですのでいいものに触れてないだけですけど(苦笑)。
9
昔のように映画もテレビももちろんネットも存在していないか発達してない時代のほうが、もし
かしたら制限された中ゆえに表現力は高かったのかもしれないな、と思ったりもする今日この頃
です。といっても、そんなにうんちくたれるほど本を読んでないので、たわごとですが (^_^;;。
で、ほかの日本文学にも触れてみたくなりました。昔は読もう読もうと思って挫折したのは多々
あるので(人間失格なんて中学生あたりで読破したけどさっぱり頭に入らなかった (^_^;;)、これ
を機会に読んでみるのもいいかな。今なら理解できるかも。
そういえば本と対極ではありますが、映画のアバターも見てみたいなぁ。3D 映像のシアターがお
勧めなんですっけ。これも人によっては余韻が残るらしいですね。
景観といえば(2010/01/12)
artist side の作品見てきれいだなーと思ってて、景観といえば Vue があるじゃないかと。雲表現は
これを目標にするのがよさげですね。
http://graphic.e-frontier.co.jp/vue/
でも、どういう理論でやってるんだろう。このボリューム感だとビルボードから攻めたほうがい
いのだろうか。
Celestia(2010/01/11)
ベテルギウスのスレッド(なんだそりゃ)でこのアプリを知りました。爆発の兆しがあるそうで
すね。でも、600 光年離れているため はるか昔に実は爆発していて地球にはまだ見えてないのだ
ろうか、なんだか遠い世界の話のよう。宇宙は夢があるなぁ。
で、宇宙空間をシミュレートするオープンソースの「Celestia」。Win 版 /Mac 版、両方あります。
http://www.shatters.net/celestia/
各惑星のテクスチャが結構精密です。
10
地球からずっとカメラを下げていくと太陽系に。
11
公転や自転に加えて、月や星空も年月日と時分秒指定でシミュレートしてます。これはすごい参
考になりそうです。雲は地球の自転についてきてますね。ということで、地球から見た場合の雲
は風の影響のみ考えるとよいかな。
太陽光計算 for Shade10/11 Ver0.2.0.0(2010/01/10)
太陽光計算プラグインを更新しました。「太陽光計算」のページから Ver.0.2.0.0 をダウンロードで
きます。背景、雲の反映とアニメーション対応です。最近ずっと日記に書いていた内容が遊べる
ようになっています。
ソース付きですので、同梱の readme.html を読んだ上でご利用くださいませ。ちょっと使い方はや
やこしいかもしれません。
なお、背景色計算のための SunSky はソースをそのまま使用しているため、readme.html にてその主
12
旨を記載しています。ライセンスは個々のものに従うようにお願いいたします。
また、参考にしたサイトや文献についても readme に記載しました。SunSky のライセンスは単純
で、要約すると以下のようになります。
・ソース改変は可能
・開発者はいかなる場合でも責任を持たない
・使用したことを明記すること
よくある BSD ライセンスです。ソース公開義務はないと思いますが、私の場合は勉強用に本プラ
グインを公開しているという意味もありますのであえて全部出してます。私が記述した部分は
ご自由に改造いただいて問題ありません。
今回は Shade での背景シェーダー機能(と勝手に命名)を使うとこんなことができる、というのが
目玉になります(また解説します)。
雲は、少ない量だとあまりそれっぽくないですね。量が多いとそれなりなので、曇り空以外では
密度を高くして限りなく不鮮明にする(半透明にする)のがそれっぽくなるコツかもしれません。
続・曇り空っぽい表現(2010/01/09)
微妙な修正ですが、雲生成時のクランプでミスがあったので修正。見た目、あんまり差がないで
すがちょっとボリュームが出たかな。
耐久テストもかねて、1000 フレームをレンダリングしています(各ムービーが 33 秒)。雲自身は
完全フェイクなので、時間との関連性はなしです。ただ単に指定した方向に流しているだけ。
↓昼間の雲の流れ
↓夜明けの雲の流れ
13
雲が多い場合・アニメーションしている場合は、それっぽいのですが静止画だと単調になるのが
気にはなります。このあたりは要推敲ですが、今回はこの方法で。たぶん、ビルボードでの雲も
レパートリーとして用意したほうがよさそう。
一応、これで実装完了で、後はドキュメントを書いて公開準備に。
他のソフトでの曇表現(2010/01/08)
YouTube にて、Cloud やら raymarching やらで検索するといろいろ出てきますね。
3ds max clouds
http://www.youtube.com/watch?v=IGx529cx-1M
Cloud tutorial(3ds max)
http://www.youtube.com/watch?v=Mt8dhqXzCC4
3ds max のはビルボードを使った表現かな。
以下はリアルタイムの煙。
Real-Time Smoke Rendering Using Compensated Ray Marching - 911 Fakery Method
14
http://www.youtube.com/watch?v=fmexa7C3DUI
フォトンマッピング本の煙表現がリアルタイムとな、すげ∼。
てことで、私はもうちょっとまじめに raymarching を掘ってみたほうがよさげですね (^_^;;。これ
らは今後の課題ということで。
曇り空っぽい表現(2010/01/08)
厚みのある雲で覆っただけですが、曇り空のような表現をムービー化。
ビル群は、IMECOM さんの「ビル群自動生成スクリプト」を使わせていただきました。太陽光と
してはピーカン(死語)なので、これに曇り用のフィルタ(エフェクタ)をかけてそれっぽくす
るのがいいのかもしれません。普通はアフターエフェクトなどを使うんだと思いますが、効果の
ためのフィルタはいろいろほしいところですね。
雲は Gem5 にあった理論をさらに改良して、できるかぎり平面的に張り付いているのがばれない
ように厚みをつけています。でも、実際の計算は平面的に行ってます。
まだ表現力としては気になりますが、とりあえず雲表現としてはこれくらいで第一弾として Fix
させてまとめることにします(「太陽光計算」プラグイン for Shade、なんですが、結局雲も入れて
15
ます)。
雲の調整パラメータは結構増えてしまいまして、以下のような UI となってます。
まだ、少しインターフェイスとして整合性が取れない部分があってつめないといけません。たぶ
ん 3 連休の半ばには出せるかなぁと。
実際の表現で使う場合は、
「この位置に雲の塊がほしい」なんてことになると思いますので、現状
はあくまでもそれっぽい表現止まりであります。雲をユーザが空の半球にペイント、というよう
なインタラクティブなものができるほうが実用性が高いのかもしれませんね。
それと、風邪ひいてしまいました (^_^;;。ティッシュがあっという間に消費されてしまう∼∼。
Shade11 プラグイン SDK(2010/01/07)
Shade11 プラグイン SDK でもビルドできるように雛形プラグインを更新し整理しました。
「Shade」のページの「shade10_11_plugin_template_project.zip」にて。
16
Shade11 の SDK は以下サイトよりダウンロードできます。
http://lounge.shade-online.jp/modules/dev/
私のサイトで公開するのはしばらくは Shade10 でも動作するようにしておきたいので、Shade10 プ
ラグイン SDK にてビルドします。ですが、SDK としてはあまり大きな差はないので、Shade11 プ
ラグイン SDK でもビルドできるかと思います。
Shade11 プラグイン SDK で主な強化された点は
・フローティングウィンドウ(palette SXUL)でのテーブル機能、テキスト入力コントロー
ル
・フローティングウィンドウでの OpenGL 描画処理 (window_interface 上 ) が可能に。
・読み込みファイルダイアログでの複数ファイル選択(プラグインでは複数のファイル名を
取得できます)
・形状のバウンディングボックスの取得・設定
といったところでしょうか。1 番目のフローティングウィンドウ実装は、既存の不都合も修正さ
れているようです。Shade10.x ではモーダルダイアログ実装(dialog SXUL)のほうが表現力が高
かったのですが、Shade11 ではフローティングウィンドウ実装(palette SXUL)も強化された、と
考えるとよいかもしれません。
特に、テーブル機能は結構使えそうかと。ポリゴンメッシュの頂点座標一覧を作るとか、数値指
定で頂点座標を微妙に変更したい場合とか。CADっぽい操作を行うプラグインを作る場合に利
用できそうですね。ちなみにモーダルダイアログではリストボックスがそれに該当するのです
が一列だけなので表は作れないです。
Nexus One(2010/01/06)
Google の携帯電話「Nexus One」が発表されましたね。
http://www.itmedia.co.jp/news/articles/1001/06/news046.html
でも、既存の Android 携帯と何が違うんだろう? OS は Android なのですね。ハードも OS
(Android)
も両方押さえておこうという戦略なのかな。個人的には情報端末は携帯化(携帯電話じゃなくて
スマートフォン的な感じで)してくると思っているので、今後どうなるのか楽しみではあります。
日本のケータイがガラパゴス(世界的に孤立している)だとすると、昔の PC-98 と DOS/V のよう
な感じでいつの間にか立場が逆転していた、となるシナリオも考えられそうですね。こういう過
渡期をかいま見れるのはちょっと楽しいです。
で、iPhone SDK も勉強しなくては、、、。とりあえず、1 年分の開発ライセンスを持ってるので今年
中に掘っておかないともったいないですので。
Shade プラグインとして出来そうなこととできなさそうなこと(2010/01/05)
雲表現含めた太陽光計算プラグインのバージョンアップは、スケジュール通りいければ今週末に
17
は公開できそうな感じです。いろいろ実装していたら結構パラメータが増えてきました(汗)。
初回バージョンで実装していた太陽光の向きに加えて、太陽光の色の反映、背景描画(背景を画
像として出力する機能も含む)、雲の描画、などを入れた内容となっています。
後、メールにていただいた(プラグインに関する)質問の回答含め、現状の SDK の機能で何がで
きそうで何ができなさそうか、というのをまとめとして列挙してみようかと思います。なお、プ
ラグインとして可能か不可能かということで、苦労すればなんでもできてしまうんですが(例え
ば、レンダラ自身をフルスクラッチで書いてしまうとか)それは極論ですのでのぞいてください
(^_^;;
また、本体機能(製品付属のプラグイン含む)で実装している部分は触れずに、あくまでプラグ
イン SDK としての機能について書きます。以下は Shade9 あたりから実は変わらず使える機能
だったり。
■ディスプレイスメントマップは実装できないの?
たぶん可能。Shade9 あたりで「rendering objects 」という機能が実装されていて、これはレンダリ
ング開始時にシーン上に独自形状を作成・配置することができる機能になります。レンダリング
後には自動で削除されます。
非表示属性にした形状にて凸凹の高さマップとメッシュの解像度を指定、などしておいて、レン
ダリング時に「rendering objects」の機能にてメッシュ形状を生成してあげます。DirectX で言うジ
オメトリシェーダーと考えていただければ。
ただ、手順がややこしいので説明がないと実装は難しいかと思います。時間があればサンプルプ
ラグインを作ってみたいですが、今のところ、ちといつごろ実験できそうかの断言はできないで
す。
■ピクセルシェーダーみたいなのは扱えないの?
無理っぽい。Shade では「shader_interface」というクラスがあり、これは文字通りシェーダー機能
を提供するものです。特定の表面材質にシェーダーを割り当てることができ、レンダリング時に
「対象となる位置(ローカルかワールド座標かは未調査)」
「対象位置での法線」が取得できます。
レイシューティングでの交差位置でのオリジナル情報です。それを元にシェーディング計算し
て、色や法線を返すことが可能です。
ただし、光源を考慮した輝度計算を行う前の「拡散反射」
「光沢」などのそれぞれに割り当てるも
ので、輝度計算含めて全体を自分でカスタマイズしたい、という目的には使用できません。また、
shader_interface の関数はレンダリング中にコールバックとして呼ばれますが、そのシェーダーが
どの表面材質や形状に属するものかを取得できる関数はないようです。それぞれのマッピング
レイヤが独立してるので(その中の 1 つに shader_interface が存在する)、これらをまとめてごにょ
ごにょしたい、というのは難しそうです。
ということで、機能としてはおしいのですが一般的に使われるようなピクセルシェーダーとして
はまだ壁がありそうです。
18
ピクセルシェーダーが仮に使えたとした場合に実装できそうな機能としては、以下のものが考え
られそうです。
・頂点カラー対応
・アンビエントオクルージョン
・SSS(肌のような透けた表現)
・UV 階層は 2 階層以上持てる(というよりも自分でカスタマイズできる)
・用途に合わせた独自のトゥーン処理、Lambert/Phong などのシェーダーアルゴリズムの切
り替え。
いや∼、ピクセルシェーダーはいいことだらけですねー。ですが、これってリアルタイムの世界
(DirectX)ではもう当たり前な選択肢になってるんですよね。シェーダーの魅力はカスタマイズ
できることで、たしかにプログラム技術はいるのですが表現力が幅広い(ユーザ任せ、丸投げ)、
というのが大きな利点であると思います。
PS3 や XBOX360 のゲームにてかなりリアルなものがたくさんありますが(それがリアルタイムで
動いている)、結局はシェーダーで重ねて、レンダリング画像に後処理として効果を重ねて汚し
て、のテクニックだったりしますよね。それって、オフラインでも十分使えるんじゃないかなと。
でも、自由度が高い分、何かしらルールを設けておかないと 方言ばっかり生まれて逆にダメにな
るかなと思ったりもします。私みたいな開発主体のものだと俺ルールで作ってしまえば問題な
いのですが、それが複数あるとするとたしかに混乱するでしょうから。DirectX でのシェーダー自
身がまさにそうですよね。個々人がそれぞれシェーダーを持っているという。汎用ツール内の
シェーダーだとプログラマがメインじゃないため落としどころが難しいだろうなぁ。
■背景をカスタマイズしたい(背景のシェーダー)
エ フ ェ ク タ プ ラ グ イ ン と し て 実 装 す る こ と で 可 能 と な り ま す。
「effector_interface::supports_background_effect」
で
true
を
返
し、
「effector_interface::do_background_effect」の第二引数がワールド座標での視線方向のベクトルにな
りますので、それを元に計算を行い、第一引数の rgb_class の色を返してあげるとよいです。エ
フェクタとして機能するわけではなく、レンダリング時のレイシューティングで背景に抜けた場
合の色をその都度カスタマイズできることになりますので、GI 表現でも反映されます。
次回バージョンの「太陽光計算プラグイン」でこれを含めますのでそのときに説明入れておきま
す。
■雲海の表現や垂直方向のモクモクの霧は表現できないの?
空に雲を浮かべることは前述の背景シェーダーで可能なのは分かりますが、雲海を突き抜ける飛
行機の表現のような、手前に雲や霧を出せるのだろうか?
エフェクタプラグインとして実装することで可能となります。ただ、エフェクタなので半透明物
体の後ろには回り込めないのと反射では映り込むことができないです。また、後処理ですのでア
ンチエイリアスのあるレンダリング結果とは相性が悪くなりそうではありますね。でも、エフェ
19
クタで処理するのが速度的にも一番よいかなと。
半透明物体の後ろへの回り込みに関しては「effector_interface::do_volume_effect」で対応できるかも
しれませんが、未確認です。線形の霧ですと、エフェクタの FogPlus で表現できます。
■ image_interface で 1.0 以上の色値を保持したい(ダイナミックレンジを保持)
画像は image_interface で扱いますが、ピクセルごとの色はデフォルトでは RGBA 4 バイト / ピクセ
ル、となっています。個々の要素での 0.0f ∼ 1.0f の数値指定は、0 ∼ 255 で保持されることになり
ます。ですので、1.0 以上の値は保持できません。
「shade_interface::create_image_interface」の第二引数の depth にて 64 または 128 を指定することで、
1.0 以上の色を保持できます。独自に生成した画像にて hdr 出力を行いたい場合には、第二引数を
64 とするとよいです。ただし、画像サイズ分 x depth のメモリを消費しますので、使うときだけ
depth 指定を行うほうが無難かと思います。
SXUL を使用すると、UI に関しては結構なことができますので(OpenGL で独自描画領域を設ける
ことも可能ですし)例えば ポリゴンモデラーを乗っけてしまう、というのも現状の機能でできて
しまいます。アプリ 1 本を作るくらい大掛かりですが (^_^;;。
構造の問題(1 形状に複数表面材質を割当られない、UV 層が 2 つまでしか持てないなど)や SDK
自身が複雑だったりという問題もありますが、それをのぞけば私としては「ピクセルシェーダー」
があれば後は SDK としては特になんでもできる環境は整うかなと思ったりもしてます。
アニメーション機能は fbx SDK を使ってボーンシステムを組んで入れ変えてしまう、ということ
もできると思いますし(ただし、現在は Mac 64bit 版の fbx SDK はないみたいですね)。
ただ、プラグインが作成できないとこのあたりの体感はまず無理ですので、いじれる人ががん
ばって形にするか(汗)、本体の見える機能としての底上げがまず先かもしれませんね。というの
がプラグイン開発サイドから見た所感になります。幸い、今は過去ほど SDK がダイナミックに変
わって互換性が失われるということも少なくなりましたので、開発としては材料は整いつつある
かなと。
鷲宮神社(2010/01/05)
埼玉県民(でも転籍して半年くらいですが)としては一度は行っておきたいということで、今年
の初詣は「鷲宮神社」に行ってきました。三が日はずらして本日なので、人は少なくてすぐにお
参りできました。でも、夜店あり巫女さんあり、祈祷の神主さん(?)もいて、にぎわってまし
た。
20
21
鷲宮町は今年の 3 月で久喜市に合併されるとのことで、町の名前としてはもう消えてしまうそう
です。鷲宮神社自身の名前はさすがに残るでしょうけど、、、。
で、ここは数年前に放映されたアニメ「らき☆すた」の舞台になってるというのはご存知のとお
り(埼玉県発行のパンフにも載ってます)。アニメで町おこしに成功した数少ない例ということ
で一度見てみたかったのもありますが、周りの店舗で らき☆すた の旗が立っていたり、グッズを
売ってるところがあったりしました。繁盛してましたよ。
また、神社に奉納されている絵馬は半分くらい絵付きでした。らき☆すたはもちろん、ドラゴン
ボールとスラムダンクのイラストを描いたのは確認できました。しかし、みなさんうまいです
ね。願掛けの絵馬ですので写真を撮るのは控えました。
以下サイトに絵馬の写真がありますが、2010/01/05 段階でこれよりも数は増えてます。
http://bizmakoto.jp/makoto/articles/1001/01/news005.html
上記サイトの警察の方(?)が描いた絵馬がなかなかうまいと個人的には思いました (^_^;;。しか
し、警官が萌え絵馬を(しかもうまい)、というのがなんともシュールで好きだなぁ。
地方から上京した方で、年末のコミケが終わってからそのまま元旦は鷲宮神社で参拝される方も
いらっしゃるようで、参拝客数は年々伸びているとのこと。以下の記事によると、
http://mainichi.jp/enta/mantan/graph/anime/20100105/
22
今年も記録更新したみたい。
アニメは抜きにしても、由緒ある神社で景色もなかなか趣がありますので、神社含めた昔ながら
の建築や景色が好きな方はいいスポットかもしれません。
おみくじは大吉でした。ということで、今年もいい年でありますように。
現在の雲実装(2010/01/02)
視点中心のベクトルを地球中心の半球上のベクトルに変換し、さらに天空の平面にマップしてま
す(半球上のベクトルのままだと、極の中心部分で集中線が出て汚くなるため)。
雲の密度をかなり高くしてますので、ほとんど雲で覆われた状態です。12/20 09:00 ∼ 19:00 の東
京の緯度経度を与えています。
動画にするとこんな感じ。
↓視点が雑な動きですが、空を見上げたところ
実際に冬場の雲を観察した感じだと、空を見上げると真上ほどそんなに雲はなく地表に平行な水
23
平方向に行くにしたがって雲が増えてますね。
後、太陽が雲で隠れる場合は実際の世界では太陽をさえぎる雲の自己影が濃くなっていたのです
が、上記では光の明るさにて雲自身が飛んでしまってます。これは、擬似的なボリュームレンダ
リングをしているため、厚みが足りないのかもしれません(雲の濃度計算はたった 1 面で行って
ますので)。
Gems5 のデモムービーでも同様に 太陽の手前の雲は消えてしまってたのですが、これは別な方法
(たとえばビルボードの重ね合わせなど)にしたほうがリアルになりそう。
あけましておめでとうございます(2010/01/02)
あけましておめでとうございます。
Wiki での日記も早 6 ∼ 7 年、古いホームページも含めれば 10 年以上日記を書き続けたわけですが
(プログラムはすでに二十うん年やってるか、、、年をとったもんだ、、)、これからもこのような適
当な感じで進めていければと考えています。天邪鬼なもんで意地でもブログには移行しません
(^_^;;。Wiki で日記、を貫き通します。
しかし、ホームページという言葉もあまり使わなくなりましたねぇ。今はブログや Twitter が主流
かな。Twitter は興味あるんだけど、mixi で同じような機能があってそれを使ってるので事足りて
たりします (^_^;;。今年始めに鳩山さんが Twitter 始めましたね。
で、何事も継続するには力を入れずにゆるくやることが大切かと思っています。誰かが言ってい
たのですが、義務化したら長続きしない というのは私にはちょうど当てはまるなぁと。
雲プラグインのほうはまだまだ表現力が気になるため、試行錯誤中です。Gems5 のデモムービー
は結構ボリューム感のある表現ができていたのですが、説明文のまま作るとどうも平面的になっ
てしまいます。
雲のアルゴリズムについての基本的なことは以下サイトが役に立ちます。
http://freespace.virgin.net/hugo.elias/models/m_clouds.htm
ですが、この先のリンクがことごとくリンク切れですね (^_^;;
今年の正月は結局このプラグイン開発で費やしてしまいました。年始めはこれを公開したいな
と(ソースごと)。ということで、今年もよろしくお願いいたします。
24