Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-12-2008, 13:24   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
Question QuadrantRenderEngine schaltet von BitmapMaterial auf WireMaterial um

Hallo Flashforumgemeinde,

ich habe in Studio Max einen kleinen Koffer erstellt mit Texturen. Habe diesen als dae-File exportiert und in PV3D eingefügt. Am Anfang habe ich die Basic Render Engine benutzt und er hat mir manche Triangles immer wieder in einen bestimmten Winkel nicht angezeigt.

Dann bin ich auf die QuadrantRenderEngine umgestiegen und dachte der Fehler wäre behoben. Jetzt ist mir aufgefallen das dort ein ähnlicher fehler besteht. Er schaltet mit immer wieder bei einen bestimmten Winkel ein BitmapMatierial in ein WireMaterial um. Kann man vielleicht irgendwelche werte bei Materialien bzw beim renderer ändern damit er vielleicht genauer rechnet oder sowas in der Art ?. Hier die Demo

Hier ist mein Quellcode:
Code:
package Papervision3DExercise
{
	import org.papervision3d.events.FileLoadEvent;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.shaders.FlatShader;
	import org.papervision3d.materials.shaders.PhongShader;
	import org.papervision3d.materials.shaders.ShadedMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.parsers.DAE;





    public class DaeAnimExample extends PaperBase {
		
		private var object:DAE;
		private var pointLight:PointLight3D;
		private var materials:MaterialsList;
		private var phongShader:PhongShader;
		private var flatShader:FlatShader;
		private var shadedMat:ShadedMaterial;
		private var bitmapMat:BitmapMaterial;
		
						
		


		public function DaeAnimExample():void {
       		init();
		}



		override protected function init3d():void {
			pointLight = new PointLight3D();
			pointLight.x = 1500;
			pointLight.y = 2000;
			pointLight.z = -3000;
																
			object = new DAE();
			object.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, MaterialsDone);
			object.load("./resource/models/aktenkoffer.dae");
			object.moveForward(-200);
			scene.addChild(object);
			
			camera.y = 440;
			camera.pitch(25);
		}
 
 
 
 		private function MaterialsDone(event:FileLoadEvent):void{
 			var bitmapMat:BitmapMaterial = new BitmapMaterial(object.getMaterialByName("top_top").bitmap);
			bitmapMat.precise = true;
			bitmapMat.smooth = true;
			flatShader = new FlatShader(pointLight, 0xfafaff, 0x888899);
			shadedMat = new ShadedMaterial(bitmapMat, flatShader);
			object.replaceMaterialByName(shadedMat, "top_top");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("top_back").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "top_back");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("top_front").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "top_front");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("top_left_right").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "top_left_right");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("top_bottom").bitmap);
			bitmapMat.precise = true;
			bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "top_bottom");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("bottom_front").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "bottom_front");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("bottom_back").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "bottom_back");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("bottom_left_right").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "bottom_left_right");
			
			bitmapMat = new BitmapMaterial(object.getMaterialByName("bottom_bottom").bitmap);
			bitmapMat.precise = true;
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(bitmapMat, "bottom_bottom");
		}
 
 
 
		override protected function processFrame():void {
			object.yaw(1.5);
		}
		
	}
}
Ich bedanke mich schon einmal im vorraus für eure Beiträge. Danke !
Taschkin ist offline   Mit Zitat antworten
Alt 19-12-2008, 13:37   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
du kannst die Tiefe des Quadtree des Renderers ändern, allerdings geht bei sehr hoher Tiefe die Performance auch schnell in Knie
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 19-12-2008, 14:12   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
Question maxLevel ändern

ich denke du meinst den maxLevel des QuadTree's. Standardmässig war er auf 4 gestellt. Ich habe mal Schrittweise 1, 3, 5, 6 10, 50, 100, 1000 ausprobiert. Keines der Einstellungen hat überhaupt was bewirkt. Habe ich vielleicht was falsch gemacht ?
Taschkin ist offline   Mit Zitat antworten
Alt 19-12-2008, 14:15   #4 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Welche Filteroption hast du im Konstruktor der QuadrantRenderEngine verwendet?
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 19-12-2008, 14:38   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
leider bin ich noch ziemlicher Einsteiger was pV3D angeht. Ich möchte damit sagen das ich nicht einmal weis was der Filter ist und was er bezweckt. Ich habe da den Quad_Split_Filter entdeckt und und den correct_z_filter. An beiden habe ich nichts gemacht. Also werden die auf die Standardwerte 0x01 und 0x02 bei mir sein.

Wenn man daran was machen kann, wie sollen die Werte ca. eingestellt werden ? Ich weis nicht ob 0x03 was bewirkt oder 0xff oder weis was ich. Ich finde auch die Docu von PV3D ein bischen schwach. Die könnten doch wenigsten ein bischen was dazu schreiben was die werte bewirken. Naja, das ist aber auch eine andere Sache.

Ich habe diese Filter auf die folgenden Werte geändert:
QuadrantRenderEngine.ALL_FILTERS = 0x88;
QuadrantRenderEngine.CORRECT_Z_FILTER = 0x88;
QuadrantRenderEngine.QUAD_SPLIT_FILTER = 0x88;

aber wie ich es mir schon dachte ändert sich am Resultat garnichts.
Taschkin ist offline   Mit Zitat antworten
Alt 19-12-2008, 14:54   #6 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
PHP-Code:
QuadrantRenderEngine.ALL_FILTERS 0x88;
QuadrantRenderEngine.CORRECT_Z_FILTER 0x88;
QuadrantRenderEngine.QUAD_SPLIT_FILTER 0x88
Das sind "Konstanten" und deren Werte sollte man auch nicht ändern.

Die dienen dazu der QuadrantRenderEngine zu sagen welche "Filtermethoden" sie verwenden soll. und zwar bei der Instanzierung
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 19-12-2008, 15:11   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
ich stand eben auf den Schlauch. Habe den correct_z_Filter verwendet und es funktioniert.

Code:
renderer = new QuadrantRenderEngine(QuadrantRenderEngine.CORRECT_Z_FILTER);
Ich danke dir Mildesign.

Hier habe ich eine Seite gefunden die genau Zeigt was die Filter bewirken.

Eigentlich habe ich noch ein Problem. Soll ich ein neuen Thread eröffnen oder soll ich gleich dich fragen ?
Taschkin ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
material, pv3d, umschaltung

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:36 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele