Houdini vex 语法第二篇(组) 每日观点
1.Houdini中的group(组)介绍:
1.1:Houdini group是点或者面的集合,如下图所示:
(相关资料图)
说明:图中有两个点group,一个是红色点组成的集合,另一个是黑色点组成的集合
说明:图中有两个面group,一个是紫色面组成的集合,另一个是黄色面组成的集合
1.2:Houdini中哪些存储单元可以划分group:
1.2.1:Points:本质是几何点(可以参考上一篇),可以划分group
1.2.2:Vertices:本质也是几何点(可以参考上一篇),可以划分group
1.2.3:Edges:两个点组成线,可以划分group(edge在数据面板中不可查看,为了简单起见。本文不介绍这个类型,以后介绍,但是这个仍然很重要)
1.2.4:Primitives:可以是线也可以是面(可以参考上一篇),可以划分group
1.2.5:上述内容可以参考Houdini中group create节点中的group type,如下图:
1.3:认识函数(方法)
1.3.1:Houdini中对组的所有操作都是基于函数(方法)的,这里简单介绍下Houdini中的函数,如下图:
说明:
1.上图int为函数(方法)的返回值,可以是各种类型,int只是其中一种,我们可以用一个变量接收这个返回值,也可以直接当做另一个函数的入参(见说明第3点)
2.setpointgroup为函数名,表示这个函数的功能,比如示例中的的函数功能为:设置点的group
3.括号里的为入参,表示这个函数正常运行所需要的一些数据,不同函数的参数可长可短,也可以没有。
4.更多关于函数的介绍大家可以自行百度编程里的函数(方法),推荐简单入门一个编程语言如c/c++(详细可私信up,帮推荐),这里只是降低这篇专栏难度的简单介绍。
2.Houdini中对group的操作演示
2.1:在数据面板中查看group(组):
2.1.1:如图,给一个球体创建一个group:
说明:默认情况下会把一个几何体按照group划分的单位放到一个组里,也就是说默认情况下一个几何体只有一个group
2.1.2:如图Points下创建组:
说明:列名:group:组名,列值:1代表在group内,0则反之,在其他单位下划分group基本一样,改变group type 在相应面板查看即可,这里不再赘述
2.2:Houdini中将划分单元移除或者加入到group
2.2.1:group将单元加入和移除如下图:
1.以上演示都是在Points单元下的操作,切换上图run over在对应数据面板查看效果,函数要切换为setprimgroup和setvertexgroup,setprimgroup和setpointgroup是差不多的,setvertexgroup在参数和效果上是有些不同的
2.setpointgroup参数介绍:第一个参数是输入的端点编号,从左到右从0开始递增;第二个参数是group的名称;第三个参数是point编号,可以是固定编号,也可以使用属性对每个point遍历;第四个参数是0或者1,表示是否在group内,最后一个参数是模式目前只有一个取值"set"。更详细介绍可以去文末api链接里了解
3.setvertexgroup参数介绍:第一个参数是输入的端点编号,从左到右从0开始递增;第二个参数是group的名称;第三个参数是primitive编号,可以是固定编号,也可以使用属性对每个primitive遍历;第四个参数是偏移量,表示每隔几个vertex设置一次;第五个参数是0或者1,表示是否在group内,最后一个参数是模式目前只有一个取值"set"。更详细介绍可以去文末api链接里了解
2.3:group的基本函数
2.3.1:如图,演示节点结构:
说明:为了便于理解三个几何体分别以point,vertex, prinum为单位划分group,演示group的三个基本函数,判断单元在group内,统计group内单元数量,以数组形式返回group内所有单元编号
2.3.2:如图,判断单元在group内:
说明:
1.上面只展示了point单元下的数据,看其他单元下的效果只需要放开相应的函数,改变run over即可
2.inpointgroup函数介绍:这个函数是判断point是否在group内,三个参数从左到右分别为输入的端点编号,从左到右从0开始递增;第二个参数是group名称,第三个参数是要判断的point编号,可以是固定编号,也可以使用属性进行遍历;返回值表示是否存在,0表示不存在,1反之,如上图point_exit列;invertexgroup,inprimgroup函数同理
3.详细内容查阅文末api文档
2.3.3:如图,统计group内单元的数:
说明:
1.统计group内单元数量只需要执行一次就够了,所以在detail单元下查看是最方便的
2. npointsgroup函数介绍:统计group内point的数量,两个参数从左到右分别为输入的端点编号,从左到右从0开始递增;第二个参数为要统计的group的名称;返回值是统计的point的数量;nverticesgroup和nprimitivesgroup同理
3.详细内容查阅文末api文档
2.3.4:如图,以数组形式返回group内所有单元的编号:
说明:
1.以数组形式返回group内所有单元的编号只需要执行一次就够了,所以在detail单元下查看是最方便的
2.expandpointgroup函数介绍:以数组形式返回group内所有point的编号,两个参数从左到右分别为输入的端点编号,从左到右从0开始递增;第二个参数为要统计的group的名称;返回值是group所有point编号的数组;expandvertexgroup和expandvertexgroup同理
3.详细内容查阅文末api文档
2.4:group扩展
2.4.1:如图,演示节点结构:
说明:
1.以上演示都是point单元下的演示
2.扩展是为了给Houdini中使用组的提供一个tip,让大家了解编程操作group的灵活性和强大之处,更多内容在以后的专栏或者读者可以自行研究
2.4.2:寻找group内point的最近point
说明:
1.nearpoint函数介绍:这个函数是point函数,不是group的,函数功能就是寻找group内距离输入point最近的point,一共有三个参数从左到右分别为输入的端点编号,从左到右从0开始递增;第二个参数是组的名称;第三个参数是输入点的坐标,可以是固定点的坐标,也可以用属性遍历;返回值是距离最近point的编号
2.该函数还有很多重载方法,重载是编程术语,意思是函数名相同,但是参数的类型,顺序,长度不同。大家可以自行去文末api链接了解
3.可以看到第二个函数使用了一个"@P.x>0"的group名称,这是一种高阶用法,以表达式匹配生成group,表达式可以很复杂,这里只是限定了坐标x>0的所有point
补充说明:
1.Houdini api 文档链接:https://www.sidefx.com/docs/houdini/vex/functions/
2.示例下载:
链接: https://pan.baidu.com/s/1SFgv8corlJmP-A2pqqVBfg 提取码: abcd
3.温馨提示:api文档很重要,以后编程自由很大一部分要依赖api文档
ps:如有错误留下评论,up改正,一起进步
上一篇:Houdini vex 语法第一篇(属性)
下一篇:Houdini vex 语法第三篇(参数):待续
相关新闻
- Houdini vex 语法第二篇(组) 每日观点
- 新昌城投2.2亿元竞得绍兴新昌县1宗商住地 楼面价4002元/㎡ 环球速看料
- 留学英语口语训练_留学英语口语宝典 世界新视野
- 焦点观察:高考录取“激战”一触即发,揭开2023中外大学专业“兴亡史”
- 全球快报:西安市未央区雷寨小学开展“小葵花爱心义卖”活动
- 时讯:延津县气象台发布高温红色预警【Ⅰ级/特别严重】【2023-06-15】
- 湖南涟源一警务人员查酒驾时被冲卡车辆撞伤,受轻伤无生命危险,肇事司机已自首
- 爆字节跳动花70亿向英伟达买显卡:一块就要20万|世界聚看点
- 城发环境:6月14日融资买入1175.2万元,融资融券余额2.28亿元-今日热讯
- 日喀则自由行攻略(夏主编旅游攻略:日喀则对滞留市区游客提供免费住宿) 焦点观察
- 每日动态!迈阿密市长苏亚雷斯提交文书参加美国总统竞选
- 北京初中学业水平考试开考在即!教育考试院最新提醒—— 世界观点
- 全球短讯!古文称父母为什么_古代为什么叫父母母亲是令尊令堂
- 天天热头条丨2023年6月14日正丁醇价格最新行情预测
- 36小时内,乌军突进100公里,数千俄军拼死拦截,战场上遍地尸首
- 环球快资讯:社论:经济复苏需要重启企业造血功能
- 当前热点-黑龙江省人民政府人事任免
- 小山 全球看热讯
- 【快播报】西安一小区楼体开裂路面塌陷,多方认定主体结构安全,维修需花近百万
- 雍正又叫什么名字_雍正的全名叫什么简介介绍