AVA GFX Engine

Übersicht Sonstiges Projekte

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter

Neue Antwort erstellen

Goodjee

BeitragMi, Aug 06, 2008 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
sehr schön, ich hätte einfach nen programm zum generieren von bitmapfonts mithilfe von bmax beigelegt Very Happy
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Ava

Gast

Betreff: HALLO WELT =)

BeitragMi, Aug 06, 2008 12:17
Antworten mit Zitat
So, ich habs nun auch hinbekommen, alle Zeichen in eine einzelne Textur zu laden. Smile
Werde dann noch eine Speicherroutine + Loader schreiben, die wahlweise als png + txt oder bmf (in der die png mit dem txt quasi gemeinsam gespeichert ist) zu importieren und exportieren (die txt enthält dann die Char-Liste und deren Positionen auf der Textur ^^).

Somit ist dann auch schon ein einfaches Tool für Bitmap-Fonts quasi integriert. Razz


[/EDIT]
user posted image

Code: [AUSKLAPPEN]

   Local   font:TImageFont   = LoadImageFont("archiv\fonts\arial.ttf", 48)
   
   TGraphicsEngine .font = font
   

   font.plane.b[0,0]   =      0.00
   font.plane.b[1,0]   =      0.00
   font.plane.r[0,1]   =      0.00
   font.plane.r[1,1]   =      0.00


   Repeat

   Cls


   DrawText("Hallo Welt! - juhu, da bin ich! :)", 20, 20)


   Flip

   Until KeyHit(key_escape)


Ganz wenig Code für eine tolle farbige Schrift. Smile
(die Zeilen zwischen "loadImageFont" und "repeat" muss ich natürlich noch in benutzerfreundliche Funktionen packen! *zwinker)


FRAGE: Soll ich Textformationen (Tabs, Zeilenumbruch ect) direkt mit in die DrawText hineinpacken? Haltet ihr das für gut und sinnvoll? (komplexere Textformation mit Schrift, Farbe ect und noch vielem mehr. werde ich in ein anderes Objekt packen - TFormText)

Goodjee

BeitragMi, Aug 06, 2008 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
zeilenumbruch fände ich praktisch...tabs habe ich persönlich noch nie gebraucht Very Happy
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Ava

Gast

BeitragMi, Aug 06, 2008 13:43
Antworten mit Zitat
Okay, Zeilenumbruch ist nun in der DrawText mit drin...

user posted image
Code: [AUSKLAPPEN]
DrawText("Zeile 1~nZeile 2~nZeile 3", 20, 20)
 

Schnuff

BeitragMi, Aug 06, 2008 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hui, wenn das jetzt auch noch ein Normalsterblicher Mensch anwenden kann
Ava hat Folgendes geschrieben:
(die Zeilen zwischen "loadImageFont" und "repeat" muss ich natürlich noch in benutzerfreundliche Funktionen packen! *zwinker)

dann muss ich mir das auch mal unbedingt angucken Smile

kann man eigentlich damit die normalen Draw-befehle komplett ersetzen? also anstatt Max2D zu laden dann dein Modul?

PS: wie ist es mit der Einfärbung, kann man Bilder mit SetColor "einfärben"?
 

Ava

Gast

BeitragMi, Aug 06, 2008 17:30
Antworten mit Zitat
Schnuff hat Folgendes geschrieben:
kann man eigentlich damit die normalen Draw-befehle komplett ersetzen? also anstatt Max2D zu laden dann dein Modul?

Man muss leider - beides zusammen funktioniert nicht. Aber da es eh nicht zusammen funktioniert, konnte ich dann auch gleich direkt die Standard-Befehle ersetzen, so dass man sich nur wenig umstellen muss. SetColor zb. beeinflusst nach wie vor alle Zeichenbefehle. Genauso ist es mit den Transformationsbefehlen (SetOrigin, SetHandle, SetScale und SetRotation). Desweiteren wirkt sich auch der neue Befehl SetTexture(TImage) auf alle Zeichenbefehle aus, so dass sie texturier anstatt einfarbig gezeichnet werden (zb DrawRect, DrawOval ect). Smile

Zitat:
PS: wie ist es mit der Einfärbung, kann man Bilder mit SetColor "einfärben"?

Man kann Bilder sogar mehrfarbig einfärben. ^^ Es gibt hierfür mehrere Methoden. Die "mächtigste" (aber auch vergleichsweise aufwendigste) Methode ist, an den Zeichenbefehl DrawImage ein TPlane anzuhängen. Das TPlane - Objekt ist quasi eine Projektionsfläche, auf die das Bild gezeichnet wird. Diese kann vollständig beliebig verformt und eingefäbrt werden - in so viele Farbunterteilungen, wie man das gerne möchte. ^^

Plane:TPlane = CreatePlane(10, 10) ' neues TPlane aus 10 x 10 Segmenten
' hier dann die TPlane formatieren (Farben setzen, ggf. Koordinaten setzen / zum verzerren)
DrawImage Image, x, y, Plane

Sehr simple Methoden wären zb.:
1) Arrow Image als Textur setzen (SetTexture) --> SetRectColor setzten (4 Farben für die Eckpunkte eines Rechteckes) --> DrawRect
2) Arrow Image als Textut setzen (SetTexture)--> DrawGradient (zeichnet einen rechteckigen Farbverlauf mit dem Bild als Textur)
  • Zuletzt bearbeitet von Ava am Mi, Aug 06, 2008 17:42, insgesamt einmal bearbeitet
 

Schnuff

BeitragMi, Aug 06, 2008 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, dass ich vergessen hatte das noch zu fragen: wird es später auch möglich sein (wie in BB) direkt in ein "Bild" (also in eine Textur) zu zeichnen? ohne den umweg über ReadPixel/WritePixel zu machen?

Edit zu Ava's Edit:
das mit dem Plane hab ich mir grade mal im worklog angeschaut, wenn es wirklich so ist, wie ich erahne....
Wann gibts einen ersten alpha-release? Very Happy
  • Zuletzt bearbeitet von Schnuff am Mi, Aug 06, 2008 17:45, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragMi, Aug 06, 2008 17:44
Antworten mit Zitat
Schnuff hat Folgendes geschrieben:
sorry, dass ich vergessen hatte das noch zu fragen: wird es später auch möglich sein (wie in BB) direkt in ein "Bild" (also in eine Textur) zu zeichnen? ohne den umweg über ReadPixel/WritePixel zu machen?


SetBuffer(TImage) ' setzt den ImageBuffer (anschliessend wird alles direkt ins Bild gezeichnet)
SetBuffer(Null) ' setzt den Buffer zurück (anschliessend wird wieder "normal" / auf Backbuffer gezeichnet)

Ganz easy - und super schnell! Very Happy
 

Ava

Gast

BeitragMi, Aug 06, 2008 17:51
Antworten mit Zitat
Schnuff hat Folgendes geschrieben:
das mit dem Plane hab ich mir grade mal im worklog angeschaut, wenn es wirklich so ist, wie ich erahne.... Wann gibts einen ersten alpha-release? Very Happy


Wenn Du gerne Testen magst, setze ich Dich mit auf die Tester-Liste (auf der ist übrigens noch etwas Platz für ein paar Leute! Wink). Ich denke, dass ich spätestens am Wochenende dann eine Version hochlade und euch den Link maile. Vorraussetzung ist, dass ihr gewillt seit, es etwas ausgiebiger zu testen und dann auch Bug-Reports und eventuell Verbesserungsvorschläge zu posten. Wink


[/EDIT]
Ich habe die Nacht damit verbracht, meinem FontLoader zwei neue FLAGS beizubringen:
Arrow EMBOSSEDFONT verleiht der Schrift einen plastischeren Effekt
Arrow SHADOWFONT fügt der Schrift automatisch einen Schatten hinzu
user posted image
Es benötigt ein klein wenig mehr Renderzeit beim Laden der Schrift. Dafür ist das Zeichnen des Textes aber anschliessend auch mit keinem Mehraufwand verbunden. Cool Das Code-Beispiel zum Bild gibts im WorkLog. Das Zeichnen von texturiertem Text ist ebenfalls bereits umgesetzt. Smile

Goodjee

BeitragFr, Aug 08, 2008 9:04
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du auf das animations zeugs mal genauer eingehen, ich kann mir absolut nix drunter vorstellen Smile
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Ava

Gast

Betreff: Animationen

BeitragFr, Aug 08, 2008 11:43
Antworten mit Zitat
Das Animationszeug ist noch nicht ganz komplett. Smile Es fehlen noch ein paar Funktionen zu TAnimation ud es fehlen noch das TAnimationManager und TSprite Objekt. Okay, aber abgesehen davon, kann man natürlich schon jetzt einiges damit anfangen. Smile

TAnimation kann aus einem Haufen von Bildern (und Sound-Dateien) eine Sequenz erstellen und diese in einer einzelnen Datei zusammenfassen. Der Gedanke dahinter ist der, dass anschliessend nur eine einzige Datei mit "incbin" in die Exe eingefügt werden kann (anstatt unmengen an incbin-Zeilen zu schreiben) und natürlich die komplette Animation durch einen einzigen Aufruf geladen werden kann und dann vollständig automatisch verwaltet wird.

Beispielsweise könnte eine Animation so aussehen:

Frame 0 Arrow player_shot_01.png
Frame 1 Arrow player_shot_02.png
Frame 2 Arrow player_shot_03.png Arrow player_shot.wav Arrow script = "do_shot"
Frame 3 Arrow player_shot_04.png
Frame 4 Arrow player_shot_05.png Arrow script ="next=player_stand"

In dem Fall würde bei Frame 2 automatisch zum Bild der Sound "player_shot.wav" abgespielt und der String "do_shot" zurtückgeben werden, den man dann auswerten kann. Bei Frame 4 würde der String "next=player_stand" zurückgegeben werden, den man dann auswerten könnte, um die Animation umzustellen.

Anderes Beispiel
Frame 0 Arrow meine_grafik.png
Frame 1 Arrow Frame 0 Arrow Rotation = 60
Frame 2 Arrow Frame 0 Arrow Rotation = 120
Frame 3 Arrow Frame 0 Arrow Rotation = 180
Frame 4 Arrow Frame 0 Arrow Rotation = 240
Frame 5 Arrow Frame 0 Arrow Rotation = 300

In diesem Beispiel würde das Objekt nur eine einzige Grafik haben, diese aber je Frame entsprechend rotieren (ebenfalls ist es möglich, die Position, Skalierung, Farbe ect zu ändern)


(die Beispiele sind abstrakt formuliert ^^)


Mit dem TAnimationManager und TSprite Objekten wird dies alles noch einmal etwas aufgewertet und "mächtiger" (beispielsweise alternative Animations-Sequenzen, automatische Animationsübergänge, automatische Script- und Soundfunktionen ect.)


Erläuterung zu alternativen Sequenzen:
Bei GunSheep wird es so sein, das ein Schaf jeweils mehrere unterschiedliche Animationen für Stillstand, Bewegung ect hat. Zum Beispiel könnte es eine Animation geben, wo das Schaf zwinkert, sich am Kopf kratzt oder in die Kamera grinst:

AddSpriteAnimation ( sprite , "stand" , stand_1 , 50 )
AddSpriteAnimation ( sprite , "stand" , stand_2 , 30 )
AddSpriteAnimation ( sprite , "stand" , stand_3 , 20 )

SetSpriteAnimation ( sprite, "stand" )

wenn nun DrawAnimation ( sprite , x , y ) aufgerufen wird, wird eine der drei Sequenzen zufällig ausgewählt ( stand_1 = zu 50% , stand_2 = zu 30% , stand 3 = zu 20% ). Wenn die Sequenz durchlaufen ist, wird wiederum zufällig eine neue ausgewählt.


Ich werde mich bemühen, dies alles noch einmal ausführlicher und klarer zu formulieren, sobald alle Funktionen und Objekte fertiggestellt sind. ^^


Und PS: ich werde dem Modul ein kleines Tool zu erstellen und bearbeiten von Animationsdateien beilegen.

Artemis

BeitragFr, Aug 08, 2008 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht sehr gut und durchdacht aus.

Daumen hoch.

Starwar

BeitragFr, Aug 08, 2008 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh mein Gott ist das umfangreich! Das gibt ganz neue Möglichkeiten und scheint auch viel zu vereinfachen. Ich glaub ich kauf mir BlitzMax! Surprised Weißt du schon obs Freeware wird (verzeih mir wenn dus schon iwo beantwortet hast)? Freu mich auf neues...*worklogles*
Viel Erfolg und Motivation!
MFG
 

c64

BeitragSo, Aug 10, 2008 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, Ava

Anfangs war ich ja "nur" begeistert von der umsetzung deines Wassers und den schönen Effekten, aber mittlerweile ist das schon eine ganze ecker mehr was da an Technischen finessen und Automatisierung drinnsteckt das man schon erahnen kann was das Framework jetzt / später leisten kann / wird.

Ich hoffe mal du bekommst es fertig da steckt ne menge potentzial drinnen, ordentlich dokumentiert und schick verpackt ein feines Produkt Wink !

glg. C64
Betreten verboten! Kinder haften für ihre Eltern!

d-bug

BeitragDi, Aug 12, 2008 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,

lieber spät eine Antwort als gar keine Wink

Zum Feedback:
Ja, es ist wie es im BBP immer ist! Hat man was gutes vorzuweisen halten alle die Klappe. Ist es hingegen schlecht, kann man sich vor Feedback kaum retten. Das war hier schon immer so und wird sich auch nicht ändern. Allerdings ist es auf bb.com auch nicht anders. Nehmen wir mal ein Beispiel aus meinen Codeleichenschatz: desktopext.mod! Es gibt so gut wie kein Feedback, aber die Downloads der einzelnen Versionen sprechen Bände! Genau so bei bitmapfont.mod! Ergo: Hat es keine Bugs bekommst du kein Feedback! Das ist super demotivierend und lässt einen manchmal daran denken den Support oder überhaupt das ganze Programmieren an den Nagel zu hängen! Auf Worklogs gibt es übrigens zumeist nur im Chat Feedback, weil sich anscheinend keiner hier traut!

Zur Engine:
*Finger heb* Ich bin hochgradig daran interessiert, auch wenn ich sie in meinem aktuellen Projekt gar nicht mehr unterbringen kann. Dazu ist es nun zu spät! Vorallem würde ich gerne mal testen können, ob sie auch auf dem Mac bzw. Linux-Derivaten funktioniert, oder ob man als OSXler wieder hinten anstehen muss. Also lass dich nicht vom Feedback bezwingen und mach sie fertig, oder zumindest Massenkompatibel.


cheers

Hagbard

BeitragDi, Aug 12, 2008 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Auf Worklogs gibt es übrigens zumeist nur im Chat Feedback, weil sich anscheinend keiner hier traut!


Wenn es die Möglichkeit gäbe, auf Worklogs direkt zu antworten, wäre das für mich zum Beispiel ein Grund, möglichst viel Feedback zu geben.

Ava's Arbeit finde ich hochgradig interessant und wäre sehr erfreut darüber, wenn es weiter entwickelt wird.
Leider stecke ich momentan nicht so richtig in BB drin, sodass ich das erstmal nur so von außen ansehen und vielleicht genaueres dazu sage, wenn ich wieder mehr damit mache.
Trotzdem wünsche ich dir damit viel Erfolg und kann mich den anderen bisher nur anschließend:
Sehr gut durchdacht sieht das aus und ich traue dir auch zu, dass du das fertig bringst...
 

Ava

Gast

BeitragDi, Aug 12, 2008 13:34
Antworten mit Zitat
Vielen Dank für eure netten Nachrichten! Smile - da hat man doch direkt gleich wieder doppelt so viel Motivation! Very Happy

Momentaner Stand der Dinge ist (nachdem ich mir am Wochenende erst einmal etwas Pause gegönnt habe Rolling Eyes) ... ich habe begonnen, den Modul-Code zu kommentieren bzw. direkt zu dokumentieren (damit man direkt in BlitzMax die Hilfe zum Modul abrufen kann). Ansonsten bin ich zur Zeit erstmal wieder etwas mehr mit GunSheep beschäftigt (Grafiken und MapEditor basteln), aber da kann ich dann natürlich auch gleich die Engine bei weiter austesten, ausbessern und ergänzen ... als nächstes werde ich mich dann dem Animations-Editor widmen *ganz wichtige und notwendige Geschichte!* Wink

BladeRunner

Moderator

BeitragDi, Aug 12, 2008 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Schön zu hören. Smile
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Blackside

BeitragDi, Aug 12, 2008 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin echt begeisterst was du so auf die Beine stellst, erst GunSheep
und jetzt machst du auch noch deine "Engine" öffentlich.
Deine GFX-Engine sieht echt grandios aus Very Happy
Ich denke dass, das Feedback nicht so viel ist, weil es hier
um Bmax geht...Vergleiche mal die Bmax-Threads mit den
BB-Threads Wink
MFG Blackside
Hier sollte eigentlich eine Signatur stehen!
 

Ava

Gast

BeitragDi, Aug 12, 2008 15:41
Antworten mit Zitat
Ach, zur Zeit bin ich mehr als zufrieden, was das Feedback betrifft. Smile

Das Worklog wird nun allerdings sicher erstmal ein Weilchen im Sleep-Mode verbringen, da das ganze Drumherum um die Animationen doch recht aufwendig ist .. und ich das nicht unnötig dokumentieren will. *g*

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group