r3frpart
real/raytr/r3frpart.h
r3raytr
Particle class. Base class for non-raytraced geometric objects.
r3Frsurface
R3CLID_FRSURFACE
r3Frparticle
R3CLID_FRPARTICLE - 702
RENDER, EVALUATEPOINTPROPERT, RENDERPOINTS, ENUMNEEDEDCHANNELS,
int R3RegisterFrParticleClass(R3APP *app);
R3FRPAM_RENDER
RENDER
R3FRPAM_RENDER
R3OBJ*, raysample to which properties are evaluated
obj.RENDER(p1, 0);
evaluate geometric description of the particle object to the raysample.
R3FRPAM_EVALUATEPOINTPROPERT
EVALUATEPOINTPROPERT
R3FRPAM_EVALUATEPOINTPROPERT
R3OBJ*, ptr to a raysample.
obj.EVALUATEPOINTPROPERT(p3);
Evaluate particle properties to a raysample in a point defined * by R3CLID_ASCCHANNEL of the raysample. Typically, a particle object defines geometry * related information. Position is already known when calling this method, so surface * normal information may be the most natural channel to be computed.
R3FRPAM_RENDERPOINTS
RENDERPOINTS
R3FRPAM_RENDERPOINTS
R3OBJ*, ptr to a z buffer object see friozbuffer.h
obj.RENDERPOINTS(p1, 0);
render points of the particle to a z buffer at a given resolution. * This method is used for finding out the shape of the particle in the target image. * Actual shading related property evaluation will happen later by R3FRPAM_EVALUATEPOINTPROPERTIES. * The default action of the base class is projecting the position (of one point) to z buffer, finding * the distance and sending the R3ZBM_PIXEL method to draw one 'pixel'. If the particle covers * several pixels, the particle class may either use existing z buffer drawing methods or compute * its interior pixels and use pixel drawing methods. * The default class actions are in more detail: * * R3VECTOR res; * R3FLOAT fade = 0.0; * * if(!p2) return obj; * R3MxTransform(&res, p3->modelview, p); * if(msg->projection!=R3PRP_ORTHOGONAL) res.t = sqrt(PMUL(p,p)); * * return R3SendMsgA(p1, R3ZBM_PIXEL, &fade, &res); *
R3FRPAM_ENUMNEEDEDCHANNELS
ENUMNEEDEDCHANNELS
R3FRPAM_ENUMNEEDEDCHANNELS
R3OBJ*, retobj
R3INT, retmth
obj.ENUMNEEDEDCHANNELS(p1, p3);
enumerate all channels that should be included in the drawport in R3FRPAM_RENDER method. * by sending R3SendMsgA(retobj, retmth, channelname)
RenderClasses
RenderClasses
R3FRPAA_RenderClasses
Integer
R3INT*
Zero terminated array of R3INT clids
value = jsobj.GetRenderClasses();
R3INT* value;
R3GetAttrs(r3obj, R3FRPAA_RenderClasses, &value, R3TAG_END);
Cog
Cog
R3FRPAA_Cog
middle point, read only
value = jsobj.GetCog();
R3VECTOR* value;
R3GetAttrs(r3obj, R3FRPAA_Cog, &value, R3TAG_END);
The base class for particles allows use of multiple rendering classes for the same particle object. For example, the same particle can be rendered using both some pre-raytracing system and the post processing system by mapping both kind of effects to the particle and by defining the suitable render class lids in R3FRPAA_RenderClasses attribute. If no R3FRPAA_RenderClasses attribute is given, then this particle base class uses the default rendering system class (a class attribute) which can be set/read by R3FRSURFCA_RenderClass.
/
r3frparticlemsg /
See comment below
Points to cam space matrix
projection matrix which computes raster coordinates
see defs below
ptr to drawport object, see frio/r3drawp.h
Address of a boolean cancel indicator; break if not null
If true particles should be rendered in distance order (nearest last)
r3particlerenderpointmsg /
size of target raster
See comment below
projection matrix which computes raster coordinates
camera axes, camera position is always in origin
see defs below
A channel contect object. You can use this for material evaluation
projection types:
<sect6> <title>r3frpa1d</title>
r3frpa1d
real/raytr/r3frpa1d.h
r3raytr
1D particle class.
r3Frparticle
R3CLID_FRPARTICLE
r3Frparticle1d
R3CLID_FRPARTICLE1D - 701
int R3RegisterFrParticle1DClass(R3APP *app);
Count
Count
R3FP1DA_Count
Integer
int
'R3FP1DA_Count' not documented
jsobj.SetCount(value);
value = jsobj.GetCount();
int value = ...;
R3SetAttrs(r3obj, R3FP1DA_Count, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3FP1DA_Count, &value, R3TAG_END);
RenderUV
RenderUV
R3FP1DA_RenderUV
Boolean
R3BOOL
if TRUE u (center-edge in a disc) and v (point counter) channel items evaluated
jsobj.SetRenderUV(value);
R3BOOL value = ...;
R3SetAttrs(r3obj, R3FP1DA_RenderUV, value, R3TAG_END);
ConstantSize
ConstantSize
R3FP1DA_ConstantSize
Number
R3FLOAT
for defining one common size
jsobj.SetConstantSize(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FP1DA_ConstantSize, value, R3TAG_END);
SizeArray
SizeArray
R3FP1DA_SizeArray
Number
R3FLOAT*
for defining individual sizes
jsobj.SetSizeArray(value);
R3FLOAT* value = ...;
R3SetAttrs(r3obj, R3FP1DA_SizeArray, value, R3TAG_END);
</sect6><sect6> <title>r3frpa2d</title>
r3frpa2d
real/raytr/r3frpa2d.h
r3raytr
2D particle class.
r3Frparticle
R3CLID_FRPARTICLE
r3Frparticle2d
R3CLID_FRPARTICLE2D - 743
int R3RegisterFrParticle2DClass(R3APP *app);
Count
Count
R3FP2DA_Count
Integer
int
'R3FP2DA_Count' not documented
jsobj.SetCount(value);
value = jsobj.GetCount();
int value = ...;
R3SetAttrs(r3obj, R3FP2DA_Count, value, R3TAG_END);
int value;
R3GetAttrs(r3obj, R3FP2DA_Count, &value, R3TAG_END);
RenderUV
RenderUV
R3FP2DA_RenderUV
Boolean
R3BOOL
if TRUE u (center-edge) and v (along the line) & t (line item counter/count) evaluated
jsobj.SetRenderUV(value);
R3BOOL value = ...;
R3SetAttrs(r3obj, R3FP2DA_RenderUV, value, R3TAG_END);
Diameter1
Diameter1
R3FP2DA_Diameter1
Number
R3FLOAT
for defining one common start size
jsobj.SetDiameter1(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FP2DA_Diameter1, value, R3TAG_END);
Diameter2
Diameter2
R3FP2DA_Diameter2
Number
R3FLOAT
for defining one common end size
jsobj.SetDiameter2(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FP2DA_Diameter2, value, R3TAG_END);
D1Array
D1Array
R3FP2DA_D1Array
Number
R3FLOAT*
for defining individual startsizes
jsobj.SetD1Array(value);
R3FLOAT* value = ...;
R3SetAttrs(r3obj, R3FP2DA_D1Array, value, R3TAG_END);
D2Array
D2Array
R3FP2DA_D2Array
Number
R3FLOAT*
for defining individual end sizes
jsobj.SetD2Array(value);
R3FLOAT* value = ...;
R3SetAttrs(r3obj, R3FP2DA_D2Array, value, R3TAG_END);
</sect6><sect6> <title>r3frpa3d</title>
r3frpa3d
real/raytr/r3frpa3d.h
r3raytr
3D particle class. Defines a set of point quadruples (o, h, v, n). They are rendered to ASCCHANNEL, SURFHORCHANNEL, SURFVERCHANNEL, NORMALCHANNEL in R3FRPAM_RENDER method.
r3Frparticle
R3CLID_FRPARTICLE
r3Frparticle3d
R3CLID_FRPARTICLE3D - 749
int R3RegisterFrParticle3DClass(R3APP *app);
Points
Points
R3FP3DA_Points
array of 4 vectors groups
jsobj.SetPoints(value);
R3COORDSYS* value = ...;
R3SetAttrs(r3obj, R3FP3DA_Points, value, R3TAG_END);
Count
Count
R3FP3DA_Count
Integer
R3INT
number of coordsys items
jsobj.SetCount(value);
value = jsobj.GetCount();
R3INT value = ...;
R3SetAttrs(r3obj, R3FP3DA_Count, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3FP3DA_Count, &value, R3TAG_END);
</sect6><sect6> <title>r3frpacu</title>
r3frpacu
real/raytr/r3frpacu.h
r3raytr
2D particle nurbs curve class (renders hairs etc.)
r3Frparticle
R3CLID_FRPARTICLE
r3Frparticlecurve
R3CLID_FRPARTICLECURVE - 751
Width, Height, Order, Closed, RenderUV, Diameter1, Diameter2, D1Array, D2Array, Quality, Min, Max, DiameterChannel,
int R3RegisterFrParticleCurveClass(R3APP *app);
Width
Width
R3FPCUA_Width
Integer
R3INT
points in each curce
jsobj.SetWidth(value);
R3INT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Width, value, R3TAG_END);
Height
Height
R3FPCUA_Height
Integer
R3INT
number of curves
jsobj.SetHeight(value);
R3INT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Height, value, R3TAG_END);
Order
Order
R3FPCUA_Order
Integer
R3INT
order of curves
jsobj.SetOrder(value);
R3INT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Order, value, R3TAG_END);
Closed
Closed
R3FPCUA_Closed
Boolean
R3BOOL
TRUE if closed
jsobj.SetClosed(value);
R3BOOL value = ...;
R3SetAttrs(r3obj, R3FPCUA_Closed, value, R3TAG_END);
RenderUV
RenderUV
R3FPCUA_RenderUV
Boolean
R3BOOL
if TRUE u (center-edge) and v (along the line) & t (line item counter/count) evaluated
jsobj.SetRenderUV(value);
R3BOOL value = ...;
R3SetAttrs(r3obj, R3FPCUA_RenderUV, value, R3TAG_END);
Diameter1
Diameter1
R3FPCUA_Diameter1
Number
R3FLOAT
for defining one common start size
jsobj.SetDiameter1(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Diameter1, value, R3TAG_END);
Diameter2
Diameter2
R3FPCUA_Diameter2
Number
R3FLOAT
for defining one common end size
jsobj.SetDiameter2(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Diameter2, value, R3TAG_END);
D1Array
D1Array
R3FPCUA_D1Array
Number
R3FLOAT*
for defining individual startsizes
jsobj.SetD1Array(value);
R3FLOAT* value = ...;
R3SetAttrs(r3obj, R3FPCUA_D1Array, value, R3TAG_END);
D2Array
D2Array
R3FPCUA_D2Array
Number
R3FLOAT*
for defining individual end sizes
jsobj.SetD2Array(value);
R3FLOAT* value = ...;
R3SetAttrs(r3obj, R3FPCUA_D2Array, value, R3TAG_END);
Quality
Quality
R3FPCUA_Quality
Integer
R3INT
tesselation quality (lines/interval)
jsobj.SetQuality(value);
R3INT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Quality, value, R3TAG_END);
Min
Min
R3FPCUA_Min
Number
R3FLOAT
evaluation interval
jsobj.SetMin(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Min, value, R3TAG_END);
Max
Max
R3FPCUA_Max
Number
R3FLOAT
evaluation interval
jsobj.SetMax(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3FPCUA_Max, value, R3TAG_END);
DiameterChannel
DiameterChannel
R3FPCUA_DiameterChannel
String
char*
if not NULL then defines curve diameter, supports also R3FRSURFA_PointAttrs feature, see r3frsurf.h
jsobj.SetDiameterChannel(value);
char* value = ...;
R3SetAttrs(r3obj, R3FPCUA_DiameterChannel, value, R3TAG_END);
</sect6><sect6> <title>r3frpaim</title>
r3frpaim
real/raytr/r3frpaim.h
r3raytr
image particle class. Evaluates the pixels of the rendered image.
r3Frparticle
R3CLID_FRPARTICLE
r3Frparticleimage
R3CLID_FRPARTICLEIMAGE - 736
int R3RegisterFrParticleImageClass(R3APP *app);