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); } } } } }
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); } }
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(); }