|
Re: Eine schon sehr oft gefragte Frage - Tga Sprit
[Re: FRAJO]
#16365
08/26/03 22:54
08/26/03 22:54
|
Joined: Oct 2001
Posts: 1,163 Germany
XeXeS
Serious User
|
Serious User
Joined: Oct 2001
Posts: 1,163
Germany
|
Ich habs schonmal beschrieben aber da kam keine Antworten:
Ich will Conitec nicht anmachen aber mann könnte es ja mal probieren.
Im normalfall werden bei einer 3D Engine immer zuerst die völlig undurchsichtigen Objekte gerendert. Dann werden die Transparenten Objekte in der Reienfolge so sortiert das man sie von hinten nach vorne Rendern kann. Auserdem schaltet man im normalfall das Culling aus ( das ist das damit die Dreiecke die auf der Rückseite sind also diese die man eh nicht sieht wegfallen) weil durch ein Transparentes Objekt kann man ja hindurchsehen und sieht so eventuell auch die Rückseite eines Objekts. Das Reicht aber nicht denn dann kommt es zu diesen Modell Internen Fehlern Wo mal eines der Hinteren dreiecke plötzlich Vorne ist etc.
Kennen wir ja alle nicht oder ? . Eine Liste zu machen wo man für jedes Modell die Reienfolge der zu zeichnenden Faces speichert kann man auch vergessen das wär zu langsam.
Wenn man nun aber Das Objekt zuerst einmal so zeichnet das alle Faces die zu Kamera hinzeigen wegfallen. ( D3DCULL_CW ). Und dann das Objekt nocheinmal zeichnet so das alle die wegfallen die von der Kamera wegzeigen ( D3DCULL_CCW ) dann sind Die Polygone nähmlich schon sortiert. Das ist nicht immer hundert Prozentig aber es ist meistens ausreichend genau.
Man rendert das Objekt also zweimal einmal von der Rückseite und einmal von der Vorderseite die Polygone sind sortiert und die die auf der Rückseite sind können die auf der Vorderseite nich überschneiten.
Wie ichs noch erklären soll weiß ich nicht ich weiß nur das des so funktioniert und ausreichend schnell ist. Und hoffe das sich das ein Conitecler mal anschaut.
Last edited by MannyDasMammut; 08/26/03 23:00.
|
|
|
Re: Eine schon sehr oft gefragte Frage - Tga Sprit
[Re: ventilator]
#16367
08/26/03 23:14
08/26/03 23:14
|
Joined: Oct 2001
Posts: 1,163 Germany
XeXeS
Serious User
|
Serious User
Joined: Oct 2001
Posts: 1,163
Germany
|
Oh mann, jetzt mach ich mich unbeliebt, wilst dus nicht checken. Nur für dich: Haste schonmal in einen Glaßkasten geschaut ? Bei der Methode die Conitec verwendet sieht man plötzlich wenn man reinschaut die innen Wände Nimmer. Wäre aber komisch oder klar das dabei dann keine Sortierfehler auftreten wenn man sie nicht zeichnet. Sie sollten aber gezeichnet werden um den nötigen Realismus zu bieten. Denn wenn du in eine Glaßvitrine schaust siehst du innen auch die Rückseite. Jetzt kommt dann du kanst dir deinen kasten ja aus sprites bauen jo richtig kann man ist aber total beschissen weils 1. Zeitaufwendiger ist und 2. ungenauer Anstatt könnte man doch ein Modell machen. So jetzt hat man sein tolles Modell und legt es als Vitrine in sein level. Normalerweiße ist jetzt D3DCULL_NONE aktiv so das beide seiten gezeichnet werden. Aber wenn das stimmt was du sagst dann ist D3DCULL_CCW aktiv und die rückseite fällt weg ADE Realismus . . Jo jetzt haste noch ne möglichkeit du machst es so das du in den Kasten als Modell noch mal einen setzt und die normalen wendest. Su durch die allgemeinen Sortierprobleme die wir ja alle kennen weiß die Engine gar nimmer was vorne und hinten ist und rendert halt mal. Blob Fehler. So hätte man das nur gelassen mit dem inneren kasten den anstatt die Rückseite wegfallen zu lassen damit sich die 2 Transparenten seiten nicht überschneiten kann man ja zweimal rendern und dann das aus dem Vorigen thread. So wenns jetzt checkst ok ansonsten mir auch wurscht ich habs schon gemacht und klapt prima. Ob dus glaubst oder nicht es funktioniert. So und jetzt noch ne Idee zu den Bäumen. Halbiere oder viertle ihn dann sollte es die Objekt sortierung schon einigermaßen hinbekommen.
|
|
|
Re: Eine schon sehr oft gefragte Frage - Tga Sprit
[Re: XeXeS]
#16370
08/27/03 10:54
08/27/03 10:54
|
Joined: Sep 2002
Posts: 8,177 Netherlands
PHeMoX
Senior Expert
|
Senior Expert
Joined: Sep 2002
Posts: 8,177
Netherlands
|
Quote:
Hi! Das Problem ist : Ich habe gerade über 40 Bäume in Arbeit - mit dieser umständlichen Methode währe es zuviel arbeit. Wenn es nur über diese methode geht - dann ist 3D Gamestudio für Landschaft - und Baumdarstellung schlichtweg UNGEEIGNET . Oder könnte Conitec das villeicht im nächsten A6 Update beheben?? Ansonnsten müssen wir das mit dem Urwald aufgeben , weil es einfach zu unprofessionell aussehen würde.
Hmmm, aber was wenn du es einpackt in eine art random tree-generator script??
Es gibt glaube ich schon ein par schöne und wirkende scripts auf das Net!
|
|
|
Re: Eine schon sehr oft gefragte Frage - Tga Sprit
[Re: PHeMoX]
#16371
08/27/03 13:58
08/27/03 13:58
|
Joined: Aug 2003
Posts: 56 Stuttgart,Germany
Maxisoft2
OP
Junior Member
|
OP
Junior Member
Joined: Aug 2003
Posts: 56
Stuttgart,Germany
|
Hi!
Vielen Dank für die zahlreichen Antworten . Es stimmt schon , das das Transparenz-Problem in den Blättern nicht so arg auffällt.Aber das Problem ist , das die bäume dennoch einen Grafikfehler haben würden . (Und es ist bestimmt ganz im Sinne von Conitec , das in einer Grafikdemo , die die Engine representieren soll , keinerlei auch noch so kleine Bugs zu finden sind , die auf die Engine zurrückzuführen sind )Und ich bin mir absolut sicher , das es eine Möglichkheit gibt , durch ein paar zeilen Code das Problem zu beheben. Leider bin ich kein guter skripter-ich kann nur ein paar zeilen Wdl , sonnst würde ich mich daran versuchen.
Naja - ich hoffe auf weitere Lösungsvorschläge , und evtl kann conitec sich überlegen , ob sie -sofern es möglich ist- den Bug auszumärzen (soll heisen entfernen)zu versuchen.
cu ,
Maximilian Schmierer
|
|
|
Re: Eine schon sehr oft gefragte Frage - Tga Sprit
[Re: XeXeS]
#16374
08/27/03 17:38
08/27/03 17:38
|
Joined: Dec 2002
Posts: 3,363 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
|
Diesen "Bug" gibt es, soviel ich weiß, in fast allen anderen Engines auch.
Wie ich aber schon weiter oben beschrieben habe, kann man diesen "Bug" durch geschicktes Design umgehen. Es ist zwar mühsam, aber es funktioniert.
Ich habe schon Pflanzen-Models mit TGA-Skin erstellt, bei denen keine falsche Überlagerung sichtbar ist.
Man muss die Models oft in MEHRERE Models aufsplitten. Also Models mit BMP-Skin und Models mit TGA-Skin. Man kann nicht einfach eine Glas-Vitrine und den Inhalt dieser Vitrine (Vasen, Geschirr) in einem einzigen Model machen. Man muss die undurchsichtigen Teile mit Bitmap-Skin-Models machen, und die transparenten Teile als eigenes TGA-Skin-Model. Und man muss bei transparenten Models auf die Reihenfolge der Erstellung der Polygone achten. Von Vorteil ist dabei, dass ein Polygon immer nur von EINER Seite sichtbar ist.
Nur ein einfaches Beispiel:
Seite A
-----A1-------
-----A2-------
-----B1------
-----B2------
---C1---
---C2---
Seite B
Dies soll ein Model für Gras-Sprites von oben gesehen darstellen. Jedes "Sprite" besteht aus 2 Polygonen (also aus einem Rechteck). Da so ein "Sprite" ja nur von einer Seite sichtbar ist, muss das Model aus zwei solcher Sprites zusammengesetzt werden (mit unterschiedlich ausgerichteten Normalen). Ein von beiden Seiten sichtbares Gras-Sprite besteht also z.B. aus den Polygonen A1 und A2.
Beim Erstellen der Polygone muss man nun wie folgt vorgehen:
- Zuerst Polygon C1 erstellen, dann B1, dann A1. Nun ist gewährleistet, dass die Polygone immer richtig überlagern, wenn der Betrachter von Seite A darauf blickt.
- Als nächstes erstellen wir die Polygone A2, B2, C2 (in genau dieser Reihenfolge). Somit sind die Polygone auch richtig sortiert, wenn der Betrachter von Seite B darauf blickt (der Vorteil dabei: die Polygone A1, B1, C1 sieht man ja von dieser Seite nicht, daher können sie auch nicht falsch überlagern).
Und genauso muss man auch z.B: bei Bäumen vorgehen: also Pflanzen, die sehr klein sind, und auf die man von oben drauf blickt, sollten immer von unten nach oben konstruiert werden. Bei hohen Bäumen, die man immer von unten sieht, muss es genau umgekehrt gemacht werden. Bei Glas-Vitrinen mit Innenflächen muss man wie bei dem Gras-Beispiel vorgehen.
Ist mühsam, zahlt sich aber aus. Und ich schätze mal, in professionellen Spielen wird es genauso gemacht!?!?
|
|
|
|