Wolfram mathematica mathematica Graphics3D中的阴影

Wolfram mathematica mathematica Graphics3D中的阴影,wolfram-mathematica,3d,Wolfram Mathematica,3d,如果我正确理解Mathematica文档(也没有找到示例),Graphics3D不会生成3D对象的阴影,尽管Graphics3D有一个照明->选项 问题:您是否尝试过生成带有阴影的Mathematica 3D对象?如果是这样,你在Mathematica中解决了这个问题吗?或者您是否已将图形导出到其他3D(场景图)查看器,例如J-Reality?所谓的着色模型基于局部曲面方向、光源方向、摄影机方向以及曲面的漫反射和镜面反射属性之间的简单关系来确定像素强度。不考虑几何体的其他方面,这意味着对象不会影

如果我正确理解Mathematica文档(也没有找到示例),Graphics3D不会生成3D对象的阴影,尽管Graphics3D有一个照明->选项

问题:您是否尝试过生成带有阴影的Mathematica 3D对象?如果是这样,你在Mathematica中解决了这个问题吗?或者您是否已将图形导出到其他3D(场景图)查看器,例如J-Reality?

所谓的着色模型基于局部曲面方向、光源方向、摄影机方向以及曲面的漫反射和镜面反射属性之间的简单关系来确定像素强度。不考虑几何体的其他方面,这意味着对象不会影响其他对象的像素值,即使它们位于对象和光源之间

这意味着模型不会生成阴影。这是不可能的

您可以通过将对象的多边形投影到地平面或墙平面(如适用)来模拟阴影。这应该不会太难,但非平面曲面上的阴影将非常硬

例如:

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[Darker@Gray], shadow}, 
 Lighting -> {{"Directional", White, {{1, 0, 1}, {0, 0, 0}}}}, 
 Boxed -> False]


当然,您需要确保光源(点、点、方向…)和阴影投影一致。

据我所知,最简单的解决方案是使用一些外部光线跟踪器程序,并导出几何体。我是用Kerkythea(易学/易用,免费软件)做的。看起来很不错。我目前正在使用stage/actor/director架构进行开发,目前stage是“Graphics3D”。您所假设的仅适用于一个场景。不过值得一试,谢谢。看起来不错!但是,嗯。。。添加阴影=将=困难。无论如何,在我(即将发布的)应用程序中。-谢谢你的回答。