2009年06月24日

リアルタイムフォトンマッピング

こんにちは!イワサキですわーい(嬉しい顔)
梅雨雨真っ只中だというのに暑い日も多いですねぇ(むしろ蒸し暑い?)
これから徐々に暑くなってくる季節です晴れ

前回の紹介は簡単なデモでしたので今回は少し先を見据えた技術デモを公開したいと思いますパンチ
夏も近いということで少しでも涼しい気分に浸ってもらうために今回のテーマは
台風台風
です。

リアルタイムでレンダリングする場合DirectXかOpenGLの
ハードウェアアクセラレーションの恩恵を受けて描画するわけですが、
質感」を出すにはどのようにしたらよいでしょうか。
普通に画面にポリゴンを出すだけでは物足りませんよね。

今回は「」に焦点を絞って紹介します。

皆さんが普段から目にしている「」とは一体どのような見え方をしていますか?
お風呂いい気分(温泉)とかで身近に触れているものですよね。
詳しく観察すると簡単に次のような要素があることに気がつきます。

ペンゆらゆら動く(液体)
ペン透明
ペン海のように深いと色が青っぽい
ペン水面下が屈折してゆがんで見える
ペン水面下に光がゆらゆら映り込んでいる
ペン水面がきらきら反射している

GPUのプログラマブルシェーダーで上記の特徴・質感を再現してみましょう。
今回の技術デモにはこれらを実現するために次のようなものを実装してみました。

ひらめきリアルタイムフォトンマッピング(Realtime photon mapping)
ひらめきレイキャストレンダリング(Ray-cast rendering)
ひらめきリアルタイムレイトレース(Realtime ray tracing)
ひらめき水面屈折による色収差(Chromatic aberration)
ひらめきHDRレンダリング(High dynamic range rendering)
ひらめき水の透明度(Measure the clarity of the water)
ひらめきカメラ絞り羽根による光の回折現象(Diffraction of light)

この中で今回の技術デモでの特筆すべき点は「フォトンマッピング」です。
Henrik Wann Jensen氏が提唱したフォトン(光子)を実際に飛ばして密度を測定して
レンダリングするという物理現象に沿ったレンダリングをしていることが特徴です。
また、構造が非常にシンプルで、並列化・分散実行にも適しています。

フォトンマッピング―実写に迫るコンピュータグラフィックス
Henrik Wann Jensen (著), 苗村 健 (翻訳)
出版社: オーム社 (2002/07)
ISBN-10: 4274079503
ISBN-13: 978-4274079504

2009-06-24_03.jpg

このレンダリング手法では集光模様(Caustics)を忠実に再現できます。
レイトレーシングだけではこの模様を出すことは難しいですが、フォトンマッピングを
併用することで美しい模様を描き出すことが可能です。
集光模様とは何だ?という人は下記ページの写真などを参照ください。

Caustics (wikipedia)
http://en.wikipedia.org/wiki/Caustic_(optics)

今回は処理方式を限定化して高速化しています。DirectX9世代のGPUで実現可能です。
使用しているレイの本数は約26万本です。
とてもCPUではリアルタイムでは捌ききれないデータ量ですが、GPUを用いると
この膨大なデータを非常に高速に生成することが可能です。
DirectX9世代ということは現行のXbox360やPlayStation3でも実現可能な技術です。
ゲーム用CGである以上は「高速(快適)であること」「見た目が楽しいこと」が大前提ですよネ。


又、より一層屈折感を出すために屈折色収差をシミュレートしています。
「色収差」とは赤〜紫の光の波長によって屈折率が異なる現象です。

色収差(wikipedia)
http://ja.wikipedia.org/wiki/%E8%89%B2%E5%8F%8E%E5%B7%AE

【波長と屈折率の例】
2009-06-24_01.png2009-06-24_02.png

理科の教科書などでプリズムで光が七色に分解されている様子「分光現象」の写真を
見たことがある人も多いと思います。虹もこの色収差が影響しています。
デモでは屈折したときに虹色模様が出ていることが確認できます目
今回のデモではこの現象を意図的に強調して計算しています。

2009-06-24_07.jpg

安いレンズで写真撮影カメラすると写真中心から離れた周囲にこの虹色の色収差が強く出ます。
高級なレンズぴかぴか(新しい)はこの収差が少ないレンズが用いられたり、非球面レンズなどで収差補正が施されているということになります。

」ってでもあり、粒子でもあり、不思議ですよね。

技術デモは下記よりダウンロード可能です。




◎動作可能な環境
GeForce 6800シリーズ以降
Radeon X1000シリーズ以降

基本的にはシェーダーモデル3.0以降で動作します。
特殊なレンダリング手法を用いていますのでドライバの不具合などで一部動作しない環境があるかもしれません。
なるべく最新のデバイスドライバで実行してください。

2009-06-24_04.jpg

Download
HexaWater.zip (約4.17MB)

【動作確認済ハードウェア】
nVIDIA GeForce9800GT
AMD RadeonHD4350

【操作方法】
画面左クリック&ドラッグ    視点を回転
    雫を滴下
    水面の挙動をリセット
    大波を起こす

2009-06-24_05.jpg2009-06-24_06.jpg




実行できない方のためにキャプチャした動画を用意しました。
HD解像度でアップロードしていますのでPC環境のスペックによって選択してください。
リンク先でフルサイズで閲覧できます。





今回の技術デモは見た目のインパクトを出すためにビジュアル面を重視しました。
レンダリング品質を大幅に向上させるためにリアルタイムレイトレースも行なっているため
ピクセルシェーダーが大変ヘビーな実装になっています。
なるべく演算器の多い上位機種での実行をお勧めします。
今後はこのような技法がゲームCGの世界にやってきそうです!

池の底や照り返しにコースティクスが発生していることと、光の回折現象などに
注目してみてください。これだけでリアリティが増していることがわかります。

この技術デモはまだ最適化・高速化の余地はたくさん残っています。
しかもまだまだ動作が重いです。
しかし、これを実用範囲まで高速化することは可能です手(チョキ)
実はこの中で一番重たい処理は水面の描画です。
フォトンマッピングは非常に軽量な処理となっています。
実際にゲーム制作に導入する際にはもっと高速に動作させる必要がありますグッド(上向き矢印)
ここもプログラマーの腕の見せ所ですよネパンチ

ヘキサドライブでは自社内製ゲームエンジン「ヘキサエンジン」を開発しています。
最新の技術をどんどんと取り入れて共にゲーム作品を作っていきませんか?目
グラフィクスだけでなく、物理、AI、サウンドなど多岐にわたります。
企画実現のための表現力の可能性をゲームを作りながら探っていきましょう!
新卒・中途ともにご応募お待ちしています。
皆さんに会えることを心待ちにしています手(パー)ぴかぴか(新しい)ぴかぴか(新しい)ぴかぴか(新しい)


posted by 管理人 at 13:01 | Comment(0) | 研究・開発

2009年06月01日

違和感を無くす工夫

こんにちは!イワサキです。
今日から6月ですね!梅雨の季節がやってきます。カビが怖い時期ですねがく〜(落胆した顔)
しばらく技術デモの更新もなかったですので
今回は新しい3Dデモを公開してみたいと思いますexclamation×2

今日のお題は「太さをもったライン表現」です。

一昔前に「ねじれない3Dポリライン表現が使ってみたい」
とデザイナから依頼を受けたことがありました。そのときは色々大事な仕事があったため忙しくて作成するところまではいきませんでしたが、今回思い立って作ってみることにしました。

3Dポリラインとは、2次元のライン状の厚みを持ったポリゴンをカメラの方向に向くようにリアルタイムで計算して描画する手法です。
従来この手法が主流で現在でも活用されている手法です。
簡単に低負荷で3Dらしく見せるためにビルボードと同じくゲーム開発の現場では重宝されています。

実際に3Dポリラインを描画してみるといくつか問題点に気がつきます。
カメラの視線と平行な位置にラインが来たときに元々の薄いポリゴンがバレてしまって貧相な見栄えになってしまいます。
ゲーム制作では、この問題を回避するために違和感を少しでも無くそうと工夫されます。
光の筋のようなものであればグレアフィルタのようにぼんやりしたものを重ねることによって粗が目立たないようにぼかすことができます。

今回はカプセル状の厚みを持ったラインをこれとは別の方法で工夫してみたいと思います。

ダウンロードはこちら!
↓↓↓

2009-06-01.jpg


【実行ファイル】
HexaThickLine.zip (1.88MB)

【操作方法】
Zキー・・・立体描画ON/OFF

────────────────────


起動後の状態は通常の3Dポリラインの描画です。
画面中央をラインが横切るときに厚みがなくなって薄っぺらくなっているのが確認できると思います。
Zキーを押すと立体的にポリラインを描画します。
画面の外周のあたりはあまり変化はありませんが画面中央近辺の変化が大きいと思います。

もちろんこれも高速に描画するためのフェイクな方法ですが、従来のポリラインよりは見栄えのするものになっていると思います。
特にSFな世界でレーザー砲などはこのような描写を使えばより立体的に表現できますよね。

自分の中に創意工夫のアイデアがある方、現状をよりよくしてみたいと常日頃思っている方、一緒にお仕事しませんか?exclamation
ヘキサドライブはいつでもご応募お待ちしています!手(パー)


posted by 管理人 at 22:28 | Comment(0) | 研究・開発

2009年02月09日

並列コンピューティング

こんにちは、タマキです。

2008年12月にOpenCL 1.0が正式発表されました。
OpenCLとはヘテロジニアスな環境で並列プログラミングを行うためのオープンな規格

近年、コンピュータの性能向上は垂直方向よりも水平方向への動きが主になっています。
そのため、ソフトの性能向上のために処理を並列化することは必須の技術となってきています。
それはゲームといったものだけではなく、より一般的なソフトにも。。。


ということから、どれだけ簡単に対応できるのか、どれだけの向上が見込めるのかと興味がわき、昨年末に少し触ってみました。
ただし、いろいろと揃っているCUDAを利用。
※CUDAはNVIDIA GPUに特化したもの


そして計測するといえば『マンデルブロ』ということで、今回はそちらで比較してみました。

環境はMacBook。スペックは下記のとおり。
仕様
OS : Mac OS X 10.5.6
CPU : Intel Core 2 Duo 2.4GHz
Memory : 4GB
GPU : NVIDIA GeForce 9400M


結果はCPUのみと比べ、おおよそ7倍〜10倍程度の性能向上がみられました。
(CPU版はシングルスレッドのみ対応)

マンデルブロということで、並列化の恩恵が受けやすいこともあるでしょうが、まずまずな数値です。

GPUの性能が良くなれば、さらに良い結果が出るでしょう。


CUDA対応の実装部に関しても、(CUDAがC言語で記述できるため)マンデルブロのコアとなる部分はわりとそのまま利用できましたし、それに対して出た成果は満足できるものかなと思います。

用途ととしても、CGのレンダリング。動画のエンコード/デコード。暗号の符号/復号化。サーバ関係のソフトであれば、サーバ一台増やすよりもGPUの性能を上げることで、コストも抑えつつ期待の結果につなげることができるかも。など、いろいろ考えられそうです。


このOpenCLがデフォルトスタンダードとなるのか、別のものになるのかわかりませんが(OpenGLとDirectXのように)、基本的なところはあまり変わらないだろうと思います。

興味を持たれた方は触れてみてはいかがでしょうか。

posted by 管理人 at 15:47 | Comment(0) | 研究・開発

2009年01月20日

視差立体視

こんにちは!イワサキです。
今日は1月20日ということで『大寒』と呼ばれる一年で最も寒い日とされる日です雪
皆さん風邪にはご注意くださいね

今日は映像のお話!


TVテレビゲームゲームと切っても切り離せないもの、それは「テレビからの映像」。
昨今の薄型テレビの普及やハイビジョン放送によって動画映像の標準解像度も
フルHD(1920x1080)になってきました。

では次はどうなるのかというと、さらなる解像度の精細化・コントラストの向上、
応答速度の向上など進化はとどまるところを知りません。

次のブレイクスルーは何になるのか?
それは「立体映像」です。
かつてはSFの世界の中だけだった立体映像も今や実現可能な域に達しています。
そして将来には放送も立体映像化する計画もあるとのことです。

■立体映像による「立体テレビ」の放送が2025年に開始予定(GIGAZINE)
http://gigazine.net/index.php

これはなかなかワクワクする話題ですね!


PCゲームにもGPUメーカーが立体視に向けていろいろな取り組みをしています。
■NVIDIA、家庭用立体視システム「NVIDIA 3D Vision for GeForce」を発売開始(RBB TODAY)
http://www.rbbtoday.com/news/20090109/56908.html
立体視用の眼鏡眼鏡を装着して楽しむタイプですね。


平面的な映像をなぜ立体として見ることができるのでしょうか。

■ステレオグラム(Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%83%AC%E3%82%AA%E3%82%B0%E3%83%A9%E3%83%A0

人間の眼目は左右に対象に2つついています。
このそれぞれの視点から物体を見ると、目の位置が違いますので若干位置がずれて物体が見えることになります。
このずれのことを「視差」と呼びます。
視差立体視の原理はこちらのページがとてもわかりやすい図解です。
http://www.creatorslounge.com/seminar/003_2.html

つまり、見た物体の視差の度合いによって「近い」か「遠い」かを脳で認識しているということになります。

上記のステレオグラムというものがその視差を平面の絵の上で表現するというものです。


せっかくですので、それを実際に体験してみましょう。
将来ゲームが立体映像になったとき、そこにはどのような世界が広がるのでしょうか。
未来に先立って今ここで見てしまいましょう。
今回もサンプルデモを作成しました。ぴかぴか(新しい)ぴかぴか(新しい)ぴかぴか(新しい)


立体映像には特殊な設備が必要ですが、ステレオグラムであれば今の環境で実現できます。
寄り目にしながら画面を見る『交差法』という方法で立体視します。
説明は下記サイトがわかりやすいです。
http://www.stereoeye.jp/howto/cross.html

以前公開した布シミュレーションのデモを拡張して実装してみました。
さて、立体に見えますか?目

2009-01-20-1.jpg

中央にY軸を示す緑色のラインがありますが、それを目印に立体視してみてください。


もし実行できる環境のない人もこのスクリーンショットでも立体に見えますのでトライしてみてくださいわーい(嬉しい顔)

2009-01-20-2.jpg2009-01-20-3.jpg

【視差立体視の実行ファイル】
parallax.zip (1.81MB)

いかがだったでしょうか。
確実に「物体がそこにある」感が増していて説得力が増しましたよねぴかぴか(新しい)

長時間、寄り目目にしていると目が疲れますので注意してくださいね。

これから一緒に面白い事、新しいことひらめきに挑戦してみませんか?
ぜひヘキサドライブにご応募ください。mail to
http://hexadrive.jp/recruit/recruit.html

posted by 管理人 at 20:38 | Comment(0) | 研究・開発

2008年11月10日

投票とゲーム

こんにちは、ナカムラです。

アメリカ大統領選挙に決着がついてから少し時間が空いてしまいましたが、投票とゲームのことについてお話しさせて頂きます。

投票とゲームってあまり関係ないように思いますが、次のようなケースで使う事があります。
例えばAIの意志決定。
選択可能な行動の内、どれをチョイスすればいいのかを決定する為に、選択肢を候補者に見立てて、投票のような事をする場合があるのです。

具体例を挙げる前に、一般の投票方式にどんなものがあるのか、簡単に紹介してみましょう。

1単記投票方式
最もおなじみの投票方式でしょう。
学級委員の選出や、普段何気なく行う多数決など、幅広く使用されてます。
気軽に行えるのが利点ですが、必ずしも全員の意志をくみ取れているとは限らないのが欠点です。

2上位二者決選投票方式
1回目の投票での上位2者同士で決選投票を行う方式です。
オリンピックの候補地選びで採用されているので、知ってる方も多いでしょう。
1回目の投票ではトップだったのに、決選投票で負ける…なんて事も発生します。
1回目の投票で3位以下を指示していた人たちが、2回目の投票で1位を嫌った結果、起こる現象です。
言い換えれば、1回しか投票を行わない単記投票方式だと、「実は案外嫌われている」という人や意見が採用されてしまう場合があると言うことです。

3勝ち抜き決定投票方式
高校野球で行われるトーナメント戦と同じ方式です。それゆえトーナメント戦でありがちな問題をはらんでます。よく、優勝候補同士が1回戦で当たってしまい「事実上の決勝戦だ」なんて言われることがありますよね。
この方法では、候補の中にじゃんけんのような三すくみの関係があると、判断する順番によって結果が変わってしまう可能性があるのです。

4順位評点方式
候補になるモノそれぞれに点数を付けた上で採決を取り、合計得点の多いモノを採用とする方式です。
点数の付け方にバリエーションがあり(上位から1点ずつ減らして点を付ける、候補者全員に持ち点を割り振る、マイナス点を付けることを許す、など)、それ次第で結果が大きく変わります。
みんなに嫌われていない候補」が残るケースが多い投票方式です。

5総当たり決戦方式
いわゆるリーグ戦方式です。全ての候補において一対一で優劣を決めて、総合的な勝率で最終結果を判断する方法です。

参考文献 「理性の限界―不可能性・不確定性・不完全性」 高橋昌一郎 講談社


これら5種類の投票方式、どれが一番優れているのかというと…一概に決められないんです。どれも一長一短があります。
みんなに平均的に受け入れられたいモノ晴れを選出する時は、順位評点方式。
好き嫌いは激しいけど、とんがったモノぴかぴか(新しい)を選出したい時は、単記投票方式。
全てのライバルを打ち負かす強さを持ったモノパンチを選びたい時は、総当たり決戦方式で投票する…など、場合に応じて投票方式を変えるのがイイと思います。

どの投票方式がいいか、投票で決めるあせあせ(飛び散る汗)…となると投票の永久ループに陥るので、止めておきましょうたらーっ(汗)



さて、ゲーム内の投票ですが…例えば、ある落ちゲーのAIの作成方法の1つとして、ピースをどこに置けばいいのかという意志決定の際に、全ての位置、全ての方向に回転させたピースを置いた場合を比較して、どれが最善手なのかを、投票に似た処理で決定する…という方法があります。
ピースを置いた状況にポイントを付けていくのです。
どの状況に何ポイントを付けるのかは、調整次第です。
この調整によって、少しでも消すことを優先するAIや、まとめて消せるようになるまでは隙間無く積み上げる事を優先するAI、連鎖を優先するAIなどの個性を持たせることが出来ます。

つまりこのケースでは、順位評点方式の投票を行っていると言えると思います。



ちなみにヘキサドライブが出す来年用年賀状のデザインにはいくつか候補があったのですが、順位評点方式によって投票が行われました。

いつの日かこの場でお披露目できると思いますので、その時また報告させて頂きます!わーい(嬉しい顔)

posted by 管理人 at 13:41 | Comment(0) | 研究・開発

2008年10月20日

四色問題

こんにちは、ナカムラです。

四色問題というものをご存じでしょうか?
現在公開中のある映画で、キーワードの1つとして説明されているので、ご存じの方もおられるとは思いますが、簡単に説明してみます。

四色問題とは、数学界の中で提示された、難解な証明問題です。

「どんな地図も、四色で塗り分けることが可能である」という命題が正しいかどうかを検証する問題なのですが、この場合の地図とは実在の地図とは限らず、架空のものも含みますので、その境界線には無限のバリエーションがあります。

20081020_4color.png


実はこの命題、既に正しいことが証明されています。
ただ、その証明方法がいささか力業なので、人によっては「美しくない」と言う人もいます。


領域を分ける線(地図でいう国境線)のパターンには限りがあることを証明し(それでも100パターン以上!)、その全てが4色で塗り分け可能であることを、コンピュータを使って全て実際に塗ってみたアート


という証明方法です。
「コンピュータを使って実際に全パターンを試す」
という点が、力業で美しくないと言われる要因だと思いますが、ゲームプログラミングでは似たようなこと、結構やります。
膨大な作業を繰り返すというのは、コンピュータの得意技手(チョキ)ですからね。


例えばゲーム中頻繁に行われる当たり判定にしたって、(最も単純な方法では)総当たりによるチェックをしますから。


もっと単純に、
「数多く存在する点の内、指定した座標vに最も近い点を探す」
という処理ではどうでしょう?
指定された座標vと、全ての点との距離を計算し比較する、といういわゆる総当たりチェックでもいいと思います。
ただし、点の総数がある程度以下の数であるならば。
この方法ですと、点の総数に比例して検索時間が長くなってしまいますので、点の数が膨大な状況では、あまり得策ではありません。

点の存在する領域をある程度区分けしておき、予めどの点がどの領域に所属するのかを判定しておく。
こういう前準備を行っておけば、実際の検索に費やす時間は短く済みます。
どの領域に点が存在するのかを特定できれば、あとはその領域内の点に限定して検索すれば済みます。

20081020_box.png


この考え方を極限まで推し進めたのが、ボロノイ図という図を用いた手法です。
点1つ1つの「縄張り」を予め計算しておくことで、領域さえ特定すれば最近点が得られるという方法です。
実際のゲームでは、ここまで厳密に縄張りを計算することは(今のところ)無いと思います。

http://ja.wikipedia.org/wiki/%E3%83%9C%E3%83%AD%E3%83%8E%E3%82%A4%E5%9B%B3

このボロノイ図とは、計算幾何学という学問で使われる概念です。
計算幾何学とは、図形に関する処理をコンピュータで解決する上で、最も効率的な方法を探し出す学問で、1970年代頃に生まれた比較的新しい学問です。

ハードウェアの進化と共に扱うデータ量が飛躍的に増えグッド(上向き矢印)、またその精密さも問われる傾向が強くなってきてますから、今後のゲームプログラムには必要になってくるかもしれませんね。

posted by 管理人 at 10:57 | Comment(2) | 研究・開発

2008年10月16日

プロシージャル技術

こんにちは平尾です。
ネットを探していて、プログラマとして非常に興味深い記事がありました。

「CEDEC 2008 - コンピュータが知性でコンテンツを自動生成--プロシージャル技術とは」
http://journal.mycom.co.jp/articles/2008/10/08/cedec03/index.html
http://journal.mycom.co.jp/articles/2008/10/15/cedec04/index.html

CEDEC2008で講演された内容を、別の方が記事としてまとめられたものです。
前後編で2つに記事が分かれているのからも分かるように、ボリュームのある、
そして自動生成技術の最新情報がぎっしりと詰まった、とても充実している記事です。
プログラマの中には、何かといろんなことを自動的にやりたい人が多い気がするのですが、掲載されていたいろんな技術を見ていると
「こんなことまで出来るのか…!」
と驚きを隠せません。

これから先のゲーム制作において、これらの技術が大活躍する日が来るかもしれません。
未来を担うプログラマの方はぜひご一読ください!

posted by 管理人 at 16:37 | Comment(0) | 研究・開発

2008年06月20日

点光源を別の方法で描画

こんにちは!イワサキです。
梅雨雨の真っ只中という感じがしますね。沖縄ではもう梅雨が明けた晴れとか。

前回は流体シミュレーションを紹介してみましたが、
今回もデモを公開してみたいと思いますexclamation×2

今日のお題は「大量点光源ライティング」です。

エフェクト関連を担当しているデザイナから以前に
「この火花に全部点光源がついたら派手にできそう」
という話を聞いたことがあったのがきっかけです。
一見、無理無理無理!がく〜(落胆した顔)と首を横に振りそうな要望ですが、
こういう時が実はプログラマーの腕の見せ所なのです。

普通の正攻法で点光源を計算するには、光源位置や影響範囲を
設定してピクセルシェーダー内でライティングします。
しかし欠点はレジスタ数に限りがあるということと内部で動的な
forループが発生するという問題があります。
ですので、ゲームではパフォーマンスの関係上、大抵は4個程度
多くても軽量な距離減衰の光源を8個〜16個くらいに抑えて
描画するのが常套手段とされてきました。

今回は一気に2048個の光源ひらめきを置いてみました。
置き過ぎ?かな?あせあせ(飛び散る汗)
GeForce8800などのハイエンド環境であれば2万個の光源でも60fps出ていました。

20080620_01.jpg

派手派手ぴかぴかぴかぴか(新しい)ぴかぴか(新しい)ぴかぴか(新しい)になっています。
この粒子一個一個に光源が付いています。

20080620_02.jpg

アルゴリズム的には
影響範囲にだけレイトレースを実行するようにしています。
厳密には一次拡散反射(Diffuse)しか行なっていませんので
レイキャストというほうが自然でしょうか。
球体も滑らかにツルツルぴかぴか(新しい)しているのはそのためです。

今回もShaderModel3.0上でシェーダーを記述していますので
GeForce / Radeonなどの環境で実行してください。
一部3.0対応環境で動作しないご報告が来ていますので、
その場合はドライバを最新のものにしてご確認くださいネ目

ダウンロードはこちら!
↓↓↓


20080620_03.jpg




【実行ファイル】
HexaPointLight.zip (1.67MB)




────────────────────

この方式のメリットは影響範囲にのみライティングをすることができて、
何度も重ね掛けが可能(個数無制限)ということです。
もちろん個数に比例して負荷も高くなりますが、距離減衰を入れることで
負荷を軽減しています。影響範囲・距離が広くなると
負荷が高くなります。このあたりはパラメータ調整できるように
しておけば実用できそうですよね。

デメリットは頂点シェーダーよりもピクセルシェーダーの負荷が
高めになるということです。最近のUnifiedShader搭載の環境であれば
このバランシングがより適切に分散しますので
今後は使いやすくなるのではないかと思います。
リアルタイムレイトレースやGPGPUはこれからのトレンドに
なってくるかもしれない技法ですよねひらめき

デザイナーの感性を活かせるようにサポートできる土台を作成
するのもプログラマの大切な役目のひとつです。
皆が最大限の力を発揮できればきっと良い作品になっていくに
違いありません。ゲームプログラマーは一般的な情報処理や
設計能力のほかに感性を活かす職業です。

ただのプログラマではなくて、それをつかって何か面白いことを
してみたいと思う方!是非、共に作品を作っていきましょうexclamation
ヘキサドライブはいつでもご応募お待ちしています!手(パー)

posted by 管理人 at 17:18 | 研究・開発

2008年06月04日

流体シミュレーションデモ

こんにちは!イワサキです。

前回はクロスシミュレーションの実装をしてみましたが
いかがだったでしょうか。
もし好評ならシリーズ化してもいいかも!?目(笑)

今回のお題は「流体力学シミュレーション」です。
いつもよりも増量してお送りします!

流体力学とは連続体力学で流体(液体や気体)の変形や応力を
扱う分野です台風。水専門では「水力学」というそうです。

今回もデモを作ってみました。

先日のGDC2008で面白そうな記事がありまして
リアルタイムの流体を扱うライブラリが紹介されていたのがきっかけです。

■西川善司の3Dゲームファンのための
「GDC 2008最新ゲームエンジン」講座(前編)
和製CAE対応「オクターブエンジン」、
ソニー製なのにXbox 360対応「PHYRE ENGINE」、
Valve「Team Fortress 2」

http://watch.impress.co.jp/game%2Fdocs/20080228/3de.htm

ヘキサドライブでも自社のゲームエンジンにこのような流体を
扱う仕組みがあれば面白そうだなぁと思い立って
感化されて作ってみました!わーい(嬉しい顔)


以下のスクリーンショットはヘキサドライブお手製の
流体シミュレーションの画像です


2008-06-04_1.jpg

2008-06-04_2.jpg

続きを読む

posted by 管理人 at 10:00 | 研究・開発

2008年05月23日

布シミュレーションの実験

こんにちは!イワサキです。
暖かいを通り越して暑くなってきましたねー
今年の夏は去年よりも暑くなるのでしょうか!?
暑さに弱い私は伸びてしまいそうですもうやだ〜(悲しい顔)

さて、プログラムのお話。
物理シミュレーションの中でも「布」の挙動を計算します。

今回はプログラムまで作ってみました。
挙動を計算するにあたって、力積を計算する必要がありますが今回は座標更新にVelret法を用いましたパンチ
詳しくはWikipediaで。

ベレの方法(Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AC%E3%81%AE%E6%96%B9%E6%B3%95

精度はそんなに高くありませんがゲームで扱う軽量な物理シミュレーションで良く使う計算方法です。
スクリーンショットも掲載しておきます^^

c2.jpg

c1.jpg

今回のブログのためにちょこっと作ってみたのですが
実行できるサンプルプログラムを公開してみました!わーい(嬉しい顔)

【布シミュレーションの実行ファイル】
cloth.zip (1.67MB)

■操作方法■
'Z' 配置のリセット
'X' 力のかかり具合を色分けで表示
'Esc' 終了

せっかくですので擬似ではありますがHDRっぽいライトの掛け方をしてみました。
半球ライティングのカスタマイズ版です。

たまにこんな感じでデモプログラムも作成して紹介していきたいと思います。
ゲームもどんどんリアルになっていきますのでプログラマもがんばらないとぴかぴか(新しい)ぴかぴか(新しい)

posted by 管理人 at 23:54 | 研究・開発