Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-09-2009, 05:57   #1 (permalink)
Neuer User
 
Registriert seit: May 2007
Beiträge: 85
Exclamation Breite einer gebogenen Plane

Hallo nochmal,

ich fasse mich diesmal so einfach wie möglich.

ich erstelle ein material, füge dies einer plane hinzu und biege diese plane mit hilfe der bend methode von "as3dmod".

nach diesem bend-prozess möchte ich die breite der plane wissen.



Sprich, ich will wissen wieviele Pixel rechts neben dem bild schwarz sind.

Hier der Code den ich bisher dazu habe:

Code:
[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class BitmapViewportMaterialExample extends BasicView
	{
		private var bendPlane:Plane;
 		private var bendMaterial:BitmapFileMaterial;
 		private var bend:Bend;
 		private var mstack:ModifierStack;
 		
		public function BitmapViewportMaterialExample()
		{
 			// ************ CAMERA **********************
			camera.focus = 100;
			camera.zoom = 10;
			camera.z = -1000;
 			// ******************************************
 			
 			// *********** PLANE ***************************
			bendMaterial = new BitmapFileMaterial("image5.jpg");
			bendPlane = new Plane(bendMaterial, 640, 480, 24, 24);
			// **********************************************
			
			//********** BENDING *******************************************
			bend = new Bend(0, 0.5);
			//bend.constraint = ModConstant.RIGHT;
			bend.constraint = ModConstant.LEFT;
			bend.force = -1;
			// Create a modifierStack and apply the plane to it
			mstack = new ModifierStack(new LibraryPv3d(), bendPlane);
			// add the bend operation to the ModifierStack
			mstack.addModifier(bend);
			mstack.apply();
			//****************************************************************
			
			scene.addChild(bendPlane);
 
			startRendering();
			
			calculateBlackPixels();			
		}
 		
 		private function calculateBlackPixels():void
 		{
 			var bitmapData:BitmapData = new BitmapData(640, 480, false);
 			bitmapData.draw(viewport.containerSprite);
 			
 			for (var x:int = 0; x < 640; x++)
 			{
 				var color:int = bitmapData.getPixel32(x, 240); // 240 für die vertikale mitte des bildes
 				var colorStr:String = color.toString().toUpperCase();
 				trace(colorStr);
 			}
 		}
 		
		override protected function onRenderTick(event:Event = null):void
		{
			//render the main scene
			renderer.renderScene(scene, camera, viewport);
		}
	}

Hier der Sourcecode:
http://misterdan.netcup.net/BitmapVi...ialExample.zip


Ansatz:
Meiner Meinung nach stimmt was mit dem "viewport.containerSprite" nicht.
Es wird zwar alles wunderbar angezeigt, jedoch kommt beim tracen des "colorStr"-Strings immer -1 heraus.

Ich hoffe irgendjemand dadraußen kann mir weiterhelfen.
Ich bin total verzweifelt. Ich finde nichts dazu und mir fällt auch nichts mehr ein.

Vielen, vielen Dank für jegliche(n) Tip / Hilfe.

Cheers, Dan
MisterDan ist offline   Mit Zitat antworten
Alt 28-09-2009, 13:20   #2 (permalink)
Neuer User
 
Registriert seit: May 2009
Beiträge: 192
hmm nur so ne idee, aber vielleicht mal schauen wo nach dem bend die vertices liegen? eine reihe der vertices abzugreifen sollte ja reichen.
Plopsi ist offline   Mit Zitat antworten
Alt 28-09-2009, 22:45   #3 (permalink)
Neuer User
 
Registriert seit: May 2007
Beiträge: 85
Zitat:
Zitat von Plopsi Beitrag anzeigen
eine reihe der vertices abzugreifen sollte ja reichen.
Hi,

was genau meinst du damit?
Was ich eben versucht hab ist folgendes:

Code:
var sizeAfterBending:Number = (-1 * plane.geometry.vertices[0].x) + (plane.geometry.vertices[plane.geometry.vertices.length-1].x);
sprich, den x wert des ersten vertex mal -1 (da dieser immer minus ist) + den x wert des letzten vertex.
kommt grob hin aber nicht genau.

ich sag mal so.
wenn meine plane 400*533 groß ist, funktionierts.
wenn meine plane 640*480 groß ist, stimmt es um ca. eine breite von 20 pixeln nicht mehr.

Ich verzweifel hier total.

Danke für jede Hilfe.

P.S.: Sorry für späte Antworten. Sitz grad nicht in Germany.
MisterDan ist offline   Mit Zitat antworten
Alt 29-09-2009, 11:35   #4 (permalink)
Neuer User
 
Registriert seit: May 2009
Beiträge: 192
beim biegen muss das letzte vertice nicht unbedingt am weitesten rechts liegen, es kann ja weiter nach links gebogen sein, du wirst schon die vertices durchgehen müssen und schauen welches am weitesten rechts liegt
Plopsi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PV3D shader prob mit mehr als 4 segments bei einer plane salazar ActionScript 3 9 06-05-2009 10:47
Breite einer SWF dynamisch? Aule Web-Editoren 5 30-01-2006 17:48
Breite und Höhe einer swf bei steuerung mit pfeiltastem mop mop Flash MX 2004 3 01-07-2005 15:05
Breite einer Tabelle siflu HTML und CSS 6 20-05-2004 12:11
höhe und breite einer externen swf einstellen glitzer Flash MX 9 10-04-2003 10:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele