【微笔记】houdini16中Geometry solver 案例制作

——  微资讯 · 微课程  ——

利用零碎时间,走上超神之路!


houdini sovler探索教程,以一个案例为主为最终效果(如下图)详细讲解了点,线,面vex创建和构建原理,还有各种基础的内容。最后案例不算难,入门级别,不过看最后渲染效果还是不错的。小编把一些关键知识点笔记分享出来,希望对大家有所帮助。

课程目录

01课程介绍

02案例的理论分析

03添加点

04创建和可视化一个随机向量

05添加到sop solver中

06点→顶点→面的生成理论

07houdini中实现PVP理论

08法线

09变量VS属性

010VEX和vops

011解决属性和变量的问题

012解决属性和变量的问题-houdini VEX

013wire线生长原理

014wire 线生长解算器-删除随机点

015创建开始和结束的组

016查找最短路径和矢量算法

017案例-创建和可视化点

018案例-添加拓扑细节

019案例-导入logo

020案例-优化logo

021案例-额外细节

学习笔记

01课程介绍

02案例的理论分析

需要掌握的知识点如下

使用solver的作用就是可以基于上一帧的效果进行叠加计算

添加随机矢量方向,然后不断叠加偏移

03添加点

在空间中创建点的方法

add节点,可以设定指定的点位置

wrangle节点,需要把层级切换为 detailed(once),这个意义就是只运行一次,不需要对所有点/元素进行遍历处理一遍。

使用vex函数 addpoint(输入端,点位置P),注意矢量的写法{},下面这个就在原点创建一个点。

04创建和可视化一个随机向量

对刚才创建的点创建一个随机的vector矢量属性,添加多要给wrangle,设置层级为point,因为是对输入的所有点处理(这里当然只有一个点)

vex中创建局部变量和属性的写法不一样

vector direction这个写法是创建局部变量,只能在本wrangle中进行访问。不会创建任何属性,所以在spreadsheet中不会出现direction这个属性,使用visualize节点也不可以查看(因为查看对象是属性才行)

v@direction的写法是创建属性;

至于是要创建属性还是局部变量,要看自己需求;没必要的情况下尽量不要创建属性,因为这会增加内存和电脑运行资源,缓存到硬盘也会增加占据空间。

由于这里需要可视化操作,所以使用了属性;

v@direction = rand({1,0,0}+@Frane);//每一帧都取随机值,不过这里有个问题,因为rand()函数返回的是0-1的空间,所以最终xyz都会在正区域空间中,后面会处理的。

@P =@P+ @direction;把这个随机的矢量叠加给这个点的位置,那每一次点的位置都会发生随机偏移

05添加到sop solver中

当我们播放时间线的时候,上面我们实现了点每一帧的都在变化,但是之前变化的点没有保存,所以这时候我们需要在solver进行叠加计算。

在solver中链接到previous frame

06点→顶点→面的生成理论

关于点,顶点和面(线)的关系,公众号之前有篇文章做过详细讲解

【微课程】houdini 几何体的层级关系,顶点是什么?边在哪里? _CG猎人

07houdini中实现PVP理论

使用3个函数,分别是addpoint()创建点函数 addprim()创建面函数,和addvertex()创建顶点函数

和上面文章分析过

点可以单独存在,但是顶点不能单独存在,而顶点是链接点和面/线的桥梁。也就是说,如果想创建线和面,只有point是不行的,必须创建vertex顶点

所以出现下面感觉重复的代码

addpoint无需依赖任何东西直接创建,只要设置好点的位置就可以创建,视图中也会有点出现;

addprim(端口,prim的类型) 虽然添加了prim面但是视图中不会有任何面,原因就是我们还需要创建顶点;

addvertex(输入端,面需要,点序号)顶点创建需要3个参数,输入端,面序号,点序号,再次证明了只有存在面/线的时候才会存在顶点。单独的point不需要任何顶点。

在链接面的时候注意默认是按点需要号进行链接的

08法线

点顺序的链接方向定义了法线的朝向,也就是定义了面的正反过方向

我们这里只需要两个点链接成线就行,使用prim类型为polyline

09变量VS属性

再次对比变量和属性的区别,局部变量只存在于wrangle节点自身,不会形成属性,同时也不能被wrangle以外的节点调用。

无论是变量还是属性,都讲究数据类型匹配,比如浮点和浮点,整形和整形,矢量和矢量;对于@ptnum这个代表是点需要,肯定是整形,因为不会存在第1.5个点这种小数形式。

如果点特别多,多余的属性会拖慢电脑运行效率

010VEX和vops

vops是vex中的可视化编程,使用节点替代了vex中的函数。

vex会更加简洁,vop可以以vex形式查看,但是会有更加复杂的代码结构,因为要兼顾和各种预设。

011解决属性和变量的问题

如何让生成的点随着时间渐变

基于时间@Time或者@Frame,做一个remap过程,最后控制Alpha或者pscale属性

012解决属性和变量的问题-houdini VEX

创建一个box调整长宽厚度,scatter进行撒点,添加wrangle进行属性控制,放进solver中进行迭代计算。

本质上就是Cd.r随着时间增加递减;

013wire线生长原理

临近点之间相减获得运动矢量

014wire 线生长解算器-删除随机点

基于@ptnum的随机删除点,自定义预制控制,因为rand函数返回的是0-1

rand()函数还有一个第二个参数 seed,可以用来定义随机种子值

使用函数 removepoint(输入端口,点序号)

015创建开始和结束的组

使用sphere作为范围选择点组作为开始组

groupbyrange设置解算组 5选一

016查找最短路径和矢量算法

添加findshortestspath查找最短路径节点,设置之前分好的开始组合结束组

output paths输出链接类型为 from any start to each end模式,从任意开始组开始到每一个结束点组

添加carve节点,对线进行裁切,secondU对点进行裁切,创建wrangle节点,设置属性N

基于点的位置相减获得法线方向。

017案例-创建和可视化点

对N进行normalize ,然后设置orient属性,值为N的倍数,倍数定义

018案例-添加拓扑细节

增加grid的分段数,然后再findshortestpath后面添加smooth,之后再添加carve进行裁切(感觉本教程最酷的地方就在这里。

019案例-导入logo

abc文件导入logo,设置大小和调整位置,y轴旋转动画

链接到solver 的input2中,使用Attributetranfer对对位置P进行属性传递,对范围动画控制设置

020案例-优化logo

对logo进行pointfrom volume获得更多的点

021案例-额外细节

可以调用N对P位置叠加,设置动画设置。

获得教程的方法:

(0)

相关推荐