Jump to content
Unity Insider Forum
Sign in to follow this  
  • entries
    5
  • comments
    9
  • views
    18,107

Entries in this blog

 

Ãœberraschung: AnimationCurve.Evaluate ist schneller als Mathf.Lerp!

Da müsste ein Link auf das ursprüngliche Forum-Posting dabei stehen ... es ging um die Frage, wie man 0, 0.5, 1.0 linear auf 0.5, 0.75, 1.0 abbilden kann. Da kam natürlich dann recht flott auch Lerp, also lineare Interpolation, was für so etwas die naheliegendste Methode ist. Ich dachte mir, dass aber Artists sicher lieber AnimationCurves verwenden, weil das anschaulicher und flexibler ist.

Um mich nicht mit einem Tip zu blamieren, der potenziell der Performance schadet, machte ich die Bemerkung:

[quote name='jashan' timestamp='1436865245' post='76067']Die Flexibilität, die dir das bietet kostet natürlich ein wenig Performance ... da müsste man mal testen, was das konkret für einen Unterschied macht.[/quote]

... und dann wollte ich's aber genau wissen. Das Ergebnis hat mich dann am Ende doch etwas überrascht (deswegen als Blog-Posting):

[i]Wenig[/i] heisst in diesem Fall wirklich [u][b]wenig[/b][/u]: Bei 10000 Iterationen dauert es in beiden Fällen noch keine ganze Millisekunde. Bei 1 Mio Iterationen habe ich bei [b]Lerp 26 ms[/b], bei der [b]AnimationCurve 28ms[/b].

Allerdings braucht die AnimationCurve eine gewisse Zeit zur Initialisierung: [b]bei einem Schleifendurchlauf[/b] habe ich bei [b]AnimationCurve 1090 Ticks[/b], bei [b]Lerp 40 Ticks[/b]. Da könnte man jetzt sagen: "Lerp ist 27 Mal schneller, auf keinen Fall AnimationCurves verwenden". Aber das gilt halt nur, wenn man es nur ein einziges Mal verwendet (und 1 Tick ist 1/10000 ms, also wenn ich's richtig im Kopf habe 0.1 ns ... also ... praktisch "keine Zeit" ;-) ).

Bei der zweiten "Runde" mit einem Durchlauf, sind es dann 0 Ticks, 0 Ticks (manchmal auch 10 Ticks, sowohl bei Curve als auch bei Lerp, also kein wirklicher Unterschied messbar).

[b]Wow, man muss so etwas wirklich sauber testen und messen:[/b] In der "Praxis" ist es dann nämlich offenbar so, dass die [b]AnimationCurve sogar schneller ist, als Lerp![/b] Damit hätte ich jetzt nicht gerechnet: Beim ersten Durchlauf mit 1 Mio Iterationen ist nach wie vor Lerp minimal schneller (Lerp 26ms, AnimationCurve 28ms). Aber bei allen Wiederholungen haben wir dann Lerp immer noch 26ms, aber AnimationCurve 24ms.

Wieder mal was gelernt ;-) ... ich kann's mir nur so erklären, dass AnimationCurve irgendetwas schlau cachet oder irgendwie anders umgesetzt wird, so dass nach einem "warmup" die Berechnung extrem schnell ist (schneller als das praktisch triviale Lerp).

Und, um auch den letzten Rest meiner Neugier zu befriedigen: Auch wenn die Kurve deutlich komplexer ist (mit zig Kontrollpunkten) hat das nur minimale Auswirkungen auf die Performance, was allerdings die Caching-Theorie (die sowieso auf Strohbeinen stand) widerlegt, weil sonst der erste Durchlauf deutlich länger dauern müsste.

[CODE]
using UnityEngine;

public class SimpleCurve : MonoBehaviour {

public AnimationCurve curve = new AnimationCurve();

public int counter = 1000000;

public float Evaluate(float t) {
return curve.Evaluate(t);
}

public void Awake() {
for (int i=0; i < 10; i++) {
TestA();
TestB();
}
}

private void TestA() {
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch ();
sw.Start();
float result = 0;
for (float i=0; i < counter; i++) {
result = curve.Evaluate(i / counter);
}
sw.Stop();
Debug.LogFormat("Using curve for {3} iterations took: {0} ms, {1} ticks, result was: {2}",
sw.ElapsedMilliseconds, sw.ElapsedTicks, result, counter);
}

private void TestB() {
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch ();
sw.Start();
float result = 0;
for (float i=0; i < counter; i++) {
result = Mathf.Lerp(0.5F, 1.0F, i / counter);
}
sw.Stop();
Debug.LogFormat("Using lerp for {3} iterations took: {0} ms, {1} ticks, result was: {2}",
sw.ElapsedMilliseconds, sw.ElapsedTicks, result, counter);
}
}
[/CODE]


Source: [url="http://forum.unity-community.de/topic/10012-mathematische-anfangerfrage/page__view__findpost__p__76073"]Mathematische Anfängerfrage[/url]

jashan

jashan

 

Unity 5.1 ist jetzt released - mit VR und Multiplayer Unterstützung

Ich hatte mich schon etwas gewundert, dass es keinen weiteren Release Candidate mehr gab - das lag wohl daran, dass sie schon den Release vorbereitet haben:

Download here: [url="http://unity3d.com/get-unity/update"]http://unity3d.com/get-unity/update[/url]

Ich denke die wichtigsten neuen Features dürften wohl native VR-Unterstützung sein, sowie das neue Unity Multiplayer Networking (ehemals UNET). Ansonsten Cleanup und Bugfixes ... ist natürlich auch fein :-)

[url="http://unity-buch.de/blog/ArticleID/40/Unity-5-1-released-Mit-VR-und-Multiplayer-Unterstützung"]Artikel zu dem Release auf Deutsch auf der Webseite zu Das Unity-Buch[/url]

Source: [url="http://forum.unity-community.de/topic/9839-unity-51-ist-jetzt-released-mit-vr-und-multiplayer-unterstutzung/page__view__findpost__p__74606"]Unity 5.1 ist jetzt released - mit VR und Multiplayer Unterstützung[/url]

jashan

jashan

 

"Das Unity-Buch" - gibt's jetzt endlich zu kaufen ;-)

Die Geschichte dieses Buches ist eine ziemlich lange (angefangen habe ich mit diesem Projekt 2010) - aber das möchte hier nicht ausbreiten, bei Interesse findet Ihr die wichtigsten Stationen im [url="http://unity-buch.de/blog"]Blog auf der Webseite zum Buch[/url].

Die gute Nachricht: Das Buch ist jetzt fertig gedruckt und über [url="http://www.buecher.de/shop/fachbuecher/das-unity-buch/chittesh-jashan/products_products/detail/prod_id/42104802/"]buecher.de[/url] und [url="http://www.amazon.de/gp/product/3864902320/"]Amazon[/url] bestellbar (einige Buchläden müssten es auch schon haben). Bisher hab ich's selbst gedruckt noch nicht in den Händen gehalten - heute ist's zwar bei mir angekommen (hat mir meine Freundin erzählt), aber ich bin seit gestern in Seattle. Da muss ich mich jetzt also noch knapp zwei Wochen gedulden.

Zu dem Buch gibt es auch ein Fragen-Forum, das ein wenig an StackOverflow bzw. auch Unity Answers angelehnt ist. Das ist aber natürlich nicht als Konkurrenz zum Unity Insider Forum gedacht, sondern speziell für Fragen zum Buch. Daher verweise ich auch gleich auf der Startseite der Webseite zum Buch auf hier und bin hier natürlich auch weiterhin aktiv (die Forum-Software, die ich auf der Webseite zum Buch verwende hat auch noch Bugs, die trotz Open Source leider schwieriger zu beheben sind, als ich dachte ... oh well ;-) ).

Auf der Webseite zum Buch habe ich eine Menge Tutorials, die auch ohne das Buch funktionieren sollten - wenn Ihr Lust habt, schaut da ruhig mal vorbei: [url="http://unity-buch.de/screencasts/videos/tutorials"]Screencasts zu Das Unity-Buch[/url]. Mindestens einer davon war übrigens von einer Frage im Forum inspiriert (und ist dementsprechend natürlich auch schon lange von hier aus verlinkt). Die Arbeit an der Website zum Buch ist noch nicht abgeschlossen, Ihr findet dort aber bereits jetzt eine Vielzahl von [url="http://unity-buch.de/links"]Links[/url], die zwar nach den Kapiteln gruppiert sind, aber auch so interessant sein sollten.

Jetzt hoffe ich, dass Carsten nicht an seinen Verkaufszahlen merkt, dass es zwei deutsche Unity-Bücher gibt. Viel besser ist, wenn einfach mehr Leute Unity lernen. [url="http://www.amazon.de/gp/product/3446439390/"]Sein Buch[/url] habe ich zwar bisher noch nicht komplett gelesen (sorry, hatte einfach nicht die Zeit - ist aber soweit ich's gesehen habe ein echt gutes Buch) ... und ich denke die Bücher sind verschieden genug, dass es sich lohnt, beide zu kaufen ;-)

Über Feedback freue ich mich natürlich - nach der ersten Auflage ist vor der zweiten Auflage, und da ich Webseite und Buch recht eng verknüpft habe, kann ich Erweiterungen und Ergänzungen auch zwischendrin gut nachliefern.

Und natürlich wünsche ich denen, die sich das Buch kaufen viel Freude beim Lesen und hoffe, dass die Arbeit mit Unity während und nach der Lektüre noch mehr Spaß macht!

[center][i][b]Enjoy! :-)[/b][/i][/center]


Source: [url="http://forum.unity-community.de/topic/9533-das-unity-buch-gibts-jetzt-endlich-zu-kaufen/page__view__findpost__p__72592"]"Das Unity-Buch" - gibt's jetzt endlich zu kaufen ;-)[/url]

jashan

jashan

 

[Video-Tutorial Deutsch] Unity UI: Dynamische Selection List erstellen

Inspiriert von der Frage von [url="http://forum.unity-community.de/topic/8980-selectionlist/"]Felix zu SelectionList[/url] habe ich eben mal ein kleines Video-Tutorial zu eben diesem Thema erstellt und freue mich über Feedback (und natürlich, wenn es dem Einen oder Anderen nützt):

[media]https://vimeo.com/115799172[/media]

Und das Beispielprojekt dazu (ist ein Unity-Package, kann man in ein beliebiges Projekt importieren, entpackt sich ins Verzeichnis "Examples"):

[url="https://dl.dropboxusercontent.com/u/27308128/NarayanaGames/UnityExamples/SelectionListExample.unitypackage"]SelectionListExample[/url]

Forum-Link: [url="http://forum.unity-community.de/topic/8987-tutorial-deutsch-unity-ui-dynamische-selection-list-erstellen/page__view__findpost__p__68652"][Tutorial Deutsch] Unity UI: Dynamische Selection List erstellen[/url]

jashan

jashan

 

Tada: Unity 4.6 mit dem neuen Unity UI (früher uGUI) ist jetzt released

[color=#666666][font=tahoma, helvetica, arial, sans-serif][size=3]Wir hatten zwar schon die Beta, was cool war ... aber auf diesen Tag habe glaube nicht nur ich seit ein paar Jahren gewartet (nicht, dass man deswegen untätig war, aber so wie warten auf Weihnachten ;-) ).[/size][/font][/color]

[url="http://unity3d.com/unity/whats-new"]http://unity3d.com/unity/whats-new[/url]

[url="http://blogs.unity3d.com/2014/11/26/4-6-is-released-with-source-for-ui-system/"]http://blogs.unity3d...-for-ui-system/[/url]

[color=#666666][font=tahoma, helvetica, arial, sans-serif][size=3]Jetzt ist Zeit zum Feiern!!! ;-)[/size][/font][/color]

[color=#666666][font=tahoma, helvetica, arial, sans-serif][size=3]Am coolsten finde ich ja ehrlich gestanden, dass Unity 5.0 beta 14 endlich wieder auf einem recht aktuellen Stand des neuen Unity UI ist ... aber trotzdem ein toller Tag, heute ;-) [/size][/font][/color]

jashan

jashan

Sign in to follow this  
×