Fixed MikktSpaceTangentGenerator that was not replacing existing Tangent buffers on the mesh. That could cause crashes when the old tangent buffer did not have the same amount of components

revert-573-cleanup_build_scripts
Nehon 8 years ago
parent 7ecb81c230
commit aae6170cc5
  1. 11
      jme3-core/src/main/java/com/jme3/util/mikktspace/MikkTSpaceImpl.java
  2. 2
      jme3-core/src/main/java/com/jme3/util/mikktspace/MikktspaceTangentGenerator.java

@ -21,13 +21,10 @@ public class MikkTSpaceImpl implements MikkTSpaceContext {
public MikkTSpaceImpl(Mesh mesh) { public MikkTSpaceImpl(Mesh mesh) {
this.mesh = mesh; this.mesh = mesh;
VertexBuffer tangentBuffer = mesh.getBuffer(VertexBuffer.Type.Tangent); //replacing any existing tangent buffer, if you came here you want them new.
if(tangentBuffer == null){ mesh.clearBuffer(VertexBuffer.Type.Tangent);
FloatBuffer fb = BufferUtils.createFloatBuffer(mesh.getVertexCount() * 4); FloatBuffer fb = BufferUtils.createFloatBuffer(mesh.getVertexCount() * 4);
mesh.setBuffer(VertexBuffer.Type.Tangent, 4, fb); mesh.setBuffer(VertexBuffer.Type.Tangent, 4, fb);
}
//TODO ensure the Tangent buffer exists, else create one.
} }
@Override @Override

@ -512,7 +512,7 @@ public class MikktspaceTangentGenerator {
} }
} }
//TODO Nehon : Not used...seemsit's used in the original version if the structure to store the data in the regular method failed... //TODO Nehon : Not used...seems it's used in the original version if the structure to store the data in the regular method failed...
static void generateSharedVerticesIndexListSlow(int piTriList_in_and_out[], final MikkTSpaceContext mikkTSpace, final int iNrTrianglesIn) { static void generateSharedVerticesIndexListSlow(int piTriList_in_and_out[], final MikkTSpaceContext mikkTSpace, final int iNrTrianglesIn) {
int iNumUniqueVerts = 0; int iNumUniqueVerts = 0;
for (int t = 0; t < iNrTrianglesIn; t++) { for (int t = 0; t < iNrTrianglesIn; t++) {

Loading…
Cancel
Save