ARManager arManagr = FindObjectOfType<ARManager>();
if (arManagr == null)
{
Debug.LogError("Can't find ARManager. You need to add ARManager prefab in scene.");
return;
}
else
{
arCamera = arManagr.gameObject;
}
vPSStudioController = FindObjectOfType<VPSStudioController>();
if (vPSStudioController == null)
{
Debug.LogError("Can't find VPSStudioController. You need to add VPSStudio prefab in scene.");
return;
}
else
{
string serverName = vPSStudioController.vpsServerName;
vPSStudioController.gameObject.SetActive(false);
}
cameraBackgroundBehaviour = FindObjectOfType<CameraBackgroundBehaviour>();
if (cameraBackgroundBehaviour == null)
{
Debug.LogError("Can't find CameraBackgroundBehaviour.");
return;
}
if(rootTrackable == null)
{
Debug.LogError("You need to add RootTrackable.");
}foreach (GameObject eachGameObject in occlusionObjects)
{
Renderer[] cullingRenderer = eachGameObject.GetComponentsInChildren<Renderer>();
foreach (Renderer eachRenderer in cullingRenderer)
{
eachRenderer.material.renderQueue = 1900;
eachRenderer.material = runtimeBuildingMaterial;
}
}if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.WindowsEditor)
{
string simulatePath = vPSStudioController.vpsSimulatePath;
if (Directory.Exists(simulatePath))
{
CameraDevice.GetInstance().Start(simulatePath);
MaxstAR.SetScreenOrientation((int)ScreenOrientation.Portrait);
}
}
else
{
if (CameraDevice.GetInstance().IsFusionSupported(CameraDevice.FusionType.ARCamera))
{
CameraDevice.GetInstance().Start();
}
else
{
TrackerManager.GetInstance().RequestARCoreApk();
}
}
TrackerManager.GetInstance().StartTracker();
if (serverName != "")
{
string vpsquery = "{\"vps_server\":\"" + serverName + "\"}";
TrackerManager.GetInstance().AddTrackerData(vpsquery);
}void Update()
{
TrackerManager.GetInstance().UpdateFrame();
ARFrame arFrame = TrackerManager.GetInstance().GetARFrame();
TrackedImage trackedImage = arFrame.GetTrackedImage();
if (trackedImage.IsTextureId())
{
IntPtr[] cameraTextureIds = trackedImage.GetTextureIds();
cameraBackgroundBehaviour.UpdateCameraBackgroundImage(cameraTextureIds);
}
else
{
cameraBackgroundBehaviour.UpdateCameraBackgroundImage(trackedImage);
}
if(arFrame.GetARLocationRecognizeState() == ARLocationRecognizeState.ARLocationRecognizeStateNormal)
{
Matrix4x4 targetPose = arFrame.GetTransform();
arCamera.transform.position = MatrixUtils.PositionFromMatrix(targetPose);
arCamera.transform.rotation = MatrixUtils.QuaternionFromMatrix(targetPose);
arCamera.transform.localScale = MatrixUtils.ScaleFromMatrix(targetPose);
rootTrackable.SetActive(true);
}
else
{
rootTrackable.SetActive(false);
}
}