What & How & Why

差别

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

到此差别页面的链接

后一修订版
前一修订版
vfx:houdini:vex:references [2019/04/30 13:13] – 创建 codingharevfx:houdini:vex:references [2021/11/11 08:08] (当前版本) codinghare
行 1: 行 1:
 ======VEX Concepts & Refs====== ======VEX Concepts & Refs======
 //VEX 的相关概念、基础知识、语法等// //VEX 的相关概念、基础知识、语法等//
-===== =====+----
 ====Basics==== ====Basics====
 ===Intro=== ===Intro===
-VEX 是一种 类 C / C++  的**编译型语言**,主要用于写 shader 和自定义节点。其主要的灵感来自于 C、C++ 和 RSL(尼玛这一块基本全是照搬啊)。详细的来说,在 Houdini 中,VEX 的主要用于以下几个方面:+VEX 是一种 类 C / C++  的**编译型语言**,主要用于写 shader 和自定义节点。其主要的灵感来自于 C、C++ 和 RSL。详细的来说,在 Houdini 中,VEX 的主要用于以下几个方面:
   * Rendering:Mantra 实际上使用 VEX 进行 shading 的计算,包括灯光,surface, 置换 和 fog。   * Rendering:Mantra 实际上使用 VEX 进行 shading 的计算,包括灯光,surface, 置换 和 fog。
   * Compositing:使用 ''VEX Generator'' 和 ''VEX filter'' 可以自定义 COPS。   * Compositing:使用 ''VEX Generator'' 和 ''VEX filter'' 可以自定义 COPS。
行 11: 行 11:
   * CHOPS:VEX CHOP 可以自定义 CHOPS。   * CHOPS:VEX CHOP 可以自定义 CHOPS。
   * Fur:程序化毛发是用 VEX 实现的。   * Fur:程序化毛发是用 VEX 实现的。
-===Contexts=== +==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'' 中添加一行即可: 
 +<code bash> 
 +HOUDINI_VEX_PATH = ”your address of .h file“ 
 +</code> 
 +接下来在 Wrangle 节点中,包含对应的头文件即可。写法与 C 一致: 
 +<code vex> 
 +#include "target.h" 
 +</code> 
 +Houdini 的 env 文件位置: 
 +<code bash> 
 +%HOME%/houdiniX.X/houdini.env. #Windows 
 +~/Library/Preferences/houdini/X.X/houdini.env. #Mac 
 +~/houdiniX.X/houdini.env. #Linux 
 +</code>