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

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

1

06.08.2006, 18:14

Importierte Modelle?

Auch wenn der Titel vielleicht in eine Falsche Richtung führt, mir ist kein besserer eingefallen.
Also ich möchte, dass man mit meinem Programm Modelle importieren kann. Ich habe schon mal erwähnt, dass bei mir die TriBase die Modelle nicht geladen hat also versuche ich es nun mit *.x Dateien. Ich öffne also durch den öffnen-Dialog ein Modell. Dieses wird auch geladen. Jetzt ist mir nur folgendes Problem aufgefallen:
Wenn ich mehrere Modelle Importiere, dann überschreibt er ja immer wieder das vorhergehende. Das möchte ich nicht. Ich habe mir überlegt die Variable die für das Laden der Modelle zuständig ist zum Array umzufunktionieren, aber das klappt nicht

Habt ihr vielleicht eine Idee wie ich das umsetzten könnte?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

06.08.2006, 19:07

Mit einer Liste (std::list).

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

06.08.2006, 20:16

Könnte mir da mal jemand ein Bsp. geben. Das blick ich nicht ganz

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

4

06.08.2006, 20:30

naja ist was wie ein array nur eine doppelt verkette liste nutzt sich so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
std::list<int> IntList;

IntList.push_back(4);
IntList.push_back(5);

std::list<int>::iterator p;

for(p=IntList.begin(); p != IntList.end(); p++)
    std::cout<<*p<<std::endl;

Das besondere ist, dass du nich direkt auf die Liste zugreifen kannst wie bei einem Array, sondern nur über iteratoren. Dafür wird der Speicher verwaltet und du kannst aus der Liste sehr einfach elemente entfernen etc
Was es alles gibt, das ich nich brauche - Aristoteles

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

06.08.2006, 22:45

Meine Frage gehört zwar nicht hier rein aber im entferntesten Sinne brauch ich sie.
Also ich arbeite mit Unicode. So nun im muss ich im öffnendialog
TCHAR Dateiname
verwenden sonst gibt es eine Fehlermeldung. Wenn ich diesen nun mit dem Modell an meine Funktion zum hinzufügen zur liste übergebe dann gibt es da ne Fehlermeldung. Ich mache das einbinden so ähnlich wie in der TriBase.
-> strcpy()
Gibt es eine Funktion, die exakt so arbeitet wie strcpy nur anstatt char u. const char TCHAR anfordert?

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

10.08.2006, 16:01

Schaut euch doch bitte mal meine Renderfunktion an. Warum sehe ich kein Modell?

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
void renderScene (void)
{
    HRESULT         hResult;
    tbMatrix        mCamera;
    tbMatrix        mWorld;
        // Backbuffer und ZBuffer leeren mit Schwarz

    g_pD3DDevice->Clear (0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xFF000000, 1.0f, 0);
    
        // Wir müssen Direct3D mitteilen, dass es was zu rendern gibt

    g_pD3DDevice->BeginScene ();
    // Die Kamera schaut schräg von oben auf das Geschehen.

    mCamera = tbMatrixCamera(tbVector3(5.0f, 7.5f, -2.0f),
                             tbVector3(0.0f, 0.0f, 0.0f),
                             tbVector3(0.0f, 1.0f, 0.0f));
    g_pD3DDevice->SetTransform(D3DTS_VIEW, (D3DMATRIX*)(&mCamera));

    mWorld = tbMatrixTranslation(tbVector3(0.0f, 0.0f, 1.0f));
    g_pD3DDevice->SetTransform(D3DTS_WORLD, (D3DMATRIX*)(&mWorld));
    pAModel->DrawSubset(0);
           
        // Jetzt müssen wir Direct3D sagen das wir fertig mit der Scene sind

    g_pD3DDevice->EndScene ();
        
        // Und ab damit auf den Monitor!

    g_pD3DDevice->Present (NULL, NULL, NULL, NULL);

    
}

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

7

10.08.2006, 16:20

Zeig mal Projektionmatrix...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

10.08.2006, 16:25

Achtung das Verhältnis wird nachher noch geändert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
fAspect = 1280/800;
    // Die Projektionsmatrix erzeugen

    mProjection = tbMatrixProjection(TB_DEG_TO_RAD(90.0f),  // Sichtfeld: 90°

                                     fAspect,                       // Bildseitenverhältnis

                                     0.1f,                  // Nahe Clipping-Ebene

                                     500.0f);               // Ferne Clipping-Ebene

    
    // Projektionsmatrix einsetzen

    g_pD3DDevice->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)(&mProjection));

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

9

10.08.2006, 16:28

Hast du mal probiert "von Hand" etwas zu zeichnen? Also einfach ein Dreieck im Ursprung mit DrawPrimitiveUP? Nicht, dass es dann am Modell liegt ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

10.08.2006, 16:42

Das ist unfair.
Ich hab es doch mit c4d exportiert wieso geht das nicht?

Werbeanzeige