Optimizare animație Documentație motor ireal
Descrie metode pentru a realiza planuri de animație mai performante prin tehnici de optimizare.
Pe măsură ce vă construiți planurile de animație, există câteva practici pe care ar trebui să le aveți în vedere pentru a vă asigura că animația din proiectul dvs. rulează cât mai bine posibil. Unele dintre acestea sunt activate în mod implicit, în timp ce altele vor necesita să luați în considerare abordarea pe care o luați în configurarea planurilor de animație. Alte eforturi pot fi efectuate prin C ++, care vă va oferi, de asemenea, un anumit control asupra modului și momentului în care animațiile sunt actualizate, ceea ce poate duce la îmbunătățirea performanțelor.
Actualizare animație multi-fire
Acest lucru permite mai multă animație să ruleze în fire de lucru și este activat în mod implicit, pe care îl puteți găsi în Setările proiectului:
În interiorul Setări proiect sub Setări generale> Planuri Anim, a te asigura Permiteți actualizarea animației cu mai multe fire este activat.

Acest lucru controlează dacă, în mod implicit, permitem actualizări ale graficului de plan de animație să fie efectuate pe fire care nu sunt de joc. Acest lucru permite, de asemenea, câteva verificări suplimentare în compilatorul de animație Blueprint, care vor avertiza atunci când se încearcă operațiuni nesigure. În interiorul tău Planuri de animație, veți dori, de asemenea, să vă asigurați că este setat la Utilizați actualizarea animației cu mai multe fire.
În interiorul planului de animație de sub Setările clasei, asigura-te ca Utilizați actualizarea animației cu mai multe fire este activat.
Principalul motor din spatele acestui lucru a fost să controleze accesul la date mai strâns între fire. În acest scop, multe date cu acces la grafic animat au fost mutate de la UAnimInstance într-o nouă structură numită FAnimInstanceProxy. Această structură proxy este locul în care se găsește cea mai mare parte a datelor de pe UAnimInstance.
În general, UAnimInstance nu trebuie accesat sau mutat din nodurile AnimGraph (Actualizare/Evaluare apeluri) deoarece acestea pot fi rulate pe alte fire. Există împachetări de blocare (GetProxyOnAnyThread și GetProxyOnGameThread) care împiedică accesul la FAnimInstanceProxy în timp ce activitățile sunt în zbor. Ideea este că, în cel mai rău caz, sarcinile așteaptă finalizarea înainte ca datele să poată fi citite sau scrise în proxy.
Din punct de vedere Anim Graph, numai FAnimInstanceProxy poate fi accesat din nodurile de animație, nu din UAnimInstance. Datele trebuie schimbate cu proxy-ul pentru fiecare bifă (fie prin tamponare, copiere sau altă strategie) în FAnimInstanceProxy: PreUpdate sau FAnimInstaceProxy: PreEvaluateAnimation. Orice date care apoi trebuie accesate de obiecte externe ar trebui apoi schimbate/copiate de la proxy în FAnimInstanceProxy: PostUpdate .
Acest lucru este în conflict cu cazul general de utilizare al UAnimInstance în care variabilele membre pot fi accesate din alte clase în timp ce sarcinile sunt în zbor. Ca recomandare, încercați să nu accesați deloc direct Instanța Anim de la alte clase. În schimb, Instanța Anim ar trebui să extragă date din altă parte.
Exemplu AnimInstance nativ personalizat
În blocul de cod de mai jos este un exemplu despre cum s-ar construi o clasă nativă personalizată AnimInstance utilizând noul FAnimInstanceProxy, acordând acces la funcționarea internă și evitând copiile datelor partajate între proxy și instanță:
Animație Calea rapidă
Animație Calea rapidă oferă o modalitate de optimizare a accesului variabil în interiorul AnimGraph Actualizați. Acest lucru permite motorului să copieze parametrii intern, mai degrabă decât să execute codul Blueprint (care implică efectuarea de apeluri în Blueprint Virtual Machine). Compilatorul poate optimiza în prezent următoarele construcții: variabilele membre au negat variabilele membre booleene și membrii unei structuri imbricate.
Opțiunea Animație cale rapidă este activată în mod implicit în Setări proiect:
În interiorul Setări proiect sub setari generale și Anim Blueprints, a te asigura Optimizați accesul variabil al membrilor Blueprint Anim este activat.
Pentru a utiliza calea animației Fath, în interiorul graficului animat al planurilor de animație, asigurați-vă că nu se execută nicio logică plan. În imaginea de mai jos, citim mai multe valori flotante care sunt utilizate pentru a conduce mai multe active Blend Space și o combinație care rezultă în poziția noastră de animație finală. Fiecare nod notat cu pictograma fulger în colțul din dreapta sus utilizează Calea rapidă deoarece nu se execută nicio logică.