首頁 | 資訊 | 財經 | 公益 | 彩店 | 奇聞 | 速遞 | 前瞻 | 提點 | 網站相關 | 科技 | 熱點 | 生活 |
      Houdini vex 語法第二篇(組)_焦點

      發稿時間:2023-06-15 15:48:35 來源: 嗶哩嗶哩
      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 語法第三篇(參數):待續?

      標簽:

      責任編輯:mb01

      網站首頁 | 關于我們 | 免責聲明 | 聯系我們

      生活晚報網版權所有

      Copyright @ 1999-2017 www.8x5.com.cn All Rights Reserved豫ICP備2022016495號-7

      聯系郵箱:939 674 669@qq.com