HoudiniVex筆記_P23_SDFBasics有向距離場

原視頻:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最強VEX算法教程 - VEX for Algorithmic Design_嗶哩嗶哩_bilibili

Houdini版本:19.5

1、什么是SDF

Houdini支持兩種體積類型,它自己的體積格式(也有兩種,Fog 和SDF )和VDB格式。

Volume的兩種類型:Fog volumeSDF volume。是Houdini自帶的不同類型的體積,特點是每個體素都有值。Volume(體積)由voxel(體積元素,后面簡稱為體素)組成。

Fog volume實際是儲存了每個體素的密度,常應用于流體模擬等。(想了解可以前面的第10節筆記)
SDF volume中(SDF Signed Distance Filed 是帶符號的距離場),每個體素存儲了一個數值數值大小表示到表面的距離,正數代表在物體外,負數代表在物體內,0表示在物體表面(需要精度較高)。所以將幾何體轉化為碰撞物的時候,實質就是轉化為SDF,利用體素的數值來判斷是否發生碰撞等

更多體積相關可以看這篇文章的簡單介紹:Houdini中體積SDF/fog/volume/db的一些理解和區別

2、SDF節點及參數

①創建一個類型為Polygon的Sphere節點,再添加一個vdbfrompolygons節點,及一個VolumeWrangle節點,

②用上面為例,講講vdbfrompolygons節點的一些設置

③我們僅保留點,看看vdbfrompolygons節點設置的具體表現
?第三、四、五張圖為用點代替體素,的一個截面,

?3、volumegradient函數?

volumegradient() 函數返回一個向量值,該值為距離值遞增方向的矢量值(下面試試讓這個值代替體素的法線),(gradient的中文感覺總差點意思,后面還是以英文代替吧),

4、使用Fog Volume可視化SDF值

挺簡單的,還是記錄下,

5、使用VEX對SDF輪廓簡單修改

可以直接修改SDF的【@surface,來實現物體表面/輪廓的改變(對輪廓進行偏移操作),
值相加,物體的表面/輪廓向內偏移,即收縮
值相減,物體的表面/輪廓向外偏移,即擴大

eg.簡單記錄下,感興趣可以試試,

?6、Exercise—修改SDF輪廓與Animated

基于時間和三角函數,對SDF輪廓進行動態修改。

eg.直接使用【5、使用VEX對SDF輪廓簡單修改】的案例,僅對VolumeWrangle節點進行修改,

float val = sin(@P.y * $PI * chi('num') + @Time * 10) * chf('dist');f@surface += val;

結果為:在 num = 6,dist = 0.07條件下,

7、修改SDF的Gradient值

還是基于三角函數對物體輪廓進行偏移,比上面的稍微復雜一丟丟, 不曉得可以應用到哪方面(云層?),還是記錄下。

eg.先上結果,

①節點及設置如下,

②對offset_with_voxel_val_and_gradient節點的一些補充,

float val = f@surface;
vector dir = volumegradient(0, 'surface', @P);//頂視圖視角下,Gradient值與dirXZ.x值的夾角
vector dirXZ = dir;
dirXZ.y = 0.0;
dirXZ = normalize(dirXZ);
float ang = atan2(dirXZ.z, abs(dirXZ.x));   
//atan2返回兩個向量之間的夾角
//因為atan2三角函數范圍是-π到π,所以使用絕對值abs,使其范圍為0到π//多重映射
float v = sin(ang * chi('num'));    //值范圍-1到1
v = fit11(v, 0, 1.0);               //重映射,值范圍0到1
v = chramp('ramp', v);              //繼續重映射,隨便設
v = fit01(v, 0.0, chf('dist'));     //重映射,值范圍0到【自定義】f@surface += v;    //結合sin函數的規律,去理解v值的變化

?8、SDF與基礎碰撞

挺簡單的,僅記錄下,

9、Exercise—SDF碰撞與Animated

與上類似,不過這次加入解算器,讓小球在Grid上轉動,也不算復雜,記錄下,

10、Exercise—SDF Gradient與向量Animation

點由內向外運動,運動方向位gradient。

eg.先上結果,原模型為橡皮模型,

①節點連接及設置,(代碼在下一個案例),

11、基于SDF的擴展向量場

大概與上類似,不過加入了curlnoise() 噪波函數,讓其運動起來跟隨噪波特性(隨機但又有序)。

eg.先上結果,

?①直接使用【10、Exercise—SDF Gradient與向量Animation】的案例,下圖為節點連接及設置,相同設置部分不再贅述
② 完整代碼如下,

//    copy SDF節點代碼
vector dir = volumegradient(1, 'surface', @P);
vector cdir = curlnoise(@P * chf('smoth') + @Time * chf('speed')) * chf('scale');v@velocity = normalize(dir + cdir);
//    move節點代碼
float val = volumesample(1, 'surface', @P);
vector dir = volumesamplev(3, 'velocity', @P);
//vector dir = volumegradient(1, 'surface', @P);if(val >= 0.0){     //在輪廓外面的點重新實例化vector pos = point(2, 'P', @ptnum);@P = pos;
}@P += dir * chf('speed');   //點沿法線/gradient方向移動
@N = dir;
f@val = val;
//    pointwrangle3節點代碼(最后一個節點)
int pt = addpoint(0, @P + @N * 0.5);
setpointattrib(0, 'Cd', pt, v@Cd);
int line = addprim(0, 'polyline', @ptnum, pt);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37223.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37223.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37223.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用wxPython和PyMuPDF提取PDF頁面指定頁數的內容的應用程序

在本篇博客中,我們將探討如何使用wxPython和PyMuPDF庫創建一個簡單的Bokeh應用程序,用于選擇PDF文件并提取指定頁面的內容,并將提取的內容顯示在文本框中。 C:\pythoncode\new\pdfgetcontent.py 準備工作 首先,確保你已經安裝了…

44 | 酒店預訂及取消的數據分析

1.背景介紹 數據集來自Kaggle網站上公開的Hotel booking demand項目 該數據集包含了一家城市酒店和一家度假酒店的預訂信息,包括預訂時間、入住時間、成人、兒童或嬰兒數量、可用停車位數量等信息。 數據集容量約為12萬32 本次數據分析主要包含如下內容: 總覽數據,完成對…

大數據-玩轉數據-Flink網頁埋點PV統計

一、說明 衡量網站流量一個最簡單的指標,就是網站的頁面瀏覽量(Page View,PV)。用戶每次打開一個頁面便記錄1次PV,多次打開同一頁面則瀏覽量累計。 一般來說,PV與來訪者的數量成正比,但是PV并不…

虹科干貨 | 化身向量數據庫的Redis Enterprise——快速、準確、高效的非結構化數據解決方案!

用戶期望在他們遇到的每一個應用程序和網站都有搜索功能。然而,超過80%的商業數據是非結構化的,以文本、圖像、音頻、視頻或其他格式存儲。Redis Enterprise如何實現矢量相似性搜索呢?答案是,將AI驅動的搜索功能集成到Redis Enter…

STABLE DIFFUSION模型及插件的存放路徑

記錄下學習SD的一些心得,使用的是秋葉大佬的集成webui,下載了之后點擊啟動器即可開啟,文件夾中的內容如下 主模型存放在models文件下的stable-diffusion文件夾內,一些擴展類的插件是存放在extensions文件夾下

【MFC】12.雙緩沖序列化機制-筆記

雙緩沖 雙緩沖在之前寫字符雨的時候,已經簡單介紹過,今天我們來寫一個簡單的程序來體會雙緩沖機制 我們實現一個在屏幕上畫直線的功能: 在類中添加變量,保存起點坐標和終點坐標: //定義一個容器,保存每…

【189】Java Spring利用HTTP輪詢遠程控制樹莓派4B繼電器開關

因為項目需求,要實現PC遠程控制警鈴的效果。警鈴結構簡單,只需要通上12V的直流電就可以報警。本文的樹莓派設備是在樹莓派4B的基礎上找硬件廠商搞的定制化產品。樹莓派4B通過4G網卡連接互聯網,并利用GPIO控制12V直流電的繼電器開關。樹莓派4B…

【設計模式】責任鏈模式

顧名思義,責任鏈模式(Chain of Responsibility Pattern)為請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。 在這種模式中,通常每個接收者…

移動端預覽指定鏈接的pdf文件流

場景 直接展示外部系統返回的獲取文件流時出現了跨域問題: 解決辦法 1. 外部系統返回的請求頭中調整(但是其他系統不會給你改的) 2. 我們系統后臺獲取文件流并轉為新的文件流提供給前端 /** 獲取傳入url文件流 */ GetMapping("/get…

Java 正則表達式【非貪婪匹配、格式驗證、反向引用、API】

非貪婪匹配 非貪婪匹配的元字符是問號 ? 當此字符跟在任何其他限定符(*、、?、{n}、{m}、{n,m})之后,匹配模式是 "非貪心的"。非貪心的意思就是每次匹配搜索到的盡可能短的字符串,可以是0個。 案例 對…

30 | 中國高校數據分析

一、數據源 本項目使用了兩個csv的數據文件,一個是中國高校(大學)的數據,一個是中國高校專業設置的數據 數據基本欄位:高校(大學)的數據高校專業設置的數據學校學校省份專業類別城市專業名稱地址國家特色專業水平層次辦學類別辦學類型985211雙一流二、數據分析目標 本…

電腦打開對話框中沒有桌面這個選項解決辦法

問題描述: 左側欄中的桌面圖標不顯示 解決方法: 左側的空白處右鍵-顯示所有的文件夾 這時所有的文件夾都顯示了!

從魯大師十五年,尋找軟件的生存法則

千禧之年,國內互聯網用戶數量首次突破1000萬大關,互聯網的騰飛正式拉開序幕。 從彼時算起,中國互聯網發展也不過23年,而我們記憶中那個搖著蒲扇的老頭,卻占據了其中關鍵的十五年。 這十五年中有太多曾經為人熟知的軟件…

pointpillars怎么查看tensorboard

在PointPillars中使用TensorBoard來可視化訓練過程和模型性能是很常見的做法。TensorBoard是TensorFlow提供的一個強大的工具,用于可視化訓練過程、模型圖、損失曲線、準確率等。下面是在PointPillars中使用TensorBoard的一般步驟: 請注意,上…

CHATGPT源碼簡介與使用指南

CHATGPT源碼的基本介紹 CHATGPT源碼備受關注,它是一款基于人工智能的聊天機器人,旨在幫助開發者快速搭建自己的聊天機器人,無需編寫代碼。下面是對CHATGPT搭建源碼的詳細介紹。 CHATGPT源碼的構建和功能 CHATGPT源碼是基于Google的自然語言…

flutter開發實戰-MethodChannel實現flutter與iOS雙向通信

flutter開發實戰-MethodChannel實現flutter與iOS雙向通信 最近開發中需要iOS與flutter實現通信,這里使用的MethodChannel 如果需要flutter與Android實現雙向通信,請看 https://blog.csdn.net/gloryFlow/article/details/132218837 這部分與https://bl…

Linux——基礎IO(1)

目錄 0. 文件先前理解 1. C文件接口 1.1 寫文件 1.2 讀文件 1.3 輸出信息到顯示器 1.4 總結 and stdin & stdout & stderr 2. 系統調用文件I/O 2.1 系統接口使用示例 2.2 接口介紹 2.3 open函數返回值 3. 文件描述符fd及重定向 3.1 0 & 1 & 2 3.2…

【Spring Cloud Alibaba】RocketMQ的基礎使用,如何發送消息和消費消息

在現代分布式架構的開發中,消息隊列扮演著至關重要的角色,用于解耦系統組件、保障可靠性以及實現異步通信。RocketMQ作為一款開源的分布式消息中間件,憑借其高性能、高可用性和良好的擴展性,成為了眾多企業在構建高可靠性、高吞吐…

運維面試大全

文章目錄 第一階段平常怎么處理故障,思路是什么樣的公網和私網分類以及范圍,本機地址,網絡地址,廣播地址交換機的工作原理ICMP是什么干什么用的,它有哪些命令TCP和UDP協議的區別tcp有哪些控制位,分別是什么意思你是用過哪些Linux命令Linux 系統安全優化與內核優化經常使用…

stable diffusion 單張圖片換頭roop安裝配置

1.首先安裝秋葉大佬的webui 2.然后在拓展里面搜索roop,下載roop插件,然后重啟webui 3.重啟后,在文生圖和圖生圖的界面,就可以看到roop的入口 4.這里面,需要提前安裝Visual Studio. 勾選一些必要的選項,這里可以參照b站的視頻 # 秋葉版本Stablediffusion的Roop插件的安裝 …