Susana B. Slayton (sslayton++at++d-a-s.com)
Mon, 22 Apr 96 18:51:06 EDT
Here's what I have -- hope it helps.
-- Susana
Susana Slayton
sslayton++at++d-a-s.com
Dynamic Animation Systems (DAS) Inc.
Burke, VA
#######################
>From guest++at++holodeck.asd.sgi.com Sat Mar 9 14:40:05 1996
From: "Angus Dorbie" <dorbie++at++bitch.reading.sgi.com>
Date: Sat, 9 Mar 1996 18:32:31 +0100
X-Mailer: Z-Mail (3.2.0 26oct94 MediaMail)
To: "Performer Mailing List" <perflist++at++vr.mme.wsu.edu>,
info-performer++at++sgi.sgi.com
Subject: Re: Intersection questions
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Length: 2806
You can transform your intersection vectors to their position in the world by
transforming vector through the matrix of the object it's attached to using
pfXformVec3. If it's below more than one matrix you could transform it through
each in turn (deepest first), or multiply the matrices and transform through
the result.
You can transform points in a geoset to the position in the world by
multiplying the matrices in the nodes above together using pfPreMultMat
or pfPostMultMat depending on whether your ascending or descending
(both work) then using pfXformPt3 or pfFullXformPt3 depending on
the information in the matrix.
It would be easier for you to copy the tree of pfDCSs as pfSCSs & use
pfFlatten to transform the pfGeode. You _don't_ have to do this to
solve your intersection problem.
I memory serves me correctly, to get the point of intersection in the
scene I've used pfQueryHit to obtain the PFQHIT_POINT & PFQHIT_XFORM
then transform the point through the matrix using pfXformPt3 to
get the point of intersection in the scene.
This worked for intersecting testing with the entire scene graph from
the top node you may have to do a little more if you select only a
transformed portion of the scene graph for an intersection test.
Rgds,
Angus.
On Mar 8, 12:07pm, Performer Mailing List wrote:
> Subject: Intersection questions
> I have a question concerning intersections using performer. We are using
> Performer in the development of a virtual reality system for design and
> evaluation. The system loads parts and assemblies from Pro/E and enables
> designers to evaluate and modify the designs for ergononmic considerations.
We
> use human models linked to tracking devices,etc and HMD's. We have to do
> collision detection between the human model and the other models in the
> environment. I am aware of the use of segment sets for intersection and the
> use of masking and all of that. The problem I have is the fact that to use
the
> segments that are "attached to" dynamic objects is the fact that you need to
> update the position of all of the segments. I have tried using pfNode
bounding
> boxes set to DYNAMIC but they seem to only give the bounding volume in a
local
> coordinate system. We have a very detailed scene graph that is composed of a
> number of hierarchies of pfDCS's. I was wondering several things. First,
what
> is the common method of doing intersection testing? Secondly, am I totally
off
> with regards to the segment sets? And lastly, how can you get the global
> position of a small piece of the scene graph, ie a pfGeode, that is very low
in
> the hierarchy of pfDCS's? Thank you very much for any help.
>
> Scott Angster
>
>-- End of excerpt from Performer Mailing List
-- Angus Dorbie, Silicon Graphics Ltd, UK dorbie++at++reading.sgi.com=====
>From guest++at++holodeck.asd.sgi.com Fri Mar 8 16:01:23 1996 From: "Performer Mailing List" <perflist++at++vr.mme.wsu.edu> Date: Fri, 8 Mar 1996 12:07:39 -0800 X-Mailer: Z-Mail (3.2.0 26oct94 MediaMail) To: info-performer++at++sgi.sgi.com Subject: Intersection questions Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Length: 1306
I have a question concerning intersections using performer. We are using Performer in the development of a virtual reality system for design and evaluation. The system loads parts and assemblies from Pro/E and enables designers to evaluate and modify the designs for ergononmic considerations. We use human models linked to tracking devices,etc and HMD's. We have to do collision detection between the human model and the other models in the environment. I am aware of the use of segment sets for intersection and the use of masking and all of that. The problem I have is the fact that to use the segments that are "attached to" dynamic objects is the fact that you need to update the position of all of the segments. I have tried using pfNode bounding boxes set to DYNAMIC but they seem to only give the bounding volume in a local coordinate system. We have a very detailed scene graph that is composed of a number of hierarchies of pfDCS's. I was wondering several things. First, what is the common method of doing intersection testing? Secondly, am I totally off with regards to the segment sets? And lastly, how can you get the global position of a small piece of the scene graph, ie a pfGeode, that is very low in the hierarchy of pfDCS's? Thank you very much for any help.
Scott Angster
=====
>From guest++at++holodeck.asd.sgi.com Sat Feb 17 12:52:50 1996 From: "Ulrich J Lechner" <uli++at++vislab.iastate.edu> Date: Sat, 17 Feb 1996 11:25:46 -0600 X-Mailer: Z-Mail (3.2.2 10apr95 MediaMail) To: info-performer++at++sgi.sgi.com Subject: Intersection Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Length: 1097
Hi Performers!
I would like to intersect my scene (on PFTRAV_IS_GEODE or PFTRAV_IS_GSET level) with a simple cylinder or a box. What is the standard way to do this? I tried to use a pfSegSet without any lines, a bounding cylinder and a discriminator function (see pguide 186) Result: My disc function is never called. I guess it is because of a missing line segment. Did I do something wrong or is there another way to test any object against a node. Do I have to use pfSphereContainsSphere to test against every bounding volume for every node?
Uli
> pfNodeTravMask(root, PFTRAV_ISECT, 1, PFTRAV_SELF, PF_SET); ..... > pfSetVec3(cylinder.center, 0, 0, 0); > pfSetVec3(cylinder.axis, 0, 0, 1); > cylinder.halfLength=100; > cylinder.radius=100;
> segset.activeMask = 1; (or 0) > segset.isectMask = 0xFFFF; > segset.discFunc = disc; > segset.bound = &cylinder; > segset.mode = PFTRAV_IS_BCYL|PFTRAV_IS_GSET|PFTRAV_IS_GEODE; ..... > isect = pfNodeIsectSegs(root, &segset, hits);
> int disc(pfHit *hit) > { > printf("Intersect\n"); > return(PFTRAV_CONT | PFTRAV_IS_CLIP_END); > }
#######################
> From guest++at++holodeck.csd.sgi.com Fri Apr 19 19:24:46 1996 > From: scott++at++er.ht.com (Scott McMillan) > Subject: Old monthly archives > To: info-performer++at++sgi.sgi.com > Date: Fri, 19 Apr 1996 18:12:37 -0400 (EDT) > X-Mailer: ELM [version 2.4 PL22] > Content-Type> : > text> > Content-Length: 378 > > I need to get at some postings about intersection testing that > happened in Feb and March. Does anybody store these up? If not, any > idea when they will appear at sgigate.sgi.com. > > scott > > -- > Scott McMillan / scott++at++ht.com / (301)984-3706 x250 / FAX (301)984-2104 > High Techsplanations Inc. > 6001 Montrose Road, Suite 902 / Rockville, MD 20852-4874 > >
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:52:45 PDT