Hi Michael,

   I try your test program, it throws exception at

  java.lang.IllegalStateException: GeometryArray: must be in USE_NIO_BUFFER mode to 
use this method
        at javax.media.j3d.GeometryArray.getCoordRefBuffer(GeometryArray.java:4142)
        at 
net.monoid.j3d.animation.models.md3.MD3MeshDeformer.updateData(MD3MeshDeformer.java:81)
        at 
javax.media.j3d.GeometryArrayRetained.updateData(GeometryArrayRetained.java:5305)
        at javax.media.j3d.GeometryArray.updateData(GeometryArray.java:677)
        at 
net.monoid.j3d.animation.models.md3.MD3MeshDeformer.setFrame(MD3MeshDeformer.java:53)
        at net.monoid.j3d.animation.models.md3.MD3Model.setFrame(MD3Model.java:261)
        at net.monoid.j3d.animation.models.md3.q3a.Q3AModel.linkAll(Q3AModel.java:107)
        at net.monoid.j3d.animation.models.md3.q3a.Q3AModelIO.load(Q3AModelIO.java:83)
        at 
net.monoid.j3d.animation.models.md3.q3a.Q3AModelFactory.createModel(Q3AModelFactory.java:36)
        at 
net.monoid.j3d.animation.player.SceneController.addModel(SceneController.java:44)
        at net.monoid.j3d.animation.player.PlayerIO.parseScriptLine(PlayerIO.java:98)
        at net.monoid.j3d.animation.player.PlayerIO.readScriptFile(PlayerIO.java:64)
        at 
net.monoid.j3d.animation.player.SceneController.playScript(SceneController.java:39)
        at app.App2.createSceneGraph(App2.java:242)
        at app.App2.<init>(App2.java:109)
        at Main.main(Main.java:7)


when trying to updateData()
That's why nothing is shown.It may because other GeometryArray pass in
is not construct using NIO_BUFFER. If I comment out the call I see
the model shown correctly on the screen (but not move since updateData
is comment out).

Please fix the application.

Thanks.

- Kelvin
----------------
Java 3D Team
Sun Microsystems Inc.


>Delivered-To: [EMAIL PROTECTED]
>MIME-Version: 1.0
>Content-Transfer-Encoding: 8BIT
>X-Sender: [EMAIL PROTECTED]
>Date: Tue, 27 Nov 2001 01:29:39 +0100
>From: Michael Nischt <[EMAIL PROTECTED]>
>Subject: [JAVA3D] J3DBuffers - how to use them correctly ? - part 2
>To: [EMAIL PROTECTED]
>
>again :o(
>
>I changed my code parts for using J3DBuffer's, but again I got a problem.
>I have compared my code with the 'GeometryByReferenceNIOBuffer' Example and I
>can't figure out any differences in principle..
>
>code bellow works fine with useBuffers false, but setting it to true nothing is
>rendered.. i played it bit with the code and noticed that
>geomArray.getCoordRefBuffer() returns a null-reference.. but before setting
>J3DBuffer everything is fine..
>
>any ideas what I have done wrong ?
>(also removed USE_COORD_INDEX_ONLY and set all indices, but didn't change
>anything..)
>
>greetings
> -Michael Nischt
>
>CODE:
>------------------------------------
>  boolean useBuffers = false;
>        if(useBuffers)
>            vertexFormat = GeometryArray.BY_REFERENCE |
>GeometryArray.USE_NIO_BUFFER | GeometryArray.USE_COORD_INDEX_ONLY |
>GeometryArray.COORDINATES | GeometryArray.NORMALS |
>GeometryArray.TEXTURE_COORDINATE_2;
>        else
>            vertexFormat = GeometryArray.BY_REFERENCE |
>GeometryArray.USE_COORD_INDEX_ONLY | GeometryArray.COORDINATES |
>GeometryArray.NORMALS | GeometryArray.TEXTURE_COORDINATE_2;
>        IndexedTriangleArray geomArray = new IndexedTriangleArray(numVertices,
>vertexFormat, texCoordSetCount, texCoordSetMap , numIndices);
>
>        geomArray.setCapability(GeometryArray.ALLOW_REF_DATA_READ);
>        geomArray.setCapability(GeometryArray.ALLOW_REF_DATA_WRITE);
>
>        float[] coords = mesh.getCoords(0);
>        float[] normals = mesh.getNormals(0);
>
>        ByteOrder order = ByteOrder.nativeOrder();
>
>        if(useBuffers) {
>
>            FloatBuffer coordBuffer = ByteBuffer.allocateDirect(coords.length *
>4).order(order).asFloatBuffer();
>            FloatBuffer normalBuffer = ByteBuffer.allocateDirect(normals.length
>* 4).order(order).asFloatBuffer();
>
>            coordBuffer.put(coords, 0, coords.length);
>            normalBuffer.put(normals, 0, normals.length);
>
>
>            geomArray.setColorRefBuffer(new J3DBuffer(coordBuffer));
>            geomArray.setNormalRefBuffer(new J3DBuffer(normalBuffer));
>        }
>        else {
>            geomArray.setCoordRefFloat(coords);
>            geomArray.setNormalRefFloat(normals);
>        }
>
>        geomArray.setCoordinateIndices(0, mesh.getIndices());
>        //geomArray.setNormalIndices(0, mesh.getIndices());
>
>        TextureUnitState[] texUnits = new TextureUnitState[texCoordSetCount];
>
>        Appearance ap = new Appearance();
>        ap.setMaterial(DEFAULT_MATERIAL);
>        ap.setPolygonAttributes(DEFAULT_POLYGON_ATTRIBUTES);
>        ap.setTextureUnitState(texUnits);
>
>
>        for(int i=0; i<texCoordSetCount; i++) {
>            float[] texCoords = mesh.getTexCoords();
>            if(useBuffers) {
>                FloatBuffer texCoordBuffer =
>ByteBuffer.allocateDirect(texCoords.length * 4).order(order).asFloatBuffer();
>                texCoordBuffer.put(texCoords, 0, texCoords.length);
>                geomArray.setTexCoordRefBuffer(i, new
>J3DBuffer(texCoordBuffer));
>            }
>            else
>                geomArray.setTexCoordRefFloat(i, texCoords);
>
>
>            //geomArray.setTextureCoordinateIndices(i, 0, mesh.getIndices());
>            TextureUnitState texUnit = new TextureUnitState();
>            texUnit.setTexture(mesh.getTexture(i));
>            ap.setTextureUnitState(i, texUnit);
>        }
>
>
>        shape.setAppearance(ap);
>        shape.setGeometry(geomArray);
>
>        this.getNode().addChild(shape);
>------------------------------------
>
>===========================================================================
>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