#ifdef USE_3D_ADAM_MODEL #ifndef OPENPOSE_GUI_GUI_ADAM_HPP #define OPENPOSE_GUI_GUI_ADAM_HPP #ifdef USE_3D_ADAM_MODEL #include #endif #include #include #include namespace op { // This worker will do 3-D rendering class OP_API GuiAdam : public Gui { public: GuiAdam(const Point& outputSize, const bool fullScreen, const std::shared_ptr>& isRunningSharedPtr, const std::shared_ptr, std::atomic>>& videoSeekSharedPtr = nullptr, const std::vector>& poseExtractorNets = {}, const std::vector>& faceExtractorNets = {}, const std::vector>& handExtractorNets = {}, const std::vector>& renderers = {}, const DisplayMode displayMode = DisplayMode::DisplayAll, const std::shared_ptr& totalModel = nullptr, const std::string& adamRenderedVideoPath = ""); virtual ~GuiAdam(); virtual void initializationOnThread(); void generateMesh(const Array& poseKeypoints3D, const Array& faceKeypoints3D, const std::array, 2>& handKeypoints3D, const double* const adamPosePtr, const double* const adamTranslationPtr, const double* const vtVecPtr, const int vtVecRows, const double* const j0VecPtr, const int j0VecRows, const double* const adamFaceCoeffsExpPtr); virtual void update(); private: // PIMPL idiom // http://www.cppsamples.com/common-tasks/pimpl.html struct ImplGuiAdam; std::shared_ptr spImpl; // PIMP requires DELETE_COPY & destructor, or extra code // http://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html DELETE_COPY(GuiAdam); }; } #endif // OPENPOSE_GUI_GUI_ADAM_HPP #endif