SceneKit---Materials材质

2023-11-01 02:11
文章标签 材质 materials scenekit

本文主要是介绍SceneKit---Materials材质,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接: http://www.jianshu.com/p/936752aff5a3

说明

本系列文章是对<3D iOS Games by Tutorials>一书的学习记录和部分翻译,此书对应的代码地址:https://github.com/XanderXu/3D-iOS-Games-by-Tutorials-code

系列文章

1.Hello SceneKit http://www.jianshu.com/p/fd32aa0d896a
2.physics物理效果 http://www.jianshu.com/p/d11befb651c2
3.Render Loop渲染循环 http://www.jianshu.com/p/4f6a8c878465
4.Particle Systems粒子系统 http://www.jianshu.com/p/4d21dca40c7d
5.3D空间的触摸事件 http://www.jianshu.com/p/6328c8d68409
6.Scene Editor场景编辑器 http://www.jianshu.com/p/2058ce941b08
7.Cameras相机 http://www.jianshu.com/p/3d7cc97c47bc
8.Lights灯光 http://www.jianshu.com/p/c18a7f082f49
9.Basic Collision Detection碰撞检测基础 http://www.jianshu.com/p/8e2691143970
10.Materials材质 http://www.jianshu.com/p/936752aff5a3
11.Reference Nodes引用节点 http://www.jianshu.com/p/d5e909c1a54d
12.Shadows阴影 http://www.jianshu.com/p/fb5f2cdb7f9c
13.Intermediate Collision Detection碰撞检测中级 http://www.jianshu.com/p/c7b2e1dd3c91
14.Motion Control运动控制 http://www.jianshu.com/p/046a7c5781b8
15.Transitions转场 http://www.jianshu.com/p/f2c482282e18
16.Actions动作 http://www.jianshu.com/p/ec72ec1a0e4b
17.Audio音频 http://www.jianshu.com/p/49767d2d59b3

最终的实时渲染效果图


QQ20170409-001805@2x.png

Lighting models(照明模型)


QQ20170409-001823@2x.png
  • Constant:使用一个扁平的照明模型,在计算渲染像素的颜色时,只包含ambient信息.
  • Lambert:在计算渲染像素的颜色时,只包含ambient信息和diffuse信息.
  • Blinn:在计算渲染像素的颜色时,只包含ambient信息,diffuse信息,specular信息,而且specular高光区是用Blinn-Phong法则计算的.
  • Phong:在计算渲染像素的颜色时,只包含ambient信息,diffuse信息,specular信息,而且specular高光区是用Phong法则计算的.

Materials(材质)

一般也就是textures(纹理).
纹理实际是2D图片按照几何体内部的纹理坐标系展开,包裹在3D几何体表面.所有Scene Kit内部自带的初始形状已经包含了这个坐标信息.

  • Diffuse map(颜色贴图,漫反射贴图):给几何体一个基本的颜色纹理,不考虑灯光和特效:


    QQ20170409-111646@2x.png
  • Normal map(法线贴图):在上篇文章的灯光里讲过,灯光是使用形状表面的法向量来决定照亮哪个面的.系统自带形状是使用单一的整个面的向量,而法线贴图则以RGB值定义了精确到每个像素的法向量,这样每个像素对灯光的反应都不同,形成表面崎岖不平的灯光效果.


    QQ20170409-111705@2x.png

    QQ20170409-111814@2x.png
  • Reflective map(反射贴图):以黑白图片精确定义了材质每个像素的反光程度.就是周围环境的光线在物体表面映射出的图像(实际就是天空盒子图像在物体表面的反光).


    QQ20170409-111848@2x.png

    QQ20170409-111903@2x.png

需要注意的是
反射贴图和前面两个贴法不同,不是直接拉伸包裹在几何体上面的,而是用cube mapping(立方体贴图)来完成的.想像一个立方体,六个面的纹理并排水平放置,就形成了立方体贴图:


QQ20170409-111833@2x.png

QQ20170409-114742@2x.png
  • Occlusion map(闭塞贴图):也就是ambient occlusion map(AO贴图,环境光闭塞贴图),只有当场景中有ambient light环境光时才有作用,精确定义了每个像素在环境光作用下的被照亮程度.也就是让几何体的黑色部分不被环境光照亮而变浅.

QQ20170409-111917@2x.png

QQ20170409-111930@2x.png
  • Specular map(镜面贴图,高光贴图):镜面贴图决定了几何体的镜面程度,黑色部分就是不光滑,白色就是光滑反光.会影响Normal map(法线贴图)外部光线照射反光和Reflective map(反射贴图)外部天空盒子图像反光的清晰程度


    QQ20170409-111949@2x.png

    QQ20170409-112002@2x.png
  • Emission map(发光贴图):在没有光线时,如果物体表面有荧光涂料,就会发光.发光贴图可以用来模拟这种物体.彩色贴图中,黑色不发光,亮色发光强,暗色发光弱.


    QQ20170409-112012@2x.png

    QQ20170409-112024@2x.png


    需要注意的是
    在Scene Kit中Emission map(发光贴图)并不真正发光,只是模拟发光效果而已.就是说不能照亮其他物体,不能产生阴影.这点与其他3D创作工具不同.

  • Multiply map(乘法贴图,正片叠底贴图):会影响其他所有效果.一般用来给最后的效果调整色彩或者亮度.


    QQ20170409-120113@2x.png

QQ20170409-120125@2x.png
  • Transparency map(透明贴图):黑色部分不透明,白色透明.
    注意:球体内部需要开启double-sided mode才能看到

    QQ20170409-120138@2x.png

QQ20170409-120149@2x.png

QQ20170409-143922@2x.png

skybox天空盒子

设置方法如图,暂无法用代码设置,因为代码中background是只读的


QQ20170409-140020@2x.png


当使用Cube map立方体贴图时,Scene Kit支持以下几种图像模式

1. A horizontal strip image  where `6 * image.height ==     image.width`水平排列宽高6:1
2. A vertical strip image    where `    image.height == 6 * image.width`竖直排列宽高1:6
3. A horizontal cross image  where `4 * image.height == 3 * image.width`水平十字交叉宽高3:4
4. A vertical cross image    where `3 * image.height == 4 * image.width`竖直十字交叉宽高3:4
5. A lat/long image          where `    image.height == 2 * image.width`经纬度图片宽高1:2
6. A NSArray of 6 images. This array must contain images of the exact same dimensions, in the following order, in a left-handed coordinate system: +X, -X, +Y, -Y, +Z, -Z (or Right, Left, Top, Bottom, Front, Back).图片数组6


这篇关于SceneKit---Materials材质的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319759

相关文章

自定义渲染组件及材质 / 引擎源码 / Dashboard

B站视频: Cocos Creator 3D 官方中文教程——《快上车3D》案例添加链接描述 (请点击跳转) cocos creator 1.x shader 没有经过包装,可以直接定义shader,替换 sprite 原来的 shader,可以参考之前博客; cocos creator 2.x 引入了材质系统,使用 shader 必须通过材质,这里介绍下如何使用自定义 shade

钢铁百科:NM360钢板材质、NM360机械性能、NM360韧性焊接性能

一、NM360钢板材质: NM360是一种高强度耐磨钢板,具有良好的综合机械性能和耐磨性能。它通常用于制造各种机械设备的耐磨部件,如挖掘机斗齿、破碎机锤头、磨煤机叶片等。NM360钢板的化学成分和热处理工艺被精心设计,以确保其在恶劣工作条件下的耐久性和可靠性。在选择NM360钢板时,应考虑其硬度、韧性和可焊接性等特性,以满足特定应用的需求。 二、NM360执行标准: NM360钢板执行标准为最新G

钢铁百科:16MnDR钢板力学性能、16MnDR化学成分、16MnDR材质分析

16MnDR钢板是一种低合金高强度容器用钢,具有优异的力学性能和低温韧性,广泛应用于多个行业。以下是对其材质、执行标准、化学成分、力学性能、交货状态、应用范围、常用规格及总结的详细阐述: 一、16MnDR材质概述 16MnDR钢板中,“16Mn”表示钢板中锰含量大约在1.20%~1.60%,这是一种强化元素,有助于提升钢板的力学性能;“D”表示低温;“R”表示压力容器。因此,16MnDR钢板特别适

Building Materials

From 建材 https://baike.baidu.com/item/%E5%BB%BA%E6%9D%90/4776273?fr=ge_ala 建材 building materials 土木工程 civil engineering 建筑工程 constructional engineering 结构材料 STRUCTURAL MATERIALS 木材 timber 竹材 bamboo w

UE 【材质编辑】自定义材质节点

使用UE的材质编辑器,蓝图提供了大量的节点函数: 实际上,这是一段封装好的包含一串HLSL代码的容器。打开“Source/Runtime/Engine/Classes/Material”,可以看到很多不同节点的头文件: 照葫芦画瓢 以UMaterialExpressionArccossine为例,我们可以定义自己的一个节点: .h // Copyright Epic Games, I

UE 【材质编辑】自定义ShadingMode

【UE 4.27.2】 在UE中提供了多种多样的ShadingMode,相当于一种风格化的处理方案(整体全面的流程调整),切换ShadingMode可以看到不同的显示效果: 通过简单的拓展,我们可以实现自定义的ShadingMode,使得我们切换到自己的ShadingMode时可以直接应用上我们自己的一套风格化效果(极大的提高材质编辑效率)。 1.编辑器添加ShadingMode选项

UE5 摄像机图像采集到材质 映射到 UI 和 物体表面

一.创建SceneCapture2D的组件 二.创建用于 映射的 贴图 三.将RenderTarget贴图放到SceneCapture2D的摄像机上Scene Capture的TextureTarget 四.这个时候的映射贴图,产生的材质可以直接。放到Plane上。 五,但是如果要用于UI,还需要更改SceneCapture2D的摄像机的CaptureSource为 Fin

UE【材质编辑】Shader模板

【UE 4.27.2】         在UE中双击材质球会进入材质编辑界面。PBR的材质参数呈现为材质蓝图的各个节点,提供数据源,传递进材质。最后材质对其进行组织,呈现为VS,PS等着色器代码,基本流程: 本文会刨析在UE4.27.2中材质模板是如何应用的。 1.认识编辑器中的材质         打开任意材质球,双击进入材质编辑面板: 此界面形象展示了材质参数传递到材质(实例

淘宝商品详情API返回值中的商品材质与成分

淘宝商品详情API返回值中关于商品材质与成分的信息,通常作为商品属性的一部分进行返回。这些信息对于消费者了解商品的质量、适用场景以及做出购买决策至关重要。以下是对淘宝商品详情API返回值中商品材质与成分的详细解析: 一、商品材质与成分的表示方式 直接列出:在API返回的JSON或XML格式数据中,商品材质与成分可能会直接以文本形式列出,如“材质:棉100%”、“成分:水、甘油、丙二醇”等。

Unity(2022.3.41LTS) - 网格,纹理,材质

目录 零.简介 一、网格(Mesh) 二、材质(Material)  三、纹理(Texture) 四、三者之间的关系 零.简介 在 Unity 中,网格(Mesh)、纹理(Texture)和材质(Material)是构建游戏世界不可或缺的重要组成部分,它们共同决定了游戏场景和物体的外观表现。 一、网格(Mesh) 结构组成: 顶点(Vertices):是网格的基