透視投影マトリックスで幅と高さが2で除算されるのはなぜですか?


9

私はコンピュータグラフィックスを学ぶためにOpenGLを使用しています。射影行列を理解しようとしています。OpenGL 'Red Book'には次のものが表示されます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

幅と高さを2で割った理由がわかりません。

回答:


11

なぜなら xproj と変わらない 0width、それは異なります width2width2

重要なのは幅ではなく、最小値と最大値 xproj。なぜなら(0,0) コーナーではなくビューポートの中央にあり、最小値と最大値は幅のプラスとマイナスの半分です。


ところで、Red Bookは、一般的なグラフィックスの優れた入門書ではありません。これは技術的な標準であり、チュートリアルではありません。そのため、概念の説明は、曖昧さをなくすのに十分であり、資料を教えることを目的としいません。これは特にスキャンラインレンダリングライブラリにも関係しているため、BRDFの重要性、実際のサーフェスプロパティとの関連性、画像の実際、および多くなど、説明されていない重要な概念がたくさんあります。より高度な技術。

そして最後に、それが重要な領域でさえ-GPUを使用してレンダリングを加速する方法-それは恐ろしく時代遅れです。GLアーキテクチャは、20年前のGPUに基づいています。ハードウェアの変更に対応するために多くの機能が追加されていますが、基本的な抽象化は現在のGPUアーキテクチャを理解するための良い方法ではありません。

コンピュータグラフィックスの理論について学びたい場合は、Physical Based RenderingやComputer Graphics:Principles and Practiceなどの適切なテキスト、またはオンラインコースから始めてください。3Dアプリケーションの作成方法を学びたい場合は、まず、興味のあるアプリケーションの種類に関するチュートリアルから始めます(たとえば、ゲームの場合は、Unityチュートリアルを試してください)。


うわー、これはまさに私が探していたものです。線形代数の教科書を読み始めました...しかし、物理ベースのレンダリングではどのような数学を知る必要がありますか?
mikeglaz 2017年

2
待って、あなたは「 xproj と変わらない 0width「?
mikeglaz 2017年

openGLの場合、正規化されたデバイス座標(-1から1)に投影する必要があるため、
-Width

PBRについて別の質問をする必要がありますが、こちらが優れたリソースです。learnopengl.com
Alan Wolfe

@mikeglazよろしくお願いします。学部生の線形代数と高校の光学系を知っていれば大丈夫だと思います。まだ理解していない詳細については、適切なウィキペディアのページを読んで、理解するための基礎がすでにあります。
Dan Hulme
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.