From e64f4267842ad2d7fc69f06f1fc27db0443f77fe Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 19 Aug 2022 14:33:22 +1000 Subject: [PATCH] fix camera update --- ios/src/FilamentViewer.cpp | 24 +++++++++++++++++++++--- ios/src/FilamentViewer.hpp | 3 +++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ios/src/FilamentViewer.cpp b/ios/src/FilamentViewer.cpp index 79998481..1145eda0 100644 --- a/ios/src/FilamentViewer.cpp +++ b/ios/src/FilamentViewer.cpp @@ -86,17 +86,27 @@ const float kSensitivity = 100.0f; FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource, FreeResource freeResource) : _layer(layer), _loadResource(loadResource), _freeResource(freeResource) { + + Log("Creating FilamentViewer"); _engine = Engine::create(Engine::Backend::OPENGL); + Log("Engine created"); _renderer = _engine->createRenderer(); _renderer->setDisplayInfo({.refreshRate = 60.0f, .presentationDeadlineNanos = (uint64_t)0, .vsyncOffsetNanos = (uint64_t)0}); + Renderer::FrameRateOptions fro; + fro.interval = 30; + _renderer->setFrameRateOptions(fro); + _scene = _engine->createScene(); + + Log("Scene created"); Entity camera = EntityManager::get().create(); _mainCamera = _engine->createCamera(camera); + Log("Main camera created"); _view = _engine->createView(); _view->setScene(_scene); _view->setCamera(_mainCamera); @@ -112,6 +122,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource, _swapChain = _engine->createSwapChain(_layer); + Log("Swapchain created"); + View::DynamicResolutionOptions options; options.enabled = true; // options.homogeneousScaling = homogeneousScaling; @@ -140,7 +152,7 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource, _resourceLoader->addTextureProvider("image/png", _stbDecoder); _resourceLoader->addTextureProvider("image/jpeg", _stbDecoder); manipulator = Manipulator::Builder() - .orbitHomePosition(0.0f, 0.0f, 0.05f) + .orbitHomePosition(0.0f, 0.0f, 1.0f) .targetPosition(0.0f, 0.0f, 0.0f) .build(Mode::ORBIT); @@ -154,6 +166,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource, // .castShadows(true) .build(*_engine, _sun); _scene->addEntity(_sun); + + Log("Added sun"); _sceneAssetLoader = new SceneAssetLoader(_loadResource, _freeResource, @@ -528,10 +542,14 @@ void FilamentViewer::updateViewportAndCameraProjection( _view->setViewport({0, 0, _width, _height}); const double aspect = (double)width / height; - _mainCamera->setLensProjection(_cameraFocalLength, aspect, kNearPlane, + + Camera& cam =_view->getCamera(); + cam.setLensProjection(_cameraFocalLength, 1.0f, kNearPlane, kFarPlane); - Log("Set viewport to width: %d height: %d scaleFactor : %f", width, height, + cam.setScaling({1.0 / aspect, 1.0}); + + Log("Set viewport to width: %d height: %d aspect %f scaleFactor : %f", width, height, aspect, contentScaleFactor); } diff --git a/ios/src/FilamentViewer.hpp b/ios/src/FilamentViewer.hpp index 0d9cbab1..4fef66d4 100644 --- a/ios/src/FilamentViewer.hpp +++ b/ios/src/FilamentViewer.hpp @@ -88,7 +88,10 @@ namespace polyvox { Scene* _scene; View* _view; Engine* _engine; + + // a default camera that we add to every scene Camera* _mainCamera; + Renderer* _renderer; SwapChain* _swapChain = nullptr;