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

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

11

17.05.2006, 19:33

richtig!!!
Jemand eine andere Idee?
Danke und Gruß
Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

12

17.05.2006, 19:56

Für alle Kreisgrößen eine eigene Textur machen.

Ciao

CodingCat

1x Contest-Sieger

Beiträge: 420

Beruf: Student (KIT)

  • Private Nachricht senden

13

17.05.2006, 20:08

Hm, also wenn du keine unscharfen Texturen willst, dann nimm halt doch Linien mit Linestrip, wie David schon gesagt hat. Klar, je größer dann der Kreis wird, desto mehr Unterteilungen bräuchtest du dann auch, wäre aber wohl auch nicht so schwer, das eine vom anderen abhängig zu machen. So hättest du dann einen scharfen 1-Pixel-Kreis, der halt nicht ganz rund ist, weil du ja nicht unendlich viele Unterteilungen machen kannst. Das stört aber meistens nicht.

Helmut: Sollte das ein Witz sein, oder verstehe ich dich falsch? :D

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

14

17.05.2006, 21:50

Ok! Es scheint als ob ich wohl um die texturen nicht herumkomme! was solls! so schlecht siehts auch nicht aus!
Danke an Alle!
Gruß
Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

zet

Frischling

  • Private Nachricht senden

15

18.05.2006, 00:14

Es gibt auch einen stencilbuffertrick der nur einen normalen Polygonalen Zylinder benötigt und auf dem Zbuffer operiert: (bilder sind hier deaktiviert?)

http://www.strange-phenomenom.de/pmwiki-…in/stencil1.jpg

Ausgangsituation oben: so siehts in 3D aus.

Nun die Dreiecke in den stencilbuffer mit bit 1 schreiben, die vor der landschaft liegen:

http://www.strange-phenomenom.de/pmwiki-…in/stencil2.jpg

und nun die dreiecke in den Stencilbuffer mit bit 2 schreiben, die dahinter liegen:
http://www.strange-phenomenom.de/pmwiki-…in/stencil3.jpg

Kombiniert man dabei die Stencilbufferergebnisse kann man das Areal auf der Karte einfärben (indem man den Zylinder malt), und zwar da wo der Stencilbuffer die bits 1 + 2 gesetzt hat:

http://www.strange-phenomenom.de/pmwiki-…in/stencil4.jpg

man kann durch mehrfachkombinierungen auch Kreise hinbekommen. Das ganze hat ein paar Vorteile:
* Scharfe glatte Kanten
* Exakt ans Terrain angepasst
* Verschiedene Kombinationsmöglichkeiten - z.b. wenn zwei Kreise sich überschneiden sieht es aus als würden sie sich vereinigen.
* Braucht keine Texturen, es sei denn man will was verzieren oder so...

Ich glaube die haben das auch bei dem "Schlacht um Mittelerde" Spiel gemacht, das sah echt cool aus wenn die Einheiten grupiert wurden.

Der Effekt ist ansich billig: Erst nur das Terrain malen, dann den Stencilbuffer benutzen.

Leider hatte ich noch nie die Gelegenheit sowas richtig auszunutzen :( - es ist nur Theorie, aber es sollte so gehen.
Luxinia Spieleengine

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

16

18.05.2006, 09:22

Ahah! Das klingt sehr viel versprechend! allerdings auch nicht ganz simpel.. zumindest für mich! ich werd mal gucken ob ich das hinbekomme...
Danke!!
Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

17

18.05.2006, 14:50

Find den Ansatz auch sehr interessant. Allerdings wirds wohl schwierig, da vernünftig eine Textur draufzumappen... Wie zB in Generals und wahrscheinlich auch Mittelerde.

Ciao

Phili

unregistriert

18

18.05.2006, 15:24

ich find die Idee klingt wirklich super, aber ich schätz mal das wird ungefähr 100x soviel aufwand wie ne sinple Textur...

Daführ siehts natürlich besser aus. Ich schätz mal nen Versuch ist es allemal wert!

zet

Frischling

  • Private Nachricht senden

19

18.05.2006, 22:12

Bzgl Aufwand: Nein - das Verfahren ist fast genau das gleiche wie bei Stencilshadows und die sind ja fix - und bei stencilshadows ist das extrudieren des Volumens das CPU-Aufwändige - die Grafikkarte steckt das einfacher noch weg. Und in dem Fall liegt die Geometrie sogar schon vor (Zylinder).

Was Texturierung des kreises angeht - das wär natürlich grafisch optimal. Allerdings ist das nicht mehr so einfach: Man müsste die Dreiecke des Terrains auf das man den Kreis haben will erst mit der Stenciltechnik die Pixel markieren wo gemalt werden soll. Dann muß man das Terrain mit projezierter Textur neumalen.
Die Projektion der Textur ist kein problem - bei einem Heightfield zumindest, da sind dann die UV Koordinaten auch gleich die x/y koordinaten der Punkte - und wenn man die Texturmatrix modifiziert ist das auch schnell erledigt indem man die einfach zum Kreis hinschiebt etc.

Schwieriger ist es, da die Dreiecke rauszupicken die zum malen infrage kommen, also die, die mit dem Kreis schneiden. Da allerdings das Heightfield ein 2D Array ist kriegt man die Anfrage auch recht flott hin. Wenn man Kreisradius hat kann man einfach die AAbox des Kreises nehmen, also wenn man den kreis an x=20, y=15 mit radius=2 malt, müsste man aus dem Terrain die Höhenwerte zwischen 18,13 und 22,17 rauspicken und die Dreiecke malen.
Wenn man eine Funktion hat die da heißt

drawhfield(fromminx,fromminy,tomaxx,tomaxy)

kann man das auch schnell malen - ohne modifikationen wenn man die Texturmatrix benutzt und die vertices schon ordentliche uvs haben (=x,y position im Raum).
Dann eben Texturmatrix verändern und - eigentlich schon fertig. Aufm Papier ;) - nee, aber so schwer ist das nicht - wenn man so eine Funktion schon hat. Und die sollte man eh haben weil man ja auch nur die Dreiecke malen will die man wirklich sieht.

Optimal könnte es so sein:

1. Rausfinden welche Indizes des Terrain von der Kamera sichtbar sind (aabox des Kamerafrustums - in isometriespielen kein großes Problem)
2. Terrain mit den indizes listen malen
3. Zylinder mit stencils malen bis man die regionen markiert hat
4. Indices der Zylinderschnitte mit dem terrain rausfinden
5. Terrain mit Indices aus 4. und Texturmatrizen der Zylinderpositionen malen.

Der Aufwand dürfte Rechentechnisch etwas aufwändiger als der Bildboardtest, aber dennoch vertretbar sein.

Auf freier geometrie, also wenn keine heightmap vorliegt wär das ungemein schwerer und rechenaufwänder - da wüßt ich auch nicht wie das gehen soll....
Luxinia Spieleengine

Phili

unregistriert

20

19.05.2006, 15:28

@zet
:?
nee, ich mein das Programmiertechnische, nicht die Rechenaufwendigkeit.

Werbeanzeige