El modelo de sombreado used by MMA determina las intensidades de píxeles basándose en una relación simple entre la orientación de la superficie local, dirección (es) de la fuente de luz, dirección de la cámara y propiedades difusas y especulares de la superficie. No se tiene en cuenta ningún otro aspecto de la geometría, lo que significa que los objetos no influyen en los valores de píxel de otros objetos, incluso si se encuentran entre el objeto y la fuente de luz.
Esto significa que el modelo no genera sombras. No puede.
Puede simular las sombras usted mismo al proyectar los polígonos de su objeto en el plano de tierra o en los planos de las paredes, según corresponda. Eso no debería ser demasiado difícil, pero las sombras en superficies no planas serán bastante difíciles.
Ejemplo:
polys = (PolyhedronData["GreatRhombicTriacontahedron", "Faces"] //
Normal // N) /. {x_, y_, z_}?VectorQ -> {x, y, z + 6};
(* raise it slightly above ground plane*)
shadow = polys /. {x_, y_, z_}?VectorQ -> {x - z, y, 0};
(* projection from a directional light source at 45 deg elevation *)
Graphics3D[{polys, EdgeForm[], FaceForm[[email protected]], shadow},
Lighting -> {{"Directional", White, {{1, 0, 1}, {0, 0, 0}}}},
Boxed -> False]
Por supuesto, es necesario asegurarse de que las fuentes de luz (punto, punto, dirección ...) y su proyección de sombras son consistentes.
Hasta donde yo sé, la solución más fácil es usar algún programa externo de raytracer y exportar su geometría. Hice esto usando Kerkythea (fácil de aprender/usar para cosas simples, freeware). – Szabolcs
Se ve muy bien. Actualmente estoy desarrollando una arquitectura de escenario/actor/director, donde actualmente el escenario es 'Graphics3D'. Lo que supones funciona solo para una escena. Sin embargo, vale la pena intentarlo, gracias. –