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

Aktuelle Zeit: Do Jul 10, 2025 00:53

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



Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: 2D_Textur_Animation_Hilfe!
BeitragVerfasst: Mi Jul 26, 2006 13:06 
Offline
DGL Member

Registriert: Mi Jul 26, 2006 12:35
Beiträge: 15
Hallo,

Ich habe folgendes Problem:

Ziel: Ich möchte eine Animation aus 24 verschiedenen Einzelbildern auf einem Qaud anzeigen lassen.

Ich weiß zwar wie ich eine Einzeltextur laden und darstellen kann jedoch nicht wie ich

a) alle Texturen in den Speicher bzw. in ein Array bekomme
b) sie zeitlich in einer endlosschleife abspielen kann.


Code:
  1.  
  2. unit TEX;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8.   Dialogs,SDL,dglOpenGL,sdl_image,Logger, ExtCtrls;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.  
  13.  
  14.  
  15.   private
  16.     { Private-Deklarationen }
  17.   public
  18.     { Public-Deklarationen }
  19.   end;
  20.  
  21. CONST    WINDOWS_CAPTION     =       'Animated Texture';
  22.  
  23.     SCREEN_WIDTH        = 800;
  24.     SCREEN_HEIGHT       = 600;
  25.     SCREEN_BPP          = 32;
  26.  
  27.     FPS_INTERVAL        = 1000;               // Jede Sekunde FPS berechnen
  28.  
  29.     INVALID_MODULEHANDLE = 0;
  30. var
  31.  
  32.     Form1: TForm1;
  33.     surface     : PSDL_Surface;
  34.     videoInfo   : PSDL_VideoInfo;
  35.     videoflags  : Uint32;
  36.     done        : Integer;                    // Programmstatus : 0 Default -1 Programmabruch
  37.     FPSCount    : LongInt;
  38.     GLHandle: HINST;
  39.     GLUHandle: HINST;
  40.     tex_surface :  PSDL_Surface;
  41.     texture : array[1..24] of gluInt;
  42.  
  43.  
  44. implementation
  45.  
  46. {$R *.dfm}
  47.  
  48.  
  49.  
  50. function IntToStr(Num : Integer) : String;
  51. begin
  52.   Str(Num, result);
  53. end;
  54.  
  55.  
  56.  
  57. //----------------------------------------------------------------------------
  58. // Zeichnen der Szene
  59. //----------------------------------------------------------------------------
  60. procedure glDrawScene;
  61. begin
  62.   // Screen- und Tiefenbuffer bereinigen
  63.   glClear( GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );
  64.   glLoadIdentity;
  65.   glTranslatef( 0.0, 0.0, -5.0 );
  66.   glMatrixMode(GL_TEXTURE);
  67.    glLoadIdentity;
  68.   glMatrixMode(GL_MODELVIEW);
  69.  
  70.   glEnable(GL_TEXTURE_2D);
  71.   glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
  72. glBindTexture(GL_TEXTURE_2D, texture);
  73.  glBegin( GL_QUADS );
  74.  glTexCoord2f(0,0);
  75.     glVertex3f( -1.0, 1.0, 0.0 );
  76.  glTexCoord2f(1,0);
  77.     glVertex3f( 1.0, 1.0, 0.0 );
  78.  glTexCoord2f(1,1);
  79.     glVertex3f( 1.0, -1.0, 0.0 );
  80.  glTexCoord2f(0,1);
  81.     glVertex3f( -1.0, -1.0, 0.0 );
  82.  glEnd();
  83.  glFlush();
  84.  glDisable(GL_TEXTURE_2D);
  85.   // Buffer-Wechseln ==> Anzeigen
  86.   SDL_GL_SwapBuffers;
  87. end;
  88.  
  89. //----------------------------------------------------------------------------
  90. // Terminieren der SDL-Anwendung
  91. //----------------------------------------------------------------------------
  92. procedure Quit_App;
  93.   procedure CloseOpenGL;
  94.   begin
  95.     if GLHandle <> INVALID_MODULEHANDLE then
  96.     begin
  97.       FreeLibrary(Cardinal(GLHandle));
  98.       GLHandle := INVALID_MODULEHANDLE;
  99.     end;
  100.  
  101.     if GLUHandle <> INVALID_MODULEHANDLE then
  102.     begin
  103.       FreeLibrary(Cardinal(GLUHandle));
  104.       GLUHandle := INVALID_MODULEHANDLE;
  105.     end;
  106.  
  107. //    ClearProcAddresses;
  108.     ClearExtensions;
  109.   end;
  110. begin;
  111.   // Freigeben der Ressourcen
  112.   SDL_QUIT;
  113.   CloseOpenGL;
  114.   Halt(0);
  115. end;
  116.  
  117. (******************************************************************************)
  118. (******************************************************************************)
  119. //  Events
  120. (******************************************************************************)
  121. (******************************************************************************)
  122.  
  123. //----------------------------------------------------------------------------
  124. // Behandelt Größenveränderung des Fensters
  125. //----------------------------------------------------------------------------
  126. function glResizeWindow( width : integer; height : integer ) : Boolean;
  127. begin
  128.   // Verhindern von "Division by Zero"
  129.   if ( height = 0 ) then height := 1;
  130.  
  131.   // Viewport und Projektions-Matrix aktualisieren
  132.   glViewport( 0, 0, width, height );
  133.  
  134.   glMatrixMode( GL_PROJECTION );
  135.     glLoadIdentity;
  136.     gluPerspective( 45.0, width / height, 0.1, 100.0 );
  137.   glMatrixMode( GL_MODELVIEW );
  138.  
  139.   // Rücksetzen der World-Matrix
  140.   glLoadIdentity;
  141.  
  142.   // Vorgang erfolgreich
  143.   result := true;
  144. end;
  145.  
  146. //----------------------------------------------------------------------------
  147. // Tastatur Eingaben verarbeiten
  148. //----------------------------------------------------------------------------
  149. procedure glHandleKeyPress( keysym : PSDL_keysym );
  150. begin;
  151.   case keysym.sym of
  152.     SDLK_ESCAPE : done := -1;
  153.   end;
  154. end;
  155.  
  156. //----------------------------------------------------------------------------
  157. // Timer-Event für FPS-Berechnung
  158. //----------------------------------------------------------------------------
  159. function glTimer( interval : UInt32; param : Pointer ) : UInt32;
  160. begin;
  161.     SDL_WM_SetCaption(pChar( WINDOWS_CAPTION + ' ['+IntToStr(Round(FPSCount * 1000/FPS_INTERVAL))+' FPS]') , nil);
  162.     FPSCount := 0;
  163.     Result := interval;
  164. end;
  165.  
  166. //----------------------------------------------------------------------------
  167. // Reagieren auf Programm_Events
  168. //----------------------------------------------------------------------------
  169. procedure glHandleEvents;
  170. var event       : TSDL_Event;
  171. begin;
  172.     // Verarbeiten der Events
  173.     while ( SDL_PollEvent( @event ) = 1 ) do
  174.     begin
  175.       case event.type_ of
  176.  
  177.         // Beenden der Applikation
  178.         SDL_QUITEV :
  179.         begin
  180.           Done := -1;
  181.         end;
  182.  
  183.         // Taste wurde gedrückt
  184.         SDL_KEYDOWN :
  185.         begin
  186.           glHandleKeyPress( @event.key.keysym );
  187.         end;
  188.  
  189.         // Fenster-Größe hat sich verändert
  190.         SDL_VIDEORESIZE :
  191.         begin
  192.           surface := SDL_SetVideoMode( event.resize.w, event.resize.h, SCREEN_BPP, videoflags );
  193.  
  194.           if ( surface = nil ) then
  195.           begin
  196.             Log.LogError('Surface bei Größenänderung verloren: '+SDL_GetError,'EVENT_RESIZE' );
  197.             Quit_App;
  198.           end;
  199.  
  200.           glResizeWindow( event.resize.w, event.resize.h );
  201.         end;
  202.       end;
  203.     end;
  204. end;
  205.  
  206. (******************************************************************************)
  207. (******************************************************************************)
  208. //  Initalisierung
  209. (******************************************************************************)
  210. (******************************************************************************)
  211.  
  212. //----------------------------------------------------------------------------
  213. // Die Daten eines Objektes.
  214. //----------------------------------------------------------------------------
  215. procedure Init_OpenGL;
  216. begin;
  217.     // Laden und Initalisieren von OpenGL
  218. //    LoadOpenGL;
  219.  
  220.  
  221.     InitOpenGL;
  222.  
  223.  //   ActivateRenderingContext(
  224.     ReadExtensions;
  225.  
  226.     // Ausganswerte für die State-Machine setzen
  227.     glEnable(GL_TEXTURE_2D);                    // Aktiviert Texture Mapping
  228.     glShadeModel(GL_SMOOTH);                    // Aktiviert weiches Shading
  229.     glClearColor(0.0, 0.0, 0.0, 0.5);         // Bildschirm löschen (schwarz)
  230.     glClearDepth(1.0);                          // Depth Buffer Setup
  231.     glEnable(GL_DEPTH_TEST);                    // Aktiviert Depth Testing
  232.     glDepthFunc(GL_LEQUAL);                   // Bestimmt den Typ des Depth Testing
  233.     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  234.                                               // Qualitativ bessere Koordinaten Interpolation
  235. end;
  236.  
  237. //----------------------------------------------------------------------------
  238. // Initialisierung von Simple DirectMedia Layer
  239. //----------------------------------------------------------------------------
  240. procedure Init_SDL;
  241. begin;
  242.   // Initalisieren vom Simple DirectMedia Layer
  243.   if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) then
  244.   begin
  245.     Log.LogError('Initalisierung von SDL schlug fehl: '+SDL_GetError,'SDL_Init');
  246.     Quit_App;
  247.   end;
  248.  
  249.   // Information über Grafikkarte einholen
  250.   videoInfo := SDL_GetVideoInfo;
  251.   if ( videoInfo = nil ) then
  252.   begin
  253.     Log.LogError('Grafikkarte liess sich nicht abfragen: '+SDL_GetError,'SDL_Init' );
  254.     Quit_App;
  255.   end;
  256.  
  257.   // Flags für den SDL-Grafikmodus setzen
  258.   videoFlags := SDL_OPENGL or                  // OpenGL-Unterstützung aktivieren
  259.                 SDL_DOUBLEBUF or               // Double Buffering aktivieren
  260.                 SDL_HWPALETTE;                 // Palette in Hardware speichern
  261.  
  262.   // Kann die Surface in den Speicher?
  263.   if ( videoInfo.hw_available <> 0 ) then
  264.     videoFlags := videoFlags or SDL_HWSURFACE
  265.   else
  266.     videoFlags := videoFlags or SDL_SWSURFACE;
  267.  
  268.   // Wird hardware blitting unterstützt?
  269.   if ( videoInfo.blit_hw <> 0 ) then videoFlags := videoFlags or SDL_HWACCEL;
  270.  
  271.   // Setzen der OpenGL-Attribute
  272.   SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
  273.   SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
  274.   SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
  275.   SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
  276.   SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
  277.  
  278.   // Fenstertitel festlegen
  279.   SDL_WM_SetCaption( WINDOWS_CAPTION , nil);
  280.   videoflags := videoFlags or SDL_RESIZABLE;    // Enable window resizing
  281.  
  282.   // Initalisierung der Surface
  283.   surface := SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,videoflags );
  284.   if ( surface = nil ) then
  285.   begin
  286.     Log.LogError('Erzeugen einer OpenGL-Zeichenfläche schlug fehl: '+SDL_GetError,'SDL_Init' );
  287.     Quit_App;
  288.   end;
  289.  
  290.   // Initalisierung des Timers
  291. SDL_Init(SDL_INIT_TIMER);
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300. end;
  301.  
  302. (******************************************************************************)
  303. (******************************************************************************)
  304. //  Hauptprogramm
  305. (******************************************************************************)
  306. (******************************************************************************)
  307.  
  308. begin
  309.   // Initalisierung
  310.   Init_SDL;
  311.   Init_OpenGL;
  312.  
  313.   // Setzen eines Timers für FPS-Berechnung
  314.   SDL_AddTimer(1000,@glTimer,nil);
  315.  
  316.   // Anpassen der Fenstergröße
  317.   glResizeWindow( SCREEN_WIDTH, SCREEN_HEIGHT );
  318.  
  319.           tex_surface := IMG_Load('Doc40000.tga');
  320. if assigned(tex_surface) then
  321. begin
  322.   glGenTextures(1, @texture);
  323.   glBindTexture(GL_TEXTURE_2D, texture);
  324.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_surface^.w, tex_surface^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex_surface^.pixels);
  325.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  326.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  327.   SDL_FreeSurface(tex_surface);
  328. end;
  329.  
  330.  
  331.   // Eintritt in Main-Loop
  332.   while ( Done <> -1 ) do
  333.   begin
  334.     glHandleEvents;
  335.     glDrawScene;
  336.     Inc(FPSCount);
  337.   end;
  338.  
  339.   Quit_App;
  340.  
  341. end.
  342.  
  343.  
  344.  
  345.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 13:11 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Ich würde dabei eher zu einer großen Textur tendieren und dann die Texturmatrix verändern. Dabei musst du dann aber möglicherweise um jedes Einzelbild einen 1-Pixel breiten Rahmen zeichnen, bei dem jeder pixel die farbe des benachbarten Pixels der noch im BIld ist hat. Diesen Rahmen dann aber nicht in den Auswahlrahmen des entsprechenden Einzelbilds integrieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 14:36 
Offline
DGL Member

Registriert: Mi Jul 26, 2006 12:35
Beiträge: 15
Eigentlich wollte ich nur wissen wie ich den obrigen Code umschreiben muss, trozdem danke!
kennt zufällig irgendwer ein Programm mit dennen ich meine 24 256 * 256 großen Einzeltexturen in eine , wie oben
beschriebene, große Textur bekomme?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 14:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Kann man nicht eine 3D Texture nehmen die 24 Ebenen hat?

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 15:00 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Hier ist ein entsprechendes Beispiel aus dem DGLSDK:
Link
Nur wird alles aus einer Textur geladen, das sollte aber weniger das Problem sein.


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

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Bei 3D Texturen müsstest du schon 32 Ebenen haben. Und 3D Texturen müssten von der Hardware auch unterstützt werden.

Alles in eine Textur halte ich bei einer Animation nicht für Sinnvoll, da normal nur ein Bild der Animation aktuell dargestellt werden müsste. Und bei solche krummen Bilderanzahlen (24) bekommt man leicht schwierigkeiten. Überdimensionaler Programmieraufwand oder unnötige Speicherverschwendung.

Für von deinen Texturen bräuchtest du 2 Texturen um keinen Speicher zu verbrauchen aber ich denke dieser zusätzlich Aufwand ist die Mühe nicht Wert. Vor allem wenn man bedenkt, dass diese 1 Texturlösung nur dafür da ist Texturswitches zu vermeiden. Was bei extremen gebrauch performance schluckt. Aber in dem falle einer Animation sieht man höchstwahrscheinlich eh nur ein Bild pro Frame.

Das Laden deiner Animation würde ich so gestalten, dass du dies in eine Methode auslagerst und ihr einen Dateinamen übergibst.
Code:
  1. procedure LoadAniFrame(var Animation: array of gluInt; const filename: String);
  2. var
  3.   tex_surface : PSDL_Surface;
  4.   Temp: gluInt;
  5. begin
  6.   // Bild laden
  7.   tex_surface := IMG_Load('Doc40000.tga');
  8.   if assigned(tex_surface) then begin
  9.     glGenTextures(1, @Temp);
  10.     glBindTexture(GL_TEXTURE_2D, Temp);
  11.     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex_surface^.w, tex_surface^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex_surface^.pixels);
  12.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  13.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  14.     SDL_FreeSurface(tex_surface);
  15.  
  16.     // In Animationsarray einfügen
  17.     SetLength(Animation, Length(Animation) +1);
  18.     Animation[High(Animation)] := Temp;
  19.   end;
  20. end;


Das Array wird dann definiert als dynamisches Array.
Code:
  1. Ani: array of gluInt;


Und geladen wird dann so.
Code:
  1. LoadAniFrame(Ani, 'Doc40000.tga');
  2. LoadAniFrame(Ani, 'Doc40001.tga');
  3. LoadAniFrame(Ani, 'Doc40002.tga');
  4. LoadAniFrame(Ani, 'Doc40003.tga');


Wenn alles so klappt sollte er automatisch einzelne Einträge hinzufügen und das Array entsprechend erweitern. Aber um Ehrlich zu sein ist das alles andere als Sauber. Um ehrlich zu sein würde sich für eine Animation am Besten eine Klasse anbieten die sich dann auch automatisch um die Bildauswahl etc kümmert. Aber für den Anfang sollte das oben genug sein.

PS: Ich übernehme für den Code keine Garantie habe de4n nur mal eben so runter geschrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 15:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Wieso muss eine 3D Texture 32 Ebenen haben?

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 26, 2006 16:00 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Die 2er-Potenz gilt auch noch in der dritten Dimension ;)

_________________
"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:
BeitragVerfasst: Mi Jul 26, 2006 16:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Phobeus hat geschrieben:
Die 2er-Potenz gilt auch noch in der dritten Dimension ;)

Ah ok, verstehe. Und was ist dann die maximal Größe derzeit die UNterstützt wird. AUch 1024? Oder eher nicht?
(Wer würde überhaupt 1024 Lagen nutzen?)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 27, 2006 08:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also laut delphi3d.net geht es bei ATI bis 2048³ und bei NVidia aktuell sogar nur bis 512³. Du musst auch bedenken, dass dabei eine ganze schöne Menge an Speicher belegt wird. Wenn ich gerade nicht zu blöd zum Rechnen bin wird bei einer 512x512x512x4 Bytes per Pixel großen Textur auch schon eben mal 512MB an Speicher an verbraten. Also wenn man diese vollständig ausnutzt. Und viel Karten haben nur 256 und dann müssen dort die ganzen Buffer etc noch mit rein. Bei 2048 wäre man eben bei 32GB. Also ich denke mal nicht, dass man das wirklich ausnutzen kann. Das ist nur das was die Geräte maximal verarbeiten können. Aber man wird nie die volle Auflösung benutzen können.

PS: Bei 1D Texturen besteht diese PowerOfTwo Beschränkung selbstverständlich auch. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 27, 2006 08:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Hehe, das man es nicht ausnützen würde war mir vorher klar. Intessierte mich nur wie viel man reinpacken könnte. Mehr als 4 oder 8 Lagen in einer 3D Texture sieht man selten. In den kommenden Spielen wird sich dies sicher auf bis zu 16 erhöhen oder aber die wenden irgendwelche Tricks an bei all den Texture Effekten. Bestes Beispiel die UE3 mit ihrem neuen Texture Layer System das ähnlich wie ein Scenegraph aufgebaut ist. Jedenfalls in der rein visuellen Darstellung. Wie die das intern lösen würd mich schon sehr interessieren.
http://www.unrealtechnology.com/screens ... Editor.jpg

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 27, 2006 09:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
3D Texturen sind noch zu viel mehr gut. Zum Beispiel machst du eine Textur die aussieht wie ein Material (Holz) und dein Mesh würde dann aussehen als sei es aus eben diesem Holz geschnitzt worden. Bzw beim Verändern wäre de Effekt dann richtig klasse. 3D Visualisierung von irgendwelchen medizinischen Scanns. Oder für 3D Lichteffekte kann man solche Texturen auch schon benutzen. Ursprünglich wurde diese Textur nicht dazu gebaut damit mal einzelne Layer in eine Textur verpacken kann. Sondern halt für echte 3D Texture. Aber das ist leider extrem Speicherintensiv.

Ich denke aber wir triften gerade ein bisschen vom Ursprungsthema ab. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 27, 2006 10:16 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Zumal wir ja auch erstmal bis zu 8 TU haben, die wir für die meisten dieser Effekte (insbesondere mit Shadern) ja wunderbar ausnutzen können, insbesondere dann auch, wenn man die Pow2 nicht ausnutzen kann. Nichtsdesto trotz will der Fragesteller ja eine 2D-Animation machen und da ist das nutzen von Texturkoordinaten die beste Lösung. Insbesondere, wenn die Sprites auch nicht der Pow2-Regel entsprechen.

_________________
"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:
BeitragVerfasst: Do Jul 27, 2006 10:28 
Offline
DGL Member

Registriert: Mi Jul 26, 2006 12:35
Beiträge: 15
Ich glaube ich als der Fragesteller sollte mich mal wieder zu Wort melden.

Eigentlich wollte ich nur meine 24 Frames die ich mit meinem 3D-Programm gerendert habe innerhalb einer Sekunde
ablaufen lassen und das in einer Endlosschleife. (24 Frames deswegen damit es nach einer flüssigen Animation
aussieht). Ich kann die Bilder natürlich nochmal rendern mit weniger Frames und. Gibt es eigentlich irgendein 2D Grafikprogramm mit dem ich die Bilder in eine Einzeltextur packen kann?
Was denn Code von Lossy eX angehet, danke aber ich hab warscheinlich irgendwas falsch gemacht, jedfalls gehts
nicht: Fehlermeldung Inkompatible Dateitypen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 27, 2006 10:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Zu dem Code. Das habe ich eben nur mal so hier im Forum getippt. Im Endeffekt kannst du es so gesatlten wie du möchtest. Ich wollte damit nur das prinzip verdeutlichen. Also eine Methode die automatisch ein Bild lädt und diese als Animationsframe in dein Array hinzufügt. So wie ich das da gemacht hatte ist das eine Möglichkeit von vielen. Du darfst natürlich das Array direkt ansprechen (also nicht mehr übergeben) oder was auch immer dein Herz begehrt. Und zu dem Fehler. Es wäre interessant zu erfahre wo der Fehler auftritt. Die Meldung alleine hilft uns nicht viel.

Als Grafikprogramm kann ich dir nur Gimp empfehlen. Es ist OpenSource und muss sich vor kostenplichtigen Produkten keineswegs verstecken.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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.011s | 14 Queries | GZIP : On ]