Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

1

19.01.2008, 15:45

Normalenvektor ignorieren

Hallo, ich kenne mich noch nicht so gut mit effekten aus, aber gibt es einen Befehl den man in einen Effekt schreiben kann, der die Richtung der Normalen ignoriert und somit die Dreiecke trotzdem rendert?

Ich habe nämlich Zylinder an denen die Deckfläche fehlt. Wenn man in den Zylinder schaut wird die hälfte fast immer schon gekullt weil die Normalen wegzeigen. Ich hab das bisher immer gelöst in dem ich den Zylinder verdoppelt hab und beim zweiten dann die Normalen umgedreht habe. Das erzeugt aber immer viele zusätzliche Polygone.

Viele Grüße
Andreas

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

19.01.2008, 15:49

das hat überhaupt nichts mit den normalen zu tun, sondern mit der punktreihenfolge deiner dreiecke!
standardmäßig werden alle im uhrzeigersinn definierten dreiecke gerendert und dadurch werden die rückseiten deiner dreiecke nicht gerendert, halbiert den rechenaufwand.

und da dein zylinder von aussen zu sehen ist, muss die rückseite (innen) nicht zu sehen sein!

stelle bei diesem objekt einfach backfaceculling aus, dann gehts!

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

3

19.01.2008, 15:52

Hallo, erstmal vielen Dank für die Hilfe, suche grad schon den befehl den ich dann in den Effekt schreiben muss.
Aber noch eine kleine Frage: Ich habe das damals so verstanden, dass das der Normalenvektor doch doch durch die Uhrzeigersinn -Richtung definniert wird, oder nicht?

Anonymous

unregistriert

4

19.01.2008, 15:56

Zitat von »"TrommlBomml"«

standardmäßig werden alle im uhrzeigersinn definierten dreiecke gerendert
Einen wirklichen Standard gibt es dabei nicht, schon allein weil der Uhrzeigersinn nicht so genau definiert werden kann, oder das Koordinatensystem zu kennen. AFAIK tritt dieser Unterschied sogar schon beim Vergleich der beiden bekanntesten Systeme, OGl und DX, zu Tage. Ich wuerde eher sagen, Dreiecke sollen in einem _bestimmten_ Umlaufsinn definiert sein. (Welcher genau ist aber fuers Prinzip egal.) f'`8k


Gruß, TGGC (making great games since 1992)

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

19.01.2008, 16:14

ja, okay, das war vielleicht fachlich nichr ganz korrekt. danke für den hinweis.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

19.01.2008, 18:24

Zitat von »"Andreas"«

Aber noch eine kleine Frage: Ich habe das damals so verstanden, dass das der Normalenvektor doch doch durch die Uhrzeigersinn -Richtung definniert wird, oder nicht?


Eigentlich ist das im normalfall von etwas anderem anhängig. so wie du das ganze andeutest gehst du von Cinema4D aus (da ist das nämlich so!). aber im normalfall werden die normalen berechnet. Das funktioniert so, dass man an einem bestimmten vertex eine normal so berechnet, dass die 3 anliegenden punkte zur berechnung herangezogen werden. dadurch zeigt sie genau von der Fläche "weg". Wie die berechnung genau aussieht kannst du einfach mit google finden, wenn es dich genau interessiert. alles natürlich wieder auf directx bezogen, OpenGL weis ich nicht wie es da aussieht.

7

19.01.2008, 18:33

Schonmal Device->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
probiert? Bzw. CullMode = None in HLSL?
Oder den Zylinder einmal mit CullMode CW und einmal mit CCW rendern...

Werbeanzeige