public bool InitUnitySDK6DofSensor() { bool enable = false; #if !UNITY_EDITOR try { int ability6dof = 0; int enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.ABILITY6DOF; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref ability6dof); if (ability6dof == 1) { if (Pvr_UnitySDKAPI.Sensor.UPvr_Enable6DofModule(!Pvr_UnitySDKManager.SDK.HmdOnlyrot) == 0) { if (!Pvr_UnitySDKManager.SDK.HmdOnlyrot) { enable = true; Pvr_UnitySDKManager.SDK.PVRNeck = false; } } } else { Debug.LogWarning("This platform does not support 6 Dof !"); } } catch (System.Exception e) { PLOG.E("InitUnity6DofSDKSensor ERROR! " + e.Message); throw; } #endif return(enable); }
public Vector3 GetEyeTrackingPos() { if (!Pvr_UnitySDKEyeManager.Instance.EyeTracking) { return(Vector3.zero); } bool result = Pvr_UnitySDKAPI.System.UPvr_getEyeTrackingData(ref eyePoseData); if (!result) { PLOG.E("UPvr_getEyeTrackingData failed " + result); return(Vector3.zero); } EyeDeviceInfo info = GetDeviceInfo(); Vector3 frustumSize = Vector3.zero; frustumSize.x = 0.5f * (info.targetFrustumLeft.right - info.targetFrustumLeft.left); frustumSize.y = 0.5f * (info.targetFrustumLeft.top - info.targetFrustumLeft.bottom); frustumSize.z = info.targetFrustumLeft.near; var combinedDirection = eyePoseData.foveatedGazeDirection; float denominator = Vector3.Dot(combinedDirection, Vector3.forward); if (denominator > float.Epsilon) { eyePoint = combinedDirection * (frustumSize.z / denominator); eyePoint.x /= frustumSize.x; // [-1..1] eyePoint.y /= frustumSize.y; // [-1..1] } return(eyePoint); }
private bool CreateEyeBuffer() { Vector2 resolution = GetEyeBufferResolution(); Pvr_UnitySDKAPI.System.UPvr_SetSinglePassDepthBufferWidthHeight((int)resolution.x, (int)resolution.y); Pvr_UnitySDKManager.SDK.eyeTextures = new RenderTexture[Pvr_UnitySDKManager.eyeTextureCount]; // eye buffer for (int i = 0; i < Pvr_UnitySDKManager.eyeTextureCount; i++) { if (null == Pvr_UnitySDKManager.SDK.eyeTextures[i]) { try { ConfigureEyeBuffer(i, resolution); } catch (Exception e) { PLOG.E("ConfigureEyeBuffer ERROR " + e.Message); throw; } } if (!Pvr_UnitySDKManager.SDK.eyeTextures[i].IsCreated()) { Pvr_UnitySDKManager.SDK.eyeTextures[i].Create(); Pvr_UnitySDKManager.SDK.eyeTextureIds[i] = Pvr_UnitySDKManager.SDK.eyeTextures[i].GetNativeTexturePtr().ToInt32(); } Pvr_UnitySDKManager.SDK.eyeTextureIds[i] = Pvr_UnitySDKManager.SDK.eyeTextures[i].GetNativeTexturePtr().ToInt32(); } return(true); }
public void SetEyesPosition() { float separation = 0.0625f; int enumindex = (int)Pvr_UnitySDKAPI.GlobalFloatConfigs.IPD; if (0 != Pvr_UnitySDKAPI.Render.UPvr_GetFloatConfig(enumindex, ref separation)) { PLOG.E("Cannot get ipd"); separation = 0.0625f; } bothCamera.stereoSeparation = separation; Vector3 l = new Vector3(-separation / 2.0f, 0f, 0f); Vector3 r = new Vector3(separation / 2.0f, 0f, 0f); Vector3 center = (l + r) / 2.0f; bothCamera.transform.localPosition = center; bothCamera.transform.localRotation = Quaternion.identity; Vector3 left = l - center; Vector3 right = r - center; eyesOffset[0] = left; eyesOffset[1] = right; eyesOffsetMatrix[0] = Matrix4x4.TRS(left, Quaternion.identity, Vector3.one); eyesOffsetMatrix[1] = Matrix4x4.TRS(right, Quaternion.identity, Vector3.one); }
public static Vector2 GetEyeBufferResolution() { Vector2 eyeBufferResolution; int w = 1024; int h = 1024; if (Pvr_UnitySDKManager.SDK.DefaultRenderTexture) { try { int enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.EYE_TEXTURE_RESOLUTION0; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref w); enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.EYE_TEXTURE_RESOLUTION1; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref h); } catch (System.Exception e) { PLOG.E("GetEyeBufferResolution ERROR! " + e.Message); throw; } } else { w = (int)(Pvr_UnitySDKManager.SDK.RtSize.x * Pvr_UnitySDKManager.SDK.RtScaleFactor); h = (int)(Pvr_UnitySDKManager.SDK.RtSize.y * Pvr_UnitySDKManager.SDK.RtScaleFactor); } eyeBufferResolution = new Vector2(w, h); Debug.Log("eyeBufferResolution:" + eyeBufferResolution + ", scaleFactor: " + Pvr_UnitySDKManager.SDK.RtScaleFactor); return(eyeBufferResolution); }
public static bool UPvr_InitBatteryClass() { #if ANDROID_DEVICE try { if (javaSysActivityClass == null) { javaSysActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.aosoperation.SysActivity"); } if (javaSysActivityClass != null && Pvr_UnitySDKManager.pvr_UnitySDKRender.activity != null) { if (batteryjavaVrActivityClass == null) { batteryjavaVrActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.aosoperation.BatteryReceiver"); } return(true); } else { return(false); } } catch (Exception e) { PLOG.E("startReceiver Error :" + e.ToString()); return(false); } #endif return(true); }
public Vector2 GetEyeBufferResolution() { Vector2 eyeBufferResolution; int w = 1024; int h = 1024; if (Pvr_UnitySDKProjectSetting.GetProjectConfig().usedefaultRenderTexture) { try { int enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.EYE_TEXTURE_RESOLUTION0; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref w); enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.EYE_TEXTURE_RESOLUTION1; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref h); } catch (System.Exception e) { PLOG.E("GetEyeBufferResolution ERROR! " + e.Message); throw; } } else { w = (int)(Pvr_UnitySDKProjectSetting.GetProjectConfig().customRTSize.x *RtScaleFactor); h = (int)(Pvr_UnitySDKProjectSetting.GetProjectConfig().customRTSize.y *RtScaleFactor); } eyeBufferResolution = new Vector2(w, h); Debug.Log("DISFT Customize RenderTexture:" + eyeBufferResolution + ", scaleFactor: " + RtScaleFactor); return(eyeBufferResolution); }
public static bool UPvr_InitBatteryVolClass() { #if ANDROID_DEVICE try { javaSysActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.aosoperation.SysActivity"); if (javaSysActivityClass != null && Pvr_UnitySDKManager.pvr_UnitySDKRender.activity != null) { batteryjavaVrActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.aosoperation.BatteryReceiver"); volumejavaVrActivityClass = new AndroidJavaClass("com.psmart.aosoperation.AudioReceiver"); Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaSysActivityClass, "Pvr_InitAudioDevice", Pvr_UnitySDKManager.pvr_UnitySDKRender.activity); return(true); } else { return(false); } } catch (Exception e) { PLOG.E("startReceiver Error :" + e.ToString()); return(false); } #endif return(true); }
public void VolumeDown() { bool enable = false; enable = Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_VolumeDown(); if (!enable) { PLOG.E("VolumeDown Error"); } }
private void StartHummingBirdService() { #if ANDROID_DEVICE try { UnityEngine.AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = unityPlayer.GetStatic <AndroidJavaObject>("currentActivity"); javaHummingbirdClass = new AndroidJavaClass("com.picovr.picovrlib.hummingbirdclient.HbClientActivity"); javaCVClass = new AndroidJavaClass("com.picovr.picovrlib.cvcontrollerclient.ControllerClient"); javavractivityclass = new UnityEngine.AndroidJavaClass("com.psmart.vrlib.VrActivity"); javaserviceClass = new AndroidJavaClass("com.picovr.picovrlib.hummingbirdclient.UnityClient"); Pvr_UnitySDKAPI.System.Pvr_SetInitActivity(activity.GetRawObject(), javaHummingbirdClass.GetRawClass()); int enumindex = (int)GlobalIntConfigs.PLATFORM_TYPE; Render.UPvr_GetIntConfig(enumindex, ref platFormType); Debug.Log("PvrLog platform" + platFormType); enumindex = (int)GlobalIntConfigs.TRACKING_MODE; Render.UPvr_GetIntConfig(enumindex, ref trackingmode); Debug.Log("PvrLog trackingmode" + trackingmode); systemProp = GetSysproc(); Debug.Log("PvrLog systemProp" + systemProp); enumindex = (int)GlobalIntConfigs.ENBLE_HAND6DOF_BY_HEAD; Render.UPvr_GetIntConfig(enumindex, ref enablehand6dofbyhead); Debug.Log("PvrLog enablehand6dofbyhead" + enablehand6dofbyhead); if (trackingmode == 0 || trackingmode == 1 || (trackingmode == 3 || trackingmode == 5 || trackingmode == 6) && (systemProp == 1 || systemProp == 3)) { picoDevice = platFormType != 0; javaPico2ReceiverClass = new UnityEngine.AndroidJavaClass("com.picovr.picovrlib.hummingbirdclient.HbClientReceiver"); Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaPico2ReceiverClass, "startReceiver", activity, gameobjname); Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaHummingbirdClass, "setPlatformType", platFormType); } else { picoDevice = true; SetGameObjectToJar(gameobjname); } Render.UPvr_GetIntConfig((int)GlobalIntConfigs.iPhoneHMDModeEnabled, ref iPhoneHMDModeEnabled); if (iPhoneHMDModeEnabled == 1) { BindService(); } else { if (IsServiceExisted()) { BindService(); } } } catch (AndroidJavaException e) { PLOG.E("ConnectToAndriod--catch" + e.Message); } #endif }
public void SetVolumeNum() { bool enable = false; System.Random rm = new System.Random(); int volume = rm.Next(0, 15); setVolumnum.text = "Random number:" + volume.ToString(); enable = Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetVolumeNum(volume); if (!enable) { PLOG.E("SetVolumeNum Error"); } }
/************************************ Public Interfaces **********************************/ #region PublicInterfaces public void ConnectToAndriod() { #if ANDROID_DEVICE try { Debug.Log("PvrLog SDK Version : " + Pvr_UnitySDKAPI.System.UPvr_GetSDKVersion().ToString() + " Unity Script Version :" + Pvr_UnitySDKAPI.System.UPvr_GetUnitySDKVersion().ToString()); UnityEngine.AndroidJavaClass unityPlayer = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = unityPlayer.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity"); javaVrActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.vrlib.VrActivity"); javaserviceClass = new AndroidJavaClass("com.picovr.picovrlib.hummingbirdclient.UnityClient"); javaVrActivityLongReceiver = new UnityEngine.AndroidJavaClass("com.psmart.vrlib.HomeKeyReceiver"); javaSysActivityClass = new UnityEngine.AndroidJavaClass("com.psmart.aosoperation.SysActivity"); javaVrActivityClientClass = new UnityEngine.AndroidJavaClass("com.psmart.vrlib.PvrClient"); Pvr_UnitySDKAPI.System.Pvr_SetInitActivity(activity.GetRawObject(), javaVrActivityClass.GetRawClass()); model = javaVrActivityClass.CallStatic <string>("Pvr_GetBuildModel"); double[] parameters = new double[5]; Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(ref parameters, javaVrActivityClass, "getDPIParameters", activity); int platformType = -1; int enumindex = (int)Pvr_UnitySDKAPI.GlobalIntConfigs.PLATFORM_TYPE; Pvr_UnitySDKAPI.Render.UPvr_GetIntConfig(enumindex, ref platformType); string systemfps = ""; Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod <string>(ref systemfps, javaserviceClass, "getSysproc", "persist.pvr.debug.appfps"); if (systemfps != "") { Pvr_UnitySDKManager.SDK.systemFPS = Convert.ToBoolean(Convert.ToInt16(systemfps)); } if (platformType == 0) { Pvr_UnitySDKAPI.Render.UPvr_ChangeScreenParameters(model, (int)parameters[0], (int)parameters[1], parameters[2], parameters[3], parameters[4]); Screen.sleepTimeout = SleepTimeout.NeverSleep; } if (Pvr_UnitySDKAPI.System.UPvr_IsPicoActivity()) { bool setMonoPresentation = Pvr_UnitySDKAPI.System.UPvr_SetMonoPresentation(); Debug.Log("ConnectToAndriod set monoPresentation success ?-------------" + setMonoPresentation.ToString()); bool isPresentationExisted = Pvr_UnitySDKAPI.System.UPvr_IsPresentationExisted(); Debug.Log("ConnectToAndriod presentation existed ?-------------" + isPresentationExisted.ToString()); } isShellMode = GetIsShellMode(); Debug.Log("ConnectToAndriod isShellMode ?-------------" + isShellMode.ToString()); } catch (AndroidJavaException e) { PLOG.E("ConnectToAndriod--catch" + e.Message); } #endif canConnecttoActivity = true; }
public void SetBrightness() { bool enable = false; System.Random rm = new System.Random(); int brightness = rm.Next(0, 255); setBrightnum.text = "Random number:" + brightness.ToString(); enable = Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetCommonBrightness(brightness); if (!enable) { PLOG.E("SetBrightness Error"); } }
private void InitForEye(ref Material mat, ref Material mat1) { Shader shader = Shader.Find("Pvr_UnitySDK/Undistortion"); Shader shader1 = Shader.Find("Pvr_UnitySDK/FillColor"); if (shader == null || shader1 == null) { PLOG.E("Ths Shader Missing !"); return; } mat = new Material(shader); mat1 = new Material(shader1); }
public static void Pvr_SetScreenBrightnessLevel(int vrBrightness, int level) { #if ANDROID_DEVICE try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaSysActivityClass, "setScreenBrightnessLevel", vrBrightness, level); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); } #endif }
public static int[] Pvr_GetScreenBrightnessLevel() { int[] currentlight = { 0 }; #if ANDROID_DEVICE try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod <int[]>(ref currentlight, javaSysActivityClass, "getScreenBrightnessLevel"); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); } #endif return(currentlight); }
public static int UPvr_GetCurrentVolumeNumber() { #if ANDROID_DEVICE int currentvolm = 0; try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod <int>(ref currentvolm, javaSysActivityClass, "Pvr_GetAudionumber"); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); } return(currentvolm); #endif return(0); }
public static bool UPvr_SetVolumeNum(int volume) { #if ANDROID_DEVICE try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaSysActivityClass, "Pvr_ChangeAudio", volume); return(true); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); return(false); } #endif return(true); }
public static int UPvr_GetCurrentBrightness() { #if ANDROID_DEVICE int currentlight = 0; try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod <int>(ref currentlight, javaSysActivityClass, "Pvr_GetScreen_Brightness", Pvr_UnitySDKManager.pvr_UnitySDKRender.activity); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); } return(currentlight); #endif return(0); }
public static bool UPvr_StopAudioReceiver() { #if ANDROID_DEVICE try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(volumejavaVrActivityClass, "Pvr_StopReceiver", Pvr_UnitySDKManager.pvr_UnitySDKRender.activity); return(true); } catch (Exception e) { PLOG.E("startReceiver Error :" + e.ToString()); return(false); } #endif return(true); }
public static bool UPvr_SetBrightness(int brightness) { #if ANDROID_DEVICE try { Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(javaSysActivityClass, "Pvr_SetScreen_Brightness", brightness, Pvr_UnitySDKManager.pvr_UnitySDKRender.activity); return(true); } catch (Exception e) { PLOG.E(" Error :" + e.ToString()); return(false); } #endif return(true); }
public static bool UPvr_StartAudioReceiver(string startreceivre) { #if ANDROID_DEVICE try { // string startreceivre = PicoVRManager.SDK.gameObject.name; Pvr_UnitySDKAPI.System.UPvr_CallStaticMethod(volumejavaVrActivityClass, "Pvr_StartReceiver", Pvr_UnitySDKManager.pvr_UnitySDKRender.activity, startreceivre); return(true); } catch (Exception e) { PLOG.E("startReceiver Error :" + e.ToString()); return(false); } #endif return(true); }
public bool InitUnitySDKSensor() { bool enable = false; try { if (Pvr_UnitySDKAPI.Sensor.UPvr_Init((int)sensorIndex) == 0) { enable = true; } } catch (System.Exception e) { PLOG.E("InitUnitySDKSensor ERROR! " + e.Message); throw; } return(enable); }
public bool GetUnitySDKPSensorState() { bool enable = false; try { if (Pvr_UnitySDKAPI.Sensor.UPvr_ResetSensor((int)sensorIndex) == 0) { enable = true; } } catch (System.Exception e) { PLOG.E("GetUnitySDKPSensorState ERROR! " + e.Message); throw; } return(enable); }
public Vector3 GetEyeTrackingPos() { if (!Pvr_UnitySDKEyeManager.Instance.trackEyes) { return(Vector3.zero); } EyeDeviceInfo info = GetDeviceInfo(); Vector3 frustumSize = Vector3.zero; frustumSize.x = 0.5f * (info.targetFrustumLeft.right - info.targetFrustumLeft.left); frustumSize.y = 0.5f * (info.targetFrustumLeft.top - info.targetFrustumLeft.bottom); frustumSize.z = info.targetFrustumLeft.near; bool result = Pvr_UnitySDKAPI.System.UPvr_getEyeTrackingData(ref eyePoseData); if (!result) { PLOG.E("UPvr_getEyeTrackingData failed " + result); return(Vector3.zero); } var combinedDirection = Vector3.zero; if ((eyePoseData.combinedEyePoseStatus & (int)pvrEyePoseStatus.kGazeVectorValid) != 0) { combinedDirection = eyePoseData.combinedEyeGazeVector; } if (combinedDirection.sqrMagnitude > 0f) { combinedDirection.Normalize(); float denominator = Vector3.Dot(combinedDirection, Vector3.forward); if (denominator > float.Epsilon) { eyePoint = combinedDirection * frustumSize.z / denominator; eyePoint.x /= frustumSize.x; // [-1..1] eyePoint.y /= frustumSize.y; // [-1..1] } } return(eyePoint); }
/************************************* Unity API ****************************************/ #region Unity API void Awake() { if (instance == null) { instance = this; } if (instance != this) { PLOG.E("instance object should be a singleton."); return; } if (controllerlink == null) { controllerlink = new Pvr_ControllerLink(this.gameObject.name); } else { BindService(); } }
/************************************ Private Interfaces **********************************/ #region Private Interfaces private bool InitRenderAbility() { if (UpdateRenderParaFrame()) { if (CreateEyeBuffer()) { float separation = 0.0625f; int enumindex = (int)Pvr_UnitySDKAPI.GlobalFloatConfigs.IPD; if (0 != Pvr_UnitySDKAPI.Render.UPvr_GetFloatConfig(enumindex, ref separation)) { PLOG.E("Cannot get ipd"); separation = 0.0625f; } Pvr_UnitySDKManager.SDK.leftEyeOffset = new Vector3(-separation / 2, 0, 0); Pvr_UnitySDKManager.SDK.rightEyeOffset = new Vector3(separation / 2, 0, 0); return(true); } } return(false); }
private void LoadResFromJson() { string json = Pvr_UnitySDKAPI.System.UPvr_GetObjectOrArray("config.controller", (int)Pvr_UnitySDKAPI.ResUtilsType.TYPR_OBJECTARRAY); if (json != null) { JsonData jdata = JsonMapper.ToObject(json); if (controllerType >= 0) { curControllerData = jdata[controllerType - 1]; modelFilePath = (string)curControllerData["base_path"]; modelName = (string)curControllerData["model_name"] + "_sys"; } } else { PLOG.E("PvrLog LoadJsonFromSystem Error"); } }
//wait for unity to start rendering IEnumerator Start() { if (SDKManagerInit()) { PLOG.I("SDK Init success."); } else { PLOG.E("SDK Init Failed."); Application.Quit(); } if (Pvr_UnitySDKRender.Instance != null) { Pvr_UnitySDKRender.Instance.ReInit(); } #if UNITY_EDITOR yield break; #else yield return(StartCoroutine(InitRenderThreadRoutine())); #endif }
public float GetEyeHFOV() { float fov = 102; try { int enumindex = (int)Pvr_UnitySDKAPI.GlobalFloatConfigs.HFOV; Pvr_UnitySDKAPI.Render.UPvr_GetFloatConfig(enumindex, ref fov); if (fov <= 0) { fov = 102; } } catch (System.Exception e) { PLOG.E("GetEyeHFOV ERROR! " + e.Message); throw; } return(fov); }