// Use this for initialization void Start() { kinect = devOrEmu.getKinect(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); for (int ii = 0; ii < storedFrames; ii++) { frameData frame = new frameData(); frame.depthImg = new short[320 * 240]; frame.players = new bool[Kinect.Constants.NuiSkeletonCount]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount, 320 * 240]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount, 4]; frameQueue.Enqueue(frame); } if (target == null) { target = renderer; } textureSize = ResolutionData.FromZigResolution(TextureSize); texture = new Texture2D(textureSize.Width, textureSize.Height); texture.wrapMode = TextureWrapMode.Clamp; depthHistogramMap = new float[MaxDepth]; depthToColor = new Color32[MaxDepth]; outputPixels = new Color32[textureSize.Width * textureSize.Height]; if (null != target) { target.material.mainTexture = texture; } }
public void generateAni(JsonData aniData, Texture texture, string aniName) { _tilingAndOffset.Clear(); //if (root.GetComponent<MeshRenderer>().material == null) // root.GetComponent<MeshRenderer>().material = new Material(); JsonData frames = aniData["mc"][aniName]["frames"]; JsonData res = aniData["res"]; Vector2 vec; string name; frameData d; _totalFrame = frames.Count; frameRate = (int)aniData["mc"][aniName]["frameRate"]; for (var i = 0; i < frames.Count; i++) { name = (string)frames[i]["res"]; d = new frameData(); _tilingAndOffset.Add(d); vec = new Vector2(); vec.x = (int)res[name]["w"]; vec.y = (int)res[name]["h"]; d.size = vec; vec = new Vector2(); vec.x = d.size.x / texture.width; vec.y = d.size.y / texture.height; d.tiling = vec; vec = new Vector2(); vec.x = ((int)res[name]["x"]) * 1.0f / texture.width; vec.y = (texture.height - (int)res[name]["y"] - (int)res[name]["h"]) * 1.0f / texture.height; d.offset = vec; vec = new Vector2(); vec.x = (int)frames[i]["x"]; vec.y = -(int)frames[i]["y"]; d.pos = vec; } curFrameCount = 0; // RawImage raw = root.GetComponent<RawImage>(); // raw.uvRect = new Rect(_tilingAndOffset[_curFrameCount].offset.x, // _tilingAndOffset[_curFrameCount].offset.y, // _tilingAndOffset[_curFrameCount].tiling.x, // _tilingAndOffset[_curFrameCount].tiling.y); // root.GetComponent<RectTransform>().sizeDelta = new Vector2(_tilingAndOffset[_curFrameCount].size.x, _tilingAndOffset[_curFrameCount].size.y); // root.GetComponent<RectTransform>().anchoredPosition = _tilingAndOffset[_curFrameCount].pos + anchoredPos; root.GetComponent <RawImage>().texture = texture; }
// Use this for initialization void Start () { kinect = devOrEmu.getKinect(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); for(int ii = 0; ii < storedFrames; ii++){ frameData frame = new frameData(); frame.depthImg = new short[320 * 240]; frame.players = new bool[Kinect.Constants.NuiSkeletonCount]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount,320*240]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount,4]; frameQueue.Enqueue(frame); } }
public void generateAni(JsonData aniData, Texture2D texture, string aniName) { _tilingAndOffset.Clear(); //if (_root.GetComponent<MeshRenderer>().material == null) // _root.GetComponent<MeshRenderer>().material = new Material(); _mainMaterial = _root.GetComponent <MeshRenderer>().material; JsonData frames = aniData["mc"][aniName]["frames"]; JsonData res = aniData["res"]; Vector2 vec; string name; frameData d; _totalFrame = frames.Count; for (var i = 0; i < frames.Count; i++) { name = (string)frames[i]["res"]; d = new frameData(); _tilingAndOffset.Add(d); vec = new Vector2(); vec.x = (int)res[name]["w"]; vec.y = (int)res[name]["h"]; d.size = vec; vec = new Vector2(); vec.x = d.size.x / texture.width; vec.y = d.size.y / texture.height; d.tiling = vec; vec = new Vector2(); vec.x = ((int)res[name]["x"]) * 1.0f / texture.width; vec.y = (texture.height - (int)res[name]["y"] - (int)res[name]["h"]) * 1.0f / texture.height; d.offset = vec; vec = new Vector2(); vec.x = (int)frames[i]["x"]; vec.y = (int)frames[i]["y"]; d.pos = vec; } _mainMaterial.mainTexture = texture; _mainMaterial.mainTextureOffset = _tilingAndOffset[0].offset; _mainMaterial.mainTextureScale = _tilingAndOffset[0].tiling; _root.transform.localScale = new Vector3(_tilingAndOffset[0].size.x, _tilingAndOffset[0].size.y, 1); //print(_tilingAndOffset[1].tiling); //print(_tilingAndOffset[1].offset); //print(_tilingAndOffset[1].size); }
// Use this for initialization void Start() { kinect = devOrEmu.getKinect(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); for (int ii = 0; ii < storedFrames; ii++) { frameData frame = new frameData(); frame.depthImg = new short[320 * 240]; frame.players = new bool[Kinect.Constants.NuiSkeletonCount]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount, 320 * 240]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount, 4]; frameQueue.Enqueue(frame); } }
void OnApplicationQuit() { if (Reader != null) { Reader.Dispose(); Reader = null; } if (Sensor != null) { if (Sensor.IsOpen) { Sensor.Close(); } Sensor = null; } }
// Use this for initialization void Start() { kinect = devOrEmu.getKinect(); depth_width = Kinect.NativeMethods.qfKinectGetDepthWidth(); depth_height = Kinect.NativeMethods.qfKinectGetDepthHeight(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); for (int ii = 0; ii < storedFrames; ii++) { frameData frame = new frameData(); frame.depthImg = new short[depth_width * depth_height]; frame.players = new bool[Kinect.Constants.NuiSkeletonCount]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount, depth_width *depth_height]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount, 4]; frameQueue.Enqueue(frame); } }
/// <summary> /// First call per frame checks if there is a new depth image and updates, /// returns true if there is new data /// Subsequent calls do nothing have the same return as the first call. /// </summary> /// <returns> /// A <see cref="System.Boolean"/> /// </returns> public bool pollDepth() { //Debug.Log("" + updatedSeqmentation + " " + newSeqmentation); if (!updatedSeqmentation) { updatedSeqmentation = true; if (kinect.pollDepth()) { newSeqmentation = true; frameData frame = (frameData)frameQueue.Dequeue(); depthImg = frame.depthImg; players = frame.players; segmentations = frame.segmentation; bounds = frame.bounds; frameQueue.Enqueue(frame); processDepth(); } } return(newSeqmentation); }
// Use this for initialization void Start() { kinect = devOrEmu.getKinect(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); //rollingVariance = new float[320 * 240]; for (int ii = 0; ii < storedFrames; ii++) { frameData frame = new frameData(); frame.depthImg = new float[320 * 240]; frame.depthImgNormalized = new float[320 * 240]; frame.rollingVariance = new float[320 * 240]; frame.OriginalImage = new float[320 * 240]; frame.rollingVarianceNormalized = new float[320 * 240]; frame.rollingVarianceNormalizedLastFrame = new float[320 * 240]; frame.depthImgNormalizedSmooth = new float[320 * 240]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount, 320 * 240]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount, 4]; frameQueue.Enqueue(frame); } pollDepth(); }
// Use this for initialization void Start() { kinect = devOrEmu.getKinect(); //allocate space to store the data of storedFrames frames. frameQueue = new Queue(storedFrames); for(int ii = 0; ii < storedFrames; ii++){ frameData frame = new frameData(); frame.depthImg = new short[320 * 240]; frame.players = new bool[Kinect.Constants.NuiSkeletonCount]; frame.segmentation = new bool[Kinect.Constants.NuiSkeletonCount,320*240]; frame.bounds = new int[Kinect.Constants.NuiSkeletonCount,4]; frameQueue.Enqueue(frame); } if (target == null) { target = renderer; } textureSize = ResolutionData.FromZigResolution(TextureSize); texture = new Texture2D(textureSize.Width, textureSize.Height); texture.wrapMode = TextureWrapMode.Clamp; depthHistogramMap = new float[MaxDepth]; depthToColor = new Color32[MaxDepth]; outputPixels = new Color32[textureSize.Width * textureSize.Height]; if (null != target) { target.material.mainTexture = texture; } }
//frame/display timing rating private void btnLoad_Click(object sender, EventArgs e) { if (txtFileName.Text == "") { return; } string[] lines = File.ReadAllLines(txtFileName.Text); List <frameData> frames = new List <frameData>(); for (int i = 1; i < lines.Length; i++) { frameData curFrame = new frameData(); string line = lines[i]; string[] info = line.Split(','); curFrame.ProcessName = info[0]; curFrame.ProcessID = int.Parse(info[1]); curFrame.TimeInSeconds = float.Parse(info[9]); curFrame.MsBetweenPresents = float.Parse(info[10]); curFrame.MsBetweenDisplayChange = float.Parse(info[11]); curFrame.MsInPresentAPI = float.Parse(info[12]); curFrame.MsUntilRenderComplete = float.Parse(info[13]); curFrame.MsUntilDisplayed = float.Parse(info[14]); frames.Add(curFrame); } int TotalFrames = frames.Count(); int TimeInSeconds = (int)frames[TotalFrames - 1].TimeInSeconds; int AverageFPS = (int)(TotalFrames / TimeInSeconds); int AvgMinimumFPS = int.MaxValue; int AvgMaximumFPS = 0; int curSeconds = 0; int curFrameCount = 0; //count through every frame foreach (frameData a in frames) { //on every second count the frames in the previous seconds and update avgminimum and avgmaximum if necessary //curFrameCount = FPS if ((int)a.TimeInSeconds > curSeconds) { if (curFrameCount > AvgMaximumFPS) { AvgMaximumFPS = curFrameCount; } if (curFrameCount < AvgMinimumFPS) { AvgMinimumFPS = curFrameCount; } curFrameCount = 0; curSeconds = (int)a.TimeInSeconds; } curFrameCount++; } /* Calculate minimum and maximum based on framerate (needs 1000+ seconds of benchmark) * List<int> FPSorder = new List<int>(); * FPSorder = FPS.OrderByDescending(a => a).ToList(); * * int onepercent = FPSorder.Count() / 100; * int pointonepercent = FPSorder.Count() / 1000; * * int onelow = (int)Math.Round(FPSorder.Take(onepercent).Average()); * int pointonelow = (int)Math.Round(FPSorder.Take(pointonepercent).Average()); */ /* Calculate minimum and maximum based on frametimes using linq */ int MinimumFPS = (int)Math.Round(1000 / frames.Max(c => c.MsBetweenPresents)); //based on maximum frametime int MaximumFPS = (int)Math.Round(1000 / frames.Min(c => c.MsBetweenPresents)); //based on minimum frametime /* Calculate 1% low and 0.1% low based on frametimes using linq */ List <frameData> frameTimeOrder = new List <frameData>(); frameTimeOrder = frames.OrderByDescending(i => i.MsBetweenPresents).ToList(); int onepercent = frameTimeOrder.Count() / 100; int pointonepercent = frameTimeOrder.Count() / 1000; int onelow = (int)Math.Round(1000 / frameTimeOrder.Take(onepercent).Average(i => i.MsBetweenPresents)); int pointonelow = (int)Math.Round(1000 / frameTimeOrder.Take(pointonepercent).Average(i => i.MsBetweenPresents)); /* Calculate 1% low and 0.1% low based on frametimes * List<frameData> frameTimeOrder = new List<frameData>(); * frameTimeOrder = frames.OrderByDescending(i => i.MsBetweenPresents).ToList(); * * float totalFrameTimes = 0; * int frameCount = frameTimeOrder.Count() / 100; * * for (int i=0;i<frameCount;i++) * { * totalFrameTimes += frameTimeOrder[i].MsBetweenPresents; * } * * int onelow = (int)Math.Round(1000 / totalFrameTimes * frameCount); * * totalFrameTimes = 0; * frameCount = frameTimeOrder.Count() / 1000; * * for (int i = 0; i < frameCount; i++) * { * totalFrameTimes += frameTimeOrder[i].MsBetweenPresents; * } * * int pointonelow = (int)Math.Round(1000 / totalFrameTimes * frameCount); */ lblAverage.Text = AverageFPS.ToString(); lblMinimum.Text = AvgMinimumFPS.ToString(); lblMaximum.Text = AvgMaximumFPS.ToString(); lbl1Low.Text = onelow.ToString(); lbl01Low.Text = pointonelow.ToString(); lines = null; }