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

Aktuelle Zeit: Mo Jul 14, 2025 20:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 24, 2005 16:59 
Offline
DGL Member

Registriert: Do Nov 20, 2003 19:52
Beiträge: 48
Wohnort: Tillingen bei Chemnitz
Hast du deinem Modell vor dem Exportieren ein Material zugewiesen? Du must mindestens ein Material in deiner Szene haben, sonst funktioniert es nicht.

_________________
...die Idee ist gut, doch die Welt noch nicht bereit...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 24, 2005 17:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1. //places transparent meshes to be rendered last
  2. //TODO: if transparent material is not the first material for a mesh it does not work.

Das steht in der gl3DS.pas genau über dieser Funktion (zumindest in der Version die ich habe) und sollte daher auch beachtet werden. Wenn das nicht möglich ist, dann musst du dir selbst ne eigene Funktion schreiben die grob nach Transparenz sortiert, das geht aber recht leicht denn im Normalfall reicht es alle soliden Objekte zu rendern und danach alle transparenten.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 26, 2005 21:40 
Offline
DGL Member

Registriert: Di Feb 22, 2005 12:51
Beiträge: 11
Wohnort: NRW
Hey Danke!!!! :D

Ich glaube das Problem erkannt zu haben.... mal sehen ob ich jetzt auch eine Lösung finde!?
Ich benutze 6 Materials.
In meiner *.txt Datei besitzen alle Materials in der 6. Zeile den Wert "0.000000" (laut ms3d-SDK der Wert für die Transparenz). In meinem Project, der gl3ds.pas besitzen alle Materials in Ftransparency den Wert "1". Was ich mir nicht so ganz erklären kann, denn so scheitert in der gl3ds.pas die IF-Abfrage: if ... Ftransparency < 1.0 then ...

Code:
  1. //places transparent meshes to be rendered last
  2. //TODO: if transparent material is not the first material for a mesh it does not work.
  3. procedure TAll3DSMesh.CalculateRenderOrder;
  4. var
  5.   m: integer;
  6.   found: integer;
  7.   matloop: integer;
  8. begin
  9.   found := 0;
  10.   m := 0;
  11.   while m < FNumMeshes - 1 do
  12.   begin
  13.     if m < FNumMeshes - found then
  14.     begin
  15.       for matloop := 0 to High(FMesh[FrenderOrder[m]].FmatID) do
  16.       begin
  17.         if FMaterial[FMesh[FrenderOrder[m]].Fmatid[matloop]].Ftransparency < 1.0 then
  18.         begin
  19.           found := found + 1;
  20.           FRenderOrder[m] := FNumMeshes - Found;
  21.           FRenderOrder[FNumMeshes - Found] := m;
  22.           m := m - 1; //a new mesh is placed at renderorder so it has to be checked again...
  23.         end;
  24.       end;
  25.     end;
  26.     m := m + 1;
  27.   end;
  28. end;


Ändere ich den Wert in meiner *.txt-Datei, hat das jedoch keinen Einfluss. Ftransparency enthält immer den Wert "1".
Nochmal zu meinem Verständniss: 0 = Solid und 1 = Transparent?
Wenn das so ist, muss ich es schaffen den Wert auf 0 zu setzen?
Könnte das die ganze Zeit mein Problem sein?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 26, 2005 22:46 
Offline
DGL Member

Registriert: Di Feb 22, 2005 12:51
Beiträge: 11
Wohnort: NRW
Das Problem mit dem Milkshapeloader hab ich gelöst! :D
Will jedoch trotzdem schaffen auch mein 3DS-Problem zu lösen! Sonst muss ich ja alles mit Milkshape machen und das hatte ich eigentlich nicht vor. ;)
Die ppModelGL.pas, des API-Loader-Beispiel vom Board hat einen Fehler in Zeile 279 gehabt. Naja nach meiner änderung funktionieren meine erstellten MS3D-Models jetzt zumindest. Komisch, dass das mit der Beispiel-Datei(Ernie) funktioniert hat.

statt:
Zitat:
for i := 0 to numJoints do begin


müsste:
Zitat:
for i := 0 to numJoints - 1 do begin


Code:
  1.   procedure TAnimatedModelGL.AdvanceAnimation(aTime : integer);
  2.   var a,b,i,frame                : integer;
  3.       TimeDelta, InterpValue     : Single;
  4.       TransVec, RotVec           : ThreeSingles;
  5.       TransMatrix, RelativeFinal : TMatrix;
  6.       CurFrame, PrevFrame        : TModelKeyframe;
  7.   begin
  8.     if numJoints = 0 then exit;//exit if the model isn't animated
  9.  
  10.     TransMatrix := IdentityMatrix;
  11.     RelativeFinal := IdentityMatrix;
  12.  
  13.     inc(Time, aTime);
  14.     if Time > MaxTime then begin
  15.       dec(Time,MaxTime);
  16.       Restart;
  17.     end;
  18.  
  19.     for i := 0 to numJoints - 1 do begin  // so klappt es bei mir jetzt !!!
  20.       if (Joints[i].nRotationKeyframes = 0) and (Joints[i].nTranslationKeyframes = 0) then begin
  21.         Joints[i].FinalMatrix := Joints[i].AbsoluteMatrix;
  22.         exit;
  23.       end;
  24.       //TRANSLATION - Interpolate between Keyframes to get TransVec


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]