// Use this for initialization void Start() { //"StreamingAssets"フォルダの"VRoid.vrm"を読み込む var path = Application.streamingAssetsPath + "/" + "VRoid.vrm"; // Actionコールバックで生成されたGameObjectが返される VRMImporter.LoadVrmAsync(path, gameObject => { //タグ:プレイヤーのオブジェクトを対象とする gameObject.transform.position = new Vector3(7.0f, 1, 5); gameObject.tag = "Player"; //アニメーターを設定する RuntimeAnimatorController asset = (RuntimeAnimatorController)Instantiate(Resources.Load("Animator/ThirdPersonAnimatorController")); gameObject.GetComponent <Animator>().runtimeAnimatorController = asset; //コライダーなどの設定 gameObject.AddComponent <Rigidbody>(); gameObject.AddComponent <CapsuleCollider>(); gameObject.GetComponent <CapsuleCollider>().height = 1.85f; gameObject.GetComponent <CapsuleCollider>().radius = 0.2f; gameObject.GetComponent <CapsuleCollider>().center = new Vector3(0, 0.85f, 0); gameObject.AddComponent <AnnouncePlayerPosition>(); gameObject.AddComponent <CheckCommand>(); gameObject.AddComponent <ThirdPersonUserControl>(); //カメラを設定 GameObject camera = GameObject.Find("FreeLookCameraRig"); camera.GetComponent <FreeLookCam>().target = gameObject.transform; }); }
public static IEnumerator LoadVrmCoroutine(string path, Action <GameObject> onLoaded) { var www = new WWW(path); yield return(www); VRMImporter.LoadVrmAsync(path, onLoaded); }
void LoadAsync(VRMImporterContext context) { var now = Time.time; VRMImporter.LoadVrmAsync(context, go => { var delta = Time.time - now; Debug.LogFormat("LoadVrmAsync {0:0.0} seconds", delta); OnLoaded(go); }); }
void LoadAsync(VRMImporterContext context) { #if true var now = Time.time; VRMImporter.LoadVrmAsync(context, go => { var delta = Time.time - now; Debug.LogFormat("LoadVrmAsync {0:0.0} seconds", delta); OnLoaded(go); }); #else // ローカルファイルシステムからロードします VRMImporter.LoadVrmAsync(path, OnLoaded); #endif }
/// <summary> /// メタが不要な場合のローダー /// </summary> void LoadVRMClicked_without_meta() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); #elif UNITY_EDITOR var path = UnityEditor.EditorUtility.OpenFilePanel("Open VRM", "", "vrm"); #else var path = Application.dataPath + "/default.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } #if true var bytes = File.ReadAllBytes(path); // なんらかの方法でByte列を得た var context = new VRMImporterContext(); // GLB形式でJSONを取得しParseします context.ParseGlb(bytes); if (m_loadAsync) { // ローカルファイルシステムからロードします LoadAsync(context); } else { context.Load(); OnLoaded(context); } #else // ParseしたJSONをシーンオブジェクトに変換していく if (m_loadAsync) { // ローカルファイルシステムからロードします VRMImporter.LoadVrmAsync(path, OnLoaded); } else { var root = VRMImporter.LoadFromPath(path); OnLoaded(root); } #endif }
private async void ImportVRM(string path, bool ImportForCalibration) { CurrentSettings.VRMPath = path; var context = new VRMImporterContext(path); var bytes = File.ReadAllBytes(path); // GLB形式でJSONを取得しParseします context.ParseVrm(bytes); if (CurrentModel != null) { CurrentModel.transform.SetParent(null); CurrentModel.SetActive(false); Destroy(CurrentModel); CurrentModel = null; } // ParseしたJSONをシーンオブジェクトに変換していく CurrentModel = await VRMImporter.LoadVrmAsync(context); //LipSync LipSync.ImportVRMmodel(CurrentModel); //まばたき blinkController.ImportVRMmodel(CurrentModel); CurrentModel.transform.SetParent(transform, false); SetVRIK(CurrentModel); if (ImportForCalibration == false) { SetCameraLookTarget(); //SetTrackersToVRIK(); } else { var animator = CurrentModel.GetComponent<Animator>(); if (animator != null) { if (CalibrationCamera != null) { CalibrationCamera.Target = animator.GetBoneTransform(HumanBodyBones.Head); CalibrationCamera.gameObject.SetActive(true); } } } }
/// <summary> /// Unload the old model and load the new model from VRM file. /// </summary> /// <param name="path"></param> private void LoadModel(string path) { if (!File.Exists(path)) { return; } GameObject newModel = null; try { // Load from a VRM file. byte[] bytes = File.ReadAllBytes(path); context = new VRMImporterContext(UniGLTF.UnityPath.FromFullpath(path)); context.ParseGlb(bytes); VRMImporter.LoadFromBytes(context); newModel = context.Root; meta = context.ReadMeta(); } catch (Exception ex) { Debug.LogError(ex); return; } if (model) { GameObject.Destroy(model.gameObject); } if (newModel) { model = newModel.AddComponent <HumanPoseTransfer>(); SetMotion(motion, model, meta); model.gameObject.AddComponent <CharacterBehaviour>(); if (uiController) { uiController.Show(meta); } } }
async void Start() { var filePath = Application.streamingAssetsPath + "/" + fileName; var www = new WWW(filePath); await www; // WWWでvrmファイルを読み込み //VRMファイルをGameObjectに変換 var loadGameObject = await VRMImporter.LoadVrmAsync(www.bytes); loadGameObject.transform.localScale = Vector3.one * 1.13f; //サイズ補正 // AvaterControllerをAddする // DIを実行したいのでコンテナ経由でAddComponentする _container.InstantiateComponent <AvaterController>(loadGameObject); _spawnSubject.OnNext(loadGameObject); _spawnSubject.OnCompleted(); }
/// <summary> /// メタが不要な場合のローダー /// </summary> void LoadVRMClicked_without_meta() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); #else var path = Application.dataPath + "/default.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } #if true var bytes = File.ReadAllBytes(path); // なんらかの方法でByte列を得た if (m_loadAsync) { // ローカルファイルシステムからロードします VRMImporter.LoadVrmAsync(bytes, OnLoaded); } else { var root = VRMImporter.LoadFromBytes(bytes); OnLoaded(root); } #else // ParseしたJSONをシーンオブジェクトに変換していく if (m_loadAsync) { // ローカルファイルシステムからロードします VRMImporter.LoadVrmAsync(path, OnLoaded); } else { var root = VRMImporter.LoadFromPath(path); OnLoaded(root); } #endif }
public async void LoadVrm(string name) { var path = Application.streamingAssetsPath + "/" + name + ".vrm"; var www = new WWW(path); await www; var gameObject = await VRMImporter.LoadVrmAsync(www.bytes); gameObject.transform.position = new Vector3(1, 1, 1); gameObject.name = name; //DefaultのAnimation var addAnimation = new AddAnimation(); addAnimation.AddAnimationController(gameObject); //Running用のスクリプトを追加する gameObject.AddComponent <CharacterMove>(); }
void Start() { if (GameManager.Instance.FromVRoidHub) { LoadCharacter(GameManager.Instance.LoadVrmPath); return; } var path = GameManager.Instance.LoadVrmPath; // Byte列を得る var bytes = File.ReadAllBytes(path); var context = new VRMImporterContext(); // GLB形式をParseしてチャンクからJSONを取得しParseします context.ParseGlb(bytes); // 非同期に実行する VRMImporter.LoadVrmAsync(context, go => { StartCoroutine(Setup(go)); }); }
void OnFiles(List <string> aFiles, POINT aPos) { // do something with the dropped file names. aPos will contain the // mouse position within the window where the files has been dropped. Debug.Log("Dropped " + aFiles.Count + " files at: " + aPos + "\n" + aFiles.Aggregate((a, b) => a + "\n" + b)); string path0 = aFiles[0]; try{ byte[] bytes = System.IO.File.ReadAllBytes(path0); var tempVRM = VRMImporter.LoadFromBytes(bytes); tempVRM.transform.SetParent(move_root.transform); tempVRM.transform.position = vrm_root.transform.position; tempVRM.transform.rotation = vrm_root.transform.rotation; Destroy(vrm_root.gameObject); vrm_root = tempVRM.GetComponent <Animator>() as Animator; SetTimeline(); }catch { Debug.Log("MissingRoad"); return; } }
void LoadVRMClicked() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); #else var path = Application.dataPath + "/default.vrm"; #endif if (string.IsNullOrEmpty(path)) { return; } var bytes = File.ReadAllBytes(path); // なんらかの方法でByte列を得た var context = new VRMImporterContext(UniGLTF.UnityPath.FromFullpath(path)); // GLB形式でJSONを取得しParseします context.ParseGlb(bytes); // metaを取得(todo: thumbnailテクスチャのロード) var meta = context.ReadMeta(); Debug.LogFormat("meta: title:{0}", meta.Title); // ParseしたJSONをシーンオブジェクトに変換していく if (m_loadAsync) { LoadAsync(context); } else { VRMImporter.LoadFromBytes(context); OnLoaded(context.Root); } }
public async void Display(string filePath) { var avatarData = await VRMImporter.ReadAllBytesAsync(filePath); await Client.Avatar.GenerateAvatar(avatarData); }
private void LoadModel(string path) { try { // If BVH trigger is still on if (_bvhLoadingTrigger == true) { LoadMotion(_bvhPathSaved); } if (!File.Exists(path)) { return; } Debug.LogFormat("{0}", path); var bytes = File.ReadAllBytes(path); var context = new VRMImporterContext(); // GLB形式でJSONを取得しParseします context.ParseGlb(bytes); // GLTFにアクセスできます Debug.LogFormat("{0}", context.GLTF); // Call License Update function _licensePanel.LicenseUpdatefunc(context); // GLTFからモデルを生成します try { VRMImporter.LoadFromBytes(context); _vrmModel = context.Root; Debug.LogFormat("loaded {0}", _vrmModel.name); } catch (Exception ex) { Debug.LogError(ex); } // Set up Model SetModel(_vrmModel); _facialExpressionPanel.CreateDynamicObject(_vrmModel); _leftEyeSaved = _vrmModel.GetComponent <VRMLookAtBoneApplyer>().LeftEye.Transform; _rightEyeSaved = _vrmModel.GetComponent <VRMLookAtBoneApplyer>().RightEye.Transform; // Send VRM and Eye Transform _informationUpdate.SetVRM(_vrmModel, _leftEyeSaved, _rightEyeSaved); // Get all children in VRM model SkinnedMeshRenderer[] allChildren = _vrmModel.GetComponentsInChildren <SkinnedMeshRenderer>(); foreach (SkinnedMeshRenderer child in allChildren) { child.GetComponent <SkinnedMeshRenderer>().updateWhenOffscreen = true; } // VRMFirstPerson initialization var m_firstPerson = _vrmModel.GetComponent <VRMFirstPerson>(); if (m_firstPerson != null) { m_firstPerson.Setup(); } if (_freeViewpointToggle.isOn) { _closeGameObject.EnableFirstPersonModeOption(); } } catch (Exception e) { _errorMessagePanel.SetMessage(MultipleLanguageSupport.VrmLoadErrorMessage + "\nError message: " + e.Message); throw; } }