跳过正文

VEX:如何沿用上组变量

·451 字·1 分钟
杂谈 VEX
AxonSin
作者
AxonSin
梦想是复活在赛博世界,成为一名赛博垃圾人。

偶然在用的时候看到了一行代码

float rotation = radians(@rotation*360);
vector axis = v@axis; 

这里在引用属性的时候出现了两种情况:一种是@rotation;一种是v@axis。这之间其实是指定类型和自动查找类型之间的差异:

在VEX中,v@和单独的@是属性访问的不同语法,区别在于数据类型的明确指定:

@ 语法
#

@axis  // 自动推断数据类型
  • VEX会根据上下文自动推断属性的数据类型
  • 如果无法明确推断,可能导致错误或意外结果

v@ 语法
#

v@axis  // 明确指定为vector类型
  • 明确指定属性为vector类型
  • 即使原始属性是其他类型,也会尝试转换为vector

类型前缀列表
#

  • i@ - integer (整数)
  • f@ - float (浮点数)
  • v@ - vector (向量)
  • p@ - vector4 (四维向量)
  • s@ - string (字符串)
  • u@ - vector2 (二维向量)

实际区别示例
#

// 如果axis属性实际是float类型
vector axis1 = @axis;   // 可能报错或产生意外结果
vector axis2 = v@axis;  // 强制转换为vector,如{axis_value, 0, 0}

// 如果axis属性确实是vector类型
vector axis3 = @axis;   // 正常工作
vector axis4 = v@axis;  // 正常工作,等价

最佳实践
#

使用类型前缀(如v@)更安全、更明确,特别是在复杂场景中,能避免类型推断错误。

Reply by Email

相关文章

Houdini:从Mantra切换为Karma的材质工作流切换
·2819 字·6 分钟
杂谈 Shader Houdini VEX 渲染 材质 色彩 故障排除 教程 插件
VEX编程技巧
模糊算法
·119 字·1 分钟
杂谈 算法 色彩
算法原理解析
Unity区域光(Area Light) 没有反应
·1123 字·3 分钟
杂谈 Unity 渲染 材质 光照 色彩
渲染技术解析