#include <nnsys/g3d/util.h>
int
NNS_G3dScrPosToWorldLine(
int px,
int py,
VecFx32* pNear,
VecFx32* pFar
);
| px | スクリーン上のx座標 |
| py | スクリーン上のy座標 |
| pNear | スクリーン上の座標に対応するNearクリップ面上の点のワールド座標系での位置 |
| pFar | スクリーン上の座標に対応するFarクリップ面上の点のワールド座標系での位置 |
px, py がビューポート内ならば0が返されます。ビューポート外ならば、-1が返されます。
スクリーン上の位置に対応するNearクリップ面とFarクリップ面上の点をワールド座標系で返します。pFarがNULLの場合は、Farクリップ面上の点の計算は省略されます。NNS_G3dGlb構造体にカメラ行列と射影行列が設定されている必要があります。返り値が-1の場合でも、*pNear, *pFar には値が格納されていて、方向の目安として使用することができます。なお、投資射影の場合、*pFarの値は*pNearに比べて誤差が大きくなります。これは、Nearクリップ面よりFarクリップ面の方が大きいため、正規化スクリーン座標系の点から元の点を求める際にFar面の方がより拡大されるからです。なお、Nitro-SDKのG3X_SetHOffset関数を使用して3D面に対して水平オフセットをかけている場合は、あらかじめオフセットの分だけ引数のx座標を移動させておく必要があります。
NNS_G3dLocalOriginToScrPos NNS_G3dWorldPosToScrPos
2004/11/01 初版