タグ付けされた質問 「camera」

ゲームの世界は、ゲームの世界を観察する視点であるカメラから見られます。

6
自分のキルカムを作成する
サンドボックスツールセット用に独自のキルカムシステムを作成する予定です。しかし、キルカム自体の仕組みについて考えた後、私はかなり迷っています。私は、殺人者の視点から実際の殺人シーンを示す、コールオブデューティゲームで一般的に見られるものを再現しようとしています。 私の考え: -人々が他人を殺したとき、「記録プロセス」をいつ開始するかわからないので、私はただ記憶を保つことができません。誰かが誰かを殺そうとしている時期を正確に判断する方法があります。 -これまでのところ、私の唯一の本当のアイデアは、すべてを完全に複製し、10秒遅れで元の世界からのすべての動きをコピーすることです。そうすれば、すべてのキルカムは10秒の長さになり、人物カメラは殺人者の第二世界に移動するだけです。 私の質問: これを行う方法はすでに受け入れられていますか?誰かがこのような何かのための良いアイデアを持っていますか?できたらありがとう!
15 camera 

2
90°horz / 60°vertがデフォルトのFPS視野を反転するのはなぜですか?
私の知る限り、垂直視野は次のように調整する必要があります。 fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen); つまり、視野はユーザーの画面の距離と画面のサイズに一致する必要があります。 多くのFPSでは、水平FoVのデフォルト値は90°、垂直FoVのデフォルト値は60°です(16:9と仮定)。1つの例はCryEngineです。ただし、16:9 20インチ画面(可視領域の対角、つまり約40 cm x 25 cm)の場合、このデフォルト値では、ユーザーが視点を正確に見るために画面から20 cm目を見る必要があります。 そのため、計算を間違えたか、不適切なFoV値を意図的に選択する理由があるに違いありません。 90°horz / 60°vertのデフォルトFoVの理由は何ですか?
14 3d  camera  perspective 

1
グリッド上の正投影単位の変換の不一致(たとえば、64ピクセルが正しく変換されない)
グリッド上での単位変換に関する小さな問題についての洞察を探しています。 更新および解決済み 私は自分の問題を解決しました。詳細は以下をご覧ください。投稿のこの部分のすべてが正しいことが判明しました。どちらかといえば、次の人のためのミニチュアチュートリアル/例/ヘルプとして機能することができます。 セットアップ FBO、VAO、VBO 512x448ウィンドウ 64x64グリッド gl_Position = projection * world * position; projection定義されるortho(-w/2.0f, w/2.0f, -h/2.0f, h/2.0f);この教科書正射影関数です。 world (0、0)の固定カメラ位置によって定義されます position スプライトの位置によって定義されます。 問題 以下のスクリーンショット(1:1スケーリング)では、グリッド間隔は64x64であり、ユニットを(64、64)で描画していますが、ユニットは約10pxを間違った位置に描画します。ピクセルサイズのゆがみを防ぐために均一なウィンドウディメンションを試しましたが、1対1ピクセルから世界単位への投影を行う際に、適切な方法で少し迷っています。とにかく、ここに問題を支援するためのいくつかの簡単な画像があります。 私は、エンジンが64xオフセットであると信じているスプライトの束をスーパーインポーズすることにしました。 これがふさわしくないように思えたとき、私はあちこちに行き、1ユニットのベースケースをしました。予想通りに並んでいたようです。黄色は、動きの1pxの違いを示しています。 私が欲しいもの 理想的には、64ユニットが任意の方向に移動すると、以下が出力されます(重ね合わせたユニット)。 頂点 頂点シェーダーに入る頂点が正しいように見えます。たとえば、最初の画像を参照すると、データはVBOで次のようになります。 x y x y ---------------------------- tl | 0.0 24.0 64.0 24.0 bl | 0.0 0.0 -> 64.0 0.0 tr | …

3
クォータニオンベースのカメラを実装するにはどうすればよいですか?
更新ここでのエラーは非常に単純なものでした。ラジアンから度への変換を見逃しました。他の問題がある場合は、すべてを読む必要はありません。 私はこれについていくつかのチュートリアルを見て、四元数ベースのカメラを実装しようと思って理解したと思いました。問題は、約1分間回転させた後、正しく動作しないことです。10度戻ると-10度に戻ります。何が悪いのか分かりません。私はopenTKを使用していますが、すでにクォータニオンクラスがあります。私はopenglの初心者であり、楽しみのためだけにこれをやっており、四元数を本当に理解していないので、おそらくここで愚かなことをしているでしょう。ここにいくつかのコードがあります:(実際には、vboを​​ロードおよび描画するメソッドを除くほとんどすべてのコード(vbo-sを示すOpenTKサンプルから取得されます)) vboにキューブをロードし、カメラのクォータニオンを初期化します protected override void OnLoad(EventArgs e) { base.OnLoad(e); cameraPos = new Vector3(0, 0, 7); cameraRot = Quaternion.FromAxisAngle(new Vector3(0,0,-1), 0); GL.ClearColor(System.Drawing.Color.MidnightBlue); GL.Enable(EnableCap.DepthTest); vbo = LoadVBO(CubeVertices, CubeElements); } ここに透視投影をロードします。これは、最初とウィンドウのサイズを変更するたびにロードされます。 protected override void OnResize(EventArgs e) { base.OnResize(e); GL.Viewport(0, 0, Width, Height); float aspect_ratio = Width / (float)Height; Matrix4 perpective = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, …

4
OpenGLのクリップスペースに4つの次元があるのはなぜですか?
これは一般的なリファレンスとして使用しますが、ブラウザのオンラインドキュメントや書籍が多ければ多いほど、これについてはあまり理解できません。 const float vertexPositions[] = { 0.75f, 0.75f, 0.0f, 1.0f, 0.75f, -0.75f, 0.0f, 1.0f, -0.75f, -0.75f, 0.0f, 1.0f, }; このオンラインブックには、三角形の作成に関するOpenGLの最初の古典的なこんにちは世界を描く方法の例があります。 三角形の頂点構造は、上記のコードで述べられているように宣言されます。 この本は、これに関する他のすべての情報源と同様に、クリップスペースは、ラスタライズされて画面にレンダリングされるものを基本的に決定するために使用される4D構造であるという点を強調します。 ここに私の質問があります: 私は4Dで何かを想像することはできません、私は人間がそれを行うことができるとは思わない、このクリップスペースの4Dは何ですか? 私が読んだ中で最も人間が読めるドキュメントはカメラについて語っていますが、これはクリッピングの概念を単に抽象化したものです。おなじみの3D構造?カメラのコンセプトに関する唯一の問題は、他の方法で見込み客を定義する必要があることです。したがって、基本的に、どのようなカメラを持ちたいかについて別のステートメントを追加する必要があります。 これをどのように読むの0.75f, 0.75f, 0.0f, 1.0fですか?私が得るすべては、それらがすべてfloat値であり、最初の3つの値の意味を得るということですが、最後の値はどういう意味ですか?

2
Input.GetAxis(“ Mouse X / Y”)を使用してカメラを回転させる方法は?
マウスで回転する一人称カメラを作りたい。 私が見Input.GetAxisスクリプトAPIのページで、私は私のポストの下部に含まれているサンプルコードを、発見しました。試してみると、基本的な機能は同じだと思いましたが、特にマウスを円で動かすと、カメラがxz平面に平行に保たれないことに気付きました。しばらくすると、カメラが奇妙な角度になり、プレーヤーは完全に乱暴になります! どういうわけかカメラの動きを制限するこのコードのクイックフィックスはありますか、またはカメラを回転させるより良い方法はありますか? using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public float horizontalSpeed = 2.0F; public float verticalSpeed = 2.0F; void Update() { float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y"); transform.Rotate(v, h, 0); } }
13 unity  camera 

1
複数の2Dスポットライトを作成するにはどうすればよいですか?
複数のエンティティにスポットライトを使用できる2D「スポットライト」効果を作成したいと考えています。すなわち、いくつかのスプライトがトーチを保持しているかのように。単一のエンティティ(1つのスポットライト)の場合、グラデーションスプライトをオーバーレイし、中心点でそのエンティティを追跡する手法を使用します。この手法は、単一のスポットライトでうまく機能します。これが私が話していることを説明するスクリーンショットです。 シングルスポットライト-作品 私が遭遇する問題は、この手法が複数のエンティティに拡張されないことです。別のスポットライト画像をオーバーレイすると、いくつかの問題が発生します。シミュレートされたスクリーンショットは次のとおりです。 複数のスポットライト=問題 最も明らかな問題は、目に見える角です。これは、レベル全体をカバーするようにスポットライト画像を巨大にすることで解決できますが、それは適切ではありません。2番目の難解な問題は、このテクニックを使って暗闇を効果的に増やしていることです。したがって、追加された各スプライトは、他のすべての人を暗くする効果があります。明らかに、この問題に間違って近づいています。 何か案は? 継続的な取り組み コメントにはブレンドオプションに関する議論がいくつかあります。これが私の現在の考え方です。上記の単一のスポットライトの例では、次のような画像ファイルを使用しています:(わかりやすくするために、透明部分を緑色に置き換えました) 上記で説明したように、問題は、この画像を別の画像とアルファブレンドしても、望ましい効果が得られないことです。代わりに、これが生成されます: それはブレンドオプションの問題として私を襲いません。問題は、私には、その種の画像には、透明マスクと画像(黒い正方形)が組み込まれているため、それらを分離する必要があるということです。 そのため、カットアウト透明度が組み込まれた黒い画像の代わりに、実行時に黒い正方形に対して使用される透明度マスクを使用する必要があります。それを行うとき、私はまだ伝統的な白と黒の透明マスクを使用することができません、または同じ問題に遭遇します。次に例を示します。今回は白と黒が白と黒を表します。 解決策は、それ自体が透明度を利用する透明度マスクを適用することであると思われます。このようなもの:(緑=透明) これにより、複数の透明マスクをアルファブレンドし、黒い正方形に対する透明マスクとして使用できます。アルファブレンドされた2つの透明度マスクの例を次に示します。 とにかく、それが私が実装に取り​​組んでいるアプローチです。これが機能する場合、結果を投稿します。(現時点では)わからないのは、それ自体が透明性を持つ透明マスクを使用できるかどうかです。
12 2d  sprites  camera  lighting 

3
一人称カメラをどのように実装すればよいですか?
私は初心者プログラマーであり、一人称カメラで部屋を歩き回ることができるプロジェクトを作成しています。これまでのところ、建物が描かれていますが、今は立ち往生しており、歩き回るために一人称カメラを作成する方法がわかりません。 誰かが私が使用できるカメラクラス、またはいくつかの有用なコードに私を向けることができますか?
12 c++  directx  camera 

5
ゲームにおけるカメラ制御テクニック
私はコンピューティングサイエンスのMPhilの学生で、グラフィックスのカメラ制御の問題に取り組んでいます。カメラ制御の文献は1980年代の終わりまでさかのぼりますが、それらの大部分(私の知る限り)は主に学術的なものであり、ゲームで使用されることはほとんどありません。 今私の論文の一部は、ゲームで使用されるカメラ制御方法に専念する必要があります。しかし問題は、私が世界のすべてのゲームを実装していないため、それらについて話すことができないことです。しかし、ゲーム開発者が通常使用するいくつかの参照があると思います。 誰かがこれを手伝ってくれる?本というより自分の経験からでも。
11 camera  control 

2
3人称カメラをターゲットに向けて回転させる
私はプレーヤーを直接見ない3人称カメラを持っていますが、彼の前のどこかにあります。 ユーザーが撮影モードに入ると、カメラがプレイヤーを振り向いてターゲットに向かいます。 上の画像。「O」はプレーヤー(原点)、「L」はルックアット、「C」はカメラの位置、「T」はターゲットです。ルックアットラインC-> Lを回転させて、原点( "O")を中心にT(C '-> L'-> T ')を通過するようにします。 基本的には、画像に赤で表示した角度アルファを見つける必要があります。 私はカメラの位置をそのような構造に保存します: struct CameraTarget { Quaternion absoluteRotation; Vec3 absolutePosition; Vec3 cameraOffset; Vec3 lookatOffset; float FOV; } だから私が探している角度を見つけることができれば私は次のようなことをすることができます: cam->absoluteRotation = cam->absoluteRotation * alpha; プレイヤーに常にターゲットを見させる。 LookatがOriginを通り過ぎていた場合、私は簡単にできます Vec3 origDir = cam->lookAtOffset - cam->absolutePosition; origDir.normalize(); Vec3 newDir = cam->target - cam->absolutePosition; newDir.normalize(); Quaternion q(origDir, newDir); …

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

4
LibGDXはカメラをTiledMapの境界内に保ちます
私はうまくレンダリングできるシンプルなTiledMapを持っています。プレイヤーが(Box2Dで)ホッピングしていて、カメラがプレイヤーを追いかけています。 cam.position.set( player.position().x * Game.PPM + Game.V_WIDTH / 4, player.position().y * Game.PPM, 0 ); cam.update(); ただし、カメラはTiledMapから外れます。カメラをTiledMapに保持するにはどうすればよいですか。マップの端に近づくと、カメラはスクロールを停止し、プレーヤーはカメラの端に向かって移動しますか?

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

1
2番目のゲーム内カメラから録画し、後でビデオファイルにエクスポートするにはどうすればよいですか?
UnityでPCホラーゲームを作成しています。ゲーム内でカメラ録画シミュレーションを行いたいので、いつでも不気味な場所を離れることができます。探索中にカメラで録画したものをテープに収めることができます。 技術的には、2つ目のカメラ(ハンドカメラ)をキャラクターの手に取り付け、プレーヤーにボタンを押してビューファインダーを覗かせます。しかし、どの位置でも、ハンドカムはその時点でフォーカスされているすべてのもの(床、階段、ゴミなど)を記録する必要があります。手の高さで下げても、プレーヤーの視点に合わせて上げてもかまいません。 ゲームが終了したら(プレーヤーが去るか死ぬか)、記録したテープをビデオファイルに保存するオプションが必要です(これが不可能な場合は、いくつかの保存ファイルに保存します)。 ゲームにそのような機能を実装するにはどうすればよいですか?特別なUnityのトリック、またはアドオンと追加のモジュールはありますか?アクティブなトリガーで装飾やシーンを保存したり、画面からビデオを取得したりしますか? 以下は、私が意味することの簡単なMSPaintの概念です。

1
C ++ / DirectX9で3人称カメラを実装する最も簡単な方法は何ですか
C ++とDirectX9は初めてなので、サードパーソンカメラを実装したいと思います。Quaternionベースのカメラについて読んだ後、私はそれを実装してみることにしました。しかし、それは本当に私の心を吹き飛ばすので、TPカメラを実装する最も簡単な方法は何ですか? カメラがすべきことは次のとおりです。 3DVector(x、y、z)に保存されている座標を追跡する オブジェクトを中心に回転(スムーズ) たぶんいくつかのタイプの「スプリング」=回転後、オブジェクトの後ろの通常の位置にゆっくりと戻ります 私の悪い英語をお詫び申し上げます:私はドイツ人で、まだ学校にいます! 前もって感謝します! 編集: いくつか試した後、私はそれを手に入れました。 私が検討した最大の問題は、ワールドマトリックスから「方向」ベクトルを正しく抽出することでした。 私の研究中に、私はほとんどこのようなものを見つけました: D3DXVECTOR3 direction; direction.x = worldMatrix->_13; direction.y = worldMatrix->_23; direction.z = worldMatrix->_33; D3DXVec3Normalize(&direction, &direction); それは私にはうまくいきません!代わりに私はこれをしました: D3DXVECTOR3 direction; direction.x = worldMatrix->_13; // Consider the .y after the .z! direction.z = worldMatrix->_23; direction.y = worldMatrix->_33; D3DXVec3Normalize(&direction, &direction); スケーリングの場合: // The tenfold …
8 c++  camera  directx9 

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