private Node constructMesh() { Node toReturn = new Node("MD3 File"); for (int i = 0; i < head.numSurface; i++) { vkc = new KeyframeController(); MD3Surface thisSurface = surfaces[i]; TriMesh object = new TriMesh(thisSurface.name); object.setIndexBuffer(BufferUtils.createIntBuffer(thisSurface.triIndexes)); object.setVertexBuffer(BufferUtils.createFloatBuffer(thisSurface.verts[0])); object.setNormalBuffer(BufferUtils.createFloatBuffer(thisSurface.norms[0])); object.setTextureCoords(TexCoords.makeNew(thisSurface.texCoords)); toReturn.attachChild(object); vkc.setMorphingMesh(object); for (int j = 0; j < head.numFrames; j++) { TriMesh etm = new TriMesh(); etm.setVertexBuffer(BufferUtils.createFloatBuffer(thisSurface.verts[j])); etm.setNormalBuffer(BufferUtils.createFloatBuffer(thisSurface.norms[j])); vkc.setKeyframe(j, etm); } vkc.setActive(true); vkc.setSpeed(5); object.addController(vkc); toReturn.addController(vkc); } nullAll(); return toReturn; }