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