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

22.10.2003, 17:59

Rillen im Terrain

Ein Screenshot zeigt es wohl am besten

(Link)
Wie man unschwer erkennen kann hat das Terrain Rillen. Die einzelnen Flächen zeigen die Leafs des QuadTree's an. Das dumme ist, das war nischt beabsichtigt. So untertile ich das Terrain

Quellcode

1
2
3
4
SetQuad(Area1, Area.iTop, Area.iLeft, ((Area.iBottom - Area.iTop) / 2) + Area.iTop, ((Area.iRight - Area.iLeft) / 2) + Area.iLeft);
SetQuad(Area2, Area.iTop, ((Area.iRight - Area.iLeft) / 2) + Area.iLeft, ((Area.iBottom - Area.iTop) / 2) + Area.iTop, Area.iRight);
SetQuad(Area3, ((Area.iBottom - Area.iTop) / 2) + Area.iTop, Area.iLeft, Area.iBottom, ((Area.iRight - Area.iLeft) / 2) + Area.iLeft);
SetQuad(Area4, ((Area.iBottom - Area.iTop) / 2) + Area.iTop, ((Area.iRight - Area.iLeft) / 2) + Area.iLeft, Area.iBottom, Area.iRight);
Der Aktuelle bereich wird immer in 4 gleichgroße Würfel unterteilt. Und so erzeuge ich dann meine Indices

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
for(int y = Area.iTop; y < Area.iBottom - 1; ++y)
{
    for(int x = Area.iLeft; x < Area.iRight - 1; ++x)
    {
        pusDest[m_uiVertexCount++] = x + (y * uiWidth);
        pusDest[m_uiVertexCount++] = x + 1 + ((y + 1) * uiWidth);
        pusDest[m_uiVertexCount++] = x + 1 + (y * uiWidth);

        pusDest[m_uiVertexCount++] = x + ((y + 1) * uiWidth);
        pusDest[m_uiVertexCount++] = x + 1 + ((y + 1) * uiWidth);
        pusDest[m_uiVertexCount++] = x + (y * uiWidth);
    }
}
Die Vertice ligen alle in einem großen VertexBuffer. Hier mal das LogFile zu dem ganzen http://www.dragon-master.net/files/pictures/posting_log.txt Die Frage ist nun wie bekomme ich diese Rillen weg?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

2

22.10.2003, 18:20

Poste mal die Befüllungsfunktion.

3

22.10.2003, 18:28

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
float fDetailX = m_uiWidth * 0.03125f;
float fDetailZ = m_uiDepth * 0.03125f;

for(unsigned int y = 0; y < m_uiDepth; ++y)
{
    for(unsigned int x = 0; x < m_uiWidth; ++x)
    {
        int index = x + (y * m_uiWidth);
        m_pfHeightData[index] = (pbyHeightmap[index] / 255.0f) * (float)m_uiHeight;

        pvData[index].vPosition = gtl::vector3(((float)x - (m_uiWidth * 0.5f)) * m_fScale, m_pfHeightData[index], ((float)y - (m_uiDepth * 0.5f)) * m_fScale);
        pvData[index].vTexture1 = gtl::vector2((float)x / (m_uiWidth * 0.125f), (float)y / (m_uiDepth * 0.125f));
        pvData[index].vTexture2 = gtl::vector2(x / fDetailX, y / fDetailZ);
        pvData[index].vNormal   = gtl::vector3(0.0f, 0.0f, 0.0f);
    }
}
Also so wird der VertexBuffer mit Werten gefüllt. Das ganze wird von einer Heightmap herraus gerechnet und ich Zentriere die Map. D.h. wenn die Map von 256x256 Einheiten groß ist, ist 128x128 = 0.0f, 0.0f in Weltkoordinaten. Die Heightmap wird von einem PerlinNoise Algo erzeugt.

"pusDest" im Titelposting ist der Speicherbereich des IndexBuffers des jeweiligen Leafs. Jeder Leaf bekommt seinen eigenen IndexBufer.

Wenn ich den VertexBuffer in einer Punktliste anzeigen lasse, wird er auch richtig Dargestellt. Es liegt Definitiev an der Triangulation beim erzeugen der Indices. Nur ich kann keinen Fehler finden.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

4

22.10.2003, 19:32

Ok das Problem hat sich erledigt. Die Rillen konnte ich Elemenieren.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

5

22.10.2003, 19:57

Benutzt du diese Game Typ Library von dem Coder aus dem ZFX Forum ?

6

22.10.2003, 20:00

Wer ist denn das aus dem ZFX-Forum? Das würd mich mal Interessieren?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

7

22.10.2003, 20:06

Glaub der Maverick hat die geschrieben

8

22.10.2003, 20:09

Hat er das gesagt? Oder mal in einem Forum gepostet? Ich frag nur weil die von mir ist :rolleyes:
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

9

22.10.2003, 20:48

Keine Ahnung, wie heisst du denn bei ZFX ?

// EDIT

Ok du warst das ausm ZFX Forum, du hattest das doch mal angekündigt, wo es keiner haben wollte, weil es die STL doch gibt ^^

10

22.10.2003, 21:11

Ich mein ich verwende die GTL aber ich bin nicht einmal bei ZFX Registriert. Ich glaub das vertust du dich. Vieleicht verwecheslst du was.

Aber ist ja auch egal :-D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige