Exemple #1
0
    private void CheckColorizedBodyReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerColorizedBody.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                ColorizedBodyFrame colorizedBodyFrame = frame.GetFrame <ColorizedBodyFrame>();

                if (colorizedBodyFrame != null)
                {
                    if (_lastColorizedBodyFrameIndex != colorizedBodyFrame.FrameIndex)
                    {
                        _lastColorizedBodyFrameIndex = colorizedBodyFrame.FrameIndex;

                        UpdateColorizedBodyTexture(colorizedBodyFrame);
                        OnNewColorizedBodyFrame.Invoke(colorizedBodyFrame);
                    }
                }
            }
        }
    }
Exemple #2
0
    public void UpdateColorizedBodyTexture(ColorizedBodyFrame colorizedBodyFrame)
    {
        if (colorizedBodyFrame == null)
        {
            return;
        }
        // 拷贝label图流数据
        if (_colorizedBodyFrameData == null || _colorizedBodyFrameData.Length != colorizedBodyFrame.ByteLength)
        {
            _colorizedBodyFrameData = new byte[colorizedBodyFrame.ByteLength];
        }
        colorizedBodyFrame.CopyData(ref _colorizedBodyFrameData);

        // label图纹理
        if (_colorizedBodyTexture == null)
        {
            _colorizedBodyTexture = new Texture2D(colorizedBodyFrame.Width, colorizedBodyFrame.Height, TextureFormat.RGBA32, false);
        }
        else if (_colorizedBodyTexture.width != colorizedBodyFrame.Width || _colorizedBodyTexture.height != colorizedBodyFrame.Height)
        {
            _colorizedBodyTexture.Resize(colorizedBodyFrame.Width, colorizedBodyFrame.Height, TextureFormat.RGBA32, false);
        }

        if (_colorizedBodyFrameData != null && _colorizedBodyFrameData.Length > 0)
        {
            _colorizedBodyTexture.LoadRawTextureData(_colorizedBodyFrameData);
            _colorizedBodyTexture.Apply(false);
        }
    }
Exemple #3
0
    private void FrameReady(object sender, FrameReadyEventArgs e)
    {
        frameReadyTime.Start();

        //Debug.Log("FrameReady " + _frameCount);
        DepthFrame depthFrame = e.Frame.GetFrame <DepthFrame>();

        if (depthFrame != null)
        {
            if (_lastDepthFrameIndex != depthFrame.FrameIndex)
            {
                _lastDepthFrameIndex = depthFrame.FrameIndex;

                NewDepthFrameEvent.Invoke(depthFrame);
            }
        }

        ColorFrame colorFrame = e.Frame.GetFrame <ColorFrame>();

        if (colorFrame != null)
        {
            if (_lastColorFrameIndex != colorFrame.FrameIndex)
            {
                _lastColorFrameIndex = colorFrame.FrameIndex;

                NewColorFrameEvent.Invoke(colorFrame);
            }
        }

        BodyFrame bodyFrame = e.Frame.GetFrame <BodyFrame>();

        if (bodyFrame != null)
        {
            if (_lastBodyFrameIndex != bodyFrame.FrameIndex)
            {
                _lastBodyFrameIndex = bodyFrame.FrameIndex;

                NewBodyFrameEvent.Invoke(_bodyStream, bodyFrame);
                NewBodyMaskEvent.Invoke(bodyFrame.BodyMask);
            }
        }

        MaskedColorFrame maskedColorFrame = e.Frame.GetFrame <MaskedColorFrame>();

        if (maskedColorFrame != null)
        {
            if (_lastMaskedColorFrameIndex != maskedColorFrame.FrameIndex)
            {
                _lastMaskedColorFrameIndex = maskedColorFrame.FrameIndex;

                NewMaskedColorFrameEvent.Invoke(maskedColorFrame);
            }
        }

        ColorizedBodyFrame colorizedBodyFrame = e.Frame.GetFrame <ColorizedBodyFrame>();

        if (colorizedBodyFrame != null)
        {
            if (_lastColorizedBodyFrameIndex != colorizedBodyFrame.FrameIndex)
            {
                _lastColorizedBodyFrameIndex = colorizedBodyFrame.FrameIndex;

                NewColorizedBodyFrameEvent.Invoke(colorizedBodyFrame);
            }
        }

        _frameCount++;
        _frameReadyDirty = true;
        frameReadyTime.Stop();
    }