“ 感知技术 · 感触CG · 感受艺术 · 感悟心灵 ”

中国很有影响力影视特效CG动画领域自媒体

看官网发现pc函数多了几个陌生的参数,应该是新版本的更新。更新笔记分享一下
本篇包括如下几个VEX函数:

pcfind(), pcopen(), pciterate(), pcimport(), pcexport(), pcunshaded(), pcfilter(), pcfarthest()

pcfind()-->int[]

该函数根据指定位置以及指定半径,查找指定几何上的半径距离内的点,并返回查找到的点索引数组。

pcfind(int geohandle , string Pchannel, vector P , float radius, int maxpoints)-->int[]

Pchannel是一个字符串参数,对应着被查找几何存储位置信息的点属性,比如"P"。

P指定用于当前查找行为的起始位置。

radius决定了查找半径。

maxpoints决定了查找结果的最大数量。

此外,根据引入参数的不同,函数存在其它形态:

pcfind(int geohandle , string group , string Pchannel, vector P , float radius, int maxpoints)-->int[]

该形态可以引入一个point group,从而限定查找范围。

pcfind(int geohandle , string group , string Pchannel, vector P , float radius, int maxpoints, float &distances[])-->int[]

该形态多出一个&distances[]数组指针参数,意即函数可以对其进行修改。数组成员类型为浮点,函数会将查找到的每一个点与起始位置的距离,按序存入到该数组变量中。

pcopen()-->int[]

该函数引入点云几何文件(也可以是当前Houdini中的点云几何节点路径,通过op:语句),开启该文件,并将点云几何的点进行按序排队访问。

pcopen(string filename, string Pchannel, vector P , float radius, int maxpoints)-->int[]

函数从参数P获取到用于查找点云的起始位置,在radius参数指定的半径范围中,查找"filename"点云中的最近Points(其位置信息由"Pchannel"参数所指定的属性决定)。

该函数返回一个handle对象,通过int类型的变量存储,该handle用于引入其它pc相关函数,对查找到的点云数据进行处理。

根据引入参数的不同,函数存在另一种形态:

pcopen(string filename, string Pchannel, vector P , string Nchannel, vector N, float radius, int maxpoints)-->int[]

该形态下,多出了搜索目标几何上的"Nchannel"属性名称,在被搜索几何上,该属性描述了点的方向,向量参数N则指定了一个判断方向,即只有当前者与后者对齐时,才会被当前函数所开启。

pciterate()-->int[]

pciterate(int handle)-->int[]

该函数引入pcopen()函数返回的handle对象,用于对pcopen()所查找到的 Points数量 进行遍历——该函数每执行一次,剩余遍历次数减少一次,遍历成功时返回1,意味着还有剩余次数,如果后面没有剩余,则返回0。

遍历顺序由近及远。

所以该函数可以用于while循环的条件判断,从而在循环体内,对查找到的每个point进行进一步处理。

pcimport()--> type

pcimport(int handle , string channel_name )--> type

在上述while循环的内部,该函数用于返回每次遍历所对应的Point的指定属性值。

pcexport()--> type

pcexport(int handle, string channel_name, type value)--> type

在上述while循环的内部,该函数用于为指定属性赋值。

pcunsheded()

pcunsheded(int handle, string channel_name)

此处的shade,是指为points添加新的属性。

该函数的执行逻辑基本和pciterate()相同,只是第二个参数"channel_name"用于声明要为目标Points(pcopen()函数所查找到的Points)写入的属性名称。

所以须注意:handle对象类似于python中的生成器,执行一次少一次,所以pciterate() 和 pcunshaded() 两个函数不能结合使用。

pcfilter()--> type

pcfilter(int handle, string channel_name )--> type

该函数根据pcopen()返回的handle,返回查找到的所有点上的指定属性在查找起始位置上的平均插值。

pcfarthest()--> int

pcfarthest(int handle)

该函数返回pcopen()所查找到的点中最远的点索引。

全文完

大佬技艺好,显卡也好!

又一中国特供GPU面临禁售?

雕刻技艺精湛!小姐姐雕刻作品赏