Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java3d texture

user8010575Mar 3 2016 — edited Mar 3 2016

Hello,

I have a question about Texture 2D on QuadArray 3D.

I try to apply a texture on quad array :

pastedImage_0.pngpastedImage_1.pngpastedImage_2.png

But this is not what I expect since the quad is plane.

The following scheme is what I expect to have :

pastedImage_3.png

Here is the code I use :

public class Test3D extends JPanel {

SimpleUniverse simpleU;

static boolean application = false;

public BranchGroup createSceneGraph() {

    BranchGroup objRoot = new BranchGroup();

    Appearance polygon1Appearance = new Appearance();

    GeometryInfo polygon1 = new GeometryInfo(GeometryInfo.QUAD\_ARRAY);

    polygon1.setTextureCoordinateParams(1, 2);

    polygon1.setCoordinates(new Point3f\[\]{new Point3f(0f, 0f, 0f), new Point3f(2f, 0f, 0f), new Point3f(3f, 3f, 0f), new Point3f(-3f, 3f, 0f)});

    polygon1.setTextureCoordinates(0, new TexCoord4f\[\]{new TexCoord2f(0.0f, 0.0f)//

            , new TexCoord2f(1.0f, 0.0f) //

            , new TexCoord2f(1.0f, 1.0f) //

            , new TexCoord2f(0.0f, 1.0f)});

    NormalGenerator normalGenerator = new NormalGenerator();

    normalGenerator.generateNormals(polygon1);

    Texture texImage = new TextureLoader("texture.png", this).getTexture();

    polygon1Appearance.setTexture(texImage);

    objRoot.addChild(new Shape3D(polygon1.getGeometryArray(), polygon1Appearance));

    return objRoot;

}

public Test3D() {

    init();

}

public void init() {

    setLayout(new BorderLayout());

    Canvas3D c = new Canvas3D(SimpleUniverse.getPreferredConfiguration());

    add("Center", c);

    BranchGroup scene = createSceneGraph();

    simpleU = new SimpleUniverse(c);

    TransformGroup tg = simpleU.getViewingPlatform().getViewPlatformTransform();

    Transform3D t3d = new Transform3D();

    t3d.setTranslation(new Vector3f(0f, 0f, 10f));

    tg.setTransform(t3d);

    scene.compile();

    simpleU.addBranchGraph(scene);

}

public static void main(final String\[\] args) {

    application = true;

    JFrame frame = new JFrame();

    frame.setSize(500, 500);

    frame.add(new Test3D());

    frame.setVisible(true);

}

}

Is anybody have any solution to solve this problem ?

Thank's in advance,

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 31 2016
Added on Mar 3 2016
0 comments
1,864 views