모종의 음모/force feedback
f1 (게임) motion data packet
구차니
2024. 10. 27. 22:24
패킷을 뜯어 보고, 개별 변수가 어떤 의미를 지니는지 검색
f1 게임이긴한데.. codemasters 에서 만들면 비슷하지 않을까 생각중인데..
저번에 udp로 덤프 뜬거랑은 패킷 구조가 맞는지 조차 모르겠어서 나중에 천천히 f1 2015 라도 깔아서 해봐야 할 듯.
모션 패킷에는
월드 좌표계에서의 위치/가속도/방향
중력가속도 횡/종/수직 <<
차량의 yaw/pitch/roll <<
정보로 구성된다.
struct CarMotionData { float m_worldPositionX; // World space X position float m_worldPositionY; // World space Y position float m_worldPositionZ; // World space Z position float m_worldVelocityX; // Velocity in world space X float m_worldVelocityY; // Velocity in world space Y float m_worldVelocityZ; // Velocity in world space Z int16 m_worldForwardDirX; // World space forward X direction (normalised) int16 m_worldForwardDirY; // World space forward Y direction (normalised) int16 m_worldForwardDirZ; // World space forward Z direction (normalised) int16 m_worldRightDirX; // World space right X direction (normalised) int16 m_worldRightDirY; // World space right Y direction (normalised) int16 m_worldRightDirZ; // World space right Z direction (normalised) float m_gForceLateral; // Lateral G-Force component float m_gForceLongitudinal; // Longitudinal G-Force component float m_gForceVertical; // Vertical G-Force component float m_yaw; // Yaw angle in radians float m_pitch; // Pitch angle in radians float m_roll; // Roll angle in radians }; struct PacketMotionData { PacketHeader m_header; // Header CarMotionData m_carMotionData[22]; // Data for all cars on track // Extra player car ONLY data float m_suspensionPosition[4]; // Note: All wheel arrays have the following order: float m_suspensionVelocity[4]; // RL, RR, FL, FR float m_suspensionAcceleration[4]; // RL, RR, FL, FR float m_wheelSpeed[4]; // Speed of each wheel float m_wheelSlip[4]; // Slip ratio for each wheel float m_localVelocityX; // Velocity in local space float m_localVelocityY; // Velocity in local space float m_localVelocityZ; // Velocity in local space float m_angularVelocityX; // Angular velocity x-component float m_angularVelocityY; // Angular velocity y-component float m_angularVelocityZ; // Angular velocity z-component float m_angularAccelerationX; // Angular velocity x-component float m_angularAccelerationY; // Angular velocity y-component float m_angularAccelerationZ; // Angular velocity z-component float m_frontWheelsAngle; // Current front wheels angle in radians }; |
lateral은 횡이고 longitudinal은 종 인듯 한데
Unopposed acceleration due to mechanical forces, and consequentially g-force, is experienced whenever anyone rides in a vehicle because it always causes a proper acceleration, and (in the absence of gravity) also always a coordinate acceleration (where velocity changes). Whenever the vehicle changes either direction or speed, the occupants feel lateral (side to side) or longitudinal (forward and backwards) forces produced by the mechanical push of their seats. |
[링크 : https://en.wikipedia.org/wiki/G-force]
[링크 : https://www.mrwaynesclass.com/circular/index08.html]
사전적으로는 아래처럼 정의 되어 있다는데
1. 가로지르기 보단 길이 방향으로 달리기,
2. longitude(경도)에 관련된
음.. 어찌된게 1번이랑 2번이 상반된 내용 같지?
lon·gi·tu·di·nal /ˌlônjəˈto͞odənl,ˌlänjəˈto͞odənl/ adjective adjective: longitudinal 1. running lengthwise rather than across. "longitudinal muscles" 2. relating to longitude; measured from east to west. "longitudinal positions" 3. (of research or data) involving information about an individual or group gathered over a period of time. "a longitudinal study of ten patients" |
그리고 대망(?)의 yaw / pitch / roll
비행기에서 많이 보던거긴한데 자동차도 이동방향에 대해서는 3개 축에 대한 회전값이 존재할 수 있으니까 머..
yaw는 핸들 돌리면 발생할 것이고
pitch는 길이 오르거나 내리면서 상승 하강 하면 발생할 것이고
roll은 길이 좌우로 기울으면 삐딱하게 가면서 발생할 것이네
[링크 : https://en.wikipedia.org/wiki/Aircraft_principal_axes]