Registriert: Do Nov 17, 2005 14:40 Beiträge: 63 Wohnort: Dötlingen
Hallo,
ich wollte heute als Übung ein Schachspiel in 3D programmieren. Die Figuren will ich dabei mittels Milkshape 3D herstellen und in mein Schachspiel laden. Als ich jedoch den Bauern produziert habe und mit der gl3ds.pas in mein Schachspiel laden wollte kam erstmal ein dicker Fehler: EAccess Violation. [...] Zugriffsverletzung bei Adresse 0047E60F in Modul "Schach3D.exe"[...] Lesen von Adresse 00000000. Prozess wurde angehalten. etc.
Das Programm startet dann nicht, aber Delphi öffnet die gl3ds.pas und springt dort in eine Zeile. Heißt das, dass der Fehler in der gl3ds.pas liegt, oder habe ich einen Fehler gemacht?
Der Fehler kommt übrigens beim Laden des Models, nicht beim Rendern.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Bei gl3ds musst du glaub ich noch den Pfad zu den Texturen (soweit verwendet) angegeben:
Code:
Mesh_1:= TAll3dsMesh.Create(nil);
Mesh_1.TexturePath:= '\bla';
Mesh_1.LoadFromFile(filename);
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Übrigens nur so am Rande: Das ganze ist zwar inzwischen sicherlich hoffnungslos veraltet, aber vor einigen Jahren haben Lithander und ich einen Milkshape-Loader geschrieben. Vielleicht kannst Du Dir damit auch den Umweg über 3ds sparen. Im Gegensatz zu 3ds ist ms3d nämlich eigentlich wirklich sehr einfach zu verarbeiten.
http://www.delphigl.com/do_download.php?f=505
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Do Nov 17, 2005 14:40 Beiträge: 63 Wohnort: Dötlingen
Okay, danke euch beiden, aber:
@ Flash: Irgendwie krieg ich bei Milkshape 3D die Texturen nicht auf mein Model. Ich kann die Texturen zwar laden, aber wenn ich diesen Texture Coordinate Editor aufrufe, sehe ich das ausgewählte Model nicht und kann dies somit auch nicht texturieren.
@ Phobeus: Irgendwie ging das mit dem ms3d-Load bei mir nicht ganz, sag mir, wenn folgender Code falsch ist.
@ Flash: Irgendwie krieg ich bei Milkshape 3D die Texturen nicht auf mein Model. Ich kann die Texturen zwar laden, aber wenn ich diesen Texture Coordinate Editor aufrufe, sehe ich das ausgewählte Model nicht und kann dies somit auch nicht texturieren.
Du musst nach dem Laden den Körper markieren und dann im Texturenpanel auf Assign klicken. Dann müsstest du im Texturkoordinaten Editor die Verticen vom Mesh sehen. Ansonsten mal unter "Region" den Körper auswählen oder andere Sicht einstellen.
BTW: Kann mir mal jemand erklären, was "Region" überhaupt macht? Ich bin bisher ganz gut ohne dem klargekommen, aber vielleicht bringt es ja eine neue Offenbahrung fürs Texturieren mit sich
Zitat:
Übrigens nur so am Rande: Das ganze ist zwar inzwischen sicherlich hoffnungslos veraltet, aber vor einigen Jahren haben Lithander und ich einen Milkshape-Loader geschrieben.
Huch, Ich arbeite damit immer noch
//edit
Antichrist, überprüf mal, was dir Pawn.Render zurückgibt, es ist ja eine Function, keine Procedure.
Registriert: Do Nov 17, 2005 14:40 Beiträge: 63 Wohnort: Dötlingen
Okay, danke. Das mit der gl3ds klappt jetzt ohne Fehlermeldung. Allerdings sehe ich nichts auf meinem Bildschirm, obwohl Model.Render aufgerufen wird.
Es ist das erste mal, dass ich die gl3ds.pas verwende, daher weiß ich noch nicht einmal, wie ich festlegen kann, wo das Model gezeichnet wird. Vielleicht wird es ja gezeichnet, aber irgendwo, wo ich es nicht sehen kann, oder ist immer noch etwas fehlerhaft???
@ Mr.Fletcher: Was kann die Render-function denn zurückgeben? der rückgabewert hat irgendwie einen recht seltsamen typ.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Geh mal mit glTranslatef(0, 0, -20) ein bisschen zurück, und wennst dann noch nix siehst, skalier mal mit glScalef(0.1, 0.1, 0.1), da 3ds-Objekte normalerweise sehr groß sind.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
@ Mr.Fletcher: Was kann die Render-function denn zurückgeben? der rückgabewert hat irgendwie einen recht seltsamen typ.
Der Rückgabetyp ist TModelGLRenderResult, der auch in der Unit ppModelGL definiert ist. Der kann entweder RENDERED_OKAY, NO_OPENGL oder MATERIAL_NOT_FOUND nicht sein. Du deklarierst halt ne Variable von dem Typ, z.b. RenderResult. Dann rufst du auf RenderResult := Pawn.Render; und wenn dann in RenderResult danach der Wert RENDERED_OKAY steckt, kannst du davon ausgehen, dass der Fehler woanders liegt
Registriert: Do Nov 17, 2005 14:40 Beiträge: 63 Wohnort: Dötlingen
JAAAAAAAAAAAAAAAAAAAAAA Okay, jetzt geht es! glScalef(0.1,0.1,0.1) hat den Ausschlag gegeben. Ich hätte meinen Bauern vielleicht ein bisschen kleiner machen sollen...
Okay, es geht jetzt soweit mit der gl3ds.pas, auch wenn ich jetzt schon glücklich bin, wäre es dennoch praktisch, wenn es jetzt auch mit Phobeus' Loader ginge.
Aber auf jeden Fall schon mal vielen Dank an alle Helfern
Registriert: Do Nov 17, 2005 14:40 Beiträge: 63 Wohnort: Dötlingen
Jetzt geht es auch mit dem ms3d-loader, allerdings kommt beim Programmstart noch der Fehler:
Error opening \Data\Models\x.bmp
Das Programm startet trotzdem und das Model wird dargestellt, allerdings in gelb, statt rot, wie es mit der Textur eigentlich aussehen sollte. Muss man bei dem ms3d-loader auch noch den Texturen-Pfad angeben?
Hi, du musst halt aufpassen, wo sich die Textur befindet, die du angibst. Am besten hälst du mal den Compiler da an, wo er die Textur laden würde von nem Pfad aus und guckst dir den Pfad mal an. Ich weiß jetzt net ganz genau, was passiert, wenn du versuchst, "\Data\Models\x.bmp" zu laden, ob dann der lokale Pfad genommen wird, oder nicht. Ansonsten musst du da mal bissel was rumarbeiten an dem Loader, damit er wieder funktioniert, wie er soll, hab ich glaub ich auch gemacht.
Er wird wohl gelb dargestellt werden, da du ihm bei den Material Einstellungen die gelbe Farbe zugewiesen hast.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.