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

11

08.02.2008, 22:03

Hi,
kann das sein, dass du dich auch dabei bewegt hast?
Sobald man an die vier Eckpunkte kommt, wird der Nebel wieder normal. (Sry das hatte ich vergessen zu erwähnen)

Ich glaube das häng irgendwie damit zusammen, dass er den Nebel von diesen 4 Eckpunkten aus berechnet und dann im Abstand von 6 von diesen 4 Eckpunkten ist nichts mehr zu erkennen, da FogEnd überschritten wurde. Da man sich zu beginn in der Mitte der 100x100 Ebene befindet ist die ganze Ebene weiß...
Leider verstehe ich dann nicht, warum das bei meiner Grafikkarte "schön vernünftig dargestellt wird"; ich glaube nicht das das an fehlerhaften Normalenvektoren liegt, dann würde man doch gar nichts sehen, da die Dreiecke gecullt würden oder nicht?

Ich habs auch schon mit Pixelnebel und Effekten versucht, aber ich hab keine Verbesserung gesehen, vielleicht hab ich aber auch die falschen Einstellungen genommen...

Aber immerhin tritt bei euch das Problem auch auf, dann könnt ihr mein Problem besser nachvollziehen :?

3dcoder

Frischling

Beiträge: 40

Wohnort: Krefeld

  • Private Nachricht senden

12

08.02.2008, 22:08

Das Culling wird nicht mit Normalen gemacht - sondern mit der Drehrichtung der Eckpunkte des Dreickes. Über die Normalen wäre das zeitlich zu aufwendig.

Nein, ich habe mich nicht bewegt - halte bei deinem Beispielprogramm einfach mal die "Cursor-rechts" Taste für ca. 2-3 Sekunden gedrückt auf dem Rechner wo es derzeit nicht funktioniert...

Grüße
3dcoder

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

13

08.02.2008, 22:08

Ich hab die Farbe mal verändert:

C-/C++-Quelltext

1
2
3
4
    Light.Type = D3DLIGHT_DIRECTIONAL;
    Light.Diffuse = tbColor(1.0f, 0.0f, 0.0f);
    Light.Ambient = tbColor(1.0f, 0.0f, 0.0f);
    Light.Specular = tbColor(1.0f, 0.0f, 0.0f);

Da war die Ebene immer noch weiß, als ich aber die Nebelfarbe in Blau verändert habe war sie Blau, als ich den Nebel ausgestellt hatte konnte ich alles "normal" ohne Nebel sehen.

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

14

08.02.2008, 22:10

Stimmt, danke das war mir noch gar nicht aufgefallen, da war es einmal ganz kurz sichtbar

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

15

08.02.2008, 22:19

Ich muss zugeben ich hab mit sowas noch nicht soviel Erfahrung, ich hab sonst immer mit Modell-Dateien gearbeitet.
Ich hab das jetzt mal versuch mit den Normalen einzubringen:
http://www.mehringskoetter.de/files/Modelle2.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
struct SEbeneVertex
{
    tbVector3           vPosition;  // Position

    tbVector2           vTexture;   // 2D-Texturkoordinaten

    tbVector3           vNormal;
    static const DWORD  dwFVF;      // Vertexformat

};


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
..................
Vertex.vPosition.x = -Kartengrosse/2.0f;
    Vertex.vPosition.y = 0.0f;
    Vertex.vPosition.z = Kartengrosse/2.0f;
    Vertex.vTexture = tbVector2(Vertex.vPosition.x, Vertex.vPosition.z);//TextureProc(Vertex.vPosition);

    Vertex.vNormal = tbVector3(0.0f, 1.0f, 0.0f);
    g_pEbeneVB->SetVertex(0, &Vertex);
    
    Vertex.vPosition.x = Kartengrosse/2.0f;
    Vertex.vPosition.y = 0.001f;
    Vertex.vPosition.z = Kartengrosse/2.0f;
    Vertex.vTexture = tbVector2(Vertex.vPosition.x, Vertex.vPosition.z);//TextureProc(Vertex.vPosition);

    Vertex.vNormal = tbVector3(0.0f, 1.0f, 0.0f);
    g_pEbeneVB->SetVertex(1, &Vertex);
.......................


Allerdings passiert der Fehler immer noch, hab ich das falsch umgesetzt?

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

16

08.02.2008, 22:24

Ich habs grad nochmal mit dem Rechner ausprobiert, auf dem es lief, und bei dem ist die Ebene seit den Normalen auch nicht mehr sauber zu erkennen, sie ist so grün verschmiert. Der Nebel ist immer noch da wo er vorher auch war, aber aufgrund der komischen Darstellung der Ebene muss da mit den Normalen-Vektoren noch was falsch sein.

3dcoder

Frischling

Beiträge: 40

Wohnort: Krefeld

  • Private Nachricht senden

17

08.02.2008, 22:34

Ich habe leider mit DirectX noch nie was gemacht - nur OpenGL bisher. Vielleicht kann jemand mit DirectX-Erfahrung das mit den Normalen mal gegenchecken? Für mich schaut das soweit okay aus (0,1,0) ist eine top Normale für eine flache Ebene :)

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

18

08.02.2008, 22:51

Vielleicht hilft es, wenn man sieht wie die Ebene aussieht: (unter dem Rechner, auf dem das Nebelproblem nicht auftritt)
http://www.mehringskoetter.de/files/Normale.JPG

3dcoder

Frischling

Beiträge: 40

Wohnort: Krefeld

  • Private Nachricht senden

19

09.02.2008, 12:15

Hi!

Mir ist gerade beim Betrachten des Quellcodes noch etwas aufgefallen: Wenn du die Eckpunkte der Ebene erzeugst dann schreibst du für die Y-Koordinate ein mal

C-/C++-Quelltext

1
Vertex.vPosition.y = 0.0f;


und die anderen mal

C-/C++-Quelltext

1
Vertex.vPosition.y = 0.001f;


Das könnte auch ein Problem sein....

Grüße
3dcoder

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

20

09.02.2008, 13:51

2 Lösungsvorschläge:
1: Grafiktreiber aktualisieren.
2: Antialiasing, AF und sonstige "Optimierungen" des Treibers deaktivieren.

Socke

Werbeanzeige