您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Thepoly 于 2022-3-24 11:30 编辑
Hello,大家好。 欢迎来到houdini频道,我是你们永远得不到的木偶心没。今天的主要内容是youtube上的一个教程实例,一个小型飞机地形制作。
我们要在一块凹凸不平的地形上面创建平地,就需要给heightfield添加mask,使结构更加饱满真实。下面是具体的制作流程。 1.首先,创建一个heightfield,设置grid spacing为2.5(grid spacing影响地形细节,数值越大,细节越少,计算越快),size可自行设置(如果你想要很大的飞机场)。 2.创建一个circle,更改primitive Type为Polygon,因为我们将在后面用circle的点法线来制作mask变形。选择Orientation为ZX Plane,Uniform Scale设置为260,Division取值77. 3.为circle添加一个point节点(这个节点主要是手动添加或者编辑点的一些属性),选择Attibute值为Normal(N),表示这个节点调节的是normal值。然后再下面VEXpression里面输入@P(p即position,点位置),表示设置circle上每个点的normal的方向为中心点到对应点的方向。然后在界面中间将法线显示点开吼,可看到如下效果。 4.为point添加一个mountain节点(主要是基于法线方向的进行变化),手动调节height值(表示某一方向上的高度变化值)和Element Size的值(表示两个峰值之间的最小距离,这里设置为825,使其变形更自然),调节offsize世界空间偏移量使其产生不规则变形。 5.现在我们需要将左边的heightfield和右边的geometry结合,需要用到我们的节点heightfield_maskbyobject。但是默认连接效果是我们变形了的circle作为mask,之后所有的操作都会作用在这个变形的mask上面,但是我们需要先操作地形部分,所以需要勾选InverMask参数,来将我们的mask反转成heightfield部分,如图; 6.做好了mask以后,我们就可以做除了机场(circle变形)以外的地形部分进行处理,先为其添加一个noise效果。但是当我们直接连接到noise上面的时候,会发现中间的机场也被加上了noise效果; 所以我们需要在右边input节点输入一个mask进去。 输入之前,为保证过渡自然,我们给上面的heightfield_maskbyobject1节点添加一个mask的blur效果,节点是heightfield_maskblur,如图,然后将blur的Radius值调为合适大小。 修改noise节点的combine模式为Maximum,设置amplitude为1290,Element Size为513.再适当增加scale的值。Noise Settngs设置中,增加一些noise的频率1.573 7.Heightfield_remap(调整heightfield高度) 这个节点可以修改地形的峰值,点击Compute Range会根据当前地形的高度值计算出Intput Min和Input Max,现在我们要想让山形更高一点,就需要将Output Max调大一点,而Output Min值可以保持当前的大小。 8. heightfield_distort(增加地形多样性) 参数可以自行根据效果调节 9. heightfield_maskbyfeature(根据山型的一些特征来制作mask) 现在我们想要给山顶添加一些梯级效果,而选中这个顶部范围的节点,就是heightfield_maskbyfeature。我们取消勾选Mask by Slope,因为是根据地形的高度特征来选择mask范围,所以需要勾选的是mask by height,并且修改Min Height和Max Height的值为29.7和310 10. heightfield_terrace(梯级效果) 选中好mask以后,就可以为其添加terrace效果。注意节点的第二个input也要输入mask。 然后用compute range进行计算,修改Min Height和Max Height为47,678,偏移值Terrace Offset为9.7,增大每个梯级的Size为94.4 11. heightfield_clip(限制高度值) 添加了上面的terrace效果以后,可能山顶太突出不自然,所以我们这里添加一个clip的效果,限制山顶的高度值。点击compute range以后,Max clip会自动计算为当前山顶的最高值,然后我们拉动滑块就可以改变这个最大值。 12. heightfield_maskclear(清除指定的mask层) 由于我们现在不需要在当前mask做任何操作,所以用此节点清除掉当前mask。如果在Layer参数栏选择height层的话,就会清除掉所有的高度信息。 13.处理好山形部分以后,我们来为下面的平地添加更多的细节。 给上面的heightfield_maskbyobject添加一个noise效果,input2输入有blur效果的mask。调整了noise参数以后,由于我们想要的是高度值都为正的,即凸出效果,所以勾选Post Procession参数fold,表示所有输入的值都为绝对值,勾选Complement以及调整Gain值。具体参数设置如下图; 14.然后用heightfield_distort增加细节紊乱度。 选择noise Type为Simplex,增加Amplitude和Element Size,适当增加粗糙度roughness。完成以后再次添加heightfield_maskclear节点清除当前mask。 15. heightfield_remap(调整height或者mask层) 添加remap节点,可以在某一个高度范围调整其高度值到具体的数值。Input2输入除去机场的mask,输入之前如果mask边缘不够模糊,可再加一个mask blur节点,注意blur的layer是mask,而不是height。 16. heightfield_layer(合并两个terrain) 把平地做好了以后,我们将其与之前的山形合并一下。Input1输入的是基本的地形,所以input2输入的是我们的山形。Layer Mode改为Add模式。 17.再为我们的合并的terrain添加一个noise,input2的mask可以输入经过remap微调以后的maskblur。这次heightfield_remap作用的是mask层。 18.heightfield_erode(腐蚀) 为了方便计算,取消勾选Visualization栏的Visualize,这样地形就不会被着色,拉动时间轴的滑块到出现你想要的效果。根据效果可调整楼上的所有节点,只是每次调整以后,需要重新在Simulation栏点击Reset Simulation进行计算。 19.再次添加heightfield_remap节点,对flow层高度进行限制。将0.682到11.785高度范围内的flow缩小到0-1的范围。然后用heightfield_maskclear清除当前mask 20.最后,我们再对平地的细节做一些更多的noise操作。首先需要用heightfield_maskbyfeature选择到你需要的mask,这里我们筛选的条件是slope和height。 范围0-20.3的slope angle以及-3.9到100的高度值。完成以后再添加针对mask的blur节点,heightfield_maskblur,使其noise效果更佳自然。 21.heightfield_masknoise 因为我们针对的是选中的mask层进行noise效果,所以,需要用到的是masknoise节点。当然masknoise是noise节点生成的,唯一不同的是一个作用的是mask层,一个作用的是height层。 混合模式改为Mutiply,使noise效果不会太夸张,适当调节Amplitude和Element Size. 22. heightfield_visualize 最后我们用heightfield_visualize节点来“给它点颜色看看”。观察visualize的参数,会发现和erode节点的visualization参数栏很像。所以在制作过程中如果我们只是想要看看效果,直接用visualize节点可以避免消耗过大的腐蚀计算。 这里我们先点击compute range,让节点重新对我们的地形高度进行一个新的计算。将height ramp调到你喜欢的颜色,比如这里的黄色。(注意上面滑块的颜色表示只针对高度图来进行渐变的颜色,如果你要针对我们楼上的各种layer来赋予颜色的话,需要在下面选中某个layer,然后后面输入颜色值) 至此我们如此简单的地形就做好了,你可以反复把玩,好好欣赏
|