⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fogfilter.as

📁 Papervision3d的源码
💻 AS
字号:
package org.papervision3d.core.render.filter{	import org.papervision3d.core.render.command.RenderFog;	import org.papervision3d.core.render.command.RenderableListItem;	import org.papervision3d.materials.special.FogMaterial;	import org.papervision3d.view.layer.ViewportLayer;	import org.papervision3d.objects.DisplayObject3D;	import org.papervision3d.core.geom.renderables.AbstractRenderable;		public class FogFilter extends BasicRenderFilter	{				private var _maxDepth:Number;		public function set maxDepth(value:Number):void{			_maxDepth = value;			if(_maxDepth < _minDepth)				_minDepth = _maxDepth-1;		}				public function get maxDepth():Number{			return _maxDepth;		}				private var _minDepth:Number;		public function set minDepth(value:Number):void{			_minDepth = value;			if(_maxDepth < _minDepth)				_maxDepth = minDepth+1;		}				public function get minDepth():Number{			return _minDepth;		}				public var segments:Number;		public var material:FogMaterial;		public var viewportLayer:ViewportLayer;		private var do3ds:Array = new Array();		public function FogFilter(material:FogMaterial, segments:uint=8, minDepth:Number=200, maxDepth:Number=4000, useViewportLayer:ViewportLayer = null)		{			super();			this.material = material;			this.segments = segments;			this.minDepth = minDepth;			this.maxDepth = maxDepth;			this.viewportLayer = useViewportLayer;						for(var i:int = 0;i<segments;i++){				do3ds[i] = new DisplayObject3D();			}		}					public override function filter(array:Array):int{						var segOffset:Number = (_maxDepth-_minDepth)/segments;			var segDepth:Number = _minDepth;			var cSeg:Number = 0;			var alpha:Number = 1-(segments/100);			var alphaOffset:Number = alpha/segments; 							for(var i:int=array.length-1;i>=0;i--){				trace(array[i].screenDepth);				if(array[i].screenDepth >= maxDepth)					removeRenderItem(array, i);			} 									for(var ii:int=0;ii<segments;ii++){								if(this.viewportLayer){										array.push(new RenderFog(material, ((alpha/segments)*ii+((ii)/100)), segDepth, do3ds[ii]));					var vpl:ViewportLayer = new ViewportLayer(null, do3ds[ii], true);					vpl.forceDepth = true;					vpl.screenDepth = segDepth;					viewportLayer.addLayer(vpl);					//trace(viewportLayer.getChildLayer(do3d, false));				}else{					array.push(new RenderFog(material, ((alpha/segments)*ii+((ii)/100)), segDepth));				}									segDepth += segOffset;						}												return 0;					}				private function visibleDepth(element:RenderableListItem, index:int, arr:Array):Boolean {            return (element.screenDepth < _maxDepth);        }				private function removeRenderItem(ar:Array, index:Number):void{			ar = ar.splice(index, 1);		}					}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -