Ejemplo n.º 1
0
    // 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;
        }
    }
Ejemplo n.º 2
0
    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;
    }
Ejemplo n.º 3
0
	// 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);
		}
	}
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
 // 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);
     }
 }
Ejemplo n.º 6
0
    void OnApplicationQuit()
    {
        if (Reader != null)
        {
            Reader.Dispose();
            Reader = null;
        }

        if (Sensor != null)
        {
            if (Sensor.IsOpen)
            {
                Sensor.Close();
            }

            Sensor = null;
        }
    }
Ejemplo n.º 7
0
    // 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);
        }
    }
Ejemplo n.º 8
0
 /// <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);
 }
Ejemplo n.º 9
0
  // 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();
  }
Ejemplo n.º 10
0
    // 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;
        }
    }
Ejemplo n.º 11
0
        //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;
        }