This macro is a high level macro used to add figures to a scene file. The definition for this Macro can be found in "povperson.inc".
The ppCrowd macro positions a series of figures at a set of positions that have been predefined and stored in an array.
ppCrowd (ppFirstPosition, ppNumberOfFigures) | ||
Parameters | ||
ppFirstPosition | First position to use | |
ppNumberOfFigures | The number of figures to position |
#local myFigureObject = ppFigure("ppann.inc","ppstyle4.inc","smile","ppstanding.inc","bikini.inc")
#declare ppFigurePositions = array[40];
#declare mySurfaceZone = array [3]{0.25,0.1,4};
#declare myNumberOfFigures = ppCrowdPositions(box {<-2,0,-7.4><2,0.2,-3.5>},8,0.5,mySurfaceZone,6,500);
#declare myCrowd = ppCrowd(myFigureObject,ppFigureCounter,21)
To see a full working example see pp00crowd.pov.
This macro is a high level macro used to add figures to a scene file. The definition for this Macro can be found in "povperson.inc".
The ppCrowdPositions macro takes an object and finds a set of points on its surface that it stores in an array. The points are randomised, but are all found by projecting a ray down vertically onto the object and are selected to make sure they are
ppCrowdPositions (ppNewFigures) | ||
Parameters | ||
ppNewFigures | The number of figures required |
This macro is a high level macro used to add figures to a scene file. The definition for this Macro can be found in "povperson.inc".
The ppFigure macro is the principal control macro for the POV-Person library. It defines a figure based upon a series of control files that are specified as parameters to the ppFigure call.
ppFigure (ppCharacter,ppStyle,ppExpression,ppPose,ppCostume) | ||
Parameters | ||
ppCharacter | The file used to define the character to be drawn | |
ppStyle | The file containing style parameters | |
ppExpression | The file containing expression parameters | |
ppPose | The file containing pose parameters | |
ppCostume | The file controling clothing and other accessories |
ppFigure("ppbabs.inc","ppstyle4.inc","smile","ppstanding.inc",""ppoutfit1.inc"")
The following example wraps a figure in an object definition to allow the figure to be transformed as it is drawn into the scene file. The figure is based on the 'ann' character which is a female human character. The style6 file is used which gives a brown haired white character with red lipstick and a dark eyeshadow. The character will be in a sitting position and will be dressed in outfit1, as for the last example. The figure is rotated by 40 degrees around the y axis.
object {ppFigure("ppann.inc","ppstyle6.inc","smile","ppsitting.inc","ppoutfit1.inc") rotate 40*y}
The following example takes the same figure and assigns it to a variable for use later on in the scene file.
#declare myPerson = object {ppFigure("ppann.inc","ppstyle6.inc","smile","ppsitting.inc","ppoutfit1.inc") rotate 40*y}
For an illustration of how to use this macros in conjunction with the ppCrowd and ppCrowdPositions macros to draw a crowd of figures, see the example under ppCrowd.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro adds a body part to the arrays holding the list of body parts and their scale then returns a reference number that will be stored in a variable with a name indicating the body part concerned. The position and rotation settings are done later.
ppAddBodyPart (ppBodyPartName,ppObject) | ||
Parameters | ||
ppBodyPartName | The name of the body part (for debugging purposes) | |
ppObject | The object to be added to the array of body parts |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro is used to define a joint between two body parts referenced using two body part numbers returned from ppAddBodyPart() The joint centre for each object is relative to the origin for that object. The rotations vector is the difference in orientation between the first and second object.
ppAddJoint (ppJointName,ppObjectRef1,ppObjectRef2,ppCentrePoint1,ppCentrePoint2,ppJointCentralAxis,ppJointPrimaryAxis,ppJointSecondaryAxis) | ||
Parameters | ||
ppJointName | The name of this joint - This is used when position files are generated | |
ppObjectRef1 | The reference number of a body part that has previously been added to the array of body parts | |
ppObjectRef2 | The reference number of a second body part that has previously been added to the array of body parts | |
ppCentrePoint1 | The position of the joint relative to the origin of the first object | |
ppCentrePoint2 | The position of the joint relative to the origin of the second object | |
ppJointCentralAxis | The axis around which the second object would twist around the joint | |
ppJointPrimaryAxis | The first axis of rotation of the second object around the position of the joint | |
ppJointSecondaryAxis | The second axis of rotation of the second object around the position of the joint | |
ppCentralAxisLowerLimit | The lowest angle in degrees that the second object can twist around the joint | |
ppCentralAxisUpperLimit | The highest angle in degrees that the second object can twist around the joint | |
ppPrimaryAxisLowerLimit | The lowest angle in degrees that the second object can rotate around the joint in the direction of the first axis | |
ppPrimaryAxisUpperLimit | The highest angle in degrees that the second object can rotate around the joint in the direction of the first axis | |
ppSecondaryAxisLowerLimit | The lowest angle in degrees that the second object can rotate around the joint in the direction of the second axis | |
ppSecondaryAxisUpperLimit | The highest angle in degrees that the second object can rotate around the joint in the direction of the second axis |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
ppAdjustEyes () | ||
This macro has no parameters. |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro reads the list of body parts, their scale factors, their positions and their orientations from the main POV-Person control arrays and builds a union of those object, translating, rotating and scaling them as necessary. The object returned from this macro can be embedded directly into a scene file or assigned to an object definition for subsequent use by the scene file.
ppBuildFigure () | ||
This macro has no parameters. |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro uses the position and orientation of a given object and calculates the position of the rest. To do this it runs through the list of joints, inspecting the object on either side of the joint and looking for definitions of its position and orientation. If it finds the right information it calculates any missing position and orientation information for the other object connected by that joint definition. If it hasn't got enough information it leaves it for the time being. The list of joints is traversed repeatedly until it completes a run without making any changes. This could be because it's finished or it could be that there is some sort of a problem with the connectivity of the body parts. For example, if there is a joint missing and one side of the break does not have sufficient data to complete the job.
ppCalculateBodyPartTransformations () | ||
This macro has no parameters. |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro takes a 2D array that contains a set of positions in the first row and generates a series of positions to form a curved eyelid shape that is written back into the remaining rows of the array.
ppExtrudeEyeLid (ppArray, ppSlices, ppSegments, ppProportion, ppUpperInd, ppLeftInd) | ||
Parameters | ||
ppArray | The array | |
ppSlices | The number of slices (used for the first array dimension) | |
ppSegments | The number of segments (used for the second array dimension) | |
ppProportion | A number representing how open the eye lid is | |
ppUpperInd | 1=Upper eye lid, -1=Lower eye lid | |
ppLeftInd | 1=Left eye lid, -1=Right eye lid |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro stores the values of a fixed body part from which the position and orientation of all of the other body parts will be calculated.
ppFixBodyPart (ppBodyPartRef, ppPosition, ppOrientation) | ||
Parameters | ||
ppBodyPartRef | The reference number of the body part to be used as the fixed body part | |
ppPosition | The position of that body part | |
ppOrientation | The orientation of the fixed body part |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro retrieves a body part from the arrays holding the list of body parts, scales, rotates and translates it and returns it as an object. This macro sets a value that will be used to scale a body part.
ppGetBodyPart (ppI) | ||
Parameters | ||
ppI | The reference number of a body part that has previously been added to the array of body parts |
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro initialises a series of matrices used by POVPerson to define the relationship between the different parts of the figure. This is broken down into two principal groups: Body Parts - A set of matrices containing an object definition, a scale factor, a position and a rotation for the object. Joints - A set of matrices containing the reference numbers of two body points, the centre point associated with each object about which the other rotates, the lower and upper rotation limits in each direction, the actual
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro reads two sets of the joint positions and calculates a third set of joint positions between the two. The first set is read from the ppJointRotationStash array and the second set is read from the ppJointRotations array. The results are written back into the ppJointRotations array, overwriting the second set. This macro is primarily designed for animations so that an intermediary position between two fixed positions can be calculated
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro returns the rotation angle settings of a joint.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro calculates the current position of a joint based upon the position and orientation of the first of the two objects that the joint connects together.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro positions copies of an object at regular intervals along a line defined by an array of points. In fact the line of points is taken from a 2D array, but the first index to the array is constant. It uses a very simple linear interpolation at regular intervals in the direction of the X axis. The array must therefore contain sequential points sequenced from +X to -X (or from -x to +x if ppDirection=-1). The object is also re-oriented at each point as defined by an array of normals.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro is used to define a joint between two body parts referenced using two body part numbers returned from ppAddBodyPart(). The Axes, Joint Centres and Joint Limits are set using a 'left-right' mirror of another joint, a reference to which is passed as the first parameter.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro takes one or two joint references as its parameters. If one joint is given, it reverses the direction of rotation in y and the direction of rotation in z that has been defined for the joint. Otherwise it checks the orientation of the 3 axes of each joint and, if different reverses the direction of rotation before swapping values between the two joints.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro is used to pose body parts by defining the rotations at a joint
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro sets a value that will be used to scale a body part.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro takes a copy of all of the joint positions. This is primarily for animations so that a second set of joint positions can be loaded and an intermediary position calculated using the ppInterpolateJoint() macro.
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "pphuman001.inc" .
This macro is used following use of the ppCrowd or ppFigure macros to undefine the multitude of control variables
This macro is one of the core POV-Person macros and is used by the high level POV-Person macros. This macro can also be used when authoring a scene file to tailor the behaviour of POV-Person. It is defined in the file "povperson.inc" .
This macro writes the current set of joint rotations to a file in a format suitable for use as a positions include file. This can be useful if it is necessary to keep a record of a generated position.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
Add an offset to a 2D array of positions pushing each position out in the direction of the corresponding normal. The offset is picked up from a combination of the value of a pigment at a corresponding point and a fixed offset. The proportion of the pigment to take into account can be controlled using the ppAmount parameter. If set to zero, the positions are consistently displaced by the amount specified using just the ppOffSet parameter.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppArrayBand macro adds thickness to a 2D array that contains a series of positions representing a tubular shape. First it makes the first and last band equal to those one in from either end. Then, for all but the end two bands it adds an offset to move the points outwards.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppDrawPoints macro takes a series of points defined in a 2D array and places a sphere at each point. This is typically used in combination with the macros used to create items of clothing. Those macros assign 2D arrays of points that are subsequently used to define a mesh of triangles. This macro can therefore be used to 'illuminate' the points and is useful while debugging the generation of items of clothing.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppEndScan macro takes an object and a ring of points around the object, then works out a series of centre points (that need to lie inside the object) from which it can send out rays to scan the end of the object. It then generates a pair of arrays containing coordinates of points on the surface of the object and the normals at those points. The ObjectArray passed to this macro must contain a list of points that track the surface of the object in the dimension where the first index is '0'. The list of points passed in are assumed to lie in a plane.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "pphuman001accessories.inc" .
The ppFootwear macro for pphuman001accessories takes a series body parts that have previously been added to the POV-Person figure definition and assigns copies of them to a set of locally declared variables. It then invokes a routine to draw the style of footware specified in the first parameter. It is not anticipated that the general user will need to modify this macro.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "pphuman001accessories.inc" .
The ppLegwear macro for pphuman001accessories takes a series of body parts that have previously been added to the POV-Person figure definition and assigns copies of them to a set of declared variables. It also assigns default values to a series of control variables and invokes a routine to draw the style of legware specified in the first parameter. It is not anticipated that the general user will need to modify this macro. Note. The line used to scan the body parts will pass up the left leg, along to the right hip and down the right leg. Therefore the vector at the floppy end of the left leg will point towards the hips and the vector at the end of the right leg will point away from the hips.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppLimbScan macro traces a series of rays to scan an object and generate a pair of arrays containing coordinates of points on the surface of the object and the normals at those points. The macro moves along a straight line from ppStartPos to ppEndPos sending out a ring of rays to scan the surface on a plane at right angles to the vector as it transitions from the direction of the start vector to the position of the end vector. ppSlices tells the macro how many points to break the line into and ppSegments tells the macro how many rays to send out from each point. The results are written back to a pair of arrays that have to be defined prior to calling the macro.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppMesh2FromArray macro takes an array of Positions and generates a mesh2 object.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppMeshFromArray macro takes an array of Positions and a corresponding array of Normals and generates a mesh object.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppSeamFromArray macro takes a series of points defined in a 2D array, follows a line through those points and assigns values to a second array. The first array would normally define a tubular form. The second array traces the length of the tube defining the position of a seam. The values assigned to the second array add thickness and width to these positions to define a strip intended to represent a simple seam in a piece of fabric. This is typically used in combination with the macros used to create items of clothing. Those macros assign 2D arrays of points that are subsequently used to define a mesh of triangles.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppStitchArrays macro takes a line of points from one pair of 2D arrays containing a set of positions and normals and copies them into a corresponding line in a second pair of 2D arrays. When the two arrays are subsequently used to define a mesh of smooth triangles, the two meshes should join together 'seamlessly'. There are certain conditions that need to be met to help this to happen because, if the edges don't approximately line up before you calling this macro, then stitching them together isn't going to work that well.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "ppclothingmacros.inc" .
The ppStretchPoints macro fixes a difficulty with a particular use of the ppLimbScan macro. There are circumstances where it is easier to slice a bit out of an object and scan right over the cut. However, when you do this you can end up with sharp edges on the object and sections of the clothing wrapped around such an edge are likely to intercept the object. This macro detects points that are outside the surface of a plane used to slice an object and moves them outwards so that they all lie on the surface of the object.
This macro is a clothing macro and is used to generate items of clothing for use with POV-Person figures. It is defined in the file "pphuman001accessories.inc" .
This macro provides an anatomy specific layer that then includes a generic POV-Person clothing file to generate tops (shirts, jumpers etc). A version of this file is included with pphuman001accessories to take the anatomical parts defined as part of that model and assign them to a set of object variables with names that are subsequently used by the generic clothes generation macros. It also assigns default values to a series of control variables before invoking a routine to draw the style of top specified in the first parameter. It is not anticipated that the general user will need to modify this macro. Note. The line used to scan the body parts will pass up from the abdomen and into the neck. The vectors will point upwards following the lines of the various body parts.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "pphuman001.inc" .
This macro is used to add a series of body parts to the figure matrix. This macro is specific to a particular class of figure (e.g. human001). The objects need to have been defined before this macro is called or the body parts will not be added into the figure matrix.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "pphuman001.inc" .
This macro is used to add a series of joints to the figure matrix. This macro is specific to a particular class of figure (e.g. human001). Each joint defines a junction between 2 objects. Each object can be used in multiple joint definitions. The joint centre for an object is the centre point of the joint relative to the origin for that object (which is why <0,0,0> crops up quite often). The objects that are referenced need to have already been added to the figure matrixed or an error will occur when this macro is executed.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "ppshorts1.inc" .
This macro is used to define a set of points that will be used to draw a seam around the end of an item of clothing. It takes a line of points from a 2D array of points and projects the positions forward in the direction of a given vector. The points are returned in a pair of 2D target arrays, one for the points one for the surface normals.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "pplookdown.inc" .
#macro ppExpressionMacro()
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "povperson.inc" .
This macro generates smooth triangles that fill in a strip between an array of points and a parallel line at a given offset.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "povperson.inc" .
This macro defines a set of points by extruding points contained within the first line of an Array along a path dictated by a set of offsets. A rotation and a scaling are applied to the offsets to help create a lip shape that is acceptable both when the mouth is open and when it is closed.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "pphuman001.inc" .
This macro takes a set of joint positions as defined for a figure and left-right mirrors them across to the opposite side of that figure. Joints on the centre line of the figure have their joint rotation settings mirrored left-right (the y and z rotations are multiplied by -1). Joints not on the centre line are left-right mirrored by having their rotation settings swapped over. NOTE. There should be a way of selecting which body parts to mirror, as they don't all need mirroring. *** THIS BIT STILL NEEDS WRITING ***.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "povperson.inc" .
This macro reads pairs of vectors from a CSV file into the first rows of a pair of arrays. The first vector of each pair represents a position along a line. The second vector of each pair represents a surface normal at that point.
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "ppf1scaling.inc" .
This macro is used to add a series of scale factors to the parts of a figure. This macro is specific to a particular type of figure (e.g. "f1").
This macro is one of a range of utility macros. It is used to perform utility functions in POV-Person. It is defined in the file "pphuman001.inc" .
This macro is used to set a series of trivial objects to any required body part variables that have not yet been set. This is intended to enable a render to complete even if a model definition is incomplete.
ppInitialiseMatrices () This macro has no parameters. 7.2.10
The ppInterpolatePose Macro
ppInterpolatePose (ppProportion) Parameters ppProportion A value between 0 and 1 defining how far we are through the transition from the first set of joint positions to the second set of joint positions 7.2.11
The ppJointAngles Macro
ppJointAngles (ppJointRef) Parameters ppJointRef The reference number of a joint that has previously been added to the array of joints 7.2.12
The ppJointLocation Macro
ppJointLocation (ppJointRef) Parameters ppJointRef The reference number of a joint that has previously been added to the array of joints 7.2.13
The ppLineOfEyeLashes Macro
ppLineOfEyeLashes (ppObject, ppArray, ppNormal, ppI, ppDimJ, ppObjectSpacing, ppDirection) Parameters ppObject The object to be copied along a line ppArray A 2D array of points ppNormal A 2D array of normals at the points in ppArray ppI The index to the first dimension of the array ppDimJ The number of points to read from the second dimension of the array ppObjectSpacing How far apart to position the copies of the object ppDirection 1=Right to Left, -1=Left to Right 7.2.14
The ppMirrorJointDefinition Macro
ppMirrorJointDefinition (ppJointRef1, ppJointName,ppObjectRef1, ppObjectRef2) Parameters ppJointRef1 The reference to a joint that this joint will mirror ppJointName The name of this joint - This is used when position files are generated ppObjectRef1 The reference number of a body part that has previously been added to the array of body parts ppObjectRef2 The reference number of a second body part that has previously been added to the array of body parts 7.2.15
The ppMirrorJoints Macro
ppMirrorJoints (ppJointRef1,ppJointRef2) Parameters ppJointRef1 The first joint reference ppJointRef2 The second joint reference, or -1 if only one joint reference is to be used 7.2.16
The ppRotateJoint Macro
ppRotateJoint (ppJointRef,ppJointCentralAxisRotation,ppJointPrimaryAxisRotation,ppJointSecondaryAxisRotation) Parameters ppJointRef The reference number of a joint that has previously been added to the array of joints ppJointCentralAxisRotation The angle in degrees that the second object should be twisted around its own axis ppJointPrimaryAxisRotation The angle in degrees that the second object should be rotated around the primary axis of the joint ppJointSecondaryAxisRotation The angle in degrees that the second object should be rotated around the secondary axis of the joint 7.2.17
The ppScaleBodyPart Macro
ppScaleBodyPart (ppThisBodyPart,ppScale) Parameters ppThisBodyPart The reference number of a body part that has previously been added to the array of body parts ppScale A 3D vector defining the scale in x, y and z of this body part 7.2.18
The ppStashJointRotations Macro
ppStashJointRotations () This macro has no parameters. 7.2.19
The ppUndef Macro
ppUndef (ppCharacterReset,ppStyleReset,ppClothingReset,ppExpressionReset,ppPoseReset) Parameters ppCharacterReset A flag to indicate whether to reset 'character' control variables (value = 1 or 0) ppStyleReset A flag to indicate whether to reset 'Style' control variables (value = 1 or 0) ppClothingReset A flag to indicate whether to reset 'Clothing' control variables (value = 1 or 0) ppExpressionReset A flag to indicate whether to reset 'Expression' control variables (value = 1 or 0) ppPoseReset A flag to indicate whether to reset 'Pose' control variables (value = 1 or 0) 7.2.20
The ppWriteJointRotationsToFile Macro
ppWriteJointRotationsToFile (ppFileID, ppShowAll) Parameters ppFileID The ID of the file to write the definitions into ppShowAll 0=Only output non-default values; 1=Output everyting 7.3 Clothing Macros
7.3.1
The ppAddOffSetToArray Macro
ppAddOffSetToArray (ppIStart, ppIEnd, ppJStart, ppJEnd, ppObjectArray, ppNormalArray, ppPigment,ppAmount,ppOffSet) Parameters ppIStart The start of the first dimension of the array ppIEnd The end of the first dimension of the array ppJStart The start of the second dimension of the array ppJEnd The end of the second dimension of the array ppObjectArray The array containing the positions of the points ppNormalArray The array containing the surface normals ppPigment The pigment to use to specify the offset for the corresponding points ppAmount A multiplication factor to use for the pigment ppOffSet An offset to add, irrespective of the pigment value 7.3.2
The ppArrayBand Macro
ppArrayBand (ppPositionArray, ppNormalArray, ppArray1Dim, ppArray2Dim, ppThickness) Parameters ppPositionArray The 2D array containing the positions of the points ppNormalArray The 2D array containing the corresponding normals of the points ppArray1Dim The size of the first dimension of the array ppArray2Dim The size of the second dimension of the array ppThickness The amount to thicken out the surface represented by the points 7.3.3
The ppDrawPoints Macro
ppDrawPoints (ppArray,ppIDim,ppJDim,ppRadius,ppColour) Parameters ppArray The 2D array containing the set of points ppIDim The size of the first dimension of the array ppJDim The size of the second dimension of the array ppRadius The radius of the sphere to be drawn at each point ppColour The colour of the sphere to be drawn at each point 7.3.4
The ppEndScan Macro
ppEndScan (ppObject, ppStartVector, ppSlices, ppSegments, ppObjectArray, ppNormalArray, ppDirection, ppTraceLength, ppScanMethod) Parameters ppObject The object to be scanned ppStartVector The normal of the surface passed in via the '0' elements of ppObjectArray ppSlices The number of points to be taken along the curve from the initial points to point where the surfaces meet ppSegments The size of the second dimension of the ppObjectArray ppObjectArray The array that will be used to store the points detected on the surface of the object ppNormalArray The array to be used to store the normals at those points ppDirection -1 or +1 for positive or negative direction of rotation of the trace ppTraceLength The distance from the centre from which the ray will be traced back in towards the centre ppScanMethod 1=Diagonal to opposite point: 2=Parallel, with '0' element in middle of long side 7.3.5
The ppFootwear Macro
ppFootwear (ppIncludeFile,ppWhichBoot) Parameters ppIncludeFile The name of an include file that creates a particular style of footware ppWhichBoot Text to indicate which foot to use - "Left", "Right" or "Both" 7.3.6
The ppLegwear Macro
ppLegwear (ppIncludeFile) Parameters ppIncludeFile The name of an include file that creates a particular style of legware 7.3.7
The ppLimbScan Macro
ppLimbScan (ppObject, ppStartPos, ppStartVector, ppStartRefVector, ppEndPos, ppEndVector, ppEndRefVector, ppSlices, ppSegments, ppObjectArray, ppNormalArray, ppArrayStart, ppDirection, ppTraceLength) Parameters ppObject The object to be scanned ppStartPos A point inside the object where the scan will start ppStartVector The normal of a surface on which rays will be traced out from the start point ppStartRefVector This reference vector helps keep the start of the circular sweep of each slice pointing in a predictable direction across multiple calls to this macro ppEndPos A point inside the object where the scan will end ppEndVector The normal of a surface on which rays will be traced out from the end point ppEndRefVector This reference vector helps keep the start of the circular sweep of each slice pointing in a predictable direction across multiple calls to this macro ppSlices The number of slices to be taken along the line from the start point to the end point ppSegments The number of radial rays to be sent out from each point ppObjectArray The array that will be used to store the points detected on the surface of the object ppNormalArray The array to be used to store the normals at those points ppArrayStart The starting number of the first dimension to use in the arrays (often '0') ppDirection -1 or +1 for positive or negative direction of rotation of the trace ppTraceLength The distance from the centre from which the ray will be traced back in towards the centre 7.3.8
The ppMesh2FromArray Macro
ppMesh2FromArray (ppArray,ppNormalArray,ppIDim,ppJDim,ppJoinEnds) Parameters ppArray The 2D array of positions ppNormal An optional 2D array of normals ppIDim The size of the first dimension ppJDim The size of the second dimension ppJoinEnds Whether to join the ends of the mesh together - 1=join them, 0 = leave the mesh open 7.3.9
The ppMeshFromArray Macro
ppMeshFromArray (ppArray,ppNormal,ppIDim,ppJDim,ppJoinEnds) Parameters ppArray The 2D array of positions ppNormal The 2D array of normals ppIDim The size of the first dimension ppJDim The size of the second dimension ppJoinEnds Whether to join the ends of the mesh together - 1=join them, 0 = leave the mesh open 7.3.10
The ppSeamFromArray Macro
ppSeamFromArray (ppSourceArray, ppSourceNormal, ppIDim, ppJ, ppSeamArray, ppSeamNormal, ppK, ppSeamThickness, ppSeamWidth) Parameters ppSourceArray The array containing the points to be scanned ppSourceNormal The array containing corresponding normals ppIDim The size of the first dimension of the source array ppJ The element to use from the second dimension of the source array ppSeamArray The array into which the seam points will be written ppSeamNormal The array into which corresponding normals will be written ppK The cumulative index pointing to the second dimension of the seam array to be written ppSeamThickness The thickness to add to the surface ppSeamWidth The width of the band used to represent the seam 7.3.11
The ppStitchArrays Macro
ppStitchArrays (ppPositionArray1,ppNormalArray1, ppI1,ppPositionArray2,ppNormalArray2, ppI2,ppSegments) Parameters ppPositionArray1 The first 2D array of positions ppNormalArray1 The first 2D array of normals ppI1 The index to the line of points in the first pair of 2D arrays ppPositionArray2 The second 2D array of positions ppNormalArray2 The second 2D array of normals ppI2 The index to the line of points in the second pair of 2D arrays ppSegments The size of the second dimension of the 2D arrays 7.3.12
The ppStretchPoints Macro
ppStretchPoints (ppObject, ppObjectArray, ppIStart, ppIEnd, ppJStart, ppJEnd, ppPlaneVector, ppPlanePosition) Parameters ppObject The object used to generate the array of points (using the ppLimbScan macro) ppArray The array of points ppIStart The beginning of the first array dimension to process ppIEnd The end of the first array dimension to process ppJStart The beginning of the second array dimension to process ppJEnd The end of the second array dimension to process ppPlaneVector The orientation of the plane that was used to slice through the object ppPlanePosition The position of the plane that was used to slice through the object 7.3.13
The ppTop Macro
ppTop (ppIncludeFile) Parameters ppIncludeFile The name of an include file that creates a particular style of top 7.4 Utility Macros
7.4.1
The ppAddBodyParts Macro
ppAddBodyParts () This macro has no parameters. 7.4.2
The ppAddJoints Macro
ppAddJoints () This macro has no parameters. 7.4.3
The ppEndSeamScan Macro
ppEndSeamScan (ppTargetArray,ppTargetNormal,ppSourceArray,ppSourceNormal,ppEndVector,ppI,ppJDim,ppSeamThickness, ppSeamWidth) Parameters ppTargetArray The 2D array that will contain the positions to be used for the seam ppTargetNormal The 2D array that will contain the normals to be used for the seam ppSourceArray The 2D array containing the positions of the points on the item of clothing to be used ppSourceNormal The 2D array containing the surface normals of the points on the item of clothing to be used ppEndVector A 3D vector pointing in the direction of the end of the item of clothing ppI The index of the first dimension from the source arrays ppJDim The dimension of the second dimension from the source arrays (the number of points to use) ppSeamThickness A decimal specifying the amount by which the seam protrudes clear of the surface ppSeamWidth A decimal specifying the amount by which the seam extends from the end of the clothing 7.4.4
The ppExpressionMacro Macro
ppExpressionMacro () This macro has no parameters. 7.4.5
The ppExtrudeFromArray Macro
ppExtrudeFromArray (ppOffset,ppShiftArray,ppRotateNormal) Parameters ppOffset A 3D vector defining an offset from the points in the ppTempArray ppShiftArray If this parameter is set to "Shift Array" the ppTempArray is updated with the new points ppRotateNormal A 3D vector defining the angles through which the surface normal should be rotated 7.4.6
The ppExtrudeLipAlongProfile Macro
ppExtrudeLipAlongProfile (ppArray, ppNormal, ppDimI, ppDimJ, ppProfile, ppOrientation) Parameters ppArray The 2 dimensional array already containing the first line of points ppNormal The 2 dimensional array already containing the first line of normals ppDimI The first dimension of the two arrays ppDimJ The second dimension of the two arrays ppProfile The one dimensional array containing the offsets ppOrientation The direction of rotation to tip the lip profile over as the distance from the x-axis increases 7.4.7
The ppMirror Macro
ppMirror (ppMirrorIncludeFile) Parameters ppMirrorIncludeFile The name of the file that contains the joint settings for the left joints. 7.4.8
The ppReadLineFromCSV Macro
ppReadLineFromCSV (ppCSVFileID, ppPositionArray, ppNormalArray, ppSegments) Parameters ppCSVFileID The name of the CSV file to read ppPositionArray The array that we will write the set of positions into ppNormalArray The array that we will write the set of normals into ppSegments The number of points along the line to read from the file 7.4.9
The ppScaleBodyParts Macro
ppScaleBodyParts () This macro has no parameters. 7.4.10
The ppnullbodyparts Macro
ppnullbodyparts () This macro has no parameters.
Copyright Chris Bartlett 2005.
You are authorised to re-use this document in original or modified form for both commercial or
non-commercial purposes, with or without credit being given to the author, provided that such
re-use does not in any way prevent others from re-using this document in either original or modified form.