Aktuelle Zeit: 15.11.2018 12:48

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 12.06.2018 08:41 
Offline
Benutzeravatar

Registriert: 19.05.2012 17:09
Hallo,
nach meinen positiven Erfahrungen mit PB habe ich mich 'mal an die 3D-Grafik herangetraut. Dazu folgendes Beispiel aus dem PB-Buch (Danke an den Autor für die Bärenarbeit!)
Code:
Enumeration
 #MESH
 #TEX
 #MAT
 #OBJEKT_INVADER
 #LICHT
 #KAMERA_EINS
EndEnumeration
;Setzen der Breite, Höhe und Farbtiefe des Screens
;Aufgrund der Seitenbreite wurden hier abgekürzte Variablennamen verwendet :(
Global ScrB.i = 1024
Global ScrH.i = 768
Global ScrT.i = 32
;Andere Globale Variablen
Global Beenden.i = #False
;Einfache Prozedur zur Fehlerprüfung
Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
 If Ergebnis = 0
 MessageRequester("Fehler", Text, #PB_MessageRequester_Ok)
 End
 EndIf
EndProcedure
;Initialisiere Umgebung
Fehlerbehandlung(InitEngine3D(), "InitEngine3D() fehlgeschlagen.")
Fehlerbehandlung(InitSprite(), "InitSprite() fehlgeschlagen.")
Fehlerbehandlung(OpenScreen(ScrB, ScrH, ScrT, ""), "Kann Screen n. öffnen.")
Fehlerbehandlung(InitKeyboard(), "InitKeyboard() fehlgeschlagen.")
SetFrameRate(60)
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Fehlerbehandlung(LoadMesh(#MESH, "Invader.mesh"), "Kann Mesh nicht laden")
Fehlerbehandlung(LoadTexture(#TEX, "Invader.png"), "Kann Textur nicht laden")
Fehlerbehandlung(CreateMaterial(#MAT, TextureID(#TEX)), "Kann Material n. erstell.")
CreateEntity(#OBJEKT_INVADER, MeshID(#MESH), MaterialID(#MAT))
CreateLight(#LICHT, RGB(255, 255, 255), 0, 5, 0)
CreateCamera(#KAMERA_EINS, 0, 0, 100, 100)
CameraLookAt(#KAMERA_EINS, 0, 1, 2.5)
RotateCamera(#KAMERA_EINS, -15, 0, 0)
;Hauptschleife
Repeat
 y.i + 2
 RotateEntity(#OBJEKT_INVADER, 0, y, 0)
 RenderWorld()
 FlipBuffers()
 ExamineKeyboard()
 If KeyboardReleased(#PB_Key_Escape)
 Beenden = #True
 EndIf
Until Beenden = #True
End


Obiges Programm ist im Prinzip gut zu verstehen.
Im Verzeichnis des obigen Quelltextes habe ich den Ordner Data angelegt, indem auch die übernommenen Dateien Invader.mesh und Invader.png liegen.
Leider sehe ich beim Starten (PB 5.62 64-bit auf Windows 10) nur einen schwarzen Bildschirm. Das Programm wird nach ESCAPE ohne eine Fehlermeldung beendet.

Was mache ich falsch?

_________________
Windows10 / PB5.60 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 13.06.2018 08:32 
Offline

Registriert: 21.01.2008 19:11
Hallo!

Ich habe mit 3D nichts am Hut, aber es scheint eine "Invader.mesh" zu fehlen.
Diese ist auf meinem Rechner nicht vorhanden. Deshalb läuft der Schnipsel
wohl nicht.
Aber warte mal auf die Profis....

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 13.06.2018 10:34 
Offline
Benutzeravatar

Registriert: 21.08.2006 17:39
Hi,

ungetestet kann ich nur vermuten, dass alles korrekt abgearbeitet wird.
Typische Fehlerquellen sind, dass die Kamera nicht zum Objekt guckt (falsche Werte),
die Kamera im Objekt steckt (und die Objektflächen einseitig durchsichtig sind) oder
aber deine Lichtquelle falsch leuchtet (ebenfalls falsche Position oder falsches Reflektionsverhalten des Objektes).
Wenn ich dran denke, gucke ich mir das Heute Abend mit einem Dummy an.
Einen Fehler in deinem Modell kann ich dann aber nicht ausschließen. ;)

MFG
MIB

_________________
(hab alles, kann alles, weiß alles!!^^)

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 13.06.2018 17:46 
Offline
Benutzeravatar

Registriert: 21.08.2006 17:39
Hi,

wenn ich folgende Zeilen umändere und damit ein anderes Mesh lade (robot ist aus dem Beispielordner),
sehe ich letztgenanntes am oberen Bildschirmrand vorbeifliegen.

Code:
dd3DArchive("E:\Programme\PureBasic\5.60\Examples\3D\Data\", #PB_3DArchive_FileSystem)
Fehlerbehandlung(LoadMesh(#MESH, "Models\robot.mesh"), "Kann Mesh nicht laden")
Fehlerbehandlung(LoadTexture(#TEX, "Textures\r2skin.jpg"), "Kann Textur nicht laden")


PB 5.60 x64

Es wird also wirklich an einem der oben genannten Gründen liegen, dass du nichts siehst. ;)

MFG
MIB

_________________
(hab alles, kann alles, weiß alles!!^^)

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 13.06.2018 19:42 
Offline
Benutzeravatar

Registriert: 26.11.2006 19:07
ProgOldie hat geschrieben:
Dazu folgendes Beispiel aus dem PB-Buch...


Das Buch ist immer noch auf dem Stand von PB 4.51 - damit funktionieren alle Beispiele fehlerfrei.

Ab PB 4.6 und 5.0 hat sich soviel im 3D-Bereich geändert, dass diese Beispiele nicht mehr funktionieren (das war einer der Hauptgründe warum ich noch nicht zur kompletten Überarbeitung des Buches gekommen bin. Ich habe das aber noch im Hinterkopf :) ).

Wenn Du also die 3D-Beispiele testen möchtest, musst Du ein paralleles PB 4.51 verwenden oder das ganze an die aktuelle Version anpassen. Da meine 3D-Kenntnisse auch nicht so riesig sind (meine ersten 3D-Erfahrungen habe ich damals bei der Konvertierung des Buches nach PB 4.51 gesammelt und seither nicht ausgebaut :mrgreen: ) kann ich Dir dabei leider nicht behilflich sein.

Gruß, BI2

_________________
PB 5.4x (x64), LinuxMint 17.2 - Xfce (x64)

Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Einstiegsbeispiel scheitert schon
BeitragVerfasst: 14.06.2018 18:13 
Offline
Benutzeravatar

Registriert: 19.05.2012 17:09
Dank an alle,
jetzt sehe ich aus was. Man muss mit Koordinaten und Kameraposition höllisch aufpassen.

_________________
Windows10 / PB5.60 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye