Houdini笔记操作技巧_集锦

news2024/11/24 19:29:02

个人记录下,谨防遗忘。同时丰富下Hou的中文搜素环境。

1、自定义启动界面
① 设置完界面后,保存自定义界面(Save Current Desktop As...)
② Edit-->Preferences-->General UIInterface-->Startup in Desktop:自行选择
Scene窗口底部的底部 ‘帮助提示文字’ 挪个位置:
Edit-->Preference-->Notifications : Help Tip Area-->Status bar
④ 字体设置:
Edit-->Preference-->General User Interface-->Global UI Scale : 1.2(不建议设置过大)
⑤ Scence窗口按D键有更多设置
⑥ 记得保存布局:Build-->Save Current Desktop

2、项目设置
① 点击 new project:命名+路径+勾选需要创建的文件夹
② 保存 hip工程 文件:可保存到上面的项目文件夹内
③ hip工程访问项目内的资源文件:可使用file节点
(④ $HIP == 项目路径)
⑤ 可直接打包整个项目文件给同事/他人
⑥ 更改项目工程路径/名:
Edit-->Aliases and Variables-->Variables : 改

3、摄像机
Houdini单位:1网格=1m(Maya单位1网格=1cm)
② 景深设置:
Sampling-->Focus Distance(景深);
选中相机后,Scene窗口按Z键。
③ Shiter Time快门设置:看文档。

4、给节点注释:节点的 i :Node info里面写

5、变换坐标更改(以法线为坐标、以世界为坐标....)
选中点/线/面后,scene窗口变换坐标原点右键-->Align Handle:自行选择

6、对象枢轴设置
选中点/线/面后,scene窗口变换坐标原点右键-->Align Handle-->Start Orienttation Picking:自行选择
(可选择其它对象上,也可以与吸附功能相结合使用)

7、两个面的最短路径上的面:选择面后,按A键。

8、Select的更多操作
① 选择相同间隔的面:先选2个有间隔的面,右键-->(SELECT(S to overlay))-->Pattern Selection-->Set Pattern(快捷键Shift+P)-->Shift+箭头(逐个加选间隔面)
② 对于上一步的快捷键操作:先选2个有间隔的面-->Shift+P-->Shift+箭头:逐个加选间隔面(Ctr+Shift+箭头:选择一圈间隔面)
③ 右键有更多选择操作:反选、扩选、面选转点选、选择三/四/五边面、……

9、帧移动/选择
shift+左键:可在时间轴上框选帧
鼠标中键:移动帧

10、自定义节点/创建数字资产
选中需要的多个节点,点右上角(subnet)打包-->右键:Creat Digital Asset-->命名,一般使用默认保存路径,保存-->编辑节点参数(需要的参数拖进来及进行关联,方便调节)
修改节点及参数:节点修改完-->资产节点右键-->Type Properties...-->(修改参数)-->点击Apply-->最后右键点击Match Current Definition

11、Foreach节点迭代常用写法
① 如获取迭代值,detail("../foreach_end1/", "iteration", 0)
② detail(-1, "iteration", 0) // -1:如下图,是指在 被操作(carve1)节点 内创建的的通道(参数拖进来就好)(可与 反引号 `` 结合使用)

12、Compiled Block节点,与Foreach节点结合,并勾选Foreach和Compiled的多线程,能大大缩减编译时间。(带齿轮的节点,不能使用Compiled Block节点)

13、导入序列图文件的几种使用技巧
可以使用 padzero 函数进行补位 (函数参数第一个的意思是数字有多少位,下图导入的序列图是从 0002.jpg 到 0192.jpg)

14、通道参数使用的point()表达式,与VEX里面的函数用法略有不同,根据提示去写就好。
(Mix:第一个0表示点序号,第二个0表示数据类型(int、float…)

15、简单螺旋线
float r = chf('r');
float c = chf('c');
@P.x = r*cos(@P.y*c);
@P.z = r*sin(@P.y*c);

16、 for(int pt:pts) 与 foreach(int pt;pts) 功能相同,区别是一个用冒号,一个用分号。

17、一元操作符:a++、a--、++a、--a运算
a++、a--:先赋值,再运算
++a、--a:先运算,再赋值

18、撒点可以使用scatter、add,还可以用pointsfromvolume

19、时间控制:如在解算器内,使某行为20帧运行一次

20、通道隐藏表达式写法(Method是一个选择通道)

21、通道设置面板,Separator是分割线的意思。

22、Clamp函数:ratio = clamp(ratio, 0, 1); // 限制数值范围,ratio小于0时,ratio=0; ratio大于1时,ratio=1

23、sample_direction_cone ※ 在给定0到1之间的均匀数的向量2的情况下,在中心的最大角度内生成统一的单位向量

24、carve节点可以控制Line线UV的插值

25、enumerate:将所选point或primitive的属性设置为顺序数字或字符串。(相当于设置个id)

26、比如使一个模型的面打断后,进行打包Pack
以下两种方法均可,第一种更快

27、Ctr+Shift+Alt复制节点,可以把参数引用等一起复制过来

28、动画与输出缓存(如,水滴落到模型上)
1)导出:模型与水滴动画一起导出,使用rop_alembic节点直接导出(占内存较大)
      导入:使用alembic节点导入,一般还需要解

2)导出:仅导出水滴动画,把不要的属性删除(占内存较小)
3)导出:仅导出水滴动画,使用rop_geometry节点导出,注意命名,可以参考这个来命名,(bgeo是Houdini的格式,sc表示进行一定的压缩,占内存比方法2再小)
      导入:使用file节点导入
4)导出导入:filecache节点(相当于rop_geometry+file节点)

29、Ocean Foam 海洋泡沫。※ 产生基于颗粒的泡沫,一般用贴图更方便好看。

30、oceanevaluate节点的Export to Texture功能
输出选择推荐使用Tif格式。如果输出选择的是PNG格式,只能选择16bit,若选择32bit还是会被压成16bit。
导出后,可使用这些Tif图做置换贴图 ,把海洋复现出来,具体为:grid节点(需细分)—>attribFromMap节点(选择贴图)—>pointWrangle(@P+=@Cd)—>attribDelete(删@Cd属性)

31、资产安装(一般放在安装文件夹内)
资产:otls文件夹
脚本:scripts文件夹
工具架(.shelf格式):toolbar文件夹。(之后在Houdini的工具架那,点击New Shelf...—>……等等)

32、Mantral渲染设置基础
① 一般选择基于物理渲染
mantral-->Rendering-->Rendering Engine:Physical Based Rendering
② 采样值Sampling越高,越清晰,渲的也慢
③ 可以选择是否使用所有CPU核心进行渲染
Render-->Use Max Processors:自行选择
④ Objects设置选项:可以选择渲染部分/指定对象
⑤ 渲染低质量效果来预览:Override Camera Resolution
⑥ 分层渲染
Extra Image Planes:看需勾选(可选折射、粗糙、高光……等等)
⑦ 记得选择保存路径

33、亮度的计算公式:亮度= 0.299×R + 0.587×G + 0.114×B

34、灯光
仅需要灯光照射某一对象
方法一:节点窗口-->“+”-->New Pane Tab Tybe-->Mantra Rendering-->light Linker:自行设置
方法二:Geo设置-->Render-->Light Mesh:自行设置
② 环境光Environment Light
需要渲染Hdr贴图:可勾选 Light-->Render Light Geometry

35、RS渲染器?的凹凸和置换:凹凸仅在视觉上,置换会真的有凹凸。

36、RS渲染通道及合成一般公式

37、VEX实现模型对齐地面(这忘了)

int npoint = npoints(0);
vector minHeight = point(0, 'P', 0);
for(int i=0; i<npoint; i++){
    vector currentNumPos = point(0, 'P', i);
    if(currentNumPos.y < minHeight.y){
        minHeight = currentNumPos;
    }
}
for(int i=0; i<npoint; i++){
    vector pointPos = point(0, 'P', i);
    pointPos.y -= minHeight.y;
    setpointattrib(0, 'P', i, pointPos);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt打包程序打包之跨平台

本文讲的是linux系统中的程序打包&#xff0c;首先我们创建一个简单的程序&#xff0c;我的程序叫做debtest 然后设置qmake来源&#xff0c;这个直接决定了程序依赖的qt库的位置&#xff0c;如果我们需要指定qt标准库的位置&#xff0c;那么qt环境就需要在那个位置。 修改前&am…

C# 如何修改项目名称

目录 背景具体步骤1、Visual Studio中修改项目名和程序集名称以及命名空间2、修改项目文件夹名3、修改解决方案里项目的路径4、再次打开解决方案&#xff0c;问题解决步骤总结 名词解释解决方案&#xff08;Solution&#xff09;项目&#xff08;Project&#xff09;程序集&…

【操作系统】CentOS7入门级安装

下载镜像 CentOS镜像下载Download (centos.org) 我们选择第一个 X86_64 CentOS Mirrors List 版本描述X86_X64带64位的32位扩展版(一般安装这个)ARM64 (aarch64)嵌入式。适用于微端(树莓派、机械臂、机械中控)IBM Power (ppc64le)专用于IBM POWER服务器 选择一个合适的链接 …

DSL - Wire 实现-ApiHug101

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace docs/ha…

javaScript手写专题——防抖/节流/闭包/Promise/深浅拷贝

目录 目录 一、 防抖/节流/闭包/定时器 编写一个组件&#xff0c;在input中输入文本&#xff0c;在给定的数据中查找相关的项目&#xff0c;并渲染搜索结果列表 1.新增InputSearch.vue组件 key的作用 2.新增 InputView.vue 3.添加路由 4.效果演示 follow up加上防抖怎么处理 1.…

如何从头开始编写LoRA代码,这有一份教程

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 作者表示&#xff1a;在各种有效的 LLM 微调方法中&#xff0c;LoRA 仍然是他的首选。 LoRA&…

机器学习-随机森林算法预测温度

文章目录 算法简介解决问题获取数据集探索性数据分析查看数据集字段信息查看数据集综合统计结果查看特征值随时间变化趋势 数据预处理处理缺失数据字符列编码数据集分割训练集、验证集、测试集数据集分割 构建模型并训练结果分析与评估进一步优化实际使用经验总结 算法简介 随…

基于遗传优化的SVD水印嵌入提取算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的的SVD水印嵌入提取算法。对比遗传优化前后SVD水印提取性能&#xff0c;并分析不同干扰情况下水印提取效果。 2.测试软件版本以及运行结果展示 MA…

深度学习实践(一)基于Transformer英译汉模型

本文目录 前述一、环境依赖二、数据准备1. 数据加载2. 构建单词表程序解析&#xff08;1&#xff09;将列表里每个子列表的所有单词合并到一个新列表&#xff08;没有子列表&#xff09;中。&#xff08;2&#xff09;Counter&#xff08;&#xff09;-- 统计迭代对象各元素出现…

【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知Advice注解(已附源码)

文章目录 前言AOP与Spring AOPAspect简单案例快速入门 一、Pointcutannotation 二、五种通知Advice1. Before前置通知2. After后置通知3. AfterRunning返回通知4. AfterThrowing异常通知5. Around环绕通知 总结 前言 在微服务流行的当下&#xff0c;在使用SpringCloud/Springb…

Mogdb双网卡同步最佳实践

大家都知道Oracle数据库无论是单机还是RAC集群在进行生产部署实施时&#xff0c;我们都会对网卡做冗余考虑&#xff0c;比如使用双网卡&#xff0c;比如public、心跳网络。这样的目的主要是为了安全&#xff0c;避免淡点故障。当然也网卡Bond不仅是可以做主备还可以支持负载均衡…

redis分布式锁+redisson框架

目录 &#x1f9c2;1.锁的类型 &#x1f32d;2.基于redis实现分布式 &#x1f953;3. 基于redisson实现分布式锁 1.锁的类型 1.本地锁&#xff1a;synchronize、lock等&#xff0c;锁在当前进程内&#xff0c;集群部署下依旧存在问题2.分布式锁&#xff1a;redis、zookeeper等…

OLAP介绍

OLAP OLAP介绍 Rollup OLAP&#xff08;在线分析处理&#xff09;的上下文中&#xff0c;"Rollup"是一个重要的概念&#xff0c;它指的是在多维数据集中自动地聚合数据到更高的层次或维度的过程。这种操作通常用于快速计算和展示汇总数据&#xff0c;以便于用户进…

包和final.Java

1&#xff0c;包 包就是文件夹。用来管理不同功能的Java类&#xff0c;方便后期代码的维护。 &#xff08;1&#xff09;包名的规则是什么&#xff1f; 公司域名反写报的作用&#xff0c;需要全部英文小写&#xff0c;见名知意。com.itheima.domain &#xff08;2&#xff…

15.队列集

1.简介 在使用队列进行任务之间的“沟通交流”时&#xff0c;一个队列只允许任务间传递的消息为同一种数据类型&#xff0c;如果需要在任务间传递不同数据类型的消息时&#xff0c;那么就可以使用队列集。FreeRTOS提供的队列集功能可以对多个队列进行“监听”&#xff0c;只要…

Redis高级-分布式缓存

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 0.目标 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;…

QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时&#xff0c;如果图片存在缩放时&#xff0c;会出现模糊现象&#xff0c;例如将一个100x100 的图片显示到30x30的区域&#xff0c;这个时候就会出现模糊。如下&#xff1a; 实际图片&#xff1a; 这个问题就是大图显示成小图造成的像素失真。 当…

FPGA(Verilog)实现按键消抖

实现按键消抖功能&#xff1a; 1.滤除按键按下时的噪声和松开时的噪声信号。 2.获取已消抖的按键按下的标志信号。 3.实现已消抖的按键的连续功能。 Verilog实现 模块端口 key_filter(input wire clk ,input wire rst_n ,input wire key_in , //按下按键时为0output …

[NKCTF2024]-PWN:leak解析(中国剩余定理泄露libc地址,汇编覆盖返回地址)

查看保护 查看ida 先放exp 完整exp&#xff1a; from pwn import* from sympy.ntheory.modular import crt context(log_leveldebug,archamd64)while True:pprocess(./leak)ps[101,103,107,109,113,127]p.sendafter(bsecret\n,bytes(ps))cs[0]*6for i in range(6):cs[i]u32(p…

6.模板初阶(函数模板、类模板、类模板声明与定义分离)

1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; 重载的函数仅仅是类型不同&#xff0c;代码复用率比较低&#xff0c;只要有新类型出现时&#xff0c;就需要用户自己增加对应的函数代码的…