public void render() { BBox_edges.pushToGPU(); BBox_faces.pushToGPU(); draw(); }
public void init(CameraParameters param) { Gl.Enable(EnableCap.FramebufferSrgb); shaderSK = new ShaderData(); shaderSK.it = new Shader(Shader.SK_VERTEX_SHADER, Shader.SK_FRAGMENT_SHADER); shaderSK.MVP_Mat = Gl.GetUniformLocation(shaderSK.it.getProgramId(), "u_mvpMatrix"); shaderBbox = new ShaderData(); shaderBbox.it = new Shader(Shader.VERTEX_SHADER, Shader.FRAGMENT_SHADER); shaderBbox.MVP_Mat = Gl.GetUniformLocation(shaderBbox.it.getProgramId(), "u_mvpMatrix"); setRenderCameraProjection(param, 0.5f, 20); image_handler.initialize(); bones.init(); bones.setDrawingType(PrimitiveType.Quads); joints.init(); joints.setDrawingType(PrimitiveType.Quads); BBox_edges.init(); BBox_edges.setDrawingType(PrimitiveType.Lines); BBox_faces.init(); BBox_faces.setDrawingType(PrimitiveType.Quads); objectsName = new List <ObjectClassName>(); Gl.Disable(EnableCap.DepthTest); available = true; }
public void exit() { if (currentInstance != null) { image_handler.close(); available = false; BBox_edges.clear(); BBox_faces.clear(); } }
void createBboxRendering(List <Vector3> bb_, float4 bbox_clr) { // First create top and bottom full edges BBox_edges.addFullEdges(bb_, bbox_clr); // Add faded vertical edges BBox_edges.addVerticalEdges(bb_, bbox_clr); // Add faces BBox_faces.addVerticalFaces(bb_, bbox_clr); // Add top face BBox_faces.addTopFace(bb_, bbox_clr); }
public void draw() { image_handler.draw(); Gl.UseProgram(shaderBasic.it.getProgramId()); Gl.UniformMatrix4f(shaderBasic.MVP_Mat, 1, true, projection_); Gl.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); Gl.LineWidth(1.5f); BBox_edges.draw(); Gl.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); BBox_faces.draw(); Gl.UseProgram(0); }
public void draw() { Gl.Disable(EnableCap.DepthTest); image_handler.draw(); Gl.Enable(EnableCap.DepthTest); Gl.UseProgram(shaderSK.it.getProgramId()); Gl.UniformMatrix4f(shaderSK.MVP_Mat, 1, true, projection_); bones.draw(); joints.draw(); Gl.UseProgram(shaderBbox.it.getProgramId()); Gl.UniformMatrix4f(shaderBbox.MVP_Mat, 1, true, projection_); Gl.LineWidth(1.5f); BBox_edges.draw(); BBox_faces.draw(); }
public void update(Mat image, Objects objects) { image_handler.pushNewImage(image); //if(objects.isNew == 0) return; BBox_faces.clear(); BBox_edges.clear(); objectsName.Clear(); // For each object for (int idx = 0; idx < objects.numObject; idx++) { sl.ObjectData obj = objects.objectData[idx]; // Only show tracked objects if (renderObject(obj)) { List <Vector3> bb_ = new List <Vector3>(); bb_.AddRange(obj.boundingBox); if (bb_.Count > 0) { float4 clr_id = generateColorClass(obj.id); float4 clr_class = generateColorClass((int)obj.label); if (obj.objectTrackingState != sl.OBJECT_TRACKING_STATE.OK) { clr_id = clr_class; } else { createIDRendering(obj.position, clr_id, obj.id); } createBboxRendering(bb_, clr_id); } } } }
public void update(Mat image, Objects objects) { image_handler.pushNewImage(image); bones.clear(); joints.clear(); BBox_faces.clear(); BBox_edges.clear(); if (Keyboard.IsKeyDown(Key.B)) { showbbox = !showbbox; } // For each object for (int idx = 0; idx < objects.numObject; idx++) { sl.ObjectData obj = objects.objectData[idx]; // Only show tracked objects if (renderObject(obj)) { List <Vector3> bb_ = new List <Vector3>(); bb_.AddRange(obj.boundingBox); float4 clr_id = generateColorClass(obj.id); float4 clr_class = generateColorClass((int)obj.label); Vector3[] keypoints = obj.keypoints; if (showbbox) { if (obj.objectTrackingState != sl.OBJECT_TRACKING_STATE.OK) { clr_id = clr_class; } else { createIDRendering(obj.position, clr_id, obj.id); } createBboxRendering(bb_, clr_id); } if (keypoints.Length > 0) { foreach (var limb in BODY_BONES) { Vector3 kp_1 = keypoints[getIdx(limb.Item1)]; Vector3 kp_2 = keypoints[getIdx(limb.Item2)]; float norm_1 = kp_1.Length(); float norm_2 = kp_2.Length(); if (!float.IsNaN(norm_1) && norm_1 > 0 && !float.IsNaN(norm_2) && norm_2 > 0) { bones.addCylinder(new float3(kp_1.X, kp_1.Y, kp_1.Z), new float3(kp_2.X, kp_2.Y, kp_2.Z), clr_id); } } for (int i = 0; i < (int)BODY_PARTS.LAST; i++) { Vector3 kp = keypoints[i]; float norm = kp.Length(); if (!float.IsNaN(norm) && norm > 0) { joints.addSphere(new float3(kp.X, kp.Y, kp.Z), clr_id); } } } } } }