繁体   English   中英

mathematica Graphics3D中的阴影

[英]Shadows in mathematica Graphics3D

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

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

MMA使用的阴影模型,即所谓的Phong阴影 ,基于局部表面取向,光源方向,相机方向和表面的漫反射和镜面反射特性之间的简单关系来确定像素强度。 没有考虑几何的其他方面,这意味着对象不会影响其他对象的像素值,即使它们位于对象和光源之间。

这意味着模型不会生成阴影。 它不能。

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

例:

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]

在此输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM