# 高级VFX # Houdini节点文档 # Facet Geometry node *控制表面平滑度。(facet n. 多面体中的一个面)* 此节点可以让你焊接点,或曲面法线。 Facet 和 Divide 节点类似,在中间过程中修改几何体。因此,Compute Normals(计算法线) 选项会出现两次。比如,你可以在焊接非共面点之前计算法线,因为在合并点之前就已经计算了法线,因此可以获得另外一种平滑着色和焊接点。 此节点可以用于清理多边形。你可以重定向背面多边形(在视图中不可见的面),移除退行性多边形(有点重合在一起的多边形,例如,一个两点重合在一起的三角形,它看上去是一条线),焊接或唯一化点,或硬化多边形边。
这个节点能很好的清理从 .dxf 格式导入的多边形。它可以修正其中的法线方向错误。
使用 Facet 选择面,边 或 点,然后添加此节点。 **节点参数**Group | 要拆分的几何体集。 | ||||||
Pre-Compute Normals | 基于输入的几何体计算法线。 | ||||||
Make Normals Unit Length | 重置输入的法线长度为1. | ||||||
Unique Points | 使每个顶点为一个唯一点。 | ||||||
Consolidate |
不应当使用旧版本的合并,它们是为向后兼容性而保留的。 | ||||||
Distance | 用于合并的阈值距离 | ||||||
Use Accurate Distance | 强制合并距离为该精确的值,任何强制合并操作都会以点标号顺序执行,以避免将点移动到距离内的其他点。 | ||||||
Remove Inline Points | 如果一个点处于两点间的直线上,移除它。 | ||||||
Distance | 用于共线操作的阈值距离。 | ||||||
Orient Polygons | 使所有多边形朝着同样的方向。 | ||||||
Cusp Polygons | 在临近的边上,创建硬边。 | ||||||
Cusp Angle | 要硬化的阈值角度。 | ||||||
Remove Degenerate | 清除任何错误的多边形。 | ||||||
Make Planar | 展平每个多边形,使其点处于统一给平面上。 | ||||||
Post-Compute Normals | 基于此操作节点的结果计算法线。 | ||||||
Reverse Normals | 反转所有点的法线方向。在其它计算完成后,再执行。 |
Start Time | 模拟开始的时间,使用秒为单位(基于当前场景的FPS) |
Preroll Time | PreRun,在开始时间前预先运行模拟。 |
Initial State | 作为模拟初始状态的几何体 |
Random Seed | 定义模拟时使用的 伪随机数。 |
Oversampling | 帧间采样倍率 |
Max # of Particles | 控制任意时刻的粒子最大数量。设置为0则无限制。 |
Remove Unused Points | 删除与死亡粒子相关的点。启用此选项可以降低内存占用,禁用此选项可以通过回收点提高性能。改变此设置可能会影响与粒子相关的点的编号。 |
SOP N | 向上传递几何体N(法线)的SOP路径。 |
Transform Object | 当此网络出现在视窗中时将粒子转换到此对象的空间中。 |
Cache Frames | 当此网络可见时的缓存数。设置为0不缓存,为-1无限制缓存,为其他数值,则缓存对应帧数。 |
部分全局变量等价于以 `@` 开头的变量来适配 [VEX Snippets ](http://www.sidefx.com/docs/houdini/vex/snippets.html)中的变量。
Snippet (片段)是编程用语,用来表示那些可以重复利用的代码片段。 Playback 回放`$` | `@` | Description |
---|---|---|
`$FPS` | 每秒回放的帧数 (也可以通过播放栏上的设置修改). | |
`$FSTART` | 动画起始帧的帧数字 (也可以通过播放栏上的设置修改). **$NFRAMES** (动画帧数) = $FEND - $FSTART + 1. | |
`$FEND` | 动画末帧的帧数字(也可以通过播放栏上的设置修改). | |
`$F` | 当前帧数字, 这是个非常有用的变量,尤其是给渲染的序列帧文件编号 | |
`$FF` | `@Frame` | 浮点帧数字 |
`$NFRAMES` | 动画的总帧数 `$NFRAMES = $FEND - $FSTART + 1`. | |
`$RFSTART` | 播放栏中显示的第一帧的帧数字。 播放栏可以显示长动画中的特定部分,使你可以专注于编辑这部分动画。 $RFSTART 和 $RFEND 控制播放栏显示特定部分的长度 | |
`$RFEND` | 播放栏中显示的最后一帧的帧数字 | |
`$T` | `@Time` | 以秒为单位的当前时间, 等同于 ($F-1)/$FPS |
`$TLENGTH` | 秒为单位的动画总时长 | |
`$TSTART` | 秒为单位的动画开始时间 | |
`$TEND` | 秒为单位的动画结束时间 |
`$ACTIVETAKE` | 包含了当前TAKE(拍摄)的名称 | |
`$E` | 数学常数 e (2.71828…). | |
`$HFS` | Houdini的安装目录 | |
`$HH` | `$HFS/houdini`. | |
`$HIP` | 包含当前场景文件的文件目录 | |
`$HIPFILE` | 包含扩展名的,当前场景文件的完整路径 | |
`$HIPNAME` | 不包含扩展名的当前场景文件完整路径。你可以用此变量基于当前场景名称创建不同扩展名的文件。 | |
`$HOME` | 你的 Home 目录 | |
`$JOB` | 你的 [project directory](http://www.sidefx.com/docs/houdini/basics/project.html "The File > New Project and File > Set Project menu items let you set up project directories and associate scene files with projects.").(工程目录) | |
`$PI` | 数学常数 pi (3.1415926…). |
`$OS` | Operator String. Contains the current OP’s name. |
`$CH` | Current channel name. |
`$IV` | In value (value at start of segment). |
`$OV` | Out value. |
`$IM` | In slope |
`$OM` | Out slope |
`$IA` | In acceleration |
`$OA` | Out acceleration |
`$LT` | Local time - not including stretch or offset |
`$IT` | Start time of segment |
`$OT` | End time of segment |
`$LIT` | Local start time of segment |
`$LOT` | Local end time of segment |
`$PREV_IT` | Previous segment start time |
`$NEXT_OT` | Next segment end time |
`$CSTART` | Start frame of the current COP. |
`$CEND` | End frame of the current COP. |
`$CFRAMES` | Number of frames for the current COP. |
`$CFRAMES_IN` | Number of frames available from the first input COP. |
`$CINC` | Gets the global frame increment value. |
`$W` | Current image width. |
`$H` | Current image height |
`$N` | Current frame being rendered. |
`$NRENDER` | Number of frames being rendered. |
HScript 表达式 | 使用 [expression functions](http://www.sidefx.com/docs/houdini/expressions/index.html "Expression functions let you compute the value of parameters.")(表达式函数)编写表达式的传统方法 |
Python | 更强大 但是也更繁琐的方式。使用 [Houdini Object Model](http://www.sidefx.com/docs/houdini/hom/index.html "How to script Houdini using Python and the Houdini Object Model.") API 和任何 Python 本身的函数。 |
VEX | 一种快速编译的语言,只用在特定节点的特定参数上 |
你可以创建自己的参数并引用它。详见 [spare parameters](http://www.sidefx.com/docs/houdini/network/spare.html "How to add extra parameters to an individual node.").(备用参数)
要... | 这样做 |
---|---|
自动创建参数引用 | 1. 源参数上右键选择 **Copy parameter**.(复制参数) 2. 目标参数上右键选择 **Paste relative reference**.(粘贴对应参数) Houdini 会输入正确的 `ch("")` 语法让后一个参数引用前一个参数的值。 |
手动创建通道引用 | 用 HScrpt 表达式时,使用 [ch](http://www.sidefx.com/docs/houdini/expressions/ch.html "Returns the value of a parameter.") 获得另外一个参数的值。
`ch` 会从当前节点的(可能的相对)路径到参数。 比如,要得到当前节点的 Z 变换属性:
```
ch("tz")
```
获得 `lamp` 物体的 X 变换属性:
```
ch("/obj/lamp/tx")
```
获得处于相同网络的 `grid1` 节点的 Y 旋转属性:
```
ch("../grid1/ry")
```
(要获得字符串的值,使用 [chs](http://www.sidefx.com/docs/houdini/expressions/chs.html "Evaluates the string value of a parameter at the current time.").)
|
查询参数的内部名称 | 要手动引用参数,你必须知道参数的内部名称,你可以将鼠标悬停在参数框上方 或 通过参数编辑器中的 **设置** **▸ 编辑参数** 界面 **,**点击参数然后查看 **Name** 区域。 |
Position Y | ```
@P.y + rand(@Frame * @ptnum)
```
|
---|
**学习项目** | **预计周期** | **学习内容** |
如何收集视频素材 | 1天 | 养成好习惯,建立好的文件系统,学会怎么使用代理,如何重新链接丢失的素材,如何替换素材 |
使用Davinci Resolve进行视频剪辑 | 2天 | 使用该软件进行快速粗剪,挑选素材,并完成最终剪辑所需要的软件操作技术 |
使用Davinci Resolve进行视频调色 | 1天 | 对视频进行色彩校正,修复过曝等问题,然后使用常用的两种影调风格化视频色彩 |
动画的十二个要素 | 1天 | 通常一个生动的动画需要注意的东西 |
如何使用After Effects制作动画 | 2天 | 使用AE制作MG动画的流程,如何使用AE、PS和AI协同工作 |
如何使用After Effects跟踪视频对象 | 1天 | 用AE跟踪视频中的多个运动的物体 |
如何使用After Effects抠出视频对象 | 1天 | 用AE将视频中的人或者物体抠出来,如何处理绿幕素材 |
如何使用Mocha跟踪和扣出视频对象 | 2天 | 使用Mocha插件更好的跟踪物体或者抠像,如何处理人的头发 |
如何将动画元素合成在视频中 | 1天 | 利用抠像和跟踪技术将MG动画置入视频场景中,合成时需要注意的细节 |
在软件之间交换视频数据的注意事项 | 0.5天 | 在特效软件和剪辑软件之间交换视频数据时应当使用何种格式,使用PR和AE的动态链接功能协同工作,如何在PR和Davinci Resolve之间交换剪辑时间线 |
如何收集音频素材 | 0.5天 | 去哪里寻找音频素材 |
使用基本的音效工具为视频配音 | 1天 | 使用Audition为视频制作音轨,如何调整音频的音量,如何调整音频的音高,如何对音频进行降噪,如何优化人声 |
如何使用合适的视频编码交付视频 | 0.5天 | 使用Davinci Resolve导出视频,使用AE导出视频时的注意事项 |
Media Encoder 使用技巧 | 0.5天 | 如何使用Media Encoder进行批量编码和格式转换 |