Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-12-2008, 23:30   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
Performance Problem in Papervision 3D mit BitmapMaterial

Hallo Flashgemeinde,

ich habe ein kleines Performanceproblem in Papervision. Sobald ich ein BitmapMaterial benutze, die smooth-Eigenschaft von diesem Material auf true setze habe ich immer dann kleine Performanceeinbrüche wenn das Bitmap zur Kamera Flach steht. Also wenn das Bitmap in so einem Winkel steht das man es nur noch ganz schmal sieht.

Normalerweise müsste gerade dann wenn das Objekt kaum noch zu sehen ist, die Performance am besten sein. Aber genau an dieser Stelle Stock die Animation bei mir ganz kurz. Ich denke mir mal das es wieder für genau diese Zwecke eine bestimmte Einstellung gibt. Habe auch schon Seiten gesehen, auch in PV3D gemacht worden sind, die viel mehr Bilder verwenden und es trotzdem zu keinen Performanceeinbrüchen kommt, natürlich auch mit smooth=true. Das Image ist nur 180*211 Pixel.

Hier ist meine Demo.

Hier der Code
Code:
package Papervision3DExercise
{
	import caurina.transitions.*;
	
	import flash.filters.BlurFilter;
	
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.shadematerials.CellMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Cone;
	import org.papervision3d.objects.primitives.Cube;

	

	
	


    public class TweenerExample extends PaperBase {
		private var pointLight:PointLight3D;
		
		private var cube:Cube;
		private var cube2:Cube;
		private var cone:Cone;
		private var object:DisplayObject3D;
		
		private var materials:MaterialsList;
		private var materials2:MaterialsList;
		private var wireMat:WireframeMaterial;
		private var cellMat:CellMaterial;
		private var bitmapMat:BitmapMaterial;
		private var colMat:ColorMaterial;
		
		private var counter:Number = 0;
			
						






		public function TweenerExample():void {
       		init(0, 0, true);
		}



		override protected function init3d():void {
			//reflectionView wird eingestellt
			reflectionView.surfaceHeight = -170;
			reflectionView.viewportReflection.blendMode = "hardlight";
			reflectionView.viewportReflection.alpha = 0.15;
			reflectionView.viewportReflection.filters = [new BlurFilter(8, 8)];
						
			//Licht wird erzeugt und transformiert
			pointLight = new PointLight3D();
			pointLight.x = 2000;
			pointLight.y = 2000;
			pointLight.z = -3000;
			
			//Materialien werden erzeugt
			materials = new MaterialsList();
			materials2 = new MaterialsList();
			colMat = new ColorMaterial(0x550011, 1);
			wireMat = new WireframeMaterial(0x55559, 100, 1);
			cellMat = new CellMaterial(pointLight, 0xaa3344, 0, 8);
			bitmapMat = new BitmapFileMaterial("./resource/images/Jarek.jpg", true);
			bitmapMat.smooth = true;
			bitmapMat.interactive = true;
			materials.addMaterial(cellMat, "all");
			materials2.addMaterial(colMat, "all");
			materials2.addMaterial(bitmapMat, "front");
			materials2.addMaterial(bitmapMat, "back");
			
			//Objekte werden erzeugt
			object = new DisplayObject3D();
			cone = new Cone(wireMat, 40, 160);
			cube = new Cube(materials, 70, 70, 160, 2, 2, 2);
			cube2 = new Cube(materials2, 130, 7, 160, 1, 1, 1);
						
			//Objekte werden in "object" hinzugefügt
			object.addChild(cone, "cone");
			object.addChild(cube, "cube");
			object.addChild(cube2, "cube2");
						
			//objekte werden positioniert
			object.moveBackward(200);
			cone.z = -160;
			cone.x = -160;
			cube.z = -160;
			cube.x = 160;
			cube2.z = 200;
			camera.y = 200;
			camera.rotationX = 15;	
						
			scene.addChild(object);
			
			//Ereignisse für plane werden gesetzt
			cube2.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, Cube2OverHandler);
			cube2.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, Cube2OutHandler);	
			cube2.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, Cube2ClickHandler);				
		}
 
 
 		
 		/*--------------------------------
 		Handler für Plane
 		--------------------------------*/
 		private function Cube2ClickHandler(event:InteractiveScene3DEvent):void{
 			Tweener.addTween(cube2, {x:100, time:1, transition:"easeInElastic"});
			Tweener.addTween(cube2, {z:100, time:1, transition:"easeInElastic"});
			Tweener.addTween(cube2, {y:100, time:1, transition:"easeInElastic"});
			
			Tweener.addTween(cube2, {x:300, time:1, delay:1, transition:"easeOutElastic"});
			Tweener.addTween(cube2, {z:300, time:1, delay:1, transition:"easeOutElastic"});
			
			Tweener.addTween(cube2, {x:0, time:1, delay:2, transition:"easeInOutBounce"});
			Tweener.addTween(cube2, {z:200, time:1, delay:2, transition:"easeInOutBounce"});
			Tweener.addTween(cube2, {y:0, time:1, delay:2, transition:"easeInElastic"});
 		}
 		private function Cube2OverHandler(event:InteractiveScene3DEvent):void{
 			reflectionView.buttonMode = true;
 			trace("over");
 		}
 		private function Cube2OutHandler(event:InteractiveScene3DEvent):void{
 			reflectionView.buttonMode = false;
 			trace("out");
 		}
 		
  
  
		override protected function processFrame():void {
			object.yaw(1);
		}
		
	}
}
Ich bedanke mich im Vorraus für jeden Beitrag bzw. Hilfe.
Taschkin ist offline   Mit Zitat antworten
Alt 03-01-2009, 11:05   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
hat keiner eine Antwort ?

Da dieser Beitrag schon länger existiert und keiner eine Antwort parat hatte erschleicht sich mir langsam das Gefühl, dass das Problem nur bei mir existiert. Mir ist eingefallen das ich ein paar Probleme mit der Taktfrequenz bei meiner Grafikkarte hatte, vielleicht liegt es auch daran.

Mir würde es auch helfen wenn mir jemand mitteilen könnte ob der Fehler bei ihm auch auftaucht oder nicht.
Taschkin ist offline   Mit Zitat antworten
Alt 06-01-2009, 10:14   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 2
Hallo,

ich habe gerade dein Problem gelesen und die Demo ausprobiert. Bei mir tritt das von dir beschriebene Problem ebenfalls auf.
Ich hatte diesen Performanceeinbruch auch schon mal, allerdings mit wesentlich größeren Grafiken und habe mir deshalb nicht solche Gedanken darüber gemacht. Dass es bei solch einer klein aufgelösten Grafik aber auch auftritt finde ich jetzt sehr merkwürdig.
Ich vermute, dass es für solch starke Verzerrungen sehr aufwendig ist die neuen Bildpunkte zu berechnen, wirklich wissen tu ich das allerdings auch nicht

Vielleicht kann ja jemand der mehr Ahnung von 3D-Algorithmen hat mal darauf eingehen. Mich würde eine Lösung auch interessieren, vielleicht kann ich mein Projekt dann auch noch etwas optimieren.
MarcusB ist offline   Mit Zitat antworten
Alt 07-01-2009, 15:39   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 2
Mir ist noch was eingefallen. Oft macht es Sinn während Animationen die stage.quality auf LOW zu setzen. Das verbessert die Performance bei Papervision allgemein sehr. Wenn die Animation beendet ist einfach wieder zurück auf HIGH oder BEST setzen.
Es ist allerdings lediglich ein Workaround für das von dir beschriebene Problem. Wenn deine Objekt, wie im Beispiel, ständig in Bewegung sind, sieht das leider nicht so gut aus (kein Antialiasing), aber vielleicht hilft dir der Ansatz ja weiter.
MarcusB ist offline   Mit Zitat antworten
Alt 03-02-2009, 10:04   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 24
Ich habe oben beschriebenes Problem ebenfalls. Bei mir ist es nur so, dass sich mehrere Karten in einem Kreis drehen, wodurch ständig eine Karte "dünn" zu sehen ist. Da geht die Performance total den Bach runter. Leider :-/
Eine kleine Hilfe ist es, wenn man die Segmente auf 1 stellt.

Wenn jemand ne andere Idee hat, immer her damit.
Fraenky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
bitmap, papervision 3d, performance, pv3d

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele