Bugfix: fixed lowes weight removal method that did not remove all lowest vertices that were necessary (thanks to Tobias Downer for finding it :) ).
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10459 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
9a28fed581
commit
fc96e52a4c
@ -332,8 +332,11 @@ import com.jme3.util.BufferUtils;
|
|||||||
warnAboutTooManyVertexWeights = true;
|
warnAboutTooManyVertexWeights = true;
|
||||||
Entry<Float, Integer> lowestWeightAndIndex = weightToIndexMap.firstEntry();
|
Entry<Float, Integer> lowestWeightAndIndex = weightToIndexMap.firstEntry();
|
||||||
if (lowestWeightAndIndex != null && lowestWeightAndIndex.getKey() < weight) {
|
if (lowestWeightAndIndex != null && lowestWeightAndIndex.getKey() < weight) {
|
||||||
weightsFloatData.put(lowestWeightAndIndex.getValue(), weight);
|
// we apply the weight to all referenced vertices
|
||||||
indicesData.put(lowestWeightAndIndex.getValue(), boneIndex.byteValue());
|
for (Integer index : vertexIndices) {
|
||||||
|
weightsFloatData.put(index * MAXIMUM_WEIGHTS_PER_VERTEX + lowestWeightAndIndex.getValue(), weight);
|
||||||
|
indicesData.put(index * MAXIMUM_WEIGHTS_PER_VERTEX + lowestWeightAndIndex.getValue(), boneIndex.byteValue());
|
||||||
|
}
|
||||||
weightToIndexMap.remove(lowestWeightAndIndex.getKey());
|
weightToIndexMap.remove(lowestWeightAndIndex.getKey());
|
||||||
weightToIndexMap.put(weight, lowestWeightAndIndex.getValue());
|
weightToIndexMap.put(weight, lowestWeightAndIndex.getValue());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user