1

みなさん、こんにちは。

画像にあるように、GL_LINE_STRIPを使用してたくさんの輪郭を描きます。しかし、輪郭は混乱しているように見え、これをどのように見栄えよくすることができるのか疑問に思っています。(深さなどを確認するには)輪郭をレンダリングする必要があるので、GL_LINE_STRIPに固執する必要があります。 ?

前もって感謝します

元の画像

http://oi53.tinypic.com/287je40.jpg

http://oi53.tinypic.com/287je40.jpg

4

3 に答える 3

4

等高線の照明はあまり効果的ではありませんが、霧を使用するか、距離(または高度)に基づいて線の色を手動で設定して、奥行き効果を与えることができます。

于 2010-11-02T07:57:05.033 に答える
3

更新しました:

umanga、最初は、ライティングはサーフェスの法線ベクトルに基づいているため、ライティングは機能しないと思いました。サーフェスがありません。ただし、@ roeは、法線ベクトルは実際にはOpenGLの頂点ごとであり、そのため、どのPOLYLINEでも法線を持つことができると指摘しました。だからそれはオプションでしょう。

@Julienが言ったように、3Dラインの法線がどうあるべきかは完全には明らかではありません。問題は、結果として得られる照明が視覚的に意味をなし、深さを明確にするのに役立つように、等高線の法線をどのように定義するかです。

各輪郭のすべての頂点が同一平面上にある場合(たとえば、XY平面内)、3D法線を2D法線に設定し、Z座標を0にすることができます。結果として得られる照明は、奥行きではないかもしれませんが、視覚的な形の感覚を与えます。

線に沿った各ポイントでのサーフェスの勾配がわかっている場合(サーフェスがあると仮定)、サーフェス法線を使用して、深さをより適切に表示できます。これは基本的に、等高線にのみ適用される陰影起伏のようなものです。問題は、なぜ表面全体を表示しないのかということです。

更新の終了

高度(地形の等高線ですか?)または視聴者からの距離に基づいて線の色を設定するというベンの提案に+1します。http://en.wikipedia.org/wiki/File:IsraelCVFRtopography.jpgのように、各輪郭で囲まれたポリゴンを同様の色で塗りつぶすこともできます。

線をより明確にする別の方法は、線を少なくすることです...輪郭の密度を調整できますか?たとえば、1フィートごとではなく5フィートの高さの差ごとに1つの等高線、または単位が何であれ。それが何であるかに応じて、あなたは輪郭を描いています。

奥行きを解明するための他の手法には、立体視、視聴者が見ている間に3Dで画像を回転させることが含まれます。

于 2010-11-02T10:00:05.773 に答える
2

シェーディングを探している場合は、通常、輪郭をソリッドに変換します。これを行う通常の方法は、境界またはそれ以降の高さがゼロの4つのコーナーポイントを設定し、輪郭をメッシュにドロップして、メッシュに座標を三角形分割することでメッシュを作成することです。これが完了すると、三角形分割されたソリッドが作成されます。法線を見つけて隣接する面上で滑らかにして滑らかな地形を作成できる船体。

メッシュを三角測量するために、通常は少し獣であるDelaunayアルゴリズムを使用しますが、それを行うためのライブラリが存在します。私が知っている中で最も優れているのは、かなり最適であるため、ストルフィの論文としてギバスに基づいたものです。

法線を生成するには、単純な外積を実行し、向きが正しいことを確認して、glNormalにフィードする前に手動でそれらを再正規化します。

以前は結果からglListを作成していましたが、新しい方法は頂点配列を作成することです。余分なフラッシュが必要な場合は、一致する平面を探し、メッシュを最適化して再描画を高速化できますが、それは少しブラックアートです-ゲームには適していますが、CADにはあまり適していません。

(前回のボーナスはthx)

于 2010-11-02T14:33:44.353 に答える