スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「ゼルダの伝説」のつくりかた(DirectX) ~その1~

今回はゼルダの伝説の作り方(一部)を解説しようと思います!
ゼルダの伝説シリーズは色々とあるんですが、

その中でも「時のオカリナ」を再現してみよう、かなと。

※個人的に「こうすれば、実装できるんじゃね?」と思ってるだけなので、
実際のゼルダの伝説がどういう風に実装されてるのかは不明。


で、今回 解説するのは
まことのメガネの作り方。
----------------------------------------------------------
まことのメガネというのは、真実が見えるメガネです。

例えば、目に見えていた壁が、実は存在しなかったり、
何も存在しない所に、実は刃物やトラップがあったり、

そういったものを見破るメガネなのです。
----------------------------------------------------------


で、作り方ですが、
"ステンシルテスト"を応用します。

とりあえず、ステンシルテストのおさらい。
簡単に言うと、描画領域で、部分的に描画しない部分を決めたり出来る
技術です。

【参考画像】
stencil.jpg

3Dの画像といっても、
結局描画するのは縦と横しかない640×480等のピクセル単位なので、
複雑なモデルでも、ある部分からはスパッと描画させないように指定出来る訳です。

で、具体的な作り方ですが、
オブジェクトには3種類あります。
------------------------------------------
【1】いつでも見える。
【2】普通は見えない。 ネガネだと見える。
【3】普通は見える。 ネガネだと見えない。
(本当は存在しない)
------------------------------------------

【1】はいいとして、
【2】は、透明人間みたいな物体ですね。見えないけど、存在しているもの。
【3】は、幻覚のようなものです。 見えてるけど、存在してない。

【参考画像】
stencil2.jpg
※上段が【2】、下段が【3】です。


さて、これの実装の仕方ですが、端的に言います。
ゼルダの伝説では、まことのメガネを使うと下記のように描画されるのですが、

【参考画像】
stencil3.jpg

この形にステンシルバッファを設定します。
値は、円の部分が0x05(16進数の5。)とします。(それ以外は0x00になってる。)

で、それぞれ
--------------------------------------
【1】・・・0x07では無い部分に描画。
【2】・・・0x05の部分に描画。
【3】・・・0x05では無い部分に描画。

(0x00の部分に描画、でも可。)
--------------------------------------
上記のように指定して描画させます。

【参考画像】
stencil4.jpg

ベン図のような感じですね。


で、実際に作ってみました。
実行画面はこちら↓

【参考画像】
makoto.jpg
左から順に、「通常の壁」、「実は存在しない壁」、「実は存在している壁」です。
「→」キーを押すと、まことのメガネが発動します。

【サンプル】Sample_StencilTest2.txt
スポンサーサイト

テーマ : ゲーム - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。