Shawn,

>
> How about H/W texture compression?

        This will be in the list for 1.4.

> I didn't see projected textures either.  Sure would like to have that!
> (for shadows, headlights, etc.)

        If I understand correctly, TexCoord4f is the missing piece for doing
        projective textures. We are adding TexCoord4f in 1.3.


Charmaine Lee
Java3D Engineering Team



>
>
> Charmaine Lee wrote:
>
> >> The problem with using DECAL is that the surface is not shaded in DECAL
> >> mode.
> >
> >         True. You can only use MODULATE in the first texture unit state
> >         to attenuate the texture color. Doing DECAL in the second
> >         texture unit state will only control the amount of blend between
> >         the two textures, the primary color is lost for the
> >         second texture.
> >
> >
> >
> >> Could you give more explaination of COMBINE as well as "advanced
> >> texturing" coming in Java3D 1.3.
> >>
> >
> >         We are still in the process of doing the spec for 1.3 right now.
> >         So nothing is final yet. The preliminary list of advanced texture
> >         features going into Java3D 1.3 includes,
> >         . cube environment mapping
> >         . anisotropic filtering
> >         . texture LOD & texture LOD bias
> >         . ImageComponent subimage modification
> >         . Texture Environment COMBINE
> >         . detail texture, sharpen texture, texture filter4
> >         . TexCoord4f
> >
> >         The new COMBINE texture mode allows you to define a general
> >         operation of how colors are combined in a texture unit state.
> >         In particular, it allows you to specify where the colors are derived
> >         from for the operation, they can be from texture, primary color,
> >         constant color or result of previous texture unit.
> >
> >         For example,
> >         currently, as mentioned above, primary color is only available
> >         to texture unit 0, but with COMBINE mode, you can specify primary
> >         color as one of the arguments to the MODULATE mode in the nth
> >         texture unit.
> >         Hence if you want to apply two textures 0.4*TexA and (1-0.4)*TexB to
one
> >         shape, with the new COMBINE mode, what you can do is first
> >         use DECAL to blend the two textures according to the alpha factor
> >         using the first two texture units,
> >         and then assign MODULATE as the combine mode in the third texture
unit
> >         with arg0 coming from the previous texture unit and arg1 coming from
> >         the primary color. The last step will effectively apply lighting
> >         to the blended textures.
> >
> >         Another being proposed combine mode is DOT3, which allows you
> >         to do dot product of two arguments. This can be used to do
> >         bump mapping.
> >
> >         We are working on the specification right now. More details
> >         will be available when the specification is ready for review.
> >         So stay tuned :)
> >
> > -Charmaine
> >
> >
> >
> >
> >
> >>> Shawn,
> >>>
> >>>
> >>>
> >>>> This example (as well as Java3D) will blend between two textures.
> >>>> However, you can not set the amount of blend, it's always 50/50.
> >>>
> >>>
> >>> Yes, the example that I included in the previous mail is just meant to
> >>> show Mike how multiple textures can be applied to a shape node in Java3D.
> >>>
> >>>
> >>>
> >>>
> >>>> And can you control the amount of blend/alpha (ex texture1.alpha = .2)
> >>>> directly - other than the actual alpha of each pixels?
> >>>
> >>>
> >>> Currently, you need to use the DECAL texture mode and use the
> >>> texture alpha value to control the amount of blend of the two textures.
> >>> In Java3D1.3, we are proposing a new COMBINE texture mode which will
> >>> give you more control on how to combine textures or how to combine
> >>> primary color with texture in general.
> >>>
> >>>
> >>> -Charmaine Lee
> >>> Java3D Engineering Team
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>> Charmaine Lee wrote:
> >>>>
> >>>>  > Mike,
> >>>>  >
> >>>>  >      You can use multiple texture unit states to blend multiple
> >>>>  >      textures onto a shape.  Included in the attachment is an
> >>>>  >      example of multi texturing in Java3D.
> >>>>  >
> >>>>  > -Charmaine Lee
> >>>>  > Java3D Engineering Team
> >>>>  >
> >>>>  >
> >>>>  >
> >>>>  >
> >>>>  >
> >>>>  >> X-Originating-IP: [128.187.171.43]
> >>>>  >> Mime-Version: 1.0
> >>>>  >> X-OriginalArrivalTime: 14 Feb 2001 22:50:46.0351 (UTC)
> >>>>  >
> >>>>  > FILETIME=[916FF5F0:01C096D8]
> >>>>  >
> >>>>  >> Date: Wed, 14 Feb 2001 15:03:13 -0800
> >>>>  >> From: Michael Smith <[EMAIL PROTECTED]>
> >>>>  >> Subject: [JAVA3D] texture map blending
> >>>>  >> To: [EMAIL PROTECTED]
> >>>>  >>
> >>>>  >> Java3D people,
> >>>>  >>      I'm doing research in image morphing and animation.  I'd like
> >>>> to know
> >>>>  >> how you would recommend handling the problem of blending two
different
> >>>>  >> textures onto a shape (triangulated grid) in Java3d.  We'd like to do
> >>>
> > it
> >
> >>>>  >> taking advantage of java3d's hardware acceleration if we can.
> >>>>  >>      I've looked through the documentation on Java3D and couldn't
find
> >>>>  >> anything that I thought would work for this.  The BLEND option in the
> >>>>  >> TextureAppearance class only works with regaurd to the blend color.
> >>>>  >>      One thing we've done in the past was to paint the first texture
> >>>> map at
> >>>>  >> a fraction of it's value (ex texture1.alpha = .2 ) and then paint
> >>>> the second
> >>>>  >> texture map on top of that with a the rest of the value(
> >>>> texture2.alpha = .8
> >>>>  >> ).  I don't know how you would do this in java3d.
> >>>>  >>      I would be most grateful for any advice you would have.
> >>>>  >>
> >>>>  >> -Mike Smith.
> >>>>  >> _________________________________________________________________
> >>>>  >> Get your FREE download of MSN Explorer at http://explorer.msn.com
> >>>>  >>
> >>>>  >>
> >>>>
===========================================================================
> >>>>  >> To unsubscribe, send email to [EMAIL PROTECTED] and include in
> >>>> the body
> >>>>  >> of the message "signoff JAVA3D-INTEREST".  For general help, send
> >>>> email to
> >>>>  >> [EMAIL PROTECTED] and include in the body of the message "help".
> >>>>  >>
> >>>>  >>
> >>>>  >>
> >>>
> > ------------------------------------------------------------------------
> >
> >>>>  >>
> >>>>  >> /*
> >>>>  >>  *      @(#)MultiTextureTest.java 1.8 01/01/11 07:40:34
> >>>>  >>  *
> >>>>  >>  * Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights
Reserved.
> >>>>  >>  *
> >>>>  >>  * Sun grants you ("Licensee") a non-exclusive, royalty free,
> >>>> license to use,
> >>>>  >>  * modify and redistribute this software in source and binary code
> >>>
> > form,
> >
> >>>>  >>  * provided that i) this copyright notice and license appear on all
> >>>> copies of
> >>>>  >>  * the software; and ii) Licensee does not utilize the software in a
> >>>> manner
> >>>>  >>  * which is disparaging to Sun.
> >>>>  >>  *
> >>>>  >>  * This software is provided "AS IS," without a warranty of any
> >>>> kind. ALL
> >>>>  >>  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
> >>>> INCLUDING ANY
> >>>>  >>  * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
> >>>> PURPOSE OR
> >>>>  >>  * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS
> >>>> SHALL NOT BE
> >>>>  >>  * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
> >>>> MODIFYING
> >>>>  >>  * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
> >>>> SUN OR ITS
> >>>>  >>  * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
> >>>> DIRECT,
> >>>>  >>  * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
> >>>> HOWEVER
> >>>>  >>  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
> >>>> THE USE OF
> >>>>  >>  * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
> >>>>  >>  * POSSIBILITY OF SUCH DAMAGES.
> >>>>  >>  *
> >>>>  >>  * This software is not designed or intended for use in on-line
> >>>> control of
> >>>>  >>  * aircraft, air traffic, aircraft navigation or aircraft
> >>>> communications; or in
> >>>>  >>  * the design, construction, operation or maintenance of any nuclear
> >>>>  >>  * facility. Licensee represents and warrants that it will not use or
> >>>>  >>  * redistribute the Software for such purposes.
> >>>>  >>  */
> >>>>  >>
> >>>>  >> import com.sun.j3d.utils.image.TextureLoader;
> >>>>  >> import com.sun.j3d.utils.geometry.Box;
> >>>>  >> import com.sun.j3d.utils.behaviors.vp.*;
> >>>>  >> import java.applet.Applet;
> >>>>  >> import java.awt.*;
> >>>>  >> import java.awt.event.*;
> >>>>  >> import com.sun.j3d.utils.applet.MainFrame;
> >>>>  >> import com.sun.j3d.utils.universe.*;
> >>>>  >> import javax.media.j3d.*;
> >>>>  >> import javax.vecmath.*;
> >>>>  >> import java.awt.image.BufferedImage;
> >>>>  >>
> >>>>  >> public class MultiTextureTest extends Applet implements ItemListener{
> >>>>  >>
> >>>>  >>   Choice choice;
> >>>>  >>   TextureUnitState textureUnitState[] = new TextureUnitState[2];
> >>>>  >>   Texture stoneTex;
> >>>>  >>   Texture skyTex;
> >>>>  >>   Texture lightTex;
> >>>>  >>
> >>>>  >>   private java.net.URL stoneImage = null;
> >>>>  >>   private java.net.URL skyImage = null;
> >>>>  >>
> >>>>  >>     private SimpleUniverse u = null;
> >>>>  >>
> >>>>  >>   public Texture createLightMap(){
> >>>>  >>
> >>>>  >>     int width = 128;
> >>>>  >>     int height = 128;
> >>>>  >>     BufferedImage bimage = new BufferedImage(width, height,
> >>>> BufferedImage.TYPE_INT_RGB);
> >>>>  >>     int [] rgbArray = new int[width * height];
> >>>>  >>     int index, index2;
> >>>>  >>     int rgbInc = 256 / (width / 2 - 20);
> >>>>  >>     int rgbValue = 0;
> >>>>  >>     int k = width/2 - 5;
> >>>>  >>     int i, j, rgb;
> >>>>  >>
> >>>>  >>     rgb = 0xff;
> >>>>  >>     rgbValue = rgb | (rgb << 8) | (rgb << 16) | (rgb << 24);
> >>>>  >>     for ( i = width / 2 - 1, j = 0; j < 10; j++, i--) {
> >>>>  >>          rgbArray[i] = rgbValue;
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     for (; i > 8; i--, rgb -= rgbInc) {
> >>>>  >>          rgbValue = rgb | (rgb << 8) | (rgb << 16) | (rgb << 24);
> >>>>  >>          rgbArray[i] = rgbValue;
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     for (; i >= 0; i--) {
> >>>>  >>          rgbArray[i] = rgbValue;
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     for (i = 0; i < width/2; i++) {
> >>>>  >>          rgbValue = rgbArray[i];
> >>>>  >>          index = i;
> >>>>  >>          index2 = (width - i - 1);
> >>>>  >>          for (j = 0; j < height; j++) {
> >>>>  >>               rgbArray[index] = rgbArray[index2] = rgbValue;
> >>>>  >>               index += width;
> >>>>  >>               index2 += width;
> >>>>  >>          }
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     bimage.setRGB(0, 0, width, height, rgbArray, 0, width);
> >>>>  >>
> >>>>  >>
> >>>>  >>     ImageComponent2D grayImage = new
> >>>> ImageComponent2D(ImageComponent.FORMAT_RGB, bimage);
> >>>>  >>
> >>>>  >>     lightTex = new Texture2D(Texture.BASE_LEVEL, Texture.RGB, width,
> >>>> height);
> >>>>  >>     lightTex.setImage(0, grayImage);
> >>>>  >>
> >>>>  >>     return lightTex;
> >>>>  >>   }
> >>>>  >>
> >>>>  >>
> >>>>  >>   public BranchGroup createSceneGraph() {
> >>>>  >>     // Create the root of the branch graph
> >>>>  >>     BranchGroup objRoot = new BranchGroup();
> >>>>  >>
> >>>>  >>     // Create a Transformgroup to scale all objects so they
> >>>>  >>     // appear in the scene.
> >>>>  >>     TransformGroup objScale = new TransformGroup();
> >>>>  >>     Transform3D t3d = new Transform3D();
> >>>>  >>     t3d.setScale(0.4);
> >>>>  >>     objScale.setTransform(t3d);
> >>>>  >>     objRoot.addChild(objScale);
> >>>>  >>
> >>>>  >>     TransformGroup objTrans = new TransformGroup();
> >>>>  >>     //write-enable for behaviors
> >>>>  >>     objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >>>>  >>     objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
> >>>>  >>     objTrans.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
> >>>>  >>     objScale.addChild(objTrans);
> >>>>  >>
> >>>>  >>     Appearance ap = new Appearance();
> >>>>  >>
> >>>>  >>     // load textures
> >>>>  >>     TextureAttributes texAttr1 = new TextureAttributes();
> >>>>  >>     texAttr1.setTextureMode(TextureAttributes.DECAL);
> >>>>  >>     TextureAttributes texAttr2 = new TextureAttributes();
> >>>>  >>     texAttr2.setTextureMode(TextureAttributes.MODULATE);
> >>>>  >>
> >>>>  >>     TextureLoader tex = new TextureLoader(stoneImage, new
> >>>> String("RGB"), this);
> >>>>  >>     if (tex == null)
> >>>>  >>         return null;
> >>>>  >>     stoneTex = tex.getTexture();
> >>>>  >>
> >>>>  >>     tex = new TextureLoader(skyImage, new String("RGB"), this);
> >>>>  >>     if (tex == null)
> >>>>  >>         return null;
> >>>>  >>     skyTex = tex.getTexture();
> >>>>  >>
> >>>>  >>     lightTex = createLightMap();
> >>>>  >>
> >>>>  >>
> >>>>  >>     textureUnitState[0] = new TextureUnitState(stoneTex, texAttr1,
> >>>> null);
> >>>>  >>
> >>>> textureUnitState[0].setCapability(TextureUnitState.ALLOW_STATE_WRITE);
> >>>>  >>
> >>>>  >>     textureUnitState[1] = new TextureUnitState(lightTex, texAttr2,
> >>>> null);
> >>>>  >>
> >>>> textureUnitState[1].setCapability(TextureUnitState.ALLOW_STATE_WRITE);
> >>>>  >>
> >>>>  >>     ap.setTextureUnitState(textureUnitState);
> >>>>  >>
> >>>>  >>     //Create a Box
> >>>>  >>     Box BoxObj = new Box(1.5f, 1.5f, 0.8f, Box.GENERATE_NORMALS |
> >>>>  >>                             Box.GENERATE_TEXTURE_COORDS, ap, 2);
> >>>>  >>     // add it to the scene graph.
> >>>>  >>     objTrans.addChild(BoxObj);
> >>>>  >>
> >>>>  >>     BoundingSphere bounds =
> >>>>  >>       new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
> >>>>  >>
> >>>>  >>     //Shine it with two lights.
> >>>>  >>     Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f);
> >>>>  >>     Color3f lColor2 = new Color3f(0.2f, 0.2f, 0.1f);
> >>>>  >>     Vector3f lDir1  = new Vector3f(-1.0f, -1.0f, -1.0f);
> >>>>  >>     Vector3f lDir2  = new Vector3f(0.0f, 0.0f, -1.0f);
> >>>>  >>     DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
> >>>>  >>     DirectionalLight lgt2 = new DirectionalLight(lColor2, lDir2);
> >>>>  >>     lgt1.setInfluencingBounds(bounds);
> >>>>  >>     lgt2.setInfluencingBounds(bounds);
> >>>>  >>     objScale.addChild(lgt1);
> >>>>  >>     objScale.addChild(lgt2);
> >>>>  >>
> >>>>  >>     // Let Java 3D perform optimizations on this scene graph.
> >>>>  >>     objRoot.compile();
> >>>>  >>
> >>>>  >>     return objRoot;
> >>>>  >>   }
> >>>>  >>
> >>>>  >>   public MultiTextureTest (){
> >>>>  >>   }
> >>>>  >>
> >>>>  >>   public MultiTextureTest(java.net.URL stoneURL, java.net.URL skyURL)
{
> >>>>  >>     stoneImage = stoneURL;
> >>>>  >>     skyImage = skyURL;
> >>>>  >>   }
> >>>>  >>
> >>>>  >>   public void init() {
> >>>>  >>     if (stoneImage == null) {
> >>>>  >>       // the path to the image for an applet
> >>>>  >>       try {
> >>>>  >>         stoneImage = new java.net.URL(getCodeBase().toString() +
> >>>>  >>                                       "../images/stone.jpg");
> >>>>  >>       }
> >>>>  >>       catch (java.net.MalformedURLException ex) {
> >>>>  >>         System.out.println(ex.getMessage());
> >>>>  >>         System.exit(1);
> >>>>  >>       }
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     if (skyImage == null) {
> >>>>  >>       // the path to the image for an applet
> >>>>  >>       try {
> >>>>  >>         skyImage = new java.net.URL(getCodeBase().toString() +
> >>>>  >>                                     "../images/bg.jpg");
> >>>>  >>       }
> >>>>  >>       catch (java.net.MalformedURLException ex) {
> >>>>  >>         System.out.println(ex.getMessage());
> >>>>  >>         System.exit(1);
> >>>>  >>       }
> >>>>  >>     }
> >>>>  >>
> >>>>  >>     setLayout(new BorderLayout());
> >>>>  >>     GraphicsConfiguration config =
> >>>>  >>        SimpleUniverse.getPreferredConfiguration();
> >>>>  >>
> >>>>  >>     Canvas3D c = new Canvas3D(config);
> >>>>  >>     add("Center", c);
> >>>>  >>
> >>>>  >>     // create the gui
> >>>>  >>     choice = new Choice();
> >>>>  >>     choice.addItem("stone + light");
> >>>>  >>     choice.addItem("stone");
> >>>>  >>     choice.addItem("lightMap");
> >>>>  >>     choice.addItem("sky");
> >>>>  >>     choice.addItem("stone + sky");
> >>>>  >>     choice.addItemListener(this);
> >>>>  >>     add("North", choice);
> >>>>  >>
> >>>>  >>     BranchGroup scene = createSceneGraph();
> >>>>  >>     u = new SimpleUniverse(c);
> >>>>  >>
> >>>>  >>     ViewingPlatform viewingPlatform = u.getViewingPlatform();
> >>>>  >>     // This will move the ViewPlatform back a bit so the
> >>>>  >>     // objects in the scene can be viewed.
> >>>>  >>     viewingPlatform.setNominalViewingTransform();
> >>>>  >>
> >>>>  >>     // add orbit behavior but disable translate
> >>>>  >>     OrbitBehavior orbit =
> >>>>  >>         new OrbitBehavior(c, OrbitBehavior.DISABLE_TRANSLATE);
> >>>>  >>     BoundingSphere bounds =
> >>>>  >>         new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
> >>>>  >>     orbit.setSchedulingBounds(bounds);
> >>>>  >>     viewingPlatform.setViewPlatformBehavior(orbit);
> >>>>  >>
> >>>>  >>     u.addBranchGraph(scene);
> >>>>  >>   }
> >>>>  >>
> >>>>  >>     public void destroy() {
> >>>>  >>         u.removeAllLocales();
> >>>>  >>     }
> >>>>  >>
> >>>>  >>   public void itemStateChanged(ItemEvent e)
> >>>>  >>   {
> >>>>  >>     int index = choice.getSelectedIndex();
> >>>>  >>
> >>>>  >>     switch (index) {
> >>>>  >>     case 0 : /* stone + light */
> >>>>  >>         textureUnitState[0].setTexture(stoneTex);
> >>>>  >>         textureUnitState[1].setTexture(lightTex);
> >>>>  >>         break;
> >>>>  >>     case 1 : /* stone */
> >>>>  >>         textureUnitState[0].setTexture(stoneTex);
> >>>>  >>         textureUnitState[1].setTexture(null);
> >>>>  >>         break;
> >>>>  >>     case 2 : /* light */
> >>>>  >>         textureUnitState[0].setTexture(null);
> >>>>  >>         textureUnitState[1].setTexture(lightTex);
> >>>>  >>         break;
> >>>>  >>     case 3 : /* sky */
> >>>>  >>         textureUnitState[0].setTexture(null);
> >>>>  >>         textureUnitState[1].setTexture(skyTex);
> >>>>  >>         break;
> >>>>  >>     case 4 : /* stone + sky */
> >>>>  >>         textureUnitState[0].setTexture(stoneTex);
> >>>>  >>         textureUnitState[1].setTexture(skyTex);
> >>>>  >>         break;
> >>>>  >>     default:  /* both */
> >>>>  >>         break;
> >>>>  >>     }
> >>>>  >>   }
> >>>>  >>
> >>>>  >>   public static void main(String argv[])
> >>>>  >>   {
> >>>>  >>     java.net.URL stoneURL = null;
> >>>>  >>     java.net.URL skyURL = null;
> >>>>  >>     // the path to the image for an application
> >>>>  >>     try {
> >>>>  >>       stoneURL = new java.net.URL("file:../images/stone.jpg");
> >>>>  >>       skyURL = new java.net.URL("file:../images/bg.jpg");
> >>>>  >>     }
> >>>>  >>     catch (java.net.MalformedURLException ex) {
> >>>>  >>       System.out.println(ex.getMessage());
> >>>>  >>       System.exit(1);
> >>>>  >>     }
> >>>>  >>     new MainFrame(new MultiTextureTest(stoneURL, skyURL), 750, 750);
> >>>>  >>   }
> >>>>  >> }
> >>>>  >>
> >>>>  >> MultiTextureTest.java
> >>>>  >>
> >>>>  >> Content-Description:
> >>>>  >>
> >>>>  >> MultiTextureTest.java
> >>>>  >> Content-Type:
> >>>>  >>
> >>>>  >> TEXT/plain
> >>>>  >>
> >>>>  >>
> >>>>
> >>>>
> >>>> --
> >>>> ___________________________________________________________
> >>>>
> >>>> Shawn Kendall               Full Sail Real World Education
> >>>> Course Director             3300 University BLVD
> >>>> Real Time 3D for Gaming     Winter Park FL 32792
> >>>> [EMAIL PROTECTED]       http://www.fullsail.com
> >>>> ___________________________________________________________
> >>>>
> >>>>
> >>>> --
> >>>> ___________________________________________________________
> >>>>
> >>>> Shawn Kendall               Full Sail Real World Education
> >>>> Course Director             3300 University BLVD
> >>>> Real Time 3D for Gaming     Winter Park FL 32792
> >>>> [EMAIL PROTECTED]       http://www.fullsail.com
> >>>> ___________________________________________________________
> >>>>
> >>>>
===========================================================================
> >>>> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> >>>> of the message "signoff JAVA3D-INTEREST".  For general help, send email
to
> >>>> [EMAIL PROTECTED] and include in the body of the message "help".
> >>>
> >>>
> >>>
===========================================================================
> >>> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> >>> of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> >>> [EMAIL PROTECTED] and include in the body of the message "help".
> >>
> >>
> >> --
> >> ___________________________________________________________
> >>
> >> Shawn Kendall               Full Sail Real World Education
> >> Course Director             3300 University BLVD
> >> Real Time 3D for Gaming     Winter Park FL 32792
> >> [EMAIL PROTECTED]       http://www.fullsail.com
> >> ___________________________________________________________
> >>
> >> ===========================================================================
> >> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> >> of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> >> [EMAIL PROTECTED] and include in the body of the message "help".
> >
> >
> > ===========================================================================
> > To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> > of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> > [EMAIL PROTECTED] and include in the body of the message "help".
>
>
> --
> ___________________________________________________________
>
> Shawn Kendall               Full Sail Real World Education
> Course Director             3300 University BLVD
> Real Time 3D for Gaming     Winter Park FL 32792
> [EMAIL PROTECTED]       http://www.fullsail.com
> ___________________________________________________________
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to