• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

[OT] Zum geschmorten Enigolem - Romani ite domum

Status
Für weitere Antworten geschlossen.
es war einfach irgendwie zu erwarten und das ist auch gut so :). ich wollte nämlich kurz fragen, ob folgender text für jemanden ohne vorkenntnisse zumindest halbwegs verständlich ist:

Es gibt zur Berechnung der Animationsdauern eine grundsätzliche Formel, die fast immer angewandt wird:

Fpa = {(256*FramesPerDirection)/[(AnimationSpeed*(Base+EFHR)/100)]}-1

Wie man hier sieht, wird der Wert zur Berechnung aufgerundet, obwohl dies bei Diablo II für gewöhnlich nie geschieht. Dies liegt ganz einfach daran, dass die obige Formel programmintern nicht verwendet wird. Im Programm läuft eine Animation folgendermaßen ab:

1) Zuerst werden der Counter-Endwert und der Counter-Anstiegswert nach folgenden Formeln berechnet:

Counter-Endwert = 256*FramesPerDirection
Counter-Anstiegswert = AnimationSpeed*(Base+EFHR)/100

2) Der Wert von FramesPerDirection gibt an, aus wie vielen unterschiedlichen Bildern eine Animation besteht. Welches Bild zu welchem Zeitpunkt angezeigt wird, hängt vom aktuellen Wert des Counters ab. Bei einem FramesPerDirection von 5, haben wir 5 verschiedene Bilder und einen Counter-Endwert von 1280.

Counter = 0000-0255 => Bild 0 wird dargestellt
Counter = 0256-0511 => Bild 1 wird dargestellt
Counter = 0512-0767 => Bild 2 wird dargestellt
Counter = 0768-1023 => Bild 3 wird dargestellt
Counter = 1023-1279 => Bild 4 wird dargestellt

Der Counter beginnt beim Wert 0, sodass der Counter-Endwert von 1280 nicht mehr in dieser Animation enthalten ist. Dieser Wert ist das Ende dieser Animation und zugleich der Anfang der neuen Animation.

3) Jetzt starten wir unsere Animation, welche Frame für Frame (öfters spricht man auch von Ticks) abläuft. Am Anfang eines jeden Ticks wird der Counter um den errechneten Counter-Anstiegswert erhöht und anschließend abgefragt, ob der Counter-Endwert schon erreicht oder überschritten wurde (dadurch kommt nun das aufrunden in der Formel zustande). Ist dies nicht der Fall, wird ein Bild der Animation dargestellt. Sollte der Counter-Endwert jedoch schon erreicht/überschritten sein, endet die Animation. Die neue Animation (es läuft immer eine ab, zum Beispiel hat auch das Stehen eine eigene Animation) beginnt nun bei eben jenem Tick.

Beispiel für den Ablauf einer Animation:

Wir gehen von einer Animation mit folgenden Werten aus:

FramesPerDirection = 5
AnimationSpeed = 256
Base = 100
EIAS = 0

Counter-Endwert = 256*FramesPerDirection = 1280
Counter-Anstiegswert = AnimationSpeed*(Base+EFHR)/100 = 256

Counter = 0000-0255 => Bild 0 wird dargestellt
Counter = 0256-0511 => Bild 1 wird dargestellt
Counter = 0512-0767 => Bild 2 wird dargestellt
Counter = 0768-1023 => Bild 3 wird dargestellt
Counter = 1023-1279 => Bild 4 wird dargestellt

Tick 1:
Counter wird erhöht, Wert liegt nun bei 256
Wert des Counters >=1280? nein => Animation wird fortgesetzt
Bild 1 wird dargestellt

Tick 2:
Counter wird erhöht, Wert liegt nun bei 512
Wert des Counters >=1280? nein => Animation wird fortgesetzt
Bild 2 wird dargestellt

Tick 3:
Counter wird erhöht, Wert liegt nun bei 768
Wert des Counters >=1280? nein => Animation wird fortgesetzt
Bild 3 wird dargestellt

Tick 4:
Counter wird erhöht, Wert liegt nun bei 1024
Wert des Counters >=1280? nein => Animation wird fortgesetzt
Bild 4 wird dargestellt

Tick 5:
Counter wird erhöht, Wert liegt nun bei 1280
Wert des Counters >=1280? ja => Animation wird beendet
Daten der nächsten Animation werden ermittelt, Counter-Endwert und Counter-Anstiegswert errechnet und die nächste Animation startet mit diesem Tick


Natürlich wird es die wenigsten interessieren, wie lang ihre Animation mit einem bestimmten Wert dauert, sondern man wird nach den breakpoints fragen. Diese lassen sich nun folgendermaßen berechnen:

Fpa = {(256*FramesPerDirection)/[(AnimationSpeed*(Base+EFHR)/100)]}-1

Durch Umwandeln der Formel erhalten wir:

EFHR = {(100*FramesPerDirection)/(Fpa+1)}-Base

Zuerst setzen wir die Werte unserer Charakterklasse (verwendete Waffengattung berücksichtigen) bzw Verwandlungsform ein, sodass EFHR als einzige Variable übrig bleibt. Für Fpa werden nun ganze Werte angefangen bei 1 aufwärts eingesetzt, bis das Ergebniss 0 beträgt. So erhalten wir die Menge an EFHR, die wir für einen bestimmten breakpoint benötigen.

EIAS = [120*IAS/(120+IAS)]

Auch diese Formel wird nun umgewandelt, sodass wir folgende erhalten:

IAS = [120*EIAS/(120-EIAS)]

Damit lässt sich nun berechnen, wie viel IAS wir für die zuvor berechneten breakpoints wirklich brauchen. Ich werde dies nun am Beispiel des Paladins mit einer sonstigen Waffe berechnen:

EFHR = {(100*FramesPerDirection)/(Fpa+1)}-Base
FHR = {120*EFHR/(120-EFHR)}

EFHR = {(100*5)/(1+1)}-50 = 200
FHR = {120*200/(120-200)} = -300 => nicht möglich

EFHR = {(100*5)/(2+1)}-50 = 117
FHR = {120*117/(120-117)} = 4680

EFHR = {(100*5)/(3+1)}-50 = 75
FHR = {120*75/(120-75)} = 200

EFHR = {(100*5)/(4+1)}-50 = 50
FHR = {120*50/(120-50)} = 86

EFHR = {(100*5)/(5+1)}-50 = 34
FHR = {120*34/(120-34)} = 48

EFHR = {(100*5)/(6+1)}-50 = 22
FHR = {120*22/(120-22)} = 27

EFHR = {(100*5)/(7+1)}-50 = 13
FHR = {120*13/(120-13)} = 15

EFHR = {(100*5)/(8+1)}-50 = 6
FHR = {120*6/(120-6)} = 7

EFHR = {(100*5)/(9+1)}-50 = 0
FHR = {120*0/(120-0)} = 0

an jene, die sich alles durchgeesen haben :): meint ihr, dass die erklärung (+ beispiel) ausreichend ist oder versteht man es nur eher schwer?

aussehen und weiteres einfach nicht beachte, das kommt erst

schonmal danke im vorraus :)

mfg
 
"So brach das ganze System zusammen, das Imperium zerfiel, und ein langes verstocktes Schweigen breitete sich über eine Billion Hunger leidender Welten aus."
:D
 
sonne.am schrieb:
"So brach das ganze System zusammen, das Imperium zerfiel, und ein langes verstocktes Schweigen breitete sich über eine Billion Hunger leidender Welten aus."
:D
das hatte ich auch schon vermutet :D

mfg
 
wenns dich beruhigt titan, ich hab nicht mal ansatzweise die hälfte gelesen, weil ich ein dreiviertel der hälfte nicht verstanden habe
 
Also ich hab leider auch nicht vielverstanden, vieleicht aknnst dus mehr an einem korreten Beispiel aufbauen (also die Formel) und dann gleich im anschluss die Breakpoints dazu berechnen.


grüssle
 
Ich frag mich die ganze Zeit warum das Internet so lahm ist.
Nun habe ich erfahren das meine Schwester ihre Hausarbeit per E-Mail verschickt, 33Seiten lang.
Bilder sind natürlich im bmp Format. -.-
"Ich brech das nicht ab, fast fertig. Dauert nur noch eine Stunde."
Verschicken tut sie die Mail seit ~4Stunden.
Ich würd so lachen, wenn der Empfänger zu Faul ist die Mail runterzuladen. :D
 
Also ich hab leider auch nicht vielverstanden, vieleicht aknnst dus mehr an einem korreten Beispiel aufbauen (also die Formel) und dann gleich im anschluss die Breakpoints dazu berechnen.
dann muss ich es wohl noch umschreiben. eigentlich schreib ich den thread hauptsächlich für mich, aber etwas wissen vermitteln schadet nie.

das quote ist nur ein teil des grundwissens. die breakpoint werden später berechnet, da gibt es viel zu viele.

mfg
 
ich geh jetzt auf ne party...


ich werd für euch alle n schlückl mittrinken...


hauta rein freunde
 
ich hab schon mal gesagt das rl verboten is bei doug tztztz

trotzdem viel spass :angel:
 
ich schlaf nun mal mein rausch aus...

n8 bis ähm ich wieder nüchtern bin

riddy
 
morgen.gif



<--- :clown:
 
Servus,

von mir auch alles gute an blood und allen anderen frohe Ostern! und natürlich dicke eier und viele bunny's.

gruß
(Se)Basti(an)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben