అధునాతన ఫిజిక్స్ సాల్వర్తో సిమ్యులేషన్ మరియు పనితీరును మెరుగుపరచడం


2016లో, మేము విభిన్నమైన కొత్త ఫిజిక్స్ కన్స్ట్రెయింట్లకు మద్దతును జోడించాము, ఇది డెవలపర్లను కొత్త సాల్వర్కు మారడానికి ప్రోత్సహించింది మరియు ఫిజిక్స్ ఇంజిన్ యొక్క సృజనాత్మక సామర్థ్యాలను విస్తరించింది. ఏ కొత్త ప్రదేశాలైనా డిఫాల్ట్గా PGS సాల్వర్ను ఉపయోగించాయి, క్లాసిక్ సాల్వర్కు తిరిగి వెళ్లే ఎంపికతో.
2018 మధ్యలో హైబ్రిడ్ LDL-PGS సాల్వర్ను పరిచయం చేయడం ద్వారా, అధిక ద్రవ్యరాశి వ్యత్యాసాలు మరియు సంక్లిష్టమైన యంత్రాంగాలకు సంబంధించిన కొన్ని స్థిరత్వ సమస్యలను మేము పరిష్కరించాము. ఇది పాత సాల్వర్ను నిరుపయోగం చేసింది, మరియు 2019లో దానిని పూర్తిగా నిలిపివేసి, అన్ని ప్లేస్లను ఆటోమేటిక్గా PGSకు వలస చేయించారు.
2019లో, సిమ్యులేషన్ను అనుసంధానించబడిన భాగాల ద్వీపాలతో కూడిన జాబ్లుగా విభజించే మల్టీ-థ్రెడింగ్ను ఉపయోగించి పనితీరును మరింత మెరుగుపరిచాము. LDLకి సంబంధించిన పనితీరు సమస్యలు మాకు ఇంకా ఉన్నాయి, వాటిని మేము చివరకు 2020 ప్రారంభంలో పరిష్కరించాము.
ఫిజిక్స్ ఇంజిన్ను పనితీరు కోసం ఇప్పటికీ మెరుగుపరుస్తూ, ఆప్టిమైజ్ చేస్తూనే ఉన్నారు, మరియు సమీప భవిష్యత్తులో కొత్త ఫీచర్లను జోడించాలని మేము ప్లాన్ చేస్తున్నాము.
భౌతిక శాస్త్ర నియమాలను అమలు చేయడం

ఒక ఫిజిక్స్ ఇంజిన్ యొక్క ప్రధాన లక్ష్యం ఒక వర్చువల్ వాతావరణంలో వస్తువుల కదలికను అనుకరించడం. మా ఫిజిక్స్ ఇంజిన్లో, మేము ఒకదానికొకటి ఢీకొనే, గట్టిగా ఉండే మరియు ఒకదానికొకటి పరిమితులు (constraints) కలిగి ఉండే వస్తువుల గురించి శ్రద్ధ తీసుకుంటాము.
ఫిజిక్స్ ఇంజిన్ రెండు దశలుగా నిర్వహించబడుతుంది: ఘర్షణ గుర్తింపు మరియు పరిష్కారం. ఘర్షణ గుర్తింపు, కఠినమైన వస్తువులతో అనుబంధించబడిన జ్యామితుల మధ్య అడ్డగింతలను కనుగొని, ఘర్షణ స్థానాలు, నార్మల్స్ మరియు చొచ్చుకుపోయే లోతుల వంటి తగిన ఘర్షణ సమాచారాన్ని ఉత్పత్తి చేస్తుంది. ఆ తర్వాత, ఒక సాల్వర్ గుర్తించబడిన ఘర్షణలు మరియు వినియోగదారు అందించిన పరిమితుల ప్రభావం కింద కఠినమైన వస్తువుల కదలికను నవీకరిస్తుంది.

ఈ చలనం, శక్తి మరియు ప్రమేయం పరిరక్షణ వంటి భౌతిక శాస్త్ర నియమాలను సాల్వర్ అన్వయించడం వల్ల ఏర్పడుతుంది. కానీ దీనిని 100% కచ్చితంగా చేయడం చాలా ఖరీదైనది, మరియు నిజ-సమయంలో దీనిని అనుకరించడానికి ఉన్న ఉపాయం ఏమిటంటే, ఫలితం భౌతికంగా వాస్తవికంగా ఉన్నంత వరకు, పనితీరును పెంచడానికి దానిని అంచనాగా ఉంచడం. ప్రాథమిక చలన నియమాలు సహేతుకమైన పరిధిలో పాటించబడినంత కాలం, కంప్యూటర్ గేమ్ అనుకరణకు ఈ రాజీ పూర్తిగా ఆమోదయోగ్యమైనది.
చిన్న చిన్న అడుగులు
ఫిజిక్స్ ఇంజిన్ యొక్క ప్రధాన ఆలోచన టైమ్-స్టెప్పింగ్ ఉపయోగించి కదలికను డిస్క్రీటైజ్ చేయడం. పరిమితం చేయబడిన మరియు పరిమితం చేయబడని గట్టి వస్తువుల కదలిక సమీకరణాలను నేరుగా మరియు కచ్చితంగా ఇంటిగ్రేట్ చేయడం చాలా కష్టం. డిస్క్రీటైజేషన్ కదలికను చిన్న సమయ విభాగాలుగా విభజిస్తుంది, ఇక్కడ సమీకరణాలు సరళీకృతం చేయబడి మరియు లీనియరైజ్ చేయబడతాయి, దీనివల్ల వాటిని సుమారుగా పరిష్కరించడం సాధ్యమవుతుంది. దీని అర్థం, ప్రతి టైమ్ స్టెప్లో, ఒక కన్స్ట్రైంట్లో పాల్గొనే గట్టి వస్తువుల సంబంధిత భాగాల కదలికను లీనియర్గా అప్రోక్సిమేట్ చేస్తారు.

లైనరైజ్డ్ సమస్యను పరిష్కరించడం సులభమే అయినప్పటికీ, భ్రమణ చలనం వంటి నాన్-లైనర్ ప్రవర్తనలు ఉన్న సిమ్యులేషన్లో ఇది డ్రిఫ్ట్ను కలిగిస్తుంది. తరువాత మనం డ్రిఫ్ట్ను తగ్గించి, సిమ్యులేషన్ను మరింత విశ్వసనీయంగా చేయడానికి సహాయపడే నివారణ పద్ధతులను చూద్దాం.
పరిష్కరించడం


ఈ యానిమేషన్, పునరావృతం ప్రక్రియలోని ప్రతి దశలో ఒక PGS సాల్వర్ శరీరాల స్థానాలను ఎలా మారుస్తుందో చూపిస్తుంది. ప్రతి దశలో ద్రవ్యరాశి కేంద్రాన్ని కాపాడుతూ, బాల్ మరియు సాకెట్ పరిమితులకు గౌరవం ఇచ్చే స్థానాలను కనుగొనడమే దీని లక్ష్యం (ఇది IK డ్రాగర్ ఉపయోగించే ఒక రకమైన పొజిషనల్ సాల్వర్). ఈ ఉదాహరణకు ఒక సులభమైన విశ్లేషణాత్మక పరిష్కారం ఉన్నప్పటికీ, ఇది PGS వెనుక ఉన్న ఆలోచనకు ఒక మంచి ప్రదర్శన. ప్రతి దశలో, సాల్వర్ ఒక పరిమితిని స్థిరపరుస్తుంది మరియు మరొకటి ఉల్లంఘించబడటానికి అనుమతిస్తుంది. కొన్ని పునరావృత్తుల తర్వాత, ద్రవ్యరాశులు వాటి సరైన స్థానాలకు చాలా దగ్గరగా వస్తాయి. ఈ పద్ధతి యొక్క ఒక లక్షణం ఏమిటంటే, కొన్ని దృఢమైన ద్రవ్యరాశులు వాటి చివరి స్థానం చుట్టూ కంపించేలా కనిపిస్తాయి, ముఖ్యంగా బరువైన ద్రవ్యరాశులతో సంకలన పరస్పర చర్యలు జరిగినప్పుడు. మనం తగినన్ని ఇటరేషన్లు చేయకపోతే, పసుపు భాగం దాని రెండు కట్టుబాట్లలో ఒకటి తీవ్రంగా ఉల్లంఘించబడిన, స్పష్టంగా చెల్లని స్థితిలో మిగిలిపోవచ్చు. దీనిని అధిక ద్రవ్యరాశి నిష్పత్తి సమస్య (high mass ratio problem) అని పిలుస్తారు, మరియు ఇది అస్థిరతలకు మరియు పేలుళ్లకు కారణమవుతుంది కాబట్టి ఫిజిక్స్ ఇంజిన్లకు ఇది ఒక పెద్ద తలనొప్పిగా ఉంది. మనం చాలా ఎక్కువ ఇటరేషన్లు చేస్తే, సాల్వర్ చాలా నెమ్మదిగా మారుతుంది, మనం చేయకపోతే అది అస్థిరంగా మారుతుంది. ఈ రెండింటినీ సమతుల్యం చేయడం ఒక బాధాకరమైన మరియు సుదీర్ఘమైన ప్రక్రియగా ఉంది.
నివారణ వ్యూహాలు
ఒక సాల్వర్లో అపరిశుద్ధికి రెండు ప్రధాన మూలాలు ఉన్నాయి: టైమ్-స్టెప్పింగ్ మరియు పునరావృత పరిష్కారం (ఫ్లోటింగ్ పాయింట్ డ్రిఫ్ట్ కూడా ఉంది కానీ మొదటి రెండింటితో పోలిస్తే ఇది చాలా చిన్నది). ఈ అపరిశుద్ధులు సిమ్యులేషన్లో లోపాలను కలిగిస్తాయి, దానిని సరైన మార్గం నుండి తప్పిపోయేలా చేస్తాయి. వీటిలో కొన్ని డ్రిఫ్ట్ సహించదగినవి, ఉదాహరణకు కొద్దిగా భిన్నమైన వేగాలు లేదా శక్తి నష్టం వంటివి, కానీ కొన్ని కావు, ఉదాహరణకు అస్థిరతలు, అధిక శక్తి లాభాలు లేదా స్థానభ్రంశం చెందిన కన్స్ట్రెయింట్లు వంటివి.

అందువల్ల, కంప్యూటేషనల్ అపరిపూర్ణతల ప్రభావాన్ని తగ్గించడానికి ఉద్దేశించిన పద్ధతుల అమలు నుండే సాల్వర్లోని చాలా సంక్లిష్టత వస్తుంది. మా తుది అమలులో కొన్ని సాంప్రదాయ మరియు కొన్ని నూతన ఉపశమన వ్యూహాలను ఉపయోగిస్తాము:
- వార్మ్ స్టార్టింగ్: ఇటరేటివ్ సాల్వర్ యొక్క కన్వర్జెన్స్ రేటును పెంచడానికి మునుపటి టైమ్-స్టెప్ నుండి వచ్చిన పరిష్కారంతో ప్రారంభించడం
- పోస్ట్-స్టెబిలైజేషన్: కన్స్ట్రెయింట్ డ్రిఫ్ట్ను నివారించడానికి సిస్టమ్ను తిరిగి కన్స్ట్రెయింట్ మ్యానిఫోల్డ్కు రీప్రొజెక్ట్ చేయడం
- రెగ్యులరైజేషన్: పరిష్కారం ఉందని మరియు అది ప్రత్యేకమైనదని నిర్ధారించేలా నిబంధనలకు కట్టుబడి ఉండటాన్ని జోడించడం
- ప్రీ-కండిషనింగ్: ఒక లీనియర్ సబ్సిస్టమ్కు కచ్చితమైన పరిష్కారాన్ని ఉపయోగించి, సంక్లిష్టమైన యంత్రాంగాల స్థిరత్వాన్ని మెరుగుపరచడం
1, 2 మరియు 3 వ్యూహాలు చాలా సాంప్రదాయకమైనవి, కానీ 3 ను మేము మెరుగుపరిచి, పరిపూర్ణం చేసాము. అలాగే, 4 అనేది కొత్తదేమీ కానప్పటికీ, దాని యొక్క ఆచరణాత్మక అమలును మేము చూడలేదు. మేము పెద్ద స్పార్స్ కన్స్ట్రైంట్ మాత్రికల కోసం ఒక అసలైన ఫ్యాక్టరైజేషన్ పద్ధతిని మరియు దానిని PGSతో కలపడానికి ఒక కొత్త సమర్థవంతమైన మార్గాన్ని ఉపయోగిస్తాము. ఫలితంగా వచ్చే అమలు స్వచ్ఛమైన PGSతో పోలిస్తే కొద్దిగా నెమ్మదిగా ఉంటుంది, కానీ సమానత్వ కన్స్ట్రైంట్ల నుండి వచ్చే లీనియర్ సిస్టమ్ ఖచ్చితంగా పరిష్కరించబడిందని ఇది నిర్ధారిస్తుంది. తదనంతరం, సమానత్వ కన్స్ట్రైంట్లు కేవలం టైమ్ డిస్క్రిటైజేషన్ నుండి వచ్చే డ్రిఫ్ట్ వల్ల మాత్రమే ప్రభావితమవుతాయి. మా పద్ధతుల గురించిన వివరాలు నా GDC 2020 ప్రెజెంటేషన్లో ఉన్నాయి. ప్రస్తుతం, మేము అసమానత్వ కన్స్ట్రైంట్లు మరియు కొలిజన్లకు వర్తించే డైరెక్ట్ పద్ధతులను పరిశోధిస్తున్నాము.
మరిన్ని వివరాలు పొందండి
సాంప్రదాయకంగా కదిలే కీళ్ళతో కూడిన యంత్రాంగాలకు రెండు గణిత నమూనాలు ఉన్నాయి: ఒకటి ఫెదర్స్టోన్ నేతృత్వంలోని తగ్గించిన కోఆర్డినేట్ పద్ధతులు, ఇవి ప్రతి కీలు వద్ద స్వేచ్ఛా కోణాలను పరామితికరించాయి, మరియు రెండవది లాగ్రాజియన్ రూపకల్పనను ఉపయోగించే పూర్తి కోఆర్డినేట్ పద్ధతులు.
మేము రెండవ ఫార్ములేషన్ను ఉపయోగిస్తాము, ఎందుకంటే ఇది తక్కువ నిర్బంధమైనది మరియు చాలా సరళమైన గణితం మరియు అమలును అవసరం చేస్తుంది.
గతంలో ఉపయోగించిన పెనాల్టీ పద్ధతులకు భిన్నంగా, రాబ్లాక్స్ ఇంజిన్ కన్స్ట్రైంట్ల డైనమిక్ ప్రతిస్పందనను లెక్కించడానికి అనలిటికల్ పద్ధతులను ఉపయోగిస్తుంది. అనలిటిక్స్ పద్ధతులు మొదట బరాఫ్ 1989లో పరిచయం చేయబడ్డాయి, ఇక్కడ అవి సమానత్వం మరియు అసమానత్వం రెండింటినీ స్థిరమైన పద్ధతిలో పరిష్కరించడానికి ఉపయోగించబడతాయి. కాంటాక్ట్ మోడల్ను క్వాడ్రాటిక్ ప్రోగ్రామింగ్ ఉపయోగించి రూపొందించవచ్చని బరాఫ్ గమనించారు, మరియు అతను ఒక హ్యూరిస్టిక్ పరిష్కార పద్ధతిని అందించారు (ఇది మా సాల్వర్లో మేము ఉపయోగించే పద్ధతి కాదు).
ఫోర్స్-ఆధారిత ఫార్ములేషన్ను ఉపయోగించడానికి బదులుగా, మేము వెలాసిటీ స్పేస్లో ఇంపల్స్-ఆధారిత ఫార్ములేషన్ను ఉపయోగిస్తాము, దీనిని మొదట మిర్టిచ్-కానీ 1995లో పరిచయం చేశారు మరియు స్టీవర్ట్-ట్రింకిల్ 1996లో మరింత మెరుగుపరిచారు. ఇది వివిధ రకాల కాంటాక్ట్ల నిర్వహణను ఏకీకృతం చేస్తుంది మరియు రాపిడి ఉన్న కాంటాక్ట్లకు ఒక పరిష్కారం ఉండేలా హామీ ఇస్తుంది. ప్రతి టైమ్స్టెప్లో, కన్స్ట్రెయింట్ ఇంపల్సెస్ కారణంగా వేగాలలో తక్షణ మార్పులను వర్తింపజేయడం ద్వారా కన్స్ట్రెయింట్లు మరియు ఘర్షణలు నిర్వహించబడతాయి. ఇంపల్స్-ఆధారిత సిమ్యులేషన్ ఎందుకు శ్రేష్ఠమైనదో అనే దానిపై ఒక అద్భుతమైన వివరణ కాట్టో 2014 యొక్క GDC ప్రెజెంటేషన్లో ఉంది.
బరాఫ్ 1994లో వివరించిన విధంగా, ఘర్షణరహిత సంబంధాలను ఒక లీనియర్ కాంప్లిమెంటారిటీ ప్రాబ్లమ్ (LCP) ఉపయోగించి మోడల్ చేస్తారు. ప్రాజెక్టెడ్ గాస్-సైడెల్ యొక్క పునరావృత్తులతో కలిపి, ఫ్రిక్షన్ కోన్ పైకి ఒక నాన్-లీనియర్ ప్రొజెక్షన్గా ఘర్షణను జోడిస్తారు.
నియమాలలో స్థానాत्मक లోపాలను పరిచయం చేసే సంఖ్యాపరమైన డ్రిఫ్ట్ను, క్లైన్-పై 2003 పరిచయం చేసిన స్యూడో-వెలాసిటీలను ఉపయోగించి పోస్ట్-స్థిరీకరణ పద్ధతితో పరిష్కరిస్తారు. ఇందులో భాగంగా, సిస్టమ్ను తిరిగి కన్స్ట్రెయింట్ మ్యానిఫోల్డ్కు ప్రొజెక్ట్ చేసే పొజిషన్ స్పేస్లో రెండవ LCPని పరిష్కరించడం జరుగుతుంది.
LCPలను కాట్టో 2005 (కాట్టో 2009 కూడా చూడండి) ద్వారా ప్రాచుర్యం పొందిన PGS / ఇంపల్స్ సాల్వర్ను ఉపయోగించి పరిష్కరిస్తారు. ఈ పద్ధతి పునరావృతమయ్యేది మరియు ప్రతి ఒక్క కట్టుబాటును వరుసగా పరిగణించి, దానిని స్వతంత్రంగా పరిష్కరిస్తుంది. అనేక పునరావృత్తులలో, మరియు ఆదర్శవంతమైన పరిస్థితులలో, సిస్టమ్ ఒక గ్లోబల్ పరిష్కారానికి చేరుకుంటుంది.
అదనంగా, సమానత్వ నిబంధనలలోని అధిక ద్రవ్యరాశి నిష్పత్తి సమస్యలను, సమానత్వ నిబంధనల కాంట్రైంట్ మాత్రిక యొక్క స్పార్స్ LDL విచ్ఛిన్నం ఉపయోగించి PGSను ప్రీకండిషనింగ్ చేయడం ద్వారా పరిష్కరిస్తారు. కాంట్రైంట్ మాత్రిక యొక్క డెన్స్ సబ్మాత్రికాలను మేము బాడీ స్ప్లిటింగ్ అని పిలిచే పద్ధతిని ఉపయోగించి స్పార్సిఫై చేస్తారు. ఇది బరాఫ్ 1996లో ఉపయోగించిన LDL విచ్ఛిన్నం వలె ఉంటుంది, కానీ ఇది మరింత సాధారణ యాంత్రిక వ్యవస్థలకు అనుమతిస్తుంది మరియు కాంట్రైంట్ స్పేస్లో సిస్టమ్ను పరిష్కరిస్తుంది. మరింత సమాచారం కోసం, మీరు నా GDC 2020 ప్రెజెంటేషన్ను చూడవచ్చు.
మా సాల్వర్ యొక్క నిర్మాణం గుండెల్మాన్-బ్రిడ్సన్-ఫెడ్కివ్ ఆలోచనను అనుసరిస్తుంది, ఇక్కడ వేగం మరియు స్థానపు స్టెప్పింగ్లు కన్స్ట్రెయింట్ రిజల్యూషన్ ద్వారా వేరు చేయబడతాయి. మా సమయ క్రమబద్ధీకరణ:
- ముందుకు సాగే వేగాలు
- వెలాసిటీ స్పేస్ మరియు పొజిషన్ స్పేస్లో కన్స్ట్రెయింట్ రిజల్యూషన్
- ముందుకు సాగే స్థానాలు
ఈ పథకం యొక్క ప్రయోజనం ఏమిటంటే, ఇది చెల్లుబాటు అయ్యే వేగాలను మాత్రమే ఏకీకృతం చేస్తుంది, మరియు బాహ్య బల ప్రయోగంలో ఆలస్యాన్ని పరిమితం చేస్తుంది, కానీ సంఖ్యాపరమైన వైకల్యం కారణంగా కొద్ది మొత్తంలో గ్రహించబడిన నిబంధన ఉల్లంఘనకు అనుమతిస్తుంది.
రిజిడ్ బాడీ సిమ్యులేషన్ కోసం ఒక అద్భుతమైన రిఫరెన్స్, ఇటీవల ఉచితంగా అందుబాటులోకి వచ్చిన ఎర్లెబెన్ 2005 అనే పుస్తకం. మీరు ఫిజిక్స్-ఆధారిత యానిమేషన్ గురించి ఆన్లైన్ లెక్చర్లను, ఫిజిక్స్ ఇంజిన్ను నిర్మించడంపై నిల్సన్ సౌటో రాసిన బ్లాగ్ను, ఆధునిక సాల్వర్ పద్ధతులపై ఎరిన్ కాట్టో చేసిన చాలా మంచి GDC ప్రెజెంటేషన్ను, మరియు ప్రశ్నలు అడగడానికి అద్భుతమైన ప్రదేశాలైన బుల్లెట్ ఫిజిక్స్ ఫోరమ్ మరియు గేమ్డెవ్ వంటి ఫోరమ్లను కనుగొనవచ్చు.
ముగింపులో
గేమ్ ఫిజిక్స్ సిమ్యులేషన్ రంగం ఉత్తేజకరమైన మరియు సవాలుతో కూడిన అనేక ఆసక్తికరమైన సమస్యలను అందిస్తుంది. గొప్ప గణితం మరియు భౌతిక శాస్త్రాన్ని గణనీయమైన మొత్తంలో నేర్చుకోవడానికి మరియు ఆధునిక ఆప్టిమైజేషన్ పద్ధతులను ఉపయోగించడానికి అవకాశాలు ఉన్నాయి. ఇది గణితం, భౌతిక శాస్త్రం మరియు సాఫ్ట్వేర్ ఇంజనీరింగ్లను దగ్గరగా కలిపే గేమ్ డెవలప్మెంట్ రంగం.
రాబ్లాక్స్కు మంచి రిజిడ్ బాడీ ఫిజిక్స్ ఇంజిన్ ఉన్నప్పటికీ, దానిని మెరుగుపరచడానికి మరియు ఆప్టిమైజ్ చేయడానికి కొన్ని రంగాలు ఉన్నాయి. అలాగే, మేము ఫ్రాక్చరింగ్, డీఫార్మేషన్, సాఫ్ట్బాడీ, క్లాత్, ఏరోడైనమిక్స్ మరియు వాటర్ సిమ్యులేషన్ వంటి ఉత్తేజకరమైన కొత్త ప్రాజెక్ట్లపై పని చేస్తున్నాము.
రాబ్లాక్స్ కార్పొరేషన్ గానీ, ఈ బ్లాగ్ గానీ ఏ కంపెనీని లేదా సేవను ఆమోదించవు లేదా మద్దతు ఇవ్వవు. అలాగే, ఈ బ్లాగ్లో ఉన్న సమాచారం యొక్క ఖచ్చితత్వం, విశ్వసనీయత లేదా సంపూర్ణతకు సంబంధించి ఎటువంటి హామీలు లేదా వాగ్దానాలు చేయబడవు.
ఈ బ్లాగ్ పోస్ట్ వాస్తవానికి రాబ్లాక్స్ టెక్ బ్లాగ్లో ప్రచురించబడింది.


