I need to texture mapping some text such as "C A R" to a sphere. First I create a 
text2D object then I use TextCoordGeneration. The problem is the text is textured to 
the metaball properly, but there is also a reflection of the  text is also textured. I 
use OBJECT_LINEAR. I can't figure it out. I attach all my program below.  Thank you 
very very much if you can help me.

import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.BorderLayout;
import java.awt.Frame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.keyboard.KeyNavigatorBehavior;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.universe.PlatformGeometry;
import java.awt.event.KeyEvent;
import com.sun.j3d.utils.geometry.Text2D;
import java.awt.Font;
import javax.vecmath.Vector3f;

public class sphere {


    static Sphere createMetaball(){





        String result = "   C  A  R   ";
        Text2D text2d = new Text2D(result, new Color3f(0.9f, 1.0f, 1.0f), "Courier", 
12, Font.BOLD);
        text2d.setString(result);
        text2d.setCapability( Shape3D.ALLOW_GEOMETRY_READ);
        text2d.setCapability( Shape3D.ALLOW_GEOMETRY_WRITE);
        text2d.setRectangleScaleFactor(1.0f / 256.0f);
        text2d.setString(result);

        Appearance appearance = text2d.getAppearance();
        TexCoordGeneration tcg = new 
TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR,TexCoordGeneration.TEXTURE_COORDINATE_2);
        tcg.setEnable( true );
        appearance.setTexCoordGeneration(tcg);
        appearance.getTexture().setBoundaryModeS(Texture.CLAMP_TO_BOUNDARY);
        appearance.getTexture().setBoundaryModeT(Texture.CLAMP_TO_BOUNDARY);


        PolygonAttributes pa1 = new PolygonAttributes();
        pa1.setPolygonMode( PolygonAttributes.POLYGON_FILL);
        pa1.setCullFace(PolygonAttributes.CULL_BACK);
        //pa1.setBackFaceNormalFlip( true );
        appearance.setPolygonAttributes( pa1 );

        TextureAttributes texturemode = new TextureAttributes();
        texturemode.setTextureMode(TextureAttributes.DECAL);
        texturemode.setPerspectiveCorrectionMode(TextureAttributes.NICEST);
        appearance.setTextureAttributes(texturemode);

        // set material
        Material material = new Material(); // lighting attributes
        material.setShininess(50.0f);   // add by ldu
        material.setAmbientColor( new Color3f( 0.2f, 0.0f, 0.0f ) );
        material.setDiffuseColor( new Color3f( 0.0f, 0.0f, 0.7f ) );
        material.setLightingEnable( true );
        appearance.setMaterial( material);


        TransparencyAttributes transparencyAttributes = new TransparencyAttributes();
        transparencyAttributes.setTransparencyMode(TransparencyAttributes.NONE);
        transparencyAttributes.setTransparency(0.0f);
        appearance.setTransparencyAttributes(transparencyAttributes);


        Sphere sphere = new Sphere(3.0f);

       // ball.setGeometry(gi.getGeometryArray());
        sphere.setAppearance(appearance);


        return sphere;
    }




  public static void main( String[] args ) {


    // Build the canvas
    GraphicsConfigTemplate3D tmpl = new GraphicsConfigTemplate3D( );
    GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice device = env.getDefaultScreenDevice();
    GraphicsConfiguration config = device.getBestConfiguration(tmpl);
    Canvas3D canvas = new Canvas3D( config );




    // Build the view
    PhysicalBody body = new PhysicalBody( );
    PhysicalEnvironment environment = new PhysicalEnvironment();
    View view = new View();

    view.addCanvas3D( canvas );
    view.setPhysicalBody( body );
    view.setPhysicalEnvironment( environment );



    // create the universe
    VirtualUniverse universe = new VirtualUniverse( );
    Locale locale = new Locale( universe );

    // Create the view branch
    BranchGroup viewRoot = new BranchGroup( );
    TransformGroup viewTransform = new TransformGroup( );
    viewTransform.setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
    viewTransform.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE );
    Transform3D transform = new Transform3D( );
    transform.set( new Vector3d( 0, 0, 15 ) );
    viewTransform.setTransform( transform );

    ViewPlatform vp = new ViewPlatform( );
    vp.setCapability(ViewPlatform.ALLOW_POLICY_READ);
    vp.setCapability(ViewPlatform.ALLOW_POLICY_WRITE);
    vp.setViewAttachPolicy(View.NOMINAL_HEAD);

    view.attachViewPlatform( vp );
    viewTransform.addChild( vp );
    viewRoot.addChild( viewTransform );
    viewRoot.compile( );
    locale.addBranchGraph( viewRoot );
    BranchGroup objectRoot = new BranchGroup( );
    TransformGroup objectTransform = new TransformGroup( );
    //TransformGroup objectTransform2 = new TransformGroup( );
    transform.set( new Vector3d( 0, 0, 0 ) );
    //transform.rotX(Math.PI/4.0d);
    objectTransform.setTransform( transform );
    objectTransform.setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
    objectTransform.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE );
    objectRoot.addChild(objectTransform);
    objectTransform.addChild(createMetaball());


    Alpha rotationAlpha = new Alpha(-1, 50000);

    RotationInterpolator rotator =
    new RotationInterpolator(rotationAlpha, objectTransform);


    // a bounding sphere specifies a region a behavior is active
    // create a sphere centered at the origin with radius of 1
    BoundingSphere bounds = new BoundingSphere();
    rotator.setSchedulingBounds(bounds);
    objectTransform.addChild(rotator);


    // add KeyNavigatorBehavior
    KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(viewTransform);
    keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0));
    keyNavBeh.setEnable( true );
    objectRoot.addChild(keyNavBeh);

    // Create the light
    AmbientLight ambLight = new AmbientLight(new Color3f(1.0f,1.0f,1.0f) );
    ambLight.setInfluencingBounds(new BoundingSphere(new Point3d( 0.0, 0.0, 
0.0),1000));
    objectRoot.addChild(ambLight);
    DirectionalLight dirLight = new DirectionalLight(new Color3f(1.0f, 1.0f, 1.0f 
),new Vector3f( -1.0f, -1.0f, -1.0f ) );

    dirLight.setInfluencingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),1000.0));
    objectRoot.addChild(dirLight);







    objectRoot.compile( );
    locale.addBranchGraph(objectRoot);

    // Create the UI
    javax.swing.JFrame frame = new javax.swing.JFrame( "Metaball Universe");


    frame.getContentPane( ).setLayout( new java.awt.BorderLayout( ) );
    frame.getContentPane( ).add( canvas, "Center" );
    //frame.addKeyListener(java.awt.event.KeyListener);
    frame.setSize( new java.awt.Dimension( 300, 300 ) );



    frame.addWindowListener( new java.awt.event.WindowAdapter( ) {
        public void windowClosing( java.awt.event.WindowEvent e ) {
            System.exit( 0 );
        }
    } );
    frame.setVisible( true );
 }

}

===========================================================================
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