Draw3D: LoadImage3D -> Order? Fragen über Fragen!
Übersicht

funkmaster5000Betreff: Draw3D: LoadImage3D -> Order? Fragen über Fragen! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Community!
Vorneweg, ich betrete 3D Neuland, um ein 2D-Weltraumspiel (das 1.000.000ste) mit Hilfe von Draw3D ein bisschen effektvoller zu gestalten. Deswegen kommen natürlich jede Menge Fragen auf. Es geht um den Befehl LoadImage3D. Ich habe den Befehl zwar in der Onlinedokumentation gefunden, allerdings ist "Order" dort nicht angegeben (bei mir steht LoadImage3D file, mode, blend, pivot, order), die Forensuche war auch nicht erfolgreich. Order bestimmt die Zeichenreihenfolge, denke ich. Aber welche Werte kann ich vergeben? 0 für das vorderste Bild bis - 1.249.394 für meinen Asteroidengürtel im Hintergrund? Oder sollten die Werte ins Positive gehen? Meine Sterne sind kleine Vierecke. Ich habe also eine Textur gemacht, 2x2 wegen der 2^n Kantenlänge. Ist das in Ordnung oder gibt es Mindestanforderungen an Texturen? Muss sie mindestens 64x64 betragen? Denn wenn ich den Stern zeichnen lasse und bei LoadImage3D als Order zum Beispiel 6 angebe, dann verwischt das Bild. Bei einem großen Planeten kann ich 200 angeben und alles ist in Ordnung. Liegt das an der Texturgröße? Ich hoffe, ihr könnt mir helfen (und dass ich im richtigen Thread poste!). |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jedes LoadImage3d erstellt ein Entity welches auch ein Order besitzt. Dieses ist 1 zu 1 mit dem von Blitz3D zu vergleichen.
Order = 0 = Das Entity wird so gezeichnet wie es die Perspektive erlaubt. Hauptsächlich Sinnvoll, wenn man die Draw3D auch für freistehende Objekte verwendet. Für reine 2D-Sachen sollte man besser ein eigenen Order vergeben. Und dabei gilt folgendes zu beachten: Order <> 0 = Kleiner ist weiter vorne zur Kamera, größer ist weiter weg. Soll heißen, kleinere Werte überlagern Einzelne DrawImage3D die mit größerem Order vergeben sind. Innerhalb eines LoadImage3D verhält es sich so, wie man es von 2D her auch kennt. Also später gezeichnet, überdeckt früher gezeichnetes. Man überlegt sich also schon in der Erstellung der Tilemaps im Grafikprogramm, welche Tiles auf welches Image gezeichnet werden. Danach werden die Bilder mit durchnummerierter Order geladen und entsprechend im Spiel verwendet. Ist eine Geschichte die mit 3D unter Blitz3D nur schwer anders zu regeln ist. Alle mir bekannten Workarounds waren mir zu Laienhaft, als dass ich sie hätte verwenden wollen. Edit1: Die Draw3D verwendet pro DrawImage3D zwei Triangles (also ein Quad) um es auf dem Bildschirm zu bringen. Wenn deine Textur 2 x 2 Pixel groß ist, dann ist zwangsweise der Pixel bzw. der Stern bis an den Rand der Textur eingezeichnet. Das mach unschöne Bewegungen, wenn dieser dann feinstufig über den Bildschirm gezeichnet werden soll. Oder anders ausgedrückt, der Stern wird entweger (bei Integer) von Pixel zu Pixel springen, oder (bei Float) durch den Bildschirm ''wabbern''. Besser ist, man nimmt eine 4 x 4 Textur und zeichnet den Stern an einem der mittlerem 4 Pixel (oder gleich alle 4 mittleren Pixel) ein und zeichnet die ganze Textur von 4 x 4 Pixel, obwohl nur die mittleren 2 x 2 auf den Bildschirm zu sehen sind. Dann kannst du sogar sehr feinstufige Bewegungen auf dem Bildschirm zaubern, da Bewegungen zwischen den Bildschirmpixeln mit Graustufen abgeglichen werden. P.S. Es macht leistungstechnisch keinen Unterschied ob du eine 2 x 2 oder 32 x 32 Textur lädst, denn den geringen Geschwindigkeitsunterschied werden sich selbst veraltete Notebooks nicht anmerken lassen. Erst ab einer Texturgrösse von > 64 bzw. 128 ^ 2 sollte man mit etwas Bedacht beginnen. |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wow super, das beantwortet alle meine Fragen!
Tausend Dank! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group