“ 感知技术 · 感触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面临禁售?
雕刻技艺精湛!小姐姐雕刻作品赏
热门跟贴