Przeglądaj źródła

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
Kae..pl 12 lat temu
rodzic
commit
fc96e52a4c

+ 5 - 2
engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ArmatureModifier.java

@@ -332,8 +332,11 @@ import com.jme3.util.BufferUtils;
                                     warnAboutTooManyVertexWeights = true;
                                     Entry<Float, Integer> lowestWeightAndIndex = weightToIndexMap.firstEntry();
                                     if (lowestWeightAndIndex != null && lowestWeightAndIndex.getKey() < weight) {
-                                        weightsFloatData.put(lowestWeightAndIndex.getValue(), weight);
-                                        indicesData.put(lowestWeightAndIndex.getValue(), boneIndex.byteValue());
+                                        // we apply the weight to all referenced vertices
+                                        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.put(weight, lowestWeightAndIndex.getValue());
                                     }