整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

石膏线切角神器

石膏线切角神器

膏线切角神器 携带方便 误差小,

https://mobile.yangkeduo.com/goods2.html?goods_id=20602989360

天是2022年05月14日 星期六

正文共:5866字 135图 预计阅读时间15分


本期内容

01-新建项目工程

02-什么是HeightFleields以及地形中常用节点介绍

03-制作地表Mask区域

04-按区域散布我们岩石与植被

05-创建HDA

06-设置我们UE4工程及地表材质创建

07-添加草/替换我们实例

08-完善HDA暴露参数

09-添加后效雾完结


首先我们新建工程

然后选择一个位置保存

禁用

创建一个Geometry节点我们将其称为地形

我们开始创建第一个节点高度场

最重要的两个参数:控制地形分辨率的网格间距大小默认为1000米乘1000米这意味着我们有一个平方公里可以使用

Grid spacing:网格间距

我们在搜索栏输入Hn (快捷键Tab或者右键)

选择我们高度长噪波节点,根据噪声为高度场生成一些高度值,您有一个用于控制强度或生成的那些高度值的范围,我们有一个元素大小,这是您控制尺寸的一种方法

Amplitude:噪波强度

Element Size:噪波的大小

Noise Type:噪波类型-默认有些基础地形效果

在基础造型上制作,我们可以加快制作效率

Fractal:分形类型

如果我们不使用分型只会得到一层噪声:这里有三种模式

通常地形的目的往往是最有趣的我们获得更多参数来调节,通过粗糙度对比度来获得更多噪声【Ctrl+鼠标中键=恢复参数默认值】

第二个:高度场扭曲

通过改变参数制作满意效果

第三个:道路节点

它将包括水力侵蚀和热力侵蚀,它将使我们的高度场看起来更加真实,您会注意到您现在在地形上具有颜色

在我们参数最后一项需要我们重新计算下地形高度

检测出高度场最大值和最小值并重新应用颜色

现在我们没有施加任何侵蚀效果,道路节点的高度与时间有关,因此需要经过几帧在每个框架中,它将遍历侵蚀您不需要重复很多帧,但是一旦按下播放键,您就可以看到逐渐涨水

参数

Bank Angle 倾斜角度:默认值会有清晰水线,我们将数值改小会出现更大一些水域

Spread lteration:迭代次数(这有点像灯光反弹次数概念)

模拟:Reset Simulation 设定24针

土地侵蚀位置

Erosion Rate:这里侵蚀权重意味着多快控制腐蚀发生的速度,此默认值效果很好

Cut Angle:切角这意味着35度后进行热腐蚀将会停止

我们看下另外一个参数也就是我们地图中颜色的表示

如果我们返回到上面高度场字符段可以看见我们高度和mask信息

Ctrl+鼠标中键可以锁定此窗口

我们可以该表颜色信息并选择不同阶段的颜色标记

Water

接下来我们要使用另一个命令进一步雕刻我们的地形高度,坍落度基本上是模拟松散的材料向下倾斜

流动层

但实际上有一个用于计算流量的特定节点高度场流

Heightfiled_slump///Heightfiled_flowfield:这两种效果供我们选择(路径的细节不同)

我们还可以改变平滑模式

对于您的山峰,我认为这真的很有用,这两个节点搭配使用会有一个很好效果

高度场噪波

尽量不要超过1,我们可以调整叠加类型以及噪波大小和对比度

接下来是与高度有关的遮罩节点,让我们来看看高度场绘制遮罩顾名思义,这是一个允许您绘制遮罩的节点

所以我选择了节点我要将光标放在视口按Enter键,然后绘制一个区域它是蒙版的100绝对蒙版图形适应高度

我们可以绘制自己想要的形状,同时通过运算配合我们之前的遮罩层达到目的,还有遮罩模糊

创建一些模型来生成一个面具,但我认为这是更有趣,因为它更具程序性我们创建一个圆环当作我们的遮罩

同样我们可以模糊遮罩和通过改变我们模型造型来改变遮罩

接下来是我们与高度场相关的遮罩按功能遮罩

这个遮罩已经分享,具体就不在这说了非常了不起???点击跳转

Houdini制作地形遮罩有几种方式?为散射模型和地表材质划分区域丨技术拆解03节

梯田效果//悬崖效果//节点

基于我们之前的地形生成形状我们还可以重新计算下高度,那样整个地形都会是梯田形式,然后我们调节高度配合我们现有地形结构,当然也可以模糊下

我们已经展示了一些雕刻和一些遮罩节点,为了能够真正完成我们的地形,我们需要再介绍几个对我们来说真的非常非常有用和重要的实用程序节点,能够管理我们拥有的所有信息并实际生成其他信息层,然后我们可以使用用于散射或控制材料游戏引擎,要介绍的是复制层(也只是复制上层信息)

合并效果

接下来是高度场模糊,我们可以清楚地看到,在我们的案例中效果。将会很有用,这样我们就可以连接更多的平坦区域,创建更多的在我们的角色奔跑的平坦区域,同时也可以模糊我们的遮罩mask

高度场噪声

为我们制作好的mask区域增加细节,当然也可以为这个地形添加

输入我们地形高度场和mask这样噪波节点只影响我们mask区域

主要作用域上图mask区域,未合并前是光滑平坦的

岩石和土壤层

我们想将其清除为一个值现在,我们将在遮罩层上工作,因为它使可视化变得更容易,这就是我们要结合的方式一切都在一起,

所以让我们考虑这是我们的现在,我们所有的地形都被岩石覆盖了现在我们开始在我们的沙子上耕作土壤层,我将使用复制高度场复制到面具将成为我们沙子的基础为我们的土壤材料,这将是流动

重新映射遮罩范围,这是我们沙层一部分

土壤,另一个遮罩基于特征的单独遮罩,通过特征使用高度场蒙版并使用坡度,我们需要删除山峰上的线条我们复制一个基于特征遮罩,然后与上面相连更改叠加方式我们要清除山峰上的线

注意调整这里面的叠加方式以及下面参数

结合我们的高度场:Layer2模式:Maximum

我们有一个非常好的土层,我们的山层,我们的岩层,通过减去我们有山层

现在我们有了一个漂亮的沙层,我们可以使用该层生成生成草层,草层只能出现在我们有土壤的地方。我们可以使用重映射和模糊从模糊开始,所以模糊将确保我们有一种中间值,如您所见,应用模糊时会得到这些渐变在边缘,我们之前使用了相同的技术设置模糊值4

一旦有了这个梯度我们就可以使用重新映射,告诉您重新映射遮罩值因此,通过此重新映射,我们将确保输出从0到1,然后调整下面坡度图这样就可以缩小面积保持整体形状

我们要确保草与土壤没有重叠我要减去来自土壤层的草信息确保我们重新映射并确保这些值始终是1,从沙层到沙面罩,我们将减去草面罩这就是我们要做的

高度场拷贝图层现在所有这些层的土壤和草都有相同的信息

现在我们需要一个高度填充层,我们需要首先复制高度字段,然后复制在面具上到土壤层,我们对草也做同样的事情,我要按住alt单击并拖动并创建一个副本,在该副本中将信息屏蔽到草层。现在我可以将其转移到我的主要路径上通过此高度字段,我要替换的图层与这是土壤。现在我们只需要创建一个副本并确保我们正在复制草层并将草层替换为来自的信息,最后我们要清除遮罩

我们将创建一个可视化工具,向我们展示我们所做的结果,到处都是沙子或土壤,然后我们大部分是草

高度场散射节点

HenghtField Scatter:散射节点

Scatter Method:散射方法

By Coverage using Mask Layer

*通过使用遮罩层的覆盖

给定一定的Coverage值和Variability值,此方法将分散点,以便它们覆盖高度场上绘制的蒙版上设置的Coverage量

By Density using Mask Layer

*使用遮罩层按密度

给定特定的密度值,此方法将分散点,以便它们将密度作为高度场上绘制的蒙版上每平方米的点数

Total Point Count using Mask Layer

*使用遮罩层的总点数

给定某个Total Point Count值,此方法将分散点,以便它们将精确地设置为它们在高度场上绘制的蒙版上的点数。

Per Point Count using Source Points

*使用源点的每点计数

给定某个范围或精确值,此方法将在标记与Source Point Tag匹配的点周围散布点

官方文档:

https://www.sidefx.com/docs/houdini/nodes/sop/heightfield_scatter.html

分层分散首先,我们将分散树木在开始扫描树木之前,我们先创建一个简单模型代替

复制散布节点散步灌木丛形状很有趣,这是因为它们正在对齐自己斜坡

接下来我们就需要调整下放松相关参数修改下外半径,数量每棵树周围采样五个,相互之间的半径介于0和10如果我们改为2他们相互很密集

这些参数效果都是围绕每一课树进行的

outer radius:外半径

Range:范围

source inner Radius:源内半径

效果对比

Outer Radius:1于0.5对比

Range:范围0-5

Sourec inner Radius:源外半径0-2(与上图对比灌木之间距离)

设置下随机旋转

如果想扩大范围我们可以增加数量

减少之间的重叠同时增加迭代次数(具体效果根据需求自行调节)

现在让我们给我们一些蕨类植物,我将创建一个代理对于蕨类植物,我们也将从网格开始,继续复制一个散射节点重新命名并将我们植被模型链接到节点上,这样我们就有了大树、中等灌木、草。这造成了不同程度的复杂性(我们可以修改草:密度、随机大小旋转位置、重叠)

我们接下来散布碎石,然后我们将其连接到散射节点,我们用盒子代替

这里面做了两种大小分布丰富细节

接下来我们准备将资产导入ue4在此处创建一个Null这是最终的输出

创建我们的hda选中所有节点然后打包

快捷键:Shift+C

重命名我们资产然后右键

创建保存,选择保存位置

现在我们不需要配置我们的HDA直接应用即可

在进入ue4之前我们先准备个商城资产

我们来到ue4新建文件夹创建地形保存并打开

打开场景我们配置下场景

我们在功能或内容包,我们添加小白人

我们添加一个玩家开始进入我们的项目设置

如果没有可用的选项,则可以在此处进行项目设置,然后选择我们的地形

我们还有些其他设置(看个人需求)

禁用纹理流

生成网格距离场

配置好环境接下来我们将我们的HDA拖拽进场景等待烘焙,过一会我们就有了我们有我们的树木植被岩石等

让我们开始研究我们的材料,如果您还记得的话在Houdini,我们曾经拥有完全一样的东西除了我要开放我们的数字资产,以便我们可以看一下我们的材料层看起来如何所以我右键单击允许编辑内容,以便您实际上可以访问我们的hda的内容这就是这个,所以我们的第一步将是创建一种材料实际上复制了将要在虚幻中构建的外观

所以在虚幻中,我将在此处创建一个名为Materials的新文件夹,

使用几种纹理,我们将这3层设置草

创建材质暴露参数

设置好以后创建实例放入放入我们的地形

下一步我们可以添加一些草,也是在我们的材质表达式上

选择grass就会在左边出现添加我们植被选框

新建

双击打开添加我们植被

设置好以后我们添加到草节点内

这时候就会出现在我们地形上

接下来我们替换下我们场景中的实例部分,选择我们HDA在细节面板可以看到实例部分

我们将资产库模型替换到实例上就可以在场景中实时显示,其它实例也如此

最后我们回到H整理下HDA文件我们希望H中地表贴图和实例对象会自动查找文件,好我们配置下新建属性节点

我们在虚幻复制我们材质路径

注意:Name 名字

继续设置我们其它实例新建节点

@tag="boulder_big"引号内是我们上面图层名字

接下来按照格式输入我们要替换物体路径

意思:我们散布的石头等于我们路径中物体

我们想控制两者之间的比例变化非常容易,只是使用一个if那么我要生成一个根据每个点数从0到1的随机数,如果从0到1的随机数小于0.6大概有百分之六十的可能性那么我的属性和ue实例将是第一行,否则剩下的40%将具有其他实例第二行

接下来我们暴露一些参数然后点击应用并保存即可

我们可以先删除ue大纲中HDA重新拖拽,开始创建它,它将自动加载实例和材料给了它可能需要一段时间的时间,接下来我们可以测试一些其他参数例如修改地形大小噪波间隔幅度等

整体从Houdini到UE4地形制作流程大概就是如此,最好还是上手制作一次这样印象比较深刻后面我们还会继续深耕Houdini到UE4的相关流程

本期分享就到这里!更多精彩+++关注联系我们

下期见,学习不止,不止学习

到 CSS 颜色,相比大家都不会陌生,本文是我个人对 CSS 颜色体系的一个系统总结与学习,分享给大家。

先用一张图直观的感受一下与 CSS 颜色相关大概覆盖了哪些内容。

接下来的行文内容大概会按照这个顺序进行,内容十分基础,可选择性跳到相应内容处阅读。

色彩关键字

嗯,色彩关键字很好理解。它表示一个具体的颜色值,且它不区分大小写。譬如这样 color:red的 red 即是一个色彩关键字。

在 CSS3 之前,也就是 CSS 标准 2,一共包含了 17 个基本颜色,分别是:

而到了 CSS3,色彩关键字得到了极大的扩充,达到了 147 个。下面仅仅是列出了一部分:

值得注意的是,未知的关键字会让 CSS 属性无效。

这里的这个测试 test3 是为了说明,当传入的色彩关键字错误,CSS 属性将无效而不是使用当前的currentColor替代。currentColor会在下文说明。

哪些属性可以设置颜色

所有可以用到颜色值的地方,都可以用色彩关键字替代,那么在 CSS 中,什么地方可以用到颜色值呢?

  • 文本的颜色 color:red

  • 元素的背景色 background-color:red(包含各类渐变)

  • 元素的边框 border-color:red

  • 元素的盒阴影或文字阴影 box-shadow:0 0 0 1px red|text-shadow:5px 5px 5px red

  • 运用在一些滤镜当中 filter: drop-shadow(16px 16px 20px red)

  • <hr />水平线的颜色

一些无法直接设置,但是可以被得到或者继承当前元素 currentColor 的属性:

  • <img>的 alt 文本。也就是,当无法显示图像时,代替图像出现的文本,会继承这个颜色值。

  • ul 列表项的小点

一些比较常见的就不举例了,说一下 <hr/><img>的 alt 文本和 ul 列表项的小点。

经过测试, <hr/>的颜色值,可以通过设置它的 border 的颜色值来表示。

<img>的 alt 文本和 ul 列表项的小点则会继承当前元素 currentColor 的属性。

对于表单控件 <input type="radio"><input type="checkbox">,暂时没有找到很好的直接改变颜色的方法,如果有知道希望不吝赐教。

transparent

transparent 的字面意思就是透明。它用来表示一个完全透明的颜色,即该颜色看上去将是背景色。

也可以理解为它是 rgba(0,0,0,0)的简写。

值得注意的是:

  • 在 CSS3 之前,transparent 关键字不是一个真实的颜色,只能用于 background-colorborder-color中,表示一个透明的颜色。而在支持 CSS3 的浏览器中,它被重新定义为一个真实的颜色,transparent 可以用于任何需要color值的地方,像 color 属性。

那么这个透明值有什么用呢?简单列举一些例子:

transparent 用于 border,绘制三角形

这算是 transparent 最常见的一个用法,用于绘制三角形。

结合上图图1、图2,可以看到利用一个高宽为 0 的 div,设置它的 border ,当任意三边的 border 颜色为 transparent 时,则可以得到任意朝向的一个三角形。

像上文说的,由于 transparent 在低版本浏览器中(IE78)可以使用在 border、background 中,所以此方法兼容性很好,可以利用于很多场景。

transparent 用于 border,实现增大点击热区

按钮是我们网页设计中十分重要的一环,而按钮的设计也与用户体验息息相关。让用户更容易的点击到按钮无疑能很好的增加用户体验,尤其是在移动端,按钮通常都很小,但是有时由于设计稿限制,我们不能直接去改变按钮元素的高宽。那么这个时候有什么办法在不改变按钮原本大小的情况下去增加他的点击热区呢?

这里,借助透明的 border 可以轻松帮我们实现(我 之前一篇文章写到过,利用伪元素也可以实现),利用一层透明的border:20px solid transparent我们可以这样写:

试着将光标靠近 Btn,会发现在还未到达有颜色区域之前,就已经触发了鼠标的交互响应事件hover,利用这一点在移动端可以很好的扩大按钮的可点击区域又不至于改变按钮本身的形状。像这样:

嗯哼,这里我们将 border用于了扩大鼠标点击区域,然而真实情况是有的时候我们的按钮必须要用到 border,而 border 又只能设置一重(无法像box-shadow渐变一样设置多重 border),这个时候如果还需要运用这种方法,可以使用内阴影box-shadow模拟一层 border,像这样:

transparent 用于 background,绘制背景图

transparent 用于 background,通常可以制造出各种各样的背景图像。这里举个简单的例子,利用透明渐变,实现一个切角图形:

通过 线性渐变 linear-gradient实现从透明色到实色的变化,将四个四分之一大小(background-size: 50% 50%)的图形组合在一起,就生成了一个切角图形。

利用 transparent 与渐变的配合还能生成各种各样美妙的图形,可以戳下面看看:

transparent 用于文本 color

配合 box-shadow ,在文本上运用 transparent,可以营造出一种文字发光的效果,鼠标 hover 下面的文字试试:

transparent 其实还有很多作用,暂且说这么多,欢迎继续讨论。

currentColor

很多人都不知道还有 currentColor这个东东。和 transparent 一样,它也是一个关键字,顾名思义,它表示当前颜色。它来自自属性或者继承于它的父属性。

可以简单的理解为当前 CSS 标签所继承或设定的文本颜色,即 color 的值。

那它具体可以怎么用呢,根据我们书写 CSS 的原则 DRY(Don’t Repeat Yourself),使用这个关键字可以很好的减少改动 CSS 时的工作量。看个例子:

上面的例子,我只在 color 里写了颜色,在 border 和 box-shadow 中使用了 currentColor 属性。可以看到,这两个属性的颜色值都被设置为了 color 中设置的值,当我们需要用到这种同色表现的时候,使用 currentColor 更佳,方便日后改动。

但是,currentColor 是 CSS3 新增的,在老版本浏览器下是无法识别的。那么是否在老版本浏览器下就无法使用了呢,也不尽然,还是有一些特例的,看看下面这个:

可以看到,上面我只在 color 里写了颜色,border 的值为 1px solid,box-shadow 也是,并没有带上颜色值,但是依然表现为了 currentColor 的值。这是因为边框颜色和阴影颜色默认就是当前盒子的文本颜色,其中 border 兼容性很好,可以支持到 IE6 。

当然 border 和 box-shadow 是特例,不是所有需要填写颜色值的属性不填写都会默认继承文本的值的。

那么元素中将会得到或者继承元素 color 值有哪些呢:

  1. 元素的文本内容
  2. 文本的轮廓
  3. 元素的边框
  4. 元素的盒阴影
  5. filter:drop-shadow
  6. <img>的 alt 文本。也就是,当无法显示图像时,代替图像出现的文本,会继承这个颜色值。
  7. 列表项的小黑点和边框
  8. 一些浏览器(比如Chrome)水平线( <hr>)的边框颜色。(没有边框的话,颜色就不会受影响)。

currentColor 的兼容性

rgb 与 rgba

颜色表示模型的话,简单了解一下。

rgb 表示颜色的红-绿-蓝(red-green-blue (RGB))模式,rgba 多一个 a ,表示其透明度,取值为 0-1。

rgb 的颜色模型通常由一个立方体表示:

我们知道,通常我们使用的时候,不使用缩写的话,使用十六进制符号 #RRGGBB,

在 #RRGGBB 中,RR 表示 红色的深浅,GG 表示绿色的深浅,BB 表示蓝色的深浅。取值都是从 00 - FF,值越大表示该颜色越深。

如果采用 rgb(RR,GG,BB) 的写法,RR 取值 0~255 或者百分比,255 相当于 100%,和十六进制符号里的 F 或 FF 。

了解了 rgb 的含义的话,记住常用的颜色值其实是很容易的,像上面说的 RR 表示红色的深浅,那么理解记忆 #FF0000表示为红色就 so easy 了,同理可以得到#00FF00表示绿色,#0000FF表示蓝色。

再记住颜色的叠加原理:

我们就可以轻松的记住, #FF00FF红蓝叠加表示紫色,#FFFF00红绿叠加表示黄色,#00FFFF蓝绿叠加表示青色。

hsl 与 hsla

除了 rgb 表示法,颜色也可以使用 hsl 表示。hsl被定义为色相-饱和度-明度(Hue-saturation-lightness),hsla 多一个 a ,表示其透明度,取值为 0-1。。

hsl 相比 rgb 的优点是更加直观:你可以估算你想要的颜色,然后微调。它也更易于创建相称的颜色集合。

hsl 的颜色模型通常由一个圆柱体表示:

  • 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  • 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
  • 明度(V),亮度(L),取0-100%。

其实对于我们前端而言,使用 hsl 表示颜色会更方便。

以一个按钮为例,我们用 hsl 颜色表示法表示按钮 normal 状态下的背景色值,我们希望 hover 的时候,背景色暗一点,而 active 的时候背景色亮一点。如果采用 rgb 表示法,我们需要 3 个完全不一样的颜色,而采用 hsl 表示法,我们只需要在 hover 和 active 的时候去改的 颜色值的 l (即Light,亮度)值即可。运用上面出现过的一个例子再看看:

这里 background:hsl(200, 60%, 60%)在 hover 和 active 的时候,我只改动了 hsl 颜色值的第三个值达到了我们希望的效果。

rgb 到 hsl 的转换

这里有个小 tips 可能有些人不知道,在开发阶段我们只有一个 rgb 值,但是希望转换成 hsl 值,使用 chrome 开发者工具可以很便捷的做到,如下图,我们只需要选中我们想转换的颜色值,按住键盘左 shift,点击这个颜色表示框,即可进行转换:

到此本文结束,比较基础,希望有人看。如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

如果本文对你有帮助,请点下推荐,写文章不容易。