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

場所の物理的な地理を説明するために使用されます。これには、フィーチャの標高、勾配、方向を含めることができます。

2
ゲーム「Do n't Starve」のように、2.5Dパースペクティブで地形をレンダリングするにはどうすればよいですか?
Terrariaなどの2Dサイドスクローラーゲームを作成した経験がありますが、自分自身に挑戦して、2.5Dの視点を持つゲームを作成したいと考えています。私が模倣しようとしているゲームは、Do n't Starveです。現在、私の焦点は、地面をレンダリングする方法を理解することです。彼らがどのように地面を生成し、それをレンダリングしたかを理解するのに苦労しています。彼らが地面をレンダリングしたと思う方法は、最初にいくつかのペイントプログラムで地面をペイントし、次にその平面イメージを何らかの方法で操作して、奥行きがあるように見せることです。 実際にそのタイプの地形をどのようにレンダリングするかについて、私は完全に混乱しています。地形に次の機能を持たせたい: Do n't Starveの地形のように見える、これはDo n't Starve の地形を示すビデオです 地形は平坦になり、カメラの角度と視点は固定されます ヒントやヒントをいただければ幸いです。よろしくお願いします。 (私は軽量Javaゲームライブラリ(LWJGL)を使用してJavaで作業しています。)

2
3Dパーリンノイズで生成されたときにフローティングテレインを削除する方法
私は現在3Dパーリンノイズを使用して、マーチングキューブと組み合わせてランダ​​ムな地形を生成しています。 私の問題は、地形の適度な高さを得るためにノイズ関数をスケーリングすることにあるようです。1オクターブのみを使用する場合、ノイズに関連するすべてのポイントが明らかに補間され、その結果、かなり滑らかなデータになります。ただし、オーバーハング/キャビティ/ギザギザの地形を取得するには、さまざまな振幅を持つ複数のオクターブを使用するか、結果の値をマップに必要な「最大」の高さにスケーリングする必要があります。 何かが足りないかもしれませんが、3Dパーリンノイズのあるマーチングキューブを使用することで、定期的にテレインのフローティングビットを取得します。 これをどのように修正できるか、または説明しているような結果を得るために使用できる他のノイズ関数があるかどうかについてのアイデアはありますか?丘、谷、山、湖などが欲しいのですが。マップの他の部分から分離された浮動ビットは必要ありません。これは、Minecraftが生成時に時折空に浮かぶだけの地形がある場合と同じ問題であると思います。 助けてくれてありがとう、神話

2
隣接するタイルの高さが異なるタイルマップ/地形の実装
アホイ! タイルマップに関する情報、つまり、特定の種類のタイルマップの名前を探しています。 私はジェットコースターの大物や輸送の大物ゲームのシリーズで使用されている種類の実装に興味があり、ベクターフィールドの地形と高さマップの地形を調べてきましたが、それらが私が探しているものに適しているかどうかわかりません発展させる。 ほとんどの人がアイソメトリックタイルマップと呼んでいるので、適切な情報を見つけるのは大変でしたが、正射投影法を固定して3Dで何かを作成したいと考えています。タイルマップの基盤となるストレージはレンダリング方法とは関係がないことを理解していますが、古い学校のポケモン/ゼルダゲームのような2Dタイルマップを作成するつもりはありません。張り出した崖と傾斜した地形。 私は、Googleとstackoverflowでリソースを検索するための適切な用語を見つけようとしています。これは、どのパスに進むかを決定するのに役立ちます。 これまでのところ、VBOに格納され、ワイヤーフレームとしてレンダリングされた高さ/ yコンポーネントを使用せずに、基本的なタイルマップを具体化できました。これはこれまでは問題ないように見えますが、隣接するタイルに影響を与えずに1つの頂点を操作して崖やスロープを作成しようとすると問題が発生することを想定しています。 調査する必要がある特定のタイプの実装はありますか?ベクターフィールドの地形に関する情報がかなりの量を見つけたときにそれをクラックしたと思いましたが、これでも正しい結果が得られるかどうかはわかりません。 誰かが私にこれについていくつかの光を当てることができれば、助けは大歓迎です:) 更新 私が達成したいことについてさらに明確にするために画像を含めました: 傾斜(高さ)アイソメトリックタイルの作成方法から借用した画像 この画像は、生成したい地形のタイプを示していますが、「崖」やモデリングに関心のある張り出した地形タイプは含まれていません。しかし、それは私が考慮していなかった他のいくつかの質問を引き起こします。 水などの「レイヤー」(画像の左上)は、水の下に見える地面を含めるためにどのように処理されますか? 地球/泥がレンダリングされて世界が非平坦なエンティティとして表現されるように、マップの「エッジ」はどのように提供されますか? この種の地形の基礎となるストレージを使用して、丘を転がるボールや坂を横切るプレーヤーの移動速度などの物理学をモデル化できますか? 地形の各タイルは8つの頂点でモデル化でき、4つの主要な頂点が実際のタイル自体をカバーし、残りの4つの頂点は各タイルの側面/壁をモデル化するために使用されるという考えがありました。この実装で私が目にする2つの問題は、a)世界地図のサイズが基本的に2倍になることと、b)すべてのタイルに「壁」が含まれるわけではないため、一部のタイルが使用されない冗長な頂点になることです。 各タイルを変形させたり、ゲームのプレイ中に地形を変更する機能を組み込んだ地形エディターを作成したいと思います。これ自体、次のような追加の質問が発生します。VBOを使用して、オンザフライで変更しながら地形を保存およびレンダリングできますか?また、隣接するタイルに影響を与えることなく頂点を変更できますか? 自分がやりたいことをどのようにして達成するのかを明確に考えずに問題を解決するためのコードを書くのを怠っているので、複雑すぎたり分析麻痺に陥ったりしているように見えます。 繰り返しますが、私は本当にこれで正しい方向への突き出しを探しています。マップエディターとゲームプレイの両方で3Dマップが変形する特定の種類のタイルマップ/地形の実装はありますか?いわば、自分でロールする必要がありますか?私はここで車輪を再発明しようとしているわけではありませんが、何を探しているのかわからないため、リソースを見つけるのに苦労しています。 誰かが情報、リソース、またはコードのスニペットを提供できる場合は、手を汚して、現在持っているフラットワイヤーフレーム以外のものの作成を開始したいと強く思っています。 読んでくれてありがとう!

1
手続き的に生成された地形マップ。地形タイプ間のブレンド遷移
質問は申し訳ありませんが、最大の言葉遣いではありません。 私はいくつかのテクスチャーや地形生成について学び、プロトタイピングしていて、おそらくあなたが私を助けることができる何かに遭遇しました。 仕組み:地形の高さマップを手続き的に生成しています。あらゆる方向に無限にスクロールできます。(画像1)高さマップの値に応じて色をクランプして混合します(画像2) これは非常にうまく機能しており、現在非常に高速に実行されていますが、現時点では結局非常に単純化されています。 私が見つける必要があるのは、地形の遷移間をぼかしたり、歪ませたりするための良い方法です。現在お分かりのように、それは非常に隆起したラインを持ち、それほど自然に見えません。これがすべて手続き的に生成されていることを考えると、その場で実行できるブレンディング用のアルゴを見つける必要があることは明らかです。ピクセルジッタを少し試しましたが、見た目が悪いだけでした。また、一貫性を維持するために、シードをシードできる必要があります(ただし、ランダムで実行される可能性が高いため、問題になることはないと思います)。 どんな洞察もいただければ幸いです。私が急いでこれを投稿するために必要な情報をなんとかして除外した場合は、私に知らせてください。

4
ミサイルとビットマップ地形の交点を見つける最も効率的な方法は何ですか?
2Dビットマップ地形の傾斜を見つけることに関する私の以前の質問に続いて、ミサイルが命中した2D地形上の点を見つける最良の方法を知る必要があります。明らかに、ミサイルの下のピクセルが地形と交差するかどうかはわかりますが、地形のかなり奥に移動したと言えます。 最初に衝突した場所を見つけるために後退する最良の方法は何ですか?一度にXピクセル前にミサイルの前の位置に移動できますが、Xの適切な値はどれですか。そしてもっと賢い方法はありますか?たぶん半分の距離を移動し、次にクォーターなどを移動しますか?

1
GPUでの地形の生成
私のエンジンでは、CPUで計算されたPerlinノイズalghoritmを使用して無限地形を作成します。 地形の作成は次のようになります。 カメラがアンロードされたパッチに近い場合、作成します 与えられた境界で513x513ノイズ配列を計算します 法線、接線、従法線、インデックスを計算する データをvboに渡す 長所: 必要なときにのみレンダリングする必要がある 衝突しやすい コン 遅い64個の513x513パッチが3,1s(1スレッド)で作成されます。各タイルについて、〜20msのノイズの作成、〜25msの頂点、法線、正接、正接、インデックス。カメラが速く動くとき、ユーザーはタイルのロードに気づくことができます。 メモリを消費する??? 今私はGPUで地形を完全に生成することによってこれをスピードアップする方法を考えていましたが、いくつかの疑問があります: シェーダーがすべてのフレームを実行する場合、この計算能力はノイズを何度も計算するために無駄になりませんか?これは、結果をRBGAテクスチャに書き込み、後で頂点シェーダーでディスプレイスメントに使用することで回避できますが、メモリ使用量が増加します。一方、作成が非常に高速になる場合は、表示されているタイルのみをメモリに保持する必要があります。ただし、バッファーを切り離すと、gpu-cpu syncが発生し、アプリの速度が低下する場合があります(私は正しいですか?) テレインが頂点シェーダーによって置き換えられたフラットグリッドである場合、CPUで同じ作業を実行して、衝突の特定のポイントで高さと法線を計算する必要があります。 これは単なる概念ですが、すべてを高速化するために、ビューポートにグリッドを投影することを考えていたため、使用される頂点は最小限に抑えられています。これでうまくいくと思いますか? 私の最後の質問は: GPUで無限地形を作成するために最もよく/最も速く/広く使用されているテクニックは何ですか?
9 terrain 

2
ボクセルフェースクロール(メッシュの単純化、場合によっては貪欲を使用)
編集:これは私自身の学習経験のためだけのものであり、私がこの質問をするのはパフォーマンス上の理由のためではありません。 これはMinecraftのような地形エンジンに関するものです。ブロックをチャンク(16x256x16ブロック)に格納します。チャンクを生成するときは、複数の手順テクニックを使用して、地形を設定し、オブジェクトを配置します。生成中は、チャンク全体(ソリッドまたは非ソリッド)に1つの1D配列と、ソリッドブロックの個別の1D配列を保持します。 生成後、隣接するソリッドブロックを繰り返し処理して、隣接するソリッドがないブロック面のみを生成します。生成する顔を独自のリストに保存します(これは、可能な顔/法線ごとに1つずつ、6つのリストです)。チャンクをレンダリングするとき、カメラの現在のチャンクのすべてのリストと、他のすべてのチャンクのカメラに面するリストのみをレンダリングします。これを行うには、6つのリストすべてを1つのバッファーに格納し、描画する範囲を変更します。 Andrew Russellが提案したこの小さなシェーダートリックで2Dアトラスを使用して、類似した面を完全にマージしたいと思います。つまり、それらが同じリストにある場合(同じ法線)、互いに隣接している場合、同じライトレベルである場合などです。最終的には四角形になることはわかっていますが、頂点の数を簡単に50%削減できるはずです私の見積もりが正しい場合はそれ以上。 私の仮定は、6つのリストのそれぞれを、それらが置かれている軸、次に他の2つの軸でソートすることです(ブロックの上部のリストは、Y値、X、Zの順にソートされます)。 これだけでも、非常に簡単に顔のストリップをマージできますが、可能な場合は、ストリップだけではなく、マージすることを目指しています。私はこの貪欲なメッシュアルゴリズムについて読みましたが、それを理解するのに多くの問題を抱えています。 だから、私の質問:説明されているように顔のマージを実行するには(動的なテレイン/ライティングの悪いアイデアであるかどうかを無視して)、実装が簡単なアルゴリズムがあるのでしょうか?また、私は貪欲なアルゴリズムをはるかに簡単な方法(リンクまたは説明)で案内する答えを喜んで受け入れます。 実装が簡単な場合や、ストリップを実行するよりも少しだけ優れている場合でも、パフォーマンスが少し低下してもかまいません。ほとんどのアルゴリズムは四角形ではなく三角形に焦点を当てているのではないかと心配しています。現在の方法で2Dアトラスを使用すると、現在のスキルに基づいて三角形を実装できるかどうかわかりません。 PS:私はすでにチャンクごとに錐台カリングを行っており、説明したように、ソリッドブロック間のフェースもカリングします。私はまだ閉塞淘汰をしていないし、決してしないかもしれない。 *編集:私は独自の小さなテクニックを実装しましたが、おそらく名前が付いていますが、6つのリストをたどります。これらのリストは、それらが置かれている軸、ブロックタイプ、照明レベルの順に並べ替えられています。私はそれらを反復処理し、移動しながら新しい長方形を作成し、同時に(特定の軸に向かって大きなバイアスをかけて)それらを成長させます。明らかに最適ではありませんが、実際には非常に高速であり、頂点数を平均で50%近く削減します。Byte56のコメントは、私が本当の答えを考えているクローゼットですが、答え/報奨金としてそれを選択することはできません。 これは、最適化をほとんど行わずに完全な初期地形を生成した後、この問題を処理する私の速くて単純な方法です。与えられたすべての正方形が同じ画像、光レベル、法線などであると仮定します。各色は、私がレンダリングする異なる四角形です。私のリストはそれらがそうであるようにソートされているので、これは非常に簡単/高速なアプローチです。

1
Starcraft 2がマップをレンダリングするのに使用するテクノロジーは何ですか?
実行時に手続き的に生成されるマップがあり、現在このマップをレンダリングする方法を調査しています。私はStarcraft 2の外観に興味を持っており、それを実現するために採用されている方法についてアドバイスをお願いします。第二に、可能であれば、チュートリアル、記事、さらにはソースコードの例を見たいです。 いくつかアドバイスをお願いしたいのですが、私に役立つ他のことをお気軽に提案してください。 スナップ可能なタイルセット-典型的なスタークラフトマップは、一緒にスナップして崖、スロープ、その他の高所の地形を作成できるモデルのタイルセットで構成されているようです。自然に見えるようにするためにどのような方法を採用していますか?つまり、繰り返しを見つけるのは非常に難しいということです。 地形テクスチャ-地形テクスチャは非常に多様でダイナミックです(Zergクリープ)。これにはどのような方法が使用されますか? ありがとう。

2
キャラクターを高角度の斜面に滑り込ませるにはどうすればよいですか?
現在、Unity3Dでキャラクターの動きに取り組んでいます。私はどうにかして彼をマウスカーソルに対して相対的に移動させました。傾斜制限を45°に設定しました。これにより、キャラクターはより高い角度で山を登ることができなくなります。しかし、彼はまだそれらをジャンプすることができます。 傾斜が高すぎる場所でジャンプしたときに、どうすれば彼を再び滑らせることができますか? 前もって感謝します。 編集:基本的な動きのコードスニペット。UnityEngineを使用します。System.Collectionsを使用します。 public class BasicMovement : MonoBehaviour { private float speed; private float jumpSpeed; private float gravity; private float slopeLimit; private Vector3 moveDirection = Vector3.zero; void Start() { PlayerSettings settings = GetComponent<PlayerSettings>(); speed = settings.GetSpeed(); jumpSpeed = settings.GetJumpSpeed(); gravity = settings.GetGravity(); slopeLimit = settings.GetSlopeLimit(); } void Update() { …

3
流れる地形を「ランダムに」生成する正しい方法
シンプルなトップダウンRTSゲームを作成しています。必要に応じて、その場で「ランダムに」マップを生成することを計画しています。私はすべて「パス」で機能することを計画しています: 地形をすべての草で埋めます 戻って、砂利のランダムな噴出をいくつか追加します 砂利を丸める 2番目のレイヤーに山の風景を描く 山を丸める などなど さて、以下のこの写真を見てください: 私は自分のマップエディターを使用してこれを手作業で作成しましたが、うまくいけばパス/ステップ3を実行した後の結果になることを計画しています。 砂利を少なくとも不規則な形にして散発的に自然に見えるように、砂利をいつ、どのように配置するかを決めるにはどうすればよいですか? できればありがとう!どんな助けもありがたいです! 補足として: 各パスは、基本的には次のように、すべてのタイルを繰り返し処理します(マップは40x40のタイルに分割されています)。 for (int x = 0; x <= GRIDMAX - 1; x++) { for (int y = 0; y <= GRIDMAX - 1; y++) { //Terrain(x, y, 0) = SomethingHere; } }

3
ランダムなプールまたは湖を生成する
多角形を描画できる関数を実装しましたが、湖の丸みを帯びたエッジを模倣する滑らかな形状を生成できませんでした。2つの円を生成してエッジを結合してみましたが、十分なばらつきや滑らかさがありません。このような形を生み出す可能性のある指針やアイデアは誰にもありますか?

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

2
Diamond-Squareアルゴリズムの出力はランダムでノイズが多い
C ++でダイヤモンドスクエアアルゴリズムの大まかな解釈を実装して、半現実的なフラクタル地形を作成しましたが、出力は滑らかな岩の形状ではなく、各ポイントでランダムなy値のように見えます。パラメータを変更しましたが、コードの外観を見て問題を理解するのに役立つかもしれません。次に出力の例を示します。 高さの変化を下げたビットマップ(トップダウン)として: それがどのように見えるべきか(これはファイルからロードされます): コード: //Diamond-square algorithm HeightMap::HeightMap(float maxY) { //type = GL_POINTS; //type = GL_LINES; numVertices = RAW_WIDTH*RAW_HEIGHT; //256^2 squares => 257^2 vertices numIndices = (RAW_WIDTH - 1)*(RAW_HEIGHT - 1) * 6; //each square is 2 triangles (6 indices) vertices = new Vector3[numVertices]; textureCoords = new Vector2[numVertices]; indices = …

1
PhysXを使用して、手続き型地形衝突形状を生成する必要がある場所を予測するにはどうすればよいですか?
この状況では、手順で生成した地形の高さの値があります。レンダリングでは、カメラの位置を使用して適切なサイズの高さマップを生成します。ただし、衝突の場合は、オブジェクトが交差する可能性のある領域に高さフィールドを生成する必要があります。 私の現在の潜在的な解決策は、素朴かもしれませんが、すべての「覚醒」物理アクターを反復処理し、それらの境界/範囲と速度を使用して、物理更新後にそれらが存在する球を生成し、クラスター化されたグループを含む範囲の高さ値を生成することです俳優の。ただし、そのデータの多くは、すでにPhysXによってすでに計算されている可能性があります。 地形の高さの値が必要になる場所を予測するために使用できるAPI、おそらくクエリのセット、または空間システムからのコールバックはありますか?

2
Unity:プログラムによる変更をテレインSplatPrototypeに適用する方法?
テレインオブジェクトを追加するスクリプトがあります(パブリックテレインフィールドにテレインをドラッグアンドドロップします)。 テレインはすでにUnityで2つのPaintTexturesが設定されています。1は正方形(タイルサイズで設定され、市松模様のパターンを形成する)で、2つ目は草の画像です。 また、最初のPaintTextureのターゲット強度が低下しているため、市松模様のパターンによって下にある草の一部も表示されます。 ここで、実行時に、最初のPaintTextureのタイルサイズを変更します。つまり、さまざまな実行時の条件に応じて、チェッカーを増減します。Unityのドキュメントを調べたところ、Terrain.terrainData.SplatPrototypeこれを変更できる配列があることがわかりました。またRefreshPrototypes()、terrainDataオブジェクトのFlush()メソッドとオブジェクトのメソッドがありTerrainます。だから私はこのようなスクリプトを作りました: public class AStarTerrain : MonoBehaviour { public int aStarCellColumns, aStarCellRows; public GameObject aStarCellHighlightPrefab; public GameObject aStarPathMarkerPrefab; public GameObject utilityRobotPrefab; public Terrain aStarTerrain; void Start () { //I've also tried NOT drag and dropping the Terrain on the public field //and instead just using the commented line …

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