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.mzph.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插件的安装 …