* Fixed issue where Ogre3D models with more than 4 bones per vertex would crash
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7575 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
60633ac845
commit
36db85980b
@ -359,7 +359,7 @@ public class MeshLoader extends DefaultHandler implements AssetLoader {
|
||||
weightsFloatData = FloatBuffer.allocate(vertCount * 4);
|
||||
indicesData = ByteBuffer.allocate(vertCount * 4);
|
||||
}
|
||||
|
||||
|
||||
VertexBuffer weights = new VertexBuffer(Type.BoneWeight);
|
||||
VertexBuffer indices = new VertexBuffer(Type.BoneIndex);
|
||||
|
||||
@ -536,18 +536,23 @@ public class MeshLoader extends DefaultHandler implements AssetLoader {
|
||||
int vert = parseInt(vertIndex);
|
||||
float w = parseFloat(weight);
|
||||
byte bone = (byte) parseInt(boneIndex);
|
||||
|
||||
|
||||
assert bone >= 0;
|
||||
assert vert >= 0 && vert < mesh.getVertexCount();
|
||||
|
||||
int i;
|
||||
float v = 0;
|
||||
// see which weights are unused for a given bone
|
||||
for (i = vert * 4; i < vert * 4 + 4; i++) {
|
||||
float v = weightsFloatData.get(i);
|
||||
v = weightsFloatData.get(i);
|
||||
if (v == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (v != 0){
|
||||
logger.log(Level.WARNING, "Vertex {0} has more than 4 weights per vertex! Ignoring..", vert);
|
||||
return;
|
||||
}
|
||||
|
||||
weightsFloatData.put(i, w);
|
||||
indicesData.put(i, bone);
|
||||
|
Loading…
x
Reference in New Issue
Block a user