What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vfx:houdini:dop:dynamic_basics [2019/09/06 02:50] – [Timeline coloring] codingharevfx:houdini:dop:dynamic_basics [2021/11/11 08:08] (当前版本) codinghare
行 1: 行 1:
 ======Dynamics===== ======Dynamics=====
 <color #7092be>//All about Houdini’s dynamics networks / simulations.//</color> <color #7092be>//All about Houdini’s dynamics networks / simulations.//</color>
-===== =====+----
 在 Houdini 中,dynamics network( //DOP// ) 用于创建模拟(//simulation//)。模拟主要由两部分组成:**被计算的对象**(//Object//)与**应用到对象上的的解算器**(//Solvers//)。下图是一个非常典型 / 基础的解算示例: 在 Houdini 中,dynamics network( //DOP// ) 用于创建模拟(//simulation//)。模拟主要由两部分组成:**被计算的对象**(//Object//)与**应用到对象上的的解算器**(//Solvers//)。下图是一个非常典型 / 基础的解算示例:
 \\ \\
行 59: 行 59:
 通过 ''Geometry Spreadsheet'' 可以查看对象之间的关系。 通过 ''Geometry Spreadsheet'' 可以查看对象之间的关系。
 ==模拟的可视化== ==模拟的可视化==
-见此+<WRAP round todo 60%> 
 +待完善 
 +</WRAP> 
 ==DOP 中的 Bypass== ==DOP 中的 Bypass==
 与 SOP 相同,DOP 中也允许节点的 bypass。bypass 的节点不会参与整个节点的模拟。bypss 的状态是可以进行 keyframe 的,我们通过对指定节点的 ''Activation'' 属性进行关键帧管理即可达到这样的效果。非零代表当前节点参与模拟,零代表不参与模拟。 与 SOP 相同,DOP 中也允许节点的 bypass。bypass 的节点不会参与整个节点的模拟。bypss 的状态是可以进行 keyframe 的,我们通过对指定节点的 ''Activation'' 属性进行关键帧管理即可达到这样的效果。非零代表当前节点参与模拟,零代表不参与模拟。
行 274: 行 277:
   * 如果只需要解算一次对象的运动(比如 ridid body)。   * 如果只需要解算一次对象的运动(比如 ridid body)。
   * 当对解算结果满意,不希望更改时。   * 当对解算结果满意,不希望更改时。
-除了利用上面节点的 caching 功能之外,我们也可以利用 ''Output'' 节点或者 ‘’Dynamics render'' 节点来输出解算结果。+除了利用上面节点的 caching 功能之外,我们也可以利用 ''Output'' 节点或者 ''Dynamics render'' 节点来输出解算结果。
 \\ \\
 \\ \\
行 282: 行 285:
 |<color #c8bfe7>紫色</color>|缓存处于 //.sim// 文件中。| |<color #c8bfe7>紫色</color>|缓存处于 //.sim// 文件中。|
 |<color #ff7f27>橙色</color>|该缓存使用内存存储,但因为内存不足 / 改变了解算设置 导致该缓存不再存在。| |<color #ff7f27>橙色</color>|该缓存使用内存存储,但因为内存不足 / 改变了解算设置 导致该缓存不再存在。|
-===Disk Caching===+===Explicit Disk Caching=== 
 +默认情况下,如果 ''Allow caching to disk'' 选项启用,那么 Houdini 会将缓存文件写到一个临时目录中。而一旦解算文件无效以后,Houdini 会自动将其从临时目录中删除掉。 
 +\\ 
 +\\ 
 +这种情况下,我们的解算文件既不安全,又难以管理。针对该情况,Houdini 提供了 ''Save checkpoints'' 的选项。该选项允许我们: 
 +  * 指定存储解算文件的目录,需要使用 ''$SF'' 作为自动编号扩展名。 
 +  * 指定多少帧存储一个 checkpoint;比如 ''5'' 意味着每 ''5'' 帧存储一次。 
 +  * 指定 Houdini 每次存储多少个 checkpoints,超过该值的存储点会被删掉。 
 +checkpoint 在规模较大的模拟中非常有用,特别是在渲染农场中。比如,如果我们的渲染在 ''50'' 帧的时候由于某种原因失败了,那么我们设定当前起始帧为 ''50'' 帧,之后再利用之前的 checkpoint 来进行解算(比如 ''45'' 帧处有一个 checkpoint),而不是从一开始重新解算。 
 +===Baking out sim files=== 
 +处于 DOP 网络末端的 ''Output'' 节点可以控制如何写出模拟结果。这些结果是独立于缓存的,可以用于其他的用途。 
 +\\ 
 +\\ 
 +输出的步骤: 
 +  - 选择 ''start'' 和 ''end'' 决定要输出的帧数。 
 +  - 在 ''output file'' 中输入对应的路径与表达式。可以使用 ''.sim.gz'' (gzip) 或 ''.sim.sc'' (Blosc) 的压缩格式;速度更慢但更节省硬盘空间。 
 +  - ''save to disk'' or ''save to disk in background''。''save to disk in background'' 会创建一个新的 Houdini 进程来运行当前的模拟。如果选择该方式,模拟之前必须存储 ''.hip'' 文件。 
 +除了 ''Output'' 节点之外,我们也可以选择 ''Dynamic'' 来输出我们的文件(注意这个文件是在 out 中)。如果我们的模拟在 out 网络中有依赖(也就是 out 网络的一部分),那么用 dynamic 节点是非常有用的。同时,因为 ''Dynamics'' 节点不是 DOP 的一部分,因此修改其参数不会导致 recook。 
 +\\ 
 +\\ 
 +当我们完成 “baking” 解算文件后,我们可以停止 DOP network 的解算并使用我们存储好的 ''.sim'' 文件。 
 +====参考资料==== 
 +  * [[https://www.sidefx.com/docs/houdini/dyno/index.html|Dynamics]]