Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-12-2008, 18:21   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
Unhappy DAE-Objekt wird mit Shadern zerstört dargestellt

Hallo Flashforumgemeinde,

ich bin ziemlicher Neuling im Bereich PV3D und habe mein erstes Problem.

Wenn ich mit 3DSMAX ein Objekt als DAE-Objekt Exportiere und in PV3D ein FlatShaderMaterial bzw. phongMaterial über das Objekt lege wird mein Objekt zerstört dargestellt. Es sieht so aus als würden sich die Normalen bei bestimmten Winkeln invertieren. Hier die Demo mit den Fehler.

Hier ist der Quellcode den ich verwende:
Code:
package Papervision3DExercise
{
	import org.papervision3d.events.FileLoadEvent;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.materials.shadematerials.PhongMaterial;
	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 shadedMat:ShadedMaterial;
		private var phongMat:PhongMaterial;
		private var flatMat:FlatShadeMaterial;
		private var wireMat:WireframeMaterial;
		private var counter:uint;
		
						
		


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



		override protected function init3d():void {
			pointLight = new PointLight3D();
			pointLight.x = 1500;
			pointLight.y = 2000;
			pointLight.z = -3000;
			
			phongMat = new PhongMaterial(pointLight, 0xaaaaaa, 0x222222, 100);
			phongMat.oneSide = true;
			flatMat = new FlatShadeMaterial(pointLight, 0xbbbbbb, 0x222222);
			wireMat = new WireframeMaterial(0);
			materials = new MaterialsList();
			materials.addMaterial(flatMat, "default");
										
			object = new DAE();
			object.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE, MaterialsDone);
			object.load("./resource/models/aktenkoffer.dae");
			object.moveForward(-400);
			object.pitch(-15);
			scene.addChild(object);
		}
 
 
 
 		private function MaterialsDone(event:FileLoadEvent):void{
 			//var bitmapMat:BitmapMaterial = new BitmapMaterial(object.getMaterialByName("baseMaterial").bitmap);
			//bitmapMat.smooth = true;
			object.replaceMaterialByName(wireMat, "default");
 		}
 
 
		override protected function processFrame():void {
			counter++;
			object.yaw(0.5);
		}
		
	}
}
Für alle Vorschläge und Lösungen bedanke ich mich im Vorraus.
Taschkin ist offline   Mit Zitat antworten
Alt 18-12-2008, 19:24   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
bin selber drauf gekommen !

OK, habe herausgefunden wodurch der Fehler verursacht wird. Das hat nichts mit PV3D zu tun sondern es liegt an 3DSMAX.

Ich arbeite in 3D Studio Max gerne mal mit den Boolean-Methoden um teile von Objekten herauszuschneiden. Leider ist diese Methode total unzuverlässig und verursacht hauchdünne Triangles indem 2 Vertexes so nah aneinander liegen, dass diese verschmelzen oder sowas in der Art.
Taschkin ist offline   Mit Zitat antworten
Alt 18-12-2008, 20:42   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Gut zu wissen, danke!
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 18-12-2008, 21:02   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
doch nicht gelöst !!!

Diesmal habe ich meinen kleinen Koffer im Demo noch einmal neu Modeliert und diemal ohne die Boolean-Methode. Diesmal stimmt die Anzahl der Trialngles. Ich habe keine sehr engel Triangles mehr. Es scheint alles zu stimmen.

Habe den Koffer wieder als DAE exportiert neu in PV3D eingefügt aber leider immer noch mit den selben Ergebnis.

Diemal bin ich mit meinen Latein am Ende.

Also brauche ich doch noch einmal Hilfe für das immer noch bestehende Problem. Ich hoffe jemand weis wodurch das ausgelöst wird.
Taschkin ist offline   Mit Zitat antworten
Alt 18-12-2008, 21:44   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Welche Version von PV3D verwendest du denn?
Ähnliche Effekte wurden schon diskutiert, helfen dir die Vorschläge dort? (vor allem der letzte Kommentar)
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 19-12-2008, 02:31   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 29
Lightbulb endgültig gelöst !

Danke für die Recherche Janoscharlipp

Aber leider hat mir der Beitrag nicht geholfen da er nur scheinlich was mit meinen Problem zu tun hatte. Aber jetzt weis ich endlich woran es liegt. Es liegt an der BasicRenderEngine. Ich habe mal die QuadrantRenderEngine verwendet und es funktioniert wunderbar. Es ist kein Bug oder Fehler des BasicRenderEngine sondern diese Engine wird wahrscheinlich schneller rechnen dafür aber ungenauer.

Es liegt an der Berechnung der Tiefe der einzelnen Triangles, also welches Triangle zuerst gezeichnet wird und welches zuletzt. Da manche von der Reihenfolge später kommen überdecken Sie andere Triangles. Wenn die Reihenfolge natürlich falsch ist, dann kann sowas passieren.

Bei runden Objekten mit einen grossen Innenraum funktioniert die BasicRenderEngine auch wunderbar. Bei schmalen Kanten kann es bei bestimmten Blickwinkeln zu einer falschen Reihenfolge führen und somit kommt der unschöne Effekt zustande den ich hier hatte.

Ich danke dir trotzdem noch einmal für deine Bemühungen.
Taschkin ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
dae, papervision3d, pv3d, shader

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

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


Copyright ©1999 – 2012 Marc Thiele