Experimental:Normalize POP
Summary
The Normalize POP can re-scale all your XYZ position values to be in the 0-1 range, and it can do that to any attribute.
It can output to any existing or new attribute.
It is much more powerful than that: It can convert any position into polar or cylindrical coordinates, i.e. latitude, longitude and radius expressed in 0-1 ranges.
It can put any of these normalized values into any component of a float2, float3 or float4 attribute.
After normalizing the values between 0 and 1, it can also Bias the numbers to be closer to 0 or to 1, it can apply a Lookup function to the normalized value (like applying an ease-in ease-out), then apply an Exponent (boosts or lowers but keeps 0 and 1 values the same), and then Re-range the 0-1 values to any other range.
Normalizing into polar or cylindrical form: When normalizing a polar radius for example, it finds the point that is farthest from 0, 0, 0 and then computes the distance of each point in comparison to the farthest point. So that normalizes the radius.
When normalizing a point into a longitude around the Y-axis, it gives a value from 0 to 1, where a value of 0 or 1 is on the “back side” along the -Z axis, and a longitude value of .5 is on the “front side” along the +Z axis.
Similarly for latitude around the Y axis, a value of 0 is at the south pole (in the western civilization way of thinking), a value of 1 is at the north pole, and a value of .5 means the point is around the equator.
A similar kind of thing is done for cylindrical normalization around the Y axis.
See also the Projection POP and the Texture Map POP.
About feeding components to Normalize and other POPs - If you put P(1) P(0) P(2)
(or P.yxz
), it will first swap the first 2 components (x and y) and pass that to the next stage where if you have Box X, it will be processing the original y coordinate (P(1)
) of the input.
Parameters - Normalize Page
attrclass
- ⊞ -
- Point
point
-
- Vertex
vertex
-
- Primitive
primitive
-
inputattrscope
-
parsize
- ⊞ -
- 1
1
-
- 2
2
-
- 3
3
-
- 4
4
-
aspectcorrect
-
replace
-
errval
-
mode
- ⊞ -
- Mode
mode0
-
- Mode
mode1
-
- Mode
mode2
-
bias
- ⊞ -
- Bias
bias0
-
- Bias
bias1
-
- Bias
bias2
-
lookupcurve
- ⊞ -
- Lookup Curve
lookupcurve0
-
- Lookup Curve
lookupcurve1
-
- Lookup Curve
lookupcurve2
-
exp
- ⊞ -
- Exponent
exp0
-
- Exponent
exp1
-
- Exponent
exp2
-
tolow
- ⊞ -
- Map to Low
tolow0
-
- Map to Low
tolow1
-
- Map to Low
tolow2
-
tohigh
- ⊞ -
- Map to High
tohigh0
-
- Map to High
tohigh1
-
- Map to High
tohigh2
-
outputattrscope
- ⊞ -
- P
P
-
- N
N
-
- Color
Color
-
- Color.i012
Color.i012
-
- Tex
Tex
-
- PointScale
PointScale
-
- LineWidth
LineWidth
-
overrideautoattr
-
newattrtype
- ⊞ -
- float
float
-
- double
double
-
- int
int
-
- uint
uint
-
- dir
dir
-
- dbl dir
ddir
-
attrnumcomps
- ⊞ -
- 1
1
-
- 2
2
-
- 3
3
-
- 4
4
-
newattrdefaultval
- ⊞ -
- New Attribute Default Value
newattrdefaultval1
-
- New Attribute Default Value
newattrdefaultval2
-
- New Attribute Default Value
newattrdefaultval3
-
- New Attribute Default Value
newattrdefaultval4
-
Parameters - Common Page
bypass
-
delinputattrs
-
Operator Inputs
- Input 0: -
Info CHOP Channels
Extra Information for the Normalize POP can be accessed via an Info CHOP.
Common POP Info Channels
Common Operator Info Channels
- total_cooks - Number of times the operator has cooked since the process started.
- cook_time - Duration of the last cook in milliseconds.
- cook_frame - Frame number when this operator was last cooked relative to the component timeline.
- cook_abs_frame - Frame number when this operator was last cooked relative to the absolute time.
- cook_start_time - Time in milliseconds at which the operator started cooking in the frame it was cooked.
- cook_end_time - Time in milliseconds at which the operator finished cooking in the frame it was cooked.
- cooked_this_frame - 1 if operator was cooked this frame.
- warnings - Number of warnings in this operator if any.
- errors - Number of errors in this operator if any.
TouchDesigner Build: