Classes | |
struct | SegmentSphereIntersectionData |
class | LMinMax |
class | SMinMax |
class | Random |
struct | RayShaderStackElement |
struct | MsgGICSExData |
struct | MsgGINewData |
class | Stratified2DRandom |
struct | DisplaceInfo |
struct | VolumeData |
class | VPBuffer |
struct | VideoPostStruct |
class | Render |
struct | BakeProgressInfo |
struct | BakeTextureResizeNotify |
class | GeCipher256 |
Macros | |
#define | MAXRANGE |
#define | MAXELEMENTS |
#define | MIN_EPSILON |
Typedefs | |
typedef LMinMax | MinMax |
Variables | |
static const Float | COLORTOINT_MULTIPLIER |
static const Float | PERCENT |
static const Float | THIRD |
static const Float | SIXTH |
static const Int32 | NOISE_RESOLUTION |
NONE | |
PREPARE | |
GI_PREPASS | |
FILL_IMAGE | |
COMPLETE | |
INITIALIZE | |
RESIZENOTIFY | |
struct BakeProgressInfo | MAXON_ENUM_LIST |
#define MAXRANGE |
Maximum value for metric data.
#define MAXELEMENTS |
Maximum number of points.
#define MIN_EPSILON |
Minimum epsilon value.
Vector GetOptimalAngle | ( | const Vector & | hpb_old, |
const Vector & | hpb_new, | ||
ROTATIONORDER | order | ||
) |
Modifies hpb_new so that the "distance" to the last angle hpb_old is at minimum.
[in] | hpb_old | The old HPB. |
[in] | hpb_new | The new HPB. |
[in] | order | The rotation order. |
Calculates the distance from a point to a line.
[in] | p0 | The starting point of the line. |
[in] | v | The line vector. |
[in] | p | The point. |
Float PointLineSegmentDistance | ( | const Vector & | segmentPoint1, |
const Vector & | segmentPoint2, | ||
const Vector & | pos, | ||
Vector * | intersectionPoint = nullptr , |
||
Float * | lineOffset = nullptr |
||
) |
Calculates the distance from a point to a line segment between two points.
[in] | segmentPoint1 | The line segments first point. |
[in] | segmentPoint2 | The line segments second point. |
[in] | pos | The point to test against the line segment. |
[out] | intersectionPoint | Optional, if non-null the intersection point on the segment. |
[out] | lineOffset | Optional, if non-null, the offset along the segment of the intersection point. |
Float PointLineSegmentDistance2D | ( | const Vector & | segmentPoint1, |
const Vector & | segmentPoint2, | ||
const Vector & | pos, | ||
Vector * | intersectionPoint = nullptr , |
||
Float * | lineOffset = nullptr |
||
) |
Calculates the distance from a point to a line segment between two points in 2D ignoring the Z value.
[in] | segmentPoint1 | The line segments first point. |
[in] | segmentPoint2 | The line segments second point. |
[in] | pos | The point to test against the line segment. |
[out] | intersectionPoint | Optional, if non-null the intersection point on the segment. |
[out] | lineOffset | Optional, if non-null, the offset along the segment of the intersection point. |
Finds the ray vector after a reflection on a surface normal.
[in] | v | The incoming ray. |
[in] | n | The surface normal. |
Bool SphereLineIntersection | ( | const Vector & | linePoint1, |
const Vector & | linePoint2, | ||
const Vector & | sphereCenter, | ||
Float | sphereRadius, | ||
Float * | intersection1 = nullptr , |
||
Float * | intersection2 = nullptr , |
||
Vector * | hitPoint1 = nullptr , |
||
Vector * | hitPoint2 = nullptr |
||
) |
Calculates where the intersection points are between a line and a sphere in 3D space. since R16
[in] | linePoint1 | The first point of the line. |
[in] | linePoint2 | The second point of the line. |
[in] | sphereCenter | The center of the sphere. |
[in] | sphereRadius | The radius of the sphere. |
[out] | intersection1 | (optional) Assigned the first intersection point (lowest) as an offset between linePoint1 and linePoint2 |
[out] | intersection2 | (optional) Assigned the second intersection point (highest) as an offset between linePoint1 and linePoint2 |
[out] | hitPoint1 | (optional) Assigned the actual 3D point where the line first intersects (enters) the sphere. |
[out] | hitPoint2 | (optional) Assigned the actual 3D point where the line subsequently intersects (exits) the sphere. |
Bool CircleLineIntersection | ( | const Vector & | linePoint1, |
const Vector & | linePoint2, | ||
const Vector & | circleCenter, | ||
Float | circleRadius, | ||
Float * | intersection1 = nullptr , |
||
Float * | intersection2 = nullptr , |
||
Vector * | hitPoint1 = nullptr , |
||
Vector * | hitPoint2 = nullptr |
||
) |
Calculates where the intersection points are between a line and a circle in 2D space (although Z will also be calculated on the resulting hit points) since R16
[in] | linePoint1 | The first point of the line. |
[in] | linePoint2 | The second point of the line. |
[in] | circleCenter | The center of the circle. |
[in] | circleRadius | The radius of the circle. |
[out] | intersection1 | (optional) Assigned the first intersection point (lowest) as an offset between linePoint1 and linePoint2 |
[out] | intersection2 | (optional) Assigned the second intersection point (highest) as an offset between linePoint1 and linePoint2 |
[out] | hitPoint1 | (optional) Assigned the actual point where the line first intersects (enters) the circle, Z may also be calculated. |
[out] | hitPoint2 | (optional) Assigned the actual point where the line subsequently intersects (exits) the circle, Z may also be calculated. |
Bool SphereSegmentIntersection | ( | const Vector & | linePoint1, |
const Vector & | linePoint2, | ||
const Vector & | sphereCenter, | ||
Float | sphereRadius, | ||
maxon::BaseArray< SegmentSphereIntersectionData > & | intersections | ||
) |
Calculates where the intersection points are between a segment (a portion of a line) and a sphere in 3D space. since R16
[in] | linePoint1 | The first point (start) of the segment. |
[in] | linePoint2 | The second point (end) of the segment. |
[in] | sphereCenter | The center of the sphere. |
[in] | sphereRadius | The radius of the sphere. |
[out] | intersections | Assigned the SegmentSphereIntersectionData hit-points. |
Bool CircleSegmentIntersection | ( | const Vector & | linePoint1, |
const Vector & | linePoint2, | ||
const Vector & | circleCenter, | ||
Float | circleRadius, | ||
maxon::BaseArray< SegmentSphereIntersectionData > & | intersections | ||
) |
Calculates where the intersection points are between a segment (a portion of a line) and a circle in 2D space (although Z will be calculated for any resulting hit points) since R16
[in] | linePoint1 | The first point (start) of the segment. |
[in] | linePoint2 | The second point (end) of the segment. |
[in] | circleCenter | The center of the circle. |
[in] | circleRadius | The radius of the circle. |
[out] | intersections | Assigned the SegmentSphereIntersectionData hit-points. |
Converts RGB into the HSV color space.
[in] | col | The RGB color to convert. |
Converts HSV into the RGB color space.
[in] | col | The HSV color to convert. |
Converts RGB into the HSL color space.
[in] | col | The RGB color to convert. |
Converts HSL into the RGB color space.
[in] | col | The HSL color to convert. |
Vector CalcSplinePoint | ( | Float | offset, |
SPLINETYPE | type, | ||
Bool | closed, | ||
Int32 | pcnt, | ||
const Vector * | padr, | ||
const Tangent * | tadr = nullptr |
||
) |
Calculates a point along a spline curve from a set of points in 3D space.
[in] | offset | The offset along the spline from 0.0 to 1.0. |
[in] | type | The type of spline, i.e. AKIMA, BSPLINE etc. |
[in] | closed | Whether the spline is closed or not. |
[in] | pcnt | The number of points in the spline. |
[in] | padr | The points array. |
[in] | tadr | The tangents array, required for Bezier, Cubic and Akima spline types (otherwise will default to b-spline). |
Vector CalcSplineTangent | ( | Float | offset, |
SPLINETYPE | type, | ||
Bool | closed, | ||
Int32 | pcnt, | ||
const Vector * | padr, | ||
const Tangent * | tadr = nullptr |
||
) |
Calculates the tangent of a point along a spline curve from a given set of points and optional tangents.
[in] | offset | The offset along the spline from 0.0 to 1.0. |
[in] | type | The type of spline, i.e. AKIMA, BSPLINE etc. |
[in] | closed | Whether the spline is closed or not. |
[in] | pcnt | The number of points in the spline. |
[in] | padr | The points array. |
[in] | tadr | The tangents array, required for Bezier, Cubic and Akima spline types (otherwise will default to b-spline). |
void CalcSplineInsert | ( | Float | offset, |
SPLINETYPE | type, | ||
Bool | closed, | ||
Int32 | pcnt, | ||
const Vector * | padr, | ||
const Tangent * | tadr, | ||
Int32 & | pointIndex, | ||
Vector & | resultPoint, | ||
Tangent & | resultTangent, | ||
Vector & | leftTangent, | ||
Vector & | rightTangent | ||
) |
Calculates data about a point would if it were inserted into the spline at the passed offset.
[in] | offset | The offset to calculate the point for. |
[in] | type | The spline type. |
[in] | closed | The closed state of the spline points. |
[in] | pcnt | The number of points in the spline. |
[in] | padr | The address of the points array. |
[in] | tadr | The (optional) address of the tangents array. |
[out] | pointIndex | The index that the resulting point would be if it were inserted into the spline. |
[out] | resultPoint | The position of the resulting point. |
[out] | resultTangent | The spline tangent information of the resulting point. |
[out] | leftTangent | The correct new left tangent (tadr[pointIndex - 1].vr). |
[out] | rightTangent | The correct new right tangent (tadr[pointIndex].vl). |
Tangent TransformTangent | ( | const Vector & | newPos, |
const Vector & | planeNormal, | ||
const Vector & | position, | ||
const Tangent & | tangent, | ||
TANGENTSIDE | tangentSide, | ||
TANGENTTRANSFORMFLAG | flags = TANGENTTRANSFORMFLAG::BREAK_SCALE |
||
) |
Creates a transformed tangent around a point and plane, allowing to directly set the position of one of the tangent handles and automatically rotating the rest of the tangent to match.
[in] | newPos | The new position for the tangent handle. |
[in] | planeNormal | The normal of the plane for rotation of the handles. |
[in] | position | The position of the center of the tangent being modified. |
[in] | tangent | The tangent to modify/derive the resulting tangent from. |
[in] | tangentSide | The handle to modify of the tangent, left, right, or none. |
[in] | flags | The flags for controlling tangent breaking, rotation and scale locking etc. |
void CalcSplineMovement | ( | const Vector & | newPos, |
Float | offset, | ||
SPLINETYPE | type, | ||
const Matrix & | splineMg, | ||
BaseDraw * | bd, | ||
const Vector & | planeNormal, | ||
Bool | closed, | ||
Bool | lockTangentAngle, | ||
Bool | lockTangentLength, | ||
BREAKTANGENTS | breakTangents, | ||
Int32 | pcnt, | ||
Vector * | padr, | ||
Tangent * | tadr | ||
) |
Moves a point on a spline curve to a user specified new position.
[in] | newPos | The new position for the point of the curve at offset. |
[in] | offset | The offset to move to the position newPos. |
[in] | type | The type of spline to move. |
[in] | splineMg | The matrix of the spline. |
[in] | bd | The (optional) basedraw. |
[in] | planeNormal | The normal for tangent rotation, typically Vector(0,0,1) . |
[in] | closed | The closed state of the spline. |
[in] | lockTangentAngle | true if tangents angle may not be changed by this routine. |
[in] | lockTangentLength | true if the tangents length may not be changed by this routine. |
[in] | breakTangents | Set to break the tangents while manipulating the curve if tangents exist. |
[in] | pcnt | The number of points in the spline. |
[out] | padr | The address of the points that describe the spline. |
[out] | tadr | The (optional) address of the tangents that are used by the spline. |
Bool CalcSplineDefaultTangents | ( | SPLINETYPE | type, |
Bool | closed, | ||
Int32 | pcnt, | ||
const Vector * | padr, | ||
Tangent * | tadr | ||
) |
Calculates the default tangents for the passed points (spline segment) based on the spline type.
[in] | type | The spline type to calculate the tangents for. |
[in] | closed | Whether the spline segment is closed. |
[in] | pcnt | The number of points to calculate. |
[in] | padr | The address of the points. |
[out] | tadr | The resulting tangents (caller owns the array, must be pre-allocated). |
PointObject* BooleanSplines | ( | PointObject * | initialSpline, |
AtomArray * | booleanObjects, | ||
BaseDocument * | doc, | ||
BaseDraw * | bd, | ||
SPLINEBOOL_AXIS | projectionAxis, | ||
SPLINEBOOL_MODE | booleanMode | ||
) |
Booleans an initial SplineObject with an array of other SplineObjects along a passed projection axis (in 2D).
[in] | initialSpline | The original SplineObject or LineObject that will have the operations applied to it. |
[in] | booleanObjects | The array of SplineObjects to boolean with the initialSpline. |
[in] | doc | The active document that the objects belong to. |
[in] | bd | The active BaseDraw. |
[in] | projectionAxis | The projection axis to use, XY, ZY, screen space etc. |
[in] | booleanMode | The type of boolean to apply (Union, Subtract etc). |
Calculates the value of a spline at a point.
[in] | x | The position on the spline. |
[in] | knot | The spline knots array. The caller owns the pointed array. |
[in] | nknots | The number of knots. |
Calculates the value of a spline at a point.
[in] | x | The position on the spline. |
[in] | knot | The spline knots array. The caller owns the pointed array. |
[in] | nknots | The number of knots. |
void CalcRestrictionInc | ( | const ObjectRestriction * | lr, |
const RayObject * | op, | ||
Bool & | nodif, | ||
Bool & | nospec | ||
) |
Calculates the include-/exclude situation for a given object op and a light
source (&light->lr
is passed).
[in] | lr | The light restriction to evaluate. The caller owns the pointed light restriction. |
[in] | op | The object to evaluate. The caller owns the pointed object. |
[in,out] | nodif | Must be initialized with false before the call. Assigned true if lr specifies that op should not receive any diffuse light. |
[in,out] | nospec | Must be initialized with false before the call. Assigned true if lr specifies that op should not receive any specular light. |
BAKE_TEX_ERR BakeTexture | ( | BaseDocument * | doc, |
const BaseContainer & | data, | ||
BaseBitmap * | bmp, | ||
BaseThread * | th, | ||
BakeProgressHook * | hook, | ||
BakeProgressInfo * | info | ||
) |
Bakes the texture(s) specified by the last InitBakeTexture() call into bmp.
[in] | doc | The document. The caller owns the pointed document. |
[in] | data | The bake settings: BakeTexEnums |
[out] | bmp | The bitmap to bake to. If this points to a MultipassBitmap, it must be initialized with the correct width and height before BakeTexture() is called. The caller owns the pointed bitmap. If this points to a MultipassBitmap, it must be initialized with the correct width and height before BakeTexture() is called. Multipass bitmaps must be used if BAKE_TEX_AMBIENT_OCCLUSION is set. The only allowed modes for multipass bitmaps are COLORMODE::RGB, COLORMODE::ARGB, COLORMODE::RGBw, COLORMODE::ARGBw, COLORMODE::RGBf, COLORMODE::ARGBf. |
[in] | th | The current thread. The caller owns the pointed document. |
[in] | hook | The bake progress hook callback function pointer. |
[in] | info | The bake progress information passed to the hook callback. |
BaseDocument* InitBakeTexture | ( | BaseDocument * | doc, |
TextureTag * | textag, | ||
UVWTag * | texuvw, | ||
UVWTag * | destuvw, | ||
const BaseContainer & | bc, | ||
BAKE_TEX_ERR * | err = nullptr , |
||
BaseThread * | th = nullptr |
||
) |
Initializes a bake operation of a single tag for BakeTexture().
[in] | doc | The document. The caller owns the pointed document. |
[in] | textag | The texture tag to bake. Must be assigned to an object. The caller owns the pointed tag. |
[in] | texuvw | The UVW tag to bake. Must be valid if UVW projection is selected in the tag, ignored otherwise. The caller owns the pointed tag. |
[out] | destuvw | The destination UVW tag for the bake. If not nullptr, the current projection is transformed into the uvw tag. The caller owns the pointed tag. |
[in] | bc | The bake settings: BakeTexEnums |
[out] | err | Assigned the error result, if not nullptr: BAKE_TEX_ERR |
[in] | th | The current thread. The caller owns the pointed document. |
BaseDocument* InitBakeTexture | ( | BaseDocument * | doc, |
TextureTag ** | textags, | ||
UVWTag ** | texuvws, | ||
UVWTag ** | destuvws, | ||
Int32 | cnt, | ||
const BaseContainer & | bc, | ||
BAKE_TEX_ERR * | err = nullptr , |
||
BaseThread * | th = nullptr |
||
) |
Initializes a bake operation of multiple tags for BakeTexture().
[in] | doc | The document. The caller owns the pointed document. |
[in] | textags | The texture tags to bake. Must be assigned to objects. The caller owns the pointed array. |
[in] | texuvws | The UVW tags to bake. The caller owns the pointed array. |
[out] | destuvws | The destination UVW tags for the bake. If not nullptr, the current projection is transformed into the uvw tags. The caller owns the pointed array. |
[in] | cnt | The number of tags in textags, texuvws and destuvws arrays. |
[in] | bc | The bake settings: BakeTexEnums |
[out] | err | Assigned the error result, if not nullptr: BAKE_TEX_ERR |
[in] | th | The current thread. The caller owns the pointed document. |
Vector GetOptimalAngleI | ( | const Vector & | orot, |
const Vector & | nrot, | ||
const ROTATIONORDER | order, | ||
const Float | angleDiff | ||
) |
Private. Usually we solve for an angle in a 360 deg (-PI to PI) range but there can be the scenario that a different range is required
|
static |
Constant to convert from vectors color components to integers.
|
static |
Constant to convert from 0-1 range to percentage.
|
static |
Constant to calculate the third of a value.
|
static |
Constant to calculate the sixth of a value.
NONE |
None.
PREPARE |
Prepare.
GI_PREPASS |
GI prepass.
FILL_IMAGE |
Fill image.
COMPLETE |
Complete.
INITIALIZE |
Initialize.
RESIZENOTIFY |
Resize notify. See BakeTextureResizeNotify.