Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[OpenGL] "Kamera" Probleme...

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 08.10.2011, 04:46    Titel: [OpenGL] "Kamera" Probleme... Antworten mit Zitat

hab es nun endlich geschafft OpenGL etwas Leben, durch einer kleinen Heightmap Routine einzuhauchen lächeln
28398 hat Folgendes geschrieben:
Du nimmst ne RGBA Textur, jedem Kanal wird eine Textur (Sand, Gras, Stein, Schnee bspw.) zugeordnet, im Fragmentshader schaust du den Wert aus deiner RGBA Textur nach und mischst entsprechend aus den anderen vier Texturen zusammen (Blending). Et voilá

Ich glaube bis ich es soweit habe dauerts wohl noch etwas zwinkern



Damits später nach was aussieht hab ich auch eine Skybox umsetzen können lächeln



gute Skymaps gibts hier:
http://www.kk3d.de/counter-strike/skies/index.htm

Jetzt habe ich allerdings das Problem das ich es nicht hinbekomme mich richtig in meiner kleinen Welt zu bewegen traurig

Mit den Cursortasten (links/rechts) bzw A und D möchte ich mich um die Achse meiner symbolischen 'Kamera ' drehen, mit W und S vor und zurück 'laufen' und mit den Cursortasen (Hoch/Runter) nach oben bzw unten blicken, soweit klappt das auch schon halb, nur das drehen geschieht im Moment immer um die Weltmittelachse, nicht aber um die meiner symbolischen Kamera und leider weiss ich nicht recht wie ich es anders umsetzen kann?!

hier mal der loop code:
Code:

Dim rX as Single
Dim rY as Single

Dim tWS as Single

do
    if multikey(&h01) then exit do
   
    If multikey(&h4b) or multikey(&h1E) then 'LEFT or "A"
        rX-=0.5f
        rX=IIF(rX<-359,rX+360,rX)
    End If
   
    If multikey(&h4d) or multikey(&h20) then 'RIGHT or "D"
        rX+=0.5f
        rX=IIF(rX>359,rX-360,rX)
    End If
   
    If multikey(&h48) then 'UP
        rY+=0.5f
        rY=IIF(rY>359,rY-360,rY)
    End If

    If multikey(&h50) then 'DOWN
        rY-=0.5f
        rY=IIF(rY<-359,rY+360,rY)
    End If
   
    If multikey(&h11) Then tWS+=0.1f ' "W"
    If multikey(&h1F) Then tWS-=0.1f ' "S"
   
   
    glRotatef (rY,1,0,0)
    glRotatef (rX,0,1,0)
    'OGL_SetSkyBox (Sky) 'zeichnet die skybox
   
    glLoadIdentity
    glTranslatef (0,-5,tWS)
    glRotatef (rY,1,0,0)
    glRotatef (rX,0,1,0)

    'OGL_renderheightmap (test)  'zeichnet die Map 
   
    'OGL_renderscene
    screensync
    flip
    '!' Die vorherige Szene wird vom Bildschirm gelöscht,
    ''  damit die neuen nicht einfach über die alten   
    ''  Objekte gezeichnet werden
    glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)

    '!' Modelview-Matrix wird wieder zurückgesetzt
    glLoadIdentity()
loop


_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 08.10.2011, 11:15    Titel: Antworten mit Zitat

Speichere die Position der Kamera in 3 Variablen und jedes mal, wenn eine Taste gedrückt wird, wird eine Variable erhöht oder verringert. Im Anschluss wird die Position der Kamera neu bestimmt(ich kenne mich mit OpenGL nicht so gut aus, gibt es überhaupt einen Befehl, der die Position eines Objekts verändert?).

Ich hoffe ich konnte helfen. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 08.10.2011, 12:00    Titel: Antworten mit Zitat

Habs jetzt soweit geschafft, nur das ich beim laufen durch meiner Welt noch eine konstante 'höhe' habe und deswegen beim laufen mal eben unter einem 'hügel' oder dergleichen lande...
Mal sehen ob ich das auch noch gelöst bekomme lächeln

Hab jedoch noch ganz andere Probleme mit dem Licht und (vermutlich den) Normalen, habs erstmal ausgeschaltet...
Wenn ich nach oben blicke ist der Himmel (der obere deckel des Würfels) nicht richtig beleuchtet was natürlich schlecht aussieht...

Code:

Type OGL_Kamera
   X  As Single 'X-Position
   Y  As Single 'Y-Position
   Z  As Single 'Z-Position
   DY As Single 'Drehwinkel um Y-Achse
   DX as Single 'Drehwinkel um X-Achse
End Type

Dim Kamera As OGL_Kamera


do
    if multikey(&h01) then exit do
   
    'Kamera.DY ist der Winkel, um den gedreht werden soll
   
    'Drehung Links
    If multikey(&h4b) or multikey(&h1E) then
        Kamera.DY = Kamera.DY + 1.5
        Kamera.DY = IIF(Kamera.DY>359,Kamera.DY-360,Kamera.DY)
    End If
   
    'Drehung Rechts
    If multikey(&h4d) or multikey(&h20) then
        Kamera.DY = Kamera.DY - 1.5
        Kamera.DY = IIF(Kamera.DY<-359,Kamera.DY+360,Kamera.DY)
    End If

    'Drehung nach oben
    If multikey(&h48) then
        Kamera.DX = Kamera.DX - 1.5
        Kamera.DX = IIF(Kamera.DX<-359,Kamera.DX+360,Kamera.DX)
    End If

    'Drehung nach unten
    If multikey(&h50) then
        Kamera.DX = Kamera.DX + 1.5
        Kamera.DX = IIF(Kamera.DX>359,Kamera.DX-360,Kamera.DX)
    End If
   
    'vorwärts
    If multikey(&h11) then
        Kamera.X = Kamera.X + Sin(Kamera.DY * PiToRad) * 0.1
        Kamera.Z = Kamera.Z + Cos(Kamera.DY * PiToRad) * 0.1
    End If

    'zurück
    If multikey(&h1F) then
        Kamera.X = Kamera.X - Sin(Kamera.DY * PiToRad) * 0.1
        Kamera.Z = Kamera.Z - Cos(Kamera.DY * PiToRad) * 0.1
    End If

    glRotatef Kamera.DX, 1, 0, 0
    glRotatef 360-Kamera.DY, 0, 1, 0

    Kamera.Y = -5
   
    glTranslatef Kamera.X, Kamera.Y, Kamera.Z  'Welt verschieben

    ''''scene rendern...
loop


_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
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.

 Impressum :: Datenschutz