Numbers variable
@elemnum
Value
$FF = @Frame
$PT = @ptnum
$PR = @primnum
$NPT = @ptnum
Array
float test[] = {0,1,2,3,4,5}or
f[]@test = {0,1,2,3,4,5}Loop
f[]@test ;for (int i = 0; i<10; i++ ){ push(@test ,i)}List Match
int idlist[];idlist = {1523,145,1738,1739,1743,1755,1756,159,1711,204,205,211,152,151,1742,1715,1706};if(find(idlist,@id)>=0){ @Cd = {0,1,0};}Condition Match
int condition = (@P.x>0) ? 1:0;example of just adding noise(possibly shorter?)
@P=set(@P[0] , noise(set(@P[0],0,@P[2])) , @P[2]);
Using Channel
Just use ch("parm")
Importing point attribute from other slot
@P = point(@OpInput2,"P",@ptnum);
or
@P = point(1,"P",@ptnum);
or
@P = @opinput1_P;
@P.y = point(@OpInput2,"test",@ptnum);
@P = point("op:../box3","P",@ptnum);
Attribute Variable Mapping
f@test = 1;addvariablename(geoself(), "test", "TEST");Intrinsic(float value is not supported yet)
i@test = primintrinsic(0,"typeid",@primnum);Changing Intrinsic Attribute
setattrib(geoself(), "primintrinsic", "volumebordertype", @primnum, -1, "constant", "set");
setattrib(geoself(), "primintrinsic", "volumebordervalue", @primnum, -1, 0.0, "set");
Mix
@Cd = lerp({1,0,0},{0,1,0},0);Centroid
vector min, max;getbbox(min,max);vector center = (min+max)/2;getbbox(1,min,max);
can get from other input
Point Cloud
pcopen(@OpInput2, "P", @P, $radius, $maxpoints)
pcfilter($handle, $channel)
pcnumfound($handle)
pciterate($handle)
Format
int handle = pcopen(@OpInput2, "P", @P, 1000, 1);@v = pcfilter(handle, "v");pcclose(handle);
Loop
while (pciterate(handle)){
}
Loop
int closept[] = pcfind(1,"P",@P, 0.5,10);foreach (int pt; closept){ test += point(1, "test", pt);}SDF push
float volsample = volumesample(1, 0, @P);vector volumegrad = volumegradient(1, 0, @P);vector pushOut = volumegrad * -volsample;@P = @P + pushOut;Noise
vector freq = {1,1,1};
vector offset = {0,0,0};
float amp = 0;
int turb = 5;
float rough = 0.5;
float atten = 1;
onoise(@P*freq - offset, turb, rough, atten) * amp
snoise(@P*freq - offset, turb, rough, atten) * amp
anoise(@P*freq - offset, turb, rough, atten) * amp
vop_correctperlinNoiseVF(@P*freq - offset, turb, rough, atten) * amp
vop_correctperlinNoiseVV(@P*freq - offset, turb, rough, atten) * amp
vop_simplexNoiseVF(@P*freq - offset, turb, rough, atten) * amp
vop_simplexNoiseVV(@P*freq - offset, turb, rough, atten) * amp
vop_perlinNoiseVF(@P*freq - offset, turb, rough, atten) * amp
vop_perlinNoiseVV(@P*freq - offset, turb, rough, atten) * amp
Remove Points(need to be cleaned. prims still exist)
if (@P.y<0){ removepoint(geoself(), @ptnum);}Remove by NDC
vector ndc=toNDC("/obj/cam1",@P);float ov = 0;@Cd = ndc;if(ndc[0]-ov<0 || ndc[0]+ov>1 || ndc[1]-ov<0 || ndc[1]+ov>1 || ndc[2]>0){ removepoint(geoself(),@ptnum);}Remove Prim
if (@numvtx!=4){ removeprim(geoself(), @primnum, 1);}Remove by vertex UV
if(@uv.x<0.5){int prim = vertexprim( 0, @vtxnum );removeprim( 0, prim, 1);}Create centre Point(Detail)
vector min, max;getbbox(min, max);vector centre = (min+max)/2;for( int i=0; i<npoints(@OpInput1); i++ ){ removepoint(geoself(), i);}int centPoint = addpoint(geoself(),centre);Line to next Point
int a = addprim(geoself(), "polyline");addvertex(geoself(), a, @ptnum);addvertex(geoself(), a, @ptnum+1);Isolating Edge Group
int edge_group[] = expandedgegroup(1, "group2");for (int i = 0; i<len(edge_group); i+=2 ){ int line = addprim(0, "polyline"); int point1 = addpoint(0, vector(point(1,"P",edge_group[i])) ); int point2 = addpoint(0, vector(point(1,"P",edge_group[i+1])) ); addvertex(0, line, point1); addvertex(0, line, point2);} Adding Point and Line
int pp = addpoint(geoself(), @P + set(0,1,0) );int a = addprim(geoself(), "polyline");addvertex(geoself(), a, @ptnum);addvertex(geoself(), a, pp);For Loop
for( int i=0; i<10; i++ ){ int pp = addpoint(geoself(), set(0,i,0) );}Neighbour Loop
f@A = 0;for( int i=0; i<neighbourcount(0, @ptnum); i++ ){ int np = neighbour(0,@ptnum,i); @A += point(0,"attr", np);}Resample (prim)
int segment = 50;for( int i=0; i<=segment; i++ ){vector a = primuv(0, "P", @primnum, set(float(i)/segment,0));int pp = addpoint(geoself(), a );addvertex(geoself(), @primnum, pp);}for( int i=0; i<primvertexcount(0, @primnum); i++ ){ removepoint(geoself(), primpoint(0, @primnum, i));}Comment Block
/*comment*/