2

OGRE で 3D 座標点の 2D スクリーン座標を取得したいと考えています。これを行うための簡単な鬼の機能はありますか?

どうもありがとう。

4

1 に答える 1

6

それを直接行うOGRE関数はないと思いますが、最小限の労力で同じ結果を得ることができます。

ワールド空間に 3D ポイントがあり、そのポイントをスクリーン空間に投影したいとします。したがって、射影行列とビュー行列の点を乗算する必要があり、結果の点を座標空間 [-1 1] から [0 1] にマッピングする必要があります。

例えば:

Vector2 GetScreenspaceCoords(const Vector3& iPoint, const Camera& iCamera)
{
    Vector3 point = iCamera.getProjectionMatrix() * (iCamera.getViewMatrix() * iPoint);

    Vector2 screenSpacePoint = Vector2::ZERO;
    screenSpacePoint.x = (point.x / 2.f) + 0.5f;
    screenSpacePoint.y = (point.y / 2.f) + 0.5f;

    return screenSpacePoint;
}

もちろん、画面サイズに対する座標が必要な場合は、ビューポートの幅と高さのポイントを掛ける必要があります。

于 2012-12-03T11:45:33.010 に答える