問題タブ [3dcamera]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - いくつかの点が与えられた 3D カメラ位置
へよ、
私は現在、カメラを動かさずにキャラクターのフルモーションが見えるようにカメラを配置する必要があるプロジェクトに取り組んでいます。キャラクターが開始する位置と、キャラクターが 3 つの方向 (X、Y、Z) に移動する最大距離があります。また、視野 (90 度) もあります。
完全な動きを見るためにカメラを動かす必要がないように、カメラをどこに配置する必要があるかを判断する方程式はありますか?
注: これは OpenGL を使用しています。
明確化: カメラは、動いているキャラクターの上ではなく、「正面」にある必要があります。
また、地面に沿って移動します。
opengl - これによりジンバルロックが発生しますか?
ワールド座標に5ポイントの非常にシンプルな3Dシーンを作成しています。シーンをナビゲートしたいので、UPベクトルとOUTベクトルの両方を使用してカメラを定義しています。この情報を使用して、すべてのフレームで回転行列を生成します。これをベクトルに適用して、カメラの座標を取得します。
問題は、この方法を使用した問題としてジンバルロックについて読んだことがありますが、この場合は発生しますか?
すべてのフレームで回転行列を生成しており、累積的に回転していないことに注意してください。では、この状況でロックが発生する可能性はありますか?その場合、(UPおよびOUTベクトルから)安全に回転を適用するために何を提案しますか?
ありがとうございました
3d - 既知の 3 点からカメラの位置を特定する
私はここにいるのは初めてです - だから私が偽物を作ったら我慢してください!
私の質問は、3 つ (またはそれ以上) の既知の 3D ポイントがそのカメラから見た画像のどこにあるかに基づいて、カメラの 3D 位置と向きを決定するための優れたアルゴリズムはありますか?
私の計算では、6つの未知数を持つ6つの方程式に問題が生じますが、一般的な解を探していますが、方程式は複雑で三角関数です。
どんなアイデアでもありがたく受け取りました!
乾杯、
マイク
java - OpenGL:自分のカメラを作成する
3D空間を移動するカメラを作成しようとしていますが、セットアップに問題があります。私はこれをJavaで行っていますが、gluPerspectiveとgluLookAtを一緒に使用すると、競合が発生するようです(画面が狂ったようにちらつき始めます)。
gluPerspectiveは次のように設定されます。
次に、目の座標、前方および上方のベクトル( http://people.freedesktop.org/~idr/glu3/form_4.png )を使用してカメラマトリックスを作成します(カメラのコードが正しいと仮定します。
最後に、私が持っているものを描く前に:
次に、描画ルーチンを呼び出します(glRotatefおよびglTranslatefを呼び出すことにより、独自に変換/回転を実行します)。
glMultMatrixfを呼び出さないと、カメラは画面の中央に表示する必要のあるアイテムを表示します。ただし、glMulMatrixfを使用すると、画面が真っ暗になります。代わりにglLoadMatrixfを使用してみましたが、どちらも機能しませんでした。私は何か間違ったことをしていますか?私は何かを場違いにしていますか?そうでない場合、これはそれがどのように行われるべきかを私に知らせてください、そして私は衝突を引き起こしているかもしれないカメラコードのいくつかを投稿します。
編集:これがカメラマトリックス作成コードです:
エラーがこのコードのどこかにあると思っています。そうでない場合は、数学関数を見て何が起こっているのかを確認します。
EDIT2:少なくとも最初のベクトル(eye、centre、up)は正しく、カメラを本来あるべき場所に配置します(gluLookAtで動作しましたが、ちらつきの問題がありました)。
3d - プレイヤーの相対位置を AGAL に正確に渡す
顔の法線がプレーヤーの「カメラ」の方向に対して垂直である 0 にフェードするフラグメント シェーダーを開発しようとしています。(これは球形の惑星の大気のためのものです。私はそれらを外側の範囲でフェードさせたいと思っています)。
プレーヤーが常に「ユニバース位置」0、0、0 にあり、すべてのオブジェクトの transform.matrix3D がプレーヤーの移動に合わせて変換されるように、ゲームをセットアップしました。
複数のシェーダーが正常に動作していることを指摘しておく必要があります。一部のシェーダーには、テクスチャの混合、2 つのモデル間の補間、スペキュラー シェーディングが含まれます。しかし、この問題は私を打ち負かしました。
私は、フラグメントシェーダーがプレイヤーへの方向を知る必要があると考えていました (現在の面の法線とプレイヤーの方向との間の積をドット化できるようにするため)。ただし、モデルの「現在の」頂点位置 (つまり、シェーダーが現在描画している頂点出力位置) を逆プレイヤー カメラ方向に追加する必要もあります。そうすれば、そのモデル サーフェスの位置からカメラへの方向が正しくなります。
まあ、どうやらそうではありません。(私が何をしてきたかを説明することはできますが、人々がこの質問をすでに無視しているのを感じることができます...). モデルの頂点位置がモデルの中心位置から「オフセット」されているという事実も含める必要がある(と思う)ことを考えると、プレーヤーへの方向を正しく計算する方法を誰か教えてもらえますか?これは私の頭をやっています!
ありがとう。
編集
関連する AS3 コードとそれに続く AGAL は次のとおりです。
頂点シェーダーで:
次に、フラグメント シェーダーで次のようにします。
しかし、これはすべて、惑星に対する位置に応じて、大気の半分が描かれたように見える奇妙なレンダリング動作を引き起こしています. 困惑。どんな助けでも大歓迎です。
algorithm - モーションから構造化、与えられた 2D 画像ポイントの対応関係から 3D ポイント クラウドを再構築
使用事例
- 物体はその中心をさまざまな速度で回転しています
- 固定カメラがオブジェクトを見ている
- 与えられた 2D イメージ ポイントの対応関係から 3D ポイント クラウドを再構築します
- オブジェクトが回転すると、その異なる部分がカメラに表示されるため、異なる点と対応が検出されます。
シーン
a. N 画像
b. N-1 画像ペア
c.N-1 2D Point 対応 ( 2D Points 配列 2 つ )
実装
(N-1) 個の 2D ポイント対応のそれぞれについて
- カメラ相対ポーズの計算
- 三角測量して 3D ポイントを作成します
- 2 つの 3D ポイント配列ごとに、[c] で与えられた 2D 対応を使用して対応を導出します。
- 3D 対応派生 @ [3] を使用して、オブジェクトの 3D ポイントのそれぞれのトラックを導き出し、オブジェクト ポイント/頂点のそれぞれに対して 1 つのトラックを生成します。
結果:
(N–2) 3D ポイント配列、コレスポンデンス、カメラ ポーズ、およびトラック (オブジェクト ポイントごとに 1 つのトラック)
問題を解決するために考えられるアプローチ:
三角測量の結果が一定の縮尺まで正確であることを前提として、点群を計算します。
A. 三角測量の結果とカメラ相対移動のそれぞれは
、非同次座標で表されます (各結果は異なるスケールを持ちます)。
B. オブジェクト構造が固体であり、変化しないという仮定の下では、
各 3D ポイントからその中心までの距離は、すべてのカメラ ポーズで同じである必要があります。
C. [B] を念頭に置いて、[A] と Cameras Translations のすべての三角測量 3D ポイントを
同次座標系に変換できます。
D. カメラ ポーズの 1 つを選択し、各トラックの最初のポイントを変換します (@ [4] で定義)。
その Camera Pose (蓄積された Camera Pose の逆数による Transform
) に、その結果、期待されるポイントができました。
上記は、2D ポイント対応からポイント クラウドを生成する正しいアプローチですか?
opengl - OpenGL 3D 変換: z アスペクト比
私は OpenGL (webgl) で 3D 透視投影を行っており、均一なマトリックスを使用して自分で行っています。すべてが正常に機能していますが、アスペクト比が 3:2 (600px x 400px) であり、レンダリングされたすべてのジオメトリが歪んでいます。
2D では、x と y をそれぞれ 1/幅と 1/高さで割ることにより、モデル マトリックスでこれを修正していました。
今、私も心配する必要があります.Zをどのように/どこで変換して、3:2のアスペクト比で歪まないようにするかはまったくわかりません.
モデルマトリックスはこれを行う機会を提供していないようで、射影マトリックスでどこで何をすべきかわかりません。
編集:射影行列:
列の主な順序
編集 2: n < 1 の奇妙な歪み