private void LoadParticleEffect() { if (particleEffect == null) { particleEffect = this.axRenderControl1.ObjectManager.CreateParticleEffect(rootId); string fileName = (strMediaPath + @"\png\water.png"); particleEffect.ImageName = fileName; particleEffect.EmissionMaxMoveSpeed = 200; particleEffect.EmissionMinMoveSpeed = 0; particleEffect.EmissionMinRate = 600; particleEffect.EmissionMaxRate = 7300; particleEffect.ParticleMaxLifeTime = 5.5; particleEffect.ParticleMinLifeTime = 1.5; particleEffect.ParticleBillboardType = gviParticleBillboardType.gviParticleBillboardOrientedCamera; particleEffect.WindDirection = 0; particleEffect.WindAcceleration = 0.2; particleEffect.ParticleBirthColor = System.Drawing.Color.White; particleEffect.ParticleDeathColor = System.Drawing.Color.Blue; particleEffect.EmissionMinScaleSpeed = 1; particleEffect.EmissionMaxScaleSpeed = 2; particleEffect.VerticalAcceleration = 0; particleEffect.EmissionMaxAngle = 0.078536816339744828; particleEffect.EmissionMinAngle = 0; particleEffect.EmissionMinParticleSize = 0.2; particleEffect.EmissionMaxParticleSize = 0.6; particleEffect.EmissionMinRotationSpeed = 0; particleEffect.EmissionMaxRotationSpeed = 0; particleEffect.Damping = 0.5; particleEffect.MaxVisibleDistance = 10000; particleEffect.ParticleAspectRatio = 1; angle.Set(0, 90, 0); particleEffect.EmissionDirectionEulerAngle = angle; particleEffect.SetTextureTileRange(0, 0, 0, 0); particleEffect.Start(-1); particleEffect.MaxVisibleDistance = 10000; IPoint pTemp = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ); pTemp.SpatialCRS = new CRSFactory().CreateFromWKT(this.axRenderControl1.GetCurrentCrsWKT()) as ISpatialCRS; IPoint p = line.GetPoint(0).Clone() as IPoint; p.Project(pTemp.SpatialCRS); pTemp.SetCoords(p.X, p.Y, p.Z, 0, 0); particleEffect.SetPointEmitter(pTemp); // 绑定到运动路径 IMotionable m = particleEffect as IMotionable; //position.Set(4.3, -7, 0); position.Set(0, 0, 0); m.Bind(motionPath, position, 0, 90, 0); } }
/// <summary> /// 设置粒子特效的位置 /// </summary> /// <param name="v3"></param> public void SetPosition(IPoint v3) { switch (EmitterType) { case EmitterTypeCategory.Point: particleEffect.SetPointEmitter(v3); break; case EmitterTypeCategory.Circle: particleEffect.SetCircleEmitter(v3, EmitterRadius); break; case EmitterTypeCategory.Box: particleEffect.SetBoxEmitter(v3, EmitterWidth, EmitterHeight, EmitterDepth); break; default: particleEffect.SetCircleEmitter(v3, 1.4); break; } }