|
@@ -382,34 +382,30 @@ THREE.Projector = function () {
|
|
|
|
|
|
_modelMatrix = object.matrixWorld;
|
|
|
|
|
|
- if ( object instanceof THREE.Sprite ) {
|
|
|
+ _vector4.set( _modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1 );
|
|
|
+ _vector4.applyMatrix4( _viewProjectionMatrix );
|
|
|
|
|
|
- _vector4.set( _modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1 );
|
|
|
- _vector4.applyMatrix4( _viewProjectionMatrix );
|
|
|
+ var invW = 1 / _vector4.w;
|
|
|
|
|
|
- var invW = 1 / _vector4.w;
|
|
|
+ _vector4.z *= invW;
|
|
|
|
|
|
- _vector4.z *= invW;
|
|
|
+ if ( _vector4.z >= -1 && _vector4.z <= 1 ) {
|
|
|
|
|
|
- if ( _vector4.z >= -1 && _vector4.z <= 1 ) {
|
|
|
+ _sprite = getNextSpriteInPool();
|
|
|
+ _sprite.id = object.id;
|
|
|
+ _sprite.x = _vector4.x * invW;
|
|
|
+ _sprite.y = _vector4.y * invW;
|
|
|
+ _sprite.z = _vector4.z;
|
|
|
+ _sprite.object = object;
|
|
|
|
|
|
- _sprite = getNextSpriteInPool();
|
|
|
- _sprite.id = object.id;
|
|
|
- _sprite.x = _vector4.x * invW;
|
|
|
- _sprite.y = _vector4.y * invW;
|
|
|
- _sprite.z = _vector4.z;
|
|
|
- _sprite.object = object;
|
|
|
+ _sprite.rotation = object.rotation;
|
|
|
|
|
|
- _sprite.rotation = object.rotation;
|
|
|
+ _sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
|
|
|
+ _sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[5] ) / ( _vector4.w + camera.projectionMatrix.elements[13] ) );
|
|
|
|
|
|
- _sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
|
|
|
- _sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[5] ) / ( _vector4.w + camera.projectionMatrix.elements[13] ) );
|
|
|
+ _sprite.material = object.material;
|
|
|
|
|
|
- _sprite.material = object.material;
|
|
|
-
|
|
|
- _renderData.elements.push( _sprite );
|
|
|
-
|
|
|
- }
|
|
|
+ _renderData.elements.push( _sprite );
|
|
|
|
|
|
}
|
|
|
|