houdini 数学

新手入门项:

书:HOUDINI 12标准教程

primuv 

产生 0.3-1之间的 连续值 

0.3+@Time%0.7  ; // @u + @Time(%(1-@u));

绘制三角波函数 方法1 方法2 方法3

1.frac 或 % 产生矩齿波

函数x%1

通过对frac(x)取一半,abs 而进行三角化

f@u = (float)@ptnum/(@numpt/8);
@P.y = abs(@u%1-0.5);

方波

sign(sin(x))

绘制sin函数

@P.y = sin(@P.x);

add delet prim

sin+@Frame

sum(f(x))

exploedview

font

f'(x)

add point add polyline add poly

measure 

visulize

property 

transform

diff

BEND节点

m b f 

fun

饼状图绘制 vex

float sg[] = {10,15,15,20};
f@sum = sum(sg);
f@l = len(sg);
f[]@ag;
push(@ag,0);
float up =0;
for(int i=0;i<@l;i++)
{
    float tmp = sg[i]/@sum*360+up;
    push(@ag,tmp);
    up = tmp;
}

float sg[] = {10,15,15,20};
f@sum = sum(sg);
f@l = len(sg);
f[]@ag;
f[]@eg;
push(@ag,0);

float up =0;
for(int i=0;i<@l;i++)
{
    float tmp = sg[i]/@sum*360+up;
    if((@ag[i]+@Frame*sg[i]/10) < tmp)
        push(@eg, @ag[i] + @Frame*sg[i]/10);
    else 
        push(@eg,tmp);
    
    push(@ag,tmp);
    up = tmp;
}

//f[]@ag = {0,30,100,360};
float sg[] = {10,15,15,20};
f[]@de={0};
f@sum = sum(sg);
f@l = len(sg);
float up =0;
for(int i=0;i<@l;i++)
{
    float tmp = sg[i]/@sum*360+up;
    push(@de,tmp);
    up = tmp;
}

f[]@ag;
f[]@eg;

for(int i=0;i<@l;i++)
{
    f@T = @Frame;
    if(@de[i]> @T)
    {
        continue;
    }
    else
    {
        push(@ag,@de[i]);
        float end = @de[i]+@Frame-@de[i];
        
        if(end > @de[i+1])
            end = @de[i+1];
            
        push(@eg , end);
        
        
    }
    
    
}

//f[]@ag = {0,30,100,360};

2使用python 

ary = [30,40,50]
l = len(ary)
sm = sum(ary)


ary2 = [0]

up = 0
for i in range(l):
    u = float(ary[i])/sm*360 + up
    up = u
    ary2.append(u)
print(ary2)
    

nd = hou.node("..")
mg = nd.createNode("merge")
for i in range(1,l):
    c = nd.createNode("circle")
    c.setParms({"type":3,"arc":2})
    c.setParms({"beginangle":ary[i-1],"endangle":ary[i]})
    mg.setInput(i,c)


 

3直接绘制 vex

//sin cos

push(ary,0);
for(float i = 2;i<3.14;i+=0.1){
float x = sin(i);
float y = cos(i);
int pn = addpoint(0,set(x,y,0));
push(ary,pn);
}
push(ary,0);

addprim(0,'poly',ary);

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值