Houdini VEX | Hscript学习笔记

Houdini VEX Doc

(一)VEX

1.矩阵

  • eigenvalues(int &nroot,matrix3 mat,vector &real,vector &imaginary) 计算矩阵特征值
  • determinant(matrix m) 矩阵行列式
  • invert(matrix m) 逆矩阵
  • transpose(matrix m) 转置矩阵
  • ident() 单位矩阵
1.1生成矩阵
  • matrix3 maketransform(vector zaxis,vector yaxis) 基于Z(N)、Y(up)基向量创建矩阵
  • matrix maketransform(vector zaxis,vector yaxis,vector translate) 基于Z(N)、Y(up)基向量创建矩阵
  • matrix3 maketransform(int xyz,vector angles) 由欧拉角(弧度)生成旋转矩阵
  • matrix maketransform(int trs,int xyz,vector t,vector r,vector s,vector p) 移动T、旋转R、缩放S、轴心P
1.2投影矩阵
  • matrix perspective(float zoom, float image_aspect, float pixel_aspect, float clip_near, float clip_far)
  • matrix orthographic(float zoom,float orthowidth,float image_aspect, float pixel_aspect,float clip_near,float clip_far)
  • vector toNDC(string camera_name,vector point)
1.3矩阵其他
  • optransform(path) 获取SOP节点transform信息
  • cracktransform() 分解矩阵:移动、缩放、旋转
  • matrix3 dihedral(vector a,vector b) 计算从向量a旋转到向量b的变换矩阵
  • vector4 dihedral(vector a,vector b) 计算从向量a旋转到向量b的变换四元数

2.四元数

  • quaternion(matrix3 rotations) 由矩阵中获取旋转
  • quaternion(float angle,vector axis) 由旋转角度、旋转轴生成四元数
  • quaternion(vector angleaxis) 建议使用eulertoquaternion()
  • qrotate(vector4 quaternion,vector v) 旋转向量
  • matrix3 qconvert(vector4 quaternion) 四元数转旋转矩阵
  • matrix qconvert(vector4 quaternion,vector offset) 四元数转旋转矩阵,后加- 移动
  • vector qconvert(vector4 quaternion) 四元数生成欧拉角(弧度)
  • eulertoquaternion(vector rotations,int order) 由欧拉角(弧度)生成四元数
  • quaterniontoeuler(vector4 orient,int order) 四元数生成欧拉角(弧度)

(二)引用路径

VEX中的路径

1
2
3
4
5
6
7
8
//vex
vector pos = point(1, "P", 3); //常用input id
vector pos = point(-1, "P", 3); //spare input id
vector pos = point("op:/obj/geo1/box1", "P", 3); //abs op path
vector pos = point("op:../box1", "P", 3); //rel op path
vector pos = point("defgeo.bgeo", "P", 3); //file path

vector pos = v@opinput1_P; //index相同不同OpInput,不会自动cast

COP模块访问SOP节点路径

1
2
3
//vex snippet code
op:/obj/geo/box1
op:../../../box1

Hscript中的路径

  • SOP访问COP节点路径
    1
    2
    //hscript表达式
    op:`opfullpath("../cop2net1/out")`

HDA内置静态数据路径

  • 在Type属性中的Extra Data可以内嵌数据
  • file中可以使用opdef:..?ball.fbx访问内置数据


Houdini VEX | Hscript学习笔记
https://automask.github.io/wild/2021/11/23/log/P_Houdini_Vex_Hscript/
作者
Kyle Zhou
发布于
2021年11月23日
许可协议