Frage

Ich habe ein 3D-Modell eines Hauses, wo das Dach unsichtbar ist, so dass die Zimmer zu sehen ist (Wie hier )

Aber (bis jetzt) ??Ich habe keine Texturen und jede Oberfläche hat die gleiche Farbe, z. B.

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

Wenn ich es in einem WPF Viewport3D sehen, mag ich in der Lage sein, zwischen den Oberflächen zu unterscheiden. zum Beispiel, ich möchte, um zu sehen, wenn die Bodenende und die Wand beginnt.

Dies sollte möglich sein, durch das Objekt Beleuchtung. Ich habe bereits versucht:

Umgebungslicht nicht funktioniert, weil alle Flächen würden gleichermaßen gefärbt aussehen:

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

Und wenn ich gerichtetes Licht verwenden und halten ihre Position an die bewegliche Kamera, einige Flächennormalen sind manchmal fast senkrecht zur Kamera / Licht und so sind fast schwarz, die noch unnatürlich aussieht.

Also, was ist ein guter Weg, um die Oberflächen eines einfarbigen 3DObject in einem WPF Viewport3D?

zu unterscheiden

Edited nach Benutzer "jdv" schrieb seinen Kommentar

War es hilfreich?

Lösung

Da Sie zwei Lichtquellen verwenden können, würde ich versuchen, ein schwaches Licht unter Verwendung als Umgebungshintergrundlicht zu handeln und etwas stärker gerichtetes Licht Gegensatz zu den Oberflächen zu geben.

Ich bin kein 3D-Experte, würde aber denken Sie an es auf diese Weise:

In einem dunklen Raum (kein Umgebungslicht), mit einer Taschenlampe (die gerichtetes Licht), werden Sie dramatische Unterschiede sehen basierend auf dem Winkel der Oberfläche der Taschenlampe. Fügen Sie einige Umgebungsbeleuchtung und die Härte dieser Unterschiede nimmt ab, wenn Ihre Umgebungslichtquelle stärker wird, bis zu einem bestimmten Zeitpunkt, es die Taschenlampe und alles übertönt erscheint gleichmäßig ausgeleuchtet.

Viel Glück, hoffen Sie in der Lage sind, die Wirkung sind Sie nach zu erreichen.

Andere Tipps

Ich persönlich finde, dass dies die „besten“ erreicht werden kann durch eine Kombination von zwei Leuchten.

  1. A dim (vielleicht 30% leuchtet) Umgebungslicht. Dies zeigt immer alle Oberflächen.
  2. Ein gerichtetes Licht, bei etwa 80% weiß, was die Kamera folgt, ist aber um 30 Grad oder so. Ich ein Licht finden „über die linke Schulter des Kamera“ neigt zu sein, was die Menschen oft erwarten.

Auch wenn Ihre Flächennormalen sind nicht immer korrekt sein werden, können Sie ein drittes Licht verwenden - ein weiteres gerichtete Licht zeigt die entgegengesetzte Richtung der ersten. Dadurch wird die Rückseiten der Flächen leuchtet, wenn Sie unangemessene Normalen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top