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

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

11

06.01.2005, 21:21

wenn du zuerst vorn vorne und dann von hinten draufschaust, dreht sich's genau um. was ja sinn der sache ist, da somit vorne und hinten definiert wird um die nicht sichtbaren auszusieben.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

12

06.01.2005, 21:22

Zitat von »"vielleicht Chrissi?"«

Ändert das sich nicht, wenn ich die Kamera einfach drehe?
Natürlich! Das ist doch der Sinn vom Culling - wenn der Normalvektor in die andere Richtung zeigt, also du die Rückseite des Polygons betrachtest, dann wird er nicht angezeigt!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

13

06.01.2005, 21:23

:o AH! Dave, wenige Sekunden schneller!!!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Anonymous

unregistriert

14

06.01.2005, 21:37

Mit drehen meine ich eigentlich, dass ich meinen Kopf um 180Grad (um die Z-Axe) drehe...

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

15

06.01.2005, 21:38

wenn du von der decke hängst läuft die uhr ja auch nicht rückwärts, oder? :)

Anonymous

unregistriert

16

06.01.2005, 21:40

Ich raffs nicht. Die Ferien sind mir zu Kopf gestiegen :crying:

lol

Ich versuch einfachmal ein paar Kombinationen meiner Vertices.

Ich melde mich mal Morgen wieder.

Vielen Dank, dass ihr eure Zeit geopfert habt.

Cu,

Chrissi

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

17

06.01.2005, 22:03

Wenn die Reihenfolge a, b, c falsch ist, dann versuch einfach c, b, a.

Alle anderen möglichen Reihenfolgen, z.B. a, c, b sind äquivalent, da es ja nur im oder entgegegnsetzt dem Uhrzeiger Sinn gibt.
"Games are algorithmic entertainment."

Anonymous

unregistriert

18

07.01.2005, 10:53

Ich habe es jetzt fast hingekriegt. Meine Dreiecke werden, bis auf wenige Ausnahmen (leider nciht alle :crying: ) korrekt dargestellt.
Also,
vielen Dank an alle, die mir geholfen haben.
Schöne letzte Ferientage,
Cu,

Chrissi

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

19

07.01.2005, 15:40

ferien?? lol, du bist gut *g*

Anonymous

unregistriert

20

07.01.2005, 15:50

Also, ich habe jetzt lange probiert, gedacht etc. Ich glaube, in meinem fall kann das gar nicht funktionieren.

Hier mal mein Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
int CUtils::CD3DUtils::SplitTriangleAgainstPlane(D3DXPLANE Plane, D3DXVECTOR3 avTriangle[3], list<D3DXVECTOR3>* pvOutTriangles)
{
    int i;
    vector<D3DXVECTOR3> vFrontList(0),vBackList(0);
    D3DXVECTOR3 vTmp;

    for(i=0;i<3;i++)
    {
        if(D3DXPlaneDotCoord(&Plane, &avTriangle[i])<=0.0f)
        {
            vFrontList.push_back(avTriangle[i]);            
        }
        else
            vBackList.push_back(avTriangle[i]);
    }

    switch(vFrontList.size())
    {
    case 3:
        for(i=0;i<3;i++)
            pvOutTriangles->push_back(vFrontList[i]);
        break;

    case 2:
        pvOutTriangles->push_back(vFrontList[0]); 
        LineHitsPlane(vFrontList[0], vBackList[0], Plane, &vTmp);
        pvOutTriangles->push_back(vTmp);
        pvOutTriangles->push_back(vFrontList[1]);

        LineHitsPlane(vFrontList[0], vBackList[0], Plane, &vTmp);
        pvOutTriangles->push_back(vTmp);
        LineHitsPlane(vFrontList[1], vBackList[0], Plane, &vTmp);
        pvOutTriangles->push_back(vTmp);
        pvOutTriangles->push_back(vFrontList[1]);
        break;

    case 1:
        LineHitsPlane(vFrontList[0], vBackList[1], Plane, &vTmp);
        pvOutTriangles->push_back(vTmp);
        LineHitsPlane(vFrontList[0], vBackList[0], Plane, &vTmp);
        pvOutTriangles->push_back(vTmp);
        pvOutTriangles->push_back(vFrontList[0]);
        break;
    }

    return 0;
}


Das avTriangle-Dreieck ist in richtiger "Reihenfolge". Nur kann das Ausgabedreieck gar nicht immer in der richtigen Reihenfolge sein, da ja ein paar Positionen variabel sind und so "aus der Reihe" tanzen können. (Glaube ich). Also bringt es auch recht wenig, die Reihenfolge der pvOutTriangles->push_backs zu ändern. Ich müsste eher am Ende die pvOutTriangles so bearbeiten, dass sie in der richtigen Reihenfolge (bzw, in der Reihenfolge des avTriangle) ist.

Hat jemand eine Idee, wie ich soetwas realisieren könnte?

Danke,

Chrissi

Werbeanzeige