示例#1
0
        /// <summary>
        /// Wrap an ARCoreSessionConfig in an API config.
        /// </summary>
        /// <param name="config">Config to wrap.</param>
        public ApiPrestoConfig(ARCoreSessionConfig config)
        {
            UpdateMode = config.MatchCameraFramerate ?
                         ApiUpdateMode.Blocking : ApiUpdateMode.LatestCameraImage;
            var planeFindingMode = ApiPlaneFindingMode.Disabled;

            switch (config.PlaneFindingMode)
            {
            case DetectedPlaneFindingMode.Horizontal:
                planeFindingMode = ApiPlaneFindingMode.Horizontal;
                break;

            case DetectedPlaneFindingMode.Vertical:
                planeFindingMode = ApiPlaneFindingMode.Vertical;
                break;

            case DetectedPlaneFindingMode.HorizontalAndVertical:
                planeFindingMode = ApiPlaneFindingMode.HorizontalAndVertical;
                break;

            default:
                break;
            }
            PlaneFindingMode    = planeFindingMode;
            LightEstimationMode = config.EnableLightEstimation ?
                                  ApiLightEstimationMode.AmbientIntensity : ApiLightEstimationMode.Disabled;
            CloudAnchorMode = config.EnableCloudAnchor ?
                              ApiCloudAnchorMode.Enabled : ApiCloudAnchorMode.Disabled;
            if (config.AugmentedImageDatabase != null)
            {
                ArPrestoAugmentedImageDatabase = config.AugmentedImageDatabase.m_ArPrestoDatabaseHandle;
            }
            else
            {
                ArPrestoAugmentedImageDatabase = IntPtr.Zero;
            }
            switch (config.CameraFocusMode)
            {
            case GoogleARCore.CameraFocusMode.Fixed:
                CameraFocusMode = ApiCameraFocusMode.Fixed;
                break;

            case GoogleARCore.CameraFocusMode.Auto:
                CameraFocusMode = ApiCameraFocusMode.Auto;
                break;

            default:
                CameraFocusMode = ApiCameraFocusMode.Fixed;
                break;
            }
        }
        public static void UpdateApiConfigWithARCoreSessionConfig(IntPtr sessionHandle,
                                                                  IntPtr configHandle, ARCoreSessionConfig sessionConfig)
        {
            ApiLightEstimationMode lightingMode =
                sessionConfig.LightEstimationMode.ToApiLightEstimationMode();

            ExternApi.ArConfig_setLightEstimationMode(sessionHandle, configHandle, lightingMode);

            ApiPlaneFindingMode planeFindingMode =
                sessionConfig.PlaneFindingMode.ToApiPlaneFindingMode();

            ExternApi.ArConfig_setPlaneFindingMode(sessionHandle, configHandle, planeFindingMode);

            ApiUpdateMode updateMode = sessionConfig.MatchCameraFramerate ?
                                       ApiUpdateMode.Blocking : ApiUpdateMode.LatestCameraImage;

            ExternApi.ArConfig_setUpdateMode(sessionHandle, configHandle, updateMode);

            ApiCloudAnchorMode cloudAnchorMode =
                sessionConfig.CloudAnchorMode.ToApiCloudAnchorMode();

            ExternApi.ArConfig_setCloudAnchorMode(sessionHandle, configHandle, cloudAnchorMode);

            IntPtr augmentedImageDatabaseHandle = IntPtr.Zero;

            if (sessionConfig.AugmentedImageDatabase != null)
            {
                augmentedImageDatabaseHandle = sessionConfig.AugmentedImageDatabase.NativeHandle;
                ExternApi.ArConfig_setAugmentedImageDatabase(sessionHandle, configHandle,
                                                             augmentedImageDatabaseHandle);
            }
            else
            {
                ExternApi.ArConfig_setAugmentedImageDatabase(sessionHandle, configHandle,
                                                             IntPtr.Zero);
            }

            ApiAugmentedFaceMode augmentedFaceMode =
                sessionConfig.AugmentedFaceMode.ToApiAugmentedFaceMode();

            ExternApi.ArConfig_setAugmentedFaceMode(sessionHandle, configHandle, augmentedFaceMode);

            ApiCameraFocusMode focusMode = sessionConfig.CameraFocusMode.ToApiCameraFocusMode();

            ExternApi.ArConfig_setFocusMode(sessionHandle, configHandle, focusMode);
        }
示例#3
0
        /// <summary>
        /// Wrap an ARCoreSessionConfig in an API config.
        /// </summary>
        /// <param name="config">Config to wrap.</param>
        /// <param name="handle">
        /// GCHandle pinning internal IntPtr. The caller is responsible for calling GCHandle.Free
        /// when done with this config.
        /// </param>
        public ApiPrestoConfig(ARCoreSessionConfig config, out GCHandle handle)
        {
            UpdateMode = config.MatchCameraFramerate ?
                         ApiUpdateMode.Blocking : ApiUpdateMode.LatestCameraImage;
            var planeFindingMode = ApiPlaneFindingMode.Disabled;

            switch (config.PlaneFindingMode)
            {
            case DetectedPlaneFindingMode.Horizontal:
                planeFindingMode = ApiPlaneFindingMode.Horizontal;
                break;

            case DetectedPlaneFindingMode.Vertical:
                planeFindingMode = ApiPlaneFindingMode.Vertical;
                break;

            case DetectedPlaneFindingMode.HorizontalAndVertical:
                planeFindingMode = ApiPlaneFindingMode.HorizontalAndVertical;
                break;

            default:
                break;
            }

            PlaneFindingMode    = planeFindingMode;
            LightEstimationMode = config.EnableLightEstimation ?
                                  ApiLightEstimationMode.AmbientIntensity : ApiLightEstimationMode.Disabled;
            CloudAnchorMode = config.EnableCloudAnchor ?
                              ApiCloudAnchorMode.Enabled : ApiCloudAnchorMode.Disabled;

            if (config.AugmentedImageDatabase != null)
            {
                byte[] rawData = config.AugmentedImageDatabase.GetRawData();
                handle = GCHandle.Alloc(rawData, GCHandleType.Pinned);
                AugmentedImageDatabaseBytes = handle.AddrOfPinnedObject();
                AugmentedImageDatabaseSize  = rawData.Length;
            }
            else
            {
                handle = new GCHandle();
                AugmentedImageDatabaseBytes = IntPtr.Zero;
                AugmentedImageDatabaseSize  = 0;
            }
        }
示例#4
0
 public static extern void ArConfig_setLightEstimationMode(
     IntPtr session, IntPtr config, ApiLightEstimationMode light_estimation_mode);
示例#5
0
        /// <summary>
        /// Wrap an ARCoreSessionConfig in an API config.
        /// </summary>
        /// <param name="config">Config to wrap.</param>
        public ApiPrestoConfig(ARCoreSessionConfig config)
        {
            UpdateMode = config.MatchCameraFramerate ?
                         ApiUpdateMode.Blocking : ApiUpdateMode.LatestCameraImage;
            var planeFindingMode = ApiPlaneFindingMode.Disabled;

            switch (config.PlaneFindingMode)
            {
            case DetectedPlaneFindingMode.Horizontal:
                planeFindingMode = ApiPlaneFindingMode.Horizontal;
                break;

            case DetectedPlaneFindingMode.Vertical:
                planeFindingMode = ApiPlaneFindingMode.Vertical;
                break;

            case DetectedPlaneFindingMode.HorizontalAndVertical:
                planeFindingMode = ApiPlaneFindingMode.HorizontalAndVertical;
                break;

            default:
                break;
            }

            PlaneFindingMode    = planeFindingMode;
            LightEstimationMode = config.EnableLightEstimation ?
                                  ApiLightEstimationMode.AmbientIntensity : ApiLightEstimationMode.Disabled;
            CloudAnchorMode = config.EnableCloudAnchor ?
                              ApiCloudAnchorMode.Enabled : ApiCloudAnchorMode.Disabled;

            if (config.AugmentedImageDatabase != null)
            {
                ArPrestoAugmentedImageDatabase = config.AugmentedImageDatabase.m_ArPrestoDatabaseHandle;
            }
            else
            {
                ArPrestoAugmentedImageDatabase = IntPtr.Zero;
            }

            switch (config.CameraFocusMode)
            {
            case GoogleARCore.CameraFocusMode.Fixed:
                CameraFocusMode = ApiCameraFocusMode.Fixed;
                break;

            case GoogleARCore.CameraFocusMode.Auto:
#if UNITY_EDITOR
                CameraFocusMode = ApiCameraFocusMode.Fixed;
                UnityEngine.Debug.LogWarningFormat(
                    "Camera focus mode '{0}' not supported in editor.\n" +
                    "Using camera focus mode '{1}' instead.", config.CameraFocusMode, CameraFocusMode);
#else
                CameraFocusMode = ApiCameraFocusMode.Auto;
#endif
                break;

            default:
                CameraFocusMode = ApiCameraFocusMode.Fixed;
                break;
            }
        }
 public static extern void arConfigSetIlluminationEstimateMode(IntPtr config,
                                                               ApiLightEstimationMode light_estimation_mode);