提交 93ca5271 编写于 作者: M Mr.doob

Updated builds.

上级 ae282bcb
......@@ -11652,6 +11652,14 @@
}
if ( object.isSkinnedMesh ) {
object.boneTransform( a, _vA );
object.boneTransform( b, _vB );
object.boneTransform( c, _vC );
}
var intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );
if ( intersection ) {
......@@ -23068,7 +23076,9 @@
cameraR.layers.enable( 2 );
cameraR.viewport = new Vector4();
var cameraVR = new ArrayCamera( [ cameraL, cameraR ] );
var cameras = [ cameraL, cameraR ];
var cameraVR = new ArrayCamera();
cameraVR.layers.enable( 1 );
cameraVR.layers.enable( 2 );
......@@ -23421,12 +23431,23 @@
renderer.setFramebuffer( baseLayer.framebuffer );
var cameraVRNeedsUpdate = false;
// check if it's necessary to rebuild cameraVR's camera list
if ( views.length !== cameraVR.cameras.length ) {
cameraVR.cameras.length = 0;
cameraVRNeedsUpdate = true;
}
for ( var i = 0; i < views.length; i ++ ) {
var view = views[ i ];
var viewport = baseLayer.getViewport( view );
var camera = cameraVR.cameras[ i ];
var camera = cameras[ i ];
camera.matrix.fromArray( view.transform.matrix );
camera.projectionMatrix.fromArray( view.projectionMatrix );
camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
......@@ -23437,6 +23458,12 @@
}
if ( cameraVRNeedsUpdate === true ) {
cameraVR.cameras.push( camera );
}
}
}
......@@ -27121,7 +27148,51 @@
return new this.constructor( this.geometry, this.material ).copy( this );
}
},
boneTransform: ( function () {
var basePosition = new Vector3();
var skinIndex = new Vector4();
var skinWeight = new Vector4();
var vector = new Vector3();
var matrix = new Matrix4();
return function ( index, target ) {
var skeleton = this.skeleton;
var geometry = this.geometry;
skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );
skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );
basePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );
target.set( 0, 0, 0 );
for ( var i = 0; i < 4; i ++ ) {
var weight = skinWeight.getComponent( i );
if ( weight !== 0 ) {
var boneIndex = skinIndex.getComponent( i );
matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );
target.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );
}
}
return target.applyMatrix4( this.bindMatrixInverse );
};
}() )
} );
此差异已折叠。
......@@ -11646,6 +11646,14 @@ function checkBufferGeometryIntersection( object, material, raycaster, ray, posi
}
if ( object.isSkinnedMesh ) {
object.boneTransform( a, _vA );
object.boneTransform( b, _vB );
object.boneTransform( c, _vC );
}
var intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );
if ( intersection ) {
......@@ -23060,7 +23068,9 @@ function WebXRManager( renderer, gl ) {
cameraR.layers.enable( 2 );
cameraR.viewport = new Vector4();
var cameraVR = new ArrayCamera( [ cameraL, cameraR ] );
var cameras = [ cameraL, cameraR ];
var cameraVR = new ArrayCamera();
cameraVR.layers.enable( 1 );
cameraVR.layers.enable( 2 );
......@@ -23413,12 +23423,23 @@ function WebXRManager( renderer, gl ) {
renderer.setFramebuffer( baseLayer.framebuffer );
var cameraVRNeedsUpdate = false;
// check if it's necessary to rebuild cameraVR's camera list
if ( views.length !== cameraVR.cameras.length ) {
cameraVR.cameras.length = 0;
cameraVRNeedsUpdate = true;
}
for ( var i = 0; i < views.length; i ++ ) {
var view = views[ i ];
var viewport = baseLayer.getViewport( view );
var camera = cameraVR.cameras[ i ];
var camera = cameras[ i ];
camera.matrix.fromArray( view.transform.matrix );
camera.projectionMatrix.fromArray( view.projectionMatrix );
camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
......@@ -23429,6 +23450,12 @@ function WebXRManager( renderer, gl ) {
}
if ( cameraVRNeedsUpdate === true ) {
cameraVR.cameras.push( camera );
}
}
}
......@@ -27113,7 +27140,51 @@ SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {
return new this.constructor( this.geometry, this.material ).copy( this );
}
},
boneTransform: ( function () {
var basePosition = new Vector3();
var skinIndex = new Vector4();
var skinWeight = new Vector4();
var vector = new Vector3();
var matrix = new Matrix4();
return function ( index, target ) {
var skeleton = this.skeleton;
var geometry = this.geometry;
skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );
skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );
basePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );
target.set( 0, 0, 0 );
for ( var i = 0; i < 4; i ++ ) {
var weight = skinWeight.getComponent( i );
if ( weight !== 0 ) {
var boneIndex = skinIndex.getComponent( i );
matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );
target.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );
}
}
return target.applyMatrix4( this.bindMatrixInverse );
};
}() )
} );
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册