title: houdini-houdini记录
categories: Houdini
tags: [art, houdini, procedural, 记录]
date: 2019-05-15 07:21:49
comments: false
houdini-houdini记录
前篇
- 官方资料:
- 几何操作节点 - Geometry nodes
- vex 函数 - VEX Functions
- 社区 - https://www.sidefx.com/forum
- 软件下载: SideFX Houdini FX 17.0.352 Win/Mac - http://www.gfxcamp.com/houdini-17/
- GDC -《幽灵行动:荒野》地形技术和工具 - https://zhuanlan.zhihu.com/p/39627412
- 程序猿 Houdini 启蒙 - https://zhuanlan.zhihu.com/p/51180083
- Houdini游戏特效技术大师级训练视频教程 Pluralsight - Houdini VFX for Games - https://www.bilibili.com/video/av19534627/
- houdini最新全面基础教程独家中文字幕 - http://www.linecg.com/video/play33696.html
- Houdini与Unity游戏制作基础技能训练视频教程 - https://www.bilibili.com/video/av38576013
shader相关
- Custom Shading - https://vimeo.com/212603065
todo
- houdini最新全面基础教程独家中文字幕 : 38, 后面的都是物理碰撞, 对游戏开发没有太大意义了, 暂时不看
- Houdini Engine for Unity Fundamentals :
相关解释
-
表达式中
-
ch("../circle1/ty")
:- ch 表示 channel reference,
- …/circle1 表示 不是本节点 而是 circle1 节点
- ty 表示 平移的y轴,
这个表达式的意思就是, 参考 不是本节点 而是 circle1 节点的 平移的y轴参数
-
layout 布局
类似 unity 中的 layout, 可以自定义 保存,重置 等等操作.
添加/分离 窗口
这货竟然不支持选中某个窗口的 tab, 拖动分离.
- 在窗口的最右上角, 点击 -> split pane top/bottom, 分离出一样的上下窗口
- 右键其中一个窗口 -> 选中要显示的面板
节点
- 官方文档: https://www.sidefx.com/docs/houdini/network/flags.html
一级节点
上面是父节点, 下面是子节点. 左边绿色是 能否选中 toggle, 右边蓝色是 是否可见 toggle.
几何级节点
-
忽略本节点
-
渲染此节点到3D viewer
-
锁定本节点输出结果. 也就是锁定后, 修改其他节点都无效.
-
线框显示出来.
比如, 渲染 右边的 (蓝色 高亮) 的同时, 要想别的节点显示出线框来, 就高亮这个这个粉色的标记.
预览 与 编辑
- 右边蓝色高亮的 节点c (subdivide1), 代表当前显示预览是 节点c 的效果
- 选中 节点b (polysplit9), 代表当前正在编辑的节点, 显示的是 线框. 此时添加一下节点, 就自动插入到 节点b 之下. (估计程序的设计是个 链表, 遍历链表做运算)
矩阵操作
平移, 缩放, 旋转 对应的快捷键是 T, E, R ( W是网格显示切换, 在unity中平移是 W )
快捷键S : 选择模式
修改模型坐标系
按下 insert 键, 然后就可以修改坐标系
切换坐标系操作
选中物体, 右键 align -> world/object, ( 类似 unity 中的 local/global)
节点操作 - transform 变换
让节点乘以一个 矩阵 来达到 平移,缩放,旋转 的目的, 避免直接在源模型属性上修改矩阵参数.
- 选中节点, 并进入 几何层级
- 按 tab 键呼出工具菜单, 搜索 transform, 然后选则 transform 节点
- 连上 transform, 修改矩阵数据, 然后点击 蓝色 图标让其生效
3d 窗口
显示 面编号, 法线 等
-
点
-
顶点 法线
-
面 法线
-
顶点 编号
-
面 编号
显示模式
当编辑某个物体时, 可以将其他物体 透明 或 隐藏. ( 这个和 zbrush 中的 ghost 模式一样的意思 )
显示面所在的分组
在挤出某些面的时候, 需要指定它所在的分组
导入模型
fbx 带参数导入
file -> import -> filmbox fbx
进入到导入物体的 geometry 层就可以看到导入源在哪
模型分析
- 导入进去的是一个 subnetwork 节点 (也就是打包好的), 里面包含 几何体, 材质 节点
- 材质节点 : 包含了该模型身上的所有材质
- 几何节点 : 分好组 并对应好各自的材质.
平滑 及 网格 显示
数值变化控制
-
3d viewer 中, 按住 shift 键, 拖动坐标轴作会以较小的值变化.
-
属性栏中, 鼠标中间, 然后左右滑动.
几何体操作
先要进入到几何层级, 才能进行 点线面 操作.
多边形节点 如: 挤出, 桥 等等和max中的一样的意思.
也可以在 3d viewer 顶部选择, 点线面 模式, 及是否开启选择背面
边模式
LMB 双击 边, 选择 相连 的边
按住 shift 键, MMB 双击 边, 选择 相邻 的边
表面移动
加选/减选
- 加选: 按住 shift 键选择
- 减选: 按住 ctrl 键选择
选中相连的 点线面
- 使用鼠标中间, 选中 面1, 按住 a 键, 再用 MMB 选中相邻的 面2, 就会自动选中所有相连的面
选中的线转换成面
- 按住 a 键, MMB 选中相连的 线,
- 右键 选中选, convert selection to -> primitive selection
扩大选择
和 max 中的加选一样, 选中的面往外加选.
-
选中面, 按住 shift, 再按 g 键 (一直按g就一直加选)
-
也可以选中一个相连的面, 这样扩选
节点操作
挤出 - extrude
比较好的方式
-
3d viewer 中 选择 面片, 按 tab 键, 添加 extrude 节点即可.
另一种姿势, 挤出指定的分组.
-
添加一个 extrude 节点, 挤出当前面片
-
再添加一个 extrude 节点, 指定要挤出的面的分组 group
-
对当前挤出的面进行矩阵操作, 勾选 transform extruded front, 就可以进行操作了.
也可以参考: 12 - Creating the Bridge Pillars
合并 - merge
将两个几何体合在一个节点中
-
已有 物体a, 新建 物体b, 目的是要将 物体b 合并到 物体a 中
-
进入 物体b 几何层级, 将节点 剪切 , 然后 进入 物体a 几何层级 粘贴. 此时只能显示 物体a 或 物体b 其中一个. ( 可以将 物体a 节点删了, 应为已经没东西在里面了 )
-
新建 merge 节点, 将两个节点连上去, 并点击显示, 就能显示两个物体了. ( merge 节点可以合并多个物体, 并不只是两个 )
合并警告解决
假设合并两个几何体a 和 b, 只要双方有属性不对等, 就会报警告.
-
先查看合并的警告, 看到有个 cd (也就是 color 属性) 不对等.
-
分别查看 两个结合体 属性信息, 左边的有 color, 右边没有
-
给 右边 在 合并 前插入一个 color 节点, 此时警告就消失了.
uv 分别在 point 与 vertex 冲突
造成这个原因是 别的建模软件建模的 uv 是在 point 分类, 而 houdini 中建模的 uv 是在 vertex 分类
此时就要借助 attribute promote 转换一下分类
引用表达式 对齐 (常用)
-
选中 目的位置 节点a, 右键 -> copy parameter
-
选中 要对齐 的 节点b, 右键 -> paste relative references, 以 引用 的方式粘贴, 会看到参数栏变绿, 表示有个 表达式 在控制, 点击参数名可以看到具体的参数. 按住 ctrl 键, 双击参数名 可以取消表达式.
以后 节点b 就会参考 节点a 的值. 表现上就是 他在哪里, 我就在哪里.
在该表达式后面可以增加运算, 表示相对偏移
引用表达式的方式非常常用, 对齐坐标轴 pivot , 平移缩放选择 等等.
比如: 整个节点要以 其中 圆环 节点 的坐标轴为中心, 做旋转操作
- 节点最底部添加一个 transform 节点.
- 选中 圆环 节点, 右键 center -> copy parameter, 拷贝位置参数
- 选中 transform 节点, 右键 pivot translate -> paste relative reference, 引用 圆环 节点的位置参数.
- 然后就可以 圆环 中心, 旋转整个节点.
边连接 - edge loop
相当于 max 中选中n个平行的边, 连接起来细分
复制到点 - copy to points
将模型复制到每一个点上, 右边 input 是 模型, 右边 input 是 点 的集合
剪裁 - clip
不显示几何体的部分区域, 和 shader 中 clip 的意思差不多
曲线 + 分段 + 复制
可以实现曲线上等距复制几何体
导出曲线参数给 unity
基于上面创建的节点来修改.
-
增加一个 暴露的参数, operator path 类型, op filter 选为 any sop, 点击 accept 确定. 然后把这个参数拷贝一下, 右键 -> copy parameter
-
把之前的 curve1 节点删掉, 增加一个 object merge 节点, 并改名为 user_input, 双击进入节点, 在 object1 属性栏中粘贴引用, 右键 -> paste relative references
-
保存, 右键 -> save node type. (已经导出过 .hda 文件才有这个 save ,没有的话会显示 create digital asset 导出)
-
丢到 unity 中, 拖到场景中, 修改 input type 为 hda, 此时需要一个 曲线文件.
-
创建曲线文件. 菜单栏 HoudiniEngine -> new curve asset, 然后编辑曲线, 拖到 上一步的 字段中. done
节点打包
打包完后, 就可以剪切粘贴到其它节点内
并设置抽出相关参数用来动态控制, 可以理解为编程上的 封装接口
暴露参数
-
选中打包好的节点 subnet1, 点击 设置 -> edit parameter interface, 打开参数设置界面
-
将需要添加的 参数类型 从左边拖到右边, 并设置好 显示名(Label )和 变量名(Name), 然后 apply and accept 生效
-
右键 显示名(Label) -> copy parameter, 然后进入里面, 在需要使用这个变量 属性框 内 右键 -> paste relative references 引用这个变量.
-
后面就可以通过控制这个变量来 改变 属性框 的值
复制 - copy and transform
-
选中要复制的节点, 添加一个 copy and transform 节点, 调整复制量 2, 调整 Xscale -1, 即可对称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jeW2AcU4-1651580011646)(I:\Git_repo_assets\z_mywiki\20190516223706-1.gif)]
查看属性 - geometry spreadsheet
以查看颜色属性为例
-
[添加/分离 窗口](#添加/分离 窗口)
-
进入节点添加一个 color 节点, 并设置分类到 detail 中, 就可以在属性中的 detail 栏中看到 (设置到哪个分类, 在属性栏中就可以在哪个分类中看到该属性)
材质
面 添加分组
这样可以给不同的分组的添加不同的材质, 而不是一整个几何体都是用一个材质球. 这个类似 max 中的材质id, 给面指定id后可以用多为材质.
-
选中面需要分组的面, 按 tab 键, 搜索 group, 增加一个 group 节点
-
最好重命名一下节点, 比如: mat_g1
添加 除xx分组以外的所有面 为一个分组
-
添加一个 combine group 节点, 命名为 mat_g1_else
-
运算表达式. 左侧为当前节点 mat_g1_else, 右侧为 不等于 mat_g1 节点.
意思就是把 mat_g1分组包含的面 以外的面分组为 mat_g1_else
删除分组
如果 combine 了 分组a 和 分组b 为一个新的分组, 该物体不需要单独的 分组b, 可以添加一个 group delete 删除 分组b
添加材质
基于分好组的情况. 参考: [面 添加分组](#面 添加分组)
-
先充材质库中添加几个材质到 /mat 路径下, 因为等下选择材质球时只能充这里添加.
-
添加一个 material 节点. 然后材质数量指定为 2. 分别对这两个材质指定 分组和材质球 (如果当时看不到效果, 可以尝试退出节点, 再进入)
-
done.
注意, material 节点只能使用该节点之上的 分组, 所以一般材质球在几何体的 最底部.
查看应用材质的部位
-
进入节点, 高亮 3d viewer 顶部的 select group or connect geometry (或者按 9 键 )
点击颜色处可以修改显示颜色
渲染效果图
需要的前置物料: 摄像机, 灯管, 渲染器
-
添加摄像机. 调整好场景视图, 点击右上角 no cam -> new camera 创建一个 摄像机节点
-
添加灯光. 顶部 lights and cameras 页签中点击创建一个 light 节点. 这里创建一个环境光
-
添加渲染器节点.
-
菜单栏 render -> create render node -> mantra-pbr 创建一个渲染器节点, 这里命名为 mantra1-pbr . 节点会在 out 分组里, 也就是输出.
-
菜单栏 render -> render -> mantra1-pbr, 开始渲染.
也可以左下角 icon 中选中改渲染器渲染.-
渲染器中可以修改分辨率, 达到快速渲染的目的
-
-
实时修改并渲染
-
切到 render view 窗口, 设置好渲染器, 摄像机, 点击 render.
-
把分辨率降低, 渲染比较快. 选中 渲染器 节点, 勾选 override camera resolution, 设为原来的 1/n.
-
然后修改材质球参数, 可以实施看到效果.
动画
动画关键字
-
对某个属性设置关键字. 比如: 平移, translate 属性右键 -> keyframes -> set keyframe. ( 此时属性会变成 绿色 ) (快捷键 alt + lmb )
-
帧数移到 150 帧, 然后调整物体的 平移属性 (此时属性会变成 黄色, 表示有属性更新了)
-
提交更新. 右键属性 -> set keyframs -> commit change (快捷键 alt + lmb ). done !
-
点击播放按钮, 就可以看到动画
物理刚体及碰撞
最简单的碰撞
-
创建两个物体, 一个地面 grid, 一个方块 box
-
选中 box, 添加一个动态刚体. 点击 rigid bodies -> RBD Objects (rigid body dynamic 动态刚体)
此时若没有 DOP Network 节点, 会自动创建并命名为 AutoDopNetwork, 这是一个物理运算节点, 会运算所有联系到这个节点的物理模拟.
-
选中 grid, 添加一个静态对象, 点击 collisions -> static object
-
把帧数调到第一针, 点击播放. done
分析
可以打开节点自己看内部, 主要是靠 box,grid 最底部的节点 与 物理运算节点 DOP Network 联系起来
常用快捷键
左键:旋转视图
中键:平移视图
右键:推拉视图
Ctrl+左键:以视图坐标为Z轴转动视图
Alt+左键:以视图坐标为Y轴转动视图
Ctrl+右键:区域放大视图或缩小视图,当鼠标由左上方向右下方框选
时为区域放大、当鼠标由右下方向左上方框选时为区域缩小。
Alt+右键:缩放视图
B键:单视图和四视图的相互转化
Q键:正交视图与透视图的相互转化
X、C、V键:网格捕捉、线捕捉、点捕捉
1键:将当前视图切换为透视图
2键:将当前视图切换为顶视图
3键:将当前视图切换为前视图
4键:将当前视图切换为侧视图
5键:将当前视图切换为uv视图
G键:将选择节点以最大化方式进行显示
H键 或 F键 :没选中 物体时聚焦全部obj, 选中 物体时聚焦该物体.
houdini9.0及以上版本。
Ctrl+Alt+Shift 点击: 自定义快捷键
-
视图操作
-
按住 空格键(或单击回车键)
+左键:旋转
+中键:平移
+右键:推拉
+Ctrl+左键:景深旋转
+Alt+左键:水平旋转
+Ctrl+右键:区域缩放视图
+Alt+右键:缩放视图
+b键:单视图切换
+o键:透视图切换
+h键:还原视图
+g键:没选中 物体时聚焦全部obj, 选中 物体时聚焦该物体.
+a键:聚焦全部物体
+1键:透视图
+2键:顶视图
+3键:前视图
+4键:侧视图
+5键:uv视图
+d:视图设置
-
按住 ctrl
+1键: 透视图
+2键: 透视图 + 顶视图
+3键: 透视图 + 顶视图 + 前视图
+4件: 透视图 + 顶视图 + 前视图 + 右视图 ( 四视图 )
-
-
场景操作
1:物体选择模式
2:点选择模式
3:线选择模式
4:面选择模式
e:放缩 r:旋转 t:移动
回车键:操作杆
y:循环切换
这里强烈建议设置一个快捷键
Align Handle 循环切换操作杆坐标类型 建议设为hshift+g:扩大选择
shift+s:缩小选择
shift+b:选择边缘
ctrl+i:反选
l:选择相连元素
f:按元素方向增加选择
shift+r:改变选中元素方向
w:网格显示切换
x:网格捕捉 c:线捕捉 v:点捕捉
tab键: 呼出工具菜单
Edit修改
鼠标中键(空白处使用):软修改半径设置
鼠标右键(操作杆上使用):详细设置菜单
m:笔刷修改(雕刻) 属性面板里有雕刻模式图案等具体设置
按住shift:修改笔刷大小
点右键设置笔刷属性
-
节点编辑窗口操作
中键:平移操作窗口
右键:缩放操作窗口
w:打开节点树状图
t:打开节点列表
c:颜色
p:打开窗口
x:打开组列表
l:中心化选中节点
g:最大化选中节点
z:上一显示切换
d:窗口设置
n:名称显示切换
s:切换连接线类型
shift+g:节点编组
tab键: 呼出工具菜单
-
节点操作
左键单击节点:选择节点和连接线
中键节点上长按:显示节点当前参数
右键单击节点:节点操作菜单依次单击节 左击端口----建立连接
单击端口后 左击空白----放弃连接
单击端口后 右击空白----建立新的节点连接
单击连接线 左击端口----更换连接
单击连接线 左击空白----断开连接
单击端口后 右击空白----建立新的节点连接
选中节点甩动-----------断开节点
选中节点拖到连接线上—插入当前节点
选中连接线拖到节点上—连接节点
选中节点 shift+c:打包
选中节点 ctrl+n:节点盒
-
参数面板操作
左键单击参数名:切换显示拖动参数到其他参数:选项 1当前值 2镜像 3相对镜像 4取消
拖动参数到视图:创建参数操作杆
鼠标中键点住颜色然后移动:吸取颜色
Alt+鼠标左键:加关键帧
ctrl+鼠标左键:清除关键帧
shift+鼠标左键:打开当前参数通道编辑窗口
-
通道编辑窗口
-
左键:调节值
ctrl+左键:随意调节
alt+左键:加关键帧
选中关键按
y键:综合修改器
t键:切换曲线控制杆 0键:水平曲线控制杆 9键:平滑曲线控制杆
b键:还原默认值
g键:关键帧组控制
-
在节点面板中:
-
H:自动缩放视图;
L:线形排列节点;
-
在Scene编辑界面:
E:添加一个Edit节点;
Q:重复节点;
Enter:点击Primitive后,按Enter就会在场景的原点创建模型;这和按住Ctrl再点工具栏上的Primitive节点是一样的。