@@ -141,7 +141,11 @@ void GLViewer::init(int argc, char **argv) {
141141 shader.MVP_Mat = glGetUniformLocation (shader.it .getProgramId (), " u_mvpMatrix" );
142142
143143 // Create the camera
144- camera_ = CameraGL (sl::Translation (0 , 2 , 10 ), sl::Translation (0 , 0 , -1 ));
144+ camera_ = CameraGL (sl::Translation (0 , 3 , 3 ), sl::Translation (0 , 0 , -1 ));
145+ sl::float3 ea (-30 ,0 ,0 );
146+ sl::Rotation rot;
147+ rot.setEulerAngles (ea, false );
148+ camera_.rotate (rot);
145149
146150 // Create the skeletons objects
147151 skeletons.setDrawingType (GL_LINES);
@@ -312,8 +316,13 @@ void GLViewer::render() {
312316
313317void GLViewer::setCameraPose (int id, sl::Transform pose) {
314318 const std::lock_guard<std::mutex> lock (mtx);
315- getColor (id, false );
319+ auto clr = getColor (id, false );
316320 poses[id] = pose;
321+
322+ if (viewers.find (id) == viewers.end ()){
323+ sl::Mat view;
324+ viewers[id].initialize (view, clr);
325+ }
317326}
318327
319328inline bool renderBody (const sl::BodyData& i, const bool isTrackingON) {
@@ -324,9 +333,7 @@ inline bool renderBody(const sl::BodyData& i, const bool isTrackingON) {
324333}
325334
326335template <typename T>
327- void createSKPrimitive (sl::BodyData& body, const std::vector<std::pair<T, T>>& map, Simple3DObject& skp, sl::float3 clr_id, bool raw) {
328- const float cylinder_thickness = raw ? 0 .01f : 0 .025f ;
329-
336+ void createSKPrimitive (sl::BodyData& body, const std::vector<std::pair<T, T>>& map, Simple3DObject& skp, sl::float3 clr_id) {
330337 for (auto & limb : map) {
331338 sl::float3 kp_1 = body.keypoint [getIdx (limb.first )];
332339 sl::float3 kp_2 = body.keypoint [getIdx (limb.second )];
@@ -335,16 +342,16 @@ void createSKPrimitive(sl::BodyData& body, const std::vector<std::pair<T, T>>& m
335342 }
336343}
337344
338- void GLViewer:: addSKeleton (sl::BodyData& obj, Simple3DObject& simpleObj, sl::float3 clr_id, bool raw ) {
345+ void addSKeleton (sl::BodyData& obj, Simple3DObject& simpleObj, sl::float3 clr_id) {
339346 switch (obj.keypoint .size ()) {
340347 case 18 :
341- createSKPrimitive (obj, sl::BODY_18_BONES, simpleObj, clr_id, raw );
348+ createSKPrimitive (obj, sl::BODY_18_BONES, simpleObj, clr_id);
342349 break ;
343350 case 34 :
344- createSKPrimitive (obj, sl::BODY_34_BONES, simpleObj, clr_id, raw );
351+ createSKPrimitive (obj, sl::BODY_34_BONES, simpleObj, clr_id);
345352 break ;
346353 case 38 :
347- createSKPrimitive (obj, sl::BODY_38_BONES, simpleObj, clr_id, raw );
354+ createSKPrimitive (obj, sl::BODY_38_BONES, simpleObj, clr_id);
348355 break ;
349356 }
350357}
@@ -357,7 +364,7 @@ void GLViewer::updateBodies(sl::Bodies &bodies, std::map<sl::CameraIdentifier, s
357364 for (auto &it:bodies.body_list ) {
358365 auto clr = getColor (it.id , true );
359366 if (renderBody (it, bodies.is_tracked ))
360- addSKeleton (it, skeletons, clr, false );
367+ addSKeleton (it, skeletons, clr);
361368 }
362369 }
363370
@@ -382,7 +389,7 @@ void GLViewer::updateBodies(sl::Bodies &bodies, std::map<sl::CameraIdentifier, s
382389
383390 for (auto & sk : it.second .body_list ) {
384391 if (renderBody (sk, it.second .is_tracked ))
385- addSKeleton (sk, sk_r, clr, true );
392+ addSKeleton (sk, sk_r, clr);
386393 }
387394 }
388395
@@ -463,11 +470,15 @@ void GLViewer::draw() {
463470 glUniformMatrix4fv (shader.MVP_Mat , 1 , GL_TRUE, vpMatrix.m );
464471
465472 floor_grid.draw ();
473+
466474 skeletons.draw ();
467475
468- if (show_raw)
476+ if (show_raw){
477+ glLineWidth (1 .f );
469478 for (auto & it : skeletons_raw)
470479 it.second .draw ();
480+ glLineWidth (2 .f );
481+ }
471482
472483 for (auto & it : viewers) {
473484 sl::Transform pose_ = vpMatrix * poses[it.first ];
@@ -938,6 +949,9 @@ bool CameraViewer::initialize(sl::Mat &im, sl::float3 clr) {
938949 faces.push_back (sl::uint3 (0 ,2 ,3 ));
939950
940951 ref = im;
952+ if (!ref.isInit ())
953+ return 1 ;
954+
941955 shader.set (VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE);
942956 shMVPMatrixLocTex_ = glGetUniformLocation (shader.getProgramId (), " u_mvpMatrix" );
943957
0 commit comments