.obj -- How to obtain and revise the vertices's coordinates?

Java3d is using GeometryInfo to obtain the geometric information of the loaded .obj files.

Let’s suppose I’ve already obtained the Shape3D obj3d,

I can use
GeometryInfo gi = new GeometryInfo( (GeometryArray)obj3d.getGeometry() );
and then
Point3f[] coords = gi.getCoordinates();

to obtain all the coordinates relative to triangles’ vertexes (loads of duplicates), but it seems we an never obtain the used vertexes directly.

For instance, in my case, I’m trying to load a huge .obj file. There are totally 75,972 vertexes, but 150,958 triangles.

The above method “Point3f[] coords = gi.getCoordinates();” will give me 150,958*3(3 vertexes for each triangle)=452,874 vertexes. I really don’t need it I think. What I need is just those 75,972 vertexes’ coordinates. How can I obtain these coordinates please?

Seriously urgently. Thank you very much in advance.

Best Regards
JIA

It’s pretty strange.

If I only do:

GeometryInfo gi = new GeometryInfo( head );
IndexedGeometryArray iga = gi.getIndexedGeometryArray(true);
Point3f[] coords = gi.getCoordinates();
Object[] texcoords = gi.getTextureCoordinates(0);

As you can see, I didn’t use “IndexedGeometryArray iga” at all, but it seems “gi.getIndexedGeometryArray(true)” not only assign to “iga” but change “gi” itself !!

Now, coords has 75,970 elements while texcoords has 75,969 elements.

There should be totally 75,972 coordinates with 75,972 textures spreading over these 75,972 points.

To my most strange:

gi.setCoordinates(shapeVec);
gi.setTextureCoordinates(0, texVec);

works, where shapeVec and texVec are two vectors of 75,972 elements.

That’s to say, getCoordinates() returns a vector of 75,970, while setCoordinates() works for a vecto of 75,972.

Seriously don’t know how Java3D performed.
And it’s seriously confusing why
IndexedGeometryArray iga = gi.getIndexedGeometryArray(true);
changes gi ???

Ooops…

JIA