亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? max3ds.as

?? Papervision3d的源碼
?? AS
?? 第 1 頁 / 共 2 頁
字號:
package org.papervision3d.objects.parsers{	import flash.events.Event;	import flash.events.IOErrorEvent;	import flash.net.URLLoader;	import flash.net.URLLoaderDataFormat;	import flash.net.URLRequest;	import flash.utils.ByteArray;	import flash.utils.Endian;		import org.papervision3d.core.geom.TriangleMesh3D;	import org.papervision3d.core.geom.renderables.Triangle3D;	import org.papervision3d.core.geom.renderables.Vertex3D;	import org.papervision3d.core.math.NumberUV;	import org.papervision3d.core.proto.MaterialObject3D;	import org.papervision3d.events.FileLoadEvent;	import org.papervision3d.materials.BitmapFileMaterial;	import org.papervision3d.materials.ColorMaterial;	import org.papervision3d.materials.utils.MaterialsList;	import org.papervision3d.objects.DisplayObject3D;	/**	 * 3DS File parser.	 * 	 * @author Tim Knip (based on Away3D's Max3DS class : http://away3d.com)	 */ 	public class Max3DS extends DisplayObject3D	{		/** */		public var filename:String;				/**		 * Constuctor		 * 		 * @param	name		 */ 		public function Max3DS(name:String=null)		{			super(name);			_textureExtensionReplacements = new Object();		}				/**		 * Load.		 * 		 * @param	asset		 * @param	materials		 * @param	textureDir		 */ 		public function load(asset:*, materials:MaterialsList=null, textureDir:String="./image/"):void		{			this.materials = materials || new MaterialsList();						_textureDir = textureDir || _textureDir;						if(asset is ByteArray)			{				this.filename = "NoName.3ds";				parse(ByteArray(asset));			}			else if(asset is String)			{				this.filename = String(asset);								var loader:URLLoader = new URLLoader();								loader.dataFormat = URLLoaderDataFormat.BINARY;				loader.addEventListener(Event.COMPLETE, onFileLoadComplete);				loader.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);				loader.load(new URLRequest(this.filename));			}			else				throw new Error("Need String or ByteArray!");		}				/**		 * Replaces a texture extension with an alternative extension.		 * 		 * @param	originalExtension	For example "bmp", "gif", etc		 * @param	preferredExtension	For example "png"		 */ 		public function replaceTextureExtension(originalExtension:String, preferredExtension:String="png"):void		{			_textureExtensionReplacements[originalExtension] = preferredExtension;		}				/**		 * Build a mesh		 * 		 * @param	meshData		 */ 		private function buildMesh(meshData:MeshData):void		{			var i:int;			var mesh:TriangleMesh3D = new TriangleMesh3D(null, meshData.vertices, [], meshData.name);						for(i = 0; i < meshData.faces.length; i++)			{				var f:Array = meshData.faces[i];								var v0:Vertex3D = mesh.geometry.vertices[f[0]];				var v1:Vertex3D = mesh.geometry.vertices[f[1]];				var v2:Vertex3D = mesh.geometry.vertices[f[2]];								var hasUV:Boolean = (meshData.uvs.length == meshData.vertices.length);								var t0:NumberUV = hasUV ? meshData.uvs[f[0]] : new NumberUV();				var t1:NumberUV = hasUV ? meshData.uvs[f[1]] : new NumberUV();				var t2:NumberUV = hasUV ? meshData.uvs[f[2]] : new NumberUV();								mesh.geometry.faces.push(new Triangle3D(mesh, [v0, v1, v2], null, [t0, t1, t2]));			}						for(i = 0; i < meshData.materials.length; i++)			{				var mat:MaterialData = meshData.materials[i];				var material:MaterialObject3D = this.materials.getMaterialByName(mat.name) || MaterialObject3D.DEFAULT;								for(var j:int = 0; j < mat.faces.length; j++)				{					var faceIdx:int = mat.faces[j];					var tri:Triangle3D = mesh.geometry.faces[faceIdx];					tri.material = material;				}			}						mesh.geometry.ready = true;			mesh.rotationX = 90;			mesh.rotationY = 180;						addChild(mesh);		}				/**		 * 		 * @param	event		 */ 		private function onFileLoadComplete(event:Event=null):void		{			var loader:URLLoader = event.target as URLLoader;					parse(ByteArray(loader.data));		}				/**		 * 		 * @param	event		 */ 		private function onFileLoadError(event:IOErrorEvent):void		{			dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_ERROR, this.filename));		}				/**		 * Parse.		 * 		 * @param	data		 */ 		private function parse(data:ByteArray):void		{			if(!data)				throw new Error("Invalid ByteArray!");						_data = data;			_data.endian = Endian.LITTLE_ENDIAN;			_data.position = 0;						//first chunk is always the primary, so we simply read it and parse it			var chunk:Chunk3ds = new Chunk3ds();			readChunk(chunk);			parse3DS(chunk);						dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, this.filename));		}				/**		 * Read the base 3DS object.		 * 		 * @param chunk		 * 		 */				private function parse3DS(chunk:Chunk3ds):void		{			while (chunk.bytesRead < chunk.length)			{				var subChunk:Chunk3ds = new Chunk3ds();				readChunk(subChunk);				switch (subChunk.id)				{					case EDIT3DS:						parseEdit3DS(subChunk);						break;					case KEYF3DS:						skipChunk(subChunk);						break;					default:						skipChunk(subChunk);				}				chunk.bytesRead += subChunk.length;			}		}				/**		 * Read the Edit chunk		 * 		 * @param chunk		 */		private function parseEdit3DS(chunk:Chunk3ds):void		{			while (chunk.bytesRead < chunk.length)			{				var subChunk:Chunk3ds = new Chunk3ds();				readChunk(subChunk);				switch (subChunk.id)				{					case MATERIAL:						parseMaterial(subChunk);						//skipChunk(subChunk);						break;					case MESH:						var meshData:MeshData = new MeshData();						meshData.name = readASCIIZString(_data);												subChunk.bytesRead += meshData.name.length + 1;												meshData.vertices = new Array();						meshData.faces = new Array();						meshData.uvs = new Array();						meshData.materials = new Array();												parseMesh(subChunk, meshData);												buildMesh(meshData);						break;					default:						skipChunk(subChunk);				}								chunk.bytesRead += subChunk.length;			}		}				/**		 * Read a material chunk.		 * 		 * @param	chunk		 */ 		private function parseMaterial(chunk:Chunk3ds):String		{			var ret:String = null;			var mat:Object = new Object();			var subChunk:Chunk3ds = new Chunk3ds();			var colorChunk:Chunk3ds = new Chunk3ds();							mat.textures = new Array();						while (chunk.bytesRead < chunk.length)			{								readChunk(subChunk);				var p:uint = 0;								switch(subChunk.id)				{					case MAT_NAME:						mat.name = readASCIIZString(_data);						//trace(mat.name);						subChunk.bytesRead = subChunk.length;						break;					case MAT_AMBIENT:						p = _data.position;						readChunk(colorChunk);						mat.ambient = readColor(colorChunk);						_data.position = p + colorChunk.length;						//trace("ambient:"+mat.ambient.toString(16));						break;					case MAT_DIFFUSE:						p = _data.position;						readChunk(colorChunk);						mat.diffuse = readColor(colorChunk);						_data.position = p + colorChunk.length;						//trace("diffuse:"+mat.diffuse.toString(16));						break;					case MAT_SPECULAR:						p = _data.position;						readChunk(colorChunk);						mat.specular = readColor(colorChunk);						_data.position = p + colorChunk.length;						//trace("specular:"+mat.specular.toString(16));						break;					case MAT_TEXMAP:						mat.textures.push(parseMaterial(subChunk));						break;					case MAT_TEXFLNM:						ret = readASCIIZString(_data);						subChunk.bytesRead = subChunk.length;						break;					default:						skipChunk(subChunk);				}				chunk.bytesRead += subChunk.length;			}						if(mat.name && !this.materials.getMaterialByName(mat.name))			{				if(mat.textures.length)				{					var bitmap:String = mat.textures[0].toLowerCase();										for(var ext:String in _textureExtensionReplacements)					{						if(bitmap.indexOf("."+ext) == -1)							continue;						var pattern:RegExp = new RegExp("\."+ext, "i");						bitmap = bitmap.replace(pattern, "."+_textureExtensionReplacements[ext]);					}										this.materials.addMaterial(new BitmapFileMaterial(_textureDir+bitmap), mat.name);				}				else if(mat.diffuse)				{					this.materials.addMaterial(new ColorMaterial(mat.diffuse), mat.name);				}			}						return ret;		}				private function parseMesh(chunk:Chunk3ds, meshData:MeshData):void		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合| 久久久久久久久免费| 欧美在线免费观看亚洲| 色综合久久久久网| 中文字幕在线免费不卡| 日韩欧美国产一区二区三区| 久久久综合精品| 亚洲一区自拍偷拍| 丰满亚洲少妇av| 91精品欧美一区二区三区综合在 | 5566中文字幕一区二区电影 | 欧美日本精品一区二区三区| 欧美经典三级视频一区二区三区| 亚洲综合视频在线观看| 久久精品久久精品| 欧美在线观看18| 国产精品毛片高清在线完整版| 蜜桃av一区二区三区| 欧美午夜精品免费| 综合在线观看色| 成人午夜又粗又硬又大| 欧美r级在线观看| 蜜臀99久久精品久久久久久软件| 欧美午夜理伦三级在线观看| 亚洲精品国产精品乱码不99| 成人不卡免费av| 国产喂奶挤奶一区二区三区| 精品一区二区三区香蕉蜜桃| 91超碰这里只有精品国产| 夜夜操天天操亚洲| 色天天综合色天天久久| 亚洲人成网站精品片在线观看 | 欧美videofree性高清杂交| 丝袜诱惑亚洲看片| 欧美日韩国产大片| 亚洲成精国产精品女| 欧美亚洲一区二区三区四区| 亚洲人成电影网站色mp4| 91香蕉视频污| 一区二区三区蜜桃| 欧美日韩一区二区欧美激情| 午夜久久福利影院| 欧美一二三四在线| 国内精品在线播放| 国产欧美日韩在线观看| 99视频在线精品| 夜夜操天天操亚洲| 欧美一级精品在线| 激情久久五月天| 国产精品国产三级国产aⅴ入口| 不卡视频在线观看| 性做久久久久久久免费看| 欧美一区二区视频观看视频| 久久99久久99| 日本一区二区三级电影在线观看| 成人性生交大片| 亚洲蜜臀av乱码久久精品蜜桃| 欧美性受xxxx黑人xyx性爽| 日韩中文字幕一区二区三区| 欧美成人在线直播| 成人午夜短视频| 亚洲电影中文字幕在线观看| 欧美日韩国产123区| 精品一区二区三区av| 日韩理论电影院| 欧美日韩激情在线| 国产精品 欧美精品| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久久成人18免费观看| 国产午夜亚洲精品午夜鲁丝片| 97久久人人超碰| 蜜臀国产一区二区三区在线播放| 久久久久久麻豆| 欧美视频一区二区三区四区| 韩国v欧美v日本v亚洲v| 亚洲摸摸操操av| www久久精品| 91亚洲午夜精品久久久久久| 日韩不卡一二三区| 亚洲少妇最新在线视频| 欧美本精品男人aⅴ天堂| 色欧美片视频在线观看| 国产一区二区视频在线播放| 亚洲自拍都市欧美小说| 国产亚洲欧美日韩日本| 欧美日韩国产一级片| 成人黄色一级视频| 老司机午夜精品| 亚洲黄色小视频| 国产视频一区在线播放| 欧美一区二区三区视频在线观看| 成人免费黄色大片| 久久99国产乱子伦精品免费| 亚洲自拍偷拍av| 亚洲欧美色图小说| 久久精品免费在线观看| 日韩视频一区二区在线观看| 色婷婷综合久久久中文一区二区| 国产美女精品在线| 日韩精品电影一区亚洲| 亚洲精品高清视频在线观看| 欧美国产日韩亚洲一区| 精品日本一线二线三线不卡| 欧美日产国产精品| 在线观看av不卡| 成人avav影音| 成人精品小蝌蚪| 国产美女视频91| 国产精品123区| 国产很黄免费观看久久| 国产老肥熟一区二区三区| 秋霞国产午夜精品免费视频| 香蕉成人伊视频在线观看| 亚洲精品视频在线观看网站| 中文字幕一区av| 国产精品久久久久三级| 国产精品网站在线观看| 国产欧美一区二区在线| 久久久午夜精品| 国产女人aaa级久久久级 | 亚洲成人福利片| 亚洲一区二区三区精品在线| 亚洲精品大片www| 一区二区成人在线视频| 亚洲激情在线激情| 亚洲亚洲人成综合网络| 性欧美疯狂xxxxbbbb| 日韩中文字幕av电影| 免费成人结看片| 国产一区二三区| 国产成人av电影免费在线观看| 成人国产电影网| 91免费看片在线观看| 欧美日韩在线三级| 91精品黄色片免费大全| xnxx国产精品| 国产精品久久久爽爽爽麻豆色哟哟 | 蜜臀av亚洲一区中文字幕| 蜜桃av一区二区三区电影| 国产综合色在线视频区| 大陆成人av片| 一本到三区不卡视频| 欧美色图第一页| 欧美xxxx老人做受| 国产精品久久久久久福利一牛影视 | 一区二区高清视频在线观看| 石原莉奈一区二区三区在线观看| 免费人成黄页网站在线一区二区 | 成人一级视频在线观看| 色综合中文字幕| 日韩欧美精品在线视频| 久久久久久久久久美女| 一区二区在线电影| 另类人妖一区二区av| 99久久99久久精品国产片果冻| 欧美亚洲一区二区三区四区| 久久女同性恋中文字幕| 亚洲精品视频一区二区| 国产一本一道久久香蕉| 91国产丝袜在线播放| 久久综合九色欧美综合狠狠| 中文字幕综合网| 另类小说综合欧美亚洲| 91丨porny丨蝌蚪视频| 欧美成人性战久久| 一区二区三区精品久久久| 国产精品影视在线| 欧美日韩一区不卡| 日韩美女视频19| 国产麻豆欧美日韩一区| 欧美猛男男办公室激情| 国产精品国产三级国产| 激情综合网天天干| 欧美日韩和欧美的一区二区| 日本一区二区综合亚洲| 蜜桃视频一区二区三区| 色吊一区二区三区| 国产蜜臀av在线一区二区三区| 日韩国产欧美一区二区三区| 91视频一区二区三区| 久久蜜桃av一区二区天堂| 性欧美大战久久久久久久久| 色婷婷综合久色| 国产精品嫩草影院com| 久久国产生活片100| 欧美午夜片在线观看| 椎名由奈av一区二区三区| 国产成人精品1024| 日韩三级高清在线| 视频一区二区国产| 色婷婷av一区二区三区gif| 中文字幕在线不卡一区二区三区| 久久国产精品露脸对白| 91麻豆精品国产自产在线| 一区二区三区在线免费视频| 91在线国产观看| 国产精品女上位| 99re在线精品| 亚洲欧美一区二区不卡| 91丨porny丨蝌蚪视频|