AB4 + ABDXで3Dゲームを作成中なのですが、行き詰まっています。
3D(ワールド)座標から2D(スクリーン)座標への座標変換の方法がわからずこまっています。
たとえば、画面に3Dのキャラクタが映っていて、そのキャラクタの頭上にキャラクタの名前を表示したい時などの、名前を表示する座標の算出方法がわかりません。
いろいろ調べたのですが、ABでのDirectXプログラムのサンプル、解説などしているサイトが少なく、あまり参考になりませんでした。
ワールド座標からスクリーン座標への座標変換を行う関数などありませんでしょうか?
座標変換
随分前に作ったもので、使い方はよく覚えてませんが・・・
確か、X,Y,Zが3D座標、C,D,Eが3D系をどの位置(角度)から見るか だったと思います。
勘で使ってください。すみません。
それと、遠近法を考慮せずに作ってあるのでそこらへん注意してください。
コード: 全て選択
Const PX=350
Const PY=250
Function AX(X AS Double,Y AS Double,C AS Double,D AS Double) AS Double
AX=Cos(C)*X+Cos(D)*Y+PX
End Function
Function AY(X AS Double,Y AS Double,Z AS Double,C AS Double,D AS Double,E AS Double) AS Double
AY=((Sin(C)*(-X)+Sin(D)*Y))*Sin(E)+Z*Sin(_System_PI/2-E)+PY
End Function
Function As2D(X AS Double,Y AS Double,Z AS Double,C AS Double,D AS Double,E AS Double,ByRef pnt AS POINTAPI)
pnt.x=AX(X,Y,C,D)
pnt.y=AY(X,Y,Z,C,D,E)
End Function
勘で使ってください。すみません。
それと、遠近法を考慮せずに作ってあるのでそこらへん注意してください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。