プチコン3号(仮称) ポリゴン仕様をチョット考えてみた | GRSのブログ

GRSのブログ

スペハリ / プチコンmkII

プチコン3号(仮称) ポリゴン仕様をチョット考えてみた


゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚
3Dを表現する一手法がポリゴンなのですが、何となく解りやすいかなと思い
3D表現を安直にポリゴンと称しています。 (;´▽`A`` よけい紛らわしい?
Three
Dimension(三次元) なのでPOSETよりTDSETの方が正しいと思います
(直感的に3DSETと書きたいのですが関数名の先頭が数字はNGなので・・・)

修正したり削除もあれなんでそのままにしておきます。  2013/09/24
゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚

■ポリゴン


・POSET      管理番号,ポリゴン番号,パレット,優先順位
・POHOME   管理番号,ポリゴン番号,X,Y,Z
・POOFS     管理番号,X座標,Y座標,Z座標[,補間時間]
・POANGLE 管理番号,XY面角度,YZ面角度[,補間時間,変化方向,補間時間,変化方向]
・POSCALE 管理番号,スケール[,補間時間]
・・・等々、基本的にスプライトがZ軸方向に厚みをもたした立方体を制御する感じ
Z系のパラメータを 0 にすると従来の命令と同じになるので簡単
ポリゴンって言ってるけどマッチ箱にテクスチャーを貼った物と考えれば
理解しやすいと思います。

概念を簡単に説明すると
マリオカートを想像してください
大きな箱の底にコースを書きます
ここに消しゴムで作った複数の車を置きます(POOFS)
レースを実行するには車を少しずつ移動させるだけです
コーナーにさしかかると車の向きを変えます(POANGLE)
これを繰り返せば真上から見たマリオカートが出来ます
これだったら従来のスプライトで全く同じ事が出来ます
でも、これでは全く3Dではないです
そこで、箱の側面に四角い穴を開けてのぞき込みます
そうすると奥の方の車は小さく見えて手前の車は大きく見えるので
観客席から見るレースっぽく見えます。これが後で説明するカメラ機能です
更に自分の車の後方にカメラ位置を指定すればマリオカートが
再現されます。更に追尾指定すれば車を移動させるだけで簡単に
マリオカートが作れてしまいます。
3Dを2D変換するのは行列演算を知らないと大変難しいの・・・
これをBASICで書くと恐ろしいほど遅くなるので使い物になりません・・・


これならプチコンっぽく楽に3Dが使えるんじゃ~ないかなと思う


■カメラ

考え方は3D空間をどの様に見るかの指定です。
難しい行列演算を理解しないお手軽命令かな~

カメラ設置位置 CameraPosisionRoll

・CPR X1,Y1,Z1 ,X2,Y2,Z2 [,R,補間時間]

X1,Y1,Z1    :カメラの位置
X2,Y2,Z2    :カメラの注目点
R            :カメラ視線軸の回転

X1系座標を車の先頭にしてX2系座標を車の後方チョット上に指定するだけで
3Dカーレースが簡単に表示できる


カメラ設置追尾 CameraPosisionHollow

・CPH ポリゴン番号,X1,Y1,Z1 ,X2,Y2,Z2 [,補間時間]

3Dカーレースで自分の車にセットすれば車を移動させれば
勝手に追尾する命令
補間時間はコーナーを曲がるとき追跡が少し遅れるので
リアルっぽい表現が期待できそう


カメラ方向 CameraPosisionPan

・CPP X2,Y2,Z2 ,V,H,Z [,R,補間時間,R,補間時間,R,補間時間]

X2,Y2,Z2    :カメラの注目点
V,H,Z        :X軸角度,Y軸角度,Z軸角度
R            :カメラ視線軸の回転


カメラ表示範囲

・POCLIP X1,Y1,Z1 ,X2,Y2,Z2

X1,Y1,Z1    :カメラ視線軸開始点
X2,Y2,Z2    :カメラ視線軸終了点

ポリゴンの表示範囲を調整することによって処理負担軽減
見せたくない位置にポリゴンを事前配置できる


カメラ空気感(一般的に何て言うのかな?)

・POFOG X2,Y2,Z2 [,輝度,色]

X2,Y2,Z2    :カメラの注目点

簡単に言うと奥行きに対するαブレンド
奥のポリゴンを赤っぽく表示できれば夕焼けっぽく見える
カメラ表示範囲と似てるけど格好いいかなと思っただけ


■ポリゴン定義

最大の難関なんですが・・・

一番簡単なのがサイコロを作って6面をテクスチャーで貼る
仕様なら楽ちんだけど・・・全く面白みがない。

狭い画面でモデリングするのは至難の業なので、DOGA-L1の様に
プリセットされたパーツを配置して一つのオブジェとして定義するのが
限界っぽい。

ならば、小さいポリゴンをたくさん作って合体することで一つの
オブジェ(ポリゴン番号)を作成するツールを用意してくれたら
比較的簡単にいけそう。(構造体の仕様を公開してくれれば誰かが
ツールを作成してくれるだろうし・・・前途は明るいかも・・・)


■おまけ


ポリゴンと直接関係しないですが、GLINE系のグラフィック命令も
Z軸座標指定して3D空間に描写できれば楽しそう。

最近のハードウェア仕様は全く知らないんだけど、
(知ってるのは88mkIIまで・・・大昔じゃん・・・)
ちょっと使える3Dモデリングツールと
大昔遊んだ疑似ではない3Dゲームから
今時のゲーム専用機
(PS以降)ならこれ位の機能は楽勝~と思ってます。
3DSなら曲がりなりにもGPUを搭載してるんだから
APIを叩くだけで実現できる仕様規模だと勝手に妄想~

今時のゲーム機ってスプライトって使ってるの?
平面ポリゴンにテクスチャー貼るだけで
使いやすいスプライトに進化してると思ったんだけど・・・
拡大・縮小・変形・回転等々制限が緩和されてると思ってた

楽しみだ、プチコン3号(仮称)

もっと関係ないけど、3次元って座標軸(?)が3コあるからで
4次元は座標軸が4コになるそうです。
昔のSFでは3次元に時間という概念が追加されるのが
4次元って言ってたけど嘘だったんだ~
POOFSとPOANGLEを使うと5次元って事になるのかな?
難しくってよく解りません・・・(間違ってたら御免なさい)