本文为教程记录笔记,内容比较多,分为上下篇。(对原著精简了一部分)
上篇主要介绍楼房主体,房顶以及墙线(不清楚这个结构具体怎么叫)的制作;
下篇主要介绍,窗户,门,楼顶围栏以装饰物的介绍;
本人Houdini萌新,如有书写和理解错误还请大佬扶正;
教程地址 :
https://www.bilibili.com/video/av40071816?from=search&seid=14043722538578756986www.bilibili.com一,制作楼体
制作思路(如图):
![1746b96f65ce6b5bfa4f83588e5aa9d3.png](https://img-blog.csdnimg.cn/img_convert/1746b96f65ce6b5bfa4f83588e5aa9d3.png)
具体实现:
- 新建一个测试曲线,并封闭; (节点Curve)
- 对曲线点坐标取整; (节点pointwrangle)
- 制作楼层数,并设置高度也就是楼层高度; (节点CopyandTransform)
![9926583bf7116bb61e16bb16a7af8816.png](https://img-blog.csdnimg.cn/img_convert/9926583bf7116bb61e16bb16a7af8816.png)
- 重新分布曲线上的点数,使其均匀分布; (节点Resample)
- 打断曲线的连接性,使其每个线段为一个基元; (节点Carve)
- 开始循环 对每个线段基元编辑UV属性; (节点foreach)
- 向上移动线段位置(高度为楼层高度); (节点transform)
- 合并两个线段基元(移动前与移动后); (节点megre)
- 连接两跟线段成面; (节点Skin)
- 结束循环查看效果;
- 赋予UE4材质 ; (节点unreal_material)
- 对节点进行封装处理,为后续制作主要的HDA文件;(右上角黄色小盒子)
![4f251067c39060ce26e523643a187cb9.png](https://img-blog.csdnimg.cn/img_convert/4f251067c39060ce26e523643a187cb9.png)
其中,对曲线点坐标取整功能与实现:
确保我们曲线上的点坐标为整数,防止在拉拽曲线时的产生的微弱偏差 ;
![571f5588131194b2f0b7e8bd663dd60e.png](https://img-blog.csdnimg.cn/img_convert/571f5588131194b2f0b7e8bd663dd60e.png)
其中,墙体的UV展开目的与实现:
目的:我们想达到单个墙体的UV铺满整个第一象限 ;
制作思路:现在有两个线段基元,向上移动前与向上移动后,总共四个点(0,1,2,3),我们让0号点的UV坐标为(0,0),1号点的UV坐标为(1,0),2号点的坐标为(1,0),3号点的坐标为(1,1)这样就满足刚好整个墙体铺满第一象限。
具体实现:
- 给向上移动前的点(点序号0,1)UV属性为@uv.x = @ptnum(第一个节点pointwrangle)(其中在houdin中@ptnum为点的序号也就是0与1);
- 向上移动后的线段UV属性(点序号2,3)@uv.y= 1(第二个节点pointwrangle);
![72759421922e2c5f61110d40ef21ce9d.png](https://img-blog.csdnimg.cn/img_convert/72759421922e2c5f61110d40ef21ce9d.png)
- 可以测试UV展开效果; (节点uvquickshade)
- 切换材质,用来测试 ; (节点switch)
![d5b8d7db7708de5d6d0957b3b0290418.png](https://img-blog.csdnimg.cn/img_convert/d5b8d7db7708de5d6d0957b3b0290418.png)
- 创建HDA文件,并保存自定义的相关参数;
- 建议楼层数与楼层高度作为参数;
- 其中楼层高度要和向上移动线段距离进行绑定;
- 建议节点Resample中段数作为参数,可以调节墙体UV的大小;
![a19b2066fa324fdbf6098e465d71ae08.png](https://img-blog.csdnimg.cn/img_convert/a19b2066fa324fdbf6098e465d71ae08.png)
二,制作楼顶
制作思路:拿到楼层中最顶层的模型,删除其他模型;并向上移动模型作为楼顶;
![b47e7ac6c8eb8712fd99df49075b547b.png](https://img-blog.csdnimg.cn/img_convert/b47e7ac6c8eb8712fd99df49075b547b.png)
实现:
- 删除多余模型(按面基元序号,既楼层数减去一); (节点delete)
- 向上移动模型; (节点transform)
- 平分楼顶模型,为后续操作做准备; (节点divide)
![06d2921f586540ff719da146d0250021.png](https://img-blog.csdnimg.cn/img_convert/06d2921f586540ff719da146d0250021.png)
- 展开模型UV; (节点uvunwrap)
- 赋予UE4材质 ; (节点unreal_material)
![0a01a45762d22a3da0cc123f7a8cb8ed.png](https://img-blog.csdnimg.cn/img_convert/0a01a45762d22a3da0cc123f7a8cb8ed.png)
合并墙体与楼顶,预览效果
![7281a00bd4fa85567835466fdd42f2de.png](https://img-blog.csdnimg.cn/img_convert/7281a00bd4fa85567835466fdd42f2de.png)
三,制作楼体竖直墙线与水平墙线
1,竖直墙线
制作思路:
![dfc5916cfda7981767b211a4b4bd1a34.png](https://img-blog.csdnimg.cn/img_convert/dfc5916cfda7981767b211a4b4bd1a34.png)
具体实现:
- 根据现有模型 重新分布点; (节点resample)
- 设置每个点的法线@N = set(0,0,1); (节点pointwrangle);
- 新建线; (节点line)
- 在每个点上生成线; (节点copytopoints)
- 新建圆环,调节段数; (节点Circle)
- 旋转,缩放圆环; (节点transform)
- 生成模型; (节点Sweep)
- 预览效果
![4238f00e2e79dbbff16855498c0dd800.png](https://img-blog.csdnimg.cn/img_convert/4238f00e2e79dbbff16855498c0dd800.png)
2,水平墙线
制作思路:
![cade3796328b17f096eccd8dd716d989.png](https://img-blog.csdnimg.cn/img_convert/cade3796328b17f096eccd8dd716d989.png)
具体实现:
- 根据现有模型 重新分布点; (节点resample)
- 新建圆环,调节段数; (节点Circle)
- 旋转,缩放圆环; (节点transform)
- 生成模型,以最开始的曲线为基础; (节点Sweep)
![d1c27c552a77d1e627157f19621d3071.png](https://img-blog.csdnimg.cn/img_convert/d1c27c552a77d1e627157f19621d3071.png)
- 最后合并竖直与水平墙线; (节点merge)
- 平铺UV ; (节点uvunwrap)
- 赋予贴图检测是否正确 ; (节点uvquickshade)
- 赋予UE4的材质; (节点unreal_material)
![11eb121d1e94d8b4d96e74b255b8248e.png](https://img-blog.csdnimg.cn/img_convert/11eb121d1e94d8b4d96e74b255b8248e.png)
- 线的高度要与楼层高度绑定;
- 两次重新分布点数的操作,其中段数属性均可以作为参数,调节其在楼体上的分布数量;
- 墙线的缩放以及段数可以作为参数;
- 最后合并墙体,楼顶以及墙线,注意查看法线是否正确(可以使用节点reverse翻转法线)
![2ef4b13f63a33c5c9a57dfabc8e2514d.png](https://img-blog.csdnimg.cn/img_convert/2ef4b13f63a33c5c9a57dfabc8e2514d.png)
保存HAD,导入UE4中查看效果;
调节输入为曲线输入(CurveInput),封闭曲线(在封闭点处容易造成折点,注意移动一下);
![f2acacc342585fcb4141f353b7c599cd.png](https://img-blog.csdnimg.cn/img_convert/f2acacc342585fcb4141f353b7c599cd.png)
![5d9ae3a7acf20d20b40dd6d04d69104d.png](https://img-blog.csdnimg.cn/img_convert/5d9ae3a7acf20d20b40dd6d04d69104d.png)
这样一个快速简单的楼体制作完成;
节点解释参考:
Curve :
制作曲线,及曲线的生成模式等相关参数;
pointwrangle :
输入代码,对点属性进行相关计算,也可以调节对其他属性操作;
CopyandTransform :
将一个对象copy并设置每次copy的位置/旋转/缩放等;
Resample:
重新采样一个或多个曲线,对曲面生成等长的段数,该节点只会运用到多边形上,当输入的是NURBS或Bezier曲线,其首先会使用Level of Detail参数将其转化为多边形对象;
foreach:
对数组进行遍历,对其中每个点/顶点/基元等属性进行编辑;
transform:
对一个对象执行位置,旋转,缩放属性的操作;
megre:
合并物体对象;
Skin:
创建放样表面,几条线围成表面;
unreal_material:
创建unreal4可识别的材质;
例如UnrealEngine4 中复制路径为(Material'/Game/YY/M_LandTT.M_LandTT')复制到Houdini节点中要做一定的修改(/Game/YY/M_LandTT.M_LandTT)。
uvquickshade:
给表面分配一个图像shader.表面没有UV,它会自动添加一个正投影UV,之后也可以被其他节点取代或修改,可快速预览UV的效果;
switch:
切换输入;
delete:
删除几何体.可用于精简场景, 通过组,数字,体积范围,Primitive/Point/Edge 的法线,或其他规则来删除输入几何体;
divide:
平滑多变形,清理多变形,如修正凹形,把n边形转成三角或四边面,三角化非平面面,删除,光滑,三角化多边形 可以完成细分光滑,清除多边形,修正凹面体,细分N边多边形为三角形或四边形,以及三角形化非平面的多边形选项。
uvunwrap:
分离UV到一个展平的,没有重叠的组中,用于贴图(4 5 6 8 面投影);
line:
创建直线 ;
copytopoint
将一个对象copy另一个点上;
Circle:
创建一个圆,可调节段数为多边形;
Sweep:
用一横截面沿着主干线生成一串横截面,通过沿着路径线,扫描横截面创建曲面 ;
To Be Continued..........