Sprites bzw. 2D-Bilder in 3D Umgebung ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Misantropius
Beiträge: 5
Registriert: 14.12.2010 13:01

Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Misantropius »

Gibt es eigentlich eine Möglichkeit 2D-Grafiken in einer 3D-Umgebung einzufügen, also z.B. einem Terrain, ähnlich wie ein Pappaufsteller, der aber immer mit der Front zur Kamera zeigt und nur in seiner Größe abhängig von seiner Entfernung varriert ? Wenn ja, wie geht daß ? Würde mich über ein Script-Beispiel z.B. in Bezug zum Beispielsprogramm "Terrain.pb" freuen. Ziel wäre es z.B. ein gemaltes 2D-Männchen auf weißem Hintergrund in JPG-Datei in dieses 3D-Terrain zu stellen !
Würde mich über einen Tip freuen !
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von STARGÅTE »

Hilfe nicht gelesen ?

PureBasic - Billboard
Billboards sind 3D-Ebenen (zusammengesetzt aus 2 Dreiecken), welche sich immer vor der Kamera befinden. Billboards sind nützlich, um schnell eine große Anzahl an Elementen - wie Regen, Schnee, Bäume, Vegetation oder Partikel-basierende Effekte - darzustellen.
btw: Willkommen im Forum
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Misantropius
Beiträge: 5
Registriert: 14.12.2010 13:01

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Misantropius »

Ja, danke für den Wink mit den Billboards ! :D Habe inzwischen erfolgreich das 2D-Bild in eine 3D-Welt integrieren können.
Würde jetzt aber gerne die weißen Hintergründe des 2D-Bilder durchsichtig machen. Irgendeine Idee ?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von STARGÅTE »

Du solltest dafür das PNG-Bildformat nutzen mit vollen 32Bit , dort hast du dann einen Alpha-Channel welcher dann angibt ob eine Farbe sichtbar ist oder nicht ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Misantropius
Beiträge: 5
Registriert: 14.12.2010 13:01

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Misantropius »

Ja, danke. Habe davon auch vorher schon gelesen, aber irgendwie krieg ich das nich hin. Habe bisher wenig Erfahrung mit den
Malprogrammen wie GIMP oder MtPaint. Mir ist zwar bewußt, das es diesen Alphawert gibt, aber selbst nach viel Gefummel hats irgendwie nicht hingehauen und ne vernünftige Hilfe-Funktion gibts da irgendwie auch nicht. Würde mich freuen, wenn mir als Zeichenlprogramm-Anfänger mal einer schrittweise sagen kann z.B. bei GIMP, wie ich einen Hintergrund transparent mache, damit das Ganze in der 3D-Welt nicht mehr zu sehen ist.
Benutzeravatar
Bisonte
Beiträge: 2471
Registriert: 01.04.2007 20:18

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Bisonte »

Ganz banal ...

Gimp - Menueleiste -> Ebene -> Transparenz -> z.B. Farbe zu Transparenz

Da kannste mal mit experimentieren ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von NicTheQuick »

Vorher vielleicht noch mit dem Zauberstab die weiße Fläche auswählen und mit dem Auswahl-Menü ein kleines Stückchen erweitern, dann erst Farbe-zu-Transparenz machen. Falls der Menüpunkt ausgegraut ist, musst du vorher den Alphakanal erst hinzufügen. Das müsste im Menü Farben oder Kanäle oder sowas sein.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von mpz »

Hi,

ich habe mal mit meiner Engine ein kleines Programm geschrieben was eine png Datei mit Alphachannel erzeugt. Du lädst deine "rgb" Grafik ein, die auf einem Rechteck angezeigt wird. Die zweite Grafik muss genausogross sein wie die erste Grafik, aber alle "Farben" werden in Graustufen verwandelt und als Alpha Eben integriert. D.h. Du malt in Schwarz was durchscheinen soll und je heller das Grau desto undurchsichtiger (Ich hoffe die Erklärung kapiert jemand ;) ). Danach als png speichern.

http://www.file-upload.net/download-304 ... l.exe.html

Gruß Michael

Quellcode falls es jemand interessiert, man benötigt aber die mp3d

Code: Alles auswählen

;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine Beispielprogramme
;// Dateiname: MP_CreatePNGwithAlphaChannel.pb
;// Erstellt am: 14.12.2010
;// Update am  : 
;// Author: Michael Paulwitz
;// 
;// Info: 
;// Create a png file with alphachannel. You load a rgb grafic and load a second grafic for greyscales inage.
;// Both images must have the same size Bl
;//
;//
;////////////////////////////////////////////////////////////////


;- ProgrammStart

MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster #Window = 0
SetWindowTitle(0, "Create Alpha Textur") 

  If CreateMenu(0, WindowID(0)) ; Menü erstellen/Create Menu 
    MenuTitle("load / save grafic")
      MenuBar()
      MenuItem( 1, "Load RGB grafic") 
      MenuItem( 2, "Load Alphachannel") 
      MenuBar()
      MenuItem( 3, "Save png grafic with Alpha Channel") 
      MenuBar()
      MenuItem( 4, "Exit") 
  EndIf
  
  
  Width=256
Height=256 

If CreateImage(0, 640, 480)
  MP_CreateImageColored(0, 0, RGB(0,255,255), RGB(0,255,255), RGB(0,0,255), RGB(0,0,255))     
EndIf
Surface = MP_ImageToSurface(0,0) ; Image = 0, 
FreeImage(0)
MP_SurfaceSetPosition(Surface,0,0,1)
MP_SurfaceDestRect(Surface,0, 0, 640, 480)
  
  
camera=MP_CreateCamera() ; Kamera erstellen
light=MP_CreateLight(1) ; Es werde Licht
Mesh=MP_CreatePlane(1,1) 
MP_MeshSetAlpha(Mesh, 2) ; AlphaMode on

MP_PositionEntity (Mesh,0,0,1.4) ; Position of plane

MP_AmbientSetLight(RGB(123,22,200)) 

While Not MP_KeyDown(#PB_Key_Escape) And Not MP_WindowEvent() = #PB_Event_CloseWindow ; Esc abfrage / SC pushed?

    Select MP_WindowEvent()  ; WindowsEvent abfrage 
      Case #PB_Event_Menu 
        Select EventMenu()  ; Welches Menü? / Menuquestion 
         Case 1 ; Load RGB grafic
              Pattern$ = "Image Files (bmp,jpg,tga,png,dds,ppm,dib,hdr,pfm|*.bmp;*.jpg;*.tga;*.png;*.dds;*.ppm;*.dib;*.hdr;*.pfm" 
              directory$ = "C:\Programme\PureBasic\media\" 
              File.s = OpenFileRequester("Load RGB grafic", directory$, Pattern$,  0) 
              If File
                 MP_FreeTexture (Texture1)
                 Texture1 =  MP_LoadTexture(File.s,1)
                 
                 MP_EntitySetTexture(Mesh, Texture1) 
                 
               EndIf
         Case 2 ; Load Alphachannel grafic
              Pattern$ = "Image Files (bmp,jpg,tga,png,dds,ppm,dib,hdr,pfm|*.bmp;*.jpg;*.tga;*.png;*.dds;*.ppm;*.dib;*.hdr;*.pfm" 
              directory$ = "C:\Programme\PureBasic\media\" 
              File.s = OpenFileRequester("Load Alphachannel grafic", directory$, Pattern$,  0) 
              If File
                 MP_FreeTexture (Texture2)
                 Texture2 =  MP_LoadTexture(File.s)
                 If Not MP_CreateTextureAlpha(Texture1, Texture2)
                    MessageRequester("Cant create alphachannel grafic ", "Important both grafic must have the same size", #PB_MessageRequester_Ok)
                 EndIf  
                 MP_EntitySetTexture(Mesh, Texture1) 
                 
               EndIf
         Case 3 ; Save png grafic with Alpha Channel
              File.s = SaveFileRequester("Save grafic  as PNG", "Textur.png", "Textur Files(*.png)|*.png",  0)
              If File
                 MP_SaveTexture (File, Texture1 , 3)
               EndIf
         Case 4; end
               End
         EndSelect 
      Case #PB_Event_CloseWindow 
         End 
   EndSelect        

   MP_RenderWorld() ; Erstelle die Welt
   MP_Flip () ; Stelle Sie dar

Wend

Working on :lol: - LibSGD - MP3D Engine - 8)
Misantropius
Beiträge: 5
Registriert: 14.12.2010 13:01

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Misantropius »

Puuh ! Jetzt hab ich in Gimp das mal versucht und nun ist mein Hintergrund schachbrettartig gerastert. Datei hab ich als PNG gespeichert, aber leider verschwindet beim Anwenden des Bildes in PureBasic immer noch nicht der Hintergrund. Stattdessen bleibt er weiß, hat aber dafür ein paar schwarze Punkte auf dem Hintergrund, wo vorher Nix war und die Konturen haben sich auch leicht verfärbt ? Was mach ich falsch ??
Misantropius
Beiträge: 5
Registriert: 14.12.2010 13:01

Re: Sprites bzw. 2D-Bilder in 3D Umgebung ?

Beitrag von Misantropius »

Joah ! Hab mein Problem inzwischen selbst gefunden. Mußte noch den MaterialBlendingMode anwenden und schwupps hats geklappt. Jetzt würde ich nur noch gerne scharfe Konturen bekommen.....
Antworten