From: wdai (wdai++at++mail.arc.nasa.gov)
Date: 05/31/2005 16:40:08
hi,
I have added several dynamic and static objects into my scene.
It looks like I could get intersection with the static objects but not
the dynamic objects. Could someone help me out on this. Here is
a partial code how I add static and dynamic objects to the scene.
pfNode *optimizeHierarchy(pfNode *root)
{
/* optimize the newly loaded hierarchy */
/* convert ordinary pfDCS nodes to pfSCS nodes */
root = pfdFreezeTransforms(root, NULL);
/* discard all redundant nodes and identity pfSCS nodes */
pfFlatten(root, 0);
/* deinstance and apply all pfSCS transformations */
root = pfdCleanTree(root, NULL);
return root;
}
......
/ add static objects
dcs = pfNewDCS();
pfDCSTrans(dcs, xyz[0], xyz[1], xyz[2]);
pfDCSRot(dcs, hpr[0], hpr[1], hpr[2]);
pfGetDCSMat(dcs, mat);
scs = pfNewSCS(mat);
node = pfdLoadFile(filename);
pfAddChild(scs, node);
node = optimizeHierarchy((pfNode *)scs);
pfAddChild(top, node);
pfNodeTravMask(node, PFTRAV_ISECT, 0x01,
PFTRAV_SELF | PFTRAV_IS_CACHE, PF_SET);
......
// add dynamic objects
node = pfdLoadFile(filename);
sw = pfNewSwitch();
pfAddChild(sw, node);
pfSwitchVal(sw, PFSWITCH_ON);
node = optimizeHierarchy(sw);
tDCS = pfNewDCS();
rDCS = pfNewDCS();
pfAddChild(rDCS, node);
pfAddChild(tDCS, rDCS);
pfAddChild(top, tDCS);
pfDCSTrans(tDCS,dxyz[0],dxyz[1],dxyz[2]);
pfDCSRot(rDCS,dhpr[0],dhpr[1],dhpr[2]);
pfNodeTravMask(tDCS, PFTRAV_ISECT, 0x01,
PFTRAV_SELF|PFTRAV_DESCEND, PF_SET);
......
This archive was generated by hypermail 2b29 : Tue May 31 2005 - 16:47:05 PDT