Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 13.02.2011, 21:25 Titel: [minib3d] 3D-Spacegame Tutorial von TFT und Westbeam |
|
|
Hallo Leute
Ich habe heute das (Blitz3D-)Tutorial wiedergefunden, mit welchem ich vor 4 Jahren 3D-Programmierung gelernt habe. Es ist ursprünglich von TFT(einem Blitz3D-Programmierer) in BlitzBasic geschrieben wurden. Ich habe mir heute die Mühe gemacht und die ersten 3 Teile davon in FreeBasic und minib3d übersetzt. Diese 3 ersten Teile beinhalten folgende Inhalte:
-1. Teil: Grundlagen(3D-Szene erstellen, Licht, Kamera, einfache Objekte ... etc)
-2. Teil: Texturen
-3. Teil: 3D-Modelle laden und anzeigen
Es sind insgesammt 21 Teile, in deren Verlauf ein komplettes 3D-Space Game ala X erstellt wird. Die Tutorials liegen als .bas Dateien vor und sind gut kommentiert(von mir). Alle benötigten Dateien, bis auf die minib3d-Bibliothek, werden im Tutorial mitgeliefert. Die minib3d-Bibliothek findet ihr hier:
http://www.freebasic.net/forum/viewtopic.php?t=15409
Die 3 Tutorials könnt ihr als ein Paket hier downloaden(ZIP-Archiv):
http://www.file-upload.net/download-3212202/SpaceTut-1-3.zip.html
Die anderen Tutorials beinhalten folgende Themen, welche ich auch noch übersetzen werde:
-4. Teil: Schiffs-Steuerung
-5. Teil: Größenverhältnisse
-6. Teil: Kameraeinstellung
-7. Teil: Kameraeinstellung 2
-8. Teil: Skybox
-9. Teil: Skybox 2
-10. Teil: Planeten und Korrekturen an der Steuerung
-11. Teil: "Schiffsmonitor" und Codeoptimierung
-12. Teil: andere Objekte und Codeoptimierung 2
-13. Teil: Kollision
-14. Teil: Kollision 2, Stationen und Hangars
-15. Teil: Hangar 2
-16. Teil: Frachter und Optikverbesserung
-17. Teil: Codeoptimierung 3
-18. Teil: Codeoptimierung 4
(-19. Teil: Würde nur mit BlitzBasic funktionieren und wird deshalb ausgelassen)
-20. Teil: Flugeffekte und Physics
-21. Teil: "Sternenstaub" (Wird im Tutorial näher erklärt)
Ich hoffe, ich kann euch damit die 3D-Programmierung mit minib3d ein wenig näher bringen.
mfg, Westbeam |
|
Nach oben |
|
 |
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 15.02.2011, 11:51 Titel: |
|
|
nice work,
mir ist nur aufgefallen, dass ab und zu Wörter fehlen:
Code: | 'Jetzt fängt das Tutorial an, im folgenden werden die Breite, die Höhe, der Modus und die Farbtiefe
'des zu erstellenden Fensters in den folgenden Variablen
Const screen_x=640
Const screen_y=480
Const screen_m=0
Const screen_t=16
|
|
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 15.02.2011, 17:25 Titel: |
|
|
hm, muss entweder ein Fehler beim Up- oder Downloaden sein, die Dateien auf meinem PC haben dieses Fehler nicht.  |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 15.02.2011, 17:51 Titel: |
|
|
vielleicht ist ja auch nur ein NUL zuviel? und der eine editor schneidet ab, der andere entfernt das NUL oder so? _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 22.09.2011, 22:06 Titel: |
|
|
Im vorraus erstemal entschuldigung für's ausbuddeln
hab mir grad mal miniB3D bzw openB3D angesehen und das erste Beispiel auf FPB genommen...
Da ich die letzten Tage alles mögliche an beispielen, engines, SDKs ect geladen installiert und auf meinen platten das absolute Chaos herscht, wollte ich bei den dingen die bereits wie hier in freebasic funktionieren ein wenig ordnung mit den libs und verzeichnissen reinbringen...
So wollte ich das erste beispiel mit einer einfachen zeile ändern
Code: | var texture = LoadTexture(curdir & "media/box.bmp") |
habe schon alles mögliche versucht, mit backslash, slash, ohne curdir ect...
leider lädt er die textur nicht aus einem anderen verzeichnis heraus?!
Kann man da was machen, oder mach ich was falsch?
gruss _________________
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 22.09.2011, 22:47 Titel: |
|
|
Ich würde sagen, es muss curdir & "/media/box.bmp" heißen, weil curdir nicht mit einem slash endet. Ob es daran liegt, weiß ich aber nicht. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 22.09.2011, 23:11 Titel: |
|
|
hab eigentlich schon alles durch
"/media/box.bmp"
"\media\box.bmp"
"media/box.bmp"
"media\box.bmp"
curdir & "media/box.bmp"
curdir & "media\box.bmp"
curdir+"\media\box.bmp"
curdir+"/media/box.bmp"
...keine chance, es lädt aber problemlos wenn ich es im Arbeitsverzeichnis liegen habe. _________________
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 22.09.2011, 23:41 Titel: |
|
|
Wäre in beiden fällen das selbe und funktioniert ebenfalls leider nicht.
als Beispiel aber:
Code: | screen 19,32
dim test as any ptr=Imagecreate(512,512)
bload "media/box.bmp",test
put (100,100),test,pset
sleep |
lädt die textur/bitmap problemlos (im selben verzeichnis wie das Beispiel) _________________
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 23.09.2011, 12:20 Titel: |
|
|
Befindet sich deine exe im verzeichniss "/home/blub/" dann kannst du mit
Code: |
bload media/box.bmp", test
|
und dem selben
Code: |
bload exepath & "/" & media/box.bmp", test
|
das Bild laden, wenn es im unterverzeichniss von "media" im exe verzeichniss liegt.
churdir wäre nicht empfehlenswert, da es einige Probleme hervorrufen kann im zusammenspiel mit Threads.
Ich nutze hier als exepath / curdir mal
Linux: "/home/blub"
Windows: "C:\user\blub"
"/media/box.bmp"
Linux: "/media/box.bmp" -> Läd unter linux von Root aus
Windows: "C:\user\blub/media/box.bmp" & Vermutlich passiert nix, da / keine Pfadtrennung darstellt / Flasche Slash's
"\media\box.bmp"
Linux: "/home/blub/\media\box.bmp" -> Doppelte Slash's / Flasche Slash's
Windows: "C:\user\blub\\media\box.bmp" -> Doppelte Slash's
"media/box.bmp"
Linux: "/home/blub/media/box.bmp" -> OK
Windows: "C:\user\blub\media/box.bmp" -> Flasche Slash's
"media\box.bmp"
Linux: "/home/blub/media\box.bmp" -> Flasche Slash's
Windows: "C:\user\blub\media\box.bmp" -> OK
curdir & "media/box.bmp"
Linux: "/home/blubmedia/box.bmp" -> fehlendes Slash
Windows: "C:\user\blubmedia/box.bmp" -> fehlendes Backslash / Flasche Slash's
curdir & "media\box.bmp"
Linux: "/home/blubmedia\box.bmp" -> fehlendes Slash / Flasche Slash's
Windows: "C:\user\blubmedia\box.bmp" -> fehlendes Backslash
curdir+"\media\box.bmp"
Linux: "/home/blub\media/box.bmp" -> falsche Slash's
Windows: "C:\user\blub\media\box.bmp" -> OK
curdir+"/media/box.bmp"
Linux: "/home/blub/media/box.bmp" -> OK
Windows: "C:\user\blub/media/box.bmp" -> falsche Slash's
Persönlich tendiere ich zur nutzung von "Exepath" wegen oben nenanntem Grund.
Daher wäre die Richtige anwendungsart (auch auf GROS / kleinschreibung achten!!):
Code: |
Dim FilePath as String
#if defined(__fb_win32__)
FilePath = "\media\box.bmp"
#elseif defined(__fb_linux__)
FilePath = "/media/box.bmp"
#endif
bload Exepath & FilePath, test
|
oder aber, damits einfacher in der verwendung beim erstellen von Pfade wird:
Code: |
Dim Slash as String
#if defined(__fb_win32__)
Slash = "\"
#elseif defined(__fb_linux__)
Slash = "/"
#endif
bload Exepath & Slash & "media" & Slash & "box.exe", test
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.09.2011, 12:46 Titel: |
|
|
...oder einfach immer "/" verwenden, damit kann Windows auch prima umgehen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 23.09.2011, 14:21 Titel: |
|
|
Code: | Chdir("gfx")
Var tex=LoadTexture("MeineTolleTextur.bmp")
Chdir("..") |
Geht leider nicht wirklich anders.  |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 23.09.2011, 19:48 Titel: |
|
|
Jojo hat Folgendes geschrieben: | ...oder einfach immer "/" verwenden, damit kann Windows auch prima umgehen. |
habs gerade nachgelesen. Hast recht, aber dennoch ist das keine saubere Art. Und, ob dies für jedes Win (95, 98, ...) gilt ist auch fraglich.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.09.2011, 20:32 Titel: |
|
|
Westbeam hat Folgendes geschrieben: | Code: | Chdir("gfx")
Var tex=LoadTexture("MeineTolleTextur.bmp")
Chdir("..") |
Geht leider nicht wirklich anders.  |
Ok danke, find ich etwas seltsam, aber wenns nicht anders geht, gehts halt nicht anders
ThePuppetMaster hat Folgendes geschrieben: |
oder aber, damits einfacher in der verwendung beim erstellen von Pfade wird:
Code: |
Dim Slash as String
#if defined(__fb_win32__)
Slash = "\"
#elseif defined(__fb_linux__)
Slash = "/"
#endif
bload Exepath & Slash & "media" & Slash & "box.exe", test
|
MfG
TPM |
Die Lösung find ich ganz gut nur nutzt ja alles nichts wenn die funktion von openB3D
scheinbar nicht auf unterverzeichnisse zugreifen kann...
Irgendwie schade, verpasst dem ding für mich im ausprobieren direkt einen kleinen dämpfer.... _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.09.2011, 20:52 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | Hast recht, aber dennoch ist das keine saubere Art. Und, ob dies für jedes Win (95, 98, ...) gilt ist auch fraglich. |
Wieso sollte das nicht "sauber" sein? Windows und auch DOS (ob das bei ich behaupte jetzt mal, dass es bei DOS 1.0 und DOS 2.0 auch schon so war, von den späteren weiß ich es sicher) konnte schon immer mit beiden Pfadtrennzeichen umgehen. Und das wird auch so bleiben. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 23.09.2011, 21:42 Titel: |
|
|
Ganz einfach. Es ist laut Definition und Dokumentation nicht als solches Spezifiziert wurde. Windows definiert nun mal das Backslash als Komponenten Trenner, und nicht den Slash. Nur weil sie diese Kompatibilität hinzu gefügt haben heißt es nicht, das es Konform ist.
Das dies unter älteren Versionen nicht funktionieren könnte vermute ich aus der tatsache heraus, das in der MSDN geschrieben steht:
Zitat: | Note File I/O functions in the Windows API convert "/" to "\" as part of converting the name to an >>NT-style<< name, except when using the "\\?\" prefix as detailed in the following sections. |
und da Win98 nunmal kein NT-System ist, gehe ich stark davon aus, das dies unter win98 nicht funktioniert. (kann ich aber bei gelegenheit mal testen.)
Jojo hat Folgendes geschrieben: | Und das wird auch so bleiben. |
Woher weist du das? .. arbeitest du bei Microsoft in der Entwicklung?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.09.2011, 14:22 Titel: |
|
|
Nein, aber ich weiß, dass man sich bei Microsoft nicht gerne Kunden vergrault durch solche trivialen (und auch nicht-trivialen, wie z.B. das "neue" Dateisystem, das mit Vista kommen sollte) Änderungen. In erster Linie muss alte Software auch noch mit neuen Betriebssytem-Versionen arbeiten, und wenn das daran scheitert, dass man plötzlich eines von zwei Pfadformaten, das man schon seit 20 Jahren unterstützte nicht mehr unterstützt, kann man nur dumm sein. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|