2017-12-04 37 views
2

道路プロファイルごとに地形の変形にOSG(Openscenegraph)を使用する予定です。道路メッシュは別々に生成されており、地形上に配置します。 OSGによって生成された地形は、道路プロファイルごとに変形する必要があります。地形クワッドタイルセルが大きすぎる可能性があるため、滑らかさのために道路境界に近い地形ジオメトリに追加のジオメトリを追加する必要があります。OpenGL/DirectXの道路プロファイルごとの地形変形

この状況では、以下の2つの画像のように視覚化しようとしました。 私が見ている最良の方法は、OSGがOSGBファイルとして地形タイルを生成させることです。私は道路の境界点を知っています。私は道路の一部がどの地形のタイルを倒すかを知ることができます。のは、私はこの数字ごとなど、特定の地形クワッドタイルのための道路境界点を知っているとしましょう:

Terrain Top view

今、私はテッセレーションに必要や道路のパスに下落している地形タイルセルを細分化。

こうして私は道路の境界線で地形メッシュを大きくするだけでなく、変形する必要があります。 質問:これを達成するための最良のアプローチは何ですか?

  • テッセレーションシェイダーのアプローチを使用しても構いませんが、道路の境界線ではなくカメラを動かすすべての場所をテッセレーションすることがあります。道路の表面をハイライト表示するグレースケールのテクスチャランタイムを作成して、道路の境界線をテッセレーションするためにTessシェーダに渡します。&
  • 道路がある地形の穴を切るために、古いOpenGL GluTessを巻き線の順序で使用することがあります。しかし、セルサイズが大きければ、それらは非常に長い三角形を作成することがあります。 誰でも私にこれにアプローチするためのいくつかの指針を与えることができますか?ちなみに、各地形タイルには道路舗装もあります。

OpenGl/DirectXのヘルプ/サポートも本当に役に立ちます。 ありがとう!

Terrain & road cross section

答えて

0

I溶液が切断又は堤防をシミュレートするために必要とされる形状の各辺に沿って取り付けられた「寸前」メッシュと道路のための別個のメッシュを作成することだと思います。道路稜線メッシュの外縁には、それらが合流する高さマップに一致する頂点が必要です。地形要素がその上に漏れることがないように、高さマップは道路尾根帯の下で適切に歪まなければなりません。とにかく見るべきではないので、特別な極端な負の高さを割り当てることができます。これは、GPUサイクルを節約する "レンダリングに気を使わない"ことを意味します。この準備作業はすべてオフラインで行うことができます。

レンダリング時に、引き裂きを避けるために、道路と地形の一致するエッジに沿ってテッセレーション係数を一致させることが重要です。いくつかの実行時間を犠牲にして、エッジのテッセレーション係数は、他の場所の詳細レベルにかかわらず最大に設定できます。私はまだそれをコード化する方法を見ていませんが、すべての適用可能なエッジが1つの極端な負の頂点と2つの普通の頂点を持つ三角形に属しているので、シェーダでこれを検出することは可能かもしれません。

vergesにはテクスチャリングが追加されている可能性があります。詳細については、河川や池のマージンなどに役立ちます。

関連する問題