Bläddra i källkod

Unified Particle into Sprite. Renamed ParticleBasicMaterial to ParticleSystemMaterial. Fixes #968.

Mr.doob 11 år sedan
förälder
incheckning
692f1376d1

+ 4 - 4
examples/js/renderers/SVGRenderer.js

@@ -126,12 +126,12 @@ THREE.SVGRenderer = function () {
 
 			_elemBox.makeEmpty();
 
-			if ( element instanceof THREE.RenderableParticle ) {
+			if ( element instanceof THREE.RenderableSprite ) {
 
 				_v1 = element;
 				_v1.x *= _svgWidthHalf; _v1.y *= -_svgHeightHalf;
 
-				renderParticle( _v1, element, material );
+				renderSprite( _v1, element, material );
 
 			} else if ( element instanceof THREE.RenderableLine ) {
 
@@ -258,7 +258,7 @@ THREE.SVGRenderer = function () {
 
 	}
 
-	function renderParticle( v1, element, material ) {
+	function renderSprite( v1, element, material ) {
 
 		/*
 		_svgNode = getCircleNode( _circleCount++ );
@@ -266,7 +266,7 @@ THREE.SVGRenderer = function () {
 		_svgNode.setAttribute( 'cy', v1.y );
 		_svgNode.setAttribute( 'r', element.scale.x * _svgWidthHalf );
 
-		if ( material instanceof THREE.ParticleCircleMaterial ) {
+		if ( material instanceof THREE.SpriteSVGMaterial ) {
 
 			_color.r = _ambientLight.r + _directionalLights.r + _pointLights.r;
 			_color.g = _ambientLight.g + _directionalLights.g + _pointLights.g;

+ 23 - 23
src/core/Projector.js

@@ -10,7 +10,7 @@ THREE.Projector = function () {
 	_vertex, _vertexCount, _vertexPool = [], _vertexPoolLength = 0,
 	_face, _face3Count, _face3Pool = [], _face3PoolLength = 0,
 	_line, _lineCount, _linePool = [], _linePoolLength = 0,
-	_particle, _particleCount, _particlePool = [], _particlePoolLength = 0,
+	_sprite, _spriteCount, _spritePool = [], _spritePoolLength = 0,
 
 	_renderData = { objects: [], sprites: [], lights: [], elements: [] },
 
@@ -112,7 +112,7 @@ THREE.Projector = function () {
 
 			}
 
-		} else if ( object instanceof THREE.Sprite || object instanceof THREE.Particle ) {
+		} else if ( object instanceof THREE.Sprite ) {
 
 			_renderData.sprites.push( getObject( object ) );
 
@@ -153,7 +153,7 @@ THREE.Projector = function () {
 
 		_face3Count = 0;
 		_lineCount = 0;
-		_particleCount = 0;
+		_spriteCount = 0;
 
 		_renderData.elements.length = 0;
 
@@ -382,7 +382,7 @@ THREE.Projector = function () {
 
 			_modelMatrix = object.matrixWorld;
 
-			if ( object instanceof THREE.Particle ) {
+			if ( object instanceof THREE.Sprite ) {
 
 				_vector4.set( _modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1 );
 				_vector4.applyMatrix4( _viewProjectionMatrix );
@@ -393,21 +393,21 @@ THREE.Projector = function () {
 
 				if ( _vector4.z > -1 && _vector4.z < 1 ) {
 
-					_particle = getNextParticleInPool();
-					_particle.id = object.id;
-					_particle.x = _vector4.x * invW;
-					_particle.y = _vector4.y * invW;
-					_particle.z = _vector4.z;
-					_particle.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;
 
-					_particle.rotation = object.rotation.z;
+					_sprite.rotation = object.rotation;
 
-					_particle.scale.x = object.scale.x * Math.abs( _particle.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
-					_particle.scale.y = object.scale.y * Math.abs( _particle.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] ) );
 
-					_particle.material = object.material;
+					_sprite.material = object.material;
 
-					_renderData.elements.push( _particle );
+					_renderData.elements.push( _sprite );
 
 				}
 
@@ -488,19 +488,19 @@ THREE.Projector = function () {
 
 	}
 
-	function getNextParticleInPool() {
+	function getNextSpriteInPool() {
 
-		if ( _particleCount === _particlePoolLength ) {
+		if ( _spriteCount === _spritePoolLength ) {
 
-			var particle = new THREE.RenderableParticle();
-			_particlePool.push( particle );
-			_particlePoolLength ++;
-			_particleCount ++
-			return particle;
+			var sprite = new THREE.RenderableSprite();
+			_spritePool.push( sprite );
+			_spritePoolLength ++;
+			_spriteCount ++
+			return sprite;
 
 		}
 
-		return _particlePool[ _particleCount ++ ];
+		return _spritePool[ _spriteCount ++ ];
 
 	}
 

+ 1 - 1
src/core/Raycaster.js

@@ -36,7 +36,7 @@
 
 	var intersectObject = function ( object, raycaster, intersects ) {
 
-		if ( object instanceof THREE.Particle ) {
+		if ( object instanceof THREE.Sprite ) {
 
 			matrixPosition.getPositionFromMatrix( object.matrixWorld );
 			var distance = raycaster.ray.distanceToPoint( matrixPosition );

+ 8 - 4
src/materials/ParticleBasicMaterial.js → src/materials/ParticleSystemMaterial.js

@@ -19,7 +19,7 @@
  * }
  */
 
-THREE.ParticleBasicMaterial = function ( parameters ) {
+THREE.ParticleSystemMaterial = function ( parameters ) {
 
 	THREE.Material.call( this );
 
@@ -38,11 +38,11 @@ THREE.ParticleBasicMaterial = function ( parameters ) {
 
 };
 
-THREE.ParticleBasicMaterial.prototype = Object.create( THREE.Material.prototype );
+THREE.ParticleSystemMaterial.prototype = Object.create( THREE.Material.prototype );
 
-THREE.ParticleBasicMaterial.prototype.clone = function () {
+THREE.ParticleSystemMaterial.prototype.clone = function () {
 
-	var material = new THREE.ParticleBasicMaterial();
+	var material = new THREE.ParticleSystemMaterial();
 
 	THREE.Material.prototype.clone.call( this, material );
 
@@ -60,3 +60,7 @@ THREE.ParticleBasicMaterial.prototype.clone = function () {
 	return material;
 
 };
+
+// backwards compatibility
+
+THREE.ParticleBasicMaterial = THREE.ParticleSystemMaterial;

+ 8 - 4
src/materials/ParticleCanvasMaterial.js → src/materials/SpriteCanvasMaterial.js

@@ -9,7 +9,7 @@
  * }
  */
 
-THREE.ParticleCanvasMaterial = function ( parameters ) {
+THREE.SpriteCanvasMaterial = function ( parameters ) {
 
 	THREE.Material.call( this );
 
@@ -20,11 +20,11 @@ THREE.ParticleCanvasMaterial = function ( parameters ) {
 
 };
 
-THREE.ParticleCanvasMaterial.prototype = Object.create( THREE.Material.prototype );
+THREE.SpriteCanvasMaterial.prototype = Object.create( THREE.Material.prototype );
 
-THREE.ParticleCanvasMaterial.prototype.clone = function () {
+THREE.SpriteCanvasMaterial.prototype.clone = function () {
 
-	var material = new THREE.ParticleCanvasMaterial();
+	var material = new THREE.SpriteCanvasMaterial();
 
 	THREE.Material.prototype.clone.call( this, material );
 
@@ -34,3 +34,7 @@ THREE.ParticleCanvasMaterial.prototype.clone = function () {
 	return material;
 
 };
+
+// backwards compatibility
+
+THREE.ParticleCanvasMaterial = THREE.SpriteCanvasMaterial;

+ 0 - 23
src/objects/Particle.js

@@ -1,23 +0,0 @@
-/**
- * @author mrdoob / http://mrdoob.com/
- */
-
-THREE.Particle = function ( material ) {
-
-	THREE.Object3D.call( this );
-
-	this.material = material;
-
-};
-
-THREE.Particle.prototype = Object.create( THREE.Object3D.prototype );
-
-THREE.Particle.prototype.clone = function ( object ) {
-
-	if ( object === undefined ) object = new THREE.Particle( this.material );
-
-	THREE.Object3D.prototype.clone.call( this, object );
-
-	return object;
-
-};

+ 1 - 1
src/objects/ParticleSystem.js

@@ -7,7 +7,7 @@ THREE.ParticleSystem = function ( geometry, material ) {
 	THREE.Object3D.call( this );
 
 	this.geometry = geometry !== undefined ? geometry : new THREE.Geometry();
-	this.material = material !== undefined ? material : new THREE.ParticleBasicMaterial( { color: Math.random() * 0xffffff } );
+	this.material = material !== undefined ? material : new THREE.ParticleSystemMaterial( { color: Math.random() * 0xffffff } );
 
 	this.sortParticles = false;
 	this.frustumCulled = false;

+ 3 - 0
src/objects/Sprite.js

@@ -37,3 +37,6 @@ THREE.Sprite.prototype.clone = function ( object ) {
 
 };
 
+// Backwards compatibility
+
+THREE.Particle = THREE.Sprite;

+ 8 - 7
src/renderers/CanvasRenderer.js

@@ -289,12 +289,12 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 			_elemBox.makeEmpty();
 
-			if ( element instanceof THREE.RenderableParticle ) {
+			if ( element instanceof THREE.RenderableSprite ) {
 
 				_v1 = element;
 				_v1.x *= _canvasWidthHalf; _v1.y *= _canvasHeightHalf;
 
-				renderParticle( _v1, element, material );
+				renderSprite( _v1, element, material );
 
 			} else if ( element instanceof THREE.RenderableLine ) {
 
@@ -387,13 +387,13 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 			} else if ( light instanceof THREE.DirectionalLight ) {
 
-				// for particles
+				// for sprites
 
 				_directionalLights.add( lightColor );
 
 			} else if ( light instanceof THREE.PointLight ) {
 
-				// for particles
+				// for sprites
 
 				_pointLights.add( lightColor );
 
@@ -445,7 +445,7 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 	}
 
-	function renderParticle( v1, element, material ) {
+	function renderSprite( v1, element, material ) {
 
 		setOpacity( material.opacity );
 		setBlending( material.blending );
@@ -453,7 +453,8 @@ THREE.CanvasRenderer = function ( parameters ) {
 		var width, height, scaleX, scaleY,
 		bitmap, bitmapWidth, bitmapHeight;
 
-		if ( material instanceof THREE.ParticleBasicMaterial ) {
+		if ( material instanceof THREE.Sprite ||
+			 material instanceof THREE.ParticleSystemMaterial ) { // Backwards compatibility
 
 			if ( material.map === null ) {
 
@@ -529,7 +530,7 @@ THREE.CanvasRenderer = function ( parameters ) {
 			_context.stroke();
 			*/
 
-		} else if ( material instanceof THREE.ParticleCanvasMaterial ) {
+		} else if ( material instanceof THREE.SpriteCanvasMaterial ) {
 
 			width = element.scale.x * _canvasWidthHalf;
 			height = element.scale.y * _canvasHeightHalf;

+ 2 - 2
src/renderers/WebGLRenderer.js

@@ -4085,7 +4085,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			shaderID = 'dashed';
 
-		} else if ( material instanceof THREE.ParticleBasicMaterial ) {
+		} else if ( material instanceof THREE.ParticleSystemMaterial ) {
 
 			shaderID = 'particle_basic';
 
@@ -4352,7 +4352,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 				refreshUniformsLine( m_uniforms, material );
 				refreshUniformsDash( m_uniforms, material );
 
-			} else if ( material instanceof THREE.ParticleBasicMaterial ) {
+			} else if ( material instanceof THREE.ParticleSystemMaterial ) {
 
 				refreshUniformsParticle( m_uniforms, material );
 

+ 2 - 2
src/renderers/renderables/RenderableParticle.js → src/renderers/renderables/RenderableSprite.js

@@ -2,7 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  */
 
-THREE.RenderableParticle = function () {
+THREE.RenderableSprite = function () {
 
 	this.id = 0;
 
@@ -12,7 +12,7 @@ THREE.RenderableParticle = function () {
 	this.y = 0;
 	this.z = 0;
 
-	this.rotation = null;
+	this.rotation = 0;
 	this.scale = new THREE.Vector2();
 
 	this.material = null;

+ 4 - 4
utils/build/includes/canvas.json

@@ -47,11 +47,11 @@
 	"src/materials/MeshDepthMaterial.js",
 	"src/materials/MeshNormalMaterial.js",
 	"src/materials/MeshFaceMaterial.js",
-	"src/materials/ParticleBasicMaterial.js",
-	"src/materials/ParticleCanvasMaterial.js",
+	"src/materials/ParticleSystemMaterial.js",
+	"src/materials/SpriteMaterial.js",
+	"src/materials/SpriteCanvasMaterial.js",
 	"src/textures/Texture.js",
 	"src/textures/DataTexture.js",
-	"src/objects/Particle.js",
 	"src/objects/Line.js",
 	"src/objects/Mesh.js",
 	"src/objects/Bone.js",
@@ -61,6 +61,6 @@
 	"src/renderers/renderables/RenderableVertex.js",
 	"src/renderers/renderables/RenderableFace3.js",
 	"src/renderers/renderables/RenderableObject.js",
-	"src/renderers/renderables/RenderableParticle.js",
+	"src/renderers/renderables/RenderableSprite.js",
 	"src/renderers/renderables/RenderableLine.js"
 ]

+ 3 - 4
utils/build/includes/common.json

@@ -59,14 +59,13 @@
 	"src/materials/MeshDepthMaterial.js",
 	"src/materials/MeshNormalMaterial.js",
 	"src/materials/MeshFaceMaterial.js",
-	"src/materials/ParticleBasicMaterial.js",
-	"src/materials/ParticleCanvasMaterial.js",
+	"src/materials/ParticleSystemMaterial.js",
 	"src/materials/ShaderMaterial.js",
 	"src/materials/SpriteMaterial.js",
+	"src/materials/SpriteCanvasMaterial.js",
 	"src/textures/Texture.js",
 	"src/textures/CompressedTexture.js",
 	"src/textures/DataTexture.js",
-	"src/objects/Particle.js",
 	"src/objects/ParticleSystem.js",
 	"src/objects/Line.js",
 	"src/objects/Mesh.js",
@@ -86,6 +85,6 @@
 	"src/renderers/renderables/RenderableVertex.js",
 	"src/renderers/renderables/RenderableFace3.js",
 	"src/renderers/renderables/RenderableObject.js",
-	"src/renderers/renderables/RenderableParticle.js",
+	"src/renderers/renderables/RenderableSprite.js",
 	"src/renderers/renderables/RenderableLine.js"
 ]

+ 2 - 3
utils/build/includes/webgl.json

@@ -52,13 +52,12 @@
 	"src/materials/MeshDepthMaterial.js",
 	"src/materials/MeshNormalMaterial.js",
 	"src/materials/MeshFaceMaterial.js",
-	"src/materials/ParticleBasicMaterial.js",
+	"src/materials/ParticleSystemMaterial.js",
 	"src/materials/ShaderMaterial.js",
 	"src/materials/SpriteMaterial.js",
 	"src/textures/Texture.js",
 	"src/textures/CompressedTexture.js",
 	"src/textures/DataTexture.js",
-	"src/objects/Particle.js",
 	"src/objects/ParticleSystem.js",
 	"src/objects/Line.js",
 	"src/objects/Mesh.js",
@@ -77,7 +76,7 @@
 	"src/renderers/renderables/RenderableVertex.js",
 	"src/renderers/renderables/RenderableFace3.js",
 	"src/renderers/renderables/RenderableObject.js",
-	"src/renderers/renderables/RenderableParticle.js",
+	"src/renderers/renderables/RenderableSprite.js",
 	"src/renderers/renderables/RenderableLine.js",
 	"src/extras/core/Gyroscope.js",
 	"src/extras/helpers/CameraHelper.js",