Forráskód Böngészése

Follow joint support

clandrin 3 éve
szülő
commit
7015b7445b
2 módosított fájl, 9 hozzáadás és 5 törlés
  1. 1 0
      h3d/anim/Skin.hx
  2. 8 5
      h3d/scene/Skin.hx

+ 1 - 0
h3d/anim/Skin.hx

@@ -9,6 +9,7 @@ class Joint {
 	public var defMat : h3d.Matrix; // the default bone matrix
 	public var transPos : h3d.Matrix; // inverse pose matrix
 	public var parent : Joint;
+	public var follow : Joint;
 	public var subs : Array<Joint>;
 
 	public var offsets : h3d.col.Bounds;

+ 8 - 5
h3d/scene/Skin.hx

@@ -111,11 +111,13 @@ class Skin extends MultiMaterial {
 			if( j.offsetRay < 0 ) continue;
 			var m = currentPalette[j.bindIndex];
 			var pt = j.offsets.getMin();
-			pt.transform(m);
-			b.addSpherePos(pt.x, pt.y, pt.z, j.offsetRay * scale);
-			var pt = j.offsets.getMax();
-			pt.transform(m);
-			b.addSpherePos(pt.x, pt.y, pt.z, j.offsetRay * scale);
+			if ( m != null ) {
+				pt.transform(m);
+				b.addSpherePos(pt.x, pt.y, pt.z, j.offsetRay * scale);
+				var pt = j.offsets.getMax();
+				pt.transform(m);
+				b.addSpherePos(pt.x, pt.y, pt.z, j.offsetRay * scale);
+			}
 		}
 		return b;
 	}
@@ -227,6 +229,7 @@ class Skin extends MultiMaterial {
 		if( !jointsUpdated ) return;
 		var tmpMat = TMP_MAT;
 		for( j in skinData.allJoints ) {
+			if ( j.follow != null ) continue;
 			var id = j.index;
 			var m = currentAbsPose[id];
 			var r = currentRelPose[id];