タグ付けされた質問 「3d」

3Dは、座標がX、Y、Zの値で表される3次元空間を指します。

1
3Dカメラの回転
許してください、しかし私は助けを必要としています、そして私は今数週間これに行き詰まっています、私は進歩を遂げておらず、どこへ行っても私は別の答えを見ます、私が試みるすべてがうまくいきません。私は十分なヒントとアドバイスを持っています。今、私はこれを理解することができないので、誰かが私に後戻りするための答えをくれる人を本当に必要としています。 この主題を最も混乱させたのは、誰もが異なる規則または規則のセットを使用する方法であり、それらの答えは、何であるかを定義せずに独自の規則に基づいています。 だからここに私が最も一般的で論理的であると思われるものに基づいて形成した一連の規則があります: 軸の右手の法則。 正のYは上向き、正のZは視聴者向き、正のXは右向きです。 シェーダーに送信されるときに転置される行メジャー行列。 ピッチ:X軸を中心とした回転 ヨー:Y軸を中心とした回転 ロール:z軸を中心とした回転 ローテーション順:ロール、ピッチ、ヨー(これは正しいですか?誰かがこれを確認できますか?) 正の回転値は、軸の正の端から見下ろすと、時計回りに回転します。 すべての軸にわたる0回転のデフォルトの方向は、負のYを指すベクトルです。 ..それらの慣例を考えると(間違っている場合は必ず私を訂正してください!) LookAt関数を記述しますか?(lookAt(ベクター位置、ベクターアイフォーカス、ベクターアップ)) 回転行列を計算します。(回転(x、y、z)) 私はこれらの2つの質問に少なくとも過去3週間以上答えてみました。LookAt&Rotation Matrix関数を少なくとも30回書き直しました。何百ものウェブサイトと多くの解答された質問を読み、他の人々のコードをコピーしました、そして私がこれまでに作った何もうまくいきませんでした、すべてが間違った結果を生み出しました。それらのいくつかは、正しい回転にさえ近くないいくつかの陽気に奇妙な出力を生成しました。 私は昨夜を除いて毎晩これに取り組んできました。繰り返し失敗することにとてもイライラしていて、私は立ち止まって休憩しなければならなかったからです。 正しい方法を教えてください。それから逆に作業して、それがどのように機能するかを理解できます。正しい答えが得られず、これが私を少し狂わせています! 私はJavaで書いていますが、任意の言語で書かれたコードを使用します。私の3Dレンダリングコードのほとんどは実際には非常に見事に機能しています。それは理解できない数学にすぎません。 更新:解決済み ご協力ありがとうございました!私は実際に私が実際に理解しているルックアット関数を手に入れました、そして私は幸せにすることができませんでした(誰かがぜひともそれを見たいと思っているなら)。 ピッチ/ヨー/ロール変数に基づいて回転行列を作成することを再試行しましたが、再び失敗したようですが、フリールックカメラのオイラー角を使用しようとしてダンプすることにしました。代わりに、クォータニオンクラスを作成し、そのパスを下る方が幸運かもしれません。それ以外の場合は、球座標としてピッチ/ヨーを使用し、回転には新しい機能のLookAt関数を使用します。 他の誰かが同様の問題に直面していて質問をしたい場合は、遠慮なくお問い合わせください。 助けてくれてありがとう!

2
3Dゲームワールドのスケーリング係数を選択するにはどうすればよいですか?
私はいくつかの物理シミュレーションで3Dタンクゲームのプロトタイプを作成しています。C++を使用しています。私が下す必要がある決定の1つは、現実との関係におけるゲームの世界の規模です。たとえば、ゲーム内の1つの測定単位は、実際には1メートルに相当すると考えることができます。これは直感的に感じますが、何かが足りないかもしれません。 次のことを潜在的な問題と考えることができます。 3Dモデリングプログラムの互換性。(?) 数値の精度。(これは問題ですか?)特に大規模な場合、Battlefieldなどのゲームはどのように巨大なマップを持っていますか:実世界のスケールで1:1マッピングを使用する場合、浮動小数点表現は大きいほど精度が低下する傾向があるため、数値精度を失わないようにしてください。数値(たとえば、レイキャスティング、物理シミュレーション) ゲームプレイ。-9.8 m/s^2重力のように現実世界のほとんどの値を使用しているときに、ユニットの動きが遅くなったり速く感じたりしたくありません。(これは主観的な場合があります。) インポートされたアセットをスケールアップ/ダウンしても大丈夫ですか、それとも元のスケールの世界に最適ですか? レンダリング性能。同じ頂点数の大きなメッシュはレンダリングに時間がかかりますか? これを複数の質問に分割する必要があるかどうか疑問に思っています...

2
水で満たされた領域を定義するにはどうすればよいですか?
私の小さなゲームエンジンを見栄えの良い水のシミュレーションで強化したいと思います。それに取り掛かるには、ゲームで水を表現する適切な方法を見つける必要があります。残念ながら、私は多くの異なる表現を知りませんので、私はあなたに尋ねます。少し前に私が尋ねた同様の質問があります。しかし、問題を明確に定式化していないので、答えは正しいですが、私が探していたものではありません。 一部のゲームでは、水は高さレベルによって定義されます。たとえば、高さが0未満のすべては水中です。私はこの表現を(主に古い)ゲームで見ました。問題は、浸水していない屋外の洞窟で、湖や海ごとに水位が異なることです。 水の発生のもう1つの、より正確な表現は、粒子です。すべての水滴は、ワールドスペースのポイントとして保存されます。それらをレンダリングするために、メタボールなどの手法を使用して、単一のメッシュを構築することができます。それらの間のダイナミクスを簡単に計算できるので、この表現はリアリズムにとって素晴らしいでしょう。残念ながら、リアルタイムでメタボールの海を計算できるマシンはありませんでした。 エンジンで水を表す他の方法はありますか?動的な湖が欲しいので、静的なジオメトリによって水域を定義することはできません。たとえば、プレーヤーが地形を変更して湖を広げた場合、水はその湾を満たし、その湖の全体的な水位はわずかに低下するはずです。

2
2つのコーナーがある斜めの見通し線
現在、私は視線にBresenhamのラインアルゴリズムを使用しています。問題は、プレイヤーが壁をのぞくことができるエッジケースを見つけたことです。プレイヤーが壁の2つの隅の間を、反対側に特定の角度でギャップがあるように見たときに発生します。 結果として、2つの壁の間のタイルに無効のマークが付けられます。 これを解決するためにブレセンハムのラインアルゴリズムを修正する最も速い方法は何ですか?良い解決策がない場合、より適したアルゴリズムはありますか?どんなアイデアでも大歓迎です。ソリューションは3Dもサポートできる必要があることに注意してください。 編集:私の簡単な解決策は、線のx座標とy座標が変化したときに両方の角が閉じているかどうかを確認することでした。完成した製品の実際のソースコードとインタラクティブなデモについては、http://ashblue.github.io/javascript-pathfinding/を参照してください。

1
真のバイノーラル位置3Dオーディオが可能なゲームエンジンはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 私は決してゲームデザイナーではないので、適切な専門用語を使用できなかった場合は、事前に謝罪します。私の間違いを自由に修正してください。 私の理解では、現時点では、すべての一人称シューティングゲーム(L4D2やBioshockなど)ではないとしても、「3Dオーディオ」は、ゲーム内でのプレーヤーの位置と変位を考慮して生成されますが、主にオン バランス(サウンドのソースへの方向を示すため)、 振幅(プレーヤーと音源との間の距離を示すため)。 ただし、心理学実験では、頭部関連伝達関数(HRTF)を使用した真の両耳位置3Dオーディオを使用して、カスタムの一人称シューティングゲームを被験者に再生させたいと思います。私が何を話しているのかわからない場合は、このURLでバイノーラル録音を聞いてください。 私は真のバイノーラル位置3Dオーディオを使用するゲームを1つだけ知っています:Papa Sangreですが、それはFPSではありません。 私の質問(すべて関連)は: 現在利用可能なゲームエンジン(バルブのソース?)を使用して、このようなFPSゲームを設計できますか? 1.の答えが「はい」の場合、役立つリンクはありますか? 1.の答えが「いいえ」の場合、そのような驚異的な能力を備えたゲームエンジンはまだ発表されていますか? 真のバイノーラルポジショナル3Dオーディオが将来のFPSゲームで間もなく登場する兆候はありますか?(私は確かにそう願っています!)

1
GPUとCPUでのメッシュ操作
ちょっと気になります-CPUまたはシェーダーのどこでメッシュ操作を実行しますか?私はCPUですべてを行っており、友人がGPU側に物事を移動することを提案しました。 GPUでボーンアニメーションなどを実行している場合、どうやってメッシュを元に戻すのですか?(私は衝突検出をしているので...)
9 opengl  3d 

1
gluLookAtはどのように機能しますか?
私の理解から、 gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 以下と同等です。 glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); しかし、ModelViewマトリックスを出力すると、への呼び出しがglTranslatef()正しく機能していないようです。コードスニペットは次のとおりです。 #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

2
モデルで照明が連続しないのはなぜですか?
Blenderで基本的なテクスチャキューブモデルを作成してモデリングを練習し、それをUnityにインポートしました。照明をつけた後は見苦しいように見えます。ライトは、テクスチャキューブの行で連続的ではありません。 さらに奇妙なことに、床を構成するブロックの光は連続しています。何が悪いのですか? これは、テクスチャがない場合の外観です。 これらが完全な立方体であることを知らなかった場合、表面にわずかな曲線があると思います。テクスチャを明るくしてみましたが、効果もありませんでした。 Blenderからモデルをエクスポートするだけで、法線やそのようなものは設定しませんでした。ただし、床レンガモデルについても特別なことはしていません。 法線を確認したところ、正しい方向を指しているようです。 また、2つのモデルの違いは実際にはわかりません。テクスチャパネルで、プロジェクションをフラットに設定します。 Blenderでさまざまなパネルをチェックしましたが、[オブジェクトデータ]パネルの通常の関連オプションはこの[自動スムーズ]だけで、デフォルトではオフになっています。

2
非常にシンプルな3Dレーシングゲームでは、衝突はどのように処理されますか?
いくつかのシンプルな3Dカーレーシングゲーム(特にOutrun 2 / Motoracerなどのゲーム)で衝突がどのように行われるのか疑問に思いました。 複雑な環境(オープンワールド)のクラシックカーレーシングゲームでは、これは基本的なボックス(車用)から飛行機の衝突(トラック、建物など)で行われると思います。全体は、いくつかのバウンディングボックスを使用して最適化されます(これは、多くのゲームで衝突が行われる方法です)。 Outrun 2 / Motoracerのようなゲームでは、ゲームプレイは非常にシンプルなので、開発者はそれを必要としない可能性があり、すべてが大幅に簡略化されている可能性があります。それをプレイしたことがない人のために、これはとても具体的です: 車/バイクは常に道路に接着されています。 道路は常に同じサイズで、非常にシンプルな形状です。 唯一の可能性は、その道路をたどること、道路を離れること、または他の物と衝突することは不可能です(他の車/バイクを除いて、私たちは気にしません)。 あなたが道路に衝突すると、非常に基本的なアーケードの衝突が行われます(車は単にそこから押し出されます) これが衝突が起こったと思う方法です: トラック全体は、巨大な3Dベジェ曲線と見なすことができます。そのカーブから、道路のポリゴンを生成できます(カーブから生成された前面、左、上方向のベクトルを使用)。他の要素(家、木など)も、この方法を使用して配置および整列できます。 次に、衝突を処理する(そして車を引く)には: 1)現在の車の3D位置から3Dカーブ上の最も近い位置を見つけます。つまり、3D車の位置をベジェカーブの位置に変換します。道路上のすべての3D位置は、3Dカーブに沿った変位(t)+横変位(d)と見なすことができます。はっきりしない場合は、下の画像を確認してください(これは2Dの例ですが、3Dにも簡単に当てはまります)。 t = 0の場合、トラックセクションの先頭にあり、t = 1の場合、末尾にあります。d = -1または1台の車がトラックの境界にある場合、d = 0台の車が道路の真ん中にある場合 2)を用いて道路に車を位置合わせtし、d(非常に簡単:いずれかのt及びd値iは3D位置+アップ/正面/左ベクトルを得ることができます)。車は今道路に接着されています 3)d車の横変位を確認します。値が大きすぎる場合(d > 1)や低すぎる場合は、(d < -1)車が軌道から外れています。クリップして、車を正しい場所に置いてください。 これにより、3Dカリングも非常に簡単になり、現在の車のt位置からまでトラックを描くだけt + some_big_enough_value_to_avoid_visible_clippingです。 あるいは、私が完全に間違っているかもしれません。車の衝突(境界ボックス)と、トラックを表す非常に簡略化されたポリゴンのセット(建物などなし)をチェックするだけの方が、はるかに速く簡単でした。3Dワールド(および結果のコリジョンモデル)は、いくつかのサードパーティツール(ゲームの実行時に3Dカーブはなく、一連のポリゴンのみ)を使用して、以前に単純に生成されていました。

3
球と平面の間の衝突応答を計算するにはどうすればよいですか?
シンプルな3Dゲームを作成しようとしています。ゲームの世界の制限内でプレーヤーを制限する必要があります。プレイヤーが世界の側面にぶつかったとき、プレイヤーの船を少し跳ね返らせたいです。 事実、私はプレイヤーをボックス内に閉じ込め、側面から逃げるのを止めようとしています... ゲームワールドの限界を、法線と原点からの距離を持つ平面のコレクションとして定義できました。プレーヤーには球形の境界球があり、このウェブサイトhttp://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.phpから衝突を検出することができました。 衝突が検出されたときにどうすればよいのか、私はまったく理解できません。私が管理できる最高の方法は、プレイヤーが飛行機に詰まっている、まっすぐ進む、または非常に速い速度で繰り返し跳ね返ることです。 常識では、法線を使用して平面からの反射角度を計算し、それをプレーヤーの速度に適用する必要があると言われていますが、まず、プレーヤーが平面を通過したかどうかを確認する必要があります。いい結果になる。

2
2つの衝突する物体の侵入を解決する方法
シンプルな3Dゲーム物理エンジンを実装しました。私はすでに適切な衝突検出を行っていますが、今は衝突応答の部分を理解しようとしています。衝突後の速度を計算するために、インパルスベースの方法を使用しています。これはかなりうまく機能しますが、ボディが相互貫通し続けるのを完全に防ぐわけではありません。そのため、ペネトレーションを解決するための追加のコードがあります。現在、私はボディを接触法線に沿って浸透深さの半分だけ移動します-最初のボディは接触法線の方向に、2番目のボディは反対方向に移動します。 これはほとんどの場合問題ありませんが、いくつかの望ましくない影響があります。たとえば、狭い廊下とその中を移動するオブジェクトを想像してみてください。オブジェクトが廊下の壁の1つにぶつかると、透過解像度によって反対側の壁に移動し、次のフレームで最初の壁に戻ります。効果は、オブジェクトが壁の間で本当に速く振動しているようなものであり、きれいではありません。 だから私の質問は、侵入を解決するより良い方法があるかどうかです?おそらくボディを動かさずに、(インパルス計算に加えて)どういうわけか速度を調整して、ボディが互いに近づくのを止め、ペネトレーションが次の数フレームで解決するようにします。私はここで推測しています。何か案は?

1
スプラインから3Dレーストラックを生成するにはどうすればよいですか?
形状を表すスプラインの周りに3次元のレーストラックを生成したい。 こちらがビデオの例です。 トラックは、いくつかの障害物が投げ込まれた3Dスプラインに沿ってスイープするエンドレストンネルである必要があります。私のこれまでの最良のアイデアは、スプラインに沿って円形状をロフトすることでした。 また、ジオメトリを管理する方法、つまりロフト操作からジオメトリを作成する方法、メモリ内の「ライフサイクル」を管理する方法、コリジョン、テクスチャリングへのポインタも必要です。

2
スケッチや漫画のように、線で3Dの世界を描く方法
陰影を付けず、すべての線の太さが等しいインク描画を作成することを検討してください。たとえば、ディルバートのようなストリップコミックに見られます。これはアクティブな3次元の世界を表していますが、オブジェクトにはテクスチャがありませんが、テッセレーションされた三角形も表示されません。 例として、月面を描くことを検討してください。あなたが描くかもしれない線は、丘の上端に沿って、それらが表面の一般的なレベルに会うところまでです。それらの後ろでは、より大きな丘で、遠くまで、そして地平線の見えるものの後ろで、同じことをします。クレーターの場合は、外縁に近い円を描き、下縁に部分的にマスクした円を描くことができます。ボルダーは、エッジの周りに、目に見える主要なエッジに沿って線を引きます。宇宙飛行士は外縁に沿って、そして宇宙服の主要な特徴に沿って線を引くでしょう。 私は経験豊富なプログラマーですが、3Dプログラミングは初めてです。私はこのようなゲームをすぐに考えることはできません-それは行われましたか?そして、どのようにそれを行うのでしょうか?2つの問題が頭に浮かびます。重要なエッジを見つけ、それを描くことです。通常の3Dエンジンではなく、行列に基づいてコード化された「エンジン」が必要ですか?
9 3d 

3
クォータニオンを使用してヘリコプターを制御できますか?
単純化されたヘリコプター(現時点では立方体)を3Dでシミュレーションしようとしていますが、回転に問題があります。ヘリコプターは3つの軸に沿って回転できます。 後部プロペラを使用してそれ自体で回転する:y軸回転 左または右に傾けて左または右に移動:z軸回転 上下に傾けて後方または前方に移動:x軸回転 各軸を個別に制御できる必要があります。これまでのところ、オイラー角を使用してみましたが、使用する回転順序が何であれ、ジンバルロックまたは一部の軸の「スイッチ位置」にぶつかります。 クォータニオンを使用する必要があるようですが、クォータニオンは方向と角度を使用するため、個々の軸を制御する方法がわかりません。3つの四元数を作成して、それらを乗算する必要がありますか?同じ問題が発生することはないでしょうか? 奇妙なことに、ヘリコプターの3つの軸(親指を上げる= y、インデックス= z、中央= x)を指で表すと、これらの問題にぶつからないようです。どうして?
9 3d  rotation 

2
カーブする平面を持つ2.5Dプラットフォーマーの物理
XNAで2.5Dプラットフォーマーを作成しています。これは、(Trineのように)2D平面に沿った移動に制限された3Dモデルを使用しています。 ただし、物事をより巧妙にするために、2D平面自体が湾曲できるようにしたいと考えています。このクロノアのリプレイを考えてみてください(10秒間だけ見る必要があります):プレーヤーは2D平面上にありましたが、平面自体が山の側面を包み込み、プレーヤーが3D空間を効率的に移動できるようにしました-その間、プラットフォーマーの通常の2D平面に拘束されます。 このようなゲームでは、物理学にどのように取り組むべきですか? 2D物理エンジンまたは3D物理エンジンを使用する必要がありますか? この状況を考慮して実際に設計された物理エンジンはありますか? これのために設計されていないものについて:物理エンジンを私と連携させるために必要なハックやトリックは何ですか?
9 xna  3d  physics  2.5d 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.