I stumbled over the issue that i cant get a triangle from a mesh if the meshs index buffer is of type UnsignedInt and not UnsignedShort.
So i changed it to use IndexBuffer instead in
getTriangle(int index, Vector3f v1, Vector3f v2, Vector3f v3) and
getTriangle(int index, int[] indices)
[patch]Index: src/core/com/jme3/scene/Mesh.java
===================================================================
— src/core/com/jme3/scene/Mesh.java (revision 7250)
+++ src/core/com/jme3/scene/Mesh.java (working copy)
@@ -442,25 +442,20 @@
public void getTriangle(int index, Vector3f v1, Vector3f v2, Vector3f v3){
VertexBuffer pb = getBuffer(Type.Position);
-
VertexBuffer ib = getBuffer(Type.Index);<br />
-
+
if (pb.getFormat() == Format.Float){
FloatBuffer fpb = (FloatBuffer) pb.getData();
-
IndexBuffer ib = getIndexBuffer();<br />
- if (ib.getFormat() == Format.UnsignedShort){
- // accepted format for buffers
- ShortBuffer sib = (ShortBuffer) ib.getData();
-
- // aquire triangle's vertex indices
- int vertIndex = index * 3;
- int vert1 = sib.get(vertIndex);
- int vert2 = sib.get(vertIndex+1);
- int vert3 = sib.get(vertIndex+2);
+ // aquire triangle's vertex indices
+ int vertIndex = index * 3;
+ int vert1 = ib.get(vertIndex);
+ int vert2 = ib.get(vertIndex+1);
+ int vert3 = ib.get(vertIndex+2);
- BufferUtils.populateFromBuffer(v1, fpb, vert1);
- BufferUtils.populateFromBuffer(v2, fpb, vert2);
- BufferUtils.populateFromBuffer(v3, fpb, vert3);
- }
+ BufferUtils.populateFromBuffer(v1, fpb, vert1);
+ BufferUtils.populateFromBuffer(v2, fpb, vert2);
+ BufferUtils.populateFromBuffer(v3, fpb, vert3);
}
}
@@ -470,17 +465,12 @@
}
public void getTriangle(int index, int[] indices){
- VertexBuffer ib = getBuffer(Type.Index);
- if (ib.getFormat() == Format.UnsignedShort){
- // accepted format for buffers
- ShortBuffer sib = (ShortBuffer) ib.getData();
-
- // acquire triangle's vertex indices
- int vertIndex = index * 3;
- indices[0] = sib.get(vertIndex);
- indices[1] = sib.get(vertIndex+1);
- indices[2] = sib.get(vertIndex+2);
- }
+ IndexBuffer ib = getIndexBuffer();
+ // acquire triangle's vertex indices
+ int vertIndex = index * 3;
+ indices[0] = ib.get(vertIndex);
+ indices[1] = ib.get(vertIndex+1);
+ indices[2] = ib.get(vertIndex+2);
}
public int getId(){
[/patch]