Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

killmichnich

unregistriert

1

12.05.2009, 07:39

sprites ausschneiden

Hi,
ich hab eine Frage: Wenn ich ein Bild mit Sprites drin hab die ich ausschneiden will um sie zu animieren, wie kann ich die dann am Besten ausschneiden? Gibts da irgend nen Trick oder ein Programm das das einfacher gestaltet? Weil das alles so auszuschneiden is ein bisschen Arbeit und funzt bei mir auch nicht immer ... =(

Würde mich über Hilfe freuen
MfG Killmichnich

PS: Sowas mein ich:

(Link)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

2

12.05.2009, 09:05

Ordne die Bilder in gleichen Abständen an, das macht dir das Leben leichter. Oder speicher für jedes Bild die Position, Breite und Höhe.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

12.05.2009, 10:10

Auch ne Option ist es, jedes Bild mit einem Pixel oben und einen unten zu markieren. Z.B. mit einem blauen für oben rechts und einen roten für unten links. Beide z.B. mit dem Alphawert von 1. Das funktioniert natürlich nur dann, wenn sich die Bilder nicht überschneiden und sonst keine Pixel mit genau diesem Farbwerten existieren. Weil dann kann ein algo sehr schnell alle Einzelbilder finden und ausschneiden.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

4

12.05.2009, 12:22

Hallo

Bei Reiner's Tilesets gibt es auch einen Tileschneider vielleicht hilft der dir.

chrische

killmichnich

unregistriert

5

21.05.2009, 20:44

also schonmal thx für die antworten
aber wie soll ichs denn am besten machen, dass die ich alle sprites von der selben position her ausschneid?
ich tu mir da noch schwer, weil die figuren wenn sie laufen oder schlagen ja immer arme und beine bewegen, und ich die somit nicht als anhaltspunkt nehmen kann?

6

22.05.2009, 08:37

ohne irgendwie gross Ahnung zu haben. Ich denke er würde gerne Wissen wie man diese Sprites animiert aus dem vorhanden Bild/Bilder und das ganze am Besten per Programm wo man die randpkte markiert oder aehnliches. Btw. würde mich das auch mal interessieren wie ihr Profis das macht ;)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

7

22.05.2009, 08:47

Zitat von »"Luce"«

ohne irgendwie gross Ahnung zu haben. Ich denke er würde gerne Wissen wie man diese Sprites animiert aus dem vorhanden Bild/Bilder und das ganze am Besten per Programm wo man die randpkte markiert oder aehnliches. Btw. würde mich das auch mal interessieren wie ihr Profis das macht ;)


Heutzutage brauchste einfach nicht mit dem Speicher zu geizen, also einfach alle Frames gleich groß machen. Das reduziert den Programmieraufwand.

8

22.05.2009, 09:22

Hallo

Das sehe ich auch so. Mal alle Sprites in einer Größe und du sparst dir Stress.

chrische

9

22.05.2009, 10:40

du machst einfach jedes bild der animation gleich breit und hoch, wie bereits gesagt. Jetzt lädst du das gesamte Bild als eine Textur. Wenn du jetzt ein Bild der Animation anzeigen möchtest, rechnest du einfach Breite eines Bildes x Nummer des Bildes (z.B. 5). Jetzt weist du die x koordinate deines Bildes. Das gleiche machst du mit der y koordinate. Mit den beiden koordinaten kannst du jetzt ein Rechteck berechnen und der Draw Methode deines Spriteobjekts übergeben. Ich kann dir mal ein bischen von meinem Code zeigen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(running == true && timeGetTime()-lastchange > (unsigned int)timeperpicture) { (currentpicture == count-1) ? currentpicture = 0 : currentpicture++, lastchange = timeGetTime(); }

    RECT r;
    r.left = currentpicture*singlewidth;
    r.right = (currentpicture+1)*singlewidth-1;
    r.top = 0;
    r.bottom = height;


    D3DXVECTOR3 position((float)x, (float)y, 0.0f);
    D3DCOLOR ModulateColor = 0xFFFFFFFF;

    lpSprite->Begin(D3DXSPRITE_ALPHABLEND);
    lpSprite->Draw( Textures[texturepath],
                    &r,
                    NULL,
                    &position,
                    ModulateColor);
    lpSprite->End();



bitte nicht verwirren lassen :D

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

10

22.05.2009, 10:48

wenn ich mir die Vorlage oben anschaue, dann liegt das Problem doch darin (korrigiert mich bitte wenn ich jetzt Blödsinn rede), dass die Sprites, selbst die die zu einer Sequenz gehören, gar nicht immer die gleiche Breite haben, sondern in der Breite variieren. Ich denke hier muss man sich erstmal die Vorlage oben neu zusammenbasteln und vermutlich geht das nur mühselig von Hand.
Gruss

Werbeanzeige