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:

[minib3d] 3D-Spacegame Tutorial von TFT und Westbeam

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



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 13.02.2011, 21:25    Titel: [minib3d] 3D-Spacegame Tutorial von TFT und Westbeam Antworten mit Zitat

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. zwinkern

mfg, Westbeam
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 15.02.2011, 11:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 15.02.2011, 17:25    Titel: Antworten mit Zitat

hm, muss entweder ein Fehler beim Up- oder Downloaden sein, die Dateien auf meinem PC haben dieses Fehler nicht. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 15.02.2011, 17:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



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

BeitragVerfasst am: 22.09.2011, 22:06    Titel: Antworten mit Zitat

Im vorraus erstemal entschuldigung für's ausbuddeln zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 22.09.2011, 22:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 22.09.2011, 23:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.09.2011, 23:14    Titel: Antworten mit Zitat

Hallo,

könnte es sein, dass du eigentlich EXEPATH* suchst und nicht CURDIR**?

* EXEPATH: Programmverzeichnis. Das Verzeichnis, in dem die ausgeführte EXE-Datei liegt.
** CURDIR: Arbeitsverzeichnis. Unterschiedlich, je nach dem, von wo das Programm aufgerufen wurde.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



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

BeitragVerfasst am: 22.09.2011, 23:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 23.09.2011, 12:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.09.2011, 12:46    Titel: Antworten mit Zitat

...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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 23.09.2011, 14:21    Titel: Antworten mit Zitat

Code:
Chdir("gfx")
Var tex=LoadTexture("MeineTolleTextur.bmp")
Chdir("..")

Geht leider nicht wirklich anders. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 23.09.2011, 19:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



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

BeitragVerfasst am: 23.09.2011, 20:32    Titel: Antworten mit Zitat

Westbeam hat Folgendes geschrieben:
Code:
Chdir("gfx")
Var tex=LoadTexture("MeineTolleTextur.bmp")
Chdir("..")

Geht leider nicht wirklich anders. zwinkern


Ok danke, find ich etwas seltsam, aber wenns nicht anders geht, gehts halt nicht anders zwinkern


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 lächeln 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.09.2011, 20:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 23.09.2011, 21:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.09.2011, 14:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen 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