private static void InitAvatarSdkMgrIfNeeded()
 {
     if (!AvatarSdkMgr.IsInitialized)
     {
         AvatarSdkMgr.Init(sdkType: SdkType.Offline);
         AvatarSdkMgr.Settings.SeparateHeadAndFaceResources = false;
     }
 }
Пример #2
0
        private IEnumerator Initialize()
        {
            // First of all, initialize the SDK. This sample shows how to provide user-defined implementations for
            // the interfaces if needed. If you don't need to override the default behavior, just pass null instead.
            if (!AvatarSdkMgr.IsInitialized)
            {
                AvatarSdkMgr.Init(
                    stringMgr: stringManager,
                    storage: persistentStorage,
                    sdkType: sdkType
                    );
            }

            GameObject providerContainerGameObject = GameObject.Find("AvatarProviderContainer");

            if (providerContainerGameObject != null)
            {
                avatarProvider = providerContainerGameObject.GetComponent <AvatarProviderContainer>().avatarProvider;
            }
            else
            {
                // Initialization of the IAvatarProvider may take some time.
                // We don't want to initialize it each time when the Gallery scene is loaded.
                // So we store IAvatarProvider instance in the object that will not destroyed during navigation between the scenes (Gallery -> ModelViewer -> Gallery).
                providerContainerGameObject = new GameObject("AvatarProviderContainer");
                DontDestroyOnLoad(providerContainerGameObject);
                AvatarProviderContainer providerContainer = providerContainerGameObject.AddComponent <AvatarProviderContainer>();
                avatarProvider = AvatarSdkMgr.IoCContainer.Create <IAvatarProvider>();
                providerContainer.avatarProvider = avatarProvider;

                var initializeRequest = InitializeAvatarProviderAsync();
                yield return(Await(initializeRequest, null));

                if (initializeRequest.IsError)
                {
                    Debug.LogError("Avatar provider isn't initialized!");
                    yield break;
                }
            }

            yield return(UpdateAvatarList());

            // disable generation buttons until avatar provider initializes
            foreach (var button in galleryControls.GetComponentsInChildren <Button>(false))
            {
                if (button.name.Contains("Generate"))
                {
                    button.interactable = true;
                }
            }
        }
Пример #3
0
    void Start()
    {
        Screen.fullScreen  = false;
        Screen.orientation = ScreenOrientation.Portrait;

        AppSocket.SetOnReceiveHandler(OnReceive);

        if (!AvatarSdkMgr.IsInitialized)
        {
            AvatarSdkMgr.Init();
        }

        avatarProvider = AvatarSdkMgr.IoCContainer.Create <IAvatarProvider>();
        QualitySettings.antiAliasing = 2;

        AppSocket.SendCommand(AppSocket.SendType.UNITY_LOADED);

        if (Application.platform != RuntimePlatform.Android)
        {
            QualitySettings.antiAliasing = 8;
            String marcoBody      = "mech_ferrari";
            String marcoAvatar    = "3907ed35-7071-4ed1-b242-169cb3abc237";
            String marcoHair      = "male_NewSea_J082m";
            String marcoHairColor = "#3E271F";

            String paolaBody      = "sport_female_m";
            String paolaAvatar    = "7d910c92-b62c-4084-8f42-749a2cb94eb2";
            String paolaHair      = "female_NewSea_J096f";
            String paolaHairColor = "#202020";

            String aliceBody      = "medic_female";
            String aliceAvatar    = "063f8e92-4675-4bee-8f4f-a303779b4e3c";
            String aliceHair      = "female_NewSea_J123f";
            String aliceHairColor = "#3E271F";


            if (playerObj != null)
            {
                CreateAvatar("b7ce00b9-3589-4dbd-9b5b-2466233e9d89", paolaAvatar, paolaHair, paolaHairColor);
            }
            else
            {
                CreateAvatar("b7ce00b9-3589-4dbd-9b5b-2466233e9d89", marcoBody, marcoAvatar, marcoHair, marcoHairColor);
            }
        }
    }
Пример #4
0
        public static void StartInitialization()
        {
            lock (initSyncMutex)
            {
                if (!AvatarSdkMgr.IsInitialized)
                {
                    Debug.Log("AvatarSdkMgr.Init");
                    AvatarSdkMgr.Init(sdkType: SdkType.Offline);
                }

                if (!IsInitialized && !IsInitializationInProgress)
                {
                    avatarProvider = AvatarSdkMgr.IoCContainer.Create <IAvatarProvider>();
                    initRoutine    = EditorRunner.instance.Run(InitRoutine());
                }
            }
        }
        protected virtual void Start()
        {
            var ui = buttons.Select(b => b.gameObject).ToArray();

            if (!SampleUtils.CheckIfSupported(progressText, ui, sdkType))
            {
                return;
            }

            // first of all, initialize the SDK
            if (!AvatarSdkMgr.IsInitialized)
            {
                AvatarSdkMgr.Init(sdkType: sdkType);
            }

            StartCoroutine(Initialize());

            // Anti-aliasing is required for hair shader, otherwise nice transparent texture won't work.
            // Another option is to use cutout shader, but the look with this shader isn't that great.
#if UNITY_STANDALONE_WIN || UNITY_EDITOR || UNITY_EDITOR
            QualitySettings.antiAliasing = 8;
#else
            QualitySettings.antiAliasing = 4;
#endif
            foreach (var b in buttons)
            {
#if UNITY_EDITOR || UNITY_WEBGL || UNITY_ANDROID || UNITY_IOS
                if (b.name.Contains("UserPhoto"))
                {
                    b.gameObject.SetActive(true);
                    fileBrowser = b.GetComponentInChildren <FileBrowser>();
                    if (fileBrowser != null)
                    {
                        fileBrowser.fileHandler = GenerateAvatarFunc;
                    }
                }
#endif
#if UNITY_ANDROID || UNITY_IOS
                if (b.name.Contains("CameraPhoto"))
                {
                    b.gameObject.SetActive(true);
                }
#endif
            }
        }
Пример #6
0
        private IEnumerator Initialize()
        {
            if (!AvatarSdkMgr.IsInitialized)
            {
                AvatarSdkMgr.Init(stringMgr: new DefaultStringManager(), storage: new DefaultPersistentStorage(), sdkType: SdkType.Cloud);
            }

            if (avatarProvider == null)
            {
                avatarProvider = new CloudAvatarProvider();
            }
            connection = avatarProvider.Connection;

            var imageItems = sampleImagesPanel.GetComponentsInChildren <ImageItem>();

            foreach (ImageItem item in imageItems)
            {
                item.imageSelectedHandler = HandleSelectedImage;
            }

            if (createdAvatar != null)
            {
                UpdateSelectedImage(selectedImageBytes);
                UpdateAvatarState(avatarState, PipelineType.HEAD);
            }
            image.gameObject.SetActive(true);

            // initialize provider
            if (!avatarProvider.Connection.IsAuthorized)
            {
                yield return(avatarProvider.InitializeAsync());

                if (!avatarProvider.Connection.IsAuthorized)
                {
                    Debug.LogError("Authentication failed!");
                    yield break;
                }
            }
        }