ソースを参照

Introduced SceneLoader.CleanBoneMatrixWeights

David Catuhe 8 年 前
コミット
0036f07ec0

ファイルの差分が大きいため隠しています
+ 1209 - 1207
dist/preview release/babylon.d.ts


ファイルの差分が大きいため隠しています
+ 26 - 26
dist/preview release/babylon.js


+ 16 - 0
dist/preview release/babylon.max.js

@@ -18487,6 +18487,7 @@ var BABYLON;
             this.skeletons = [];
             this.morphTargetManagers = [];
             this.importedMeshesFiles = new Array();
+            this.resetCachedMaterial();
             if (this._depthRenderer) {
                 this._depthRenderer.dispose();
             }
@@ -28609,6 +28610,9 @@ var BABYLON;
             }
         };
         Geometry._CleanMatricesWeights = function (matricesWeights, influencers) {
+            if (!BABYLON.SceneLoader.CleanBoneMatrixWeights) {
+                return;
+            }
             var size = matricesWeights.length;
             for (var i = 0; i < size; i += influencers) {
                 var weight = 0;
@@ -45035,6 +45039,7 @@ var BABYLON;
                 this._postProcessManager = null;
             }
             this.clearPostProcesses(true);
+            this.renderList = null;
             // Remove from custom render targets
             var scene = this.getScene();
             var index = scene.customRenderTargets.indexOf(this);
@@ -46994,6 +46999,16 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        Object.defineProperty(SceneLoader, "CleanBoneMatrixWeights", {
+            get: function () {
+                return SceneLoader._CleanBoneMatrixWeights;
+            },
+            set: function (value) {
+                SceneLoader._CleanBoneMatrixWeights = value;
+            },
+            enumerable: true,
+            configurable: true
+        });
         SceneLoader._getDefaultPlugin = function () {
             return SceneLoader._registeredPlugins[".babylon"];
         };
@@ -47228,6 +47243,7 @@ var BABYLON;
     // Flags
     SceneLoader._ForceFullSceneLoadingForIncremental = false;
     SceneLoader._ShowLoadingScreen = true;
+    SceneLoader._CleanBoneMatrixWeights = false;
     SceneLoader._loggingLevel = SceneLoader.NO_LOGGING;
     // Members
     SceneLoader.OnPluginActivatedObservable = new BABYLON.Observable();

ファイルの差分が大きいため隠しています
+ 1209 - 1207
dist/preview release/babylon.module.d.ts


ファイルの差分が大きいため隠しています
+ 26 - 26
dist/preview release/babylon.worker.js


ファイルの差分が大きいため隠しています
+ 638 - 636
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


ファイルの差分が大きいため隠しています
+ 11 - 11
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 16 - 0
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -18487,6 +18487,7 @@ var BABYLON;
             this.skeletons = [];
             this.morphTargetManagers = [];
             this.importedMeshesFiles = new Array();
+            this.resetCachedMaterial();
             if (this._depthRenderer) {
                 this._depthRenderer.dispose();
             }
@@ -28609,6 +28610,9 @@ var BABYLON;
             }
         };
         Geometry._CleanMatricesWeights = function (matricesWeights, influencers) {
+            if (!BABYLON.SceneLoader.CleanBoneMatrixWeights) {
+                return;
+            }
             var size = matricesWeights.length;
             for (var i = 0; i < size; i += influencers) {
                 var weight = 0;
@@ -32646,6 +32650,7 @@ var BABYLON;
                 this._postProcessManager = null;
             }
             this.clearPostProcesses(true);
+            this.renderList = null;
             // Remove from custom render targets
             var scene = this.getScene();
             var index = scene.customRenderTargets.indexOf(this);
@@ -48402,6 +48407,16 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        Object.defineProperty(SceneLoader, "CleanBoneMatrixWeights", {
+            get: function () {
+                return SceneLoader._CleanBoneMatrixWeights;
+            },
+            set: function (value) {
+                SceneLoader._CleanBoneMatrixWeights = value;
+            },
+            enumerable: true,
+            configurable: true
+        });
         SceneLoader._getDefaultPlugin = function () {
             return SceneLoader._registeredPlugins[".babylon"];
         };
@@ -48636,6 +48651,7 @@ var BABYLON;
     // Flags
     SceneLoader._ForceFullSceneLoadingForIncremental = false;
     SceneLoader._ShowLoadingScreen = true;
+    SceneLoader._CleanBoneMatrixWeights = false;
     SceneLoader._loggingLevel = SceneLoader.NO_LOGGING;
     // Members
     SceneLoader.OnPluginActivatedObservable = new BABYLON.Observable();

ファイルの差分が大きいため隠しています
+ 638 - 636
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


+ 1 - 0
dist/preview release/what's new.md

@@ -5,6 +5,7 @@
 - Engine can now be initialized with an existing webgl context ([deltakosh](https://github.com/deltakosh))
 
 ## Updates
+- Added `SceneLoader.CleanBoneMatrixWeights` to force the loader to normalize matrix weights when loading bones (off by default) ([deltakosh](https://github.com/deltakosh)) 
 - Added `camera.onViewMatrixChangedObservable` and `camera.onProjectionMatrixChangedObservable` ([deltakosh](https://github.com/deltakosh))
 - Added support for folders when drag'n'dropping into the sandbox ([deltakosh](https://github.com/deltakosh))
 - Better serialization support ([deltakosh](https://github.com/deltakosh))

+ 11 - 2
src/Loading/babylon.sceneLoader.ts

@@ -30,6 +30,7 @@
         // Flags
         private static _ForceFullSceneLoadingForIncremental = false;
         private static _ShowLoadingScreen = true;
+        private static _CleanBoneMatrixWeights = false;
 
         public static get NO_LOGGING(): number {
             return 0;
@@ -57,7 +58,7 @@
             SceneLoader._ForceFullSceneLoadingForIncremental = value;
         }
 
-        public static get ShowLoadingScreen() {
+        public static get ShowLoadingScreen(): boolean {
             return SceneLoader._ShowLoadingScreen;
         }
 
@@ -65,7 +66,7 @@
             SceneLoader._ShowLoadingScreen = value;
         }
 
-        public static get loggingLevel() {
+        public static get loggingLevel(): number {
             return SceneLoader._loggingLevel;
         }
 
@@ -73,6 +74,14 @@
             SceneLoader._loggingLevel = value;
         }
 
+        public static get CleanBoneMatrixWeights(): boolean {
+            return SceneLoader._CleanBoneMatrixWeights;
+        }
+
+        public static set CleanBoneMatrixWeights(value: boolean) {
+            SceneLoader._CleanBoneMatrixWeights = value;
+        }        
+
         // Members
         public static OnPluginActivatedObservable = new Observable<ISceneLoaderPlugin | ISceneLoaderPluginAsync>();
 

+ 3 - 0
src/Mesh/babylon.geometry.ts

@@ -980,6 +980,9 @@
         }
 
         private static _CleanMatricesWeights(matricesWeights: number[], influencers: number): void {
+            if (!SceneLoader.CleanBoneMatrixWeights) {
+                return;
+            }
             let size = matricesWeights.length;
             for (var i = 0; i < size; i += influencers) {
                 let weight = 0;