SceneKit之SCNMaterial

2019-05-20  本文已影响0人  沈枫_ShenF

SCNMaterial

A set of shading attributes that define the appearance of a geometry's surface when rendered

当我们创建一个SCNMaterial对象时,该对象包含一系列SCNMaterialProperty属性及其他可视化属性、选项。
通过使用SCNGeometry类的firstMaterialmaterials属性将一个或多个SCNMaterial对象附加到SCNMaterial对象实例上。

SCNMaterialProperty

A container for the color or texture of one of a material’s visual properties.

字面意思看,SCNMaterialProperty属性为SceneKit的呈现提供了纯色、纹理或其他2D内容。

一种材质有几个视觉特性,它们共同决定了它在光照和阴影下的外观。SceneKit通过将SCNMaterialProperty属性的信息与灯光的位置、强度和颜色相结合来呈现场景中的每个像素。

SCNMaterialProperty属性的内容可以是一种颜色,或者是纹理,SceneKit使用材质所依附的几何对象提供的纹理坐标在材质的表面上进行映射。反过来,纹理可以来自任何的几个来源,如image object, a URL to an image file,一组特定格式的图像,甚至可以是由Core AnimationSpriteKitAVFoundation提供的动画 。

SCNMaterial.LightingModel

Constants specifying the lighting and shading algorithm to use for rendering a material.

SceneKit提供了几种不同的照明模型,每种模型都将来自材料的视觉属性的信息与场景中的灯光和其他内容相结合。

照明模型
color = ambient * al + diffuse * max(0, dot(N, L)) + specular * pow(max(0, dot(H, N)), shininess)
color = ambient * al + diffuse * max(0, dot(N, L)) + specular * pow(max(0, dot(R, E)), shininess)
  1. 漫反射属性(在某些创作工具中称为反照率)提供了材质的“基本”颜色。

  2. 粗糙度属性(在某些创作工具中称为平滑性)是对真实表面微观细节的近似。通过将这些“微观层面”近似为一个单独的术语,这一特性有助于生成类似于现实世界物理的节能定律的照明计算,从而在哑光和有光泽的表面之间产生更真实的变化。

  3. 金属特性近似于物理表面的其他方面,如折射率、产生尖锐反射的倾向以及在掠射角上产生菲涅耳反射的倾向,这些特性一起产生了整体的金属或非金属(也称为介电)外观。

总之,SCNMaterial对象的lightingModel属性确定SceneKit用于将视觉属性与场景中的灯光结合起来的规则,从而为呈现场景中的每个像素生成最终颜色。

上一篇下一篇

猜你喜欢

热点阅读