3

部屋が見えるように屋根が見えない家の3Dモデルがあります(ここのように)

しかし(今のところ)テクスチャはなく、各サーフェスは同じ色です。たとえば、

var myMaterial = new DiffuseMaterial (new SolidColorBrush(myColor))

WPF Viewport3D で表示する場合、サーフェスを区別できるようにしたいと考えています。たとえば、いつ床が終わり壁が始まるかを見たいとします。

これは、オブジェクトを照らすことで可能になるはずです。私はすでに試しました:

すべての表面が同じ色に見えるため、環境光は機能しません。

myViewport3D.Children.Add(new ModelVisual3D(){Content = new AmbientLight(Colors.White)})

また、ディレクショナル ライトを使用してその位置を移動するカメラに固定すると、一部のサーフェス法線がカメラ/ライトに対してほぼ垂直になり、ほぼ黒になり、さらに不自然に見えます。

では、WPF Viewport3D で単一色の 3DObject の表面を区別する良い方法は何でしょうか?


ユーザー「jdv」がコメントを書いた後に編集

4

2 に答える 2

4

個人的には、これは 2 つのライトの組み合わせによって「最高」に達成できると思います。

  1. 薄暗い (おそらく 30% 点灯) 環境光。これにより、常にすべてのサーフェスが表示されます。
  2. カメラに追従する約 80% の白のディレクショナル ライト。ただし、30 度程度オフになっています。「カメラの左肩越し」のライトは、多くの人が期待するものであることがわかりました。

また、サーフェスの法線が常に正しいとは限らない場合は、3 番目のライト (最初のライトとは反対の方向を指す別のディレクショナル ライト) を使用できます。不適切な法線がある場合、これによりサーフェスの背面が照らされます。

于 2010-10-02T21:32:13.117 に答える
2

2 つの光源を使用できるので、周囲の背景光として機能する薄暗い光と、表面にコントラストを与えるやや強い指向性光を使用してみます。

私は 3D の専門家ではありませんが、次のように考えます。

暗い部屋 (周囲光がない) で懐中電灯 (指向性ライト) を使用すると、懐中電灯に対する表面の角度に基づいて劇的な違いが見られます。環境照明を追加すると、環境光源が強くなるにつれてこれらの違いの厳しさが減少し、ある時点でそれが懐中電灯を圧倒し、すべてが均一に照らされているように見えます.

頑張ってください、あなたが求めている効果を達成できることを願っています.

于 2010-10-02T21:20:43.490 に答える