Ejemplo n.º 1
0
 public void OnFrame(PopCap.TFrameMeta ColorMeta, Texture ColourText, PopCap.TFrameMeta DepthMeta, Texture DepthTexture)
 {
     if (!this.isActiveAndEnabled)
     {
         return;
     }
 }
Ejemplo n.º 2
0
 public void OnFrame(PopCap.TFrameMeta ColorMeta, Texture ColourText, PopCap.TFrameMeta DepthMeta, Texture DepthTexture)
 {
     if (DepthMeta.Camera != null)
     {
         LastCamera = DepthMeta.Camera;
         //UpdateCamera(DepthMeta.Camera);
     }
     else
     {
         Debug.Log("No camera in meta");
     }
 }
    public void OnFrame(PopCap.TFrameMeta ColourMeta, Texture ColourTexture, PopCap.TFrameMeta DepthMeta, Texture PositionTexture)
    {
        var RayMarchMaterial = AccumulatorMaterial;

        if (!this.isActiveAndEnabled)
        {
            return;
        }

        if (DepthMeta.Camera == null)
        {
            Debug.LogWarning("PointCloudRayMarch frame missing .Camera");
            return;
        }
        if (DepthMeta.Camera.Intrinsics == null)
        {
            Debug.LogWarning("PointCloudRayMarch frame missing .Camera.Intrinsics");
            return;
        }
        if (DepthMeta.Camera.LocalToWorld == null)
        {
            Debug.LogWarning("PointCloudRayMarch frame missing .Camera.LocalToWorld");
            return;
        }
        RayMarchMaterial.SetVector("CameraToLocalViewportMin", DepthMeta.Camera.GetCameraSpaceViewportMin());
        RayMarchMaterial.SetVector("CameraToLocalViewportMax", DepthMeta.Camera.GetCameraSpaceViewportMax());
        RayMarchMaterial.SetMatrix("CameraToLocalTransform", DepthMeta.Camera.GetCameraToLocal());
        RayMarchMaterial.SetMatrix("LocalToCameraTransform", DepthMeta.Camera.GetLocalToCamera());
        RayMarchMaterial.SetMatrix("WorldToLocalTransform", DepthMeta.Camera.GetWorldToLocal());

        bool WritePositions = true;

        if (WritePositions)
        {
            var PositionRT = PositionTexture as RenderTexture;
            RenderTexture.active = PositionRT;
            var Position2d = new Texture2D(PositionRT.width, PositionRT.height, TextureFormat.RGBAFloat, false);
            Position2d.ReadPixels(new Rect(0, 0, Position2d.width, Position2d.height), 0, 0);
            Position2d.Apply();
            var PositionPixels       = Position2d.GetPixels();
            int INPUT_POSITION_COUNT = 90;
            var Positions4           = new Color[INPUT_POSITION_COUNT];

            int BlitCount = 1;
            for (int p = FirstPositionBlit; p < PositionPixels.Length; p += INPUT_POSITION_COUNT, BlitCount++)
            {
                System.Array.Copy(PositionPixels, p, Positions4, 0, Positions4.Length);
                BlitNextFrame(Positions4);
                if (BlitCount >= MaxPositionBlits)
                {
                    break;
                }
            }
            FirstPositionBlit += INPUT_POSITION_COUNT + BlitCount;
            if (FirstPositionBlit > PositionPixels.Length)
            {
                FirstPositionBlit = 0;
            }
        }
        else
        {
            BlitNextFrame(null);
        }
    }