* Fix issue where a bone weight in a vertex was set to all zero would cause the vertex to snap to 0,0,0

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9726 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
Sha..rd 13 years ago
parent 8c2bdebbae
commit a2ff0ba179
  1. 17
      engine/src/core/com/jme3/animation/SkeletonControl.java

@ -340,6 +340,13 @@ public class SkeletonControl extends AbstractControl implements Cloneable {
// iterate vertices and apply skinning transform for each effecting bone
for (int vert = verts - 1; vert >= 0; vert--) {
// Skip this vertex if the first weight is zero.
if (weights[idxWeights] == 0) {
idxPositions += 3;
idxWeights += 4;
continue;
}
float nmx = normBuf[idxPositions];
float vtx = posBuf[idxPositions++];
float nmy = normBuf[idxPositions];
@ -455,6 +462,14 @@ public class SkeletonControl extends AbstractControl implements Cloneable {
// iterate vertices and apply skinning transform for each effecting bone
for (int vert = verts - 1; vert >= 0; vert--) {
// Skip this vertex if the first weight is zero.
if (weights[idxWeights] == 0) {
idxTangents += 4;
idxPositions += 3;
idxWeights += 4;
continue;
}
float nmx = normBuf[idxPositions];
float vtx = posBuf[idxPositions++];
float nmy = normBuf[idxPositions];
@ -466,7 +481,7 @@ public class SkeletonControl extends AbstractControl implements Cloneable {
float tny = tanBuf[idxTangents++];
float tnz = tanBuf[idxTangents++];
//skipping the 4th component of the tangent since it doesn't have to be transformed
// skipping the 4th component of the tangent since it doesn't have to be transformed
idxTangents++;
float rx = 0, ry = 0, rz = 0, rnx = 0, rny = 0, rnz = 0, rtx = 0, rty = 0, rtz = 0;

Loading…
Cancel
Save