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:

Probleme mit OpenGL
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 19:10    Titel: Probleme mit OpenGL Antworten mit Zitat

Hey,
und mal wieder befasse oder versuche ich mich an OpenGL. Dazu habe ich mir erstmal Milkshape 3D runtergeladen und dann auch ein paar 3D Grafiken erstellt, die ich als ms3d-Datei gespeichert habe. Um die Dateien mal probeweise anzeigen zu können habe ich einen Code aus den NeHe-Tutorials geändert, so dass meine Grafik geladen wird anstatt die Grafik der Nehe-Tutorials.
Code:

''      This Code Was Created By Brett Porter For NeHe Productions 2000
''      Visit NeHe Productions At http://nehe.gamedev.net
''
''      Visit Brett Porter's Web Page at
''      http://www.geocities.com/brettporter/programming
''
''------------------------------------------------------------------------------
'' Press ESC key to quit
''
''------------------------------------------------------------------------------

'' compile as: fbc -s gui lesson31.bas

option explicit

'' Setup our booleans
const false = 0
const true  = not false
const null = 0


#include once "GL/gl.bi"
#include once "GL/glu.bi"
#include once "fbgfx.bi"                '' for Scan code constants
#include once "milkshapemodel.bi"
#include once "bmpload.bi"

''------------------------------------------------------------------------------
'' Declare user functions
declare function InitGL() as integer
''------------------------------------------------------------------------------
'' Declare Global Variables
dim shared MilkShapeModel as MODEL             '' Holds The Model Data


   dim yrot as single                         '' Y Rotation
   Model_Init varptr(MilkShapeModel)
   Model_LoadModelData (varptr(MilkShapeModel), exepath + "/data/G/tier.ms3d")
   windowtitle "Brett Porter & NeHe's MilkShape Model Rendering Tutorial"   '' Set window title
   screen 18, 32, , 2

   '' ReSizeGLScene
   glViewport 0, 0, 640, 480                  '' Reset The Current Viewport
   glMatrixMode GL_PROJECTION                 '' Select The Projection Matrix
   glLoadIdentity                             '' Reset The Projection Matrix
   gluPerspective 45.0, 640/480, 1.0, 1000.0  '' Calculate The Aspect Ratio Of The Window
   glMatrixMode GL_MODELVIEW                  '' Select The Modelview Matrix
   glLoadIdentity                             '' Reset The Projection Matrix

   InitGL()                                   '' All Setup For OpenGL Goes Here

   do
      glClear GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT  '' Clear The Screen And The Depth Buffer
      glLoadIdentity                                      '' Reset The Modelview Matrix
      gluLookAt 75, 75, 75, 0, 0, 0, 0, 1, 0              '' (3) Eye Postion (3) Center Point (3) Y-Axis Up Vector

      glRotatef yrot, 0.0, 1.0, 0.0                       '' Rotate On The Y-Axis By yrot

      Model_Draw (@MilkShapeModel)                        '' Draw The Model

      yrot + = 1.0f                                       '' Increase yrot By One

      flip
      if inkey$ = chr$(255)+"k" then exit do              '' exit if close box is clicked
   loop while MULTIKEY(SC_ESCAPE) = 0

   '' Empty keyboard buffer
   while inkey <> "": wend

   end


''------------------------------------------------------------------------------
'' This Will Be Called Right After The GL Window Is Set up
function InitGL() as integer

   Model_ReloadTextures (@MilkShapeModel)               '' Loads Model Textures

   glEnable GL_TEXTURE_2D                               '' Enable Texture Mapping ( NEW )
   glShadeModel GL_SMOOTH                               '' Enable Smooth Shading
   glClearColor 0.0, 0.0, 0.0, 0.5                      '' Black Background
   glClearDepth 1.0                                     '' Depth Buffer Setup
   glEnable GL_DEPTH_TEST                               '' Enables Depth Testing
   glDepthFunc GL_LEQUAL                                '' The Type Of Depth Testing To Do
   glHint GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST     '' Really Nice Perspective Calculations
   InitGL = true
end function

Und jetzt mein Problem:
Die 3D-Grafiken (also nur meine) lassen sich in zwar anzeigen allerdings sind sie komplett weiß anstatt dass eine Textur haben. Liegt es vielleicht daran, dass ich mehrere Texturen verwende oder mache ich da was mit Milkshape falsch?
Oder ist es was ganz anderes?
MfG Caran


Zuletzt bearbeitet von Caran am 25.08.2007, 09:18, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 24.08.2007, 19:14    Titel: Antworten mit Zitat

Kann das sein, dass deine Texturen keine Bitmaps (".bmp") sind?


Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 19:26    Titel: Antworten mit Zitat

Doch es sind Bitmaps.
Ach ja und in Milkshape werden die Grafiken richtig angezeigt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 24.08.2007, 19:28    Titel: Antworten mit Zitat

Sind die Bitmaps auch alle gleich hoch/breit also kA 32x32, 64x64 ect.. soweit ich weiss geht in FreeBASIC es (noch?) nicht wenn diese Formate nicht eingehalten werden.... wichtig ist auch das diese eine gerade anzahl haben also wie 2 4 8 ect.. nichts 3x3 aber da bin ich mir nicht wirklich sicher da ich etwas wie eine 33x33 textur zB noch nie probiert habe....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 24.08.2007, 19:28    Titel: Antworten mit Zitat

debug-code einfügen, und prüfen, ob a) der dateiname der bmps richtig übernommen wird (ich erinnere mich dunkel, dass ich da iwelche schwierigkeiten hatte), und b) ob die bmps richtig geladen werden (beispiel: bload vor "screen"/"screenres" = funktioniert nicht)


Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 19:33    Titel: Antworten mit Zitat

Ok ich glaub fast das, dass die bmps verschieden groß sind, ist das Problem. Am besten mache ich sie alle erstmal gleich groß, danach werd ich noch nen debug-code einfügen und dann sehen wir weiter.
Danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 19:49    Titel: Antworten mit Zitat

Also das habe ich jetzt alles gemacht: Die bmps sind jetzt alle gleich groß und ich hab den debug-code eingefügt, allerdings bleibt das Problem bestehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 24.08.2007, 20:00    Titel: Antworten mit Zitat

Ich bin nicht unbedingt OGL geprobt, aber funktioniert das Original Beispiel? Wenn ja waere mir sehr geholfen wenn Du mir diese zukommen lassen koenntest, damit ich das mal vergleichen kann happy damit auch ich Dir helfen kann vor lachen auf dem Boden rollen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 24.08.2007, 20:01    Titel: Antworten mit Zitat

Das orig. Beispiel funktioniert (zumindest bei mir) tadellos.
hmm

@Caran:
lade dein model, und die bmps iwo hoch...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 20:16    Titel: Antworten mit Zitat

Sorry das ich etwas lang gebraucht habe. War grad weg. Wie dem auch sei ich hab die Dateien hochgeladen und sie sind jetzt hier zu finden:
http://www.file-upload.net/download-380469/model.zip.html
Das original Beispiel funzt bei mir auch ohne Probleme.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 24.08.2007, 20:29    Titel: Antworten mit Zitat

soweit so gut...
Das Model wird geladen und angezeigt... oO(feine sache)
Die Texturen allerdings werden ebenfalls aus dem Model geladen bzw stehen dort wohl die zuweisungen.. pfad+dateiname???
Kann ich so aber nicht sagen/sehen da ich diese ms3d nicht oeffnen kann happy
vielleicht mal in deinem Model die Texturen und zuweisungen kontrollieren ?!
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 20:37    Titel: Antworten mit Zitat

ich habe grade mal das original Model bearbeitet und ihm eine andere Textur verpasst. Danach habe ich das Model geöffnet und was passiert?
Nun wird es genau wie meine anderen Grafiken angezeigt: weis. durchgeknallt
Folglich muss das Problem an mir und/oder Milkshape liegen oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 24.08.2007, 20:41    Titel: Antworten mit Zitat

vergleiche doch mal die Pfad+Dateiname Angaben in Milkshape mit dem Original und dem was Du da gemacht hast...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 24.08.2007, 20:51    Titel: Antworten mit Zitat

Soweit ich das gesehen habe sind die Pfadangaben gleich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 24.08.2007, 23:03    Titel: Antworten mit Zitat

dann stell doch einfach mal alles, was es für das programm braucht zusammen (bitmaps, ms3d-dateien, sourcecode etc., idealerweise in einer rar-datei), vielleicht finden wir dann den fehler.

gruß
Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 25.08.2007, 09:14    Titel: Antworten mit Zitat

Lutz Ifer hat Folgendes geschrieben:
dann stell doch einfach mal alles, was es für das programm braucht zusammen

Hab ich doch also oben der Quellcode dann noch die Dateien:
Caran hat Folgendes geschrieben:
http://www.file-upload.net/download-380469/model.zip.html


Grüße Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 25.08.2007, 12:06    Titel: Antworten mit Zitat

Ich habe ein paar fehler gefunden.
Du schreibst beim Laden von dem Model, dass es in Data/G/ ist.
Darf ich davon ausgehen, dass im gleichen Ordner auch die Texturen sind?
Wenn ja, dann ist das der Fehler. Im Model werden die Pfade gespeichert, wo sich die Texturen befinden. Diese sind laut der Model datei im Arbeitsorder, also dort wo sich die .exe befindet. Nach einigen Anpassungen ist es mir gelungen, das Model vollständig texturiert zu sehen.

Ich habe zum einen deinen code um chdir "data/G/" erweitert und ein wenig in milkshapemodel.bi(Model_ReloadTextures und LoadGLTexture) angepasst. So sollte das jetzt alles gehen.

Alle Dateien findest du hier.

MfG
Michael
_________________
Code:
#include "signatur.bi"


Zuletzt bearbeitet von Michael712 am 25.08.2007, 16:11, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 25.08.2007, 12:31    Titel: Antworten mit Zitat

Ja jetzt funktioniert es bei mir auch! grinsen grinsen
Vielen vielen Danke! Ohne eure hilfe wäre ich jetzt aus die Maus und ich hätte mein erstes OpenGL Model nie fertig bekommen. zwinkern

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 26.08.2007, 14:02    Titel: Antworten mit Zitat

kleine trickserei :

ich habe in der milkshape.bi folgendes geändert :
die for schleife in der "sub model_draw" rausgenommen und dieses zusätzlich in die sub reingesetzt : ByVal i As integer und in der ersten dim "i as integer" rausgenommen.

Code:

sub Model_Draw(byval pM as MODEL Ptr,ByVal i As integer)
   dim j as integer, k as integer
   dim texEnabled as GLboolean
   dim materialIndex as integer
   dim triangleIndex as integer
   dim pTri as TRIANGLE ptr
   dim index as integer

   texEnabled = glIsEnabled (GL_TEXTURE_2D)

   '' Draw by group
      materialIndex = pM->m_pMeshes[i].m_materialIndex
      if materialIndex >= 0 then
        ..........
        ..........


wenn ich jetzt ein modell aus mehreren einzelteilen habe, kann ich mit der zahl i bestimmen, welches modellteil gerade dargestellt werden soll und dadurch jedem modellteil eine eigene bewegung zuordnen. wenn das ganze modell aus zb 2 körperteilen besteht wird sieht es so aus :

Code:

glPushMatrix
      glRotatef yrot,1.0, 1.0, 0.0                         
      Model_Draw (@MilkShapeModel,0)
glPopMatrix 

glPushMatrix
      glRotatef xrot,0.0, 1.0, 0.0                         
      Model_Draw (@MilkShapeModel,1)
glPopMatrix 


und jedem körperteil wird jetzt eine andere drehung zugeordnet.
man krangelenke bauen, man kann die vorderräder vom auto einschlagen also alles geht jetzt in 3d einzeln zu bewegen und brauche nicht ein animiertes md2-format.

natürlich muss man wissen aus wieviel einzelteilen der körper besteht.
dieses is jetzt unbegrenzt ausbaufähig.

man kann auch das eine teil zb mit "glTranslate" verschieben falls es bei der herstellung mit milkshape nicht die richtige position hat oder man kann einen teleskoparm herstellen der ein und ausfahren wird usw...usw..

man kann für das einzelne teil alle opengl-befehle anwenden ohne den gesamten körperverbund zu beeinflussen.

noch etwas :

die anzahl der körperteile bekommt man so : anzahl=pM->m_numMeshes

denke dran beim laden wird von "0" an gezählt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

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

Na das is ja ziemlich cool du. Und es beanworet sogar meine Frage, die ich als nächstes stellen wollte. happy

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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