NNS_G3dScrPosToWorldLine

構文

#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クリップ面上の点をワールド座標系で返します。pFarNULLの場合は、Farクリップ面上の点の計算は省略されます。NNS_G3dGlb構造体にカメラ行列と射影行列が設定されている必要があります。返り値が-1の場合でも、*pNear, *pFar には値が格納されていて、方向の目安として使用することができます。なお、投資射影の場合、*pFarの値は*pNearに比べて誤差が大きくなります。これは、Nearクリップ面よりFarクリップ面の方が大きいため、正規化スクリーン座標系の点から元の点を求める際にFar面の方がより拡大されるからです。なお、Nitro-SDKのG3X_SetHOffset関数を使用して3D面に対して水平オフセットをかけている場合は、あらかじめオフセットの分だけ引数のx座標を移動させておく必要があります。

参照

NNS_G3dLocalOriginToScrPos NNS_G3dWorldPosToScrPos

履歴

2004/11/01 初版