$lang['tuto'] = "ઉપશામકો"; ?>$lang['tuto'] = "ઉપશામકો"; ?>$lang['tuto'] = "ઉપશામકો"; ?> કસ્ટમ સ્કેલેટલ મેશ

કસ્ટમ સ્કેલેટલ મેશ મૂવમેન્ટમાં અવાસ્તવિક એન્જિન ફિઝિક્સ એસેટ મિસલાઈનમેન્ટ ફિક્સિંગ

Physics asset

અવાસ્તવિક એન્જિનમાં ભૌતિકશાસ્ત્ર એસેટ રોટેશન સમસ્યાઓનું નિવારણ

અવાસ્તવિક એન્જિનમાં હાડપિંજરના જાળીદાર સાથે કામ કરવાથી ઘણીવાર અનપેક્ષિત વર્તન થઈ શકે છે, ખાસ કરીને જ્યારે બ્લેન્ડર જેવા બાહ્ય સાધનોમાંથી આયાત કરવામાં આવે ત્યારે. એક સામાન્ય સમસ્યા એ છે કે જ્યારે ભૌતિકશાસ્ત્રની સંપત્તિ ખોટી રીતે સંકલિત દેખાય છે અથવા તે 90 ડિગ્રી દ્વારા ફેરવવામાં આવી હોય તેમ કાર્ય કરે છે. આ કોયડારૂપ હોઈ શકે છે, ખાસ કરીને જ્યારે એન્જિનમાં અથડામણ સેટિંગ્સ અને એસેટ પૂર્વાવલોકન સચોટ દેખાય છે.

એક દૃશ્યમાં, વિકાસકર્તાએ ઉપયોગ કર્યો બેસ્પોક સ્કેલેટલ મેશને ખસેડવા માટેનું કાર્ય, પરંતુ અથડામણની વિસંગતતાઓનો સામનો કરવો પડ્યો. ભૌતિકશાસ્ત્રની સંપત્તિ જાણે ફેરવાતી હોય તેમ વસ્તુઓ સાથે અથડાતી દેખાય છે. ડિબગીંગથી જાણવા મળ્યું કે અથડામણનો આકાર સાચો હતો, પરંતુ વર્તન ઇચ્છિત પરિણામો સાથે મેળ ખાતું નથી.

તેનાથી પણ વધુ મૂંઝવણભર્યું, જ્યારે ભૌતિકશાસ્ત્ર ઑબ્જેક્ટને 90 ડિગ્રી દ્વારા મેન્યુઅલી ફેરવવામાં આવ્યું હતું, ત્યારે બધું દોષરહિત રીતે કાર્ય કરે છે. આનાથી અવાસ્તવિક એંજીન શા માટે ભૌતિકશાસ્ત્રની સંપત્તિના પરિભ્રમણને પ્રથમ સ્થાને યોગ્ય રીતે હેન્ડલ કરતું ન હતું તે પ્રશ્નને પ્રકાશિત કરે છે, ખાસ કરીને કારણ કે હાડપિંજર મોડલ ગોઠવાયેલું દેખાય છે.

મૂળ સમસ્યા બ્લેન્ડરમાં હાડપિંજરના જાળીના રુટ હાડકાના પરિભ્રમણ તરીકે નક્કી કરવામાં આવી હતી. જો કે, આ સાક્ષાત્કારે બીજો પ્રશ્ન ઉભો કર્યો: શા માટે આ પરિભ્રમણને અવાસ્તવિક એન્જિનમાં ભૌતિકશાસ્ત્રની સંપત્તિમાં તરત જ અનુવાદિત કરવામાં આવ્યું ન હતું?

આદેશ ઉપયોગનું ઉદાહરણ
SafeMoveUpdatedComponent આ અવાસ્તવિક એન્જિન કાર્ય સ્થિતિ અને પરિભ્રમણ ડેલ્ટાનો ઉપયોગ કરીને ઘટકને સુરક્ષિત રીતે ખસેડે છે. તે મુસાફરીના માર્ગ પર અથડામણને શોધી કાઢે છે અને તે મુજબ અંતિમ સ્થાનને સમાયોજિત કરે છે.
FQuat::MakeFromEuler આ ફંક્શન યુલર એંગલ વેક્ટરને ક્વાટર્નિયનમાં રૂપાંતરિત કરે છે, જે સામાન્ય રીતે અવાસ્તવિક એન્જિનમાં પરિભ્રમણ ગણતરી માટે વપરાય છે. તે સરળ પરિભ્રમણને સક્ષમ કરે છે અને ગિમ્બલ લૉકની ચિંતાઓને દૂર કરે છે.
SlideAlongSurface જ્યારે તે સપાટી સાથે અથડાય છે ત્યારે આ આદેશ ઑબ્જેક્ટની ગતિશીલતાને સુધારે છે, તેને સામાન્ય અથડામણ સાથે સરકાવી દે છે. તે પ્રભાવોને શોષવા અને વાસ્તવિક ભૌતિકશાસ્ત્ર આધારિત ગતિને સુનિશ્ચિત કરવા માટે જરૂરી છે.
HandleImpact આ કાર્ય અથડામણના પરિણામોને નિયંત્રિત કરે છે. અસર કેવી રીતે અને ક્યાં થાય છે તેના આધારે તે ઘટનાઓનું કારણ બની શકે છે અથવા હલનચલન બદલી શકે છે. આ કિસ્સામાં, જ્યારે કોઈ વસ્તુ સપાટી સાથે અથડાય છે ત્યારે તેનો ઉપયોગ કરવામાં આવે છે.
FbxImportOptions->FbxImportOptions->bForceFrontXAxis આ વિકલ્પ અવાસ્તવિક એન્જિનમાં FBX ફાઇલોને આયાત કરવા માટે વિશિષ્ટ છે અને જ્યારે બ્લેન્ડર અથવા અન્ય સાધનોમાંથી મેશ આયાત કરવામાં આવે ત્યારે સતત સંરેખણ સુનિશ્ચિત કરીને એસેટના આગળના ભાગને X-અક્ષ સાથે સંરેખિત કરવા દબાણ કરે છે.
ensure() અવાસ્તવિક એન્જિનના C++ કોડ માટે ડિબગીંગ સાધન જે શરત સાચી છે કે કેમ તે નિર્ધારિત કરે છે. જો ખોટું હોય, તો તે ચેતવણી અથવા નિવેદનની નિષ્ફળતામાં પરિણમે છે. શરતો પૂરી થઈ છે તેની ખાતરી કરવા માટે આનો ઉપયોગ એકમ પરીક્ષણોમાં થાય છે.
UpdatedComponent->UpdatedComponent->GetComponentQuat કમ્પોનન્ટના વર્તમાન પરિભ્રમણને દર્શાવતા ક્વાટર્નિયનને પુનઃપ્રાપ્ત કરે છે. ભૌતિકશાસ્ત્ર આધારિત હલનચલનમાં પરિભ્રમણ ડેલ્ટાનો ઉપયોગ કર્યા પછી નવા પરિભ્રમણની ગણતરી કરવા માટે આ જરૂરી છે.
CalculateRotationDelta સમય જતાં પરિભ્રમણમાં ફેરફારની ગણતરી કરવા માટેની માલિકીની પદ્ધતિ, જેનો ઉપયોગ ફ્રેમ દરમિયાન ઑબ્જેક્ટ કેટલી સ્પિન થવો જોઈએ તે નિર્ધારિત કરવા માટે થાય છે. તે અવાસ્તવિક એન્જિનમાં સરળ પરિભ્રમણના સંદર્ભ સુધી મર્યાદિત છે.

અવાસ્તવિક એન્જિન ભૌતિકશાસ્ત્ર એસેટ રોટેશનને સમજવું અને ઉકેલવું

કસ્ટમ અવાસ્તવિક એન્જિન સ્ક્રિપ્ટ પર ખૂબ આધાર રાખે છે ચળવળ અને અથડામણના કાર્યનું સંચાલન. આ આદેશ ગણતરી કરેલ સ્થિતિ અને પરિભ્રમણ ફેરફારો અનુસાર ઘટક (આ કિસ્સામાં, હાડપિંજર જાળી) ખસેડે છે. હાથ પરનો મુદ્દો એ છે કે ભૌતિકશાસ્ત્રની સંપત્તિ એવી રીતે વર્તે છે કે તેને 90 ડિગ્રી દ્વારા ફેરવવામાં આવી છે, પરિણામે ભૂલભરેલી અથડામણ શોધમાં પરિણમે છે. સ્ક્રિપ્ટ વિશિષ્ટ તકનીકો સાથે સ્થિતિ અને પરિભ્રમણ ડેલ્ટાની ગણતરી કરીને આ તફાવતોને વળતર આપે છે.

સ્ક્રિપ્ટનું બીજું મહત્વનું પાસું છે તેનો ઉપયોગ પરિભ્રમણ સંભાળવા માટે. ક્વાટર્નિઅન્સનો ઉપયોગ અહીં સામાન્ય પરિભ્રમણ સમસ્યાઓ ટાળવા માટે કરવામાં આવે છે, જેમ કે ગિમ્બલ લોક, જે પરિભ્રમણ માટે યુલર એંગલનો ઉપયોગ કરતી વખતે થઈ શકે છે. સ્ક્રિપ્ટનો ઉપયોગ કરીને ઘટકનું વર્તમાન પરિભ્રમણ લે છે , તેને પરિભ્રમણ ડેલ્ટામાંથી નવા ગણતરી કરેલ ચતુર્થાંશ સાથે ગુણાકાર કરે છે, અને તેને ઘટક પર લાગુ કરે છે. આ ખાતરી આપે છે કે મેશને રમતના વાતાવરણમાં તેની હિલચાલ અનુસાર ચોક્કસ રીતે ફેરવવામાં આવે છે.

આ અને આદેશો અથડામણની પ્રતિક્રિયાનું સંચાલન કરે છે. મૂવમેન્ટ ફંક્શનના હિટ પરિણામનો ઉપયોગ કરીને અથડામણને શોધી કાઢ્યા પછી, આ આદેશો સૂચવે છે કે ઑબ્જેક્ટ જે સપાટી સાથે અથડાય છે તેની સાથે કેવી રીતે ક્રિયાપ્રતિક્રિયા કરવી જોઈએ. રમતોમાં વાસ્તવિક ભૌતિકશાસ્ત્ર માટે સપાટીથી નીચે સરકવું જરૂરી છે, ખાસ કરીને જ્યારે પર્યાવરણ સાથે વારંવાર સંપર્ક કરી શકે તેવા હાડપિંજરના મોડલ સાથે કામ કરતી વખતે. આ આદેશો સુનિશ્ચિત કરે છે કે મેશ અથડામણ પછી પણ સરળતાથી અને સચોટ રીતે આગળ વધે છે.

ભૌતિક ક્રિયાપ્રતિક્રિયાઓ ઉપરાંત, સ્ક્રિપ્ટમાં એકમ પરીક્ષણ માટેનો ઉકેલ છે આદેશ આ આદેશ સુનિશ્ચિત કરે છે કે રનટાઇમ દરમિયાન અમુક શરતો પૂરી થાય છે, જે મુશ્કેલીનિવારણ માટે મહત્વપૂર્ણ છે. આ સંદર્ભમાં, તે સુનિશ્ચિત કરવામાં મદદ કરે છે કે પરિભ્રમણ અને અથડામણની વર્તણૂક ચળવળની દરેક ફ્રેમ પછી હેતુ મુજબ કાર્ય કરે છે. ભૌતિકશાસ્ત્રની સંપત્તિ વિવિધ ગેમિંગ સેટિંગ્સમાં યોગ્ય રીતે કાર્ય કરે છે તેની ખાતરી કરવા માટે આ પરીક્ષણો મહત્વપૂર્ણ છે. સામાન્ય ધ્યેય મૂળ હાડકાના 90-ડિગ્રી પરિભ્રમણને હેન્ડલ કરવાનો છે જ્યારે હાડપિંજરના જાળી અને તેની સાથે સંકળાયેલ ભૌતિકશાસ્ત્ર સંપત્તિ વચ્ચે સુસંગતતા જાળવી રાખવી.

અવાસ્તવિક એન્જિનમાં ભૌતિકશાસ્ત્ર એસેટ પરિભ્રમણ સમસ્યાઓ ઉકેલવી: બેકએન્ડ અને ફ્રન્ટેન્ડ સોલ્યુશન્સ

આ સ્ક્રિપ્ટ બેકએન્ડ તરીકે C++ નો ઉપયોગ કરે છે અને અવાસ્તવિક એન્જિનની ભૌતિકશાસ્ત્ર સિસ્ટમ સાથેના ખોટા જોડાણને સંબોધે છે. તેમાં એકમ પરીક્ષણોનો પણ સમાવેશ થાય છે જે ઉકેલને માન્ય કરે છે.

// Approach 1: Correcting Physics Asset Rotation via Root Bone Adjustment
#include "YourCustomMovementComponent.h"
#include "GameFramework/Actor.h"
#include "Components/SkeletalMeshComponent.h"
#include "DrawDebugHelpers.h"

// Calculate position and rotation deltas based on DeltaTime
FVector PositionDelta = CalculatePositionDelta(DeltaTime);
FRotator RotationDelta = CalculateRotationDelta(DeltaTime);

// Correct the rotation based on root bone orientation
FQuat CorrectedRotation = UpdatedComponent->GetComponentQuat() * FQuat(RotationDelta);

// Check for collision and handle impacts
FHitResult Hit(1.0f);
SafeMoveUpdatedComponent(PositionDelta, CorrectedRotation, true, Hit);
if (Hit.IsValidBlockingHit())
{
    HandleImpact(Hit, DeltaTime, PositionDelta);
    SlideAlongSurface(PositionDelta, 1.0f - Hit.Time, Hit.Normal, Hit, true);
}

// Update velocity to account for movement
UpdateComponentVelocity();

// Unit test for verifying correct collision behavior
void TestPhysicsAssetRotation()
{
    FVector TestPositionDelta = FVector(100.0f, 0.0f, 0.0f);
    FQuat TestRotation = FQuat::MakeFromEuler(FVector(0, 90, 0));
    // Simulate movement
    SafeMoveUpdatedComponent(TestPositionDelta, TestRotation, true, Hit);
    ensure(Hit.IsValidBlockingHit());
}

વૈકલ્પિક ઉકેલ: બ્લેન્ડરથી આયાત દરમિયાન ભૌતિકશાસ્ત્રની સંપત્તિને સમાયોજિત કરવી

આ સ્ક્રિપ્ટ અવાસ્તવિક એન્જિનમાં આયાત કરવામાં આવે ત્યારે ભૌતિકશાસ્ત્રની સંપત્તિ યોગ્ય રીતે ગોઠવાયેલ છે તેની ખાતરી આપવા માટે બ્લેન્ડરમાંથી આયાત પરિમાણોને સંશોધિત કરે છે.

// Approach 2: Adjusting Root Bone and Axis Orientation in Blender
// In Blender, apply transformations to your mesh before exporting
// 1. Select your mesh and press Ctrl + A to apply rotation and scale.
// 2. Ensure that the root bone has no inherent rotation (rotation set to 0).

// Unreal Engine: Use FBX Import Settings
// 1. When importing into Unreal, set the import rotation to ensure
//    that Unreal Engine aligns the asset correctly.
FbxImportOptions->bForceFrontXAxis = true;
FbxImportOptions->ImportRotation = FRotator(0, 0, 0);

// Unit test in Unreal to verify import orientation
void TestImportedPhysicsAssetRotation()
{
    USkeletalMeshComponent* TestMesh = NewObject<USkeletalMeshComponent>();
    FRotator ExpectedRotation = FRotator(0, 90, 0);
    ensure(TestMesh->GetComponentRotation().Equals(ExpectedRotation));
}

અવાસ્તવિક એન્જિન ભૌતિકશાસ્ત્ર એસેટ સંરેખણ મુદ્દાઓને સંબોધિત કરવું

અવાસ્તવિક એન્જિનની ભૌતિકશાસ્ત્ર સિસ્ટમ એ વચ્ચે તફાવત કરે છે અને ભૌતિકશાસ્ત્રની સંપત્તિ. હાડપિંજર મેશ, જે પાત્ર અથવા વસ્તુના દેખાવને સ્પષ્ટ કરે છે, તે ભૌતિકશાસ્ત્રની સંપત્તિ કરતાં અલગ પરિવર્તન (સ્કેલ, પરિભ્રમણ અને અનુવાદ) પસાર કરી શકે છે, જે વ્યાખ્યાયિત કરે છે કે જાળી પર્યાવરણ સાથે કેવી રીતે ક્રિયાપ્રતિક્રિયા કરે છે. ઘણી પરિસ્થિતિઓમાં, હાડપિંજરના જાળીમાં કરવામાં આવેલ ગોઠવણો તરત જ ભૌતિકશાસ્ત્રની સંપત્તિમાં પ્રસારિત થતી નથી, પરિણામે ઉલ્લેખિત મુદ્દાઓ જેવી કે, જેમાં ભૌતિકશાસ્ત્રની સંપત્તિ 90 ડિગ્રી દ્વારા ફેરવાતી લાગે છે.

જ્યારે બ્લેન્ડર જેવા બાહ્ય સાધનોમાંથી હાડપિંજરની જાળીની આયાત કરવામાં આવે ત્યારે આ સમસ્યા વારંવાર થાય છે. બ્લેન્ડર અને અવાસ્તવિક એન્જિન અલગ કોઓર્ડિનેટ સિસ્ટમનો ઉપયોગ કરે છે, પરિણામે ઓરિએન્ટેશન સમસ્યાઓ થાય છે. આયાત કરતી વખતે, તપાસો કે મેશ અને તેના યોગ્ય રીતે સંરેખિત છે અને નિકાસ કરતા પહેલા પરિવર્તનો (જેમ કે 90-ડિગ્રી રોટેશન) લાગુ કરવામાં આવ્યા છે. આ અવાસ્તવિક એન્જિનની એફબીએક્સ આયાત સિસ્ટમને ડેટાને યોગ્ય રીતે સમજવા માટે પરવાનગી આપે છે, જેના પરિણામે હાડપિંજરના મોડેલ અને સંકળાયેલ ભૌતિકશાસ્ત્રની સંપત્તિનું ચોક્કસ સંરેખણ થાય છે.

તપાસવા માટેનું બીજું પરિબળ એ અવાસ્તવિકની ભૂમિકા છે મેટ્રિક્સ આ મેટ્રિક્સ નક્કી કરે છે કે વિશ્વ અવકાશમાં ઘટકનું કેવી રીતે ભાષાંતર થાય છે. જો આયાત દરમિયાન રુટ બોનનું પરિભ્રમણ યોગ્ય રીતે ભૂંસી નાખવામાં આવ્યું નથી અથવા તેમાં ફેરફાર કરવામાં આવ્યો નથી, તો જ્યારે અવાસ્તવિક એ ઘટકની વિશ્વ સ્થિતિ અને પરિભ્રમણની ગણતરી કરે છે ત્યારે તે ભૂલો સર્જી શકે છે. આ મેટ્રિક્સને સુધારવું અને આયાત દરમિયાન રુટ બોન વિશ્વની અક્ષો સાથે સંરેખિત છે તેની ખાતરી કરવાથી ઘણી ખોટી સંકલન સમસ્યાઓ ઉકેલી શકાય છે.

  1. શા માટે મારી ભૌતિકશાસ્ત્રની સંપત્તિ 90 ડિગ્રી ફેરવવામાં આવી હોય તેમ વર્તે છે?
  2. આ સામાન્ય રીતે હાડપિંજરના જાળીના રુટ હાડકાના પરિભ્રમણ અને ભૌતિકશાસ્ત્રની સંપત્તિ વચ્ચે મેળ ખાતી ન હોવાને કારણે થાય છે. ખાતરી કરો કે જાળીનું મૂળ હાડકું બ્લેન્ડરમાં યોગ્ય રીતે સમસ્યાનું નિરાકરણ કરવા માટે લક્ષી છે.
  3. બ્લેન્ડરમાંથી આયાત કરતી વખતે હું 90-ડિગ્રી પરિભ્રમણ સમસ્યાને કેવી રીતે ઉકેલી શકું?
  4. બ્લેન્ડરમાં મોડેલની નિકાસ કરતા પહેલા, દબાવીને તમામ રૂપાંતરણો (રોટેશન, સ્કેલ) લાગુ કરો . અવાસ્તવિકની FBX આયાત સેટિંગ્સ તપાસો અને ખાતરી કરો કે રુટ બોન ફેરવાયેલ નથી.
  5. શું છે અવાસ્તવિક એન્જિનમાં મેટ્રિક્સ?
  6. તે એક મેટ્રિક્સ છે જે ઘટકની સ્થાનિક સ્થિતિ, પરિભ્રમણ અને વૈશ્વિક અવકાશમાં માપન કરે છે. રુટ હાડકાના સંરેખણ સાથેની સમસ્યાઓ આ રૂપાંતરણમાં ખોટી ગણતરીઓ તરફ દોરી શકે છે, પરિણામે પરિણમે છે પરિભ્રમણ ભૌતિકશાસ્ત્ર સંપત્તિ સમસ્યા.
  7. હું અવાસ્તવિકમાં ભૌતિકશાસ્ત્રની સંપત્તિ અથડામણને કેવી રીતે ડીબગ કરી શકું?
  8. ઉપયોગ કરો અથડામણની મર્યાદાને વિઝ્યુઅલાઈઝ કરવા અને ભૌતિકશાસ્ત્રની સંપત્તિ મેશ સાથે સંરેખિત છે તેની ખાતરી કરવા માટે અવાસ્તવિક.
  9. જો હું ભૌતિકશાસ્ત્રની સંપત્તિને 90 ડિગ્રી મેન્યુઅલી ફેરવું તો શું થશે?
  10. ભૌતિકશાસ્ત્રની સંપત્તિને મેન્યુઅલી ફેરવવાથી સમસ્યાનો અસ્થાયી રૂપે ઉકેલ આવી શકે છે, જો કે તે એક ઉપાય છે. મૂળભૂત કારણ સામાન્ય રીતે હાડપિંજરના જાળીના આયાત પરિમાણો અને મૂળ હાડકાની ગોઠવણીમાં જોવા મળે છે.

છેવટે, હાડપિંજરના જાળીના મૂળ હાડકાના પરિભ્રમણમાં મેળ ખાતી ન હોવી એ ભૌતિકશાસ્ત્રની સંપત્તિના અયોગ્ય વર્તનનું પ્રાથમિક કારણ છે. 90-ડિગ્રી ઑફસેટ સમસ્યાને ટાળવા માટે મેશને અવાસ્તવિક એન્જિનમાં આયાત કરતા પહેલા બ્લેન્ડરમાં મૂળ હાડકાને સંરેખિત કરવું મહત્વપૂર્ણ છે. અવાસ્તવિક એન્જિન હલનચલન અને અથડામણને કેવી રીતે હેન્ડલ કરે છે તે સમજવું આ સમસ્યાને ઠીક કરવામાં મદદ કરી શકે છે.

જેવી દિનચર્યાઓનો ઉપયોગ કરવો અને ક્વાટર્નિઅન્સનો ઉપયોગ કરીને પરિભ્રમણને યોગ્ય રીતે હેન્ડલ કરવાથી સીમલેસ ભૌતિકશાસ્ત્રની ક્રિયાપ્રતિક્રિયાઓ સુનિશ્ચિત થાય છે. વિકાસકર્તાઓએ અથડામણની કલ્પના કરવા અને તેમના ઉકેલોને સંપૂર્ણ રીતે ચકાસવા માટે અવાસ્તવિકના ડિબગીંગ ટૂલ્સનો પણ ઉપયોગ કરવો જોઈએ.

  1. અવાસ્તવિક એંજીન સંબંધિત સત્તાવાર દસ્તાવેજો પર વિગતવાર વર્ણન કરે છે પ્રોગ્રામિંગ અને સ્ક્રિપ્ટીંગ વિભાગ, જે ઘટકો અને ભૌતિકશાસ્ત્રની અસ્કયામતોનું સંચાલન કરવા પર વિગતવાર માર્ગદર્શિકા પ્રદાન કરે છે.
  2. અવાસ્તવિક એન્જિન સમુદાય તરફથી આંતરદૃષ્ટિ પ્રદાન કરે છે, ખાસ કરીને હાડપિંજરના જાળીના આયાત મુદ્દાઓને સંબોધતી ફોરમ ચર્ચામાંથી: અવાસ્તવિક એન્જિન ફોરમ .
  3. બ્લેન્ડરના FBX નિકાસ વિકલ્પો અવાસ્તવિક એન્જિનમાં મેશ ઓરિએન્ટેશનને કેવી રીતે અસર કરે છે તે આવરી લેતો સ્ત્રોત: બ્લેન્ડર સ્ટેકએક્સચેન્જ .
  4. ઉપયોગ પર ટ્યુટોરીયલ SafeMoveUpdatedComponent અને અન્ય અવાસ્તવિક એન્જિન ચળવળના ઘટકો યોગ્ય અથડામણ સંભાળવાની ખાતરી કરવા માટે.