2D GUI in 3D umwandeln und transparenz hinzufügen
Übersicht

![]() |
EPSBetreff: 2D GUI in 3D umwandeln und transparenz hinzufügen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
also bisher hab ich nur mit Blitz2D gearbeitet und kenne mich damit sehr gut aus. Nun möchte ich meine ersten Schritte in 3D wagen und hab mir gedacht meinen 2D GUI mit einem zusätzlichen Feature auszustatten, nämlich der Möglichkeit einzelne Fenster beliebig transparent darzustellen. Eigentlich sollte das in 3D ja kein Problem sein. Als erste Info mal vorweg: Meine Fenster (und auch deren Inhalt) sind als Image vorhanden, also so als ob ich ein Bild mit Loadimage geladen hätte. Also möchte ich eigentlich nix weiter wie dieses Bild transparent darstellen. Ich hatte mir gedacht das Bild als Textur auf einen Sprite zu machen und diesen dann transparent zu machen, aber irgendwie funktioniert das nicht so ganz wie ich mir das vorstelle. Leider bin ich halt in 3D ein absoluter Neuling, deswegen poste ich auch hier hinein. Kann mir jemand vielleicht sagen wie man sowas am einfachsten hinbekommt? Vielen Dank schonmal |
||
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] sprite = loadsprite("fenster.bmp",2(3)) du must das nicht mit createsprite machen ! lads als sprite rein und dann soltes gehen! (das 2 und 3 ist für transparent) Mfg dimaster |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
ach ja wenns doch so einfach wäre...
ich erstelle die Bilder aber erst durch mein Programm. Ich schrieb: "so als ob ich ein Bild mit Loadimage geladen hätte. " ich wollte damit zum Ausdruck bringen das ich schon ein fertiges Bild im Speicher habe. War wohl schlecht gewählt der Ausdruck. Naja. Ausserdem hab ich schon rausgefunden wie ich ein Sprite erstelle oder lade - ganz so schusselig bin ich dann doch nicht, ich muß es wohl genauer beschreiben: Also, Problem Nr 1: Wie mache ich es das der Sprite exakt so groß ist wie mein vorheriges Bild, oder anders ausgedrückt, mein Bild soll durch den Sprite nicht verzerrt werden o.ä. (Muß es überhaupt ein Sprite sein???) Problem Nr 2: Was muß ich tun damit das ganze auf dem Bildschirm auch sichtbar wird ohne verzerrt zu sein? Problem Nr 3: Wie erledige ich das ganze mit dem kleinsten Aufwand - also ohne mein ganzes Programm nochmal neu schreiben zu müssen? Danke |
||
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würde die erzeugten bilder abspeichern und dann laden!dann machst du:
Code: [AUSKLAPPEN] sprite = loadsprite("sprite.bmp") while not keyhit(1) cls ;nehmen wir an das das bil 32*32 ist dann so scalesprite sprite,-32,-32 ;dann positionnieren und schon gehts hoffe du weisst wie ichs meine gruss dimaster meld dich sonst nochmal |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine Mühe, aber das funktioniert so nicht...
das Programm ist ein GUI. Hier werden Buttons betätigt, Scrollbars bewegt und Eingaben vorgenommen. Alles Dinge bei denen sich die Bilder verändern und von meinem System neu erzeugt, bzw. geändert werden. Ich kann nicht ständig die Bilder speichern und laden. |
||
![]() |
sami |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm vielleicht wird das bild auch geupdatet sonst wirds schwer mit input, nich...? wär auch bissi lahm bei jedem ändern neu speichern/laden.
ich würds als texture aufn sprite draufpappen. du musst halt noch ein paar sachen umstellen wie maus etc. du kannst auch mal in FAQ schauen da is ne formel von DC wie man 3d auf 2d umrechnet. |
||
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja dann würd ichs auch so machen!
gruss dimaster |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mit der Anleitung von dc komm ich schon ein gutes Stück weiter.
Ich hab jetzt den Sprite in der richtigen Größe und auch mein Bild als Textur drauf. Transparenz klappt auch, aber: Eines bereitet mir aber immer noch Kopfzerbrechen. Wenn ich das Bild als Textur über den Sprite lege, dann hat das Bild nicht mehr die originale Größe, es wird verzerrt. Also der Sprite ist wie gesagt schon richtig - das kann ich sehen - er hat die korrekte Größe, aber wie bekomme ich die Textur, also mein Bild, jetzt 1:1 da drauf, so das es weder verzerrt noch gestreckt oder so ist? |
||
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;bin mir nicht sicher aber wenn das sprite 32*32 ist solltest dus so machen können scaletexture tex ,32,32 bin mir aber nicht sicher.versuchs doch mal sonst meld dich wieder |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein, das funktioniert nicht, das ist wie ne Prozentangabe, dann skaliert er mir die Textur bis (fast) ins unendliche ![]() hab grad mal nachgelesen, wenn die Textur nicht exakt 1,2,4,8, usw. Pixel groß ist, dann wird automatisch skaliert. Das ist aber blöd, weil dann meine Bilder verzerrt werden. Ich kann den Benutzer des GUI ja nicht zwingen seine Fenster in einem bestimmten Maß anzufertigen. Ganz zu schweigen davon das es selbst bei diesen Größen wie weichgezeichnet aussieht. gibt's noch was anderes als Sprites um das hinzubekommen oder ne andere Lösung für das Problem? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es gibt keine weiteren Möglichkeiten. Texturen müssen 2er Potenz haben.
Sagte ja niemand, dass du das Menü schon als "Bildschirmgrösse" speichern musst, oder? ![]() Kannst es ja als 512x512 oder 1024x1024 speichern, dadurch kannst du es danach auch für jede beliebige Auflösung verwenden, da das mit einem 3D Objekt für menüs garkein problem mehr ist ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
du köntest natürlich n würfel mit createcone erstellen !dann
passt sichs einer seite an dann kannst dus so skalieren wie dus brauchst !wenn du die lösung besser findest dann probiers doch mal so. gruss dimaster |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tja, dann geht das wohl nicht wie ich es mir vorstelle.
Schade und ich dachte mit Blitz3D hätte sich das Thema Transparenz endlich erledigt. War wohl nix. @Dreamora...diese Aussage versteh ich leider nicht. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nachdem was du schreibst, gehe ich davon aus, dass du das gesammte Menü als 1 Bild gemacht hast.
Dieses hat jetzt irgend eine Bildschirmauflösung ( 800x600 oder 1024x768 ). Sollte dem nicht so sein, geht es auch viel einfacher: Erzeuge für jedes Fenster ein eigenes Quad / Sprite und erzeuge dafür eine Textur welche die benötigten Abmessungen ( 2-erPotenz, ,Quadratisch ) hat um die Fenstergrafik darin zu beherrbergen. Danach kannst du über setbuffer TextureBuffer( fenstertexture ) drawimage fenstergrafik, 0, 0 setbuffer backbuffer() die Fenstergrafik einfach auf die Textur zeichnen. über entityalpha fensterentity, alphawert kannst du danach das alpha wie gewünscht anpassen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Dreamora...
also verstanden hast du es richtig und eigentlich mache ich es ja auch so wie in deinem Beispiel. Wie gesagt entsteht dabei nur der Effekt das auch bei passender Größe meines Bildes (Faktor 2) das ganze wie Weichgezeichnet aussieht. Das liegt wohl daran, das BB letztenendes das ganze halt als Textur nimmt und Rendert. Was ja auch richtig so ist - nur halt für meine Zwecke unbrauchbar. Wer möchte schon gern verschwommene Fenster. Trotzdem Danke |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann musst du das Quad von Hand erzeugen und die UV Koordinaten der Vertices so machen, dass nach dem DrawImage auf die Textur effektiv nur das gezeichnete Bild genommen wird und nicht über LoadTexture arbeiten.
Dann ist das kein Problem. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
jungle |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
evtl. hilft dir das weiter ? http://www.blitzcoder.com/cgi-...omments=no falls nicht.... cheers ![]() jGL |
||
In der Realität ist die Wirklichkeit ganz anders.
| P3 550Mhz | P90Mhz | AMD 1Ghz | XP 2600@3200Mhz l P2 400Mhz | Dual XP 2000Mhz | |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum das Rad neu erfinden?
http://www.blitzbasic.com/code...p?code=456 Damit sollte sich dein Problem schneller erledigt haben, als du gucken kannst. Ich hab das bisher ein paar mal benutzt und muss sagen: Toll! Du brauchst an deinem Code einfach nur die Image-Befehle durch ein paar andere ersetzen und schon geht alles GENAU wie vorher, nur eben mit 3D und damit auch mit Transparenz. walski |
||
buh! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group