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

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

?? trianglemesh3d.as

?? flash 360全景瀏覽
?? AS
字號:
/*
 *  PAPER    ON   ERVIS  NPAPER ISION  PE  IS ON  PERVI IO  APER  SI  PA
 *  AP  VI  ONPA  RV  IO PA     SI  PA ER  SI NP PE     ON AP  VI ION AP
 *  PERVI  ON  PE VISIO  APER   IONPA  RV  IO PA  RVIS  NP PE  IS ONPAPE
 *  ER     NPAPER IS     PE     ON  PE  ISIO  AP     IO PA ER  SI NP PER
 *  RV     PA  RV SI     ERVISI NP  ER   IO   PE VISIO  AP  VISI  PA  RV3D
 *  ______________________________________________________________________
 *  papervision3d.org + blog.papervision3d.org + osflash.org/papervision3d
 */

/*
 * Copyright 2006 (c) Carlos Ulloa Matesanz, noventaynueve.com.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */

// ______________________________________________________________________
//                                               GeometryObject3D: Mesh3D
package org.papervision3d.core.geom {
	import flash.utils.Dictionary;
	
	import org.papervision3d.core.culling.ITriangleCuller;
	import org.papervision3d.core.geom.renderables.Triangle3D;
	import org.papervision3d.core.geom.renderables.Triangle3DInstance;
	import org.papervision3d.core.geom.renderables.Vertex3D;
	import org.papervision3d.core.geom.renderables.Vertex3DInstance;
	import org.papervision3d.core.math.NumberUV;
	import org.papervision3d.core.proto.*;
	import org.papervision3d.core.render.command.RenderTriangle;
	import org.papervision3d.core.render.data.RenderSessionData;
	import org.papervision3d.core.render.draw.ITriangleDrawer;
	import org.papervision3d.objects.DisplayObject3D;	

	/**
	* The Mesh3D class lets you create and display solid 3D objects made of vertices and triangular polygons.
	*/
	public class TriangleMesh3D extends Vertices3D
	{
		// ___________________________________________________________________________________________________
		//                                                                                               N E W
		// NN  NN EEEEEE WW    WW
		// NNN NN EE     WW WW WW
		// NNNNNN EEEE   WWWWWWWW
		// NN NNN EE     WWW  WWW
		// NN  NN EEEEEE WW    WW
	
		/**
		* Creates a new Mesh object.
		*
		* The Mesh DisplayObject3D class lets you create and display solid 3D objects made of vertices and triangular polygons.
		* <p/>
		* @param	material	A MaterialObject3D object that contains the material properties of the object.
		* <p/>
		* @param	vertices	An array of Vertex3D objects for the vertices of the mesh.
		* <p/>
		* @param	faces		An array of Face3D objects for the faces of the mesh.
		* <p/>
		* @param	initObject	[optional] - An object that contains user defined properties with which to populate the newly created DisplayObject3D.
		* <p/>
		* It includes x, y, z, rotationX, rotationY, rotationZ, scaleX, scaleY scaleZ and a user defined extra object.
		* <p/>
		* If extra is not an object, it is ignored. All properties of the extra field are copied into the new instance. The properties specified with extra are publicly available.
		* <ul>
		* <li><b>sortFaces</b>: Z-depth sorting when rendering. Some objects might not need it. Default is false (faster).</li>
		* <li><b>showFaces</b>: Use only if each face is on a separate MovieClip container. Default is false.</li>
		* </ul>
		*
		*/
		public function TriangleMesh3D( material:MaterialObject3D, vertices:Array, faces:Array, name:String=null, initObject:Object=null )
		{
			super( vertices, name, initObject );
			this.geometry.faces = faces || new Array();
			this.material       = material || MaterialObject3D.DEFAULT;
		}
	
		// ___________________________________________________________________________________________________
		//                                                                                       P R O J E C T
		// PPPPP  RRRRR   OOOO      JJ EEEEEE  CCCC  TTTTTT
		// PP  PP RR  RR OO  OO     JJ EE     CC  CC   TT
		// PPPPP  RRRRR  OO  OO     JJ EEEE   CC       TT
		// PP     RR  RR OO  OO JJ  JJ EE     CC  CC   TT
		// PP     RR  RR  OOOO   JJJJ  EEEEEE  CCCC    TT
	
		/**
		* Projects three dimensional coordinates onto a two dimensional plane to simulate the relationship of the camera to subject.
		*
		* This is the first step in the process of representing three dimensional shapes two dimensionally.
		*
		* @param	camera	Camera3D object to render from.
		*/
		public override function project( parent :DisplayObject3D, renderSessionData:RenderSessionData):Number
		{
			// Vertices
			super.project(parent, renderSessionData);
			if(!this.culled){
				// Faces
				var faces:Array  = this.geometry.faces, 
									screenZs:Number = 0, 
									visibleFaces :Number = 0, 
									triCuller:ITriangleCuller = renderSessionData.triangleCuller, 
									vertex0:Vertex3DInstance, 
									vertex1:Vertex3DInstance, 
									vertex2:Vertex3DInstance, 
									iFace:Triangle3DInstance, 
									face:Triangle3D,
									mat:MaterialObject3D,
									rc:RenderTriangle;
				
				for each(face in faces){
					mat = face.material ? face.material : material;
					iFace = face.face3DInstance;
					vertex0 = face.v0.vertex3DInstance;
					vertex1 = face.v1.vertex3DInstance;
					vertex2 = face.v2.vertex3DInstance;
					if((iFace.visible = triCuller.testFace(face, vertex0, vertex1, vertex2))){
						screenZs += iFace.screenZ = (vertex0.z + vertex1.z + vertex2.z)/3;
						rc = face.renderCommand;
						visibleFaces++;
						rc.renderer = mat as ITriangleDrawer;
						rc.screenDepth = iFace.screenZ;
						renderSessionData.renderer.addToRenderList(rc);
					}else{
						renderSessionData.renderStatistics.culledTriangles++;
					}
				}
				return this.screenZ = screenZs / visibleFaces;
			}else{
				return 0;
			}
		}
	
	
		/**
		* Planar projection from the specified plane.
		*
		* @param	u	The texture horizontal axis. Can be "x", "y" or "z". The default value is "x".
		* @param	v	The texture vertical axis. Can be "x", "y" or "z". The default value is "y".
		*/
		public function projectTexture( u:String="x", v:String="y" ):void
		{
			var faces	:Array  = this.geometry.faces, 
				bBox	:Object = this.boundingBox(), 
				minX	:Number = bBox.min[u], 
				sizeX 	:Number = bBox.size[u],
				minY  	:Number = bBox.min[v],
				sizeY 	:Number = bBox.size[v];
	
			var objectMaterial :MaterialObject3D = this.material;
	
			for( var i:String in faces )
			{
				var myFace     :Triangle3D = faces[Number(i)],
					myVertices :Array  = myFace.vertices,
					a :Vertex3D = myVertices[0],
					b :Vertex3D = myVertices[1],
					c :Vertex3D = myVertices[2],
					uvA :NumberUV = new NumberUV( (a[u] - minX) / sizeX, (a[v] - minY) / sizeY ),
					uvB :NumberUV = new NumberUV( (b[u] - minX) / sizeX, (b[v] - minY) / sizeY ),
					uvC :NumberUV = new NumberUV( (c[u] - minX) / sizeX, (c[v] - minY) / sizeY );
	
				myFace.uv = [ uvA, uvB, uvC ];
			}
		}
	
		/**
		 * Divides all faces into 4.
		 */
		public function quarterFaces():void
		{
			var newverts:Array = new Array();
			var newfaces:Array = new Array();
			var faces:Array = this.geometry.faces;
			var face:Triangle3D;
			var i:int = faces.length;
			
			while( face = faces[--i] )
			{
				var v0:Vertex3D = face.v0;
				var v1:Vertex3D = face.v1;
				var v2:Vertex3D = face.v2;
				
				var v01:Vertex3D = new Vertex3D((v0.x+v1.x)/2, (v0.y+v1.y)/2, (v0.z+v1.z)/2);
				var v12:Vertex3D = new Vertex3D((v1.x+v2.x)/2, (v1.y+v2.y)/2, (v1.z+v2.z)/2);
				var v20:Vertex3D = new Vertex3D((v2.x+v0.x)/2, (v2.y+v0.y)/2, (v2.z+v0.z)/2);
				
				this.geometry.vertices.push(v01, v12, v20);
				
				var t0:NumberUV = face.uv[0];
				var t1:NumberUV = face.uv[1];
				var t2:NumberUV = face.uv[2];
				
				var t01:NumberUV = new NumberUV((t0.u+t1.u)/2, (t0.v+t1.v)/2);
				var t12:NumberUV = new NumberUV((t1.u+t2.u)/2, (t1.v+t2.v)/2);
				var t20:NumberUV = new NumberUV((t2.u+t0.u)/2, (t2.v+t0.v)/2);
				
				var f0:Triangle3D = new Triangle3D(this, [v0, v01, v20], face.material, [t0, t01, t20]);
				var f1:Triangle3D = new Triangle3D(this, [v01, v1, v12], face.material, [t01, t1, t12]);
				var f2:Triangle3D = new Triangle3D(this, [v20, v12, v2], face.material, [t20, t12, t2]);
				var f3:Triangle3D = new Triangle3D(this, [v01, v12, v20], face.material, [t01, t12, t20]);
			
				newfaces.push(f0, f1, f2, f3);
			}
			
			this.geometry.faces = newfaces;
			this.mergeVertices();
			this.geometry.ready = true;
		}
		
		/**
		* Merges duplicated vertices.
		*/
		public function mergeVertices():void
		{
			var uniqueDic  :Dictionary = new Dictionary(),
				uniqueList :Array = new Array();
	
			// Find unique vertices
			for each( var v:Vertex3D in this.geometry.vertices )
			{
				for each( var vu:Vertex3D in uniqueDic )
				{
					if( v.x == vu.x && v.y == vu.y && v.z == vu.z )
					{
						uniqueDic[ v ] = vu;
						break;
					}
				}
				
				if( ! uniqueDic[ v ] )
				{
					uniqueDic[ v ] = v;
					uniqueList.push( v );
				}
			}
	
			// Use unique vertices list
			this.geometry.vertices = uniqueList;
	
			// Update faces
			for each( var f:Triangle3D in geometry.faces )
			{
				f.v0 = uniqueDic[ f.v0 ];
				f.v1 = uniqueDic[ f.v1 ];
				f.v2 = uniqueDic[ f.v2 ];
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡在线观看 | 日本中文字幕一区| 在线观看av一区| 专区另类欧美日韩| 99精品视频一区二区三区| 国产亚洲女人久久久久毛片| 99精品欧美一区| 中文字幕日韩av资源站| 91在线小视频| 亚洲国产欧美在线| 日韩视频国产视频| 国内精品免费在线观看| 久久久久久亚洲综合影院红桃| 精品一区二区在线播放| 久久久激情视频| 成人成人成人在线视频| 亚洲图片欧美综合| 欧美精品久久一区| 久久99国产精品久久99果冻传媒| 欧美成人乱码一区二区三区| 国产精品一区专区| 日韩理论电影院| 91精品国产乱| 国产91精品在线观看| 亚洲欧洲制服丝袜| 6080午夜不卡| 高清久久久久久| 亚洲成人综合视频| 久久久精品tv| 欧美日韩视频第一区| 人人爽香蕉精品| 欧美国产日韩一二三区| 欧美三级中文字幕在线观看| 韩国av一区二区三区在线观看| 国产精品免费视频观看| 欧美久久久影院| 福利电影一区二区| 亚洲18色成人| 中文字幕免费一区| 欧美高清视频一二三区| 高清不卡一二三区| 亚洲成人三级小说| 国产欧美日韩亚州综合| 欧美亚男人的天堂| 久久91精品国产91久久小草| 亚洲欧美另类久久久精品| 日韩视频一区二区三区| 91在线视频免费观看| 韩国av一区二区三区在线观看| 亚洲制服丝袜一区| 久久久www免费人成精品| 欧美日韩国产区一| www.66久久| 国产精品一区二区三区99| 亚洲成人av免费| 最新不卡av在线| 欧美成人一区二区三区片免费 | 欧美一区二区三区不卡| 97精品电影院| 国产一区二区三区四区五区美女 | 国产精品国产自产拍高清av | 色婷婷精品久久二区二区蜜臂av | 97国产精品videossex| 经典三级一区二区| 日韩制服丝袜av| 尤物av一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日韩综合小视频| 亚洲蜜臀av乱码久久精品蜜桃| 久久久久久免费网| 精品国产a毛片| 日韩欧美一二区| 欧美精品成人一区二区三区四区| 不卡区在线中文字幕| 国产91丝袜在线播放| 精品一二三四在线| 老色鬼精品视频在线观看播放| 亚洲国产精品视频| 一区二区成人在线| 亚洲女人****多毛耸耸8| 国产精品久久久久婷婷二区次| 国产色产综合产在线视频| 国产日韩欧美激情| 欧美—级在线免费片| 国产欧美精品一区| 国产精品妹子av| 亚洲人成伊人成综合网小说| 亚洲蜜桃精久久久久久久| 一区二区高清免费观看影视大全| 亚洲欧美乱综合| 亚洲国产毛片aaaaa无费看 | 久久久久久影视| 国产欧美视频一区二区三区| 国产精品久久久久一区| 亚洲欧洲综合另类在线 | 日韩精品福利网| 日韩黄色免费电影| 麻豆精品国产91久久久久久| 日本aⅴ亚洲精品中文乱码| 日本欧美一区二区在线观看| 男人的天堂亚洲一区| 国产综合一区二区| 成人avav影音| 欧美亚洲精品一区| 欧美一区二区在线不卡| 欧美xxxx老人做受| 欧美韩日一区二区三区四区| 国产精品福利影院| 亚洲一区二区三区影院| 国产高清亚洲一区| 成人黄色小视频在线观看| 91小视频在线| 91精品国产麻豆国产自产在线| 26uuu久久综合| 亚洲色图制服丝袜| 日韩精品91亚洲二区在线观看 | 一区二区三区精密机械公司| 天堂久久久久va久久久久| 黄色日韩网站视频| gogogo免费视频观看亚洲一| 欧美日本在线看| 久久久青草青青国产亚洲免观| 亚洲人成7777| 狠狠色狠狠色综合| 91色.com| 2021久久国产精品不只是精品| 亚洲欧美日韩久久精品| 久久精品国产亚洲aⅴ| 成年人午夜久久久| 日韩一区二区三区视频在线| 亚洲三级免费电影| 久久爱另类一区二区小说| 91蜜桃网址入口| 精品日韩成人av| 亚洲最新在线观看| 国产电影一区在线| 欧美一区二区久久| 中文字幕亚洲在| 韩国理伦片一区二区三区在线播放 | www.亚洲激情.com| 日韩西西人体444www| 亚洲精品免费看| 国产精品白丝jk黑袜喷水| 欧美伦理电影网| 亚洲日韩欧美一区二区在线| 韩日av一区二区| 欧美一区二区精品在线| 亚洲成人黄色小说| 在线欧美小视频| 中文字幕在线不卡一区 | 欧美激情在线观看视频免费| 日韩国产在线观看一区| 色av一区二区| 亚洲图片欧美激情| 国产91在线看| 久久精品人人做人人综合| 日韩va欧美va亚洲va久久| 色婷婷综合久久久久中文 | 在线电影国产精品| 亚洲精品国产一区二区精华液 | 亚洲伦理在线精品| 福利一区二区在线| 国产女主播一区| 国产成人av一区二区三区在线| 69堂国产成人免费视频| 亚洲福利电影网| 欧美视频一区在线| 一区二区三区中文字幕在线观看| 99久久精品一区| 国产精品久久久久影院老司| thepron国产精品| 国产精品人妖ts系列视频| 在线中文字幕一区| 亚洲另类色综合网站| 99久久久国产精品免费蜜臀| 亚洲人精品午夜| 91黄色免费看| 亚洲成人精品一区二区| 欧美日韩中文字幕一区二区| 亚洲v精品v日韩v欧美v专区| 欧美男同性恋视频网站| 日韩中文字幕亚洲一区二区va在线 | 中文av一区二区| 波多野结衣在线aⅴ中文字幕不卡| 国产欧美一二三区| 91丨九色丨尤物| 亚洲一区二区三区在线看| 777久久久精品| 寂寞少妇一区二区三区| 久久久久久久网| 波多野结衣精品在线| 一区二区视频在线看| 欧美日韩aaaaaa| 国产成人午夜精品5599| 中文字幕亚洲视频| 91精品国产aⅴ一区二区| 久草这里只有精品视频| 国产精品麻豆欧美日韩ww| 91亚洲国产成人精品一区二三| 午夜av电影一区|