提交 692f1376 编写于 作者: M Mr.doob

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

上级 0720aa8e
......@@ -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;
......
......@@ -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 ++ ];
}
......
......@@ -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 );
......
......@@ -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;
......@@ -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;
\ No newline at end of file
/**
* @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;
};
......@@ -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;
......
......@@ -37,3 +37,6 @@ THREE.Sprite.prototype.clone = function ( object ) {
};
// Backwards compatibility
THREE.Particle = THREE.Sprite;
\ No newline at end of file
......@@ -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;
......
......@@ -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,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;
......
......@@ -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"
]
......@@ -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"
]
......@@ -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",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册