ポータルプロジェクション


7

承知しました。正解です。退屈していて、蒸気のようなポータルスクリプトをいじっています。

私は次のことを理解しました:

  • ミラーリングされたカメラの相対的な配置
  • ポータルのテクスチャにレンダリングします(テクスチャは反対側のカメラからのビューです)
  • ポリカリング(カメラが他のポータルの後ろにあるため、ポータルの前面の後ろにあるすべてのポリをカリングします

投影のスケーリング方法がわからないので、ポータルの背面以外はすべて無視します。説明する画像は次のとおりです。

カメラ2から見たポータル2の背面が、ポータル1の前面に表示されています。問題はスケールです。点線周辺のすべてを無視し、カム2からのビューを拡大してポータル1の前面に完全にフィットさせたい。このスケーリングの大きな問題の1つは、移動するにつれて視点が変化することです。私はこれを理解するための行列数学が得意ではありません。誰かがアイデアを持っていますか?

これを機能させるために、cam2の射影行列として設定できる行列を探しています。

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


1
あなたの図の右半分で何が起こっているのか、左半分やあなたの問題とどう関係しているのか、私にはわかりません。
doppelgreener

1
申し訳ありませんが、左はカメラの俯瞰図です。右はcam1からのビューです。青色の領域は、camal2のビューを表示するportal1のrendertextureです
ブランドン

1
私はこれを明日デモするので、自分の問題がより正確にわかるようにします。それがすべて理論段階にある間、それを
理解するのは難しいです

疑似フォームのソースコードを確認すると役立つ場合があります。( - Pseudoformはポータルとのオープンソースのゲーム/エンジンでpseudoform.org/index.php?id=media
Exilyth

その後、線形代数を取り、すべてが明確になりました。カメラ2(ダミーカム)の投影行列にスケールを適用する必要がありました。後から
考える

回答:


2

これを純粋な2D問題と考えてください。2Dレンダリングとして2つのレンダリングがあり、スケーリング、移動、投影角度の変更などを行わずに、オーバーレイを重ねるだけです。想像できる最も単純なコピー貼り付け作業を実行するだけで、完璧に適合します。

cam 2レンダリングをcam 1レンダリングのテクスチャとして使用して、これをよりシームレスな方法で実行したい場合があります。そのためには、カム2のレンダリングが、レンダリング1のカメラ角度に垂直な平面のテクスチャでなければなりません。

これであなたの質問に答えられるといいのですが、すべてが正しく注文されるようにするには、多少の手間がかかります。


右の画像をご覧ください。これがまさにcam1からのビューです。青い点線のビットは、portal1の青い領域全体に合うようにスケーリングする必要があります。ですから、技術的にはすでにコピー&ペーストされています。cam2からの残りのビューを無視するには、今すぐスケーリングする必要があります
ブランドン '

まあ、cam2はcam1と正確に同じ距離、角度、位置のポータルプレーンからである必要があり、同じ解像度でレンダリングするので、修正したと思います。いずれの場合でも、サイズ調整が機能するためには、cam2レンダリングが幅2 * [カメラまでの距離] * [カメラズーム]の長方形に適用され、正しいサイズが得られる必要があります。
aaaaaaaaaaaa

0

このシステムは不要です。ルーム(およびコンテンツ)をハードウェアでインスタンス化し、必要に応じて平行移動して回転させ、GPUにカリングを実行させます。これには、世界をシームレスにするという大きな利点があります。つまり、世界を2回レンダリングするだけでなく、効果的に世界を拡張するときに、特別にAIを動作させる必要はありません。


1
それはできません。これにより、ポータルとその位置を設定する方法にさまざまな制限が生じます。先ほど言ったように、射影行列以外はすべて実装しました。これは非常にシンプルなソリューションで、2番目のインスタンスのような制限はありません
ブランドン '

1
ちなみにポータルはレンダーテクスチャを使用しています。ポータルのアイデアの発端となった麻薬のドロップもそうです
ブランドン '

1
文字通り昨日、開発者のコ​​メント付きでポータル1をプレイした人は、レンダーテクスチャを使用していませんでした:)パフォーマンスの問題がありました。無限ポータルのフォールバックソリューションとして最後のフレームバッファーの一部を再レンダリングしますが、一般的にはネストされたジオメトリをレンダリングします。テストチャンバーレベル3と14の開発者の解説を確認し、14での動作を少し試してみてください。以前のレンダリングバージョンに延期すると、視覚的にはっきりとわかります。
ZorbaTHut
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.