Камера - контроли

Седнах да си правя прости контроли за движение на камерата, но забих на едно място.
Първоначално имплементирах нещо от сорта на:

camera->pos += Vector(0, 0, -1) * movementSpeed; // движение напред

Аналогично и за другите посоки. Проблема е, че вместо да се отмества наляво или надясно, камерата се завърта съответно наляво/надясно. И като се завърти, не продължава движението си в посоката, която сочи. Напред/назад - това е ОК, работи си.

След това имплементирах функцията move() от лекцията в петък и резултатът беше като по-горе. Използвам същия Camera клас.

Какво пропускам ?

Comments

Ами не съм сигурен.

Ами не съм сигурен. renderScene_threaded() ли викаш за самото рендене? Да не би да се пропуска Camera::beginFrame()...?
Иначе принципно позицията трябва да се сменя не с фиксирани вектори, ами с frontDir, rightDir и подобните - виж актуалния код в github. Тествай върху сцената testmesh.trinity.

В моя проект нямам

В моя проект нямам renderScene_threaded(), но си викам Camera::beginFrame() още при самото инициализиране на сцената:

initializeScene
Camera
CameraController

Tова са ми класовете в моя проект. Сега пробвах върху учебния рейтрейсър същата имплементация за контроли на камерата като в класа CameraController и си работи без проблем.

Всеки кадър

Е тъй де, тя идеята е, че Camera::beginFrame трябва да се вика преди всеки нов кадър, а не само веднъж.

Аха, мерси, после ще пробвам

Аха, мерси, после ще пробвам да видя дали ще ми се оправи.

Edit: Да, получи се ! Отново благодаря, вчера цял ден се блъскам с това и не можах да разбера какво пропускам :).

ok

Разбирам напълно. За съжаление, API-то не е много добре документирано откъм изисквания, кое след кое трябва да се случи :(

Happy coding!