void ShowBuildAvatarUI() { EditorGUILayout.LabelField("Avatar", EditorStyles.boldLabel); avatarGameObject = EditorGUILayout.ObjectField("Avatar", avatarGameObject, typeof(GameObject), true) as GameObject; EditorGUILayout.Space(); avatarName = EditorGUILayout.TextField("Avatar name", avatarName); thumbnailCamera = EditorGUILayout.ObjectField("Thumbnail camera", thumbnailCamera, typeof(Camera), true) as Camera; ShowThumbnail(); var canExport = false; if (avatarGameObject != null && IsLoggedIn && !string.IsNullOrEmpty(avatarName)) { canExport = true; exportSettings = new VRMExportSettings(); exportSettings.InitializeFrom(avatarGameObject); if (string.IsNullOrEmpty(exportSettings.Title)) { exportSettings.Title = avatarName; } if (string.IsNullOrEmpty(exportSettings.Author)) { exportSettings.Author = Username; } foreach (var error in exportSettings.CanExport()) { canExport = false; CreateMessage(new Message(error, MessageType.Error)); } } canBuildAvatar = IsLoggedIn && !string.IsNullOrEmpty(VerifiedToken) && !string.IsNullOrEmpty(avatarName) && thumbnailCamera != null && canExport; EditorGUI.BeginDisabledGroup(!canBuildAvatar || isProcessing); if (GUILayout.Button("Build")) { BuildVRM(); } if (canUploadAvatar) { if (GUILayout.Button("Open test room")) { GetWindow <PreviewLauncherWindow>("Open test room"); } } EditorGUI.EndDisabledGroup(); }
void ShowBuildAvatarUI() { EditorGUILayout.LabelField("Avatar", EditorStyles.boldLabel); avatarGameObject = EditorGUILayout.ObjectField("Avatar", avatarGameObject, typeof(GameObject), true) as GameObject; EditorGUILayout.Space(); avatarName = EditorGUILayout.TextField("Avatar name", avatarName); thumbnailCamera = EditorGUILayout.ObjectField("Thumbnail camera", thumbnailCamera, typeof(Camera), true) as Camera; ShowThumbnail(); var canExport = false; if (avatarGameObject != null && tokenAuth.reactiveUserInfo.Val.HasValue && !string.IsNullOrEmpty(avatarName)) { var userInfo = tokenAuth.reactiveUserInfo.Val.Value; canExport = true; exportSettings = new VRMExportSettings(); exportSettings.InitializeFrom(avatarGameObject); if (string.IsNullOrEmpty(exportSettings.Title)) { exportSettings.Title = avatarName; } if (string.IsNullOrEmpty(exportSettings.Author)) { exportSettings.Author = userInfo.Username; } foreach (var error in exportSettings.CanExport()) { canExport = false; messages.Add(new Message(error, MessageType.Error)); } } canBuildAvatar = tokenAuth.reactiveUserInfo.Val.HasValue && !string.IsNullOrEmpty(avatarName) && thumbnailCamera != null && canExport; EditorGUI.BeginDisabledGroup(!canBuildAvatar || isProcessing); if (GUILayout.Button("Build") && tokenAuth.reactiveUserInfo.Val.HasValue) { BuildVRM(tokenAuth.reactiveUserInfo.Val.Value); } EditorGUI.EndDisabledGroup(); }
/// <summary> /// モデルの出力 /// </summary> public void Save() { if (Title.text == "" || Version.text == "" || Author.text == "") { ExportText.GetComponent <RectTransform>().offsetMax = ErrorPos; ExportErrorText.text = ErrorMsg; return; } ExportText.GetComponent <RectTransform>().offsetMax = Vector2.zero; ExportErrorText.text = ""; #if UNITY_EDITOR var path = Application.dataPath + "/../_exe/Export.vrm"; #else var path = VRM.Samples.FileDialogForWindows.SaveDialog("save VRM", Application.dataPath + "/../"); #endif if (string.IsNullOrEmpty(path)) { return; } else if (string.Compare(Path.GetExtension(path), ".vrm", true) != 0) { path += ".vrm"; } // 表情リセット var proxy = Model.GetComponent <VRMBlendShapeProxy>(); proxy.AccumulateValue(BlendShapePreset.Joy, 0); proxy.AccumulateValue(BlendShapePreset.Angry, 0); proxy.AccumulateValue(BlendShapePreset.Sorrow, 0); proxy.AccumulateValue(BlendShapePreset.Fun, 0); proxy.Apply(); // 身長適用 var scaling = Instantiate(Model); scaling.transform.localScale = Vector3.one * float.Parse(Height.text) / 100; // 再正規化 var model = BoneNormalizer.Execute(scaling, false, false); VRMExportSettings.CopyVRMComponents(scaling, model.Root, model.BoneMap); // メタ情報 var meta = model.Root.GetComponent <VRMMeta>().Meta; meta.Thumbnail = GetTex2D(Thumbnail.texture); meta.Title = Title.text; meta.Version = Version.text; meta.Author = Author.text; meta.ContactInformation = Contact.text; meta.Reference = Reference.text; meta.AllowedUser = (AllowedUser)AllowedUser.value; meta.ViolentUssage = (UssageLicense)Violent.value; meta.SexualUssage = (UssageLicense)Sexual.value; meta.CommercialUssage = (UssageLicense)Commercial.value; meta.OtherPermissionUrl = OtherPermissionUrl.text; meta.LicenseType = (LicenseType)License.value; meta.OtherLicenseUrl = OtherLicenseUrl.text; // 出力 var vrm = VRMExporter.Export(model.Root); var bytes = vrm.ToGlbBytes(); File.WriteAllBytes(path, bytes); Destroy(scaling); Destroy(model.Root); }