diff --git a/LiveScanServer/OpenGLWindow.cs b/LiveScanServer/OpenGLWindow.cs index 4063659..f8969e7 100644 --- a/LiveScanServer/OpenGLWindow.cs +++ b/LiveScanServer/OpenGLWindow.cs @@ -55,6 +55,8 @@ namespace KinectServer float dx = 0.0f; float dy = 0.0f; + byte brightnessModifier = 0; + Vector2 MousePrevious = new Vector2(); Vector2 MouseCurrent = new Vector2(); float[] cameraPosition = new float[3]; @@ -69,6 +71,8 @@ namespace KinectServer DateTime tFPSUpdateTimer = DateTime.Now; int nTickCounter = 0; + bool bDrawMarkings = true; + // this struct is used for drawing struct VertexC4ubV3f { @@ -112,9 +116,11 @@ namespace KinectServer WindowBorder = WindowBorder.Resizable; WindowState = WindowState.Normal; ClientSize = new System.Drawing.Size(800, 600); + CursorVisible = true; } else { + CursorVisible = false; WindowBorder = WindowBorder.Hidden; WindowState = WindowState.Fullscreen; } @@ -123,7 +129,39 @@ namespace KinectServer void OnKeyDown(object sender, KeyboardKeyEventArgs e) { -// e.Key + + var keyboard = e.Keyboard; + if (keyboard[Key.Escape]) + { + Exit(); + } + if (keyboard[Key.Plus]) + { + PointSize += 0.1f; + GL.PointSize(PointSize); + } + if (keyboard[Key.Minus]) + { + if (PointSize != 0) + PointSize -= 0.1f; + GL.PointSize(PointSize); + } + if (keyboard[Key.W]) + cameraPosition[2] -= KEYBOARD_MOVE_SPEED; + if (keyboard[Key.A]) + cameraPosition[0] -= KEYBOARD_MOVE_SPEED; + if (keyboard[Key.S]) + cameraPosition[2] += KEYBOARD_MOVE_SPEED; + if (keyboard[Key.D]) + cameraPosition[0] += KEYBOARD_MOVE_SPEED; + if (keyboard[Key.F]) + ToggleFullscreen(); + if (keyboard[Key.M]) + bDrawMarkings = !bDrawMarkings; + if (keyboard[Key.O]) + brightnessModifier = (byte)Math.Max(0, brightnessModifier - 10); + if (keyboard[Key.P]) + brightnessModifier = (byte)Math.Min(255, brightnessModifier + 10); } /// Load resources here. @@ -284,72 +322,53 @@ namespace KinectServer nTickCounter = 0; } - var keyboard = OpenTK.Input.Keyboard.GetState(); - if (keyboard[Key.Escape]) - { - Exit(); - } - if (keyboard[Key.Plus]) - { - PointSize += 0.1f; - GL.PointSize(PointSize); - } - if (keyboard[Key.Minus]) - { - if (PointSize != 0) - PointSize -= 0.1f; - GL.PointSize(PointSize); - } - if (keyboard[Key.W]) - cameraPosition[2] -= KEYBOARD_MOVE_SPEED; - if (keyboard[Key.A]) - cameraPosition[0] -= KEYBOARD_MOVE_SPEED; - if (keyboard[Key.S]) - cameraPosition[2] += KEYBOARD_MOVE_SPEED; - if (keyboard[Key.D]) - cameraPosition[0] += KEYBOARD_MOVE_SPEED; - if (keyboard[Key.F]) - ToggleFullscreen(); lock (vertices) { bool bShowSkeletons = settings.bShowSkeletons; PointCount = vertices.Count / 3; - //bounding box - LineCount = 12; - //markers - LineCount += settings.lMarkerPoses.Count * 3; - //cameras - LineCount += cameraPoses.Count * 3; - if (bShowSkeletons) - LineCount += 24 * bodies.Count; + LineCount = 0; + if (bDrawMarkings) + { + //bounding box + LineCount += 12; + //markers + LineCount += settings.lMarkerPoses.Count * 3; + //cameras + LineCount += cameraPoses.Count * 3; + if (bShowSkeletons) + LineCount += 24 * bodies.Count; + } VBO = new VertexC4ubV3f[PointCount + 2 * LineCount]; for (int i = 0; i < PointCount; i++) { - VBO[i].R = (byte)colors[i * 3]; - VBO[i].G = (byte)colors[i * 3 + 1]; - VBO[i].B = (byte)colors[i * 3 + 2]; + VBO[i].R = (byte)Math.Max(0, Math.Min(255, (colors[i * 3] + brightnessModifier))); + VBO[i].G = (byte)Math.Max(0, Math.Min(255, (colors[i * 3 + 1] + brightnessModifier))); + VBO[i].B = (byte)Math.Max(0, Math.Min(255, (colors[i * 3 + 2] + brightnessModifier))); VBO[i].A = 255; VBO[i].Position.X = vertices[i * 3]; VBO[i].Position.Y = vertices[i * 3 + 1]; VBO[i].Position.Z = vertices[i * 3 + 2]; } - int iCurLineCount = 0; - iCurLineCount += AddBoundingBox(PointCount + 2 * iCurLineCount); - for (int i = 0; i < settings.lMarkerPoses.Count; i++) + if (bDrawMarkings) { - iCurLineCount += AddMarker(PointCount + 2 * iCurLineCount, settings.lMarkerPoses[i].pose); + int iCurLineCount = 0; + iCurLineCount += AddBoundingBox(PointCount + 2 * iCurLineCount); + for (int i = 0; i < settings.lMarkerPoses.Count; i++) + { + iCurLineCount += AddMarker(PointCount + 2 * iCurLineCount, settings.lMarkerPoses[i].pose); + } + for (int i = 0; i < cameraPoses.Count; i++) + { + iCurLineCount += AddCamera(PointCount + 2 * iCurLineCount, cameraPoses[i]); + } + if (bShowSkeletons) + iCurLineCount += AddBodies(PointCount + 2 * iCurLineCount); } - for (int i = 0; i < cameraPoses.Count; i++) - { - iCurLineCount += AddCamera(PointCount + 2 * iCurLineCount, cameraPoses[i]); - } - if (bShowSkeletons) - iCurLineCount += AddBodies(PointCount + 2 * iCurLineCount); } }