Forum Stats

  • 3,838,599 Users
  • 2,262,384 Discussions
  • 7,900,692 Comments

Discussions

Java3d texture

user8010575
user8010575 Member Posts: 3
edited Mar 3, 2016 4:28AM in Java 3D

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,


This discussion has been closed.