Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 21:06

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Laden von Model
BeitragVerfasst: Di Jan 03, 2006 17:36 
Offline
DGL Member
Benutzeravatar

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.

Der Sourcecode:

Code:
  1. var
  2.   Pawn: TAll3dsMesh;
  3. ...
  4.   Pawn := TAll3dsMesh.Create(nil);
  5.   Pawn.LoadFromFile('.\Data\Models\Pawn.3ds');
  6. ...
  7. Pawn.Render;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 03, 2006 18:10 
Offline
DGL Member
Benutzeravatar

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:
  1. Mesh_1:= TAll3dsMesh.Create(nil);
  2. Mesh_1.TexturePath:= '\bla';
  3. 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re
BeitragVerfasst: Di Jan 03, 2006 18:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
Texturen habe ich keine verwendet. Daran kann es nicht liegen. Ich wollte erstmal irgendwas aufs Spielfeld bringen. Trotzdem Danke.

Oder muss man etwa Texturen verwenden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 03, 2006 19:17 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Bei der gl3DS musst du texturen verwenden. Mindestens 1.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 03, 2006 19:54 
Offline
Fels i.d. Brandung
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Di Jan 03, 2006 21:19 
Offline
DGL Member
Benutzeravatar

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.

Code:
  1. uses
  2.    ..., ppModelGL, ppLoadms3d, geometryEx, geometry;
  3. ...
  4. var
  5.    Pawn: TStaticModelGL;
  6. ...
  7.    Pawn := ms3dLoadStaticModel('.\Data\Models\Pawn.ms3d');
  8. ...
  9.    Pawn.Render


Bei diesem Code sehe ich jedenfalls im ausgeführten Programm nichts. Ist da noch ein Fehler drin?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mi Jan 04, 2006 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
aNTichRisT hat geschrieben:
@ 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 :P

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 :P

//edit
Antichrist, überprüf mal, was dir Pawn.Render zurückgibt, es ist ja eine Function, keine Procedure.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mi Jan 04, 2006 16:14 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 04, 2006 16:35 
Offline
DGL Member
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mi Jan 04, 2006 17:28 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
aNTichRisT hat geschrieben:
@ 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 :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Danke, danke, danke
BeitragVerfasst: Mi Jan 04, 2006 17:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
JAAAAAAAAAAAAAAAAAAAAAA :D :D :D
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 :!:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mi Jan 04, 2006 18:13 
Offline
DGL Member
Benutzeravatar

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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 04, 2006 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mi Jan 04, 2006 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
Okay, dann benutze ich doch lieber die gl3ds.pas :wink:
Gut, sonst funktioniert alles andere soweit. Danke.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]