Parcourir la source

SkinningNode: Fix `previousBoneMatrices` (#30161)

* fix previousBoneMatrices

* fix no MRT
sunag il y a 1 an
Parent
commit
428eb72ab5
2 fichiers modifiés avec 10 ajouts et 1 suppressions
  1. 1 1
      src/nodes/accessors/SkinningNode.js
  2. 9 0
      src/nodes/lighting/ShadowNode.js

+ 1 - 1
src/nodes/accessors/SkinningNode.js

@@ -218,7 +218,7 @@ class SkinningNode extends Node {
 
 		const mrt = builder.renderer.getMRT();
 
-		return mrt && mrt.has( 'velocity' );
+		return ( mrt && mrt.has( 'velocity' ) ) || builder.object.userData.useVelocity === true;
 
 	}
 

+ 9 - 0
src/nodes/lighting/ShadowNode.js

@@ -662,12 +662,21 @@ class ShadowNode extends ShadowBaseNode {
 		const currentRenderObjectFunction = renderer.getRenderObjectFunction();
 		const currentMRT = renderer.getMRT();
 
+		const useVelocity = currentMRT ? currentMRT.has( 'velocity' ) : false;
+
 		renderer.setMRT( null );
 
 		renderer.setRenderObjectFunction( ( object, scene, _camera, geometry, material, group, ...params ) => {
 
 			if ( object.castShadow === true || ( object.receiveShadow && shadowType === VSMShadowMap ) ) {
 
+				if ( useVelocity ) {
+
+					object.userData = object.userData || {};
+					object.userData.useVelocity = true;
+
+				}
+
 				object.onBeforeShadow( renderer, object, camera, shadow.camera, geometry, scene.overrideMaterial, group );
 
 				renderer.renderObject( object, scene, _camera, geometry, material, group, ...params );

粤ICP备19079148号