void Update()
        {
            _KinectSensor = _AzureKinectManager.SensorList[_DeviceNumber];
            if (_KinectSensor != null)
            {
                if (_KinectSensor.RawColorImage != null)
                {
                    _ColorImageTexture.LoadRawTextureData(_KinectSensor.RawColorImage);
                    _ColorImageTexture.Apply();
                }

                if (_KinectSensor.PointCloud != null)
                {
                    Short3[] pointCloud = _KinectSensor.PointCloud;

                    Vector3[] vertices = new Vector3[pointCloud.Length];
                    for (int i = 0; i < vertices.Length; i++)
                    {
                        vertices[i] = new Vector3(pointCloud[i].X * 0.001f, pointCloud[i].Y * -0.001f, pointCloud[i].Z * 0.001f);
                    }

                    _PointCloudMesh.UpdateVertices(vertices);
                    _PointCloudMesh.UpdateColorTexture(_KinectSensor.RawColorImage);
                }
            }
        }
Ejemplo n.º 2
0
        void Start()
        {
            _KinectSensor = _AzureKinectManager.Sensor;
            if (_KinectSensor != null)
            {
                _DepthRawData            = new byte[_KinectSensor.DepthImageWidth * _KinectSensor.DepthImageHeight * sizeof(ushort)];
                _TransformedDepthRawData = new byte[_KinectSensor.ColorImageWidth * _KinectSensor.ColorImageHeight * sizeof(ushort)];

                _ColorImageTexture            = new Texture2D(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight, TextureFormat.BGRA32, false);
                _TransformedColorImageTexture = new Texture2D(_KinectSensor.DepthImageWidth, _KinectSensor.DepthImageHeight, TextureFormat.BGRA32, false);
                _DepthImageTexture            = new Texture2D(_KinectSensor.DepthImageWidth, _KinectSensor.DepthImageHeight, TextureFormat.R16, false);
                _TransformedDepthImageTexture = new Texture2D(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight, TextureFormat.R16, false);

                MeshRenderer colorMeshRenderer = _ColorImageObject.GetComponent <MeshRenderer>();
                colorMeshRenderer.sharedMaterial = new Material(_UnlitTextureMaterial);
                colorMeshRenderer.sharedMaterial.SetTexture("_MainTex", _ColorImageTexture);

                MeshRenderer transformedColorMeshRenderer = _TransformedColorImageObject.GetComponent <MeshRenderer>();
                transformedColorMeshRenderer.sharedMaterial = new Material(_UnlitTextureMaterial);
                transformedColorMeshRenderer.sharedMaterial.SetTexture("_MainTex", _TransformedColorImageTexture);

                MeshRenderer depthMeshRenderer = _DepthImageObject.GetComponent <MeshRenderer>();
                depthMeshRenderer.sharedMaterial = new Material(_DepthVisualizer);
                depthMeshRenderer.sharedMaterial.SetTexture("_DepthTex", _DepthImageTexture);

                MeshRenderer transformedDepthMeshRenderer = _TransformedDepthImageObject.GetComponent <MeshRenderer>();
                transformedDepthMeshRenderer.sharedMaterial = new Material(_DepthVisualizer);
                transformedDepthMeshRenderer.sharedMaterial.SetTexture("_DepthTex", _TransformedDepthImageTexture);
            }

            Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
            Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);
        }
Ejemplo n.º 3
0
        void Start()
        {
            List <AzureKinectSensor> kinectSensors = _AzureKinectManager.SensorList;

            if (_DeviceNumber < kinectSensors.Count)
            {
                _KinectSensor = _AzureKinectManager.SensorList[_DeviceNumber];
                if (_KinectSensor != null)
                {
                    Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
                    Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);

                    _DepthRawData = new byte[_KinectSensor.DepthImageWidth * _KinectSensor.DepthImageHeight * sizeof(ushort)];

                    CameraCalibration deviceDepthCameraCalibration = _KinectSensor.DeviceCalibration.DepthCameraCalibration;
                    CameraCalibration deviceColorCameraCalibration = _KinectSensor.DeviceCalibration.ColorCameraCalibration;

                    K4A.Calibration calibration = new K4A.Calibration();
                    calibration.DepthCameraCalibration = CreateCalibrationCamera(deviceDepthCameraCalibration, _KinectSensor.DepthImageWidth, _KinectSensor.DepthImageHeight);
                    calibration.ColorCameraCalibration = CreateCalibrationCamera(deviceColorCameraCalibration, _KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight);

                    _PointCloudRenderer = GetComponent <PointCloudRenderer>();
                    _PointCloudRenderer.GenerateMesh(calibration, K4A.CalibrationType.Depth);

                    _AzureKinectManager.OpenDevice(_DeviceNumber);
                }
            }
        }
        public void Initialize(AzureKinectSensor kinectSensor)
        {
            if (!_Initialized)
            {
                _KinectSensor = kinectSensor;
                if (_KinectSensor != null)
                {
                    Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
                    Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);

                    // _LowPassFilter = new ExponentialSmoothingLowPassFilter((uint)_Accel.Length, 0.05f);
                    // _LowPassFilter = new DoubleExponentialSmoothingLowPassFilter((uint)_Accel.Length, 0.3f, 0.3f);
                    _LowPassFilter = new ButterworthFilter(_Order, _SamplingFrequency, _CutoffFrequency, (uint)_Accel.Length);

                    _DepthRawData       = new byte[_KinectSensor.DepthImageWidth * _KinectSensor.DepthImageHeight * sizeof(ushort)];
                    _PointCloudRenderer = GetComponent <PointCloudRenderer>();

                    CameraCalibration deviceDepthCameraCalibration = _KinectSensor.DeviceCalibration.DepthCameraCalibration;
                    CameraCalibration deviceColorCameraCalibration = _KinectSensor.DeviceCalibration.ColorCameraCalibration;

                    K4A.Calibration calibration = new K4A.Calibration();
                    calibration.DepthCameraCalibration = CreateCalibrationCamera(deviceDepthCameraCalibration, _KinectSensor.DepthImageWidth, _KinectSensor.DepthImageHeight);
                    calibration.ColorCameraCalibration = CreateCalibrationCamera(deviceColorCameraCalibration, _KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight);

                    _PointCloudRenderer.GenerateMesh(calibration, K4A.CalibrationType.Depth);

                    _Initialized = true;
                }
            }
        }
Ejemplo n.º 5
0
        void Awake()
        {
            _MainThreadID = Thread.CurrentThread.ManagedThreadId;

            _AzureKinectSensor = gameObject.GetComponent <AzureKinectSensor>();
            _AzureKinectSensor.OpenSensor();

            if (_AzureKinectSensor != null)
            {
                _CancellationTokenSource = new CancellationTokenSource();
                RunAnotherThread(_CancellationTokenSource.Token);
            }
        }
        void Start()
        {
            _KinectSensor = _AzureKinectManager.Sensor;
            if (_KinectSensor != null)
            {
                Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
                Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);

                _ColorImageTexture = new Texture2D(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight, TextureFormat.BGRA32, false);

                _PointCloudMesh = GetComponent <PointCloudMesh>();
                _PointCloudMesh.GenerateMesh(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight);
            }
        }
Ejemplo n.º 7
0
        void Update()
        {
            _KinectSensor = _AzureKinectManager.SensorList[_DeviceNumber];
            if (_KinectSensor != null)
            {
                if (_KinectSensor.RawDepthImage != null)
                {
                    short[] depthImage = _KinectSensor.RawDepthImage;
                    System.Buffer.BlockCopy(depthImage, 0, _DepthRawData, 0, _DepthRawData.Length);

                    _PointCloudRenderer.UpdateColorTexture(_KinectSensor.TransformedColorImage);
                    _PointCloudRenderer.UpdateDepthTexture(_DepthRawData);
                }
            }
        }
Ejemplo n.º 8
0
        private void RunAnotherThread(CancellationToken cancellationToken, AzureKinectSensor kinectSensor)
        {
            Task.Run(() =>
            {
                // Multithread
                // Debug.Log("********************");
                // Debug.Log(" MainThreadID: " + _MainThreadID);
                // Debug.Log(" AnotherThreadID: " + Thread.CurrentThread.ManagedThreadId);
                // Debug.Log(" KinectSerialNum: " + kinectSensor.Device.SerialNum);
                // Debug.Log("********************");

                while (true)
                {
                    cancellationToken.ThrowIfCancellationRequested();
                    kinectSensor.ProcessCameraFrame();
                }
            });
        }
        void Start()
        {
            var kinectSensors = _AzureKinectManager.SensorList;

            if (_DeviceNumber < kinectSensors.Count)
            {
                _KinectSensor = kinectSensors[_DeviceNumber];
                if (_KinectSensor != null)
                {
                    _ColorImageTexture            = new Texture2D(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight, TextureFormat.BGRA32, false);
                    _TransformedColorImageTexture = new Texture2D(_KinectSensor.DepthImageWidth, _KinectSensor.DepthImageHeight, TextureFormat.BGRA32, false);

                    int depthImageSize            = _KinectSensor.DepthImageWidth * _KinectSensor.DepthImageHeight;
                    int transformedDepthImageSize = _KinectSensor.ColorImageWidth * _KinectSensor.ColorImageHeight;

                    _DepthBuffer            = new ComputeBuffer(depthImageSize / 2, sizeof(uint));
                    _TransformedDepthBuffer = new ComputeBuffer(transformedDepthImageSize / 2, sizeof(uint));

                    MeshRenderer colorMeshRenderer = _ColorImageObject.GetComponent <MeshRenderer>();
                    colorMeshRenderer.sharedMaterial = new Material(_UnlitTextureMaterial);
                    colorMeshRenderer.sharedMaterial.SetTexture("_MainTex", _ColorImageTexture);

                    MeshRenderer transformedColorMeshRenderer = _TransformedColorImageObject.GetComponent <MeshRenderer>();
                    transformedColorMeshRenderer.sharedMaterial = new Material(_UnlitTextureMaterial);
                    transformedColorMeshRenderer.sharedMaterial.SetTexture("_MainTex", _TransformedColorImageTexture);

                    _DepthVisualizerMaterial = new Material(_DepthVisualizer);
                    _DepthVisualizerMaterial.SetInt("_Width", _KinectSensor.DepthImageWidth);
                    _DepthVisualizerMaterial.SetInt("_Height", _KinectSensor.DepthImageHeight);
                    MeshRenderer depthMeshRenderer = _DepthImageObject.GetComponent <MeshRenderer>();
                    depthMeshRenderer.sharedMaterial = _DepthVisualizerMaterial;

                    _TransformedDepthVisualizerMaterial = new Material(_DepthVisualizer);
                    _TransformedDepthVisualizerMaterial.SetInt("_Width", _KinectSensor.ColorImageWidth);
                    _TransformedDepthVisualizerMaterial.SetInt("_Height", _KinectSensor.ColorImageHeight);
                    MeshRenderer transformedDepthMeshRenderer = _TransformedDepthImageObject.GetComponent <MeshRenderer>();
                    transformedDepthMeshRenderer.sharedMaterial = _TransformedDepthVisualizerMaterial;
                }

                Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
                Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);
            }
        }
Ejemplo n.º 10
0
        void Update()
        {
            _KinectSensor = _AzureKinectManager.SensorList[_DeviceNumber];
            if (_KinectSensor != null)
            {
                if (_KinectSensor.RawColorImage != null)
                {
                    _ColorImageTexture.LoadRawTextureData(_KinectSensor.RawColorImage);
                    _ColorImageTexture.Apply();
                }

                if (_KinectSensor.PointCloud != null)
                {
                    Short3[] pointCloud = _KinectSensor.PointCloud;

                    Vector3[] vertices = new Vector3[pointCloud.Length];
                    for (int i = 0; i < vertices.Length; i++)
                    {
                        vertices[i] = new Vector3(pointCloud[i].X * 0.001f, pointCloud[i].Y * -0.001f, pointCloud[i].Z * 0.001f);
                    }

                    _PointCloudMesh.UpdateVertices(vertices);
                    _PointCloudMesh.UpdateColorTexture(_KinectSensor.RawColorImage);
                }

                System.Numerics.Vector3 accel = _KinectSensor.ImuSample.AccelerometerSample;
                if (LowPassFilter)
                {
                    _Accel[0] = accel.X;
                    _Accel[1] = accel.Y;
                    _Accel[2] = accel.Z;
                    _LowPassFilter.Apply(_Accel, ref _AccelOut);
                    accel.X = _AccelOut[0];
                    accel.Y = _AccelOut[1];
                    accel.Z = _AccelOut[2];
                }

                UnityEngine.Vector3 kinectOrientation = OrientationEstimator.EstimateFromAccelerometerForUnity(accel);

                this.transform.eulerAngles = kinectOrientation;
            }
        }
Ejemplo n.º 11
0
        void Awake()
        {
            _MainThreadID = Thread.CurrentThread.ManagedThreadId;

            int deviceCount = AzureKinectSensor.GetDeviceCount();

            for (int i = 0; i < deviceCount; i++)
            {
                var kinectSensor = new AzureKinectSensor(ColorImageFormat, ColorCameraMode, DepthCameraMode);
                if (kinectSensor.OpenSensor(i))
                {
                    _AzureKinectSensorList.Add(kinectSensor);
                }
            }

            _CancellationTokenSource = new CancellationTokenSource();
            foreach (var kinectSensor in _AzureKinectSensorList)
            {
                RunAnotherThread(_CancellationTokenSource.Token, kinectSensor);
            }
        }
Ejemplo n.º 12
0
        void Start()
        {
            List <AzureKinectSensor> kinectSensors = _AzureKinectManager.SensorList;

            if (_DeviceNumber < kinectSensors.Count)
            {
                _KinectSensor = _AzureKinectManager.SensorList[_DeviceNumber];
                if (_KinectSensor != null)
                {
                    Debug.Log("ColorResolution: " + _KinectSensor.ColorImageWidth + "x" + _KinectSensor.ColorImageHeight);
                    Debug.Log("DepthResolution: " + _KinectSensor.DepthImageWidth + "x" + _KinectSensor.DepthImageHeight);

                    // _LowPassFilter = new ExponentialSmoothingLowPassFilter((uint)_Accel.Length, 0.05f);
                    // _LowPassFilter = new DoubleExponentialSmoothingLowPassFilter((uint)_Accel.Length, 0.3f, 0.3f);
                    _LowPassFilter = new ButterworthFilter(_Order, _SamplingFrequency, _CutoffFrequency, (uint)_Accel.Length);

                    _ColorImageTexture = new Texture2D(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight, TextureFormat.BGRA32, false);

                    _PointCloudMesh = GetComponent <PointCloudMesh>();
                    _PointCloudMesh.GenerateMesh(_KinectSensor.ColorImageWidth, _KinectSensor.ColorImageHeight);
                }
            }
        }
Ejemplo n.º 13
0
        public void Initialize()
        {
            if (!_Initialized)
            {
                // _MainThreadID = Thread.CurrentThread.ManagedThreadId;

                int deviceCount = AzureKinectSensor.GetDeviceCount();
                for (int i = 0; i < deviceCount; i++)
                {
                    var kinectSensor = new AzureKinectSensor(ColorImageFormat, ColorCameraMode, DepthCameraMode);
                    if (kinectSensor.OpenSensor(i))
                    {
                        _AzureKinectSensorList.Add(kinectSensor);
                        _DeviceSerialNumList.Add(kinectSensor.Device.SerialNum);
                        _CancellationTokenSourceList.Add(new CancellationTokenSource());

                        kinectSensor.CloseSensor();
                    }
                }

                _Initialized = true;
            }
        }