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

1

04.11.2010, 12:26

Würfel mit 6 Dreiecken?

Hallo ich habe mal wieder ein kleines Problem:

Und zwar lade ich mir aus einer datei Vertexdaten für einen Würfel (Die daten wurden mithilfe eines Mapeditors gespeichert).

Allerdings habe ich nur Vertexdaten für 6 Dreiecke, und ich wüsste gern wie ich aus diesen 6 Dreiecken einen Würfel Darstellen kann.

drz

Frischling

  • Private Nachricht senden

2

04.11.2010, 12:37

Benutzt du einen Index Buffer zum Zeichnen deines Würfels?

3

04.11.2010, 12:58

Nein im Augenblick nicht. Aber wie komm ich an die "Fehlenden" Vertexdaten?

drz

Frischling

  • Private Nachricht senden

4

04.11.2010, 13:05

In deinem Vertex-Buffer sind streng genommen keine Dreiecke ( Je nachdem wie gezeichnet wird ). Es sind lediglich 3 dimensionale Positionen gespeichert. Ein IndexBuffer kann diese Positionen anhand des Speicherindex ansprechen und Dreiecke daraus zeichnen. So benötigt man für einen Würfel min. 8 Positionen ( Vertices ).

Wenn du wirklich nur deine 6 Dreiecke hast, welche ohne Index-Buffer gezeichnet werden, kannst du vielleicht die ersten 6 Dreieckel des Würfels zeichnen, dann den Vertex-Buffer drehen und noch mal zeichnen.

5

04.11.2010, 13:31

Also meine Vertexdaten die ich einlese sehen so aus:

Vertex1 = [-1216,-384,64],[-1216,0,64],[384,0,64]
Vertex2 = [-1216,0,0],[-1216,-384,0],[384,-384,0]
Vertex3 = [-1216,-384,0],[-1216,0,0],[-1216,0,64]
Vertex4 = [384,0,0],[384,-384,0],[384,-384,64]
Vertex5 = [-1216,0,0],[384,0,0],[384,0,64]
Vertex6 = [384,-384,0],[-1216,-384,0],[-1216,-384,64]

und das Ergibt ein Quader mit der Größe 1600x3841x64

Hab leider noch nicht so ne Idee wie ichs hinbekomme ^^

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

04.11.2010, 13:52

Das sind die Koordinaten für die 6 Eckpunkte des Würfels. Wie du die zu Dreiecken verbindest darfst du dir jetzt selber überlegen, die entsprechenden Stichworte (IndexBuffer) sind ja schon gefallen...

drz

Frischling

  • Private Nachricht senden

7

04.11.2010, 13:59

Ein Würfel hat 8 Eckpunkte @ Dot <:

So wie du es im Moment geschrieben hast, sind die Vertex keine Vertex-Strukturen sondern bereits Dreiecke.

Einen Quader kann man jedoch nicht mit nur 6 Dreiecken zeichnen, da ein Quader nun mal 6 Vierecke also 12 Dreiecke als Fläche hat.


Was jedoch funktioniert ist, du kannst das erste Dreieck zeichnen, es dann verschieben und noch mal zeichnen.
Dreieck 1 zeichnen

v0
| \
| \
| \
v1----v2


Dreieck 1 kopieren und zeichnen

v0 -> kv0
| \ -> | \
| \ -> | \
| \ -> | \
v1----v2 -> kv1----kv2


Besser ist natürlich ein Index-Buffer welcher die 8 Positionen des Vertex-Buffers sinnvoll zu Dreiecken verbindet.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

8

04.11.2010, 14:08

Also ein "Vertex" ist ja (wie bereits gesagt wurde) eigentlich nur ein Punkt im raum, zu dem möglicherweise noch einige zusatzinformationen gespeichert werden, z.b. eine Normale, Texturkoordinaten oder ähnliches. Normalerweise Speichert man jeden Vertex nur 1 mal. Wenn man einen Punkt mehrfach benutzen möchte verwendet man für die Dreiecke nicht die punkte selbst, sondern nur deren indizes. (Ich weiß, dass das schon gesagt wurde, habs aber nochmal etwas ausführlicher gemacht).

Gibt eigentlich 3 Möglichkeiten um den Würfel zu rendern:
1. Du brauchst also 8 vertices (wenn du die normalen dann selbst berechnest, wegen scharfen kanten) und einen passenden indexbuffer, der dir dann 12 dreiecke daraus baut
2. Du brauchst 24 vertices, inkl versch. normalen und einen indexbuffer, der dir daraus wieder passende 12 dreiecke bastelt
3. Du speicherst 36 vertices und machst dann aus je 3 davon ein dreieck => 12 dreiecke

Egal wie du es drehst, es sind immer 12 dreiecke nötig, 6 reichen logischerweise nicht, die fehlenden 6 kann man sich zwar denken/berechnen, sinnvoll ist das aber nicht wirklich. Vertices sind auch 8 das minimum... also ich weiß nicht, was das da für daten sein sollen, die eines würfels sind es aber wohl nicht...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

04.11.2010, 14:27

Ein Würfel hat 8 Eckpunkte @ Dot <:

oh boy, shame on me ^^
das kommt davon wenn man Beiträge schreibt und das Hirn im Hintergrund idlen lässt...

10

04.11.2010, 16:45

Habe gerade mal im Internet gesucht wegen den Daten die ich im Map-Format habe. Die 3 Positionen pro Zeile definieren ein "Plane". Kann mir jemand bitte erklären wie ich das Verstehen kann?

Werbeanzeige