Viele Designer stehen frĂŒher oder spĂ€ter vor der Herausforderung, ein realistisches Gewebe- oder Haarverhalten zu erreichen. HierfĂŒr gibt es eine Reihe von Technologien, von denen jedoch nicht alle fĂŒr mobile Plattformen geeignet sind. Normalerweise backen mobile Entwickler Animationen, weil es am billigsten ist. Wir werden ĂŒber Echtzeitsimulation sprechen - das Unity Cloth- Modul .
Unity Cloth ist ein auf Gewebephysik-Simulationen basierendes System, das in Verbindung mit SkinnedMeshRenderer arbeitet. Sie können damit eine Vielzahl von Parametern steuern, z. B. Zug- oder Torsionssteifigkeit, DĂ€mpfung (der Betrag, der dafĂŒr verantwortlich ist, wie schnell das Gewebe ins Gleichgewicht kommt), Windsimulation, Wechselwirkung interner Kollisionen (Selbstkollision), Reibung, Schwerkraft, Einfluss usw. Interaktion von Kollidern usw.
Eines der Teams des Krasnodar-Studios Plarium untersuchte die Anwendbarkeit von Unity Cloth fĂŒr mobile GerĂ€te.
Teil 1. Gewebesimulation
Wir haben mit Stresstests begonnen, um die akzeptablen Grenzwerte fĂŒr die Verwendung der Moduleinstellungen auf MobilgerĂ€ten zu ermitteln. Die erste untersuchte Probe war ein mehrschichtiges High-Poly-Netz - ein Umhang mit ~ 10.000 Eckpunkten, ~ 7.000 Dreiecken. Dem Objekt wurden 19 Kapselkollider in Form der Körperteile des Charakters hinzugefĂŒgt. Die restlichen Einstellungen sind Standardeinstellungen.
Die folgende Grafik zeigt die Latenz der zu untersuchenden Metriken in Millisekunden in AbhÀngigkeit von der Anzahl der Objektinstanzen. Das getestete GerÀt ist Xiaomi Mi5 (4 Kerne, 2,15 GHz, 3 GB RAM).
Xiaomi Mi5 ist nicht das schwÀchste GerÀt, aber es sind bereits gravierende Leistungsverluste sichtbar. Auf weniger leistungsstarken GerÀten (Lenovo A536, Quad-Core, 1,3 GHz, 1 GB RAM) werden sie katastrophal. Als nÀchstes werden wir die Ergebnisse auswerten, die das schwÀchste GerÀt zeigt.
Allein ein Update der Gewebephysik macht 775 von 800 ms aus. Versuchen wir, den Einfluss von Kollidern auszuschlieĂen.
Collider-Kollisionsberechnungen reduzieren die Leistung erheblich: Mit 25 Instanzen waren maximal 475 Collider vor Ort.
Die nÀchste Messung bezieht sich auf ein Low-Poly-Einschichtmodell (153 Eckpunkte, 256 Dreiecke) mit weniger Instanzen (bis zu 9) und weniger Kollidern (bis zu 8).
Mal sehen, welche Auswirkungen Collider-Berechnungen haben. Lassen Sie uns die entsprechenden AbhÀngigkeiten am Beispiel einer Instanz eines Objekts auf verschiedenen GerÀten erstellen (zusÀtzlich zu den bereits beteiligten GerÀten verwenden wir Asus ZenFone 5, Dual-Core, 2 GHz, 1 GB RAM).
Die resultierenden Funktionen werden durch eine Polynomfunktion vom Grad 2 gut angenÀhert.
Es ist ersichtlich, dass die Situation mit Low-Poly-Objekten viel besser ist. Auf den Ă€ltesten GerĂ€ten dauert eine Instanz eines Objekts durchschnittlich etwa 1 ms (gegenĂŒber ~ 3 ms bei einem High-Poly-Modell, alle anderen Dinge sind gleich), was ziemlich gut ist.
Als nÀchstes wollen wir sehen, wie sich zusÀtzliche Parameter auf die Leistung auswirken .
In den Tests haben wir ein einschichtiges Netz mit etwas mehr Details als in der vorherigen Dimension verwendet (~ 450 Eckpunkte, ~ 800 Dreiecke). 1 Kapselkollider wurde zur Unity Cloth-Komponente hinzugefĂŒgt, 1 Instanz des Objekts wurde untersucht, zusĂ€tzliche Parameter fĂŒr interne Kollisionen und Windeffekte wurden variiert .
ZusÀtzliche Windsimulationen sowie interne Kollisionsberechnungen beeintrÀchtigen die Leistung.
Dies macht sich insbesondere bei komplexeren Modellen bemerkbar. Lassen Sie uns den Effekt zusÀtzlicher Parameter der Steifheit (Spannung, Torsion) und DÀmpfung auf Maschen mit ~ 10.000 Eckpunkten und ~ 500 mit 1 Kapselkollider analysieren.
Nachfolgend sind die Ergebnisse aufgefĂŒhrt, die mit dem schwĂ€chsten GerĂ€t (Lenovo A536) mit unterschiedlichen Parametern bei jeder Messung erzielt wurden.
1. Steifheit: Dehnen und Verdrehen.
Low-Poly: 1,67 ms High-Poly: 145,32 ms.
2. Steifheit: Dehnung - inkl. / Curl - off.
Low-Poly: 1,79 ms High-Poly: 160,44 ms.
3. Steifheit: Dehnen. / Verdrehen - inkl.
Low-Poly: 1,90 ms. High-Poly: 172,19 ms.
4. Steifheit: Dehnen und Verdrehen - inkl.
Low-Poly: 1,92 ms High-Poly: 194,50 ms.
5. Steifheit: Dehnung - inkl. / Curl - off. Windeinfluss - inkl.
Low-Poly: 1,69 ms. High-Poly: 165,73 ms.
6. Steifheit: Dehnung - inkl. / Curl - off. DĂ€mpfung inkl.
Low-Poly: 1,69 ms. High-Poly: 172,75 ms
7. Steifheit: Dehnung - inkl. / Curl - off. Windeinfluss - inkl. DĂ€mpfung - inkl.
Low-Poly: 1,76 ms High-Poly: 173,10 ms
8. Steifheit: Dehnung - inkl. / Curl - off. Interne Kollisionen - inkl.
Low-Poly: 2,01 ms High-Poly: Unity Crash
Die Parameter der Simulation von Wind, Fade, Squeeze, Twist und interner Interaktion erhöhen die Leistung erheblich und beeintrÀchtigen die Leistung schwacher GerÀte bei Verwendung von High-Poly-Netzen erheblich. Netze mit weniger Eckpunkten haben eine geringere Latenz.
- Die Wind-Simulation fĂŒgt ~ 9% der gesamten metrischen Latenz hinzu.
- Die Fading-Simulation addiert ~ 12% der gesamten metrischen Verzögerung.
- Die Schrumpf- / Verdrehungssimulation addiert ~ 13-15% der gesamten metrischen Latenz.
- ~ 12â16% ( . : ).
2.
Modell von cgtrader.com
Lassen Sie uns ein wenig ĂŒber die FĂ€higkeiten der Unity Cloth-Komponente beim Arbeiten mit Haaren sprechen. Auf den ersten Blick sollte dies nicht schwieriger sein als bei einschichtigen Stoffen - fixieren Sie zuerst die gewĂŒnschten Scheitelpunkte und verteilen Sie dann den Grad des Simulationseinflusses fĂŒr die verbleibenden Scheitelpunkte. Aber es gibt ein Problem - Knicke von volumetrischen Objekten wie Locken. Um den Grund fĂŒr ihr Auftreten deutlicher zu erkennen, wird zur Veranschaulichung das flĂ€chenzentrierte kubische Kristallgitter eines Metalls, beispielsweise Natriumchlorid, verwendet.
Die Knicke werden durch die Tatsache erklĂ€rt, dass die nahe gelegenen Gipfel ĂŒber die entfernten hinausgehen (durch den Pfeil dargestellt). Knicke und Verdrehungen konnten selbst mit Berechnungen der Wechselwirkungen interner Kollisionen nicht vermieden werden. Wir schlieĂen daraus, dass Unity Cloth nicht fĂŒr feste Körper geeignet ist.
Simulationseinstellungen:
- Parameter 1: 3 Kollider, Steifheit fĂŒr Spannung und Verdrehung, Wind und innere Kollisionen aus, DĂ€mpfung aus;
- Parameter 2: 3 Kollider, Zugsteifigkeit aktiviert, Wind- und interne Kollisionen deaktiviert, DĂ€mpfung deaktiviert;
- Parameter 3: 1 Collider, Zugsteifigkeit aktiviert, Wind- und interne Kollisionen deaktiviert, DĂ€mpfung deaktiviert.
Die Leistungsindikatoren der beiden schwachen GerÀte sind miteinander vergleichbar, Xiaomi liefert die besten Ergebnisse.
In geschĂ€ftigen Szenen werden selbst relativ kleine Verzögerungen erheblich, und in der mobilen Entwicklung vervielfachen sich diese Zahlen, sodass Sie jede Zehntel Millisekunde kĂ€mpfen mĂŒssen.
Zusammenfassung der Unity Cloth-Komponente
- Es kommt gut mit einfachen einschichtigen Objekten (Flaggen, UmhÀnge, Tagesdecken und Tischdecken) zurecht.
- .
- .
- . , : Graphics Settings .
- - Unity ( Bug Story).
Die Simulation einfacher einschichtiger Stoffe, die mit dem Unity Cloth-Modul erstellt wurden, ist sehr realistisch. Es sollte jedoch mit Vorsicht angewendet werden: Die Interaktion mit einer groĂen Anzahl von Kollidern sowie eine ĂŒbermĂ€Ăige Berechnung der Wind-Simulation, DĂ€mpfung, Kompression, Verdrehung und interne Interaktion fĂŒhren zu LeistungseinbuĂen. Im Allgemeinen ist Unity Cloth fĂŒr die Verwendung auf MobilgerĂ€ten sehr ressourcenintensiv, insbesondere bei der Simulation von Stoffen und Haaren auf High-Poly-Netzen.
Wenn Sie Unity Cloth auf mobilen Plattformen verwenden möchten , beachten Sie die folgenden Empfehlungen:
- Weniger Eckpunkte bedeuten eine bessere Leistung. Verwenden Sie Netze mit der Mindestanzahl von Scheitelpunkten, die Sie verarbeiten können.
- , .
- , , , , .
- , , .
Bug Story
, - . Unity Support.
1. Unity 2018.4.4f1 Cloth Bounds SkinnedMeshRenderer, , .
8 9 . Xiaomi Mi 5.
2018.4.8f1.
2. 2018.4.8 Constraints , - /. , :
2018.4.14f.
1. Unity 2018.4.4f1 Cloth Bounds SkinnedMeshRenderer, , .
8 9 . Xiaomi Mi 5.
2018.4.8f1.
2. 2018.4.8 Constraints , - /. , :
- Constraints;
- -, ;
- Play Mode ;
- Cloth.
2018.4.14f.