2
0
Эх сурвалжийг харах

hmd: configurable maxBonesPerSkin

trethaller 4 жил өмнө
parent
commit
9b23d760a8

+ 1 - 1
hxd/fmt/fbx/BaseLibrary.hx

@@ -128,7 +128,7 @@ class BaseLibrary {
 	/**
 		If there are too many bones, the model will be split in separate render passes.
 	**/
-	public static var maxBonesPerSkin = 34;
+	public var maxBonesPerSkin = 34;
 
 	/**
 		Consider unskinned joints to be simple objects

+ 2 - 2
hxd/fmt/fbx/HMDOut.hx

@@ -656,10 +656,10 @@ class HMDOut extends BaseLibrary {
 					if( c.isJoint )
 						rootJoints.push(c.joint);
 				skin = createSkin(hskins, tmpGeom, rootJoints);
-				if( skin.boundJoints.length > BaseLibrary.maxBonesPerSkin ) {
+				if( skin.boundJoints.length > maxBonesPerSkin ) {
 					var g = new hxd.fmt.fbx.Geometry(this, g);
 					var idx = g.getIndexes();
-					skin.split(BaseLibrary.maxBonesPerSkin, [for( i in idx.idx ) idx.vidx[i]], mids.length > 1 ? g.getMaterialByTriangle() : null);
+					skin.split(maxBonesPerSkin, [for( i in idx.idx ) idx.vidx[i]], mids.length > 1 ? g.getMaterialByTriangle() : null);
 				}
 				model.skin = makeSkin(skin, o.skin);
 			}

+ 2 - 0
hxd/fs/Convert.hx

@@ -85,6 +85,8 @@ class ConvertFBX2HMD extends Convert {
 				hmdout.highPrecision = true;
 				hmdout.fourBonesByVertex = true;
 			}
+			if( params.maxBones != null)
+				hmdout.maxBonesPerSkin = params.maxBones;
 		}
 		hmdout.load(fbx);
 		var isAnim = StringTools.startsWith(originalFilename, "Anim_") || originalFilename.toLowerCase().indexOf("_anim_") > 0;