MaterialShading["material"]
是一个三维图形指令,指定后面的曲面将使用材质 "material" 的外观绘制.
MaterialShading[{"material",col}]
使用指定的颜色 col 作为基色.
MaterialShading[parm1val1,parm2val2,…]
使用指定的参数 parms.
MaterialShading
MaterialShading["material"]
是一个三维图形指令,指定后面的曲面将使用材质 "material" 的外观绘制.
MaterialShading[{"material",col}]
使用指定的颜色 col 作为基色.
MaterialShading[parm1val1,parm2val2,…]
使用指定的参数 parms.
更多信息
- MaterialShading 也称为基于物理的渲染 (Physically Based Rendering) 或 PBR 着色 (PBR Shader).
- MaterialShading 通常用于渲染表面,以模拟现实世界中光和材质相互作用的某些关键方面的方式.
- MaterialShading["material"] 指定表面上的反射率应该很好地接近材质 "material" 的光学特性.
- 可能的材质包括:
- MaterialShading[{"material",col}] 指定材质 "material" 的基色.
- MaterialShading[<|parm1val1,…|>] 指定表面上的反射率应近似于基于物理、几何和照明属性的反射率方程 parmi.
- 材质的可能颜色参数 parmi 包括:
-
"BaseColor" 材质的基色 "EmissionColor" 整个表面发出的光的颜色 "SpecularColor" 镜面反射光的颜色 - 颜色参数 parmi 的值 vali 可以以下列形式给出:
-
col 颜色 Texture[image] 基于图像的二维纹理 {…,s} 颜色对最终颜色的贡献的分数 - 可能的物理参数 parmi 包括:
-
"MetallicCoefficient" 材质表面金属系数 "RoughnessCoefficient" 材质表面粗糙度系数 - 物理参数 parmi 的值 vali 可以以下列形式给出:
-
s 表面属性的分数 Texture[image] 基于图像的二维纹理 - 可能的几何参数 parmi 包括:
-
"SurfaceNormals" 表面的法向量 - 几何参数 parmi 的值 vali 可以以下列形式给出:
-
Texture[image] 基于图像的二维纹理 {…,s} 表面法线的分数 - 材质的透明涂层覆盖的可能参数 parmi 包括:
-
"CoatColor" 涂层的颜色 "CoatRoughnessCoefficient" 涂层的粗糙度系数 - 可能的各向异性参数 parmi 包括:
-
"SpecularAnisotropyCoefficient" 镜面反射各向异性系数 "CoatAnisotropyCofficient" 涂层反射各向异性系数 - 各向异性参数 parmi 的值 vali 可以以下列形式给出:
-
s 相对于视角的反射分数 {s,θ} 反射的旋转 - 材质在掠射角的可能参数 parmi 包括:
-
"SheenColor" 反射光的颜色 "SheenRoughnessCoefficient" 粗糙度系数 - 可能的灯光参数 parmi 包括:
-
"AmbientExposureFraction" 表面上环境光的分数 - 灯光参数 parmi 的值 vali 可以以下列形式给出:
-
s 表面上环境光的分数 Texture[image] 基于图像的二维纹理 - MaterialShading[] 实际上等价于 MaterialShading[<|"BaseColor"White|>].
- MaterialShading 将覆盖任何颜色、Opacity、Texture、Glow 或 Specularity 设置.
范例
打开所有单元 关闭所有单元基本范例 (4)
Graphics3D[{MaterialShading["Iron"], Sphere[]}, Lighting -> "ThreePoint"]Graphics3D[{MaterialShading["Bronze"], KnotData["SolomonSeal", "ImageData"]}, Lighting -> "ThreePoint"]Plot3D[Sin[x + y ^ 2], {x, -3, 3}, {y, -2, 2}, PlotPoints -> 80, PlotStyle -> MaterialShading["Copper"], Mesh -> None, Lighting -> "ThreePoint"]Graphics3D[{MaterialShading["Gold"], ExampleData[{"Geometry3D", "Beethoven"}, "GraphicsComplex"]}, Boxed -> False, Lighting -> "ThreePoint"]范围 (15)
基本用法 (6)
Graphics3D[{MaterialShading["Iron"], #}, Lighting -> "ThreePoint"]& /@ {Sphere[], CapsuleShape[], Cone[]}SphericalPlot3D[1 + Sin[5ϕ] / 5, {θ, 0, Pi}, {ϕ, 0, 2Pi}, Axes -> False, PlotStyle -> MaterialShading["Gold"], PlotPoints -> 40, Lighting -> "ThreePoint"]BarChart3D[Range[5], ChartElements -> [image], ChartStyle -> MaterialShading["Copper"], Lighting -> "ThreePoint"]Region[Style[MengerMesh[2, 3], MaterialShading["Clay"]], Lighting -> "Accent"]Graphics3D[{MaterialShading["Aluminum"], ExampleData[{"Geometry3D", "Galleon"}, "GraphicsComplex"]}, Lighting -> "ThreePoint", Boxed -> False]MaterialShading["Gold"]规范 (6)
Graphics3D[{MaterialShading["Electrum"], Sphere[]}, Lighting -> "ThreePoint"]使用材质实体 Entity:
Graphics3D[{MaterialShading[Entity["Element", "Copper"]], Sphere[]}, Lighting -> "ThreePoint"]Graphics3D[{MaterialShading[{"Electrum", Cyan}], Sphere[]}, Lighting -> "ThreePoint"]Graphics3D[{MaterialShading[<|"BaseColor" -> Red, "MetallicCoefficient" -> 1.0, "RoughnessCoefficient" -> 0.8 |>], Sphere[]}, Lighting -> "ThreePoint"]使用 LightDarkSwitched 来为浅色和深色模式指定不同的颜色:
graphic = Graphics3D[{MaterialShading[<|"BaseColor" -> LightDarkSwitched[Red, Cyan]|>], Sphere[]}, Lighting -> "ThreePoint"];{LightModePane[graphic], DarkModePane[graphic]}没有参数的 MaterialShading[] 使用 White 基色:
Graphics3D[{MaterialShading[], Sphere[]}, Lighting -> "ThreePoint"]灯光 (3)
MaterialShading 适用于所有类型的灯光:
lights = {{"Ambient", LightGray}, {"Point", White, ImageScaled[{1, 1, 2}]}, {"Directional", White, ImageScaled[{1, 1, 2}]}, {"Spot", White, {{1, -1, 1}, {0, 0, 0}}, Pi / 4}};
Graphics3D[{MaterialShading["Iron"], Sphere[]}, Lighting -> {#}]& /@ lightsGraphics3D[{MaterialShading["Iron"], Sphere[]}, Lighting -> {{"Directional", Red, ImageScaled[{1, -0.5, 1}]}, {"Directional", Green, ImageScaled[{-1, -0.5, 1}]}, {"Directional", Blue, ImageScaled[{0, 1, 1}]}, {"Ambient", GrayLevel[0.2]}}]使用 "ThreePoint" 或 "Accent" 灯光真实再现表面颜色:
Graphics3D[{MaterialShading["Iron"], Sphere[]}, Lighting -> #] & /@ { "ThreePoint", "Accent", Automatic}应用 (14)
基本应用 (10)
knot = IconizedObject[«[image]»];
materials = {"Aluminum", "Brass", "Bronze", "Copper", "Electrum", "Gold", "Iron", "Pewter", "Silver", "Clay", "Foil", "Glazed", "Plastic", "Rubber", "Satin", "Velvet"};Grid[Partition[Labeled[Graphics3D[{MaterialShading[#], knot}, Lighting -> "ThreePoint", Boxed -> False, ImageSize -> 72, Method -> {"ShrinkWrap" -> True}], #]& /@ materials, 4, 4, 1, {}], Spacings -> {1, 1}]Table[Graphics3D[{MaterialShading[<|"BaseColor" -> c|>], Sphere[]}, Lighting -> "ThreePoint"], {c, {RGBColor[0.34398, 0.49112, 0.89936], RGBColor[0.97, 0.606, 0.081], RGBColor[0.91, 0.318, 0.243]}}]使用 "RoughnessCoefficient" 参数设置材料的光泽度:
Table[Graphics3D[{MaterialShading[<|"RoughnessCoefficient" -> r|>], Sphere[]}, Lighting -> "ThreePoint"], {r, {0.15, 0.4, 1.0}}]使用 "SpecularColor" 参数设置闪亮材质上镜面高光的颜色:
Table[Graphics3D[{MaterialShading[<|"SpecularColor" -> s, "RoughnessCoefficient" -> 0.3|>], Sphere[]}, Lighting -> "ThreePoint"], {s, {RGBColor[0.34398, 0.49112, 0.89936], RGBColor[0.97, 0.606, 0.081], RGBColor[0.91, 0.318, 0.243]}}]基色设置为 Black的镜面高光:
Table[Graphics3D[{MaterialShading[<|"SpecularColor" -> s, "RoughnessCoefficient" -> 0.3, "BaseColor" -> Black|>], Sphere[]}, Lighting -> "ThreePoint"], {s, {RGBColor[0.34398, 0.49112, 0.89936], RGBColor[0.97, 0.606, 0.081], RGBColor[0.91, 0.318, 0.243]}}]使用 "MetallicCoefficient" 参数创建金属材质:
Table[Graphics3D[{MaterialShading[<|"MetallicCoefficient" -> m, "RoughnessCoefficient" -> 0.7|>], Sphere[]}, Lighting -> "ThreePoint"], {m, {0, 1}}]Table[Graphics3D[{MaterialShading[<|"BaseColor" -> c, "MetallicCoefficient" -> 1, "RoughnessCoefficient" -> 0.7|>], Sphere[]}, Lighting -> "ThreePoint"], {c, {RGBColor[0.34398, 0.49112, 0.89936], RGBColor[0.97, 0.606, 0.081], RGBColor[0.91, 0.318, 0.243]}}]使用 "SpecularAnisotropyCoefficient" 参数设置材质的偏好,以沿其切线方向反射光线:
Table[Graphics3D[{MaterialShading[<|"MetallicCoefficient" -> 1, "RoughnessCoefficient" -> 0.7, "SpecularAnisotropyCoefficient" -> a|>], Sphere[]}, Lighting -> "Accent"], {a, {0, 0.5, 1.0}}]Table[Graphics3D[{MaterialShading[<|"MetallicCoefficient" -> 1, "RoughnessCoefficient" -> 0.7, "SpecularAnisotropyCoefficient" -> {1.0, θ}|>], Sphere[]}, Lighting -> "Accent"], {θ, {0, Pi / 4, Pi / 2}}]使用 "EmissionColor" 参数设置材质本身发出的光:
Table[Graphics3D[{MaterialShading[<|"EmissionColor" -> c|>], Sphere[]}, Lighting -> "Accent"], {c, {Red, Green, Blue}}]Graphics3D[{MaterialShading[<|"EmissionColor" -> Red|>], Sphere[]}, Lighting -> None]Table[Graphics3D[{MaterialShading[<|"SheenColor" -> c|>], Sphere[]}, Lighting -> "Accent"], {c, {RGBColor[0.34398, 0.49112, 0.89936], RGBColor[0.97, 0.606, 0.081], RGBColor[0.91, 0.318, 0.243]}}]参数 "SheenRoughnessCoefficient" 设置光泽照明的浓度:
Table[Graphics3D[{MaterialShading[<|"SheenColor" -> RGBColor[0.34398, 0.49112, 0.89936], "SheenRoughnessCoefficient" -> r|>], Sphere[]}, Lighting -> "Accent"], {r, {0.1, 0.9}}]Graphics3D[{MaterialShading[<|"MetallicCoefficient" -> 1|>], Sphere[]}, Lighting -> "Accent"]使用 "RoughnessCoefficient" 参数来增加金属的粗糙度:
Graphics3D[{MaterialShading[<|"MetallicCoefficient" -> 1, "RoughnessCoefficient" -> #|>], Sphere[]}, Lighting -> "Accent"]& /@ {1 / 3, 2 / 3, 1}"AmbientExposureFraction" 参数对定向光、点光或聚光灯没有影响:
lights = {{"Directional", White, ImageScaled[{1, 1, 4}]}, {"Point", White, ImageScaled[{1, 1, 2}]}, {"Spot", White, {ImageScaled[{1, 1, 2}], {0, 0, 0}}, Pi / 4}};
Graphics3D[{MaterialShading[<|"AmbientExposureFraction" -> Texture[[image]]|>], Sphere[]}, Lighting -> {#}]& /@ lights使用环境光查看 "AmbientExposureFraction" 参数的效果:
Graphics3D[{MaterialShading[<|"AmbientExposureFraction" -> Texture[[image]]|>], Sphere[]}, Lighting -> {{"Directional", Gray, ImageScaled[{1, 1, 4}]}, {"Ambient", Gray}}]逼真材质 (4)
Graphics3D[{MaterialShading[], Sphere[]}, Lighting -> "ThreePoint"]Graphics3D[{MaterialShading[<|"BaseColor" -> Texture[[image]], "SurfaceNormals" -> Texture[[image]]|>], Sphere[]}, ...]Graphics3D[{MaterialShading[<|"BaseColor" -> Texture[[image]], "SurfaceNormals" -> Texture[[image]], "RoughnessCoefficient" -> 0.65, "MetallicCoefficient" -> Texture[[image]] |>], Sphere[]}, Lighting -> "ThreePoint", Boxed -> False, ViewPoint -> Front]Graphics3D[{MaterialShading[<|"BaseColor" -> GrayLevel[0.15], "SurfaceNormals" -> Texture[[image]], "RoughnessCoefficient" -> 0.6, "EmissionColor" -> Texture[[image]] , "SpecularColor" -> GrayLevel[1]|>], Sphere[]}, Lighting -> "Accent", Boxed -> False, ViewPoint -> Right]属性和关系 (3)
没有参数的 MaterialShading 近似于默认系统外观:
{Graphics3D[{MaterialShading[], Sphere[]}], Graphics3D[{Sphere[]}]}Graphics3D[{MaterialShading[<|"BaseColor" -> Texture[[image]] |>], Cuboid[]}, Lighting -> "Neutral"]使用 VertexTextureCoordinates 为二维纹理指定顶点纹理坐标:
Graphics3D[{MaterialShading[<|"BaseColor" -> Texture[[image]]|>], Polygon[{{-2, -1, 0}, {2, -1, 0}, {2, 1, 0}, {-2, 1, 0}}, VertexTextureCoordinates -> {{0, 0}, {2, 0}, {2, 1}, {0, 1}}]}]可能存在的问题 (1)
巧妙范例 (1)
With[{c = 0.8}, ContourPlot3D[((x ^ 2 + y ^ 2 - c ^ 2) ^ 2 + (z ^ 2 - 1) ^ 2) ((y ^ 2 + z ^ 2 - c ^ 2) ^ 2 + (x ^ 2 - 1) ^ 2) ((z ^ 2 + x ^ 2 - c ^ 2) ^ 2 + (y ^ 2 - 1) ^ 2), {x, -1.5, 1.5}, {y, -1.5, 1.5}, {z, -1.5, 1.5}, Contours -> {0.1}, ContourStyle -> {MaterialShading[{"Glazed", Red}]}, Boxed -> False, Axes -> False, Background -> GrayLevel[.1], Lighting -> "ThreePoint", Mesh -> False, ViewAngle -> Pi / 10, ViewVertical -> {0, 1, 0}, PlotPoints -> 50]]技术笔记
-
▪
- 基于物理的渲染
相关指南
-
▪
- 图形指令
文本
Wolfram Research (2021),MaterialShading,Wolfram 语言函数,https://reference.wolfram.com/language/ref/MaterialShading.html.
CMS
Wolfram 语言. 2021. "MaterialShading." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/MaterialShading.html.
APA
Wolfram 语言. (2021). MaterialShading. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/MaterialShading.html 年
BibTeX
@misc{reference.wolfram_2026_materialshading, author="Wolfram Research", title="{MaterialShading}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/MaterialShading.html}", note=[Accessed: 19-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_materialshading, organization={Wolfram Research}, title={MaterialShading}, year={2021}, url={https://reference.wolfram.com/language/ref/MaterialShading.html}, note=[Accessed: 19-June-2026]}