/* * Copyright (C) 2023, Inria * GRAPHDECO research group, https://team.inria.fr/graphdeco * All rights reserved. * * This software is free for non-commercial, research and evaluation use * under the terms of the LICENSE.md file. * * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr */ #pragma once # include "Config.hpp" # include # include # include # include # include # include # include # include # include # include # include # include #include #include using json = nlohmann::json; namespace sibr { /** * \class RemotePointView * \brief Wrap a ULR renderer with additional parameters and information. */ class SIBR_EXP_ULR_EXPORT RemotePointView : public sibr::ViewBase { SIBR_CLASS_PTR(RemotePointView); public: RemotePointView(std::string ip, uint port); /** Replace the current scene. *\param newScene the new scene to render */ void setScene(const sibr::BasicIBRScene::Ptr & newScene); /** * Perform rendering. Called by the view manager or rendering mode. * \param dst The destination rendertarget. * \param eye The novel viewpoint. */ void onRenderIBR(sibr::IRenderTarget& dst, const sibr::Camera& eye) override; /** * Update the GUI. */ void onGUI() override; /** \return a reference to the scene */ const std::shared_ptr & getScene() const { return _scene; } virtual ~RemotePointView() override; std::string sceneName() { return current_scene; } protected: std::string current_scene; struct RemoteRenderInfo { Vector2i imgResolution; float fovy; float fovx; float znear; float zfar; Matrix4f view; Matrix4f viewProj; }; RemoteRenderInfo _remoteInfo; bool _doTrainingBool = true; bool _doSHsPython = false; bool _doRotScalePython = false; bool _keepAlive = true; bool _showSfM = false; float _scalingModifier = 1.0f; std::atomic keep_running = true; std::string _ip; int _port; void send_receive(); GLuint _imageTexture; bool _renderSfMInMotion = false; bool _imageResize = true; bool _imageDirty = true; uint32_t _timestampRequested = 1; uint32_t _timestampReceived = 0; std::mutex _renderDataMutex; std::mutex _imageDataMutex; std::unique_ptr _networkThread; std::vector _imageData; std::shared_ptr _scene; ///< The current scene. PointBasedRenderer::Ptr _pointbasedrenderer; CopyRenderer::Ptr _copyRenderer; }; } /*namespace sibr*/