| 113 | } |
| 114 | |
| 115 | void GuiAdam::initializationOnThread() |
| 116 | { |
| 117 | try |
| 118 | { |
| 119 | // Init parent class |
| 120 | if (mDisplayMode == DisplayMode::DisplayAll || mDisplayMode == DisplayMode::Display2D) |
| 121 | Gui::initializationOnThread(); |
| 122 | #ifdef USE_3D_ADAM_MODEL |
| 123 | if (mDisplayMode == DisplayMode::DisplayAll |
| 124 | || mDisplayMode == DisplayMode::DisplayAdam) |
| 125 | { |
| 126 | int argc = 0; |
| 127 | // char* argv[0]; |
| 128 | spImpl->spRender.reset(new adam::Renderer{&argc, nullptr}); |
| 129 | // spImpl->spRender->options.yrot=-45; |
| 130 | spImpl->spRender->options.yrot=45; |
| 131 | spImpl->spRender->options.xrot=25; |
| 132 | spImpl->spRender->options.meshSolid = true; |
| 133 | // spImpl->spRender->options.meshSolid = false; |
| 134 | spImpl->upReadBuffer.reset(new GLubyte[spImpl->spRender->options.width |
| 135 | * spImpl->spRender->options.height * 3]); |
| 136 | } |
| 137 | #endif |
| 138 | } |
| 139 | catch (const std::exception& e) |
| 140 | { |
| 141 | error(e.what(), __LINE__, __FUNCTION__, __FILE__); |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | void GuiAdam::generateMesh(const Array<float>& poseKeypoints3D, const Array<float>& faceKeypoints3D, |
| 146 | const std::array<Array<float>, 2>& handKeypoints3D, |