======VEX Concepts & Refs====== //VEX 的相关概念、基础知识、语法等// ---- ====Basics==== ===Intro=== VEX 是一种 类 C / C++ 的**编译型语言**,主要用于写 shader 和自定义节点。其主要的灵感来自于 C、C++ 和 RSL。详细的来说,在 Houdini 中,VEX 的主要用于以下几个方面: * Rendering:Mantra 实际上使用 VEX 进行 shading 的计算,包括灯光,surface, 置换 和 fog。 * Compositing:使用 ''VEX Generator'' 和 ''VEX filter'' 可以自定义 COPS。 * Particles:使用 VEX 基本可以做到 POPS 中的任何事情。VEX 可以将许多 POPS 中的操作整合到一起,因此通常也较普通的 POP 网络快。 * Modeling:VEX SOP 可以方便的操控 point attributes,包括移动点、修改速度、修改颜色等等。VEX 也支持对点的编组。 * CHOPS:VEX CHOP 可以自定义 CHOPS。 * Fur:程序化毛发是用 VEX 实现的。 ==Contexts== 通过上面的介绍可知,VEX 实际上是为指定的 Contexts (也就是 SOP / DOP 等等)服务的。根据不同的使用场景(contexts),可供 VEX 调用的函数 / 全局变量 / 语句 等等也会有不同。 \\ \\ SideFX 提供了关于 Context 的参考:[[https://www.sidefx.com/docs/houdini/vex/contexts/index.html|VEX contexts]] ====Functions==== ===导入外部自定义函数=== Houdini 中,自定义 VEX 函数存储到外部的 ''.h'' 文件中,然后在需要使用的时候导入并调用就可以。该过程分两部:\\ \\ 首先需要指定 ''.h'' 文件的位置。 Houdini 有一个专门的环境变量:''HOUDINI_VEX_PATH'' 来指定该地址,只需要在 ''houdini.env'' 中添加一行即可: HOUDINI_VEX_PATH = ”your address of .h file“ 接下来在 Wrangle 节点中,包含对应的头文件即可。写法与 C 一致: #include "target.h" Houdini 的 env 文件位置: %HOME%/houdiniX.X/houdini.env. #Windows ~/Library/Preferences/houdini/X.X/houdini.env. #Mac ~/houdiniX.X/houdini.env. #Linux