Fix position movie camera (#1126)

This commit is contained in:
Vladik01-11 2025-10-19 23:08:24 +03:00 committed by GitHub
parent 6f150e26bb
commit 57ec49876b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 8 deletions

View File

@ -194,13 +194,13 @@ void CCam::DoCamBump(float horizontal, float vertical) {
// 0x50DD70
void CCam::Finalise_DW_CineyCams(const CVector& src, const CVector& dest, float roll, float fov, float nearClip, float shakeDegree) {
m_vecFront = (src - dest).Normalized();
m_vecFront = (dest - src).Normalized();
m_vecSource = src;
// What is this thing?
{
auto rightDir = CrossProduct(m_vecFront, { std::sin(roll), 0.0f, std::cos(roll) }).Normalized();
m_vecUp = CrossProduct(rightDir, m_vecFront);
auto rightDir = m_vecFront.Cross({ std::sin(roll), 0.0f, std::cos(roll) }).Normalized();
m_vecUp = rightDir.Cross(m_vecFront);
if (m_vecFront.x == 0.0f && m_vecFront.y == 0.0f) {
m_vecFront.x = m_vecFront.y = 0.0001f;
}
@ -212,18 +212,19 @@ void CCam::Finalise_DW_CineyCams(const CVector& src, const CVector& dest, float
RwCameraSetNearClipPlane(Scene.m_pRwCamera, 0.4f); // meant to use nearClip here?
CacheLastSettingsDWCineyCam();
gLastFrameProcessedDWCineyCam = CTimer::GetFrameCounter();
gHandShaker[0].Process(shakeDegree);
gHandShaker[0].Process(shakeDegree);
m_vecFront = gHandShaker[0].m_resultMat.TransformVector(m_vecFront);
m_vecFront.Normalise();
{
auto rightDir = CrossProduct(m_vecFront, { std::sin(roll), 0.0f, std::cos(roll) }).Normalized();
m_vecUp = CrossProduct(rightDir, m_vecFront);
auto rightDir = m_vecFront.Cross({ std::sin(roll), 0.0f, std::cos(roll) }).Normalized();
m_vecUp = rightDir.Cross(m_vecFront);
if (m_vecFront.x == 0.0f && m_vecFront.y == 0.0f) {
m_vecFront.x = m_vecFront.y = 0.0001f;
}
rightDir = CrossProduct(m_vecFront, m_vecUp).Normalized();
m_vecUp = CrossProduct(rightDir, m_vecFront);
rightDir = m_vecFront.Cross(m_vecUp).Normalized();
m_vecUp = rightDir.Cross(m_vecFront);
}
}