From guest  Sun May  1 18:21:31 1994
From: Robert Webb <webb@cgl.citri.edu.au>
Message-Id: <199405020120.AA16256@godzilla.cgl.citri.edu.au>
Subject: Re: Remote .vs Local IRIS Performer graphics
To: mtj@babar (Michael Jones)
Date: Mon, 2 May 1994 11:20:32 +1100 (EST)
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9404291712.ZM28725@babar.asd.sgi.com> from "Michael Jones" at Apr 29, 94 05:12:04 pm
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1631      
Status: O

Michael T. Jones (mtj@sgi.com) writes:

> The question is if people want to run their program
> on one machine and have the output appear on the other. We do not
> support this and wonder what the reasons would be for it.
> 
> Since performance considerations *dictate* that graphics appear on a
> local machine, what practical or application demands would be inspiration
> for such a requirement?

We do not have debuggers on the many Indigos, only on the main machine.  So
debugging a Performer application would only be possible from that machine's
console, which is already in high demand.  It is far more convenient to stay
seated at my desk to debug my code.

Testing whether the code works at all on a multi-processor machine, performance
considerations aside, would also be possible without having to get time on the
main machine's console.

We have Performer 1.0, and it works across the network as far as I can tell,
just following the DISPLAY variable.  Has this functionality been removed for
Performer 1.2?  Why would functionality be removed when clearly it is still
desired by the users (going by the stuff that's been sent to this mailing
list, and my own personal needs)?  Performer just uses gl, which runs over the
network, so it seems like there has been a conscious decision to stop it from
doing the same.  If this functionality was of no use, why was gl made to run
over the network a few years ago?

-- 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Rob.   (webb@godzilla.cgl.citri.edu.au)

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


From guest  Mon May  2 16:19:56 1994
From: hill_b@ameig1.navsea.navy.mil (Brian Hill)
Message-Id: <199405030029.AA21661@ameig1.navsea.navy.mil>
Subject: Anyone know anything about VEGA?
To: info-performer@sgi.sgi.com
Date: Mon, 2 May 94 19:29:03 CDT
X-Mailer: ELM [version 07.00.00.00 (2.3 PL11)]
Status: O

Greetings,

I would like to apologize in advance if my question is
inappropriate for this forum.

I currently use a product called VisionWorks to build 
visual simulations. I have read alot about Performer and
have tinkered around with it some. Unfortunately I do not
have much experience with the "details" of how to set up
and run a Performer based application. I prefer programming
at a higher level and would like to avoid having to get too
involved with the real inner workings of Performer. I need
to concentrate more on the application specifics and less 
on the visualization details. VisionWorks has provided this
environment for me in the GL world. 

My question is about a product called VEGA (it is from the 
same company that wrote VisionWorks). VEGA is based on 
Performer. Does anyone have any experience with it and does 
anyone have anything to say about what is good or bad about it?

Thanks for your time.

===================================================================
Brian Hill                    |  Advanced Marine Enterprises, Inc.|
CSD Section Chief             |  Suite 1300                       |
(703)415-3080                 |  1725 Jefferson Davis Hwy.        |
hill_b@ameig1.navsea.navy.mil |  Arlington VA, 22202              |
===================================================================



From guest  Mon May  2 20:22:15 1994
Date: Mon, 2 May 1994 20:23:29 -0700
From: ptinker@netcom.com (Peter A. Tinker)
Message-Id: <199405030323.UAA29837@netcom.com>
To: info-performer@sgi.sgi.com
Subject: new and delete
Status: O

I hope I'm not covering old ground here.  I don't see anything in the
FAQ about it.

I'm running Performer 1.2a with a C++ application.  My application
overloads 'new' and 'delete' for some fancy memory management.  It
appears that Performer also overloads 'new' and 'delete'.  Depending
on what gets linked/referenced first, I get my new/delete or
Performer's new/delete, and chaos reigns!

I hope I'm doing something wrong, and that the something wrong isn't
"overloading new and delete."  Has anyone else encountered or worked
around this problem?

	Pete Tinker (ptinker@netcom.com)
	Director, Application Development, Xtensory, Inc.

	Xtensory, Inc.			Xtensory, Inc.
	P.O. Box 5103			140 Sunridge Drive
	West Hills, CA  91308		Scotts Valley, CA  95066
	(818) 346-4253			(408) 439-0600



From guest  Wed May  4 05:05:33 1994
From: "Ran Yakir" <rany@bvr.co.il>
Message-Id: <9405041204.ZM5049@rea1.bvr.co.il>
Date: Wed, 4 May 1994 12:04:31 +0000
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: Drawing a scene twice
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hi All


	How does one replace current vertices' colors with new colors?
	(The database is originally in Flight format).
	I succeeded unbinding the texture coords, however binding new
	colours using the command

		pfGSetAttr(gd, PFGS_COLOR4, PFGS_OVERALL, Colour, NULL);

	where Colour is

		pfVec4 Colour = {rrr.rrr, ggg.ggg, bbb.bbb, aaa.aaa}

	(called through a db traversal using has pfuTraverse) resulted
	in a coloured scene which is a mixture of the previous color and
	the newly binded colour.


Thanks

-- 
 __                                  | Ran Yakir
 /_)  _  __   \  / _   / o __        | Graphics App. Chief Engineer
/ )_ (_(_) )   \/ (_(_/<_(_)(        | BVR Technologies Ltd.
              _/                     |   
-------------------------------------+--------------------------------
Phone :                              |  E-mail : rany@bvr.co.il
  Work : 972-3-5715671               |
  Res. : 972-3-6995364               |
Fax    : 972-3-5715668               |





From guest  Thu May  5 12:48:18 1994
Date: Thu, 5 May 94 21:48:04 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405051948.AA25388@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: black objects on 1.2
Reply-To: matomira@epfl.ch
Status: O


Hello,

  I have just ported a program to 1.2 . The terrain and objects
get rendered, but totally black. Is there anything to add to the
material, state definition procedure or could something like
this be related to getting a no virtual swap space warning at
the beginning? The materials are not NULL, that's for sure.

Also, loading some specific .sgo objects crashes the program,
which did not happen before either.

Thanks

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Thu May  5 14:06:06 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405052105.AA11883@tubes.asd.sgi.com>
Subject: Re: black objects on 1.2
To: guest (Fernando D. Mato Mira)
Date: Thu, 5 May 94 14:05:50 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405051948.AA25388@ligsg8.epfl.ch>; from "Fernando D. Mato Mira" at May 5, 94 9:48 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 
> Hello,
> 
>   I have just ported a program to 1.2 . The terrain and objects
> get rendered, but totally black. Is there anything to add to the
> material, state definition procedure or could something like
> this be related to getting a no virtual swap space warning at
> the beginning? The materials are not NULL, that's for sure.

Try disabling color mode on your materials:

	pfMtlColorMode(mtl, PFMTL_BOTH, PFMTL_CMODE_COLOR);

The default is for colors(cpack, c4f) to replace the diffuse and ambient color
of the current material. Thus you might get black geometry if you 
clear the screen to black and make no other color commands.






From guest  Thu May  5 16:50:05 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405052350.AA12444@tubes.asd.sgi.com>
Subject: Re: new and delete
To: guest (Peter A. Tinker)
Date: Thu, 5 May 94 16:50:10 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <199405030323.UAA29837@netcom.com>; from "Peter A. Tinker" at May 2, 94 8:23 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> I hope I'm not covering old ground here.  I don't see anything in the
> FAQ about it.
> 
> I'm running Performer 1.2a with a C++ application.  My application
> overloads 'new' and 'delete' for some fancy memory management.  It
> appears that Performer also overloads 'new' and 'delete'.  Depending
> on what gets linked/referenced first, I get my new/delete or
> Performer's new/delete, and chaos reigns!
> 
> I hope I'm doing something wrong, and that the something wrong isn't
> "overloading new and delete."  Has anyone else encountered or worked
> around this problem?
> 

	You caught us in an unneighborly act. We do indeed overload 
new and delete but only delete should be visible to you. The next
release will fix this but for now, modify your link order so that your
delete gets used. Then you'll need to delete Performer memory for us which
is easy:

	long	addr = (long)pfGetSharedArena();
	long	size = (long)pfGetSharedArenaSize();

	if (p >= addr && p < addr+size)
	    afree(p, addr);
	else
	    free(p);


Let me know how this works for you.





From guest  Fri May  6 11:09:41 1994
Date: Fri, 6 May 94 20:09:37 +0200
From: matomira@ligsg2.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405061809.AA08500@ligsg2.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: reading .iv objects
Reply-To: matomira@epfl.ch
Status: O


Hello,

  I have inventor objects organized as a set of files each, with refereces
from a root one via the "File" token. LoadIv is not capable of dealing with
this. Is there a newer version or a tool that will convert all this
to something that performer can read?

  Thanks

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Fri May  6 10:30:30 1994
	Fri, 6 May 1994 10:30:22 -0700 for <@ucsd.ucsd.edu:info-performer@sgi.com>
From: va90sap@sgva-xs4.ucsd.edu (Payton White)
Message-Id: <9405061730.AA02980@sgva-xs4>
Subject: Collision/Compiling Problems
To: info-performer@sgi.sgi.com
Date: Fri, 6 May 1994 10:30:12 -0800 (PDT)
Cc: sbrown@sgva-xs4.ucsd.edu (Sheldon Brown)
X-Mailer: ELM [version 2.4 PL22]
Content-Type: text
Content-Length: 1922      
Status: O

	I am having some problems getting collision detection to work
in a simulation that I am writing using Performer 1.2.  Considering that
the faq and release notes warned that the pfuCollide functions are 
jumpy I set out writing my own.  After implementing simple terrain
following (just like pfuCollideGrnd returning zpr) I decided to test
out the pfu version.  Here's the problem:

	When I compile my code that calls pfNodeTravMask, pfSegsIsectNode and
pfQueryHit everything goes nicely and I have great performance.

	When I try to use the pfuCollideGrnd function as a replacement
with all of the same links (including a link to libpfutil.a) and all of
the same includes (including #include "/usr/src/Performer/include/pfutil.h")
I get the following:


cc pfobj2.o vrnav.o pftri.o vr.o -o vr -xansi -D__STDC__ -I.  -I..  
-I/usr/src/Performer/include  -I/usr/include/Performer  /usr/lib/libpf.a  
/usr/src/Performer/lib/libpfutil.a  /usr/lib/libpr.a -lmpc  -limage  -lfm  
-lgl_s  -lX11  -lm  -lfpe  -lC

/usr/bin/ld:
Undefined:
pfNodeTravMask
pfMQueryHit
pfSegsIsectNode
pfQueryHit
*** Error code 1

Stop.


So almost identical versions of code are having problems finding functions
that should be easily found.  This isn't the first time I have had a
problem with mysteriously undefined functions (just the most frustrating).
Obviously I have overlooked some small something, or we have installed
Performer incorrectly.  

Any insight is greatly appreciated.  


       -- Visualization << SGI >> Simulation --
Payton R. White               __     __    __
prwhite@ucsd.edu             / /    /_/  _/ /_
       ______ _____ __   __ / /___ __   /  __/______
      / __  // .__// /__/ // __  // /   / /  / ____/
     / /_/ // /   /  _   // / / // /_  / /_ / __/_
    / ____//_/    \_/ \_//_/ /_//___/ /___//_____/
   / /When the going gets weird, the weird turn pro.
  /_/                           - Hunter S. Thompson




From guest  Fri May  6 11:57:23 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405061857.AA13161@tubes.asd.sgi.com>
Subject: Re: Collision/Compiling Problems
To: guest (Payton White)
Date: Fri, 6 May 94 11:57:07 PDT
Cc: info-performer@sgi.sgi.com, sbrown@sgva-xs4.ucsd.edu
In-Reply-To: <9405061730.AA02980@sgva-xs4>; from "Payton White" at May 6, 94 10:30 am
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 	I am having some problems getting collision detection to work
> in a simulation that I am writing using Performer 1.2.  Considering that
> the faq and release notes warned that the pfuCollide functions are 
> jumpy I set out writing my own.  After implementing simple terrain
> following (just like pfuCollideGrnd returning zpr) I decided to test
> out the pfu version.  Here's the problem:
> 
> 	When I compile my code that calls pfNodeTravMask, pfSegsIsectNode and
> pfQueryHit everything goes nicely and I have great performance.
> 
> 	When I try to use the pfuCollideGrnd function as a replacement
> with all of the same links (including a link to libpfutil.a) and all of
> the same includes (including #include "/usr/src/Performer/include/pfutil.h")
> I get the following:
> 
> 
> cc pfobj2.o vrnav.o pftri.o vr.o -o vr -xansi -D__STDC__ -I.  -I..  
> -I/usr/src/Performer/include  -I/usr/include/Performer  /usr/lib/libpf.a  
> /usr/src/Performer/lib/libpfutil.a  /usr/lib/libpr.a -lmpc  -limage  -lfm  
> -lgl_s  -lX11  -lm  -lfpe  -lC
> 
> /usr/bin/ld:
> Undefined:
> pfNodeTravMask
> pfMQueryHit
> pfSegsIsectNode
> pfQueryHit
> *** Error code 1
> 
> Stop.
> 
> 
> So almost identical versions of code are having problems finding functions
> that should be easily found.  This isn't the first time I have had a
> problem with mysteriously undefined functions (just the most frustrating).
> Obviously I have overlooked some small something, or we have installed
> Performer incorrectly.  
> 
> Any insight is greatly appreciated.  
> 

	You need to put libpfutil before libpf since libpfutil references
libpf functions.






From guest  Fri May  6 12:14:15 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405061913.AA13217@tubes.asd.sgi.com>
Subject: Re: Drawing a scene twice
To: guest (Ran Yakir)
Date: Fri, 6 May 94 12:13:59 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405041204.ZM5049@rea1.bvr.co.il>; from "Ran Yakir" at May 4, 94 12:04 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> Hi All
> 
> 
> 	How does one replace current vertices' colors with new colors?
> 	(The database is originally in Flight format).
> 	I succeeded unbinding the texture coords, however binding new
> 	colours using the command
> 
> 		pfGSetAttr(gd, PFGS_COLOR4, PFGS_OVERALL, Colour, NULL);
> 
> 	where Colour is
> 
> 		pfVec4 Colour = {rrr.rrr, ggg.ggg, bbb.bbb, aaa.aaa}
> 
> 	(called through a db traversal using has pfuTraverse) resulted
> 	in a coloured scene which is a mixture of the previous color and
> 	the newly binded colour.
> 
> 

	I need more information. What does your traversal routine look
like? Maybe you're not finding all the pfGeoSets in your scene.
One concern is that "Colour" is not allocated out of shared memory
so that if you multiprocess you might have problems. 





From guest  Fri May  6 13:17:20 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405062017.AA13417@tubes.asd.sgi.com>
Subject: Re: Passing C++ member functions to Performer functions
To: guest (Greg Wiatroski)
Date: Fri, 6 May 94 13:16:59 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9404252106.AA01433@flash.vsl.ist.ucf.edu>; from "Greg Wiatroski" at Apr 25, 94 5:06 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> Does anyone out there know of a way to pass member functions to
> Performer calls like pfInitPipe, pfChanCullFunc, and pfChanDrawFunc 
> that need a user provided callbacks?
> 

	Where are you Bwana Bob?





From guest  Fri May  6 22:20:55 1994
From: "Bob Buckley" <bbuckley@grimmy.mss.ctaeng.com>
Message-Id: <9405061837.ZM6199@grimmy.mss.ctaeng.com>
Date: Fri, 6 May 1994 18:37:47 -0600
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: Re: Passing C++ member functions to Performer functions
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Content-Length: 3915
Status: O


On May 6,  1:16pm, John Rohlf wrote:
> Subject: Re: Passing C++ member functions to Performer functions
> >
> > Does anyone out there know of a way to pass member functions to
> > Performer calls like pfInitPipe, pfChanCullFunc, and pfChanDrawFunc
> > that need a user provided callbacks?
> >
>
> 	Where are you Bwana Bob?
>
>-- End of excerpt from John Rohlf


This questions has come up enough to get it into the FAQs.

This came up when I was trying to create an ownship that could bring alongs
it's
own functionality. I implemented an F-18 Hornet with it's own geometry and
Heads-Up-Display (HUD). I only set it up for a Node callback but the technique
can be applied equally well to the system commands like InitPipe - with one
VERY important catch!!!!!


I created the following:

//
//	A HUD Pass Thru Data Structure
//
typedef struct
{
	float	speed;
	float	heading;
	float	pipper_x, pipper_y;
		.
		.
		.			// All the info required by the HUD
} HUDPt_s;

//
//	An F18 Hornet Class
//
class F18 : public FighterAircraft
{
	protected:
		pfDCS		*hud_dcs;	// The HUD pfDCS
		HUDPt_s		*hud_pt;	// HUD Pass thru data
	public:
		F18(void);
		~F18(void);

		//
		//	The following are all called in the DRAW Process from
		//	the HUDPreDraw and HUDPostDraw Callbacks
		//

		static void	InitHUD(void);		// Called only once
		static void	RenderHUD(void *);	// Dynamic Components
		static void	RenderStaticHUD(void *);// Static Components

		//
		//	The Node CallBacks
		//

		static long	HUDPreDraw(pfTraverser *, void *);
		static long	HUDPostDraw(pfTraverser *, void *);
};


//
//	F18 Constructor
//
F18::F18(void)
{
	//
	//	Load up the Node Geometry
	//

	pfGroup *grp = (pfGroup *) LoadFlt("f18hud.flt");
	hud_dcs = pfNewDCS();
	pfAddChild(hud_dcs, grp);

	//
	//	*** Setup the CallBacks ***
	//

	pfNodeTravFuncs(hud_dcs, PFTRAV_DRAW,
			(long (*)(pfTraverser *, void *)) F18::HUDPreDraw,
			(long (*)(pfTraverser *, void *)) F18::HUDPostDraw);

	//
	//	Setup the Pass Thru Data
	//	(All you have to do is set this structure before calling
	//	 pfFrame and Performer will handle it getting passed into the
	// 	 CallBack functions as a parameter.
	//

	hud_pt = (HUDPt_s *) pfMalloc(sizeof(HUDPt_s), pfGetSharedArena());
	pfNodeTravData(hud_dcs, PFTRAV_DRAW, (void *) hud_pt);
}


Cool? ... Cool!


The BIG Catch to passing Member Functions Pointers is that Performer can make
the call to the function with no problem but because of the scope involved
there is no member data associated with the call! It's just a plain old
function call. Think about it, you create objects in the App process and
initialize them. The call back is called in the draw process - No member data!
Hence, you either have to use pass thru data with nodes or use Performer or
Irix Shared memory that is visible to the callback functions. The problems
invloved with using shared memory is that you get into buffer coherency
problems. The data in shared memory can be upto 4 frames newer than what is
currently being drawn. Solution - Multibuffer in shared memory - well one
solution anyways.

Remember not to use any Member data in your Member Functions that are used in
different processes.

The other thing that comes to mind is that pfInitPipe doesn't have a data pass
thru capability - but it has been suggested to the Performer Team.


Hope this helps!


P.S. Greg my codes there, go take a look at it!
     DIS_F18.h++ & DIS_F18.c++

===========================================================================
'Bwana' Bob Buckley                               CTA, Inc.
Sr. Software Engineer                             5670 Greenwood Plaza Blvd
Visual Systems                                    Englewood, CO  80111
(303) 889-1207                                    (303) 889-1200
bbuckley@ctaeng.com                               (303) 889-1398 Fax
===========================================================================




From guest  Fri May  6 19:38:41 1994
Message-Id: <9405061935.ZM21048@otto.gsaup.ucla.edu>
Date: Fri, 6 May 1994 19:35:27 -0700
X-Mailer: Z-Mail (3.0B.0 25aug93 MediaMail)
To: info-performer@sgi.sgi.com
Subject: PTU information
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O



Where can I (is there) more information - read examples - of the PTU terrain
stuff?

I didn't notice any on the 1.2 CD - or am I mistaken?  If not, could one or
several be made available via FTP?

Thanks



-- 

Scott A. Friedman (scott@gsaup.ucla.edu)

-- U.C.L.A. Graduate School of Architecture & Urban Planning --



From guest  Mon May  9 18:11:01 1994
From: rmann@remarque.berkeley.edu (Roderick L. Mann)
Message-Id: <199405100111.SAA18084@remarque.berkeley.edu>
Subject: unsubscribe
To: info-performer@sgi.sgi.com
Date: Mon, 9 May 1994 18:11:55 -0700 (PDT)
Content-Type: text
Content-Length: 78        
Status: O

Sorry, I don't know the admin address. Please unsubscribe me. Thank you

Rick


From guest  Tue May 10 02:40:54 1994
Date: Tue, 10 May 94 07:36:18 GMT
From: alon@bvr.co.il (Alon Rosenfeld 18 Hatzedef street Jaffa )
Message-Id: <9405100736.AA01546@rea1.bvr.co.il>
To: info-performer@sgi.sgi.com
Subject: Colour alteration with cloned nodes
Status: O


Hi All, 

My application involves a two pass rendered scene. The first pass the application
draws the scene as it is (i.e. as it was modeled in MultiGen with textures, rgb colours
for each vertex, etc.). In the second pass I would like to draw the scene with a single
texture (using texgen) and a single colour. To draw the scene twice I have cloned the
database. Enforcing the database to use a single texture is easy, using the an override
command as shown bellow:

	pfApplyTEnv(env);
	pfApplyTex(missjan);
	pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_ON);

	/*	draw the scene	*/

	pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_OFF);

However can I do the same for the colour? 	It would be nice if I could call 
say "pfApplyColor()" and then use pfOverride() to lock the colour in the GeoSets.

Thanks



 \________            \___   \_________
\__________           \___   \__________
\___   \___           \___   \___   \___      Alon J Rosenfeld
\___   \___           \___   \___   \___      BVR Technologies Ltd.
\__________   \___    \___   \_________       1 Korazim st. Givatayim, Israel
\__________   \___    \___   \_________       Tel:  972-3-571 5671
\___   \___    \__________   \___   \___      Fax:  972-3-571 5668
\___   \___     \________    \___   \___      Home: 972-3-683 6020
\___   \___      \______     \___   \___      Email: alon@bvr.co.il





From guest  Tue May 10 02:18:38 1994
Date: Tue, 10 May 94 09:16:39 GMT
From: alon@bvr.co.il (Alon Rosenfeld 18 Hatzedef street Jaffa )
Message-Id: <9405100916.AA01984@rea1.bvr.co.il>
To: info-performer@sgi.sgi.com
Subject: Colour alteration with cloned nodes
Status: O


Hi All,

My application involves a two pass rendered scene. The first pass the application
draws the scene as it is (i.e. as it was modeled in MultiGen with textures, rgb colours
for each vertex, etc.). In the second pass I would like to draw the scene with a single
texture (using texgen) and a single colour. To draw the scene twice I have cloned the
database. Enforcing the database to use a single texture is easy, using the an override
command as shown bellow:

    pfApplyTEnv(env);
    pfApplyTex(missjan);
    pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_ON);

    /*  draw the scene  */

    pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_OFF);
    
However can I do the same for the colour?   It would be nice if I could call
say "pfApplyColor()" and then use pfOverride() to lock the colour in the GeoSets.

Meanwhile I am loading the database twice. On the second loaded db I run a pre-process
traversal which alters the existing colours in the GeoSets to the desired uniform colour.

Thanks







 \________            \___   \_________
\__________           \___   \__________
\___   \___           \___   \___   \___      Alon J Rosenfeld
\___   \___           \___   \___   \___      BVR Technologies Ltd.
\__________   \___    \___   \_________       1 Korazim st. Givatayim, Israel
\__________   \___    \___   \_________       Tel:  972-3-571 5671
\___   \___    \__________   \___   \___      Fax:  972-3-571 5668
\___   \___     \________    \___   \___      Home: 972-3-683 6020
\___   \___      \______     \___   \___      Email: alon@bvr.co.il





From guest  Tue May 10 02:41:38 1994
Date: Tue, 10 May 94 09:40:22 GMT
From: alon@bvr.co.il (Alon Rosenfeld 18 Hatzedef street Jaffa )
Message-Id: <9405100940.AA02057@rea1.bvr.co.il>
To: info-performer@sgi.sgi.com
Subject:  Colour alteration with cloned nodes
Status: O



Hi All,

My application involves a two pass rendered scene. The first pass the application
draws the scene as it is (i.e. as it was modeled in MultiGen with textures, rgb colours
for each vertex, etc.). In the second pass I would like to draw the scene with a single
texture (using texgen) and a single colour. To draw the scene twice I have cloned the
database. Enforcing the database to use a single texture is easy, using the an override
command as shown bellow:

    pfApplyTEnv(env);
    pfApplyTex(missjan);
    pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_ON);

    /*  draw the scene  */

    pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_OFF);
    
However can I do the same for the colour?   It would be nice if I could call
say "pfApplyColor()" and then use pfOverride() to lock the colour in the GeoSets.

Meanwhile I am loading the database twice. On the second loaded db I run a pre-process
traversal which alters the existing colours in the GeoSets to the desired uniform colour.

Thanks



 \________            \___   \_________
\__________           \___   \__________
\___   \___           \___   \___   \___      Alon J Rosenfeld
\___   \___           \___   \___   \___      BVR Technologies Ltd.
\__________   \___    \___   \_________       1 Korazim st. Givatayim, Israel
\__________   \___    \___   \_________       Tel:  972-3-571 5671
\___   \___    \__________   \___   \___      Fax:  972-3-571 5668
\___   \___     \________    \___   \___      Home: 972-3-683 6020
\___   \___      \______     \___   \___      Email: alon@bvr.co.il





From guest  Tue May 10 09:10:32 1994
From: marrou@vsl.ist.ucf.edu (Lance Marrou)
Message-Id: <9405101610.AA01612@sg1.vsl.ist.ucf.edu>
To: "pierre VERCRUYSSE" <pierre@cathy.rennes.sgi.com>,
        info-performer@sgi.sgi.com
Subject: Re:  (Fwd) Fog implementation
Status: O

I have also had trouble implementing spline fog on RE and RE2 systems,
but I had not figured it was worth a lot of trouble (therefore I did not
spend a bunch of time with it).  I stuck with the regular pix mode on
fog and it works fine enough for some neat effects (quick & cheap).
We had it running on our demos at I/ITSEC last year.

Of course, fog will become a cheap rendition of any fog/cloud simulations
currently being developed, but it is a cool source of visual effects;
thanks, SGI! :)
_______________________________________________________
IST         __           E-mail: marrou@vsl.ist.ucf.edu
Visual     / /   ______  /\____ ______ ______          
Systems   / /   / _   / / __  // ____// ____/          
Lab      / /__ / /_/ / / / / // /___ / __/_   R. Marrou
________/____//____/\\/_/ /_//_____//_____/____________



From guest  Tue May 10 09:07:19 1994
Message-Id: <9405101544.AA07443@sparky.bvu-lads.loral.com>
X-Sender: mheinen@sparky.bvu-lads.loral.com
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Tue, 10 May 1994 08:11:26 -0800
To: info-performer@sgi.sgi.com
From: mheinen@bvu-lads.loral.com (Mark N. Heinen)
Subject: Earth-Sky model polygon
Status: O

Does anyone know if there is a way to directly control the positioning of
the Performer Sky polygon when enabling the sky and horizon backdrop?  My
objects are intersecting with the sky polygon in the sky even though they
are well within the far clipping plane.  When I turn off the horizon and
sky backdrop, I see my objects in their entirety.

Any suggestions are appreciated.

- MarkH

-------------------------------------------------------------------------------
Mark N. Heinen
Loral Advanced Distributed Simulation
13810 SE Eastgate Way
Suite 500
Bellevue, WA 98005
EMail : mheinen@bvu-lads.loral.com
Phone : (206) 957-3236
Fax   : (206) 746-1335




From guest  Tue May 10 08:44:10 1994
From: "pierre VERCRUYSSE" <pierre@cathy.rennes.sgi.com>
Message-Id: <9405101645.ZM594@cathy.rennes.sgi.com>
Date: Tue, 10 May 1994 16:45:05 -0600
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: (Fwd) Fog implementation
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hi

I have a customer who have some difficulties to implement the Fog.

I have an Onyx RE2 with 2 RM in Irix 5.2 and performer 1.2.

He have watch the difference with the his application and perfly and he has
conclude this summary and a lot of question ?

type of fog		Near		far		status

VtxLin,PixLin or	[1.0,1000.0]	1000.0		no problem, it'ok
spline			if > 1000.0	8000.0		Problem why ??

VtxExp/VtxExp2		no variation of the fog when we change the near
PixExp/PixExp2

1. We don't seen what kind of value we can put on near ? and what is the
minimum distance that i can define for the value "NEAR" of the interval for the
fog ?

2. How can i optimise the drawing of the image by manipulating the clipping
plan "Far"    pfFogRange(fog,1.0f,distance of visibility);
	 pfChanNearFar(channel,1.0f,distance of visibility+alpha);

3. Thus he exist a relation between the distance of visibility, the dynnamic in
z of the system and the dynamic about the BDD (step of discretisation) ?

My customer goes to the preparation of the ITEC and he told me that during the
preparation about the demo of the shared database, He hav'nt seen a demo of
performer with fog. Is it true or not ?

In advance Thanks for your answerd .

pierre@rennes.sgi.com





From guest  Wed May 11 12:24:37 1994
From: watsen@netcom.com (Kent Watsen)
Message-Id: <199405111924.MAA16419@netcom.com>
Subject: Accumulation Buffer
To: info-performer@sgi.sgi.com (performer)
Date: Wed, 11 May 1994 12:24:20 -0700 (PDT)
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1555      
Status: O


Hi, I have an Onyx RE2 and Performer 1.2.  I have
spent a week going through the GL advance GL
manuals trying to get the accumulation buffer to
work with performer in real-time.

My best guess is to initialize the ACBUF after
calling pfConfig() with the following commands:

	acsize(16);
	gconfig();
	acbuf(AC_CLEAR, 0.0);

I then establish a swap function callback with the
following command after initializing my pipe with
pfPipeSwapFunc (pipe, swapfunc).

Swapfunc() is call once per frame just after the
scene has been rendered into the backbuffer.  The
swapfunc() makes the appropriate ACBUF calls and
the calls swapbuffers() as follows:

	void swapfunc (pfPipe *pipe)
	{
	// MOTION BLUR
	acbuf(AC_MULT, 0.5);
	acbuf(AC_ACCUMULATE, 1.0);
	acbuf(AC_RETURN, 1.0);

	swapbuffers();
	}

I acheive the desired effect but my frame rate drops
to less the one frame every five seconds!  I have done
some experimentation and have determined that the 
larger my viewport the slower the ACBUF takes.

The standard GL motion blur demos show much greater
frame rates being achieved...but how?  The fundamental
difference in the codes is that I'm using Performer
to do my rendering into the backbuffer rather then GL.
It looks like all of the processing is being done in
software, even though I am making the acbuf() calls.

Does anybody have a clue as to what I'm doing wrong.
Also, is the accumulation buffer a peice of hardware
sitting in the RE2 pipeline or is it just another 
abstraction of the 40MB video memory included.

Kent Watsen
Watsen@netcom.com





From guest  Wed May 11 12:37:36 1994
Message-Id: <199405111936.MAA26697@archimedes.chinalake.navy.mil>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
To: info-performer@sgi.sgi.com
From: jan@archimedes.chinalake.navy.mil (Jan A. Barglowski)
Subject: Tracking camera...
Status: O

Forgive me if this is really basic, but I want to implement a "tracking"
camera.  That is, a camera which always looks at a particular model.  This
model will be driven by data, so its position cannot be known before hand.

The way I've been going about it is: take the position of the model and
subtract the position of the camera.  This gives a vector from the camera
to the model.  The problem now is getting this vector into a hpr form so
that I can use the pfChanView function to set the viewing direction.

Am I going about this wrong?  I've looked in the myriad of Performer
function calls to see if there is a conversion from vector to hpr, but
can't find any.  Is there a "Performer way" that does all this
automatically?

Thanks in advance!

jan.


 Jan Anthony Barglowski       Phone:  (619) 927-1057                
 Computer Dude                Internet: jan@archimedes.nwc.navy.mil 
 Visualization Lab            Packet: SYSOP@WA6YBN.#SOCA.CA.US.NA  
  Naval Air Warfare Center            kc6uth@kc6uth.ampr.org        
  -Weapons Division                   [44.17.2.6]                   




From guest  Wed May 11 13:01:40 1994
From: barham@gnarly.cs.nps.navy.mil (paul barham)
Message-Id: <9405111940.AA19795@gnarly.cs.nps.navy.mil>
Subject: Re: Tracking camera...
To: jan@archimedes.chinalake.navy.mil (Jan A. Barglowski)
Date: Wed, 11 May 1994 12:40:21 -0700 (PDT)
Cc: info-performer@sgi.sgi.com
In-Reply-To: <199405111936.MAA26697@archimedes.chinalake.navy.mil> from "Jan A. Barglowski" at May 11, 94 12:36:22 pm
X-Mailer: ELM [version 2.4 PL22]
Content-Type: text
Content-Length: 2469      
Status: O

> 
> Forgive me if this is really basic, but I want to implement a "tracking"
> camera.  That is, a camera which always looks at a particular model.  This
> model will be driven by data, so its position cannot be known before hand.
> 
> The way I've been going about it is: take the position of the model and
> subtract the position of the camera.  This gives a vector from the camera
> to the model.  The problem now is getting this vector into a hpr form so
> that I can use the pfChanView function to set the viewing direction.
> 
> Am I going about this wrong?  I've looked in the myriad of Performer
> function calls to see if there is a conversion from vector to hpr, but
> can't find any.  Is there a "Performer way" that does all this
> automatically?
> 
> Thanks in advance!
> 
> jan.
> 
> 
>  Jan Anthony Barglowski       Phone:  (619) 927-1057                
>  Computer Dude                Internet: jan@archimedes.nwc.navy.mil 
>  Visualization Lab            Packet: SYSOP@WA6YBN.#SOCA.CA.US.NA  
>   Naval Air Warfare Center            kc6uth@kc6uth.ampr.org        
>   -Weapons Division                   [44.17.2.6]                   
> 
> 

Here is a subroutine from our NPSNET-IV virtual world simulator which will
perform the operation you need (in C++):

void compute_hpr ( pfVec3 &from_pos, pfVec3 &to_pos, pfVec3 &hpr_result )
   {
   float bearing_angle;
   float pitch_angle;
   float ordered_heading;
   float target_dist;

   target_dist = pfDistancePt3 ( to_pos, from_pos );
   bearing_angle = atan2f( (from_pos[Y] - to_pos[Y]),
                           (from_pos[X] - to_pos[X]) );
   pitch_angle = RAD_TO_DEG * asinf( (to_pos[Z] - from_pos[Z])/target_dist );
   ordered_heading = RAD_TO_DEG * (HALFPI + bearing_angle);
   while ( ordered_heading < 0.0f )
      ordered_heading += 360.0f;
   while ( ordered_heading >= 360.0f )
      ordered_heading -= 360.0f;
   pfSetVec3 ( hpr_result, ordered_heading, pitch_angle, 0.0f );
   }


-- 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Paul T. Barham   Computer Specialist   Computer Graphics Research  +
+                                                                    +
+ Naval Postgraduate School                  barham@cs.nps.navy.mil  +
+ Computer Science Department, Code CS       Spanagel Hall Room 311A +
+ Monterey, Calfornia 93943                  (408)656-2253 (2814 fax)+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




From guest  Wed May 11 14:00:23 1994
Date: Wed, 11 May 94 13:59:12 PDT
From: stiles@aic.lockheed.com (Randy Stiles)
Message-Id: <9405112059.AA21106@aic.lockheed.com>
To: jan@archimedes.chinalake.navy.mil
Cc: info-performer@sgi.sgi.com
In-Reply-To: Jan A. Barglowski's message of Wed, 11 May 1994 12:36:22 -0700 <199405111936.MAA26697@archimedes.chinalake.navy.mil>
Subject: Tracking camera...
Status: O

   Date: Wed, 11 May 1994 12:36:22 -0700
   Mime-Version: 1.0
   Content-Type: text/plain; charset="us-ascii"
   From: jan@archimedes.chinalake.navy.mil (Jan A. Barglowski)

   Forgive me if this is really basic, but I want to implement a "tracking"
   camera.  That is, a camera which always looks at a particular model.  This
   model will be driven by data, so its position cannot be known before hand.

   The way I've been going about it is: take the position of the model and
   subtract the position of the camera.  This gives a vector from the camera
   to the model.  The problem now is getting this vector into a hpr form so
   that I can use the pfChanView function to set the viewing direction.

   Am I going about this wrong?  I've looked in the myriad of Performer
   function calls to see if there is a conversion from vector to hpr, but
   can't find any.  Is there a "Performer way" that does all this
   automatically?

Performer  has  a  routine  pfMakeRotOntoMat which
will give you a viewing matrix  (or  coords if you
use pfGetOrthoMatCoord)  that will rotate from one
vector to another.  The starting vector should  be
0.0,1.0.0.0,  and the  end vector  should  be  the
world coordinate  xyz minus the  current viewpoint
xyz,  giving  you  a  vector  that  points at  the
desired object.

Of  course to  get world  coordinates,  for target
object, you have make sure all the  transformation
matrices  that  are parents in  the tree have been
evaluated  (multiplied)  against  the objects  DCS
matrix. You can premultiply this stuff yourself in
your own code using performer utilities.  Obviously
performer evaluates these matrices to get world
coordinates in order to render stuff, but I haven't
come across the hook to get that info (maybe more
enlighted performer hackers can tell me where it
is... I hate re-evaluating something I know is 
already out there, evaluated).

There may be a more direct way to do this point at
stuff, but I have tried it and it works reliably.
We routinely do this in our perfomer applications.
There  is  an  infinite  number   of  roll  angles
possible, so you may wish to ignore  the  roll and
keep old roll values.

-Randy

# Randy Stiles (stiles@aic.lockheed.com) 
# Office: 415.354.5256, Fax: 415.354.5235 
# Lockheed R&DD, Orgn 9620 Bldg 254F
# 3251 Hanover St., Palo Alto, CA 94304-1191








From guest  Wed May 11 14:12:58 1994
Date: Wed, 11 May 94 23:12:44 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405112112.AA08036@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: blended LODs
Reply-To: matomira@epfl.ch
Status: O


Hello,

  What's the secret to get blended LODs working? It's not a problem
of attribute setup, but rather of multisampling, I think. I've called
multisample(TRUE) and mssize(4/8,24/32,0/1/4) and gconfig on an
RE onyx but it doesn't work. Either the LODs just 'jump', or there's
no transition at all, or (latest news) the LODs 'jump' being translucid
all the time (no blending). getgconfig after gconfig tells me there's
0 sample buffers.

  According to the lod example, it seems I am not forgetting anything.

Thanks in advance

P.S.:
I am running 1.2, of course.

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Wed May 11 14:39:11 1994
From: "Sharon Fischler" <srf@rose>
Message-Id: <9405111438.ZM4370@rose.asd.sgi.com>
Date: Wed, 11 May 1994 14:38:52 -0700
In-Reply-To: watsen@netcom.com (Kent Watsen)
        "Accumulation Buffer" (May 11, 12:24pm)
References: <199405111924.MAA16419@netcom.com>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: watsen@netcom.com (Kent Watsen), info-performer@sgi.sgi.com (performer)
Subject: Re: Accumulation Buffer
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

+>---- On May 11, 12:24pm, Kent Watsen wrote:
> Subject: Accumulation Buffer
->
->Hi, I have an Onyx RE2 and Performer 1.2.  I have
->spent a week going through the GL advance GL
->manuals trying to get the accumulation buffer to
->work with performer in real-time.
->
->My best guess is to initialize the ACBUF after
->calling pfConfig() with the following commands:
->
->	acsize(16);
->	gconfig();
->	acbuf(AC_CLEAR, 0.0);
->
->I then establish a swap function callback with the
->following command after initializing my pipe with
->pfPipeSwapFunc (pipe, swapfunc).
->
->Swapfunc() is call once per frame just after the
->scene has been rendered into the backbuffer.  The
->swapfunc() makes the appropriate ACBUF calls and
->the calls swapbuffers() as follows:
->
->	void swapfunc (pfPipe *pipe)
->	{
->	// MOTION BLUR
->	acbuf(AC_MULT, 0.5);
->	acbuf(AC_ACCUMULATE, 1.0);
->	acbuf(AC_RETURN, 1.0);
->
->	swapbuffers();
->	}
->
->I acheive the desired effect but my frame rate drops
->to less the one frame every five seconds!  I have done
->some experimentation and have determined that the 
->larger my viewport the slower the ACBUF takes.
->
->The standard GL motion blur demos show much greater
->frame rates being achieved...but how?  The fundamental
->difference in the codes is that I'm using Performer
->to do my rendering into the backbuffer rather then GL.
->It looks like all of the processing is being done in
->software, even though I am making the acbuf() calls.
->
->Does anybody have a clue as to what I'm doing wrong.
->Also, is the accumulation buffer a peice of hardware
->sitting in the RE2 pipeline or is it just another 
->abstraction of the 40MB video memory included.

Framebuffer words (pixel depth) are allocated amoung the color buffers,
zbuffer, overlay planes, accumulation buffer, multisample 
buffer, etc.
If you do not have enough pixel depth to support your current
requests, you will drop into software accumulation buffering,
which might be happening here.
getgdesc(GD_BITS_ACBUF_HW) tells you how many bits per component are
supported in hardware, which should be 16. You do want to use
exactly that number in acsize(). 
You might try reducing your required pixel depth: 
don't allocate stereo buffers, use RGBsize(8), zbsize(24).

FYI: /usr/gfx/gfxinfo will tell you your current pixel depth
(which can be increased by using a smaller resolution screen 
area via setmon()).
Pixel depth is small=16 16-bit words, Med=32 words, and Larg=64 words.


srf.
-- 
-----{-----{---@   -----{----{---@   -----{----{---@   -----{----{---@
Sharon Rose Fischler - Silicon Graphics, Advanced Graphics Development
srf@sgi.com  (415) 390 - 1002  FAX: (415) 965 - 2658  MS 8U-590
-----{-----{---@   -----{----{---@   -----{----{---@   -----{----{---@





From guest  Thu May 12 09:16:20 1994
From: "Simon Kelsall" <simonk@haddaway.reading.sgi.com>
Message-Id: <9405121715.ZM1149@haddaway.reading.sgi.com>
Date: Thu, 12 May 1994 17:15:44 +0100
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: Inventor2Performer
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hello,

	Have I just dreamt this or is there an Inventer to Performer (.flt)
converter.
	I need to modify a database I have in Inventor format using Multigen
and then load it into a performer application.

	A location to where I'd find such a thing would be excellent, Ta

Simon.

-- 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Simon Kelsall, Pre-Sales Support Engineer.   |
|                                              |
| Post: Silicon Graphics, Forum 1, Station Rd. |
|       Theale, Berkshire, RG7 4RA, England.   |
|                                              |
| Email: simonk@reading.sgi.com                |
| Tel: +44 734 257625                          |
| Fax: +44 734 302550                          |
| Vmail: 58271                                 |
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv




From guest  Thu May 12 12:17:07 1994
Date: Thu, 12 May 94 21:16:39 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405121916.AA10001@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: pfLoadTexture gets null texture
Reply-To: matomira@epfl.ch
Status: O


Hi,

  My sim started giving warnings about pfLoadTexture getting
null textures. I have checked and the files are found by performer
and they are readable and OK. I saw on the console warnings about
no more virtual swap. Could this be the reason? Last time I run
the program there were no swap warnings, but I still haven't rebooted
the machine. Also, is there a way of cleaning the swap area state
without rebooting, like when you run out of semaphores (I have a
little program to do just that). I tried swap -d to remove the
extra swap device (as root), but it tells me there's to little
free pages (swap -l shows that physical pages are all free).

Thanks

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Thu May 12 11:46:52 1994
From: "Salvador Blasco" <giraffe.asd.sgi.com!sgi.sgi.com!sgihub.corp.sgi.com!arrakis!salvador>
Message-Id: <9405121233.ZM1982@arrakis.mexico.sgi.com>
Date: Thu, 12 May 1994 12:33:52 -0700
X-Mailer: Z-Mail (3.0B.0 25aug93 MediaMail)
To: info-performer@sgi.sgi.com
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Please unsubscribe me. Thank you

-- 
Salvador Blasco
Silicon Graphics, Inc. 				
(525)662-0322					
Voice Mail: 5-9471						
Email: salvador@sgi.com			
				
		"If there's nothing wrong with me,                     
		 there must be something wrong                        
		 with the universe!"                                  
			- Dr.Beverly Crusher, Star Trek:TNG              




From guest  Thu May 12 13:07:04 1994
Date: Thu, 12 May 94 22:06:47 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405122006.AA10235@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: Photoshop -> RGBA?
Reply-To: matomira@epfl.ch
Status: O


Hello,

  
  I have a 4-component (8bits per component) image in Photoshop.

  I need to save this into any appropriate format supported and
  convert this into an SGI RGBA file.

  Is there any freely available tool that will do this right? 
  And in what format should I save in Photoshop?

Thanks in advance

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Thu May 12 13:42:50 1994
From: marrou@vsl.ist.ucf.edu (Lance Marrou)
Message-Id: <9405122042.AA07956@crusader.vsl.ist.ucf.edu>
To: info-performer@sgi.sgi.com, matomira@epfl.ch
Subject: Re:  Photoshop -> RGBA?
Status: O

>  Is there any freely available tool that will do this right? 
>  And in what format should I save in Photoshop?

The programs fromtiff and fromtarga will work fine to convert from
AT&T Targa (Vista) images or TIFF images, both of which I think
Photoshop can output.  These programs should be in /usr/sbin,
otherwise you can try ~4Dgifts/iristools/imgtools.

If both of these options fail, you can fall back on netpbm, available
from various ftp sites, and then try compiling the (humongous) thing.
I recommend trying fromtarga, personally, because netpbm is a pain in
the butt to compile on SGs, and fromtiff may or may not support
compressed TIFF files (which I think it does, try the man pages).
_______________________________________________________
IST         __           E-mail: marrou@vsl.ist.ucf.edu
Visual     / /   ______  /\____ ______ ______          
Systems   / /   / _   / / __  // ____// ____/          
Lab      / /__ / /_/ / / / / // /___ / __/_   R. Marrou
________/____//____/\\/_/ /_//_____//_____/____________



From guest  Thu May 12 13:54:29 1994
Date: Thu, 12 May 94 22:54:20 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405122054.AA10323@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: Re: Photoshop -> RGBA?
Reply-To: matomira@epfl.ch
Status: O



>>>
>  Is there any freely available tool that will do this right? 
>  And in what format should I save in Photoshop?

The programs fromtiff and fromtarga will work fine to convert from
AT&T Targa (Vista) images or TIFF images, both of which I think
Photoshop can output.  

>>>

Hm. I tried today saving to Targs and using fromtarga, but
the billboards do not get alpha-modulated at all. I know
this can work, because if I set PFTE_COMP_IA_GETS_RG
in the texture environment, the trees look nice.

Also, we tried generating the mask with TDI Explore (reform -4)
and then translating via tdisgi but this does not work, either.

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Thu May 12 14:06:24 1994
Date: Thu, 12 May 94 17:06:09 EDT
From: flip@cgrg.ohio-state.edu (Flip Phillips)
Message-Id: <9405122106.AA26967@sap.cgrg.ohio-state.edu>
To: matomira@epfl.ch
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405122006.AA10235@ligsg8.epfl.ch> (matomira@lig.di.epfl.ch)
Subject: Re: Photoshop -> RGBA?
Status: O


there is in fact an SGI format exporter/importer module for photoshop. if you
cannot locate it directly I may be able to binhex and send it to you directly.

-- flip


From guest  Fri May 13 15:58:12 1994
Date: Fri, 13 May 94 15:57:15 -0700
From: sbrown@nestor.ucsd.edu
Message-Id: <9405132257.AA03024@nestor>
To: info-performer@sgi.sgi.com
Status: O


I am curious if anyone has experience in working
with Logitech's 3-D Mouse and 3D HeadTracker in
Performer Applications, including how they compare with
Polhemous and Ascencion devices.  
I am primarily interested in the Logitech devices out of 
price considerations, but I have yet to determine if they
actually work well enough to track movement through
a 6'x6'x6' space.

Any information is appreciated.

Sheldon Brown
Visual Arts
University of California at San Diego
sgbrown@ucsd.edu



From guest  Mon May 16 14:20:45 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405162120.AA02974@tubes.asd.sgi.com>
Subject: Re: Colour alteration with cloned nodes
To: guest (Alon Rosenfeld 18 Hatzedef street Jaffa)
Date: Mon, 16 May 94 14:20:04 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405100916.AA01984@rea1.bvr.co.il>; from "Alon Rosenfeld 18 Hatzedef street Jaffa" at May 10, 94 9:16 am
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 
> Hi All,
> 
> My application involves a two pass rendered scene. The first pass the application
> draws the scene as it is (i.e. as it was modeled in MultiGen with textures, rgb colours
> for each vertex, etc.). In the second pass I would like to draw the scene with a single
> texture (using texgen) and a single colour. To draw the scene twice I have cloned the
> database. Enforcing the database to use a single texture is easy, using the an override
> command as shown bellow:
> 
>     pfApplyTEnv(env);
>     pfApplyTex(missjan);
>     pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_ON);
> 
>     /*  draw the scene  */
> 
>     pfOverride(PFSTATE_ENTEXTURE | PFSTATE_TEXTURE, PF_OFF);
>     
> However can I do the same for the colour?   It would be nice if I could call
> say "pfApplyColor()" and then use pfOverride() to lock the colour in the GeoSets.
> 
> Meanwhile I am loading the database twice. On the second loaded db I run a pre-process
> traversal which alters the existing colours in the GeoSets to the desired uniform colour.
> 


	You are doing the right thing for the texture but there is no
analogy for overriding color. However, if your database is lit, you can
override a material of the color you want. You'll have to disable color mode
on the material: pfMtlColorMode(mtl, PFMTL_BOTH, PFMTL_CMODE_COLOR)
so subsequent colors are ignored. If your database is not lit, then you'll
have to modify the above technique somewhat.





From guest  Mon May 16 14:33:41 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405162132.AA02997@tubes.asd.sgi.com>
Subject: Re: blended LODs
To: guest (Fernando D. Mato Mira)
Date: Mon, 16 May 94 14:32:51 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405112112.AA08036@ligsg8.epfl.ch>; from "Fernando D. Mato Mira" at May 11, 94 11:12 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 
> Hello,
> 
>   What's the secret to get blended LODs working? It's not a problem
> of attribute setup, but rather of multisampling, I think. I've called
> multisample(TRUE) and mssize(4/8,24/32,0/1/4) and gconfig on an
> RE onyx but it doesn't work. Either the LODs just 'jump', or there's
> no transition at all, or (latest news) the LODs 'jump' being translucid
> all the time (no blending). getgconfig after gconfig tells me there's
> 0 sample buffers.

	If getgconfig(GC_MS_SAMPLES) returns 0 then you are not 
getting multisampling and will not get fade lod. To get multisampling
for a fullscreen VOF you need at least 2RM's. If you have but 1 then 
you need to run a smaller VOF.






From guest  Tue May 17 07:42:49 1994
From: "Stephen Joyce {75069}" <shj@swl.msd.ray.com>
Message-Id: <9405171442.AA21424@swlrgk>
To: info-performer@sgi.sgi.com
Status: O



  I'm trying to rebuild the perfly example source code using a pre-release of Performer 1.2 
(We have not received the official 1.2 release yet).

 I'm getting an unresolved link error with pfuCalcNodeBBox being unresolved.
Is there any way to get around this?

Thanks,
Steve Joyce


Exact error - 
---------------------------------------------------------------------------------------------------------------------------------------------------

{122} make
making OPT version of perfly
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../cmdline.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../../common/generic.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../../common/env.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../gui.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../keybd.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../perfly.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -c ../../common/main.c

uopt: Warning: u-code 3.15 instead of 3.17
        cc -xansi -D__STDC__ -I..  -I../../common  -I/usr/src/Performer/include  -I/usr/include/Performer -O -o perfly.OPT cmdline.o  generic.o  env.o  gui.o  keybd.o  perfly.o  main.o /usr/src/Performer/lib/libpfsgi.a  /usr/src/Performer/lib/libpfdwb.a  /usr/src/Performer/lib/libpfflt.a  /usr/src/Performer/lib/libpfutil.a  /usr/lib/libpf.a  /usr/lib/libpr.a -lmpc  -limage  -lfm  -lgl  -lX11  /usr/lib/libm.a  -lfpe  -lC
ld:
Unresolved:
pfuCalcNodeBBox
*** Error code 1 (bu21)

make: fatal error.
*** Error code 1 (bu21)

make: fatal error.
--------------------------------------------------------------------------------------------------------------------------------------------------


From guest  Tue May 17 08:37:55 1994
Message-Id: <9405171537.AA20240@surreal.asd.sgi.com>
To: "Stephen Joyce {75069}" <shj@swl.msd.ray.com>
Cc: info-performer@sgi.sgi.com
In-Reply-To: Your message of "Tue, 17 May 94 10:42:20 EDT."
             <9405171442.AA21424@swlrgk> 
Date: Tue, 17 May 94 08:37:46 -0700
From: Jim Helman <jimh@surreal>
Status: O

  
>  I'm getting an unresolved link error with pfuCalcNodeBBox being 
>  unresolved.  Is there any way to get around this?

It sounds like the perfly sample code which you are using is older
than the Performer release you are linking it with.

Just change pfuNodeCalcBBox() to pfuTravCalcBBox() in your source
code.  For naming consistency with the other utility traveral
routines, i.e. pfuTravPrintNodes(), pfuTravGLProf(),
pfuTravCountDB(), pfuTravCountNumVerts(), etc., pfuCalcNodeBBox()
was renamed pfuTravCalcBBox() for the released version of 1.2's
libpfutil.


rgds,

-jim helman

jimh@surreal.asd.sgi.com
415/390-1151






From guest  Tue May 17 10:04:16 1994
	id AA05253; Tue, 17 May 94 12:04:40 CDT  
From: aaron@skips.dseg.ti.com (Aaron M. Hightower)
Message-Id: <9405171704.AA05253@skips.dseg.ti.com>
Subject: Bounding boxes for dynamic GeoSets
To: iris-performer@sgi.sgi.com
Date: Tue, 17 May 94 12:04:40 CDT
X-Mailer: ELM [version 2.3 PL0]
Status: O

I am doing some special effects that involve modifying the geometry of a
GeoSet

My dag looks something like this

	    ViewState->Scenegroup
		 |     |
(group1 = LoadFile()) group2 -+- pfSwitch - pfGeode - pfGeoSet -+- pfGeoState
			      |- pfSwitch - pfGeode - pfGeoSet -|
			      |- pfSwitch - pfGeode - pfGeoSet -|
			      |- pfSwitch - pfGeode - pfGeoSet -|
			      |- pfSwitch - pfGeode - pfGeoSet -|
			      |- pfSwitch - pfGeode - pfGeoSet -|
			      |- pfSwitch - pfGeode - pfGeoSet -|
						...
			      |- pfSwitch - pfGeode - pfGeoSet -|

Each GeoSet is being modified as needed via a pfList of a structure like
this:

typedef struct {
  pfSwitch *sw;                 /* Whether or not this thing is being drawn */
  pfGeoSet *gset;                                  /* Geoset for this strip */
  pfVec3 *p;                                                  /* Two points */
  pfVec4 *c;                                                  /* Two colors */
} Tracer;

-------------------------------------------------------------------------

This all worked fine, but only when the origin was in view.  So I
figured that the bounding box was not being set when I modified the
geometry.  So I tried using pfNodeBSphere().

No luck.

So I disabled culling on the pfGroup:

    pfNodeTravMask(group2,PFTRAV_CULL,0,PFTRAV_SELF,PF_SET);

that contains all of the pfSwitches.  This worked, so I thought.  And
was good enough for the demo.

But problems remain.  I still suffer from the Geode disappearing when the
group1 object gets too far away from a channel.  And I would prefer a more
efficient solution if such exists (more efficient than disabling culling on
the subgraph).

-------------------------------------------------------------------------

So my questions are:

(1) How do I recompute BSpheres when modifying pfGeoSets as illustrated in
    the figure above?
(2) Why, when I am completely disabling culling on group2, does the Geometry
    still disappear when it should not?

-------------------------------------------------------------------------
         _                                                      _
Thanks, | |    *-------------------------------------------*   | |  
      __| |___ |  Aaron.Hightower@dseg.ti.com 214.575.6759 | __| |___
      \      / |      Simulation & Planning Technology     | \      /
       \_   /  |       6620 Chase Oaks Blvd  M/S 8518      |  \_   /
         \ (   |               Plano TX 75023              |    \ (
          \/   *-------------------------------------------*     \/



From guest  Tue May 17 20:12:52 1994
Message-Id: <9405172014.ZM6867@otto.gsaup.ucla.edu>
Date: Tue, 17 May 1994 20:14:21 -0700
X-Mailer: Z-Mail (3.0B.0 25aug93 MediaMail)
To: iris-performer@sgi.sgi.com
Subject: PTU info request #2
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O


Not too long ago I asked if there was any additional info regarding the
performer terrain utilities (ptu).  Specifically, I am interested in sample data
files.  There were none on the Performer 1.2 CD.  Do anybody at SGI have
something lying around we could experiment with?

Also, I would be interested in knowing if anybody has a need or has developed a
more advanced DXF loader for Performer.  Being an architecture school we do, but
wanted to check to see if there has been any activity in this area before we
begin - any comments?


Thanks




-- 

Scott A. Friedman (scott@gsaup.ucla.edu)

-- U.C.L.A. Graduate School of Architecture & Urban Planning --



From guest  Wed May 18 05:07:36 1994
From: suter@esar6.rsl.geogr.unizh.ch (Martin Suter)
Message-Id: <9405181205.AA06066@esar6.geogr.unizh.ch>
Subject: Re: PTU info request #2
To: iris-performer@sgi.sgi.com
Date: Wed, 18 May 1994 14:05:33 +0200 (MET DST)
Reply-To: suter@rsl.geogr.unizh.ch
X-Organization: Remote Sensing Laboratories, University of Zurich
X-Mailer: ELM [version 2.4 PL2]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Length: 1826
Status: O

 From suter Wed May 18 13:05:26 1994
 Subject: Re: PTU info request #2
 To: scott@gsaup.ucla.edu (Scott Friedman)
 Date: Wed, 18 May 1994 13:05:26 +0200 (MET DST)
 In-Reply-To: <9405172014.ZM6867@otto.gsaup.ucla.edu> from "Scott Friedman" at May 17, 94 08:14:21 pm
 Reply-To:          suter@rsl.geogr.unizh.ch
 Return-Receipt-To: suter@rsl.geogr.unizh.ch
 X-Organization: Remote Sensing Laboratories, University of Zurich
 X-Mailer: ELM [version 2.4 PL2]
 MIME-Version: 1.0
 Content-Type: text/plain; charset=US-ASCII
 Content-Length: 1258      
 
 According to Scott Friedman:
 > 
 > 
 > Not too long ago I asked if there was any additional info regarding the
 > performer terrain utilities (ptu).  Specifically, I am interested in sample data
 > files.  There were none on the Performer 1.2 CD.  Do anybody at SGI have
 > something lying around we could experiment with?
 > 
 
 There is a two volume CD from SGI around called "ONYX Greatest Hits". A sample
 application (satellite image flyover) using ptu is located on volume II. 
 Unfortunately the satellite image and DEM are located on volume I. So you can
 copy the data on disk as I did. I would be very interested, if the 
 application works on your SGI, since I didn't manage to run it properly.
 
 In addition I'd be interested if anyone has managed to get the 'perfly' sample
 program running with '.ptu' files. We noticed that 'LoadPtu' doesn't interpret the
 control file correctly.
 
 Any comments? 


-- 
Martin Suter                          suter@rsl.geogr.unizh.ch

Phone: +41 - 1 / 257 51 63            Remote Sensing Laboratories
FAX:   +41 - 1 / 362 52 27            University of Zurich                    
                                      Winterthurerstrasse 190                 
                                      CH-8057 Zurich; Switzerland 


From guest  Wed May 18 11:34:08 1994
Date: Wed, 18 May 1994 11:02:48 -0700 (PDT)
From: "Michael D. Good" <mdgood@netcom.com>
Sender: "Michael D. Good" <mdgood@netcom.com>
Reply-To: "Michael D. Good" <mdgood@netcom.com>
Subject: DXF reader and VR sensor tools for Performer
To: info-performer@sgi.sgi.com
Message-Id: <Pine.3.89.9405181105.A15164-0100000@netcom10>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Status: O

In response to Scott's question, we have developed a more advanced
DXF loader for Performer which we use in our virtual reality
consulting.  We have used it to perform flythroughs of architectural
data coming from the ARRIS CAD system.  It is not yet available as a
separate product, but that could change if there is sufficient
interest.

We have also developed a C++ class library for VR devices that is
now in beta test.  Currently it supports 10 devices, including
sensors from Ascension, Polhemus, Logitech, Spaceball, and Origin,
plus gloves from VPL and Virtex.  All are handled in a device-
independent way, including conversion of data into Performer's
coordinate system, via the base sensor class.  Filtering operations
such as origin offsets, tolerance levels, and scaling are also
included.  Device-dependent features can be accessed via the derived
class for each supported device.  We found this library made it easy
to add VR device control to Performer code.

We are looking for additional beta customers to help ensure that
this device software is usable with a variety of Performer
applications.  Versions are available for both IRIX 4.0.5 and 5.2,
running with SGI C++ 3.0.  If you are interested, please contact me
via e-mail.

Thanks,

Michael Good
Xtensory Inc
mdgood@netcom.com


From guest  Wed May 18 12:34:36 1994
Date: Wed, 18 May 94 21:34:20 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405181934.AA21065@ligsg8.epfl.ch>
To: iris-performer@sgi.sgi.com
Subject: spline MAGFILTER
Reply-To: matomira@epfl.ch
Status: O


Hello,

  Does anybody know the control points for a
nice spline for a magnification filter?

Thanks

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Wed May 18 18:17:58 1994
Message-Id: <9405190118.AA29116@mak.com>
To: info-performer@sgi.sgi.com
Subject: pfClone
Date: Wed, 18 May 94 21:18:42 -0400
From: Len Granowetter <lengrano@mak.mak.com>
Status: O


After pfCloning a node, is there any good way of finding the node
within the cloned graph that corresponds to a particular node in the
original graph?  (For instance a DCS that controls the articulation of
a piece of a vehicle model.)

			Thanks,
			   -Len Granowetter
			    MaK Technologies


From guest  Thu May 19 15:26:20 1994
Message-Id: <9405191111.ZM24648@unknown.zmail.host>
Date: Thu, 19 May 1994 11:11:58 +0100
In-Reply-To: aschaffe@holodeck.asd.sgi.com (Allan Schaffer) "IRIS Performer 1.2 released!" (Mar 23, 5:23pm)
References: <9403240123.AA06427@holodeck.asd.sgi.com>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: How to relect/mirror a Performer window
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hi

I have an application where I wish to relect or mirror
the viewport of a Performer window.  Specifically, I
need to do this for a home-grown HMD that requires
mirrored images for correct display, but also I can
imagine situations such as a car simulator, in which
the user sees a mirrored image representing the view
out the back window of the car simulator that they are
driving, in which it would be necessary to do this.

Anyone have any suggestions

Thanks
Richard



From guest  Thu May 19 15:26:24 1994
Date: Thu, 19 May 94 19:19:59+080
From: fair@iss.nus.sg (Kim Michael Fairchild)
Message-Id: <9405191119.AA02400@bochap>
To: info-performer@sgi.sgi.com
Subject: Problem with scaling with Intersections
Content-Length: 1416
Status: O

Hello,

I have found that reported intersections don't seem to pay any
attention to scale. 

For instance if I load the "canyon.flt" file and run a version of the
following code, 

  segset.segs[0].length = 1000.0f; 
  pfSetVec3(segset.segs[0].dir, 0.0f, 0.0f, -1.0f);
  segset.isectMask = intersectionMask;
  pfSetVec3(segset.segs[0].pos, vector[0], vector[1], vector[2]);

  isect = pfSegsIsectNode(ViewState->scene, &segset, hits);

I get a depth of about 300 meters when looking over the canyon. But when
I scale "canyon.flt" (e.g. by .1), I still get 300 meters for the
depth of the canyon. It is of course possible that I could save the
scale factor and multiple it by what ever I get from pfSegsIsectNode
to get the correct value but this seems quite clumsy. 

Since I could have multiple scale factors, I would then have to
traverse up the parent hierarchy looking for DCS or SCS type objects
and if finding them collect a cumulative multiplication to get the
scale. Alternative, I could of pre-collected the scale factors and
bind it to the top-level group but this still doesn't seem very
elegant. 

So, am I doing something wrong? In our applications, we typically will
scale something by 1000 or by .001 (since we have to convert stuff
from all sorts of formats). The default xformer collision detection
gets confused as well (although works reasonably well for smaller
scaling factors). 

thanks, Kim.


From guest  Thu May 19 15:26:18 1994
From: barham@gnarly.cs.nps.navy.mil (paul barham)
Message-Id: <9405191441.AA12404@gnarly.cs.nps.navy.mil>
Subject: Re: pfClone
To: lengrano@mak.mak.com (Len Granowetter)
Date: Thu, 19 May 1994 07:41:14 -0700 (PDT)
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405190118.AA29116@mak.com> from "Len Granowetter" at May 18, 94 09:18:42 pm
X-Mailer: ELM [version 2.4 PL22]
Content-Type: text
Content-Length: 1374      
Status: O

> 
> 
> After pfCloning a node, is there any good way of finding the node
> within the cloned graph that corresponds to a particular node in the
> original graph?  (For instance a DCS that controls the articulation of
> a piece of a vehicle model.)
> 
> 			Thanks,
> 			   -Len Granowetter
> 			    MaK Technologies
> 
> 

What version of Performer are you using?  I found that in v1.0 and v1.1
that the pfFindNode does not work so I wrote my own.  Basically, I had
pointers to the DCSs in the original.  After I cloned, I backward
traversed (pfGetParent) the original scene graph until I reached the top level
node that was cloned (storing the path on a stack as I went up).  I then
traversed downward using the names of the node stored on the stack one
level at a time.

If there is an easier way, I would like to know about it.

Hopefully, pfFindNode works in 1.2.



-- 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Paul T. Barham   Computer Specialist   Computer Graphics Research  +
+                                                                    +
+ Naval Postgraduate School                  barham@cs.nps.navy.mil  +
+ Computer Science Department, Code CS       Spanagel Hall Room 311A +
+ Monterey, Calfornia 93943                  (408)656-2253 (2814 fax)+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




From guest  Thu May 19 15:26:10 1994
Message-Id: <9405191546.AA29685@mak.com>
To: info-performer@sgi.sgi.com
Subject: Re: pfClone 
In-Reply-To: Your message of "Thu, 19 May 94 07:41:14 PDT."
             <9405191441.AA12404@gnarly.cs.nps.navy.mil> 
Date: Thu, 19 May 94 11:46:50 -0400
From: Len Granowetter <lengrano@mak.mak.com>
Status: O


>What version of Performer are you using?  I found that in v1.0 and v1.1
>that the pfFindNode does not work so I wrote my own.  Basically, I had
>pointers to the DCSs in the original.  After I cloned, I backward
>traversed (pfGetParent) the original scene graph until I reached the top level
>node that was cloned (storing the path on a stack as I went up).  I then
>traversed downward using the names of the node stored on the stack one
>level at a time.
>
>If there is an easier way, I would like to know about it.
>
>Hopefully, pfFindNode works in 1.2.

I am using Performer1.2, but pFind would not really help in this case,
since the nodeName of the desired node in the cloned graph would be
the same as the nodeName of the desired node in the original graph.
pfFind returns NULL when the name is ambiguous (more than one node with
the desired name).

Unfortunately, 1) there is no capability for passing a callback
function to pfClone and 2) pfFind does not have the capability for
passing it a root node indicating where to start the search.  If there
were, I could just run pfFind on the desired name, passing in the root
of the cloned subgraph as the starting node.  

Anyway, either writing a function that implements my #2 above, or one
that does what you suggest seem like the best ways to do this.  I had
been thinking along those lines as well but I thought I'd ask if I
was overlooking an easier solution first.
	
			     Thanks, 
			    	-Len Granowetter
				


From guest  Thu May 19 16:25:34 1994
Date: Thu, 19 May 94 16:26:53 -0700
From: shung@ernie.arc.nasa.gov (Felix Shung)
Message-Id: <9405192326.AA06474@ernie.arc.nasa.gov>
To: info-performer@sgi.sgi.com
Status: O

	I am trying to set up a single pipe, 3 channel simulation which is
based on Performer 1.2.   The viewing frustrums are created by the off_axis
projection command "pfMakePerspFrust", since the pilot's head movement
eventually will have influence on the eyepoint.(A device "Polhemus" will
provide the information about locations and orientations of the head)

Nevertheless, I am having problem that the scene shown in side window is
partially overlapped with the center window even though the offset rotation
angle is exactly what it should be.( defined in pfChanViewOffsets)
I rewrite the code with "pfChanFov" and kept every thing else the same,
the scenes of 3 windows matched perfectly this time.  I check the 
FOV created by "pfMakePerspFrust" and it is the same as what I used
in "pfChanFOV".  The eye location, the content of the scene shown in the
center window,  and the offset angle are the same in both cases.
What can go wrong?   Do I have to treat the "pfMakePerspFrust" differently
than "pfChanFOV" even, at this moment, no off-axis projection is really
happening?

			Felix


The following is the part of  my code:

   /* initialization */
      /* allocate space for the 3 viewing frustrum of the 3 channels */
                Shared->fr_chan1 = pfNewFrust(NULL);
                Shared->fr_chan2 = pfNewFrust(NULL);
                Shared->fr_chan3 = pfNewFrust(NULL);

	/* center window */
    Center = pfNewChan(Pipe);
    pfAllocChanData(Center, sizeof(PassData));
    pfChanCullFunc(Center, CullFunc);
    pfChanDrawFunc(Center, DrawFunc);

    pfChanViewport(Center, 0.f, 1.f, 0.66406250f, 0.99609375f);

    pfChanScene(Center, scene);
    pfChanESky(Center, eSky);

    pfChanNearFar(Center, Output->near, Output->far);

    pfMakePerspFrust(Shared->fr_chan1, Shared->off_proj.original_win.l,
                                   Shared->off_proj.original_win.r,
                                   Shared->off_proj.original_win.b,
                                   Shared->off_proj.original_win.t);
    pfFrustNearFar  (Shared->fr_chan1, Shared->off_proj.original_win.near,
                                   Shared->off_proj.original_win.far);


	/* left window */
        Left = pfNewChan(Pipe);

        pfAllocChanData(Left, sizeof(PassData));
        pfChanCullFunc(Left, CullFunc);
        pfChanDrawFunc(Left, DrawFunc2);
        pfChanViewport(Left, .0f,  1.f, 0.0f, 0.33203125f);
        pfChanScene(Left, scene);
        pfChanESky(Left, eSky);

        pfChanNearFar(Left, Output->near, Output->far);
        pfMakePerspFrust(fr_chan1, l,r, b, t);
        pfFrustNearFar  ( near, far);

	/* right window */
        Right = pfNewChan(Pipe);

        pfAllocChanData(Right, sizeof(PassData));
         pfChanCullFunc(Right, CullFunc);
        pfChanDrawFunc(Right, DrawFunc2);
        pfChanViewport(Right, 0.0f, 1.f, 0.33203125f, 0.66406250f);
        pfChanESky(Right, eSky);
        
        pfMakePerspFrust(fr_chan3, l, r, b, t); 
        pfFrustNearFar  (fr_chan3, near, far);

        pfAttachChan(Center, Left);
        pfAttachChan(Center, Right);

        /* Not sharing FOV and not sharing Near & Far clipping */
        share = pfGetChanShare(Center);
        pfChanShare(Center, (share & ~PFCHAN_FOV) & ~PFCHAN_NEARFAR);


   /*  real time loop */
   while(!terminate){
        /* include the head movement */
        offaxis_realtime(pol_x, pol_y, pol_z, pol_azi, pol_ele, pol_rol);

        /* redefine the l,r, b, t, near, far for 3 windows based on new */
        /* head movement */
        creating  structure updated_win information......



        /* CENTER window, center */
        pfFrustNearFar  (fr_chan1, new_near_center, new_far_center);
        pfMakePerspFrust(fr_chan1, Shared->off_proj.updated_win[1].l,
                                   Shared->off_proj.updated_win[1].r,
                                   Shared->off_proj.updated_win[1].b,
                                   Shared->off_proj.updated_win[1].t);
      


        /* include the head movement for the new eye point*/
        actual_viewpoint.xyz[0] =old_viewpoint.xyz[0] +
                                        Shared->head_trans_in_meter[0];
        actual_viewpoint.xyz[1] =old_viewpoint.xyz[1] +
                                        Shared->head_trans_in_meter[1];
        actual_viewpoint.xyz[2] =old_viewpoint.xyz[2] +
                                        Shared->head_trans_in_meter[2];

        pfChanView(Center, actual_viewpoint.xyz, Output->viewpoint.hpr);

        pfGetFrustFOV(fr_chan1, &hfov, &vfov);
        pfGetFrustEye(fr_chan1, eye);




        /* LEFT window */
                pfFrustNearFar  (fr_chan2,
                                  Shared->off_proj.updated_win[0].near,
                                  Shared->off_proj.updated_win[0].far);

                pfMakePerspFrust(fr_chan2,
                                  Shared->off_proj.updated_win[0].l,
                                  Shared->off_proj.updated_win[0].r,
                                  Shared->off_proj.updated_win[0].b,
                                  Shared->off_proj.updated_win[0].t);
                pfApplyFrust(fr_chan2);
                pfChanView(Left, actual_viewpoint.xyz, Output->viewpoint.hpr);

                pfChanViewOffsets(Left, chan2_xyz, chan2_hpr);


        /* RIGHT window */
                pfFrustNearFar  (fr_chan3,
                                  Shared->off_proj.updated_win[2].near,
                                  Shared->off_proj.updated_win[2].far);
                pfMakePerspFrust(fr_chan3,
                                  Shared->off_proj.updated_win[2].l,
                                  Shared->off_proj.updated_win[2].r,
                                  Shared->off_proj.updated_win[2].b,
                                  Shared->off_proj.updated_win[2].t);
                pfApplyFrust(fr_chan3);

                pfChanView(Right, actual_viewpoint.xyz, Output->viewpoint.hpr);
                pfChanViewOffsets(Right, chan3_xyz, chan3_hpr);
        

        /* start frame processing */
        pfFrame();
    }



From guest  Thu May 19 20:45:39 1994
From: aschaffe (Allan Schaffer)
Message-Id: <9405192033.ZM11678@holodeck.asd.sgi.com>
Date: Thu, 19 May 1994 20:33:19 -0700
In-Reply-To: Richard Gallery <gallery@prl.philips.co.uk>
        "How to relect/mirror a Performer window" (May 19, 11:11am)
References: <9403240123.AA06427@holodeck.asd.sgi.com> 
	<9405191111.ZM24648@unknown.zmail.host>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: Richard Gallery <gallery@prl.philips.co.uk>, info-performer@sgi.sgi.com
Subject: Re: How to relect/mirror a Performer window
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

On May 19, 11:11am, Richard Gallery wrote:
>
> I have an application where I wish to relect or mirror
> the viewport of a Performer window.  Specifically, I
> need to do this for a home-grown HMD that requires
> mirrored images for correct display, but also I can
> imagine situations such as a car simulator, in which
> the user sees a mirrored image representing the view
> out the back window of the car simulator that they are
> driving, in which it would be necessary to do this.

I haven't considered all of the possible side effects, but
you might try:

	pfScale(-1.0,1.0,1.0);

before pfDraw() in your channel draw callback.
Upon casual inspection, this seems to work ok..

You'll want to disable backface removal as well.
(You could -enable- frontface removal, though)

Allan



-- 
Allan Schaffer
Silicon Graphics
aschaffe@sgi.com



From guest  Fri May 20 09:51:46 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405201525.AA01159@tubes.asd.sgi.com>
Subject: Re: your mail
To: guest (Felix Shung)
Date: Fri, 20 May 94 8:25:57 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405192326.AA06474@ernie.arc.nasa.gov>; from "Felix Shung" at May 19, 94 4:26 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 	I am trying to set up a single pipe, 3 channel simulation which is
> based on Performer 1.2.   The viewing frustrums are created by the off_axis
> projection command "pfMakePerspFrust", since the pilot's head movement
> eventually will have influence on the eyepoint.(A device "Polhemus" will
> provide the information about locations and orientations of the head)
> 
> Nevertheless, I am having problem that the scene shown in side window is
> partially overlapped with the center window even though the offset rotation
> angle is exactly what it should be.( defined in pfChanViewOffsets)
> I rewrite the code with "pfChanFov" and kept every thing else the same,
> the scenes of 3 windows matched perfectly this time.  I check the 
> FOV created by "pfMakePerspFrust" and it is the same as what I used
> in "pfChanFOV".  The eye location, the content of the scene shown in the
> center window,  and the offset angle are the same in both cases.
> What can go wrong?   Do I have to treat the "pfMakePerspFrust" differently
> than "pfChanFOV" even, at this moment, no off-axis projection is really
> happening?
	
	This is probably an artifact of automatic aspect ratio matching of the 
view frustum to the viewport. If you specify both fov's to pfChanFOV,
then you disable this feature. Unfortunately, pfMakePerspFrust does 
not disable this feature so your frustum will be mangled. The 
solution is to disable aspect ratio matching by calling
pfChanAutoAspect(chan, PFFRUST_CALC_NONE) before calling
pfMakePerspFrust. 

Notes: 
	1. It is not necessary (or safe) to call pfApplyFrust. 
	2. When attaching channels in a group, the attachee inherits
	the values of the attacher so pfAttachChan(Center, Left)
	means that Left will grab the fov of Center. 





From guest  Fri May 20 09:35:46 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405201542.AA01190@tubes.asd.sgi.com>
Subject: Re: (Fwd) Fog implementation
To: guest (pierre VERCRUYSSE)
Date: Fri, 20 May 94 8:42:41 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9405101645.ZM594@cathy.rennes.sgi.com>; from "pierre VERCRUYSSE" at May 10, 94 4:45 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> He have watch the difference with the his application and perfly and he has
> conclude this summary and a lot of question ?
> 
> type of fog		Near		far		status
> 
> VtxLin,PixLin or	[1.0,1000.0]	1000.0		no problem, it'ok
> spline			if > 1000.0	8000.0		Problem why ??
> 
> VtxExp/VtxExp2		no variation of the fog when we change the near
> PixExp/PixExp2
> 
> 1. We don't seen what kind of value we can put on near ? and what is the
> minimum distance that i can define for the value "NEAR" of the interval for the
> fog ?

	Only linear and spline fog support a near fog distance.
I don't know why near > 1000 causes problems for spline fog.

> 
> 3. Thus he exist a relation between the distance of visibility, the dynnamic in
> z of the system and the dynamic about the BDD (step of discretisation) ?
> 
> My customer goes to the preparation of the ITEC and he told me that during the
> preparation about the demo of the shared database, He hav'nt seen a demo of
> performer with fog. Is it true or not ?

	perfly uses fog and has sliders for near/far distances and a 
menu button for fog type.  Try it. 





From guest  Fri May 20 09:52:42 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405201651.AA01311@tubes.asd.sgi.com>
Subject: Re: Layered Intensity Alpha sky texture.
To: guest (Vidar Storkersen)
Date: Fri, 20 May 94 9:51:25 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <9404201531.ZM11063@onyx.autosim.no>; from "Vidar Storkersen" at Apr 20, 94 3:31 pm
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> Hi,
> 
> I'm running Performer1.2alpha99 on an Onyx RE^2 (running Irix
> 5.2-ALPHA-1010931841).
> 
> In Multigen our Intensity Alpha sky texture looks nice, but when we are
> running our database in Performer the skies looks like they are layered.
> It is the Alpha part of the texture which is layered. There are just a few
> transparency levels.
> 
> In Multigen I tried to change the Internal format, from the default format
> to TX_IA8. Then I would still have a full speed texture, but with 256 levels
> of Alpha.
> 
> Again I tried to run our database in Performer. But still there where just a
> few levels of transparency.
> 
> At last I changed the internal format to TX_RGBA12 on the sky texture in
> Multigen. Then I would have 4096 levels of Alpha. (The only difference was
> that the Intenity part of the texture became blue in Multigen.) In Performer
> the Intensity part became blue (as in Multigen), but there where still just
> 16 transparency levels.
> 
> The last test is an indication that this problem has no origin in LoadFlt,
> since the Intensity part of the texture became blue in Performer.
> 
> My question is:
> Doesn't Performer allow you to have Intensity Alpha textures with more than
> 16 transparency levels.
> 
> If Performer allows more than 16 transparency levels:
> What can I do to get skies with more than 16 transparency levels
> TX_IA8 (256 transparency levels) will satisfy our needs for credible skyes.
> 

	The default Performer transparency mechanism uses multisampling
(see msalpha) for best performance. However, this looks worse than
the slower blendfunction type transparency. What you need to 
do is specify the higher quality transparency for
your sky. Find the gstate in question and:

	pfGStateMode(gstate, PFSTATE_TRANSPARENCY, PFTR_HIGH_QUALITY);





From guest  Fri May 20 09:54:32 1994
From: jrohlf@tubes (John Rohlf)
Message-Id: <9405201653.AA01319@tubes.asd.sgi.com>
Subject: Re: Setting EarthSky clear to transparent
To: guest (Kent Watsen)
Date: Fri, 20 May 94 9:53:27 PDT
Cc: info-performer@sgi.sgi.com
In-Reply-To: <199404201449.HAA24062@mail.netcom.com>; from "Kent Watsen" at Apr 20, 94 7:49 am
X-Mailer: ELM [version 2.3 PL8]
Status: O

> 
> 
> Hello,
> 
> I am trying to create an app with two overlapping channels.
> The "lower" channel manages the background (Earth/Sky) but
> no database.  The "top" channel will manage the database, but
> no Sky.  I hope to see through the top channel into the lower
> channel's background.  Setting the top channel's clear color's
> alpha to 1.0f should give me the effect I'm looking for, but
> it always display the rgb of the rgba clear color instead.
> 
> Any ideas?
> 
> Kent Watsen
> Watsen@netcom.com
> 
> 
> 
> 


	If you do not clear the top channel then you will
composite the top channel over the bottom. I'm not sure this
is what you want though.





From guest  Fri May 20 13:21:25 1994
Date: Fri, 20 May 94 22:21:20 +0200
From: matomira@lig.di.epfl.ch (Fernando D. Mato Mira)
Message-Id: <9405202021.AA27929@ligsg8.epfl.ch>
To: info-performer@sgi.sgi.com
Subject: PF_BLEND textures
Reply-To: matomira@epfl.ch
Status: O


I am mapping a texture on a terrain taken from an .iv file
(no vertex colors, just material), and PF_BLEND works OK
except for the transparency. When I set the corresp geostate
for transparent rendering, the thing just dissapears. Alpha
in the geostate material is 1.0 and the alpha component
of the texture is OK. Is this related to the multisampling
problem (only 1 RM on RE - What's an RM?). I am going
to try that fast transparency mode tomorrow. Otherwise,
am I missing anything or what?

Perf 1.2 IRIX 5.0.1

Thanks

Fernando D. Mato Mira				
Computer Graphics Lab                         	
Swiss Federal Institute of Technology (EPFL)	Phone    : +41 (21) 693 - 5248
CH-1015 Lausanne				FAX      : +41 (21) 693 - 5328
Switzerland					E-mail   : matomira@di.epfl.ch



From guest  Fri May 20 15:23:17 1994
From: hunt@gts.elan.af.mil (Tracy Hunt)
Message-Id: <9405201510.ZM7743@gts.elan.af.mil>
Date: Fri, 20 May 1994 15:10:32 -0700
X-Mailer: Z-Mail (2.1.5 20sep93)
To: info-performer@sgi.sgi.com
Subject: File size?????
Status: O

I am having a problem loading files into Performer using Loadflt.  I am loading 
a database in which most of the files are ~ 30K.  The file containing
the area of interest is 500k.  Performer loads the other file correctly up to
the larger file, then core dumps.  Is there a file size limit for Loadflt or
am I in the dark?

Tracy Hunt
hunt@gts.elan.af.mil



From guest  Sat May 21 12:26:41 1994
Message-Id: <199405211927.OAA14161@bert.eecs.uic.edu>
To: info-performer@sgi.sgi.com
Subject: Panel bg color changeable???
Status: O


Loving performer, but really wanting to change, disable, and
or make transparent the background panel in the pfuPanel stuff.

I have looked briefly for any obvious ways to do this, but no luck
yet.

Anybody done this yet?

ceder@eecs.uic.edu





From guest  Sat May 21 14:52:02 1994
From: "Michael Jones" <mtj@babar>
Message-Id: <9405211451.ZM1068@babar.asd.sgi.com>
Date: Sat, 21 May 1994 14:51:40 -0700
In-Reply-To: Christopher Cederwall <ceder@eecs.uic.edu>
        "Panel bg color changeable???" (May 21,  2:27pm)
References: <199405211927.OAA14161@bert.eecs.uic.edu>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: Christopher Cederwall <ceder@eecs.uic.edu>, info-performer@sgi.sgi.com
Subject: Re: Panel bg color changeable???
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

On May 21,  2:27pm, Christopher Cederwall wrote:
> Subject: Panel bg color changeable???
:
:Loving performer...

That's the spirit!  ;-)

:...but really wanting to change, disable, and
:or make transparent the background panel in the pfuPanel stuff.

Take a look at line 1091 in gui.c which is in the libpfutil source directory.
You'll see this source line:

   static pfVec3   clr ={.05,.3,.3};

Change it to the color of your dreams, and you'll be in good shape.


-- 

Be seeing you,      Phone:415.390.1455  Fax:415.390.2658 M/S:9U-590
Michael T. Jones    Silicon Graphics, Advanced Graphics Division
mtj@sgi.com         2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311





From guest  Sat May 21 20:03:51 1994
Message-Id: <199405220304.WAA17941@bert.eecs.uic.edu>
To: info-performer@sgi.sgi.com
Subject: Friends available by FTP ??
Status: O



Is the Friends Directory available by ftp from anywhere.

jimh brought it to my lab, but the onyx OS became corrupted somehow
and my sysadmin blew away the system and is rebuilding from scratch.

Can I easily regain the Friends material over the net?


thanks
chris.



From guest  Sat May 21 21:16:02 1994
From: "Michael Jones" <mtj@babar>
Message-Id: <9405212115.ZM2389@babar.asd.sgi.com>
Date: Sat, 21 May 1994 21:15:51 -0700
In-Reply-To: Christopher Cederwall <ceder@eecs.uic.edu>
        "Friends available by FTP ??" (May 21, 10:04pm)
References: <199405220304.WAA17941@bert.eecs.uic.edu>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: Christopher Cederwall <ceder@eecs.uic.edu>, info-performer@sgi.sgi.com
Subject: Re: Friends available by FTP ??
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

On May 21, 10:04pm, Christopher Cederwall wrote:
> Subject: Friends available by FTP ??
:
:Is the Friends Directory available by ftp from anywhere.
:Can I easily regain the Friends material over the net?

It's 155 Mbytes compressed and 380+ Mbytes in raw form.
This seems like quite a bit for us to distribute to nearly a
thousand sites over the Internet.

Suggestions?

-- 

Be seeing you,      Phone:415.390.1455  Fax:415.390.2658 M/S:9U-590
Michael T. Jones    Silicon Graphics, Advanced Graphics Division
mtj@sgi.com         2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311





From guest  Mon May 23 12:14:38 1994
From: marrou@vsl.ist.ucf.edu (Lance Marrou)
Message-Id: <9405231758.AA22487@crusader.vsl.ist.ucf.edu>
To: Len Granowetter <lengrano@mak.mak.com>, info-performer@sgi.sgi.com
Subject: Re: pfClone
Status: O

>Unfortunately, 1) there is no capability for passing a callback
>function to pfClone and 2) pfFind does not have the capability for
>passing it a root node indicating where to start the search.  If there
>were, I could just run pfFind on the desired name, passing in the root
>of the cloned subgraph as the starting node.  

I am not sure if someone as already responded to this, but here is my
solution for this problem.  As a new object is cloned, the top-level
DCS (or whatever the top-level node is) is named specifically.  That is,
the "clone" is attached to a specific name which is then thrown on the
scene graph.  You can then use pfGetNodeName for the current clone
name and attach the names of the DCSes to this top-level.  pfFindDCS does
take an argument, which is the path of the DCS.  I hope this makes sense,
if not let me know.  The following is an example (part of my code) which
finds the fulcrum DCS of an articulated AVLB using the top-level DCS
entity_dcs:

    // note that overhead and entity_dcs are class variables of type pfDCS

    char path[100];
    char name[100];

    strcpy(path, "/");
    if (pfGetNodeName(entity_dcs))
      {
      strcat(path, pfGetNodeName(entity_dcs));
      strcat(path, "/");
      }

    strcpy(name,path);
    overhead = pfFindDCS(strcat(name, "Fulcrum"));
    if (overhead == NULL)
      {
      fprintf(stdout,"Could not find overhead (Fulcrum) DCS.\n");
      fprintf(stdout,"\tlooking for: %s\n",name);
      fflush(stdout);
      }

_______________________________________________________
IST         __           E-mail: marrou@vsl.ist.ucf.edu
Visual     / /   ______  /\____ ______ ______          
Systems   / /   / _   / / __  // ____// ____/          
Lab      / /__ / /_/ / / / / // /___ / __/_   R. Marrou
________/____//____/\\/_/ /_//_____//_____/____________



From guest  Mon May 23 13:13:00 1994
Date: Mon, 23 May 94 16:13:00 EDT
From: rsilvers@nynexst.com (Rob Silvers)
Message-Id: <9405232013.AA02743@texas.nynexst.com>
To: info-performer@sgi.sgi.com
Subject: Please unsubscribe
Status: O


Please unsubscribe me,

	Thanks.


From guest  Tue May 24 00:45:14 1994
From: hirota@trl.ibm.co.jp
Message-Id: <9405240744.AA69219@ns.trl.ibm.com>
To: info-performer@sgi.sgi.com
Subject: .poly format
Date: Tue, 24 May 1994 16:44:56 +0900
Status: O

We are planning to use Prisms for modelling and Performer for visual
simulation. I heard ver 1.2 has loader for .poly format. Is this
polygon file format for Prisms?

Can this loader read color, normal, texture coordinate as well as
vertex coordinate if a .poly file has those optional info?

Thanks,
Gentaro


From guest  Tue May 24 02:24:27 1994
From: suter@esar9 (Martin Suter)
Message-Id: <9405240925.AA09855@esar9>
Subject: cout produces coredump
To: info-performer@sgi.sgi.com
Date: Tue, 24 May 1994 09:25:18 +0000 (MET)
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 316       
Status: O

I'm writing an importer to be used by the IRIS Performer
sample programs (e.g. perfly) and I'd like to use the
C++ style I/O (cout, cin). So I've edited LoadFile() 
in libpfsgi/loadfile.c to call my import-function.
As soon as I introduce any cout or cin statement in my importer
a coredump is produced.

Any hints?



From guest  Tue May 24 04:36:20 1994
Message-Id: <199405241135.EAA28482@sgi.sgi.com>
From: Robert Rossow <rossow@gsc.gsi.com>
Subject: Prisms???
To: info-performer@sgi.sgi.com
Date: Tue, 24 May 94 7:42:11 EDT
Mailer: Elm [revision: 66.25]
Status: O


In regard to the Prisms/Performer loader question, does
anyone know who I can contact regarding the Prisms modeler?

A phone number or an e-mail address?

Thanks in advance,

 Robert Rossow
 rossow@gsi.gsc.com



From guest  Tue May 24 05:45:53 1994
From: hirota@trl.ibm.co.jp
Message-Id: <9405241245.AA66604@ns.trl.ibm.com>
To: info-performer@sgi.sgi.com
Subject: .poly and Prisms
Date: Tue, 24 May 1994 21:45:33 +0900
Status: O

Roughly speaking, Prisms is an animation package like SoftImage or
Wavefront, and is developed by a Canadian company, Side Effects
Software Inc.

The software can save polygon data in an ascii file, whose format is
called ".poly".

I found in FAQ, that IRIS Performer 1.2 includes a file loader for
.poly.

Now, is this just coincidence?

-Gentaro


From guest  Tue May 24 08:35:10 1994
	id AA09535; Tue, 24 May 94 10:34:12 CDT  
Date: Tue, 24 May 94 10:34:12 CDT
From: reedwhit@skips.dseg.ti.com (Reed Whittington)
Message-Id: <9405241534.AA09535@skips.dseg.ti.com>
To: iris-performer@sgi.sgi.com
Subject: Problem with pickfly on 2 Pipe System
Status: O


We have been working with the pickfly example code trying to develop a target
tracker.  pickfly works fine on our single pipe Onyx RE2 wo MCO, but has 
problems on both of our 2 pipe Onyx RE2s w MCO.  

To recreate problem on a 2 pipe system:
pickfly somemodel.xxx       # this has problems 
pickfly -c 1 somemodel.xxx  # this works fine 

The symptom is this:  
pickfly lets you move and pick once and then no more mouse 
interaction is possible. 

Some information on our 2 Pipe Onyx RE2 w/ MCOs.

hinv:

4 150 MHZ IP19 Processors
CPU: MIPS R4400 Processor Chip Revision: 5.0
FPU: MIPS R4010 Floating Point Chip Revision: 0.0
Data cache size: 16 Kbytes
Instruction cache size: 16 Kbytes
Secondary unified instruction/data cache size: 1 Mbyte
Main memory size: 128 Mbytes, 2-way interleaved
I/O board, Ebus slot 9: IO4 revision 1
I/O board, Ebus slot 11: IO4 revision 1
Integral EPC serial ports: 4
RealityEngineII Graphics Pipe 1 at IO Slot 9 Physical Adapter 6 (Fchip rev 2)
Multi-Channel Option board installed
RealityEngineII Graphics Pipe 0 at IO Slot 11 Physical Adapter 2 (Fchip rev 2)
Integral Ethernet controller: et0, Ebus slot 11
Integral SCSI controller 91: Version WD33C95A
Integral SCSI controller 90: Version WD33C95A
Integral SCSI controller 1: Version WD33C95A
Disk drive: unit 1 on SCSI controller 1
Integral SCSI controller 0: Version WD33C95A
Tape drive: unit 7 on SCSI controller 0: QIC 150
Tape drive: unit 6 on SCSI controller 0: DAT
CDROM: unit 5 on SCSI controller 0
Integral EPC parallel port: Ebus slot 9
Integral EPC parallel port: Ebus slot 11
VME bus: adapter 0 mapped to adapter 45
VME bus: adapter 45

gfxinfo:

Graphics board 0 is "REV" graphics.
        Managed (":0.0") 1280x1024 
        Display 1280x1024 @ 60Hz
        12 GE (GE10 rev. 0x7)
        4 RM4 boards
        Large pixel depth
        10-bit RGBA pixels
        Not using Multi-Channel Option
Graphics board 1 is "REV" graphics.
        Managed (":0.1") 1280x1024 
        Display 1280x1024 @ 60Hz
        12 GE (GE10 rev. 0x7)
        2 RM4 boards
        Medium pixel depth
        10-bit RGBA pixels
        Not using Multi-Channel Option

uname -a:
IRIX snoopy 5.2 02282015 IP19 mips




From guest  Tue May 24 10:37:48 1994
Message-Id: <199405241737.KAA00832@sgi.sgi.com>
From: Robert Rossow <rossow@gsc.gsi.com>
Subject: Inexpensive Modelers?
To: info-performer@sgi.sgi.com
Date: Tue, 24 May 94 13:43:55 EDT
Mailer: Elm [revision: 66.25]
Status: O





Does anyone know of any (inexpensive) modelers capable of generating
hierarchical, texture mapped, polygonal and maybe even articulated 
objects for import to Performer?  

If so, do you have a phone number or company name/location so 
that I may contact them?

I am familiar with Multigen, but am looking for other less-expensive
alternatives.

Any suggestions?

Thanks,

Rob Rossow
rossow@gsi.gsc.com




From guest  Tue May 24 11:11:02 1994
Message-Id: <199405241810.LAA07711@sgi.sgi.com>
From: Robert Rossow <rossow@gsc.gsi.com>
Subject: Woops!
To: info-performer@sgi.sgi.com
Date: Tue, 24 May 94 14:16:28 EDT
Mailer: Elm [revision: 66.25]
Status: O


Woops...

I put rossow@gsi.gsc.com for my e-mail address.

Really it is rossow@gsc.gsi.com.  Sorry...


From guest  Tue May 24 11:28:47 1994
From: marrou@vsl.ist.ucf.edu (Lance Marrou)
Message-Id: <9405241827.AA08832@crusader.vsl.ist.ucf.edu>
To: Robert Rossow <rossow@gsc.gsi.com>, info-performer@sgi.sgi.com
Subject: Re:  Inexpensive Modelers?
Status: O

>I am familiar with Multigen, but am looking for other less-expensive
>alternatives.

Have you heard/thought about ModelGen?  It is the lower cost modeling
option.  I do not know the specifics, but I think the lesser used
options such as Dfad/Dted and a few others are omitted.
_______________________________________________________
IST         __           E-mail: marrou@vsl.ist.ucf.edu
Visual     / /   ______  /\____ ______ ______          
Systems   / /   / _   / / __  // ____// ____/          
Lab      / /__ / /_/ / / / / // /___ / __/_   R. Marrou
________/____//____/\\/_/ /_//_____//_____/____________



From guest  Tue May 24 06:01:45 1994
From: "knut" <knut@knut.oslo.sgi.com>
Message-Id: <9405241324.ZM1016@knut.oslo.sgi.com>
Date: Tue, 24 May 1994 13:24:05 -0600
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: Pointing devices
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hello

I have a customer that needs an extaernal pointing device attaced to his
Onyx RE2 .

He needs to stand 10 -20 feet away from the screen ( Barco Heads Up ) and
point with a "laser mouse" on the screen (wall).

Does any of you know about a device like this ?

Wher can I advice my customer to go to ?


-- 
-------------------------------------------------
-               Knut Ivar Foshaug               -
-       Email:  knut@oslo.sgi.com              -
-       Tlf:    +47 22 73 00 29                 -
-       Mailstop: INO-335                       -
-       VoiceMail: 5-8600                       -
-------------------------------------------------





From guest  Tue May 24 14:44:13 1994
From: "Caroline Roback {70787}" <cbr@swl.msd.ray.com>
Message-Id: <9405242142.AA19010@swlrgp>
To: info-performer@sgi.sgi.com
Subject: performer users group
Status: O


I'm interested in subscribing to the Performer users group forum.
Please send me information on how I go about doing this.

                        Thank You,
                        Caroline        email address: cbr@swl.msd.ray.com



From guest  Wed May 25 03:48:55 1994
Date: Wed, 25 May 94 18:54:39+080
From: fair@iss.nus.sg (Kim Michael Fairchild)
Message-Id: <9405251054.AA18362@bochap.iss.nus.sg>
To: info-performer@sgi.sgi.com
Subject: real-time video in texture memory
Content-Length: 254
Status: O

Hi,

Is it possible to get video into texture memory on a reality-engine? I
would like do something like you see in "the 7th guest" cd-rom game,
so I would like to be able to take a video source and "play" it into a
texture.  

possible?

thanks, Kim.



From guest  Wed May 25 05:56:10 1994
Message-Id: <9405251255.AA22816@merl.com>
Organization: Mitsubishi Electric Research Laboratories, Inc.
	Cambridge, Massachusetts, USA
X-Sender: barrus@mailhost.merl.com
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Wed, 25 May 1994 08:55:54 -0400
To: fair@iss.nus.sg (Kim Michael Fairchild)
From: barrus@merl.com (John W. Barrus)
Subject: Re: real-time video in texture memory
Cc: info-performer@sgi.sgi.com, stro@merl.com
Status: O

>Hi,
>
>Is it possible to get video into texture memory on a reality-engine? I
>would like do something like you see in "the 7th guest" cd-rom game,
>so I would like to be able to take a video source and "play" it into a
>texture.
>
>possible?
>
>thanks, Kim.

We were told that the Sirius video board from SGI (~$25,000) would allow
video in texture.  Unfortunately, the board we ordered more than 6 months
ago still has not shipped because they are still ironing out hardware bugs.
The latest date given for shipment is the end of May, but I'm not holding
my breath.

I don't believe there are any other options for SGI hardware.

John B.


                    -------------------------

John Barrus                                     barrus@merl.com

Mitsubishi Electric Research Laboratories       617.621.7535 (VOICE)
201 Broadway                                    617.621.7550 (FAX)
Cambridge, MA  02139




From guest  Wed May 25 09:03:43 1994
From: "JAVIER CASTELLAR" <javier@aladdin.madrid.sgi.com>
Message-Id: <9405251525.ZM1709@aladdin.madrid.sgi.com>
Date: Wed, 25 May 1994 15:25:28 +0000
X-Mailer: Z-Mail-SGI (3.0S.1016 16oct93 MediaMail)
To: watsen@netcom.com, info-performer@sgi.sgi.com, srf@sgi.sgi.com
Subject: Re: Accumulation buffer
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hi all,
	I have read your mails regarding the accumulation buffer worng function.

	The reason IS: If you are working on a Reality Engine you should take
care about TWO issues:
	1st) Which RGBsize are you using ? By default Reality Engine works with
12bits per component (as in your case). The right sizes for the accumulation
components will be 12 or 24 (NOT 8 or 16). Then in your case acsize(12) or
acsize(24) is OK.
	2nd) You can work with acsize(24) only if you have enought framebuffer
free. If you are working with SMALL pixel depth (one case is 1280x1024 vof with
1RM),depending on the use of other features (z buffer, stencil ...) you will be
able to work with acsize(24).
	With SMALL pixel you can:
		with Zbuffer: ONLY with acsize(12);
		w/o Zbuffer: acsize(12) and zcsize(24);
	With MEDIUM and LARGE: No problem, no limitations.

	If you wish to work with acsize(24) and Zbuffer in an 1RM Reality
Engine, the only way is to use the 960x680 vof. Then you can obtain MEDIUM
PIXEL.

	In general the acsize(12) is usable for most of the VisSim tricks that i
know (static Backgrounds, panning, sprites ... etc).

	USE acsize(12) !!!!

	If you try to use acsize(16) with RGBsize at 12 bits per component, it
will work IN CPU, IN SOFTWARE, (1/100 to 1/10000 of the speed). Then you should
match the RGBsize or the acsize, but in your case acsize(12) will be enough in
any case.

Hope to help.



						Javier Castellar
						javier@madrid.sgi.com
						Silicon Graphics Spain







From guest  Thu May 26 05:42:20 1994
	for portal!sgi.com!info-performer id AA00507; Wed, 25 May 94 09:58:06 -0700
From: "Andy Bushnell" <ab@gandalf.coryphaeus.com>
Message-Id: <9405250958.ZM25189@gandalf.coryphaeus.com>
Date: Wed, 25 May 1994 09:58:04 -0700
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: Inexpensive Modelers ?
Cc: rossow@gsc.gsi.com
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

 
> Does anyone know of any (inexpensive) modelers capable of generating
> hierarchical, texture mapped, polygonal and maybe even articulated
> objects for import to Performer?
>
> If so, do you have a phone number or company name/location so
> that I may contact them?
>
> I am familiar with Multigen, but am looking for other less-expensive
> alternatives.
>
> Any suggestions?
>
> Thanks,
>
> Rob Rossow
> rossow@gsi.gsc.com


Coryphaeus Software Inc, Los Gatos, CA, produces the only integrated suite of
VisSim Tools in the industry. Our main products are...

    o Designer's Workbench (DWB)
      This is a 3D vis-sim modeler & real-time animation package. As a taster
      it it a mixed-model Motif/Glx app with virtual sphere manipulation of the
      model and includes materials, texture mapping, hierarchical structure
      display with "drag & drop" editing, Node attribute pages,
      LODS, light points, animation sequences & a *PUBLIC DOMAIN* database
      format that matches Performer's in-memory structures very well.
      DWB also has an option for attributing behaviour to any Node in the
	       database. These links will transfer across to any Performer app
      seamlessly. A DWB  performer loader is available in source along with a
      Performer Writer (write out any Performer tree as a DWB file). It is
      modern object-oriented software, fully featured & inexpensive.

    o Easy Terrain (EZT)
      Stand alone terrain modeling package. Convert DMA DTED & DFAD, USGS DLG &
      DEMs. Build terrain databases from scratch using fractal, regular grids -
      modify with adaptive delanauy etc.etc.

    o EasyScene
      Performer based IG rendering software. Load DWB (or any format files
      supported by Performer). Set eye points, weather, full object scripting
      capabilities, comms interfaces, all  done without any programming - edit
      a simple text file to set up & run your simulation. Used as the IG engine
      for a just-delivered 4 channel driving simulator to the Transport
Accident
      Commission of Victoria, Australia.

I am Product manager for DWB & EZT. For technical info call/email me. For
pricing sales info call Bill Oliver, Director of sales & marketing. numbers..

tel: (408) 395 4537
fax: (408) 395 6351


regards,



Andy Bushnell






From guest  Wed May 25 13:03:49 1994
Message-Id: <199405252003.NAA23004@sgi.sgi.com>
From: Robert Rossow <rossow@gsc.gsi.com>
Subject: Anyone Looking for an Engineer?
To: info-performer@sgi.sgi.com
Date: Wed, 25 May 94 15:44:07 EDT
Mailer: Elm [revision: 66.25]
Status: O


Hello Performer-Folks!

I am currently a senior software engineer at a CAD/CAM company in
Connecticut.  My background is mainly in 3D graphics using GL,
Starbase, Hoops, Renderman and many home-grown shading/rendering
algorithms.  My skills include fluent C++, C and Fortran on IRIX
and HP-UX (as well as some PC and MAC stuff too).  I have also
had extensive exposure to X and Motif, as well as various 3D 
input devices.

I recently purchased a 24-bit Indy with the C, C++ and Performer
development packages.  I am currently learning the interface
to the Performer API (pretty cool I might add!).  I am highly 
motivated, and have a deep appreciation for computer graphics.
I have a dual BS in computer science and mathematics, and am 
nearly done with my MS in computer science.

In any case, I would like to relocate to another position which 
allows me to utilize these skills.  Specifically, I would like
to be part of a development team using the Performer API.
Location is not a problem!

If anyone has any recommendations or employment opportunities,
I would be more than happy to fax my resume and any required
references.


Thanks for your consideration,

Robert Rossow
rossow@gsc.gsi.com

(203)-648-8145




From guest  Wed May 25 13:25:04 1994
Date: Wed, 25 May 94 16:24:54 EDT
From: metivier@sanders.com (Todd Metivier)
Message-Id: <9405252024.AA07970@rocket>
To: info-performer@sgi.sgi.com
Subject: HMD
Status: O





  I'm currently looking into using helmet mounted
displays and/or booms with my Performer applications.
I would be very interested to know what systems and 
drivers people have used and the degree of complexity 
and success the systems provided. Factors such as
software integration, resolution, comfort, cost
and vendor support are of particular interest.

 Any insight would be very much appreciated.
Thanks,

Todd Metivier              | ARPA: metivier@sanders.com
Lockheed Sanders           | UUCP: ...!uunet!sanders.com!metivier
PTP2-A001                  |
65 River Road		   | Voice: (603) 885-9026
Hudson, NH 03051           | Fax:   (603) 885-0631



From guest  Wed May 25 14:01:22 1994
From: "Graham (Grambo) Beasley" <graham@beast>
Message-Id: <9405251401.ZM2025@beast.asd.sgi.com>
Date: Wed, 25 May 1994 14:01:11 -0700
In-Reply-To: metivier@sanders.com (Todd Metivier)
        "HMD" (May 25,  4:24pm)
References: <9405252024.AA07970@rocket>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: metivier@sanders.com (Todd Metivier)
Subject: Re: HMD
Cc: info-performer@sgi.sgi.com
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

I have given away sample code for the Polhemus Fast-trac tracker, with RS-232
interface.  This code has been used successfully by about 100 different
integrators and is available in the public domain (e-mail me if problems
getting a hold of a copy).  Other tracker vendors supply their own drivers for
SGI workstations, (I don't know why Polhemus does not!). I don't feel too
comfortable endorsing or ragging on 3rd party V.R. equipment, but would really
recommend that you get your local SGI office to get you a copy of "the SGI
virtual Reality CD", this has loads of info on VR stuff in it, including
addresses of most equipment suppliers, slides, documentation, etc.

Graham Beasley

On May 25,  4:24pm, Todd Metivier wrote:
> Subject: HMD
>
>   I'm currently looking into using helmet mounted
> displays and/or booms with my Performer applications.
> I would be very interested to know what systems and
> drivers people have used and the degree of complexity
> and success the systems provided. Factors such as
> software integration, resolution, comfort, cost
> and vendor support are of particular interest.
>
>  Any insight would be very much appreciated.
> Thanks,
>
> Todd Metivier              | ARPA: metivier@sanders.com
> Lockheed Sanders           | UUCP: ...!uunet!sanders.com!metivier
> PTP2-A001                  |
> 65 River Road		   | Voice: (603) 885-9026
> Hudson, NH 03051           | Fax:   (603) 885-0631
>
>
>
>-- End of excerpt from Todd Metivier




-- 

"Do not follow where the path may lead.  Go instead where there is
no path and leave a trail."

----------------------------------------------------------------------
Graham (Grambo) Beasley		Silicon Graphics, Inc.
MTS (Simulator Guy)		(415) 390-5420		graham@sgi.com
----------------------------------------------------------------------




From guest  Wed May 25 17:39:33 1994
Date: Wed, 25 May 94 17:40:27 -0700
From: stimpy@niesten.arc.nasa.gov (William Briggs)
Message-Id: <9405260040.AA03087@niesten.arc.nasa.gov>
To: info-performer@sgi.sgi.com
Subject: pfSegsIsectNode
Status: O

I am using Performer 1.0 for 4.0.5 on a SkyWriter--no RE.
I am projecting a segment from the tip of my virtual
finger and intersecting virtual objects with 
pfSegsIsectNode.  This works fine.

Now I would like to report the range of those objects 
from my finger.  According to the manual, the pfIsect 
contains a pfSeg which should contain the length of 
the clipped intersecting pfSeg.  I leave the discriminator
callback NULL, so 

> the behavior is the same as if the discriminator
> returned PFTRAV_CONT | PFTRAV_IS_CLIP_END, so that the intersection
> nearest the start of the segment will be returned.

However, the length of that pfSeg is always the full
length of my original pfSeg.  I need that clipped length.

-------------------+------------------------------+------------------------
William Briggs     | MailStop 262-2               | "The computer screen
NASA Ames Research | PO Box 1000                  |  has become the retina
(415) 604-6438     | Moffett Field, CA 94035-1000 |  of the mind's eye." 
-------------------+------------------------------+------------------------



From guest  Thu May 26 02:33:53 1994
Message-Id: <9405260648.AA07085@surreal.asd.sgi.com>
To: stimpy@niesten.arc.nasa.gov (William Briggs)
Cc: info-performer@sgi.sgi.com
Subject: Re: pfSegsIsectNode 
In-Reply-To: Your message of "Wed, 25 May 94 17:40:27 PDT."
             <9405260040.AA03087@niesten.arc.nasa.gov> 
Date: Wed, 25 May 94 23:48:38 -0700
From: Jim Helman <jimh@surreal>
Status: O

There is a bug in the libpfutil code for emulating the old
1.0/1.1 intersection API (pfuSegsIsectNode).  The result
is that end clipping is not enabled unless you specify a
discriminator callback which does so.  The fix is to add
such a discriminator callback or change line 153 of
libpfutil/isect.c:

	old:	retVal = PFTRAV_CONT;
	new:	retVal = PFTRAV_CONT|PFTRAV_IS_CLIP_END;

However, that's not an issue here since you are using
pfSegsIsectNode directly (as all new code should be).
Perhaps you are looking at the request (i.e. the pfSegSet)
rather than at the data returned in the pfHit.  The pfSeg
returned in the pfHit structure is is clipped, but the
pfSegSet itself is read-only so the request can be static
and reused.

rgds,

-jim helman

jimh@surreal.asd.sgi.com
415/390-1151









From guest  Thu May 26 09:55:58 1994
From: <darin@paradox.idec.sdl.usu.edu> (Darin "The Dude" Partridge)
Message-Id: <9405261056.ZM11680@paradox.idec.sdl.usu.edu>
Date: Thu, 26 May 1994 10:56:13 -0600
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: faces, faces, faces
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Beginner Alert!!!

I'm a beginner with performer but I have already imported several
terrain databases from satellite image data.

In making the databases, I convert to Wavefront (.obj) files and then
use my modified obj loader that came with 1.2.  Everything is working
fine but now I'm trying to put trees (and other things) on the terrain
and I need to know how to make a 'face' that always faces the camera.
I know I can do it, or something similar, since in village and town
they appear to be doing the same thing with their trees and parking
meters.

I don't have the manuels and the on-line stuff we have is not installed
right so I have a hard time figuring things out.

Thanks for any help,

Darin
(darin@chaos.idec.sdl.usu.edu)



From guest  Thu May 26 10:16:42 1994
From: "Michael Jones" <mtj@babar>
Message-Id: <9405261016.ZM11690@babar.asd.sgi.com>
Date: Thu, 26 May 1994 10:16:21 -0700
In-Reply-To: <darin@paradox.idec.sdl.usu.edu> (Darin "The Dude" Partridge)
        "faces, faces, faces" (May 26, 10:56am)
References: <9405261056.ZM11680@paradox.idec.sdl.usu.edu>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: <darin@paradox.idec.sdl.usu.edu> (Darin "The Dude" Partridge),
        info-performer@sgi.sgi.com
Subject: Re: faces, faces, faces
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

On May 26, 10:56am,  (Darin The Dude Partridge) wrote:
> Subject: faces, faces, faces
:Beginner Alert!!!
:
:I'm a beginner with performer but I have already imported several
:terrain databases from satellite image data.
:
:In making the databases, I convert to Wavefront (.obj) files and then
:use my modified obj loader that came with 1.2.  Everything is working
:fine but now I'm trying to put trees (and other things) on the terrain
:and I need to know how to make a 'face' that always faces the camera.
:I know I can do it, or something similar, since in village and town
:they appear to be doing the same thing with their trees and parking
:meters.
:
:I don't have the manuels and the on-line stuff we have is not installed
:right so I have a hard time figuring things out.

You'll want to get a the manuals. They come with 1.2 and we worked
too hard writing them for you not te be enjoying their information.

That notwithstanding, what you want are pfBillboard nodes. They
provide an automatic rotation of geometry (that is in the XZ plane
and which points in the +Y direction) to follow the eyepoint.

Here's the man-page you lack:




pfBillboard(3pf)   IRIS	Performer 1.2 libpf Reference Pages   pfBillboard(3pf)



NAME
     pfNewBboard, pfBboardPos, pfGetBboardPos, pfBboardMode, pfGetBboardMode,
     pfBboardAxis, pfGetBboardAxis - Create and	update automatic rotation
     billboard nodes.

C SPECIFICATION
     #include <Performer/pf.h>

     pfBillboard *   pfNewBboard(void);

     void	     pfBboardPos(pfBillboard* bill, long i, pfVec3 pos);

     void	     pfGetBboardPos(pfBillboard* bill, long i, pfVec3 pos);

     void	     pfBboardMode(pfBillboard* bill, long mode,	long val);

     long	     pfGetBboardMode(pfBillboard* bill,	long mode);

     void	     pfBboardAxis(pfBillboard* bill, pfVec3 axis);

     void	     pfGetBboardAxis(pfBillboard* bill,	pfVec3 axis);

DESCRIPTION
     A pfBillboard is a	pfGeode	in which each pfGeoSet rotates to follow the
     eyepoint.	Billboards are useful for complex objects which	are roughly
     symmetrical about one or more axes.  The billboard	tracks the viewer by
     rotating about an axis or a point to present the same image to the	viewer
     using far fewer polygons than a solid model.  A classic example is	a a
     textured billboard	of a single quadrilateral representing a tree.

     A pfBillboard can contain any number of pfGeoSets.	 pfGeoSets are added
     to	and removed from the pfBillboard using the pfAddGSet and pfRemoveGSet
     routines for pfGeodes.  Each pfGeoSet rotates independently to follow the
     viewer.  By convention, the pfGeoSet is rotated about the +Z axis so that
     the +Y axis points	towards	the eye	point.

     pfNewBboard creates and returns a handle to a new pfBillboard.

     pfBboardPos specifies the position	pos for	the pfGeoSet with index	i.
     pfGetBboardPos copies the position	of the pfGeoSet	with index i into pos.

     Billboards	can either rotate about	an axis	or a point.  Axial billboards
     rotate about the axis specified by	pfBboardAxis().	 The rotation is about
     the origin	(0,0,0)	of the pfGeoSet.  In all cases,	the geometry is
     modeled in	the XZ plane, with +Y forward.	When rendered, the billboard
     is	rotated	so that	the -Y axis points back	to the eye point.  The +Z axis
     is	the pfGeoSet's axis of rotation.

     An	axial rotate billboard is specified by setting the PFBB_ROT mode of
     the billboard to the value	PFBB_AXIAL_ROT using pfBboardMode.  The	axis
     of	rotation (x, y,	z) is specified	using pfBboardAxis.




									Page 1






pfBillboard(3pf)   IRIS	Performer 1.2 libpf Reference Pages   pfBillboard(3pf)



     pfGetBboardAxis returns the axis of the pfBillboard.

     Point rotate billboards are useful	for spherical objects or special
     effects such a smoke.  They come in two varieties depending on how	the
     the remaining rotational degree of	freedom	is determined (rotating	the -Y
     axis towards the eye, still leaves	an arbitrary rotation about the
     pfGeoSet's	Y axis).  If the PFBB_ROT mode on the billboard	is set to
     PFBB_POINT_ROT_EYE, the billboard is rotated so that the +Z axis of the
     pfGeoSet stays upright on the screen.  If the PFBB_ROT mode on the
     billboard is set to PFBB_POINT_ROT_WORLD, the billboard is	rotated	so
     that the angle between the	+Z axis	of the pfGeoSet	and axis specified
     with pfBboardAxis is minimized.

     Both PFBB_AXIAL_ROT and PFBB_POINT_ROT_WORLD billboards may "spin"	about
     the Y axis	of the pfGeoSet	when viewed along the rotation or alignment
     axis.

     After the first pfSync, the number	of pfGeoSets, the number and length of
     the primitives, and planarity of the vertices should not be changed.

     Some database formats may place a transformation above each billboard for
     positioning it.  As with a	pfGeode	containing a small amount of geometry,
     having many billboards with transformation	matrices above them can	be
     expensive.

     Since billboards always rotate towards the	eyepoint, billboards in
     adjacent channels with the	same eyepoint have the same orientation.
     Channels with different eyepoints will have different billboard
     orientations.

     When database sorting is enabled (PFCULL_SORT is set by pfChanTravMode)
     and a pfBillboard node has	no pre or post draw callback (see
     pfNodeTravFuncs), then it will be drawn after opaque geometry to improve
     pixel fill	rate and to reduce artifacts resulting from blended
     transparency (see pfTransparency).

BUGS
     Intersection traversals do	not support intersection with billboards.

     pfFlatten only transforms the position of a billboard, not	the axis.

     Normals are not transformed.

     Only axes of +X, +Y and +Z	are supported

SEE ALSO
     pfChanTravMode, pfFindBboard, pfFlatten, pfNode, pfNodeTravFuncs,
     pfScene, pfTransparency







									Page 2




-- 

Be seeing you,      Phone:415.390.1455  Fax:415.390.2658 M/S:9U-590
Michael T. Jones    Silicon Graphics, Advanced Graphics Division
mtj@sgi.com         2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311





From guest  Thu May 26 15:10:13 1994
From: aaron@qbert.dseg.ti.com (Aaron Hightower)
Subject: pfPartition
To: iris-performer@sgi.sgi.com
Date: Thu, 26 May 1994 17:12:53 -0500 (CDT)
X-Mailer: ELM [version 2.4 PL23]
Content-Type: text
Content-Length: 1367      
Status: O

-------------------
From jim helman:
-------------------
Subject: Re: Large MultiGen/Performer databases
Date: Wed, 20 Apr 94 20:11:23 -0700

It's always best to spatially organize the scene graph
for culling.  pfPartitions speed up intersection
traversals, e.g. terrain following, but do not affect
culling.                                ^^^^^^^^^^^^^

rgds,

-jim helman
-------------------
From the man page:
-------------------

DESCRIPTION
  A pfPartition is a type of pfGroup which organizes the scene graphs of
  its children into a static data structure which can be more efficient for
  culling and intersections.
  ^^^^^^^
--------------------

Which is accurate?  What does a pfPartition *really* do?  What, specifically,
is a pfPartition?  Does it modify its children?  Does it splice (divide)
geometry into pieces?  Does it make culling more efficient?

Thanks in advance,
         _                                                      _
Later,  | |    *-------------------------------------------*   | |  
      __| |___ |  Aaron.Hightower@dseg.ti.com 214.575.6759 | __| |___
      \      / |      Simulation & Planning Technology     | \      /
       \_   /  |       6620 Chase Oaks Blvd  M/S 8518      |  \_   /
         \ (   |               Plano TX 75023              |    \ (
          \/   *-------------------------------------------*     \/


From guest  Fri May 27 03:10:18 1994
From: hodeckes@VNET.IBM.COM
Message-Id: <199405271010.DAA05745@sgi.sgi.com>
Date: Fri, 27 May 94 06:09:31 EDT
To: info-performer@sgi.sgi.com
Subject: Textures
Status: O

Here are a few questions I have specific to Performer's texturing and
coplanar polygons.

I am running with the Performer Version 1.2

1. How can I find out how much Texture Memory is being used and how much
   is still available, under program control.

2. How can I get a Texture to reflect changes to the image array
   specified in the pfTexImage function call in real-time?  I have not
   been successful getting the Texture to change after its initial
   creation, even though the image array has changed.

3. Finally, I am seeing coplanar flashing of polygons in the ocean of
   a terrain database.  The swapping seems to be ocurring between the
   polygons of the ocean and the Performer earth model.  Is this
   possible?

Thanks,

Steve Hodecker
Loral Federal Systems
hodeckes@lfs.loral.com


From guest  Fri May 27 13:16:01 1994
Message-Id: <9405271318.ZM5033@otto.gsaup.ucla.edu>
Date: Fri, 27 May 1994 13:18:06 -0700
X-Mailer: Z-Mail (3.0B.0 25aug93 MediaMail)
To: info-performer@sgi.sgi.com
Subject: mailing list
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

please subscribe me to the performer mailing list

Thanks
Bye




From guest  Mon May 30 13:34:17 1994
From: grap@itia.mi.cnr.it
Organization: C.N.R.-I.T.I.A. 
Message-Id: <9405301217.AA04600@vib4.itia.mi.cnr.it>
Subject: subscript_me
To: info-performer@sgi.sgi.com
Date: Mon, 30 May 94 12:17:36 "MET"
Cc: all@vib4.itia.mi.cnr.it
Mailer: Elm [revision: 70.85]
Status: O

I am an Performer's new user.
Please, subscrib me and send to me any information that can help me.

AS SOON AS POSSIBLE

Tanks!!!--

 ---------------------------------------------------------------------
|		        _?_		    			      |
|	Marco Sacco    /. .\	| I.T.I.A - CNR			      |
|	Via Betti 85  {	 |  }	| National Research Council of Italy  |
|	20151 Milano   \ - /	| V.le Lombardia, 20/A	              |
|	ITALY		\_/     | 20131 Milano ITALY		      |	
|				|				      |
|				| grap@itia.mi.cnr.it		      |
|	Tel. +39 2 38008149	| 				      |
|				| Tel. +39 2 70633449		      |
|				| Fax.  39 2 2665558		      |
 --------------------------------------------------------------------- 




From guest  Tue May 31 17:20:40 1994
From: "Drew Hess" <dhess@vision.arc.nasa.gov>
Message-Id: <9405311720.ZM4168@airy.arc.nasa.gov>
Date: Tue, 31 May 1994 17:20:33 -0700
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: pfuPath routines
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

I am looking for documentation or (preferably) some example code that details
the use of the pfuPath routines in libpfu.  I realize that libpfu is
unsupported and subject to change in future releases, but I am hoping that
someone out there has made good use of these routines.  I've started by looking
at the path.c source for libpfu, but some actual examples of its use would be
helpful.

Thanks

-dwh-
dhess@vision.arc.nasa.gov




From guest  Tue May 31 18:11:24 1994
From: "Michael Jones" <mtj@babar>
Message-Id: <9405311811.ZM20736@babar.asd.sgi.com>
Date: Tue, 31 May 1994 18:11:08 -0700
In-Reply-To: "Drew Hess" <dhess@vision.arc.nasa.gov>
        "pfuPath routines" (May 31,  5:20pm)
References: <9405311720.ZM4168@airy.arc.nasa.gov>
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: "Drew Hess" <dhess@vision.arc.nasa.gov>, info-performer@sgi.sgi.com
Subject: Re: pfuPath routines
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

On May 31,  5:20pm, Drew Hess wrote:
> Subject: pfuPath routines

:I am looking for documentation or (preferably) some example code that details
:the use of the pfuPath routines in libpfu.

man pfupath is the first source.  The idea is that a path is a list of
segments,
each of which is either a vector or an arc.  The handy thing is that if you set
a radius of curvature, the path routines will make an arc for you that joins
the two vectors.  This is how the truck is sent about the performer town demo.

:I realize that libpfu is
:unsupported and subject to change in future releases, but I am hoping that
:someone out there has made good use of these routines.  I've started by
looking
:at the path.c source for libpfu, but some actual examples of its use would be
:helpful.

If you develop improvements for the path logic send it to us and we'll include
it in future releases of IRIS Performer.

Here are the path-related excerpts from the "IRIS Performer Town" demo that's
in buttonfly in the demos account.  That demo uses a version of perfly that
takes names of models and their paths from the command line (via the "A"
keyword) and maintains a list of vehicles based on this information.  Once the
argument list has been processed, a trip is made through the list to load each
model with a pfDCS node above it and to load its path definition as well.
Finally, each model is advanced along the path by one time step in the main
simulation loop.  Here are the code fragments:

==================================================================
=  handy structure definition used later in code
==================================================================

/* autopilot vehicle support */
typedef struct
{
    char modelName[PF_MAXSTRING];
    char pathName[PF_MAXSTRING];
    char vehicleName[PF_MAXSTRING];
    pfDCS *dcs;
    pfuPath *path;
    pfVec3 xyz;
    pfVec3 hpr;
} Vehicle;

#define	MAX_VEHICLES	32
Vehicle vehicle[MAX_VEHICLES] = {"", "", "", NULL, NULL, {0,0,0}, {0,0,0}};
long vehicles = 0;

==================================================================
=  parse vehicle definitions: remember vehicles and paths
==================================================================

    /* process command-line arguments */
    while ((opt = getopt(argc, argv, OptionStr)) != -1)
    {
	/* specify "autopilot" vehicle */
	case 'A':
	    {
	    if (vehicles < MAX_VEHICLES)
	    {
		/* initialize vehicle defininition */
		vehicle[vehicles].modelName[0] = '\0';
		vehicle[vehicles].pathName[0] = '\0';
		sprintf(vehicle[vehicles].vehicleName, "%d", vehicles);
		vehicle[vehicles].dcs = NULL;
		vehicle[vehicles].path = NULL;

		/* parse file names from argument */
		sscanf(optarg, "%[^,],%[^,],%s",
		    vehicle[vehicles].modelName,
		    vehicle[vehicles].pathName,
		    vehicle[vehicles].vehicleName);

		/* increment vehicle count */
		vehicles++;
	    }
	    else
		pfNotify(PFNFY_INFO, PFNFY_PRINT,
		    "Too many autopilot vehicles");
	    }
	    break;

==================================================================
=  pass through vehicle list: loading vehicles and paths
==================================================================

    /* load each of the autopilot vehicles */
    for (i = 0; i < vehicles; i++)
    {
	long j;

	/* has file already been loaded ? */
	for (j = 0, root = NULL; j < i && root == NULL; j++)
	    if (strcmp(vehicle[i].modelName, vehicle[j].modelName) == 0)
		root = pfGetChild(vehicle[j].dcs, 0);

	/* load named file */
	if (root == NULL)
	    root = LoadFile(vehicle[i].modelName, NULL);
	Loaded = 0;

	/* create new vehicle and attach model to it */
	if (root != NULL)
	{
	    /* load database */
	    vehicle[i].dcs = pfNewDCS();
	    pfAddChild(vehicle[i].dcs, root);
	    pfAddChild(scene, vehicle[i].dcs);

	    /* load path */
	    vehicle[i].path = pfuNewPath();
	    pfuAddFile(vehicle[i].path, vehicle[i].pathName);
	}
    }

==================================================================
=  advance each vehicle during each trip through the simulation
==================================================================

	/* simulate each autopilot vehicle */
	for (i = 0; i < vehicles; i++)
	    if (vehicle[i].dcs != NULL && vehicle[i].path != NULL)
	    {
		/* advance along path */
		pfuFollowPath(vehicle[i].path,
		    1.0/pfGetFrameRate(),
		    vehicle[i].xyz,
		    vehicle[i].hpr);

		/* update vehicle DCS */
		pfDCSRot(vehicle[i].dcs,
		    vehicle[i].hpr[PF_H],
		    vehicle[i].hpr[PF_P],
		    vehicle[i].hpr[PF_R]);
		pfDCSTrans(vehicle[i].dcs,
		    vehicle[i].xyz[PF_X],
		    vehicle[i].xyz[PF_Y],
		    vehicle[i].xyz[PF_Z]);
	    }


-- 

Be seeing you,      Phone:415.390.1455  Fax:415.390.2658 M/S:9U-590
Michael T. Jones    Silicon Graphics, Advanced Graphics Division
mtj@sgi.com         2011 N. Shoreline Blvd., Mtn. View, CA 94039-7311






From guest  Tue May 31 19:08:08 1994
	id AA10582; Tue, 31 May 94 21:07:56 CDT  
Date: Tue, 31 May 94 21:07:56 CDT
From: reedwhit@skips.dseg.ti.com (Reed Whittington)
Message-Id: <9406010207.AA10582@skips.dseg.ti.com>
To: iris-performer@sgi.sgi.com
Subject: Fun with pfChanPick
Status: O


Dear Performer group people,

I'm looking for help with pfChanPick.

I have been working with pfChanPick in a target designation 
application.  I found that pfChanPick fails if a pfSwitch (ON or OFF)
is between the scene root and the primitive I want to pick.  

I also have found that pfChanViewOffsets don't get accounted for
in pfChanPick.

Are these known problems and can you suggest a work around?

As always, Thanks for your help.

--Reed




