Камера - контроли
- Forums:
Седнах да си правя прости контроли за движение на камерата, но забих на едно място.
Първоначално имплементирах нещо от сорта на:
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!