本文将学习如何运用RealityKit原料来改动您的3D政策的外观,以及Reality Composer Pro如何帮助您完成这一政策。
资料是什么
资料是定义3D场景中政策外观的要素。资料可以很简略,仅仅单一颜色,或许它们可以运用图像。您可以将木纹理使用于椅子的模型,或许将砖块的图像映射到墙上。资料也可以非常凌乱。它们或许运用动画效果,看起来像涟漪的水,或许根据观看角度改动外观。资料甚至可以批改使用到的政策的几何形状。visionOS中的资料运用根据物理的渲染(PBR)技能。这意味着可以运用与实际国际物体相似的物理特色来规划政策的外观,例如物体的金属感或粗糙程度。
资料由一个或多个着色器组成。这些着色器是执行核算其资料外观的实际工作的程序。在iOS和iPadOS的RealityKit中,引入了CustomMaterial。CustomMaterial中的着色器是运用Metal手工编写的。在visisonOS中,引入了一种称为ShaderGraphMaterial的新类型资料。这是为visionOS创建自定义资料的仅有办法。ShaderGraphMaterial运用功用块的网络或图形,因此得名。
ShaderGraphMaterial根据名为MaterialX的敞开规范,并且是一种规划师和睦的定义资料的办法。MaterialX最初由工业光魔(Industrial Light & Magic)于2012年创建。ShaderGraphMaterial支撑两种首要类型的着色器,称之为根据物理的(Physically Based)和自定义(Custom)。根据物理的是一种根本的PBR着色器。关于较简略的状况,选择这个可以通过为每个特色供给常量、不变的值,如颜色或图像,来装备此着色器。另一方面,自定义着色器可以精确和自定义地控制3D政策的外观。自定义着色器可以包含动画,调整政策的几何形状,并在政策表面创建特殊效果,如闪亮的油漆外观。
我们可以运用Reality Composer Pro内置的Shader Graph批改器来构建ShaderGraphMaterial。在visionOS中,资料可以运用Reality Composer Pro创建,这是一种新的专业开发工具,可以组合、批改和预览3D内容。
构建一些自定义资料
运用Reality Composer Pro创建资料,这是一款新的专业开发工具,答应您构建、批改和预览3D内容。我们从上文基础上初步操作。
首要运用“Deactivate”指令躲藏了我们不需求的一切政策。这让我们留下了中心的基座和顶部的景观。
接着添加一个原料,闪现模型的地形,通过闪现沿着地形的坡度的等高线来完成。要完成等高线地图,就要地形上的一切高度相同的区域之间制造线条。就像下图所示,蓝线闪现地形上1000米高度的一切点。所以可以通过一组函数来构建一个资料,这些函数将在我们的模型上制造相似于这些线条的线条。
首要,在项目的Hierarchy面板底部的加号按钮下,我们选择“Materials”下的Custom。这将闪现我们的批改器的着色器图。新的自定义着色器始终包含两个节点,紫色的Surface节点和蓝色的Outputs节点。Outputs节点里Custom Surface的输入是联接到资料的active的Surface节点。Surface节点的输入是您设置着色器的根据物理(PBR)参数的办法,例如基础颜色。
将新资料取个描述性的称谓:TopographyMaterial。将新资料分配给我们的Yosemite模型。在项目层次结构中选择它。在查看器中,在Material Bindings下,从Binding菜单中选择TopographyMaterial。请注意,模型从颜色变为简略的灰色,标明资料有用,如下图所示。
制造等高线资料
回到选择项目层次结构中的TopographyMaterial的Shader Graph批改器。为了在正确的方位制造我们模型上的条纹,需求联接一些节点到Surface输入。为了完成资料根据其在模型上的方位在哪里制造等高线,需求在资料中添加一个方位节点。这个节点回来在3D空间中出现资料的方位。这个方位只要高度有影响,所以需求添加一个名为Separate的节点,以提取方位的Y坐标。Separate回来Y坐标方位,该坐标跟着地形高度而添加。
在批改器的背景中双击以添加节点。这将弹出新节点选择器,包含一切可用节点的列表,可按称谓或关键字搜索节点。
创建Position节点
输入“position”并从列表中选择Position节点,将其刺进到着色器中。Position输出资料在3D空间中的方位。
创建Separate 3节点
资料跟着高度改变,因此添加一个名为Separate 3的节点来提取方位的Y重量。再次双击背景以闪现新节点选择器,然后添加Separate 3节点。
要在批改器中进行联接,只需从节点输出拖动到节点输入。这两个节点吞并在一起给了地形的高度。
创建Modulo节点
接下来,将取出Separate节点的输出并传递给模数节点。模数节点给出两个值相除的余数。运用模数来将高度除以所需的等高线间隔。成果如下所示。可以看到高度已被分成带。每个规划内的高度值从0初步,添加到该规划的高度。
添加模数节点,与其双击添加节点然后联接它,不如一步将新的联接拖到空白处以创建已联接的节点。拖动Separate 3节点的y到空白处,输入“modulo”并单击以刺进Modulo节点。这样就完成一步创建和联接了。
模数有两个输入。第一个是被除数,第二个是除数。可以方便地在查看器中设置输入的常量值,而不是联接节点。在查看器中,将第二个参数更改为0.1。这是除数,设置了高度规划的宽度。
创建ifgreater节点
终究就是运用一个ifgreater节点来承认重复值在地形的狭窄高度带上的方位。
ifgreater节点将根据比较的成果回来标明屏幕上看到的两种带颜色之一的值。当高度大于着色器等高线宽度时,选择背景颜色。当高度在所需线宽内时,选择等高线颜色。
ifgreater比较其两个输入,并在其第一个输入大于第二个输入时回来一个值,在第一个输入小于第二个输入时回来另一个值。
这个ifgreater节点被设置为输出浮点值,但想要在两种颜色之间进行选择,一种是地形颜色,一种是等高线颜色。在查看器中,在Type下,将此节点更改为输出color3f。
接下来,选择我们的两种颜色。在查看器中,点击True Result周围的颜色选择器,并设置地形颜色为白色。将False Result,也就是等高线颜色,设置为黑色。与白色地形发生很激烈的比照。因为0.002是不错的线款长度,所以将比较直Value2设置成0.002。
然后将ifgreater节点的输出,联接到Surface的Diffuse Color的输入。
通过上面过程,使得资料在地形的每一点上都设置了颜色,便成功制造了等高线资料。
如何运用节点图功用
节点图可以帮助简化凌乱的资料,并答应创建自己的节点以重用图的部分。可以运用节点图来使资料看起来像真实的等地形地图外观。
目前的资料姿势如下图所示:
在Reality Composer Pro中添加一个资料的第二组线条。
拖动选择核算线的颜色和制造方位的这四个节点(Position节点、Separate 3节点、Modulo节点和ifgreater节点)。在选择它们之后,右键单击并选择“Compose Node Graph”。现在,这些节点闪现为一个单一的节点,可以在其他图形中运用。给新节点分配一个描述性称谓“Lines”。
创建此节点图的副本以制造我们的第二组线
点击层次结构中的Lines,右键点击选择“Create Instance”。创建一个“SecondaryLines”的新实例。实例是活动副本,它们选用对原始节点图所做的任何更改。
为了完成节点图及其实例制造具有不同间隔和颜色的线条,所以在原始节点图中添加两个输入,分别称为Spacing和Color,以控制这些特色。通过双击它来批改原始节点图。可以在查看器中向节点图添加输入和输出。
首要,添加一个名为Spacing的输入,并将其类型设置为Float。再添加一个名为Color的输入,以控制等高线颜色。将输入的类型设置为Color3。
将它们联接到下图中的正确方位。所以节点图现在具有创建的两个输入,而实例承继了这两个新的输入。
为实例节点图选择一个较小的间隔和一个较浅的颜色。
终究一步是吞并原始和实例节点图的输出,运用乘法节点来吞并它们的颜色。
通过上面操作,完成了一个令人信服的等高线资料,包含两组线条。
几何批改器
几何批改器是自定义资料的一个功用,可以运用它来实时批改模型。下面要做的是替换静态地形模型,并运用几何批改器和高度数据从头创建它。然后,扩展几何批改器,以在两个不同的地形之间动态切换:加利福尼亚州的优胜美地和Yosemite。完成后,我们将具有一个动态地形资料,可以在两个不同的方位之间进行动画切换。
目前所看到的着色器都是表面着色器,这些着色器在渲染时为模型的每个像素设置根据物理或PBR的特色。几何批改器与表面着色器相似,可是对政策的几何形状进行操作。
构建几个批改器
首要运用Deactivate指令躲藏预建的Yosemite模型。然后导入FlatTerrain.usdz,拖动到项目层次结构中的Root实体中。
点击“Materials”下的Custom,创建一个名为DynamicTerrainMaterial的新资料,并将其分配给了FlatTerrain。
拖动Outputs节点的“Custom Geometry Modifier”到空白UI处,创建GeometryModifier节点。
拖动Surface节点的Diffuse Color到空白UI处,创建Image节点。进入Image节点的选择器,Inputs > Filename > choose,选择DioramaYosemite_bc.png。
会发现场景中,出现了改变,现已成功将该地图使用到了表面上。
因为地形是平整的,所以看起来有点古怪。所以需求获取山沟的高度数据。它坐落一个图像文件中,其间包含高度值而不是颜色数据。因为这些数据在图像中,所以我们将通过添加另一个图像节点来读取它。
双击Shader Graph空白处,创建一个Image节点。将包含高度数据的DioramaYosemite_refit_h.exr图像分配给这个新图像Image-1节点的“Filename”输入。
几何批改器可以将模型的极点沿任何方向移动,但因为只需求笔直移动,因此刺进一个Combine 3节点,以创建一个仅设置Y重量的3D矢量。联接Image-1节点的OutOut到Combine 3节点。联接Combine 3节点到Geometry Modifier表面的Model Position Offset输入,完成后,平整模型现已变成了Yosemite。
创建另一个图像节点来读取法线
当移动极点时,需求将模型的表面法线向量设置为匹配新地形形状。下面运用包含此几何图形的法线的图像来核算这些法线。
首要创建另一个Image节点来读取法线。如下图的Image_2。
接着给Image_2设置Filename,选择DioramaYosemite_n.png。
因为这些法线是预先核算的,所以将它们直接联接到表面着色器的法线输入以取得更好的精度。所以创建一个remap节点来从头映射Image_2的值,即联接Remp到Image_2的输出。然后设置Remap的Type,并将表面希望法线的值设置在-1和1之间。
终究将Remap联接到Surface的Normal。完成了运用高度数据从平整的几何图形创建了地形的流程。
让场景具有动态性,且有从一个地形切换到另一个地形的才能
首要将节点进行从头命名,Image>YosemiteColors、Image_1>YosemiteHeights、Image_2>YosemiteNormals。分别复制这三个节点,命名成:CatalinaColors、CatalinaNormals和CatalinaHeights。并分别替换Filename,如下图。
接下来创建三个Mix节点,分别联接Colors、Normals和Heights,以混合控制Catalina和Yosemite这两组数据。
终究创建一个Constant节点,联接到三个Mix节点。所以便完成了通过控制Constant的value值0~1,就控制了Catalina和Yosemite这两组数据。当value=1时,闪现Catalina地形,当value=0时,场景闪现Yosemite地形。点击Constant,运用Promote指令将进展值转换为资料的输入。这样就可以通过批改DynamicTerrainMaterial的Constant值控制地形了。
总结
本文简要介绍了visionOS中的资料是什么,学习了如何运用节点图来组织图并创建自己的可重用节点,运用Reality Composer Pro的Shader Graph批改器规划了一个动态资料。终究,添加几何批改器来动态地从头刻画政策。