English
FAQSGLプログラミング関連
戻る|   ■
FAQ/SGLプログラミング関連

その他



slColorCalcの具体的な使い方は?

Q)
slColorCalc関数の使い方をおしえてください。
また、この関数をコールしない 場合のデフォルト値はどうなっていますか。

A)
この関数は単にカラー演算コントロールレジスタにセットするデータ領域に セットするものです。

VDP2マニュアル 12.1カラー演算カラー演算コントロールレジスタ に相当するデータのセットを行っています。
この関数を呼ばない場合、カラー演算をしない設定になっています。 これは、ハードの初期状態と同じです。


slLookAt関数って、全てのマトリクスに影響を与えるの?

Q)
関数slLookAtの内部的な処理は、どの程度の負担があるのでしょうか?

A)
カレントマトリクス(slLookAtが呼ばれた時点での。もし何も行なわれて いなければ、環境マトリクス(演算のベースになるマトリクス)に対して)に、 slLookAt関数の値を掛けるだけですので処理時間としては、位置変換及び 回転変換一回分になります。

slLookAt関数は、イメージとしては、カレントマトリクスにカメラ座標分だけ、 slTranslateやslRot*などの操作を、呼出時に一回行なうと考えて頂ければ 良いと思います。


SGLで2D座標系を取得したい。

Q)
SGLチュートリアルのP.4-3に仮想3D空間座標とは別に2D座標系も保持していると 表記されていますが、2D座標系のデータは、どの様にして参照できるので しょうか?

A)
2D座標系とはVDP1のコマンドテーブルに送る座標(2次元)と思ってください。
この座標データをユーザ側から見るには、slConvert3Dto2D関数を使用して ください。

引数に、カレントマトリクスに対するローカル座標データを与えると、 2D座標系に変換した値を返します。


SGLでCDROM-XA再生を行ないたい。

Q)
SGLでCD-XAファイルを再生したいのですが、何処にもXAに関する資料が ありません。実際の所どの様にしてCDROM-XAを作成すれば良いのでしょうか?

A)
SGLには、CDROM-XAを再生するライブラリはなく、SBLのGNU C版のPCM/ADPCM 再生ライブラリを使用することになります。このライブラリのSGL上の確認を 行っています。


DGT2(PP)を使いたい。

Q)
DGT2(PP)形式のファイルフォーマットを使用して2Dスプライトを表示するには どのようにすればよいのでしょうか?

A)
DGT2のデータをSGL用のデータにコンバートする際には、SGLパッケージの中に あるDG2TXR.EXEを使用します。

このコンバータは、DGT2の全てのモードに対応していますので、 PPのフォーマットもコンバート可能です。

このツールは、SATURN¥SGL¥TOOLにあります。


ステージ毎のモデルデータはその都度読み込むようにプログラムしたい

Q)
ポリゴンを使っているゲームで、ステージ毎に異なるモデルデータを 特定のアドレスに読み込み、参照したいのですが、どのように記述したら いいのでしょうか。

A)
各ステージで使用するモデルデータ毎にファイルを用意し、オーバレイの テクニックを使用して、それぞれのステージに合わせてCDからロードすると いった方法で可能です。

別の方法では、ステージ毎に事なるデータの部分だけを別セクションにして 用意するといった方法でも可能だと思います。


影を出したい。

Q)
スポーツゲーム等で選手の影を表示する良い方法がわかりません。何か良い方法 がありましたら教えてください。

A)
選手が3Dポリゴンの場合
影専用のモデルを一つ作ります。このモデルは元のモデルと全く同じにする 必要はなく、できる限り少ないポリゴンで構いません。
次にプログラム上で元となるモデルを表示します。
同じカレントマトリクスを使って影となるモデルを表示しますが、その際 カレントマトリクスのy方向のサイズを0にします。y方向のサイズを0にする もっとも手っ取り早い方法は、モデルを表示する前に

 slScale( toFIXED( 1.0 ), toFIXED( 0.0 ), toFIXED( 1.0 ) )

を実行することです。

すると影のモデルはy軸平面に平行な影になります。もし地面がy軸に 平行でない場合、slScaleに与える成分(具体的には法線ベクトルに 絡みますが)を変更する事でそれっぽい影が出ると思います。

また、マトリクスを直接いじる方法もあります。
この場合、日が傾いて影がのびるような効果も期待できます。

【影の計算方法】

1                              0  0
slMulFX( slSin( ang ), long )  0  slMulFX( slCos( ang ), long )
0                              0  1

angの変更で影の向き
longの変更で影の長さを調整できます。


slConvert3Dto2Dの使い方が良く分かりません。

Q)
slConvert3Dto2Dで、X,Y値が大き過ぎたり、Z値が小さ過ぎたりして、 2D平面内に表示がおさまりきらない場合、その判定はどのように行ったら よいのでしょうか?
また、関数値としてZ値を返すというのはどういう事ですか?

A)
slConvert3Dto2Dは、カレントマトリクスを使ってユーザの指定した3D座標が、 2D平面のどこにあるかについて知る関数ですが、指定した3D座標が描画領域を はみだした場合の判定は、使用する解像度に合わせてユーザ側で判別します。
ただしSGL全般に言えることですが、原点が画面の中央になっていますので、 判別の際注意が必要になります。また、与える3D座標値はカレントマトリクス の示す座標空間からの相対座標となりますので注意が必要です。
また、この関数の返値として持っているZposは、通常Zソートに引っかかっているか を知るためのものです。

SGLでは、スクリーン位置をシステム変数 MsScreenDist及びSlScreenDistで管理しています。 従って、ニアクリッピングの掛かる位置を、システム変数「MsZdpsfcnt」 と合わせて使う事でどの座標が境界値になるか分かります。


戻る|   ■
FAQSGLプログラミング関連
Copyright SEGA ENTERPRISES, LTD,. 1997