Кіріспе
Физикалық жүйелерді шамамен модельдеуге арналған бағдарламалық жасақтама
Физикалық қозғалтқыш – белгілі бір физикалық жүйелердің, мысалы, қатаң дене динамикасының (соқтығысуды анықтауды қоса алғанда), икемді дене динамикасының және сұйық динамикасының шамамен модельдеуін қамтамасыз ететін компьютерлік бағдарламалық жасақтама. Ол компьютерлік графика, бейне ойындар және фильмдер (CGI) салаларында қолданылады. Олардың негізгі қолданысы – бейне ойындарда (әдетте делдалдық бағдарлама ретінде), онда модельдеу нақты уақыт режимінде жүзеге асырылады. Бұл термин кейде физикалық құбылыстарды модельдеуге арналған кез келген бағдарламалық жүйені, мысалы, жоғары өнімді ғылыми модельдеуді сипаттау үшін де қолданылады.
Сипаттама
Жалпы физикалық қозғалтқыштардың екі түрі бар: нақты уақыт режимінде жұмыс ілеуші және жоғары дәлдікті. Жоғары дәлдікті физикалық қозғалтқыштар өте нақты физиканы есептеу үшін көп процессорлық қуатты қажет етеді және көбінесе ғалымдар мен компьютерлік анимациялық фильмдерде қолданылады. Видео ойындарда және басқа да интерактивті есептеу түрлерінде қолданылатын нақты уақыт физикалық қозғалтқыштар, ойынның қалыпты жылдамдықпен әрекет етуі үшін есептеулерді жылдамдату үшін қарапайым формулаларды және төмен дәлдікті пайдаланады. Физикалық қозғалтқыш – физикалық процестерді модельдеуге қажетті математикалық есептерді орындайтын үлкен калькулятор.
Ғылыми қозғалтқыштар
ENIAC алғашқы жалпы мақсаттағы компьютерлердің бірі физикалық қозғалтқыштың қарапайым түрі ретінде қолданылды. Ол АҚШ әскери күштеріне артиллериялық оқ-дәрілердің әртүрлі массадағы түрлерінің, әртүрлі бұрыштарда атылғанда және оқ-дәрі мөлшеріне байланысты қай жерге түсетінін болжауға көмектесетін баллистикалық кестелерді жасау үшін пайдаланылды, сондай-ақ желдің салдарынан болатын ауытқуды да ескеретін болды. Нәтижелер бір рет есептеліп, артиллерия командирлеріне таратылатын басылған кестелерге түсірілді. 1980-жылдардан бері физикалық қозғалтқыштар суперкомпьютерлерде есептеу гидродинамикасының модельдеуін жүргізу үшін кеңінен қолданылып келеді, онда бөлшектерге айналымды көрсету үшін біріктірілетін күш векторлары беріледі. Жылдамдық пен жоғары дәлдік талаптарына байланысты, есептеулерді үдету үшін векторлық процессорлар деп аталатын арнайы компьютерлік процессорлар жасалды. Бұл техникалар ауа райын болжаудағы ауа райы үлгілерін, әуе және су кемелерін немесе автокөліктерді, соның ішінде жарыс машиналарын жобалау үшін жел сынақтарының деректерін, сондай-ақ компьютер процессорларын салқындату арқылы жылуды таратуды жақсарту үшін қолданылуы мүмкін. Компьютердегі көптеген есептеу процестеріндей, модельдеудің дәлдігі модельдеудің ажыратымдылығына және есептеулердің дәлдігіне байланысты; модельдемеде ескерілмеген шағын ауытқулар болжамды нәтижелерді күрт өзгерте алады. Шина өндірушілері физикалық модельдеуді пайдаланып, жаңа шина протекторларының ылғал және құрғақ жағдайларда, әртүрлі икемділікке ие және әртүрлі салмақпен жүктелген жаңа шина материалдарын пайдалана отырып, қалай жұмыс істейтінін зерттейді.
Ойын қозғалтқыштары
Көптеген компьютерлік ойындарда процессорлардың жылдамдығы мен ойын процесінің өнімділігі, симуляцияның дәлдігінен маңыздырақ. Бұл физикалық қозғалтқыштардың дизайнына әкеледі, олар нәтижелерді нақты уақытта шығарады, бірақ шын дүниедегі физиканы тек қарапайым жағдайларда және көбінесе шамамен ғана қайталайды. Көбінесе симуляция нақты симуляция емес, "көзге көрінетін дұрыс" жуықтауды қамтамасыз етуге бағытталған. Дегенмен, Source сияқты кейбір ойын қозғалтқыштары физиканы жұмбақтарда немесе ұрыс жағдайларында пайдаланады. Бұл үшін физиканың жоғары дәлдігі қажет, мысалы, дененің импульсі кедергіні құлатуы немесе батып бара жатқан денені көтеруі мүмкін. Бұрын физикалық негіздегі кейіпкерлер анимациясында тек қатаң дене динамикасы қолданылатын, себебі олар жылдам және есептеуге оңай, бірақ қазіргі заманғы ойындар мен фильмдер жұмсақ дене физикасын қолдана бастады. Жұмсақ дене физикасы бөлшектер, сұйықтықтар және маталар үшін де қолданылады. Су және басқа сұйықтықтарды, сондай-ақ ауадағы өрт пен жарылыстардың ағынын симуляциялау үшін кейде шектеулі сұйықтық динамикасының симуляциясы қолданылады.
Бәсекелестік анықтауы
Ойындағы объектілер ойыншымен, қоршаған ортамен және бір-бірімен өзара әрекеттеседі. Әдетте, ойындардағы 3D объектілердің көпшілігі екі бөлек тор немесе пішінмен бейнеленеді. Осы торлардың бірі – ойыншыға өте күрделі және егжей-тегжейлі көрінетін пішін, мысалы, иілгіш, икемді және бұралып тұратын тұтқалары бар ваза. Жылдамдық үшін, физикалық қозғалтқышқа объектіні көрсету үшін екінші, қарапайым, көрінбейтін тор қолданылады, сонда физикалық қозғалтқыш мысал вазаны қарапайым цилиндр ретінде қарастырады. Осылайша, вазаның тұтқа тесіктері арқылы таяқты немесе оқты өткізу мүмкін болмайды, себебі физикалық қозғалтқыш моделі цилиндрге негізделген және тұтқалар туралы хабардар емес. Физикалық өңдеу үшін қолданылатын қарапайым торды жиі соқтығысу геометриясы деп атайды. Бұл шектеулі қорап, шар немесе дөңгелек пішінде болуы мүмкін. Соқтығысуды анықтау үшін соңғы пішін ретінде шектеулі қораптарды немесе шектеулі шарларды пайдаланатын қозғалтқыштар өте қарапайым саналады. Әдетте, кең фазалық соқтығысуды анықтау үшін, қымбат mesh-on-mesh соқтығысуды анықтау жасалмас бұрын, ықтимал соқтығысулардың санын азайту үшін шектеулі қорап қолданылады. Дискретті соқтығысуды анықтаудың дәлдігінің тағы бір аспектісі – кадр жиілігі, яғни физика есептелген кезде секундына уақыт сәттерінің саны. Әрбір кадр басқа кадрлардан бөлек қарастырылады және кадрлар арасындағы аралық есептелмейді. Төмен кадр жиілігі және кішкентай, жылдам қозғалатын объекті нысанның кеңістікте тегіс қозғалмай, әрбір кадр есептелгенде бір нүктеден екінші нүктеге телепорттайтын сияқты әсер тудырады. Жетілді жылдамдықпен қозғалатын снарядтар нысананы өткізіп жіберуі мүмкін, егер нысана жылдам қозғалатын снарядтың есептелген кадрлары арасындағы саңылауға сыятын кішкентай болса. Бұл кемшілікті жою үшін әр түрлі техникалар қолданылады, мысалы, Second Life проектилдерін фреймдердегі бос орыннан ұзын, көрінбейтін құйрықтары бар жебелер ретінде бейнелейді, олар есептелген фреймдердің арасында орналасатын кез келген нысанмен соқтығысады. Ал, Bullet немесе Havok сияқты үздіксіз соқтығысуды анықтау бұл проблемаға ұшырамайды.
Жұмсақ дене динамикасы
Шектеулі қорапқа негізделген қатты дене физикасы жүйелеріне альтернатива – шекті элементтерге негізделген жүйені пайдалану. Мұндай жүйеде 3D нысанның үш өлшемді көлемдік торлануы жасалады. Торлану нәтижесінде объектінің физикалық қасиеттерінің – мықтылығы, пластикалық деформацияға бейімділігі және көлемді сақтау сияқты аспектілерін көрсететін бірнеше шекті элементтер пайда болады. Құрылғаннан кейін, шекті элементтер 3D нысан ішіндегі кернеуді модельдеу үшін шешушіге (solver) қолданылады. Кернеуді сындыру, деформация және басқа да физикалық эффектілерді жоғары дәрежеде реализммен және ерекшелікпен жүзеге асыру үшін пайдалануға болады. Модельделген элементтердің саны артқан сайын, ойын қозғалтқышының физикалық мінез-құлқын модельдеу қабілеті де артады. 3D нысанның визуальды бейнесі шекті элемент жүйесі арқылы өзгертіледі, бұл үшін CPU немесе GPU-да іске қосылатын деформациялық шейдер қолданылады. Бұрын шекті элементтерге негізделген жүйелердің ойындарда қолданылуы тиімсіз болды, себебі олардың жұмыс істеу жылдамдығы төмен еді және 3D графикалық объектілерден шекті элементтерді жасауға қажетті құралдар жетіспеді. Бірақ, жоғары өнімді процессорлар мен көлемдік торлануды жылдам жасауға мүмкіндік беретін құралдардың пайда болуымен, ойындарда нақты уақыт шекті элемент жүйелерін қолдану мүмкін болды. Мысалы, "Жұлдызды соғыстар: Күшті ояту" ойыны ағаш, болат, ет және өсімдіктердің деформациясы мен жойылу эффектілері үшін доктор Джеймс О'Брайеннің докторлық диссертациясының бөлігі ретінде әзірлеген алгоритмді пайдаланып, Цифрлық Молекулалық Материяны қолданды.
Браун қозғалысы
Нағыз әлемде физика әрқашан активті. Әлемдегі барлық бөлшектердің үнемі Браундық қозғалыс дірілі бар, себебі күштер бір-біріне қарсы алға-артқа итеріледі. Ойын физикасы қозғалтқышы үшін мұндай тұрақты активті дәлдік шектеулі CPU қуатын қажетсіз кетіреді, бұл кадр жылдамдығының төмендеуі сияқты проблемаларға әкелуі мүмкін. Сондықтан, ойындар белгілі бір уақыт ішінде белгілі бір қашықтыққа жылмаған объектілер үшін физикалық есептеулерді тоқтату арқылы объектілерді "ұйықтату" режиміне қоюы мүмкін. Мысалы, 3D виртуалды әлем Second Life-та, егер объект еденде тұрса және екі секунд ішінде минималды қашықтықтан жылмаса, онда оның физикалық есептеулері тоқтатылып, ол орнында қатып қалады. Объект басқа активті физикалық объектімен соқтығысқаннан кейін физикалық өңдеу қайта іске қосылғанға дейін қатып қалады.
Парадигмалар
Видеоойындар үшін физикалық қозғалтқыштарда әдетте екі негізгі компонент болады: соқтығысуды анықтау/соқтығысуға жауап беру жүйесі және симуляцияланған объектілерге әсер ететін күштерді шешуге жауапты динамикалық симуляция компоненті. Қазіргі заманғы физикалық қозғалтқыштар сұйықтықтарды модельдеу, анимацияны басқару жүйелері және активтерді интеграциялау құралдарын да қамтуы мүмкін. Қатты денелерді физикалық симуляциялаудың үш негізгі тәсілі бар:
Жазалау әдістері, онда өзара әрекеттесулер көбінесе масса-серіппе жүйелері арқылы модельделеді. Бұл типтегі қозғалтқыш деформацияланатын, немесе жұмсақ дене физикасы үшін танымал. Шектеулерге негізделген әдістер, онда физикалық заңдарды бағалайтын шектеу теңдеулері шешіледі. Импульске негізделген әдістер, онда импульстер объектілердің өзара әрекеттесуіне қолданылады. Соңында, жоғарыда аталған тәсілдердің элементтерін біріктіретін гибридтік әдістер де мүмкін.
Penalty methods, where interactions are commonly modelled as mass spring systems. This type of engine is popular for deformable, or soft body physics. Constraint based methods, where constraint equations are solved that estimate physical laws. Impulse based methods, where impulses are applied to object interactions. Finally, hybrid methods are possible that combine aspects of the above paradigms.
Шектеулер
Физикалық қозғалтқыштың негізгі шектемесі – алгоритмдердің баяу конвергенциясына байланысты шектеулерді шешудің және соқтығысу нәтижесінің шамамен алынуы. Өте төмен жиілікте есептелген соқтығысуды анықтау, объектілердің бірін-бірі тесіп өтуіне және содан кейін аномальды түзету күшімен кері итерілуіне алып келуі мүмкін. Екінші жағынан, реакция күшінің шамамен алынған нәтижелері, әдеттегі Projected Gauss-Seidel шешіміндегі баяу конвергенция салдарынан аномальды секіруге себеп болады. Кез келген еркін қозғалатын күрделі физикалық объект мұндай мәселені көрсетуі мүмкін, бірақ бұл, әсіресе жоғары кернеудегі тізбек буындарына және белсенді физикалық мойынтірек беттері бар дөңгелекті объектілерге қатысты маңыздырақ. Жоғары дәлдік позициялық/күш қателіктерін азайтады, бірақ есептеулер үшін күшті процессор қажет.
Физикалық өңдеу бірлігі (ФББ)
Физикалық өңдеу блогы (ФПБ) — физикалық есептеулерді, әсіресе бейнеойындардың физикалық қозғалтқыштарындағы есептеулерді жүзеге асыруға арналған арнайы микропроцессор. ФПБ-ға қатысты есептеулердің мысалдары: қатаң дене динамикасы, жұмсақ дене динамикасы, соқтығысуды анықтау, сұйықтық динамикасы, шаш пен киімді модельдеу, шекті элементтерді талдау және нысандарды қирату. Мақсаты – арнайы процессорлар компьютердің CPU-ынан көп уақыт алатын міндеттерді босату, GPU негізгі CPU орнына графикалық операцияларды орындауы сияқты. Бұл термин Ageia компаниясы PhysX чипін тұтынушыларға түсіндіру үшін ойлап тапқан. CPU-GPU спектріндегі басқа да технологиялардың кейбір мүмкіндіктері осыған ұқсас, бірақ Ageia шешімі ғана толыққанды жобаланып, сатылып, қолдау көрсетіліп, жүйеге тек ФПБ ретінде орналастырылған.
Графикалық өңдеу блогында жалпы мақсаттағы есептеулер (GPGPU)
Физикалық өңдеуге арналған аппараттық үдету әдетте графикалық процессорлармен (GPU) қамтамасыз етіледі, олар жалпы есептеулерді қолдайды, бұл тұжырымдама графикалық процессорлардағы жалпы мақсаттағы есептеу (GPGPU) деп аталады. AMD және NVIDIA өздерінің соңғы графикалық карталарында қатаң дене динамикасын есептеуді қолдайды. NVIDIA GeForce 8 сериясы GPU негізіндегі Ньютон физикасын үдету технологиясын, Quantum Effects Technology деп аталатын технологияны қолдайды. NVIDIA, GPU-ға төмен және жоғары деңгейдегі API ұсынатын CUDA (Compute Unified Device Architecture) технологиясы үшін SDK Toolkit ұсынады. AMD өздерінің GPU-лары үшін Close to Metal (CTM) деп аталатын ұқсас SDK ұсынады, ол аппараттық интерфейстің жұқа қабатын қамтамасыз етеді. PhysX – GPGPU негізіндегі аппараттық үдету қолжетімді болғанда оны пайдалана алатын физикалық қозғалтқыштың мысалы.