▉ 绳命是剁么的回晃 生命是入刺滴井猜。— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】

█  壤窝们,巩痛嘱咐碰优。田下冯广宰饿妹,饿妹冯广宰呲处。壤窝们,嘱咐这缩优类缩优。开心的一小,火大的一小,壤绳命,梗楤容,壤绳命,梗秤巩,壤绳命,梗回晃。


前言不搭后语

我们曾如此渴望命运的波澜,到最后才发现,人生最曼妙的风景,竟是内心的淡定与从容。

我们曾如此期盼外界的认可,到最后才知道,世界是自己的,与他人毫无关系。

—杨绛。

本节内容
制作程序化绳索。

本节要实现效果
.....

今天是42岁
045周日

71
这是写给Houdini的第071封“情书”

我是geo流程图

我是vex代码
创建多股螺旋线圈

//-- 1 创建保持圆的分辨率变量-创建100个点

int pntcnt = chi("pointcount");

//-- 3a 创建半径变量

float rad = ch("radius");

//-- 4a 创建长度变量

float length = ch("length");

//-- 5a 圈数变量

float revolution = ch("revolution");

//-- 6a 线圈股数

int strandcnt = chi("strandcnt");

//-- 2b,5b 创建第一个步幅变量 两个连续点之间的夹角;

float step = revolution*2*PI/pntcnt;

//-- 4b 创建第二个步幅变量 两个连续点之间的长度;

// 长度/点数-1 注意,不需要除点数,而是点数减1,因为实际中点之间有更小的间隙

float lenstep = length / (pntcnt -1);

//-- 6b 创建第三个步幅变量 ,每一股螺旋的偏移角度

float strandstep = 2*PI/strandcnt;

//-- 6b 第二次循环

for(int j = 0; j<strandcnt; j++){

//-- 7a 增加polyline

int nprim = addprim(0,"polyline");

//-- 2  第一次循环 循环0~99,if中所有命令执行100次

for(int i = 0; i<pntcnt; i++){

//-- 2a 创建新的向量变量保持点的位置,改变cos的角度可以在圆周上建立点

//--使用stepangle乘i,创建了坐标;

//-- 3b 乘以半径

//-- 4c 增加长度

//-- 6c 把这个股数偏移角度加入

vector pos = set(cos(i*step+j*strandstep)*rad,sin(i*step+j*strandstep)*rad,i*lenstep);

//-- 2c 增加点;得到100个点的圆

//-- 7b 存储这些点的变量

int npnt = addpoint(0,pos);

//-- 7c 建立顶点

addvertex(0,nprim,npnt);

}

}

首先
制作步骤



小节提要

前言:本节将创建一个过程绳索,并使用粒度-谷物求解器来模拟它。在houdini中,有很多不同的方法来实现绳索制作。此教程中,作者选择了VEX路径来生成绳子。这提供了一个很好的独立节点,可以很容易地转化为数字资产。然后,利用金属丝变形将程序绳变形成模拟钢丝。

本节将学习:

01)使用一个属性wrangle编码过程循环圆圈。

02)设置圆圈半径。

03)创建一个螺旋线。

04)创建多股螺旋线。

05)在绳索上添加几何图形。
06)准备电线模拟.
07)模拟电线。

08)变形高分辨率几何体

接下来
正式制作
使用软件:houdini16.5
01使用一个属性wrangle编码过程循环圆圈
1 vex创建一个圆

○ 节点 ○


○ 具体操作 ○

1)使用attributewrangle;

小贴士

run over使用 Detail (only once) : 除了只读详细信息属性外不会绑定任何属性。所以增加Null节点作为输入,只是为了让它能够执行。

2)null

思路

向一方向延伸的圆。从一个程序圆圈开始,是个不错的主意。

首先,创建一个变量保持圆的分辨率。

3)attributewrangle;设置圆的点总数Pointcount =100

//-- 1 创建保持圆的分辨率变量-创建100个点

int pntcnt = chi("pointcount");

//-- 2b 创建第一个步幅变量,两个连续点之间的夹角;

float step = 2*PI/pntcnt;

//-- 2 循环0~99,if中所有命令执行100次

for(int i = 0; i<pntcnt; i++){

//-- 2a 创建新的向量变量保持点的位置,改变cos的角度可以在圆周上建立点

//--使用stepangle乘i,创建了坐标;

vector pos = set(cos(i*step),sin(i*step),0);

//-- 2c 增加点;得到100个点的圆

addpoint(0,pos);

}

02 设置圆圈半径

1收缩圆圈 


○ 具体操作 ○

3)attributewrangle :设置半径Radius=1

//-- 3a 创建半径变量

float rad = ch("radius");

for(int i = 0; i<pntcnt; i++){

//-- 3b 再乘半径,创建坐标;

vector pos = set(cos(i*step)*rad,sin(i*step)*rad,0);

03 创建一个螺旋线

1 沿着z轴的螺旋线


3)attributewrangle :设置长度length

//-- 4a 创建长度变量

float length = ch("length");

//-- 4b 创建第二个步幅变量 两个连续点之间的长度;

//-- 长度/点数-1 注意,不需要除点数,而是点数减1,因为实际中点之间有更小的间隙

float lenstep = length / (pntcnt -1);

for(int i = 0; i<pntcnt; i++){

//-- 4c 增加长度

vector pos = set(cos(i*step)*rad,sin(i*step)*rad,i*lenstep);

小问题)

现在只有一周旋转点


1 增加螺旋线圈数


解决方案)

现在2PI是一周,再乘一个变量控制圈数

执行)圈数变量revolution = 5

//-- 5a 圈数变量

float revolution = ch("revolution");

//-- 2b,5b 创建第一个步幅变量 两个连续点之间的夹角;

float step = revolution*2*PI/pntcnt;

04 创建多股螺旋线

1  创建多个螺旋 


解决方案)使点按照特定的角度转圈

执行)strandcut=5

第二个循环把第一个包裹起来;再创建一个线圈股数变量

//-- 6a 线圈股数

int strandcnt = chi("strandcnt");

//-- 6b 第二次循环

for(int j = 0; j<strandcnt; j++){

小问题)当前仍然只有一股螺旋


2 偏移螺旋线


解决方案)对螺旋进行旋转偏移;股数偏移变量strandcnt=5

//-- 6a 线圈股数

int strandcnt = chi("strandcnt");

//-- 6b 创建第三个步幅变量 ,每一股螺旋的偏移角度

float strandstep = 2*PI/strandcnt;

//-- 6c 把这个股数偏移角度加入

vector pos = set(cos(i*step+j*strandstep)*rad,sin(i*step+j*strandstep)*rad,i*lenstep);

//-- 降低半径Radius

05 在绳索上添加几何图形

1 将螺旋线圈点连起来

○ 节点 ○


解决方案)在最外层for循环中进行addprim操作

/for(int j = 0; j<strandcnt; j++){

//-- 7a 增加polyline

int nprim = addprim(0,"polyline");

for(int i = 0; i<pntcnt; i++){

vector pos = set(cos(i*step+j*strandstep)*rad,sin(i*step+j*strandstep)*rad,i*lenstep);

//-- 7b 存储这些点的变量

int npnt = addpoint(0,pos);

//-- 7c 建立顶点

addvertex(0,nprim,npnt);


2 转多边形

○ 节点 ○


操作)

3)polywire

06 准备模拟线

1    

○ 节点 ○


小目标)换一种方式模拟,不使用这个沉重的绳索

解决方案)

A)模拟绳索中的一条线,然后把模拟转移给几何体

执行)

    1)line节点:创建一条线

a)Direction:0*0*1;

b)length关联“螺旋线”的length参数

2)resample:采样更多点

07 模拟前线的设置

1 设置初始化模拟属性

○ 节点 ○


执行)

06)pointwrangle命名set_initials

//-- 1 质量

@mass = 1.0;

//-- 2a 参考半径通道变量

float rad = ch("radius");

//-- 2b 将这个变量转移给pscale属性,就是单个点的大小

@pscale = rad;


2 模拟前的设置

○ 节点 ○


小目标1)设置点半径大小 

操作)

07) sphere;

08)copytopoint;

06)调节radius半径数值,使球碰触即可

小目标2固定绳索两端的点

解决方案)选择两端点,设置质量=0

执行)

1)表达式组选择 两端点 :groupexpression

a)group命名ends。

b)Groups Type:Points。

//临近粒子小于2个

neighbourcount(0,@ptnum)<2;

2)设置质量 新建pointwrangle:

a)Group:ends

b)@mass = 0;

小目标3)一个prim分解成小的prim,增加restlength属性

解决方案)convertline

自动计算出模拟需要的“restlength剩余长度”

08 变形高分辨率几何体

1 对线进行grain颗粒模拟

○ 节点 ○


操作)

A)创建一套基础模拟流程

12) dopnet

12-1)popsolver1解算器

12-2)popobject1动态对象

12-3)popsource1模拟源

12-4)gravity重力

B)引入模拟源,设置模拟源的出生

    a)引入源

b) 限制仅在第一帧引入模拟源:$F==1;

c)取消勾选guide:蓝色显示

小问题)点之间没有约束关系

C)设置连线的点之间的约束

解决方案)   

 12-5)popgrains1颗粒解算

    a)线的弹性是由constraint Iteration约束迭代引起的,默认=20非常低;改=100;

    b)勾选Use OpenCL;


2 用模拟线来变形“绳索”

○ 节点 ○


解决方案)

    A)首先需要一个prim而不是单独小的prim

pointwrangle2

    1)   命名:matchpointpos

2)“槽1”连接convertline之前的节点

3)“槽2”连接dopnet

4)只是转移点的Position,Prim还是保持一个。

@P = @opinput1_P;

    B)线条捕捉:使用“wirecapture”节点。

    

a)“槽1”连<03>polywire;

b)“槽2”连<10>pointwrangle;

c)勾选Visualize Weighting;

问题)“红色”表示全部捕获,而“橙色”不对

解决方案)

Capture面板下,初始化prim,prim=0表示只有一个prim;调节falloff start知道“绳索”变红

   2)“线条变形wiredeform”节点和

C)线条变形使用“wiredeform”节点。

1)“槽1”连<14>   wirecapture1

2)“槽2”连<10>pointwrangle2

3)"槽3"连<13>machpointpos

最终效果


今天就到这里,收功


教程翻译自entagma的网络教程
下一节::20181010 Houdini 17 is here! Vellum quickstart pt. 1_5- Theory & Basic Setups
电子邮箱:oneinchtime@126.com

公众号:

微信号:

第071封“情书”:绳命20181008 Create and Simulate a Procedural Rope<Entagma>Houdini 2018相关推荐

  1. 蝙蝠侠一键改udid软件_对于您的第一个HTML代码,让我们帮助蝙蝠侠写一封情书...

    蝙蝠侠一键改udid软件 by Kunal 由Kunal 对于您的第一个HTML代码,让我们帮助蝙蝠侠写一封情书 (For your first HTML code, let's help Batma ...

  2. 第075封“情书”:百撕不得其解Tearing Cloth<Entagma>Houdini 2018

    ▉通往自由的路上充满了撕扯狡诈,与阴谋,难道"卑鄙是卑鄙者者的通行证"是真的?- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdin ...

  3. 第077封“情书”:弯弯绕<Entagma>Houdini 2018

    ▉ 我命硬学不会弯腰- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdini的情书"] █命运,就算你想尽一切办法,也休想压弯我追求理想的执着 ...

  4. 《致盛夏的七封情书》 ------------ 第一篇《晨曦》

    写了一个短篇小说,<致盛夏的七封情书>,一共七篇,采用拼凑式的记述和多位不间断的场景转换,讲一个小小的爱情故事,不精美,也不感人,纯粹给目前毫无道理的无望生活找一点存在感. 第一篇< ...

  5. 第023封“情书”: 草书 Point Advection点的平流染色线

    ▉又一波韭菜长好了,该收割了,各位庄辛苦了! 像一棵 海草 海草随波飘摇,海草海草海草,随风飘摇!海草 海草浪花里舞蹈,海草 海草管它骇浪惊涛我有我乐逍遥,人海啊 茫茫啊随波逐流浮浮沉沉. 庄:韭菜的 ...

  6. 第068封“情书”:耶路撒冷Assembling a 3DScanOfTheEarth可视化地图数据

    第068封"情书":耶路撒冷Assembling a 3DScanOfTheEarth可视化地图数据 每一天都是神的恩赐,请不要辜负. ▉ 热情在慢慢消退,逐渐冷却,惰性的冰川大兵 ...

  7. 从零学编程1-写一封情书

    一哥们闲暇之余想学编程,博主作为"会装系统的人"自然脱不了干系,这哥们名字叫鹰,初中文化,对于电脑的认识属于只会上网听歌看电影,差点忘了他强调过CF玩的不错. 那就教起吧. 主人公 ...

  8. 阿狸给桃子的999封情书(123封)

    阿狸给桃子的999封情书(123封) <第一封> 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉. <第二封> 我不生气,因为身体是自己的:我不伤心,因为心 ...

  9. 第060封“情书”:相对论 Signed Distance Outlines Houdini

    第060封"情书":相对论 20180507 Quicktip- Signed Distance Outlines<Entagma>Houdini 2018  ▉ 中国 ...

  10. 第079封“情书”:“I服了You”Cloth Solver From Scratch<Entagma>Houdini 2018

    ▉ 我从来不会对任何人任何事投降,直到遇见你.- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdini的情书"] █城头变幻大王旗:曾经面对刁 ...

最新文章

  1. 【踩坑记录】记一次MySQL主从复制延迟的坑
  2. 硬中断与软中断的区别!!!
  3. mysql sysdate() 慢_mysql笔记
  4. 网络营销越来越“内卷”,SEO优化时需注意什么细节?
  5. Android网络项目课程笔记-----代码复用性
  6. leetcode- Single Number
  7. centos 对已有卷扩容_centos LVM扩容 添加磁盘
  8. PCB的阻抗控制与前端仿真(SI9000的应用)(Z)
  9. 两天,我把分布式事务搞完了
  10. OLAP引擎:基于Druid组件进行数据统计分析
  11. 解决conda install速度慢
  12. 25 HttpClient下载图片
  13. Android 解决华为手机图片底色变绿问题
  14. javacc jjtree 写法 以及 jj写法 基本语法 以及应用
  15. 机械工程学专业词汇英语翻译
  16. UE4-PixelStreaming(虚幻引擎4-像素流技术)笔记
  17. 三方TabNavigator“斗艳”(Flex、JQuery UI和DoJo)
  18. 2016虾神封箱:虾神的空间统计书单
  19. 电脑坏了怎么把硬盘的mysql数据恢复_硬盘坏了怎么恢复数据?
  20. iOS性能测试怎么做?这款工具轻松稿定

热门文章

  1. 音创a55怎么安装系统_怎么安装系统|教你怎样安装系统教程
  2. C++计算圆柱体的表面积
  3. Promise then的嵌套
  4. hlg2146【多维背包】
  5. 如何撰写搜索引擎广告创意
  6. 昆仑通泰高级教程_2014-昆仑通态-高级教程.pdf
  7. 推荐一款适合苹果电脑小白使用的BT下载器
  8. jquery 绑定双击事件优化
  9. Ubuntu系统查询本地IP
  10. spark-streaming 编程(四)自定义输出foreachRDD