新手入门项:
书: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);