Автоматты аударма пайдаланылды

Spine анимацияларын оңтайландыру: қателіктерге жол бермей, жүйке мен уақытты сақтаңыз

Ойын анимацияларымен жұмыс істегенде, тіпті тәжірибелі аниматорлар қателіктер мен қателіктер жібереді. G5 Games осындай мәселелерден аулақ болуды үйренді. Ол өз тәжірибесімен бөліскісі келеді Михаил Шлыков, Spine аниматоры. Spine-мен жұмыс істеген 8 жыл ішінде ол анимацияны біріктірудің негізгі қателіктерін және оларды шешу жолдарын анықтады. 

Қолданылатын ойын қозғалтқышы мен анимациялық редакторға қарамастан, кез-келген жобада анимацияның өнімділігі мен дисплейіне қатысты мәселелер туындауы мүмкін. Біз Spine анимацияларын ойын қозғалтқышына біріктіру кезінде жиі кездесетін мәселелер туралы сөйлесеміз, сонымен қатар анимацияларды оңтайландырудың негізгі әдістерін ұсынамыз. Бұл мақала анимацияларды экспорттаумен айналысатын Spine аниматорларына да, ойын қозғалтқыштарындағы анимациялармен жұмыс істейтін әзірлеушілерге де пайдалы болады. Сипатталған принциптердің көпшілігі Spine-ден басқа анимациялық редакторларға да қатысты.

Қаңқа 2D анимациясын жасау үшін Spine, DragonBones, Blender COA Tools, Rive және кірістірілген Unity редакторы жиі қолданылады. Мұндай анимацияның басты артықшылығы-суреттерді бірнеше рет пайдалану мүмкіндігі, бұл жедел жадта сақталған графика көлемін үнемдеуге мүмкіндік береді. Бұл идея ресурстарды пайдалануды барынша оңтайландырудың негізінде жатыр. Қазірдің өзінде қатысқан элементтерді қайта пайдалану анимациялардың көрнекі тартымдылығын сіз жасаған графиканың көлемін арттырмай арттыруға мүмкіндік береді.

Бұл мысалда жарылыс анимациясы тек төрт кескіннің көмегімен жасалады.

Таңдалған редакторға қарамастан, ережелердің жиынтығы бар, оларды сақтау қателіктермен күресуге уақыт жоғалтпауға көмектеседі.

  • Жобаның атауы және тәртібі

Операциялық жүйеде анимациялық файлдарды сақтаудың барлық элементтерінің, аттачменттерінің және жолдарының атаулары әрқашан латын тілінде, Бос орындар мен арнайы белгілерсіз болуы керек. Әр түрлі қозғалтқыштар әр түрлі кодтаумен жұмыс істей алады, бірақ латын – бұл барлық жерде қолданылатын әмбебап атау әдісі. 

Сонымен қатар, жобадағы тәртіпті сақтау және элементтерге оңай оқылатын атаулар беру маңызды. Бұл бастапқы файлдарды басқа аниматорларға тасымалдауды жеңілдетеді және болашақта Spine-дегі кез келген алдыңғы жобаңызға оралу қажет болса, өзіңіз үшін жұмысты жеңілдетеді. Сіз оны ұзақ уақыт өткеннен кейін де тезірек және оңай басқара аласыз.

  • Суреттерді сақтау жолдары

Экспорт кезінде аттачменттерді жоғалтудың себептерінің бірі абсолютті жолдар болып табылады. Атласқа орау дұрыс болуы үшін суреттер қалтасына салыстырмалы жолды көрсету ұсынылады.

  • Суреттермен және олардың метадеректерімен жұмыс

Жұмысты бастамас бұрын графикалық редакторда кездейсоқ жасалған пайдаланылмаған бос орындардың бар-жоғын әрдайым тексеріп отыру керек. Тіпті бір кездейсоқ мөлдір пиксель графикамен жұмыс істеуді қиындатып, соңғы Атластың өлшемдері мен салмағын арттыруы мүмкін. Атлас өлшемін азайтудың бір жолы-көпбұрышты қаптама, онда суреттер олардың тор өлшемдерінің шекараларын ескере отырып оралады.

Атласты ораудың бұл әдісі үшін барлық аттракциондар торға айналады және оның көмегімен бос жерлер кесіледі. Бұл жобадағы үшбұрыштардың көбеюіне әкеледі, оларды жеке-жеке бақылау және дұрыс орау әдісін таңдау керек.

PNG кескіндеріндегі метадеректер Атластың салмағын едәуір арттырып, осындай графикамен жұмыс істегенде омыртқадағы фриздерге әкелуі мүмкін. Photoshop to Spine сценарийінің ескі нұсқалары метадеректерді PNG-ге жазды, егер бұл функция Photoshop-та әдепкі бойынша өшірілмеген болса. Экспортталғаннан кейін PNG кескіндерінің салмағын ескеру және тексеру керек.

  • Бастапқы графиканың өлшемі

Көбінесе бастапқы графика анимация үшін көбірек ажыратымдылықта беріледі. Анимациямен қосымша әрекеттерді азайту үшін қозғалтқышта қандай соңғы өлшем қолданылатынын алдын ала білу маңызды. Бұл анимация жасалғаннан кейін қаңқа өлшемі мен экспортталатын графиканың Spine-ге сәйкес келуіне жол бермейді. Графикалық редактордан экспортталғанға дейін графиканың өлшемін өзгерту қазірдің өзінде реттелген ригті қайта жасаудан әлдеқайда оңай.

Майкл әртүрлі ойын қозғалтқыштарымен жұмыс істеді – Unity, Pixie, Godot, Cocos Creator, сондай-ақ G5 Games-те реттелетін қозғалтқыш. Осы уақыт ішінде ол Spine элементтерінің өнімділікке әсер етуінің әмбебап рейтингін анықтады.

1-маскалар

Маскаларды пайдалану кезінде ең көп ресурстарды қажет ететін процесс-Draw Call құру-бұл визуалды көрсету үшін графикалық API сұранысы. Осы кезде экранда көрсетілетін барлық деректер жиналады және талданады, ал есептеулер CPU және GPU жағында орындалады. Жүктеменің көп бөлігі сұранысқа дайындық процесінде болады. Жобада масканың болуы екі қосымша сурет сұрауын тудырады. Маска нүктелерінің саны және оның анимациясы сұраныстардың өзінен және жасырын кескін аумағынан айырмашылығы өнімділікке әрең әсер етеді.

2-араластыру режимдері

Ойын қозғалтқыштары кескін түстерін көбейту арқылы әртүрлі жұмыс істейді, сондықтан қалыпты емес режимдердің әсері әртүрлі болуы мүмкін. Егер Additive, Multiply және Screen режимдері бар слоттар болса, қосымша сурет сұрауы жасалады. Осы сәттегі жүктеме мөлшері осы режимдерді қолданатын кескіндердің ауданына байланысты.

3-меш шыңдарының Саны

Әр нүктенің өзіндік координаттары бар және тормен әрекеттескен сайын бұл координаттар жеке сүйек сияқты әрекет етеді. Әрбір аттачмент, тіпті торға айналмаса да, 4 шыңға ие, сондықтан шыңдар санының артуы қозғалтқышта қосымша есептеулерге әкеледі, бұл процессорды жүктейді. А тор нүктелерінің қолмен деформациясы, сүйектерге байланбай, тор шыңдарының әрқайсысы үшін бөлек уақыт сызығын жасауға әкеледі. Торлармен жұмыс істеудің қосымша мүмкіндігі Linked mesh болып табылады, ол торлар үшін жаңа уақыт сызықтарын жасамай немесе оларды CPU жағында қайта есептемей-ақ бірдей өлшемдегі кескіндер үшін тор күйін мұра етуге мүмкіндік береді.

4 — Bounding Box

Көптеген қозғалтқыштарда, Bounding Box болмаған кезде, ол әр анимациялық кадр үшін динамикалық түрде жасалады, бұл өнімділікке қатты әсер етеді. Сондықтан Bounding Box-ты Spine-де қолмен жасаған дұрыс. Сонымен қатар, Bounding Box-тың болуы анимациялық нысанды экраннан шыққан кезде жадтан шығаруға мүмкіндік береді, бұл өнімділікті арттырады.

5 — Constraints

Қозғалтқыштағы FK және IK констрейндері сүйектердің орналасуына әсер ететін математикалық құрылым болып табылады. Олардың болуы процессорға қосымша есептеулер қосады. Өнімділікке әсер ете отырып, констраиндердің әрқайсысын он қосымша сүйекпен салыстыруға болады.

6-Жолдар

Қозғалтқыш жағында жол-бұл сегменттердің әрқайсысы төрт нүктеден тұратын текше Безье қисығы. Құрылысқа CPU қатысады, бірақ қисықтар сүйектердің орналасуымен бірдей құрылыс принципін қолданады, тек визуалды бейнелеуде және қосымша қисық басқару элементтерінде айырмашылықтар бар.

7-сүйектер

Сүйек-бұл кеңістікте қозғалатын және координаттарды бақылау үшін қозғалтқышқа деректерді жібере алатын минималды есептеу бірлігі. Әрбір сүйек CPU өңдеу үшін деректерді қосады: сүйектер неғұрлым көп болса, соғұрлым көп деректер массивімен жұмыс істеу керек.

8-терілер

Мұқабалар пайдаланылған аттачмент жиынтығының визуалды дисплейі болып табылады. Қозғалтқыш жағында олар аттракциондар мен сүйектерді, сондай-ақ олардың қасиеттерін ауыстыру үшін маркерлер қосады.

9-слоттар

Слоттар-аттачменттерді сақтауға арналған контейнерлер. Слоттар сүйексіз қозғала алмайтындықтан, олар ең аз ресурстарды қажет етеді. Негізгі жүктеме GPU-ға түседі, өйткені кеңістікте қозғалуға арналған уақыт сызықтары жасалмайды.

Анимацияны экспорттамас бұрын, барлық артық және пайдаланылмаған элементтердің (сүйектер, слоттар, аттачменттер, фондық файлдар, қосымша пайдаланылмаған анимациялар) Spine жобасынан және кескін қалтасынан жойылғанына көз жеткізу керек.

Жасалған Атластың мөлшері екіге еселік болуы керек. Егер анимация мобильді құрылғыларда пайдалану үшін жасалса, оның өлшемі ұзын жағында 2048 пиксельден аспауы керек. Бұл шектеу Apple құрылғыларында ұзын жағында 2048 пиксельден астам кескіндерді көрсете алмауымен байланысты.

Экспортталғаннан кейін жиі кездесетін графикалық мәселелердің бірі-PNG кескіндерінің айналасындағы артефактілер, мысалы, қара соққылар және мөлдір пиксельдері бар ақ жарқылдар.

Мұның себебі жобадағы Альфа материалының режимдері мен экспортталған анимацияның сәйкес келмеуінде жатыр. Альфаның жұмыс режиміне Premultiply alpha және Bleed параметрлері жауап береді. Экспорттау кезінде опция ойын қозғалтқышындағы жоба параметрлеріне байланысты таңдалуы керек.

Экспорттау кезінде графикалық артефактілердің тағы бір түрі — кескінді кесудің өткір сызықтары. Мұның себебі суреттерде шегіністердің болмауы болуы мүмкін. Бұл X және Y осьтеріндегі шегіністерді ұлғайту арқылы түзетіледі.

Анимацияның дұрыс көрсетілмеуі анимацияны тазарту мүмкіндігінен туындауы мүмкін. Бұл мүмкіндік анимацияның артық кілттерін автоматты түрде жояды, бұл анимацияны айтарлықтай оңтайландырады. Алайда, кейде бұл Аттракциондардың дұрыс көрсетілмеуіне немесе сүйектердің дұрыс орналаспауына әкелуі мүмкін. Бұл анимацияны ауыстырған кезде сүйек күйінің тұқым қуалауына байланысты. Күй мұрагері ойын қозғалтқышында реттеледі және бұл мәселе әрқашан әзірлеушімен талқылануы керек.

Анимацияны құру кезінде оңтайландыру басты мақсат болмауы керек, өйткені анимациялардың көркемдік экспрессивтілігі басқаша зардап шегеді және біз өзімізді қолданылатын құралдармен шектей бастаймыз. Тиісті себептерсіз ештеңені оңтайландырудың қажеті жоқ, әйтпесе бұл уақытты ысырап етеді. Мәселеге ақылмен қарау керек және алдын-ала шекті мәндерді анықтау керек. Егер рұқсат етілген мәндерден асып кетсе және нақты өнімділік проблемалары болса, оңтайландыруға күш жұмсау керек. Кейде тіпті эффектілері бар өте ауыр анимациялар жақсы көрінеді және сахнада одан басқа ештеңе болмаса, өнімділікке әсер етпейді.

Сондықтан, біз нақты өнімділік проблемалары бар соңғы кезеңде оңтайландыруды бастауға кеңес береміз, қолданылатын құралдарға балама тауып, элементтерді азайту арқылы өнімділікті арттырамыз.

Артықты жою-оңтайландырудың негізгі әдісі. Көбінесе Ригада біз Риганың ұтқырлығы мен үлкен мүмкіндіктерін арттыру үшін күрделі құрылымдар жасаймыз. Қажетті анимацияларды жасағаннан кейін, біз ригтің барлық мүмкіндіктерін пайдалана алмауымыз мүмкін. Бұл жағдайда өнімділікті арттыру үшін ригті жеңілдетіңіз.

  • Жалған қосу режимі

Кейде кескіндерді араластыру режимдерін пайдалану мүмкіндігі шектеулі және балама нұсқаларды табуға тура келеді. Мұндай жағдайларда эффектілер пісірілген қосымша аттачменттерді пайдалану көмектеседі. Әдіс additive эффектісі негізгі объектінің шекарасынан шықпаған кезде қолданылады. Ол үшін setup режимінде қажетті аттачменттерге қабаттасу әсері қолданылады және PNG ретінде экспортталады. Кейін additive режимі бар аттачменттер бұрын алынған суреттермен ауыстырылады, бірақ қалыпты режимде.

  • Артық тор нүктелерін жою

Торлы Ригада қисықтардың тегістігін және графикамен жұмыс істеу кезінде үлкен мүмкіндіктерді арттыру үшін нүктелер жиі жасалады. Бірақ анимациядан кейін тор оңайырақ болуы мүмкін екен. Егер біз кез-келген нүктені алып тастасақ, визуалды түрде ешқандай айырмашылық жоқ. Артық нүктелерді жою анимацияның жұмысына оң әсер етеді.

  • Анимациядағы аттачменттерді өшіру

Аттачментті жасыру және оны мөлдірлікке апару қажет болған жағдайда, тек мөлдір қалдырмай, бұл аттчментті әрқашан өшіру керек. Бұл жадты босатуға және GPU-дағы жүктемені азайтуға мүмкіндік береді, өйткені тіпті мөлдірлікке енгізілген аттачмент рендерингті есептеуге қатысады және әр сурет сұрауында өңделеді.

  • Кадрларды қысқарту

Анимациядағы секвенцияларды қолдана отырып, көбінесе жоғары секвенция мен төмен кадр арасындағы айырмашылық мобильді құрылғыларда аз байқалады. Сондықтан секвенцияның артық кадрларын алып тастау атласты азайтып қана қоймай, өнімділікті арттырады. Анимацияның тегіс болуы үшін секвенция кадрларын тормен бұрмалауға немесе кәдімгі контейнер ретінде секвенциядан шығаруға және сүйектермен анимациялауға болады — оларды үлкейту, жылжыту және еңкейту.

  • Фондық графика мен эффектілердің өлшемін азайту

Қатты фондық кескіндерді және бұлыңғыр жиектері бар кескіндерді (бұлттар, жарқылдар, жарық сәулелері, көлеңкелер және т.б.) екі немесе одан да көп есе азайтуға болады, олардың өлшемін spine-дегі скейлмен қалпына келтіруге болады. Бұл Атластың көлемін азайтуға және жедел жады мен сақталған құрылыс графикасының көлемін босатуға мүмкіндік береді.

  • Экспорттау форматын таңдау

Жобаны қалыптастыру кезеңінде экспортталатын анимация форматына артықшылық екілік форматқа берілуі керек .skel. Форматтан айырмашылығы .json оның көлемі аз және қозғалтқыш тезірек оқиды. Әрбір анимация кілті-объектілердің орналасуы мен қасиеттерін анықтайтын сандар жиынтығы. Екілік жүйедегі бір Сан-бұл 4 байт ақпарат .json форматы-8-9 байт. Анимация кезінде осы мәндерге бірнеше рет жүгінген кезде айырмашылық айтарлықтай болуы мүмкін.

Әзірлеушілермен және суретшілермен қарым-қатынас жасау, сондай-ақ барлық мүмкін шектеулер мен талаптарды анықтау сапалы анимацияларды құруда шешуші рөл атқарады. Командамен тығыз қарым-қатынас ықтимал мәселелер мен талаптарды алдын-ала анықтауға көмектеседі, бұл көптеген қателіктерден аулақ болуға және жұмыс уақытының едәуір мөлшерін үнемдеуге мүмкіндік береді. Жұмыстың осы маңызды аспектісін назардан тыс қалдырмаңыз және сіздің жобаларыңыз сәтті және тиімді болады.

G5 компаниясы жаңа жобаларды кеңейтуге және құруға ұмтылады. Біз әрқашан жаңа суретшілерді іздейміз. Егер сіз дамып келе жатқан ойын саласында өзіңізді сынап көргіңіз келсе, бізге қосылыңыз!

Пікірлер 3

Кіру пікір қалдыру үшін

Кто бы знал, что есть такие нюансы 😱

Жауап беру