[Fresco-devel] [ReFresco 06] 3d support in the scene graph

Nathaniel Smith <[email protected]> Fri, 2 Jul 2004 20:02:25 -0700
Newsgroups gmane.comp.video.fresco.devel
Message-ID <[email protected]>
(Some comments at the end of the meeting yesterday reminded me I
wanted to make this proposal...)

ReFresco 06: 3d support in the scene graph
==========================================

(Note the "scene graph" in the title.  Here we are _not_ talking about
providing GL to clients; certainly we want a way to say "here, have a
chunk of screen to blast accelerated 3d at", but this is a separate
problem.  The topic of this ReFresco is how to handle 3d GUI widgetry
that wants to use the Fresco scene graph model.)

First, let's take as a point of departure that since computer monitors
are 2d, and all useful existing GUIs are 2d, we want to support 2d as
the basic thing.  I'm not saying that we don't want to support 3d, but
creating a real 3d GUI is an entire research project; it shouldn't be
our first priority.

That said, we could still do what we've done to day: make the entire
system "sorta-3d", i.e. all vectors have 3 coordinates, etc.  I'd
argue against this approach.  2d-with-layering and 3d-with-occlusion
have thoroughly different semantics; it confuses things to have all
these vectors with 0 z-component, which is in fact ignored by the
layout stuff, and it doesn't actually make sense to mix them up with
solid objects anyway.

What makes much more sense, and has a clean semantics, is to have both
3d subgraphs and 2d subgraphs.  A 3d subgraph can be the child of a
"pane" 2d graphic, and a 2d subgraph can be the texture of a 3d
graphic.  In this scheme, you know when you have 2d semantics, you
know when you have 3d semantics, and you have clear places to describe
how they interact.

This approach also clearly breaks down the problem into pieces; it's
possible to get 2d working without dealing with 3d at all, for
instance -- this is useful for getting things working quickly, and
also in the long run for things like embedded implementations that
would like to eschew 3d altogether.

(I suppose I should mention somewhere that this is exactly the
approach taken by Microsoft's Avalon, though the idea came up in our
discussions years before they ever published anything...)

-- Nathaniel

-- 
Damn the Solar System.  Bad light; planets too distant; pestered with
comets; feeble contrivance; could make a better one myself.
  -- Lord Jeffrey