Question

J'ai un Modell 3D d'une maison, où le toit est invisible pour que les chambres peuvent être vus (Comme )

Mais (pour l'instant) je n'ai pas textures et chaque surface a la même couleur, par exemple.

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

Si je l'ai vue dans un WPF Viewport3D, je veux être en mesure de faire la différence entre les surfaces. par exemple, je veux voir quand les extrémités de plancher et le mur commence.

Cela devrait être possible en allumant l'objet. Je l'ai déjà essayé:

La lumière ambiante ne fonctionne pas, parce que toutes les surfaces regarderais même couleur:

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

Et si j'utilise la lumière directionnelle et le bâton de sa position à la caméra en mouvement, certains Normales de surface sont parfois presque perpendiculaires à la caméra / lumière et sont donc presque noir, ce qui est encore plus naturel.

Alors, quelle est une bonne façon de distinguer les surfaces d'un 3DObject unique de couleur dans un WPF Viewport3D?


Edité après que l'utilisateur "JDV" a écrit son commentaire

Était-ce utile?

La solution

Comme vous pouvez utiliser 2 sources de lumière, je voudrais essayer d'utiliser une lumière faible pour agir comme une lumière de fond ambiant et une lumière directionnelle un peu plus forte pour donner contraste avec les surfaces.

Je ne suis pas un expert 3d, mais pense de cette façon:

Dans une salle sombre (pas de lumière ambiante), avec une lampe de poche (la lumière directionnelle), vous verrez des différences considérables en fonction de l'angle de la surface à votre lampe de poche. Ajouter un éclairage ambiant et la dureté de ces différences diminue à mesure que votre source de lumière ambiante devient plus forte, jusqu'à ce que à un moment donné, il subjugue la lampe de poche et tout semble uniformément éclairé.

Bonne chance, espérons que vous êtes en mesure d'obtenir l'effet que vous recherchez.

Autres conseils

Personnellement, je trouve que cela peut être accompli le « meilleur » par une combinaison de deux feux.

  1. Un faible (peut-être 30% allumé) la lumière ambiante. Cela montre toujours toutes les surfaces.
  2. Une lumière directionnel, à environ 80% de blancs, qui suit la caméra, mais est décalé de 30 degrés ou plus. Je trouve une lumière « sur l'épaule gauche de l'appareil » a tendance à être ce que les gens attendent souvent.

En outre, si votre surface de Normales ne vont pas toujours être correct, vous pouvez utiliser un troisième feu - une autre lumière directionnelle pointant vers le sens opposé de la première. Cela lumière les faces arrière des surfaces si vous avez Normales inappropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top