Laden...

Sehr verwirrendes 3D Modell

Erstellt von Rapthor vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.051 Views
R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren
Sehr verwirrendes 3D Modell

Hallo,

ich habe mir einen Boden aus 2 Dreiecken (= 6 Vertices) gebastelt. Jedes Vertex hat die Y-Koordinate von 0.
Soweit so gut.

Danach habe ich einen ganz normalen Quader darauf gestellt. Der steht bündig auf dem Boden (Y = 0) und da habe ich mir die 8. Seite des Quaders gespart (nämlich den Boden). Wenn ich jetzt aber das Ergebnis betrachten will, sehen die Texturen darauf sehr seltsam aus.

Ich habe dafür ein Bild angefügt, um euch das mal zu veranschaulichen.

Hoffentlich kennt sich jemand mit diesem Problem aus.

PS: Culling ist auf NONE gestellt! (Liegt's daran?)

1.373 Beiträge seit 2004
vor 19 Jahren

Sieht für mich aus, als sei kein Z-Buffer aktiv. Wie sehen deine PresentParameters aus?

MfG VizOne

R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren

Ich habe mal folgendes eingefügt:

device.RenderState.ZBufferEnable = true;
device.RenderState.ZBufferWriteEnable = true;

Leider sieht die Szenerie dann noch schrecklicher aus und ich habe ne Menge vertikaler Streifen auf dem Bildschirm.

Hier noch meine presentParameters.

1.373 Beiträge seit 2004
vor 19 Jahren

Du musst einen Z-Buffer erstellen, am einfachsten, indem du EnableAutoDepthStencil auf true und AutoDepthStencilFormat auf ein gültiges Depth/Stencil-Format setzt, z.B. DepthFormat.D16.

MfG VizOne

R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren

Gut, also ich habe jetzt folgendes eingestellt:

pres.AutoDepthStencilFormat = DepthFormat.D16;
pres.EnableAutoDepthStencil = true;

Leider ändert sich an der Ausgabe rein garnichts. Auch nicht, wenn ich die "ZBufferEnable" und "ZBufferWriteEnable"-Werte hinzunehme.

Fehlt da vielleicht noch eine Einstellung?

M
456 Beiträge seit 2004
vor 19 Jahren

Löschst du den ZBuffer auch nach jedem Frame?
Ist die Orientierung deiner Polygone OK (CCW vs. CC)?

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren

Löschen des ZBuffers ... wie genau?

Culling hab ich auf NONE gestellt, von daher sollte es doch mit CCW und CW kein Problem geben oder doch?

R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren

Alle klar, es geht jetzt 🙂

Es war wirklich wegen der Orientierungslosigkeit einer meiner Flächen! Nach der Verbesserung und Culling = Clockwise funktioniert es jetzt endlich.

Danke

R
Rapthor Themenstarter:in
151 Beiträge seit 2005
vor 19 Jahren

Jetzt habe ich ein ähnliches Problem sobald ich mehrere Meshes auf einmal in der Szene habe.

Die Gebilde überdecken sich in einer bestimmten Position alle gegenseitig.
Während auf Bild 1 noch alles in Ordnung ist, sieht man nach leichtem Drehen der Weltperspektive sowas wie in Bild 2.

Trotz dem ich folgendes eingefügt habe:

pres.AutoDepthStencilFormat = DepthFormat.D16;
pres.EnableAutoDepthStencil = true;

Mit folgendem Code hab ich noch mehr grafische Probleme, also hab ich den ganz rausgelassen:


device.RenderState.ZBufferEnable = true; 
device.RenderState.ZBufferWriteEnable = true;

Ich lösche auch jedes Mal nach dem Rendern die ganze Szene mit

device.Clear(ClearFlags.Target, Color.Bisque, 1.0F, 0);
M
456 Beiträge seit 2004
vor 19 Jahren

Z-Buffer kannst du mit ClearFlags.ZBuffer löschen. ClearFlags.Target löscht nur den Pixelbuffer.

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.