JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Frage zu Kapitel27 Scene
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.04.2005, 16:17    Titel: Antworten mit Zitat

nee, glaub ich net. Im Buch werden die Wände nicht als Rechteck jeweils einzeln definiert; sondern eine Wand besteht aus acht Quadraten. Es existieren nämlich net vier Wände extra, sonder nur ein einziges Quadrat( Exclamation ), das insgesamt 32 mal pro Schleifendurchlauf gerendert wird:

erst wird das Quadrat einmal gerendert, dann jeweils 8 mal um sich selber nach rechts transliert wird, darauf 4 mal um 90° um die Y-Achse rotiert und wieder 8 mal gerendert wird...

Also:
CPP:
for(int i=0;i<4;++i)
{
     for(int j=0;j<8;++j)
     {
           Translation um sich selber nach rechts;
     }
     
     Rotaion 90° um die Y-Achse;
}


edit:
zu deiner Frage: normalerweise müsstest die Y-Werte dieses Quadrats höher machen. In diesem Bsp. geht das IMHO glaub ich nur sehr schwer, weil das Quadrat ja genau die richtigen Werte für die Texturierung hat. Also musst du dafür sorgen, wenn dus nicht unnötig schwer haben willst Wink , dass jeweils X- und Y-Achse um den selben Wert erhöht werden. So wird zwar deine Sxybox größer, aber das macht ja nix(wenn schon, dann musst du das Quadrat eben nur 6 mal oder so von jeder Seite render.

Gruß DirectXer, der natürlich auch gerne hilft Very Happy

PS: Puh, das war viel... Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 11:59    Titel: Antworten mit Zitat

DirectXer: XYZ sind von TU/TV voll unabhängig? Merkst du dich noch Very Happy

Du kannst die Vertexkoordinaten verschieben wie du willst.
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 14:53    Titel: Antworten mit Zitat

schon, aber da das Muster als Quadrat gespeichert ist, würde es schon Sch***e aussehen, wenn man die Ziegelsteine nur an der Y-Achse streckt. Außerdem gibts ja auch einen Grund, wieso Christian im Buch die Wand nicht direkt als Rechteck rendert, sondern nur eins als Quadrat, welches dann 32x gerendert wird Wink

Gruß DirectXer Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lukash
Mini JLI'ler


Alter: 32
Anmeldedatum: 09.04.2005
Beiträge: 35

Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 15:22    Titel: Hallo! Antworten mit Zitat

Gibt es denn keine möglichkeit, die Einfach wäre?
Ich würde einfach die Eckpunkte der Wand verschieben.
-Mit welchem Eckpunkt fängt denn das Vertex-Format an?

Beispiel:
CPP:
CustomVertex WallVertices[] =
{
  { -4.0f, -4.0f, 0.0f,  0.0f, 0.0f, -1.0f,  0.0f, 4.0f }, //Eckpunkt Links oben?
  { -4.0f,  4.0f, 0.0f,  0.0f, 0.0f, -1.0f,  0.0f, 0.0f },
  {  4.0f, -4.0f, 0.0f,  0.0f, 0.0f, -1.0f,  4.0f, 4.0f },
  {  4.0f,  4.0f, 0.0f,  0.0f, 0.0f, -1.0f,  4.0f, 0.0f },
};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 15:27    Titel: Antworten mit Zitat

das kommt auf dein Vertex-Format an(das ist die Struktur CustomVertex, die du selber geschrieben hast) Ich nehme an, du hast den aufbau so:

CustomVertex Vertices[]=
{
{ x, y, z, nx, ny, nz, tu, tv};
}


also musst du die x- und y-Werte(die, die ich fett makiert hab) um den gleich Wert erhöhen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lukash
Mini JLI'ler


Alter: 32
Anmeldedatum: 09.04.2005
Beiträge: 35

Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 15:30    Titel: Danke! Antworten mit Zitat

Danke,Danke,Danke!!! Laughing Laughing Laughing
Es klappt,aber die Textur wird auseinander gezerrt.

-Kennt jemand eine kostenlosen Modell-Editor mit dem Man X-Modelle erstellen kann Question Question Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 15:50    Titel: Antworten mit Zitat

das mit dem Textur-Auseinander zerren hab ich ja oben beschrieben, wie du das vermeiden kannst. Du kannst aber auch(was allerdings ein bisschen anspruchsvoller ist) das erste Quadrat in der größe behalten und die Mauer dann jeweils einmal komplett rendern dann die Y-Achse erhöhen und die Mauer dadrüber noch mal rendern. Dann bleibt die Textur schön klein. Wenn du wissen willst wie das geht, dann poste ich das heute abend vielleicht nochmal. Muss jetzt aber weg.

Gruß DirectXer, der jetzt zum Friseur geht
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 16:56    Titel: Antworten mit Zitat

hm, sehr evtl. gmax...
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 19.04.2005, 17:07    Titel: Antworten mit Zitat

Ja man, Jona hat recht! gmax ist geil, aber nur wenn du die entsprechenden Exporter hast um nach .x erxportiern zu können.
Siehe dazu das hier.
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lukash
Mini JLI'ler


Alter: 32
Anmeldedatum: 09.04.2005
Beiträge: 35

Medaillen: Keine

BeitragVerfasst am: 20.04.2005, 17:53    Titel: Frage! Antworten mit Zitat

Hi,
Noch ne Frage.Wo bekommt man gmax denn her.Der Link den du gegeben hast da muss man sich erst anmelden. Evil or Very Mad Kann Irgendjemand
die vieleicht auf nen Server laden.Ich hab DSL Laughing ,dann kann ich die runterladen.

Gibt es ne möglichkeit,den Mauszeiger in meiner Demo zu ändern,so dass ich meinen eigenen benutzen kann???

Gruss Lukas

PS.: DirectXer: Kannst du den Code mal posten,wenn du vom Friseur zurück bist? Laughing Laughing Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.04.2005, 18:44    Titel: Antworten mit Zitat

code kommt gleich, erst mal zu deiner 2. Frage:

bei deiner CreateMainWindow-Funktion kann man ein Handle auf deinen Zeiger übergeben. Wie das geht müsste im Buch auf S.195 bei der Zeile
[...]
HICON hIcon
HCURSOR hCursor;
HBRUSH hbrBackground;
[...]
stehen. Du musst dann mit LoadCursor() den Cursor laden, wies geht steht in der MSDN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.04.2005, 19:39    Titel: Antworten mit Zitat

ok, sorry, dass es so lange gedauert hat, hab heute net viel Zeit. d.H. hab jetzt keine Zeit, dass eleganter zu machen. Eigentlich musst du nur die ersten for-Schleifen in der Scene.cpp Render-Methode Kopieren, so oft du willst, um die Mauer höher zu haben:
CPP:
int j,i;

    // bei jedem durchlauf wird um 90 Grad gedreht
    for(j=0;j<4;j++)
    {
        D3DXMatrixRotationAxis(&RotMatrix,&AxisY,90.0f * D3DX_PI / 180.0f * j);

        // da die Wand 8 Einheiten Breit ist und der Boden 64 muss die
        // Wand auf jeder Seite 8 mal gerendert werden     

        for(i=0;i<8;i++)
        {           
            D3DXMatrixTranslation(&TransMatrix,8 * i - 28.0f,-1.0f, 32.0f);               
            D3DXMatrixMultiply(&WorldMatrix,&TransMatrix,&RotMatrix);

            // berechnete Welt Matrix setzen
            m_lpD3DDevice->SetTransform(D3DTS_WORLD,&WorldMatrix);
   
            // die Wand als Trianglestrip rendern - es werden zwei Dreiecke gezeichnet
            m_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
        }
    }

   for(j=0;j<4;j++)
    {
        D3DXMatrixRotationAxis(&RotMatrix,&AxisY,90.0f * D3DX_PI / 180.0f * j);

        // da die Wand 8 Einheiten Breit ist und der Boden 64 muss die
        // Wand auf jeder Seite 8 mal gerendert werden     

        for(i=0;i<8;i++)
        {           
            D3DXMatrixTranslation(&TransMatrix,8 * i - 28.0f,7.0f, 32.0f);               
            D3DXMatrixMultiply(&WorldMatrix,&TransMatrix,&RotMatrix);

            // berechnete Welt Matrix setzen
            m_lpD3DDevice->SetTransform(D3DTS_WORLD,&WorldMatrix);
   
            // die Wand als Trianglestrip rendern - es werden zwei Dreiecke gezeichnet
            m_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
        }
    }


bei Fragen, schreib mir ne PN. Das geht dann schneller Wink

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 20.04.2005, 21:39    Titel: Antworten mit Zitat

Für jede Fläche ein Renderaufruf, gehts denn noch langsamer O.o
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 21.04.2005, 14:32    Titel: Antworten mit Zitat

hab ja gesagt, no Time for eleganter Wink

Allerdings, du hast schon recht, is net gerade ne schöne Lösung Rolling Eyes
Aber sie is leicht zu verstehen. Ich nehme an, weitere Nachforschungen kann Luaksh damit selber anstellen.

Gruß DirectXer Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lukash
Mini JLI'ler


Alter: 32
Anmeldedatum: 09.04.2005
Beiträge: 35

Medaillen: Keine

BeitragVerfasst am: 22.04.2005, 15:36    Titel: Funktioniert nicht :-( !!! Antworten mit Zitat

Es klappt nicht. Crying or Very sad Crying or Very sad Crying or Very sad
Wenn ich die Funktion LoadCursorFromFile() ausführe klappt es nicht.

Mein Code:
CPP:
// Fenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass =
    {
        sizeof(WNDCLASSEX),                                 // Größe angeben
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,    // Standardstile       
        MessageHandler,                                     // Callback-Funktion
        0,                                                  // Zusätzliche Angaben
        0,                                                  // nicht benötigt
        hInstance,                                          // Anwendungsinstanz
        LoadIcon(NULL, IDI_WINLOGO),                        // Windows-Logo
        LoadCursorFromFile(C:\Cursor.cur),      // Mein Cursor
        (HBRUSH)GetStockObject(WHITE_BRUSH),                // Weißer Pinsel
        NULL,                                               // kein Menü
        "WindowClass",                                      // Der Name der Klasse
        LoadIcon(NULL, IDI_WINLOGO)                         // Windows Logo
    };


Kann mir jemand helfen???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
Seite 3 von 5

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum