Pregunta

Tengo un Modelo 3D de una casa, donde el techo es invisible para que las habitaciones se pueden ver (Como aquí )

Pero (por ahora) no tengo texturas y cada superficie tiene el mismo color, por ejemplo.,

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

Si yo lo veo en un WPF Viewport3D, quiero ser capaz de diferenciar entre las superficies. por ejemplo, Quiero ver cuando los extremos del piso y la pared aperturas.

Esto debería ser posible por la iluminación del objeto. Ya he probado:

La luz ambiental no funciona, ya que todas las superficies se vería igual de color:

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

Y si uso la luz direccional y se adhieren a su posición de la cámara en movimiento, algunas veces normales de la superficie son casi perpendiculares a la cámara / luz y por lo tanto son casi negro, que se ve aún más natural.

Entonces, ¿qué es una buena manera de distinguir las superficies de un solo color 3DObject en un WPF Viewport3D?


Editado después de usuario "jdv" escribió su comentario

¿Fue útil?

Solución

Ya que se puede utilizar 2 fuentes de luz, me gustaría probar el uso de una luz tenue para actuar como una luz ambiental de fondo y una luz direccional algo más fuerte para dar contraste a las superficies.

No soy un experto en 3D, pero creo que de esta manera:

En un cuarto oscuro (sin luz ambiental), con una linterna (la luz direccional), verá grandes diferencias en función del ángulo de la superficie de su linterna. Añadir un poco de iluminación ambiente y la dureza de esas diferencias disminuye a medida que la fuente de luz ambiente se hace más fuerte, hasta que en algún punto, se impone sobre la linterna y todo parece una iluminación uniforme.

Buena suerte, espero que son capaces de lograr el efecto deseado.

Otros consejos

En lo personal, me parece que esto se puede lograr la "mejor" por una combinación de dos luces.

  1. A dim (tal vez 30% iluminado) la luz ambiente. Esto siempre muestra todas las superficies.
  2. Una luz direccional, en alrededor de 80% de blancos, que sigue a la cámara, pero está desactivada de 30 grados o menos. Me parece una luz "sobre el hombro izquierdo de la cámara" tiende a ser lo que la gente a menudo esperan.

Además, si sus superficies normales no siempre van a ser correcta, se puede utilizar una tercera luz - otra luz direccional que apunta la dirección opuesta a la primera. Se iluminará las caras posteriores de las superficies si tienes normales inapropiados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top