소스 검색

call gltfShader.update in object.onBeforeRender

06wj 8 년 전
부모
커밋
42d9d311ba
3개의 변경된 파일8개의 추가작업 그리고 23개의 파일을 삭제
  1. 4 11
      examples/js/loaders/GLTF2Loader.js
  2. 4 11
      examples/js/loaders/GLTFLoader.js
  3. 0 1
      examples/webgl_loader_gltf.html

+ 4 - 11
examples/js/loaders/GLTF2Loader.js

@@ -136,15 +136,6 @@ THREE.GLTF2Loader = ( function () {
 
 
 			update: function ( scene, camera ) {
 			update: function ( scene, camera ) {
 
 
-				// update scene graph
-
-				scene.updateMatrixWorld();
-
-				// update camera matrices and frustum
-
-				camera.updateMatrixWorld();
-				camera.matrixWorldInverse.getInverse( camera.matrixWorld );
-
 				for ( var name in objects ) {
 				for ( var name in objects ) {
 
 
 					var object = objects[ name ];
 					var object = objects[ name ];
@@ -2177,8 +2168,10 @@ THREE.GLTF2Loader = ( function () {
 					// Register raw material meshes with GLTF2Loader.Shaders
 					// Register raw material meshes with GLTF2Loader.Shaders
 					if ( child.material && child.material.isRawShaderMaterial ) {
 					if ( child.material && child.material.isRawShaderMaterial ) {
 
 
-						var xshader = new GLTFShader( child, dependencies.nodes );
-						GLTF2Loader.Shaders.add( child.uuid, xshader );
+						child.gltfShader = new GLTFShader( child, dependencies.nodes );
+						child.onBeforeRender = function(renderer, scene, camera){
+							this.gltfShader.update(scene, camera);
+						};
 
 
 					}
 					}
 
 

+ 4 - 11
examples/js/loaders/GLTFLoader.js

@@ -135,15 +135,6 @@ THREE.GLTFLoader = ( function () {
 
 
 			update: function ( scene, camera ) {
 			update: function ( scene, camera ) {
 
 
-				// update scene graph
-
-				scene.updateMatrixWorld();
-
-				// update camera matrices and frustum
-
-				camera.updateMatrixWorld();
-				camera.matrixWorldInverse.getInverse( camera.matrixWorld );
-
 				for ( var name in objects ) {
 				for ( var name in objects ) {
 
 
 					var object = objects[ name ];
 					var object = objects[ name ];
@@ -2175,8 +2166,10 @@ THREE.GLTFLoader = ( function () {
 					// Register raw material meshes with GLTFLoader.Shaders
 					// Register raw material meshes with GLTFLoader.Shaders
 					if ( child.material && child.material.isRawShaderMaterial ) {
 					if ( child.material && child.material.isRawShaderMaterial ) {
 
 
-						var xshader = new GLTFShader( child, dependencies.nodes );
-						GLTFLoader.Shaders.add( child.uuid, xshader );
+						child.gltfShader = new GLTFShader( child, dependencies.nodes );
+						child.onBeforeRender = function(renderer, scene, camera){
+							this.gltfShader.update(scene, camera);
+						};
 
 
 					}
 					}
 
 

+ 0 - 1
examples/webgl_loader_gltf.html

@@ -338,7 +338,6 @@
 			function animate() {
 			function animate() {
 				requestAnimationFrame( animate );
 				requestAnimationFrame( animate );
 				if (mixer) mixer.update(clock.getDelta());
 				if (mixer) mixer.update(clock.getDelta());
-				THREE.GLTF2Loader.Shaders.update(scene, camera);
 				if (cameraIndex == 0)
 				if (cameraIndex == 0)
 					orbitControls.update();
 					orbitControls.update();
 				render();
 				render();