Pack

Transform Packed Geo

Position:

simply stored in point position

Rot&Scale:

is stored in intrinsic:transform(matrix 3) in primitive level

attribVOP

use Set Attribute

attribWrangle

primintrinsic(0,"transform",@primnum)

setattrib($handle, $atype, $attrib, $i1, $i2, $value, $mode); *i1 is prim number

setattrib(0, "primintrinsic", "transform", @primnum, -1, 3@opinput1_mat, "set");

f[]@intrinsic_bounds = primintrinsic(0, "bounds", @primnum);

*order is (xmin, xmax,ymin, ymax,zmin, zmax)

matrix3 trans = primintrinsic(0, "transform", @primnum);

intrinsics

bounds

fragmentattribute

fragmentname

indexorder

measuredarea

measuredprimeter

measuredvolume

memoryusage

packedbounds

packedfulltransform

packedlocaltransform

packedprimitivename

packedrenderbounds

packedtypelabel

packedtypename

pivot

primitivetokens

transform

typeid

typename

vertexcount

viewportlod


Pack Transform

vector restP = point(1,"P",0);
matrix restR = primintrinsic(1,"packedfulltransform",0);
matrix moveR = primintrinsic(2,"packedfulltransform",0);
vector moveP = point(2,"P",0);

@P -= restP;
@P *= invert(matrix3(restR));
@P *= matrix3(moveR);
setattrib(0, "primintrinsic", "transform", @primnum, -1, invert(matrix3(restR)) * matrix3(moveR), "set");
@P += moveP;

Pack Bound

float bound[] = primintrinsic(0,"packedbounds",@primnum);

@size = (bound[1] - bound[0]) * (bound[3] - bound[2]) * (bound[5] - bound[4]);