レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
おちゃめくらぶ掲示板
-
ついにプチコン3号の立体視表示機能が初公開
プチコン3号の目玉機能のうちの1つである立体視表示機能を使ったサンプルが初公開
されたにょ。
http://smileboom.com/special/ptcm2/html_third_qr.php
サンプルとして画面写真も公開されたけどプチコンを持ってない人でもただのmpoファイル
なので3DSがあれば見れるし、mpoに対応した立体視表示環境があれば立体視が可能になるにょ。
世界初のコンソールでZ座標指定が可能なBASICだけどさすがにコンソールだけだと寂しい
ものの飛び出ているというのが分かると思うにょ。
このサンプル画面における最も画面手前に見える部分の左右視差は14pixelなので本体の
視聴距離を30cm、両眼感覚を6.5cmと設定して逆算すると飛び出し量は64pixel(約1.2cm)
になったにょ。
試しに画面に表示された@で構成された正方形の中心部分から1.2cm上にある空中を指差して
(実際は指ではなく3DSのタッチペンのように細いものが望ましい)左右片方ずつ見てみると
両方とも画面中心から動いてないことが分かり、約1.2cmくらい飛び出していることが分かる
と思うにょ。
さて、立体視というのはどういうものか改めて書くと単純に左右の目から視差を考慮した
異なる映像を表示してそれを同時に見るだけにょ。
それを図示して説明すればこのようになるにょ。
http://twitpic.com/dtraic
どのくらい飛び出るか(引っ込むか)という距離から視差が求まり、それを元にして
画面表示すれば良いだけなので難しいことは何もないにょ。
プチコン3号ではコンソール、スプライト、GRP、BGでZ設定が可能になっているけどGRPと
BGでは面単位の単一設定となっていることが分かったにょ。
GRPで単一設定というのは残念に思う人もいるかもしれないけど3DSではGRPの機能は
ハードウェアに搭載されていないためプチコンではこれをスプライトを使って実装して
いるにょ。
そのためmkIIでは大きなスプライトを大量に表示するとGRP面が欠けることがあったにょ。
プチコン3号でも同様になっていると思われるためもしもGRP面でピクセル単位のZ設定が
可能にするためにはピクセル単位でスプライトを用意する必要がありこれは3DSの性能
では実現が不可能にょ。(Z設定込みでGPAINTを実装するなんて言うのはそもそもが
無理だし)
ただし、コンソールやスプライトにおいてはLOCATEやSPOFSでZ設定がオブジェクト単位で
可能になっているにょ。
そのため奥行きのある立体物を立体視したいという場合にはスプライトやコンソールを
段重ねで表示する必要があるにょ。
これが上記のサンプルの画面写真の原理となっているにょ。
実際にスプライトを使ったゲームにおいてもスペハリのボスキャラなどで使われている
手法なのでそれを想像してもらえたら分かりやすいにょ。
プチコン3号ならば適切なZ設定値を与えるだけで立体視が可能になるため上記の立体視の
原理の面倒くさそうな視差計算は自前で行う必要はなくすべて自動的に行ってくれるにょ。
そのため立体視対応ゲームは普通に疑似3Dゲームを作ることができる人ならば簡単に
作ることができるにょ。
疑似3Dゲームについては私のプチコン講座でも書いているのでそれを参考にして欲しいにょ。
第5回 疑似3Dゲームを作ろう(スキーゲーム編)
http://ww5.tiki.ne.jp/~ochame/petitcom/p005.htm
第6回 疑似3Dゲームを作ろう(レースゲーム編)
http://ww5.tiki.ne.jp/~ochame/petitcom/p006.htm
公式でプチコン3号の立体視サンプルが公開されたので私も対抗(?)してmkIIで立体視を
行うプログラムを作ってみたにょ。
http://twitpic.com/dtnfu7
mkIIは裸眼立体視機能を備えてないので交差法による表示を行っているにょ。
原理は上記のものと全く同じなのでリストを見たら粗方分かるのではないかと思うにょ。
分からなくても実際に実行して表示すれば一目瞭然にょ。
恐らくプチコン3号の性能ならばこれをすべてスプライト表示で行いなおかつZ方向に
ラスタースクロールしても左右2個の表示で60fpsが可能ではないかと思われるにょ。
まさにぷるんぷるんにょ!?
上記の私のテストプログラムにおいて3行目でRの値を求める式の最後に「*Z/(Z-I*3)」を
付け忘れていたにょ。
無くてもある程度の距離(Zの値)があれば問題はあまりないけど近づいた時にかなりの
差が出るためあった方がいいにょ。
Z=200くらいにすればその差は歴然にょ。(とはいえ、融合限界を大きく超えてしまうので
そんな設定にしても立体視はできないけど)
交差法ではなく平行法で見たいという人は9行目と13行目の「+」を「-」に変え、「-」を
「+」に変えればいいにょ。(変える場所は4カ所)
交差法と平行法とかよく分からないという人はこちらに練習用の画像を用意したので
これを元に練習をするといいにょ。
http://twitpic.com/dtv5w5
どちらが簡単かは人によるけど自由度の高さは交差法の方が上にょ。(交差法は自由度が
高い反面で強い寄り目を維持しなくてはならないので目の負担は非常に大きい)
というのも平行法というのは基本的に両眼の幅と同じものしか立体視できないからにょ。
両眼の幅より短いものは交差法の要領でわずかに寄り目気味にすれば見ることができる
ものの両眼より広いものは両眼とも外側を見るという日常生活ではまず行わないことを
やる必要があるため普通の人には困難にょ。
そのため大きい画像はリサイズ(Webブラウザで表示している場合は拡大率の変更)して
小さくする必要があるにょ。
プチコンmkIIで立体視させるプログラムは以前作った「3Dポリゴン立体視プログラム」が
あるにょ。
http://wiki.hosiken.jp/ptcmcon/?Toukou%2F3D%A5%DD%A5%EA%A5%B4%A5%F3%CE%A9%C2%CE%BB%EB%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0
これはすでに作っていたプチコン用ポリゴン表示プログラムを改造して立体視に対応した
だけのプログラムにょ。
つまり、オブジェクトを左右両方から見たもの2つ表示して、3Dモデルはクォクォクォールと
私の(没になった)レースゲーム用に作った自機データを収録しただけにょ。
データ形式は共通なので以前作ったニンテンドー64のロゴのポリゴンデータを立体視する
ことも可能にょ。
http://twitpic.com/dmfelb
ただし、この立体視プログラムはコンテストの締め切り直前にギリギリ作ったためあまり
正確に視差角を計算してなかったのでうまく立体視をするのは難しいかもしれないにょ。
遠近感を強調するためモデルに近づいて広角レンズで表示しているからね。
したがって、飛び出し量調整(実際は両眼の間隔調整)を上手く行うか距離の設定値を
4倍くらいに上げてスクリーン座標を計算する際に4倍くらいの大きさに拡大表示する
などの方法によって融合限界を超えないようにすれば普通に立体視が可能になるにょ。
|
|
|
掲示板管理者へ連絡
無料レンタル掲示板