Показать сообщение отдельно
Старый 17.08.2010, 16:42
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 19  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
это из nd3d - смотри коммент про smoothing
Код AS3:
		public static function renderUV(stage:Sprite, material:Material, a:Vertex, b:Vertex, c:Vertex, uvMap:Array, colorFactor:Number, ambientColor:uint):void 
		{
 
			var x0:Number = a.screenX;
			var y0:Number = a.screenY;
			var x1:Number = b.screenX;
			var y1:Number = b.screenY;
			var x2:Number = c.screenX;
			var y2:Number = c.screenY;
 
			var texture:BitmapData = material.texture;
 
			var w:Number = texture.width;
			var h:Number = texture.height;
 
			var u0:Number = uvMap[0].u * w;
			var v0:Number = uvMap[0].v * h;
			var u1:Number = uvMap[1].u * w;
			var v1:Number = uvMap[1].v * h;
			var u2:Number = uvMap[2].u * w;
			var v2:Number = uvMap[2].v * h;
 
			var sMat:Matrix = new Matrix();
			var tMat:Matrix = new Matrix();
 
			tMat.tx = u0;
			tMat.ty = v0;
 
			tMat.a = (u1 - u0) / w;
			tMat.b = (v1 - v0) / w;
			tMat.c = (u2 - u0) / h;
			tMat.d = (v2 - v0) / h;
 
			sMat.a = (x1 - x0) / w;
			sMat.b = (y1 - y0) / w;
			sMat.c = (x2 - x0) / h;
			sMat.d = (y2 - y0) / h;
 
			sMat.tx = x0;
			sMat.ty = y0;
 
			tMat.invert();
			tMat.concat(sMat);
 
			var smoothing:Boolean = material.smoothed;
			// check if points are not to close to each other, disable smoothing
			// beginBitmapFill draw bug?!
			if(smoothing) 
			{ 
				var dx:Number = x1 - x0;
				var dx2:Number = x2 - x1;
				var dy:Number = y1 - y0;
				var dy2:Number = y2 - y1;
 
				if(Math.abs(dx / dy - dx2 / dy2) < 1) 
				{
					smoothing = false;
				}
			}
 
                        var gfx:Graphics = stage.graphics;
 
			gfx.beginBitmapFill(texture, tMat, false, smoothing);
			gfx.moveTo(x0, y0);
			gfx.lineTo(x1, y1);
			gfx.lineTo(x2, y2);
			gfx.lineTo(x0, y0);
			gfx.endFill();
насчёт разных точек -
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 17.08.2010 в 16:50.