diff --git a/.github/latest.md b/.github/latest.md index 9e55f694..708c9229 100644 --- a/.github/latest.md +++ b/.github/latest.md @@ -1,5 +1,9 @@ ## Changelog -### Updates -- fixed an issue causing avatars to be stored locally even if caching was disabled by @harrisonhough in [#150](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/150) \ No newline at end of file +### Updated +- replaced API URLs with model URLs for shortcodes by @rk132 in [#152](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/152) +- updated render api and samples @rYuuk in [#147](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/147) + +### Added +- Added app id to setup guide by @ryuuk in [#145](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/145) \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 449b7ba4..c47e9690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [4.1.0] - 2023.11.29 + +### Updated +- replaced API URLs with model URLs for shortcodes by @rk132 in [#152](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/152) +- updated render api and samples @rYuuk in [#147](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/147) + +### Added +- Added app id to setup guide by @ryuuk in [#145](https://github.com/readyplayerme/rpm-unity-sdk-core/pull/145) + ## [4.0.1] - 2023.11.14 ### Fixed diff --git a/Editor/Analytics/AmplitudeEditorLogger.cs b/Editor/Analytics/AmplitudeEditorLogger.cs index 6325be4f..5ba4e901 100644 --- a/Editor/Analytics/AmplitudeEditorLogger.cs +++ b/Editor/Analytics/AmplitudeEditorLogger.cs @@ -3,6 +3,7 @@ using ReadyPlayerMe.Core.Editor; using UnityEditor; using UnityEngine; +using static ReadyPlayerMe.Core.Analytics.Constants; namespace ReadyPlayerMe.Core.Analytics { @@ -59,190 +60,200 @@ public void LogOpenProject() { if (!isEnabled) return; GenerateSessionId(); - AmplitudeEventLogger.LogEvent(Constants.EventName.OPEN_PROJECT); + AmplitudeEventLogger.LogEvent(EventName.OPEN_PROJECT); } public void LogCloseProject() { - LogEvent(Constants.EventName.CLOSE_PROJECT); + LogEvent(EventName.CLOSE_PROJECT); } public void LogOpenDocumentation(string target) { - LogEvent(Constants.EventName.OPEN_DOCUMENTATION, new Dictionary + LogEvent(EventName.OPEN_DOCUMENTATION, new Dictionary { - { Constants.Properties.TARGET, target } + { Properties.TARGET, target } }); } public void LogOpenFaq(string target) { - LogEvent(Constants.EventName.OPEN_FAQ, new Dictionary + LogEvent(EventName.OPEN_FAQ, new Dictionary { - { Constants.Properties.TARGET, target } + { Properties.TARGET, target } }); } public void LogOpenDiscord(string target) { - LogEvent(Constants.EventName.OPEN_DISCORD, new Dictionary + LogEvent(EventName.OPEN_DISCORD, new Dictionary { - { Constants.Properties.TARGET, target } + { Properties.TARGET, target } }); } public void LogLoadAvatarFromDialog(string avatarUrl, bool eyeAnimation, bool voiceHandler) { - LogEvent(Constants.EventName.LOAD_AVATAR_FROM_DIALOG, new Dictionary + LogEvent(EventName.LOAD_AVATAR_FROM_DIALOG, new Dictionary { - { Constants.Properties.AVATAR_URL, avatarUrl }, - { Constants.Properties.EYE_ANIMATION, eyeAnimation }, - { Constants.Properties.VOICE_HANDLER, voiceHandler } + { Properties.AVATAR_URL, avatarUrl }, + { Properties.EYE_ANIMATION, eyeAnimation }, + { Properties.VOICE_HANDLER, voiceHandler } }); } public void LogUpdatePartnerURL(string previousSubdomain, string newSubdomain) { - LogEvent(Constants.EventName.UPDATED_PARTNER_URL, new Dictionary + LogEvent(EventName.UPDATED_PARTNER_URL, new Dictionary { - { Constants.Properties.PREVIOUS_SUBDOMAIN, previousSubdomain }, - { Constants.Properties.NEW_SUBDOMAIN, newSubdomain } + { Properties.PREVIOUS_SUBDOMAIN, previousSubdomain }, + { Properties.NEW_SUBDOMAIN, newSubdomain } }, new Dictionary { - { Constants.Properties.SUBDOMAIN, newSubdomain } + { Properties.SUBDOMAIN, newSubdomain } }); } public void LogOpenDialog(string dialog) { - LogEvent(Constants.EventName.OPEN_DIALOG, new Dictionary + LogEvent(EventName.OPEN_DIALOG, new Dictionary { - { Constants.Properties.DIALOG, dialog } + { Properties.DIALOG, dialog } }); } - + public void LogBuildApplication(string target, string appName, bool productionBuild) { - LogEvent(Constants.EventName.BUILD_APPLICATION, new Dictionary + LogEvent(EventName.BUILD_APPLICATION, new Dictionary { - { Constants.Properties.TARGET, target }, - { Constants.Properties.APP_NAME, appName }, - { Constants.Properties.PRODUCTION_BUILD, productionBuild }, - { Constants.Properties.APP_IDENTIFIER, Application.identifier } + { Properties.TARGET, target }, + { Properties.APP_NAME, appName }, + { Properties.PRODUCTION_BUILD, productionBuild }, + { Properties.APP_IDENTIFIER, Application.identifier } }); } public void LogMetadataDownloaded(double duration) { - LogEvent(Constants.EventName.METADATA_DOWNLOADED, new Dictionary + LogEvent(EventName.METADATA_DOWNLOADED, new Dictionary { - { Constants.Properties.DURATION, duration } + { Properties.DURATION, duration } }); } public void LogAvatarLoaded(double duration) { - LogEvent(Constants.EventName.AVATAR_LOADED, new Dictionary + LogEvent(EventName.AVATAR_LOADED, new Dictionary { - { Constants.Properties.DURATION, duration } + { Properties.DURATION, duration } }); } public void LogCheckForUpdates() { - LogEvent(Constants.EventName.CHECK_FOR_UPDATES); + LogEvent(EventName.CHECK_FOR_UPDATES); } public void LogSetLoggingEnabled(bool isLoggingEnabled) { - LogEvent(Constants.EventName.SET_LOGGING_ENABLED, new Dictionary + LogEvent(EventName.SET_LOGGING_ENABLED, new Dictionary { - { Constants.Properties.LOGGING_ENABLED, isLoggingEnabled } + { Properties.LOGGING_ENABLED, isLoggingEnabled } }); } public void LogSetCachingEnabled(bool isCachingEnabled) { - LogEvent(Constants.EventName.SET_CACHING_ENABLED, new Dictionary + LogEvent(EventName.SET_CACHING_ENABLED, new Dictionary { - { Constants.Properties.CACHING_ENABLED, isCachingEnabled } + { Properties.CACHING_ENABLED, isCachingEnabled } }); } public void LogClearLocalCache() { - LogEvent(Constants.EventName.CLEAR_LOCAL_CACHE); + LogEvent(EventName.CLEAR_LOCAL_CACHE); } public void LogViewPrivacyPolicy() { - LogEvent(Constants.EventName.PRIVACY_POLICY); + LogEvent(EventName.PRIVACY_POLICY); } public void LogShowInExplorer() { - LogEvent(Constants.EventName.SHOW_IN_EXPLORER); + LogEvent(EventName.SHOW_IN_EXPLORER); } public void LogFindOutMore(HelpSubject subject) { - LogEvent(Constants.EventName.FIND_OUT_MORE, new Dictionary + LogEvent(EventName.FIND_OUT_MORE, new Dictionary { - { Constants.Properties.CONTEXT, helpDataMap[subject] } + { Properties.CONTEXT, helpDataMap[subject] } }); } public void LogOpenSetupGuide() { - LogEvent(Constants.EventName.OPEN_SETUP_GUIDE); + LogEvent(EventName.OPEN_SETUP_GUIDE); } public void LogOpenIntegrationGuide() { - LogEvent(Constants.EventName.OPEN_INTEGRATION_GUIDE); + LogEvent(EventName.OPEN_INTEGRATION_GUIDE); } public void LogLoadQuickStartScene() { - LogEvent(Constants.EventName.LOAD_QUICK_START_SCENE); + LogEvent(EventName.LOAD_QUICK_START_SCENE); } public void LogOpenAvatarDocumentation() { - LogEvent(Constants.EventName.OPEN_AVATAR_DOCUMENTATION); + LogEvent(EventName.OPEN_AVATAR_DOCUMENTATION); } public void LogOpenAnimationDocumentation() { - LogEvent(Constants.EventName.OPEN_ANIMATION_DOCUMENTATION); + LogEvent(EventName.OPEN_ANIMATION_DOCUMENTATION); } public void LogOpenAvatarCreatorDocumentation() { - LogEvent(Constants.EventName.OPEN_AVATAR_CREATOR_DOCUMENTATION); + LogEvent(EventName.OPEN_AVATAR_CREATOR_DOCUMENTATION); } public void LogOpenOptimizationDocumentation() { - LogEvent(Constants.EventName.OPEN_OPTIMIZATION_DOCUMENTATION); + LogEvent(EventName.OPEN_OPTIMIZATION_DOCUMENTATION); } public void LogAvatarCreatorSampleImported() { - LogEvent(Constants.EventName.AVATAR_CREATOR_SAMPLE_IMPORTED); + LogEvent(EventName.AVATAR_CREATOR_SAMPLE_IMPORTED); } - + + public void LogPackageInstalled(string id, string name) + { + LogEvent(EventName.INSTALL_PACKAGE, new Dictionary + { + { "id", id }, + { "name", name }, + }); + } + private void SetUserProperties() { var userProperties = new Dictionary { - { Constants.Properties.ENGINE_VERSION, appData.UnityVersion }, - { Constants.Properties.RENDER_PIPELINE, appData.RenderPipeline }, - { Constants.Properties.SUBDOMAIN, appData.PartnerName }, - { Constants.Properties.APP_NAME, PlayerSettings.productName }, - { Constants.Properties.SDK_TARGET, SDK_TARGET }, - { Constants.Properties.APP_IDENTIFIER, Application.identifier }, - { Constants.Properties.ALLOW_ANALYTICS, true } + { Properties.SDK_SOURCE_URL, PackageManagerHelper.GetSdkPackageSourceUrl() }, + { Properties.ENGINE_VERSION, appData.UnityVersion }, + { Properties.RENDER_PIPELINE, appData.RenderPipeline }, + { Properties.SUBDOMAIN, appData.PartnerName }, + { Properties.APP_NAME, PlayerSettings.productName }, + { Properties.SDK_TARGET, SDK_TARGET }, + { Properties.APP_IDENTIFIER, Application.identifier }, + { Properties.ALLOW_ANALYTICS, true } }; Dictionary modules = ModuleList.GetInstalledModuleVersionDictionary(); @@ -252,7 +263,7 @@ private void SetUserProperties() userProperties.Add(module.Key, module.Value); } - LogEvent(Constants.EventName.SET_USER_PROPERTIES, null, userProperties); + LogEvent(EventName.SET_USER_PROPERTIES, null, userProperties); } private void GenerateSessionId() @@ -262,24 +273,25 @@ private void GenerateSessionId() private void ToggleAnalytics(bool allow) { - LogEvent(Constants.EventName.ALLOW_ANALYTICS, new Dictionary + LogEvent(EventName.ALLOW_ANALYTICS, new Dictionary { - { Constants.Properties.ALLOW, allow } + { Properties.ALLOW, allow } }, new Dictionary { - { Constants.Properties.ENGINE_VERSION, appData.UnityVersion }, - { Constants.Properties.RENDER_PIPELINE, appData.RenderPipeline }, - { Constants.Properties.SUBDOMAIN, appData.PartnerName }, - { Constants.Properties.APP_NAME, PlayerSettings.productName }, - { Constants.Properties.SDK_TARGET, "Unity" }, - { Constants.Properties.APP_IDENTIFIER, Application.identifier }, - { Constants.Properties.ALLOW_ANALYTICS, allow } + { Properties.ENGINE_VERSION, appData.UnityVersion }, + { Properties.RENDER_PIPELINE, appData.RenderPipeline }, + { Properties.SUBDOMAIN, appData.PartnerName }, + { Properties.APP_NAME, PlayerSettings.productName }, + { Properties.SDK_TARGET, "Unity" }, + { Properties.APP_IDENTIFIER, Application.identifier }, + { Properties.ALLOW_ANALYTICS, allow } }); } - + private void LogEvent(string eventName, Dictionary eventProperties = null, Dictionary userProperties = null) { if (!isEnabled) return; + AmplitudeEventLogger.LogEvent(eventName, eventProperties, userProperties); } } diff --git a/Editor/Analytics/Constants.cs b/Editor/Analytics/Constants.cs index 73b4373b..45b039a3 100644 --- a/Editor/Analytics/Constants.cs +++ b/Editor/Analytics/Constants.cs @@ -32,10 +32,12 @@ public static class EventName public const string OPEN_AVATAR_CREATOR_DOCUMENTATION = "open avatar creator documentation"; public const string OPEN_OPTIMIZATION_DOCUMENTATION = "open optimization documentation"; public const string AVATAR_CREATOR_SAMPLE_IMPORTED = "Avatar creator sample imported"; + public const string INSTALL_PACKAGE = "install unity package"; } public static class Properties { + public const string SDK_SOURCE_URL = "sdk source url"; public const string ENGINE_VERSION = "engine version"; public const string RENDER_PIPELINE = "render pipeline"; public const string SUBDOMAIN = "subdomain"; diff --git a/Editor/Analytics/IAnalyticsEditorLogger.cs b/Editor/Analytics/IAnalyticsEditorLogger.cs index b6ebc252..10e6a03c 100644 --- a/Editor/Analytics/IAnalyticsEditorLogger.cs +++ b/Editor/Analytics/IAnalyticsEditorLogger.cs @@ -1,3 +1,5 @@ +using ReadyPlayerMe.Core.Editor; + namespace ReadyPlayerMe.Core.Analytics { public interface IAnalyticsEditorLogger @@ -31,5 +33,6 @@ public interface IAnalyticsEditorLogger void LogOpenAvatarCreatorDocumentation(); void LogOpenOptimizationDocumentation(); void LogAvatarCreatorSampleImported(); + void LogPackageInstalled(string id, string name); } } diff --git a/Editor/Module Management/ModuleList.cs b/Editor/Module Management/ModuleList.cs index aa1e1c75..94861f26 100644 --- a/Editor/Module Management/ModuleList.cs +++ b/Editor/Module Management/ModuleList.cs @@ -14,7 +14,7 @@ public static class ModuleList name = "com.readyplayerme.core", gitUrl = "https://github.com/readyplayerme/rpm-unity-sdk-core.git", branch = "", - version = "4.0.1" + version = "4.1.0" }; /// diff --git a/Editor/UI/BreakingChangeDialog.meta b/Editor/UI/EditorWindows/BreakingChangeDialog.meta similarity index 100% rename from Editor/UI/BreakingChangeDialog.meta rename to Editor/UI/EditorWindows/BreakingChangeDialog.meta diff --git a/Editor/UI/BreakingChangeDialog/BreakingChangeDialog.cs b/Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.cs similarity index 100% rename from Editor/UI/BreakingChangeDialog/BreakingChangeDialog.cs rename to Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.cs diff --git a/Editor/UI/BreakingChangeDialog/BreakingChangeDialog.cs.meta b/Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.cs.meta similarity index 100% rename from Editor/UI/BreakingChangeDialog/BreakingChangeDialog.cs.meta rename to Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.cs.meta diff --git a/Editor/UI/BreakingChangeDialog/BreakingChangeDialog.uxml b/Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.uxml similarity index 100% rename from Editor/UI/BreakingChangeDialog/BreakingChangeDialog.uxml rename to Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.uxml diff --git a/Editor/UI/BreakingChangeDialog/BreakingChangeDialog.uxml.meta b/Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.uxml.meta similarity index 100% rename from Editor/UI/BreakingChangeDialog/BreakingChangeDialog.uxml.meta rename to Editor/UI/EditorWindows/BreakingChangeDialog/BreakingChangeDialog.uxml.meta diff --git a/Editor/UI/EditorWindows/SetupGuide/SetupGuide.cs b/Editor/UI/EditorWindows/SetupGuide/SetupGuide.cs index 8c7570ef..7b3d4c5c 100644 --- a/Editor/UI/EditorWindows/SetupGuide/SetupGuide.cs +++ b/Editor/UI/EditorWindows/SetupGuide/SetupGuide.cs @@ -56,6 +56,9 @@ public void CreateGUI() StartStateMachine(); } + private string currentSubdomain; + private string currentAppId; + private VisualElement InitializeSubdomainPanel() { var headerLabel = rootVisualElement.Q /// The url to the avatars .glb file. - /// The to use for the avatar render. - /// - /// The name of the that contains the blendshapes you - /// want to set. - /// - /// A map of blendshape names and values that you want to set. + /// Settings for render. public async void LoadRender( string url, - AvatarRenderScene renderScene, - string[] blendShapeMeshes = null, - Dictionary renderBlendShapes = null - ) + AvatarRenderSettings renderSettings) { - var renderSettings = new AvatarRenderSettings - { - Model = url, - Scene = renderScene, - BlendShapeMeshes = blendShapeMeshes, - BlendShapes = renderBlendShapes - }; - var context = new AvatarContext(); - context.Url = renderSettings.Model; + context.Url = url; context.RenderSettings = renderSettings; executor = new OperationExecutor(new IOperation[] diff --git a/Runtime/Data/ApplicationData.cs b/Runtime/Data/ApplicationData.cs index 71d37f09..da579fe3 100644 --- a/Runtime/Data/ApplicationData.cs +++ b/Runtime/Data/ApplicationData.cs @@ -6,7 +6,7 @@ namespace ReadyPlayerMe.Core { public static class ApplicationData { - private const string SDK_VERSION = "v4.0.1"; + private const string SDK_VERSION = "v4.1.0"; private const string TAG = "ApplicationData"; private const string DEFAULT_RENDER_PIPELINE = "Built-In Render Pipeline"; private static readonly AppData Data; diff --git a/Runtime/Data/AvatarRenderSettings.cs b/Runtime/Data/AvatarRenderSettings.cs index 22e3e2c4..0bf2ecee 100644 --- a/Runtime/Data/AvatarRenderSettings.cs +++ b/Runtime/Data/AvatarRenderSettings.cs @@ -1,34 +1,79 @@ using System.Collections.Generic; using System.Globalization; +using UnityEngine; namespace ReadyPlayerMe.Core { + [System.Serializable] + public struct BlendShape + { + public string Name; + public float Value; + public BlendShape(string name, float value) + { + Name = name; + Value = value; + } + } + /// /// This structure holds all the data required a request to the Avatar Render API. /// - public struct AvatarRenderSettings + [System.Serializable] + public class AvatarRenderSettings { - public string Model; - public AvatarRenderScene Scene; - public string[] BlendShapeMeshes; - public Dictionary BlendShapes; + public Expression Expression = Expression.None; + public RenderPose Pose = RenderPose.Relaxed; + public RenderCamera Camera = RenderCamera.Portrait; + public int Quality = 100; + public int Size = 800; + public Color Background = Color.white; + public bool IsTransparent; + public List BlendShapes; public string GetParametersAsString() { - BlendShapes ??= new Dictionary(); var queryBuilder = new QueryBuilder(); - queryBuilder.AddKeyValue(AvatarAPIParameters.RENDER_SCENE, Scene.GetSceneNameAsString()); - foreach (KeyValuePair blendShape in BlendShapes) + if (Expression != Expression.None) { - foreach (var blendShapeMesh in BlendShapeMeshes) + queryBuilder.AddKeyValue(nameof(Core.Expression).ToCamelCase(), Expression.ToString().ToCamelCase()); + } + + queryBuilder.AddKeyValue(nameof(Pose).ToCamelCase(), RenderSettingsHelper.RenderPoseMap[Pose]); + + if (BlendShapes != null) + { + foreach (var blendShape in BlendShapes) { - string key = $"{AvatarAPIParameters.RENDER_BLEND_SHAPES}[{blendShapeMesh}][{blendShape.Key}]"; - string value = blendShape.Value.ToString(CultureInfo.InvariantCulture); + var key = $"{AvatarAPIParameters.RENDER_BLEND_SHAPES}[{blendShape.Name}]"; + var value = blendShape.Value.ToString(CultureInfo.InvariantCulture); queryBuilder.AddKeyValue(key, value); } } - + + queryBuilder.AddKeyValue(nameof(Camera).ToCamelCase(), Camera.ToString().ToLower()); + + // TODO Quality is only supported by jpg. Find better approach for this. + // if (Quality == 0) + // { + // Quality = 100; + // } + // queryBuilder.AddKeyValue(nameof(Quality).ToCamelCase(), Quality.ToString()); + + if (Size == 0) + { + Size = 800; + } + + queryBuilder.AddKeyValue(nameof(Size).ToCamelCase(), Size.ToString()); + + if (!IsTransparent) + { + queryBuilder.AddKeyValue(nameof(Background).ToCamelCase(), RenderSettingsHelper.FloatToRGBString(Background)); + } + return queryBuilder.Query; } + } } diff --git a/Runtime/Data/Enums.cs b/Runtime/Data/Enums.cs index 97dd119e..bb330ee3 100644 --- a/Runtime/Data/Enums.cs +++ b/Runtime/Data/Enums.cs @@ -34,18 +34,6 @@ public enum MeshType TeethMesh } - /// - /// This enumeration describes the different render scene options. - /// - public enum AvatarRenderScene - { - [Description("Upper body render")] FullbodyPortrait, - [Description("Upper body render")] HalfbodyPortrait, - [Description("Upper body render with transparent background")] FullbodyPortraitTransparent, - [Description("Upper body render with transparent background")] HalfbodyPortraitTransparent, - [Description("Posed full body render with transparent background")] FullBodyPostureTransparent - } - /// /// This enumeration describes the pose options for the avatar skeleton. /// @@ -111,5 +99,29 @@ public enum FailureType AvatarRenderError, OperationCancelled } + + public enum Expression + { + None, + Happy, + Lol, + Sad, + Scared, + Rage, + } + + public enum RenderPose + { + Relaxed, + PowerStance, + Standing, + ThumbsUp, + } + + public enum RenderCamera + { + Portrait, + FullBody + } } diff --git a/Runtime/Operations/UrlProcessor.cs b/Runtime/Operations/UrlProcessor.cs index be1b4b61..291dc33c 100644 --- a/Runtime/Operations/UrlProcessor.cs +++ b/Runtime/Operations/UrlProcessor.cs @@ -11,7 +11,7 @@ public class UrlProcessor : IOperation { private const string TAG = nameof(UrlProcessor); - private const string SHORT_CODE_BASE_URL = "https://api.readyplayer.me/v1/avatars"; + private const string SHORT_CODE_BASE_URL = "https://models.readyplayer.me"; private const string GLB_EXTENSION = ".glb"; private const string JSON_EXTENSION = ".json"; private const string URL_STRING_IS_NULL = "Url string is null"; diff --git a/Runtime/Utils/RenderSceneHelper.cs b/Runtime/Utils/RenderSceneHelper.cs deleted file mode 100644 index 912ceb65..00000000 --- a/Runtime/Utils/RenderSceneHelper.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; - -namespace ReadyPlayerMe.Core -{ - public static class RenderSceneHelper - { - public static string GetSceneNameAsString(this AvatarRenderScene avatarRenderScene) - { - return RenderSceneMap[avatarRenderScene]; - } - - public static readonly Dictionary RenderSceneMap = new Dictionary - { - { AvatarRenderScene.FullbodyPortrait, "fullbody-portrait-v1" }, - { AvatarRenderScene.HalfbodyPortrait, "halfbody-portrait-v1" }, - { AvatarRenderScene.FullbodyPortraitTransparent, "fullbody-portrait-v1-transparent" }, - { AvatarRenderScene.HalfbodyPortraitTransparent, "halfbody-portrait-v1-transparent" }, - { AvatarRenderScene.FullBodyPostureTransparent, "fullbody-posture-v1-transparent" } - }; - } -} diff --git a/Runtime/Utils/RenderSettingsHelper.cs b/Runtime/Utils/RenderSettingsHelper.cs new file mode 100644 index 00000000..5fd17104 --- /dev/null +++ b/Runtime/Utils/RenderSettingsHelper.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace ReadyPlayerMe.Core +{ + public static class RenderSettingsHelper + { + public static string ToCamelCase(this string str) + { + if (string.IsNullOrEmpty(str)) + return string.Empty; + + var letters = str.ToCharArray(); + letters[0] = char.ToLower(letters[0]); + return new string(letters); + } + + public static Dictionary RenderPoseMap = new Dictionary() + { + { RenderPose.PowerStance, "power-stance" }, + { RenderPose.Relaxed, "relaxed" }, + { RenderPose.Standing, "standing" }, + { RenderPose.ThumbsUp, "thumbs-up" } + }; + + public static string FloatToRGBString(Color color) + { + return $"{(int) (color.r * 255)},{(int) (color.g * 255)},{(int) (color.b * 255)}"; + } + } +} diff --git a/Runtime/Utils/RenderSceneHelper.cs.meta b/Runtime/Utils/RenderSettingsHelper.cs.meta similarity index 100% rename from Runtime/Utils/RenderSceneHelper.cs.meta rename to Runtime/Utils/RenderSettingsHelper.cs.meta diff --git a/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.cs b/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.cs index a2db71db..3e7cae21 100644 --- a/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.cs +++ b/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.cs @@ -9,7 +9,7 @@ namespace ReadyPlayerMe.Samples public class AvatarLoadingExample : MonoBehaviour { [SerializeField][Tooltip("Set this to the URL or shortcode of the Ready Player Me Avatar you want to load.")] - private string avatarUrl = "https://api.readyplayer.me/v1/avatars/638df693d72bffc6fa17943c.glb"; + private string avatarUrl = "https://models.readyplayer.me/638df693d72bffc6fa17943c.glb"; private GameObject avatar; diff --git a/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.unity b/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.unity index 614b2795..902eb000 100644 --- a/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.unity +++ b/Samples~/AvatarLoadingSamples/AvatarLoading/AvatarLoadingExample.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4465782, g: 0.49641186, b: 0.5748162, a: 1} + m_IndirectSpecularColor: {r: 0.44657832, g: 0.49641258, b: 0.57481676, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -1874,7 +1874,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5ec678a30bb724ed9999a22a9e41d8af, type: 3} m_Name: m_EditorClassIdentifier: - avatarUrl: https://api.readyplayer.me/v1/avatars/638df693d72bffc6fa17943c.glb + avatarUrl: https://models.readyplayer.me/638df693d72bffc6fa17943c.glb --- !u!114 &2024074594 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Samples~/AvatarLoadingSamples/AvatarLod/AvatarLodExample.unity b/Samples~/AvatarLoadingSamples/AvatarLod/AvatarLodExample.unity index bde693d2..b5d15b07 100644 --- a/Samples~/AvatarLoadingSamples/AvatarLod/AvatarLodExample.unity +++ b/Samples~/AvatarLoadingSamples/AvatarLod/AvatarLodExample.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657815, g: 0.49641192, b: 0.57481617, a: 1} + m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -534,7 +534,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: lodExampleUI: {fileID: 217845738} - avatarUrl: https://api.readyplayer.me/v1/avatars/638df693d72bffc6fa17943c.glb + avatarUrl: https://models.readyplayer.me/638df693d72bffc6fa17943c.glb lodConfigs: - {fileID: 11400000, guid: 99552ccf737554f2fab58e864f9416e4, type: 2} - {fileID: 11400000, guid: 1d2a8b01037e24f54b99b6aa9a51f0db, type: 2} @@ -1655,7 +1655,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 6930787863501114648} m_HandleRect: {fileID: 6930787863501114655} m_Direction: 2 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: diff --git a/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.cs b/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.cs index 5fa40c95..c618be18 100644 --- a/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.cs +++ b/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.cs @@ -14,10 +14,10 @@ public class MultipleAvatarLoadingExample : MonoBehaviour [SerializeField][Tooltip("Set this to the URL or shortcodes of the Ready Player Me Avatar you want to load.")] private string[] avatarUrls = { - "https://api.readyplayer.me/v1/avatars/638df5fc5a7d322604bb3a58.glb", - "https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb", - "https://api.readyplayer.me/v1/avatars/638df75e5a7d322604bb3dcd.glb", - "https://api.readyplayer.me/v1/avatars/638df7d1d72bffc6fa179763.glb" + "https://models.readyplayer.me/638df5fc5a7d322604bb3a58.glb", + "https://models.readyplayer.me/638df70ed72bffc6fa179596.glb", + "https://models.readyplayer.me/638df75e5a7d322604bb3dcd.glb", + "https://models.readyplayer.me/638df7d1d72bffc6fa179763.glb" }; private List avatarList; @@ -69,7 +69,7 @@ private IEnumerator LoadAvatars(HashSet urlSet) yield return new WaitUntil(() => !loading); } } - + /// This method is called after the avatar has been loadded and setup in the scene and is used to set the position of the GameObject in the scene. private void OnAvatarLoaded(GameObject avatar) { diff --git a/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.unity b/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.unity index 8f612511..ec53a905 100644 --- a/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.unity +++ b/Samples~/AvatarLoadingSamples/MultipleAvatarLoading/MultipleAvatarLoadingExample.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4465782, g: 0.49641186, b: 0.5748162, a: 1} + m_IndirectSpecularColor: {r: 0.44657832, g: 0.49641258, b: 0.57481676, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -207,7 +207,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 2143326212} m_HandleRect: {fileID: 2143326211} m_Direction: 2 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: @@ -1815,10 +1815,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: avatarUrls: - - https://api.readyplayer.me/v1/avatars/638df5fc5a7d322604bb3a58.glb - - https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb - - https://api.readyplayer.me/v1/avatars/638df75e5a7d322604bb3dcd.glb - - https://api.readyplayer.me/v1/avatars/638df7d1d72bffc6fa179763.glb + - https://models.readyplayer.me/638df5fc5a7d322604bb3a58.glb + - https://models.readyplayer.me/638df70ed72bffc6fa179596.glb + - https://models.readyplayer.me/638df75e5a7d322604bb3dcd.glb + - https://models.readyplayer.me/638df7d1d72bffc6fa179763.glb --- !u!114 &2024074594 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.cs b/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.cs index 2880a65f..9caf991d 100644 --- a/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.cs +++ b/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.cs @@ -11,7 +11,7 @@ public class MultipleQualityAvatarLoadingExample : MonoBehaviour { [SerializeField] - private string avatarUrl = "https://api.readyplayer.me/v1/avatars/638df75e5a7d322604bb3dcd.glb"; + private string avatarUrl = "https://models.readyplayer.me/638df75e5a7d322604bb3dcd.glb"; [SerializeField] private Transform qualityContainerPrefab; [SerializeField] diff --git a/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.unity b/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.unity index 68cdbd0d..d67662ae 100644 --- a/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.unity +++ b/Samples~/AvatarLoadingSamples/MultipleQualityAvatarLoading/MultipleQualityAvatarLoadingExample.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4465782, g: 0.49641186, b: 0.5748162, a: 1} + m_IndirectSpecularColor: {r: 0.44657832, g: 0.49641258, b: 0.57481676, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -1814,7 +1814,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 224f12c77efd85442b0ee207215e2259, type: 3} m_Name: m_EditorClassIdentifier: - avatarUrl: https://api.readyplayer.me/v1/avatars/638df75e5a7d322604bb3dcd.glb + avatarUrl: https://models.readyplayer.me/638df75e5a7d322604bb3dcd.glb qualityContainerPrefab: {fileID: 1853687888834283808, guid: 7e49cdc951d802d4d9bfdf45578ca7f8, type: 3} avatarConfigs: diff --git a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs b/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs deleted file mode 100644 index fc121a7d..00000000 --- a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using ReadyPlayerMe.Core; -using UnityEngine; - -namespace ReadyPlayerMe.Samples -{ - /// - /// This class is a simple example on how to load a request a 2D render of a Ready Player Me avatar at runtime. - /// - public class MultipleAvatarRenderExample : MonoBehaviour - { - [Serializable] - private class RenderData - { - public string url; - public AvatarRenderScene avatarRenderScene; - public bool imageLoaded; - } - - private const string TAG = nameof(MultipleAvatarRenderExample); - - [SerializeField] - private GameObject renderPanelPrefab; - [SerializeField] - private Transform renderPanelParent; - [SerializeField] - private RenderData[] dataList; - [SerializeField] - private GameObject loadingPanel; - - /// A collection of blendshape names and values to pose the face mesh into a smile using blendshapes - private readonly Dictionary blendShapes = new Dictionary - { - { "mouthSmile", 0.7f }, - { "viseme_aa", 0.5f }, - { "jawOpen", 0.3f } - }; - - private readonly string[] blendShapeMeshes = { "Wolf3D_Head", "Wolf3D_Teeth" }; - - - private async void Start() - { - loadingPanel.SetActive(true); - - foreach (var renderData in dataList) - { - var avatarRenderer = new AvatarRenderLoader(); - avatarRenderer.OnCompleted = texture => - { - var renderPanel = Instantiate(renderPanelPrefab, renderPanelParent).GetComponent(); - renderPanel.SetHeading(renderData.avatarRenderScene.ToString()); - renderPanel.SetImage(texture); - SDKLogger.Log(TAG, "Sprite Updated "); - renderData.imageLoaded = true; - }; - avatarRenderer.OnFailed = Fail; - avatarRenderer.LoadRender(renderData.url, renderData.avatarRenderScene, blendShapeMeshes, blendShapes); - } - - while (dataList.Any(x => !x.imageLoaded)) - { - await Task.Yield(); - } - loadingPanel.SetActive(false); - } - - private void Fail(FailureType type, string message) - { - SDKLogger.Log(TAG, $"Failed with error type: {type} and message: {message}"); - } - } -} diff --git a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs.meta b/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs.meta deleted file mode 100644 index 3b201264..00000000 --- a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b2b358f16db09e64994ed07b04a9b298 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.unity b/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.unity index f463699b..6440d713 100644 --- a/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.unity +++ b/Samples~/AvatarRenderSamples/MultipleRenders/MultipleAvatarRenderExample.unity @@ -123,6 +123,12 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!224 &241835410 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1801183339} + m_PrefabAsset: {fileID: 0} --- !u!1 &466104546 GameObject: m_ObjectHideFlags: 0 @@ -263,8 +269,148 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &710653065 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Camera - FullBody + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: Camera-FullBody + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Camera + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &710653066 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 710653065} + m_PrefabAsset: {fileID: 0} --- !u!1 &856270645 GameObject: m_ObjectHideFlags: 0 @@ -358,6 +504,581 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1001 &1009515784 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Size - 200 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: Size-200 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Size + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1009515785 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1009515784} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1035094397 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Expression - Lol + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: Expression-Lol + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Expression + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1035094398 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1035094397} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1050156604 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Background + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: Background + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: url + value: https://models.readyplayer.me/638f2c7775f8551b54c8db58.glb + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Background.b + value: 0.3964934 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Background.g + value: 0.8490566 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Background.r + value: 0.45435616 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1050156605 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1050156604} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1253108676 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Pose - PowerStance + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: Pose-PowerStance + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: url + value: https://models.readyplayer.me/638f2c7775f8551b54c8db58.glb + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.Pose + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1253108677 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1253108676} + m_PrefabAsset: {fileID: 0} --- !u!1 &1686903586 GameObject: m_ObjectHideFlags: 0 @@ -434,6 +1155,146 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1686903586} m_CullTransparentMesh: 0 +--- !u!1001 &1745095057 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Default + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: DefaultFemale + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: url + value: https://models.readyplayer.me/638f2c7775f8551b54c8db58.glb + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1745095058 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1745095057} + m_PrefabAsset: {fileID: 0} --- !u!1 &1780657447 GameObject: m_ObjectHideFlags: 0 @@ -444,6 +1305,8 @@ GameObject: m_Component: - component: {fileID: 1780657448} - component: {fileID: 1780657449} + - component: {fileID: 1780657451} + - component: {fileID: 1780657450} m_Layer: 5 m_Name: Renders m_TagString: Untagged @@ -461,7 +1324,15 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_Children: + - {fileID: 1963762061} + - {fileID: 1745095058} + - {fileID: 710653066} + - {fileID: 1253108677} + - {fileID: 1035094398} + - {fileID: 1050156605} + - {fileID: 1009515785} + - {fileID: 241835410} m_Father: {fileID: 1966123671} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -479,7 +1350,7 @@ MonoBehaviour: m_GameObject: {fileID: 1780657447} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} m_Name: m_EditorClassIdentifier: m_Padding: @@ -487,78 +1358,220 @@ MonoBehaviour: m_Right: 0 m_Top: 0 m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 1 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!1 &1794436997 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1794436998} - - component: {fileID: 1794436999} - m_Layer: 0 - m_Name: AvatarRender Test - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1794436998 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1794436997} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1794436999 + m_ChildAlignment: 4 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 300, y: 500} + m_Spacing: {x: 40, y: 40} + m_Constraint: 1 + m_ConstraintCount: 4 +--- !u!114 &1780657450 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1794436997} + m_GameObject: {fileID: 1780657447} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b2b358f16db09e64994ed07b04a9b298, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: - renderPanelPrefab: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, - type: 3} - renderPanelParent: {fileID: 1780657448} - dataList: - - url: https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb - avatarRenderScene: 0 - imageLoaded: 0 - - url: https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb - avatarRenderScene: 2 - imageLoaded: 0 - - url: https://models.readyplayer.me/63ff40ce9dc8b8dcb3b575af.glb - avatarRenderScene: 1 - imageLoaded: 0 - - url: https://models.readyplayer.me/63da539e72f63b7131df0782.glb - avatarRenderScene: 3 - imageLoaded: 0 - - url: https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb - avatarRenderScene: 4 - imageLoaded: 0 - loadingPanel: {fileID: 466104546} + m_Material: {fileID: 0} + m_Color: {r: 0.14117648, g: 0.14117648, b: 0.14117648, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1780657451 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780657447} + m_CullTransparentMesh: 1 +--- !u!1001 &1801183339 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: BlendShapes + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: BlendShapes + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: url + value: https://models.readyplayer.me/638f2c7775f8551b54c8db58.glb + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[0].Name + value: eyesClosed + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[1].Name + value: mouthOpen + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[2].Name + value: jawOpen + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[0].Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[1].Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.BlendShapes.Array.data[2].Value + value: 0.3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} --- !u!1 &1847572708 GameObject: m_ObjectHideFlags: 0 @@ -638,6 +1651,141 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1847572708} m_CullTransparentMesh: 0 +--- !u!1001 &1963762060 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1780657448} + m_Modifications: + - target: {fileID: 1820940057479062491, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Text + value: Default + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820940057543154025, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: m_Name + value: DefaultMale + objectReference: {fileID: 0} + - target: {fileID: 2616518480041139177, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + propertyPath: renderSettings.IsTransparent + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86b528853dfd4214a8140eee1b7ed309, type: 3} +--- !u!224 &1963762061 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1820940057543154022, guid: 86b528853dfd4214a8140eee1b7ed309, + type: 3} + m_PrefabInstance: {fileID: 1963762060} + m_PrefabAsset: {fileID: 0} --- !u!1 &1966123667 GameObject: m_ObjectHideFlags: 0 @@ -732,7 +1880,7 @@ RectTransform: - {fileID: 1780657448} - {fileID: 466104547} m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} diff --git a/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.cs b/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.cs index 38b23874..8870858f 100644 --- a/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.cs +++ b/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.cs @@ -1,4 +1,4 @@ -using System.Linq; +using ReadyPlayerMe.Core; using UnityEngine; using UnityEngine.UI; @@ -6,21 +6,22 @@ namespace ReadyPlayerMe.Samples { public class RenderPanel : MonoBehaviour { - public Text heading; - public Image image; - - public void SetHeading(string text) + [SerializeField] private string url = "https://models.readyplayer.me/632d65e99b4c6a4352a9b8db.glb"; + [SerializeField] private AvatarRenderSettings renderSettings; + [SerializeField] private Image image; + + private void Start() { - var headingText = string.Concat(text.Select(x => char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' '); - heading.text = headingText; + var avatarRenderLoader = new AvatarRenderLoader(); + avatarRenderLoader.OnCompleted = SetImage; + avatarRenderLoader.LoadRender(url, renderSettings); } - public void SetImage(Texture2D texture) + private void SetImage(Texture2D texture) { var sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f)); image.sprite = sprite; image.preserveAspect = true; } - } } diff --git a/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.prefab b/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.prefab index 9b19b63a..1bcdb2e0 100644 --- a/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.prefab +++ b/Samples~/AvatarRenderSamples/MultipleRenders/RenderPanel.prefab @@ -1,81 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &1820940057046719965 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1820940057046719962} - - component: {fileID: 1820940057046719960} - - component: {fileID: 1820940057046719963} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1820940057046719962 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1820940057046719965} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1820940057479062490} - m_Father: {fileID: 1820940057543154022} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -6.613098, y: -21.101196} - m_SizeDelta: {x: -101.4547, y: 111.7143} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &1820940057046719960 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1820940057046719965} - m_CullTransparentMesh: 1 ---- !u!114 &1820940057046719963 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1820940057046719965} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 --- !u!1 &1820940057479062493 GameObject: m_ObjectHideFlags: 0 @@ -105,13 +29,13 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 1820940057046719962} - m_RootOrder: 0 + m_Father: {fileID: 1820940057543154022} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_AnchoredPosition: {x: 0.00012207031, y: -194.14716} + m_SizeDelta: {x: -101.4547, y: -388.2857} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1820940057479062488 CanvasRenderer: @@ -186,7 +110,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 1820940058479533443} - - {fileID: 1820940057046719962} + - {fileID: 1820940057479062490} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -207,8 +131,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f926b769b4d1dd44eace3c1a6e04701d, type: 3} m_Name: m_EditorClassIdentifier: - heading: {fileID: 1820940057479062491} + url: https://models.readyplayer.me/632d65e99b4c6a4352a9b8db.glb + renderSettings: + Expression: 0 + Pose: 0 + Camera: 0 + Quality: 100 + Size: 800 + Background: {r: 1, g: 1, b: 1, a: 1} + IsTransparent: 0 image: {fileID: 1820940058479533440} + heading: {fileID: 1820940057479062491} --- !u!1 &1820940058479533442 GameObject: m_ObjectHideFlags: 0 @@ -243,8 +176,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -44} - m_SizeDelta: {x: -180, y: -618.8975} + m_AnchoredPosition: {x: 0.00012207031, y: 55.85498} + m_SizeDelta: {x: 0, y: -111.71} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1820940058479533441 CanvasRenderer: diff --git a/Samples~/AvatarRenderSamples/SingleRender.meta b/Samples~/AvatarRenderSamples/SingleRender.meta deleted file mode 100644 index f34c9123..00000000 --- a/Samples~/AvatarRenderSamples/SingleRender.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9880f04e6460c493d81cd7d9c46c9166 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs b/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs deleted file mode 100644 index cac7dc1d..00000000 --- a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Collections.Generic; -using ReadyPlayerMe.Core; -using UnityEngine; - -namespace ReadyPlayerMe.Samples -{ - /// - /// This class is a simple to serve as an example on how to load a request a 2D render of a Ready Player Me avatar at runtime. - /// - public class AvatarRenderExample : MonoBehaviour - { - private const string TAG = nameof(AvatarRenderExample); - - [SerializeField] [Tooltip("Set this to the URL or shortcode of the Ready Player Me Avatar you want to render.")] - private string url = "https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb"; - [SerializeField] [Tooltip("The scene to use for the avatar render.")] - private AvatarRenderScene scene = AvatarRenderScene.FullBodyPostureTransparent; - [SerializeField] - private SpriteRenderer spriteRenderer; - [SerializeField] - private GameObject loadingPanel; - - private readonly string[] blendShapeMeshes = { "Wolf3D_Head", "Wolf3D_Teeth" }; - - /// A collection of blendshape names and values to pose the face mesh into a smile using blendshapes - private readonly Dictionary blendShapes = new Dictionary - { - { "mouthSmile", 0.7f }, - { "viseme_aa", 0.5f }, - { "jawOpen", 0.3f } - }; - - private void Start() - { - var avatarRenderer = new AvatarRenderLoader(); - avatarRenderer.OnCompleted = UpdateSprite; - avatarRenderer.OnFailed = Fail; - avatarRenderer.LoadRender(url, scene, blendShapeMeshes, blendShapes); - loadingPanel.SetActive(true); - } - - /// Updates the sprite renderer with the provided render - private void UpdateSprite(Texture2D render) - { - var sprite = Sprite.Create(render, new Rect(0, 0, render.width, render.height), new Vector2(.5f, .5f)); - spriteRenderer.sprite = sprite; - loadingPanel.SetActive(false); - SDKLogger.Log(TAG, "Sprite Updated "); - } - - private void Fail(FailureType type, string message) - { - SDKLogger.Log(TAG, $"Failed with error type: {type} and message: {message}"); - } - } -} diff --git a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs.meta b/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs.meta deleted file mode 100644 index a2318e31..00000000 --- a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 62b7a236cf0534ae682c6aaa43737760 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity b/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity deleted file mode 100644 index 90039c36..00000000 --- a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity +++ /dev/null @@ -1,752 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657815, g: 0.49641192, b: 0.57481617, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &466104546 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 466104547} - - component: {fileID: 466104549} - - component: {fileID: 466104548} - m_Layer: 5 - m_Name: Loading - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &466104547 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 466104546} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 2023087858} - m_Father: {fileID: 1966123671} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 500, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &466104548 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 466104546} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &466104549 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 466104546} - m_CullTransparentMesh: 0 ---- !u!1 &542222333 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 542222336} - - component: {fileID: 542222335} - - component: {fileID: 542222334} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &542222334 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542222333} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &542222335 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542222333} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &542222336 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542222333} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &856270645 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 856270647} - - component: {fileID: 856270646} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &856270646 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856270645} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &856270647 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856270645} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1704154898 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1704154900} - - component: {fileID: 1704154899} - m_Layer: 0 - m_Name: Sprite - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1704154899 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1704154898} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_Sprite: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 0 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 ---- !u!4 &1704154900 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1704154898} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 7.5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1794436998} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1794436997 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1794436998} - - component: {fileID: 1794436999} - m_Layer: 0 - m_Name: AvatarRender Test - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1794436998 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1794436997} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1704154900} - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1794436999 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1794436997} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 62b7a236cf0534ae682c6aaa43737760, type: 3} - m_Name: - m_EditorClassIdentifier: - url: https://api.readyplayer.me/v1/avatars/638df70ed72bffc6fa179596.glb - scene: 2 - spriteRenderer: {fileID: 1704154899} - loadingPanel: {fileID: 466104546} ---- !u!1 &1966123667 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1966123671} - - component: {fileID: 1966123670} - - component: {fileID: 1966123669} - - component: {fileID: 1966123668} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1966123668 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1966123667} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1966123669 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1966123667} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 ---- !u!223 &1966123670 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1966123667} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &1966123671 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1966123667} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 466104547} - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &2023087857 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2023087858} - - component: {fileID: 2023087860} - - component: {fileID: 2023087859} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2023087858 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2023087857} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 466104547} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2023087859 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2023087857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 1 - m_MaxSize: 28 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Requesting and Loading Render... ---- !u!222 &2023087860 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2023087857} - m_CullTransparentMesh: 0 ---- !u!1 &2036660856 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2036660859} - - component: {fileID: 2036660858} - - component: {fileID: 2036660857} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &2036660857 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2036660856} - m_Enabled: 1 ---- !u!20 &2036660858 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2036660856} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &2036660859 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2036660856} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity.meta b/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity.meta deleted file mode 100644 index e393082d..00000000 --- a/Samples~/AvatarRenderSamples/SingleRender/AvatarRenderExample.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 6a938d18afe2d4495be4025f1e367c15 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Tests/Editor/AvatarAPITests.cs b/Tests/Editor/AvatarAPITests.cs index 06a3c57b..9c28dd61 100644 --- a/Tests/Editor/AvatarAPITests.cs +++ b/Tests/Editor/AvatarAPITests.cs @@ -11,7 +11,7 @@ namespace ReadyPlayerMe.Core.Tests { public class AvatarAPITests { - private const string AVATAR_API_AVATAR_URL = "https://api.readyplayer.me/v1/avatars/638df693d72bffc6fa17943c.glb"; + private const string AVATAR_API_AVATAR_URL = "https://models.readyplayer.me/638df693d72bffc6fa17943c.glb"; private const int TEXTURE_SIZE_LOW = 256; private const int TEXTURE_SIZE_MED = 512; private const int TEXTURE_SIZE_HIGH = 1024; diff --git a/Tests/Editor/AvatarRenderLoaderTests.cs b/Tests/Editor/AvatarRenderLoaderTests.cs index 4f785af7..2ae32fe4 100644 --- a/Tests/Editor/AvatarRenderLoaderTests.cs +++ b/Tests/Editor/AvatarRenderLoaderTests.cs @@ -8,13 +8,10 @@ namespace ReadyPlayerMe.Core.Tests { public class AvatarRenderLoaderTests { - private const AvatarRenderScene RENDER_SCENE = AvatarRenderScene.FullbodyPortraitTransparent; - private readonly string[] renderBlendshapeMeshes = { "Wolf3D_Head" }; - private readonly string[] renderWrongBlendshapeMesh = { "wrong_blendshape_mesh" }; + private const RenderCamera RENDER_SCENE = RenderCamera.FullBody; private const string RENDER_BLENDSHAPE = "mouthSmile"; - private const string RENDER_WRONG_BLENDSHAPE = "wrong_blendshape"; private const float BLENDSHAPE_VALUE = 0.5f; - private const string RENDER_STRING = "?scene=fullbody-portrait-v1-transparent&blendShapes[Wolf3D_Head][mouthSmile]=0.5"; + private const string RENDER_STRING = "?pose=relaxed&blendShapes[mouthSmile]=0.5&camera=portrait&size=800&background=255,255,255"; [UnityTest] public IEnumerator RenderLoader_Load() @@ -26,7 +23,10 @@ public IEnumerator RenderLoader_Load() renderLoader.OnCompleted = data => renderTexture = data; renderLoader.OnFailed = (failType, message) => failureType = failType; - renderLoader.LoadRender(TestAvatarData.DefaultAvatarUri.ModelUrl, RENDER_SCENE); + renderLoader.LoadRender(TestAvatarData.DefaultAvatarUri.ModelUrl, new AvatarRenderSettings() + { + Camera = RENDER_SCENE + }); yield return new WaitUntil(() => renderTexture != null || failureType != FailureType.None); @@ -44,7 +44,10 @@ public IEnumerator Fail_RenderLoader_Load_Wrong_Url() renderLoader.OnCompleted = data => renderTexture = data; renderLoader.OnFailed = (failType, message) => failureType = failType; - renderLoader.LoadRender(TestAvatarData.WrongUri.ModelUrl, RENDER_SCENE); + renderLoader.LoadRender(TestAvatarData.WrongUri.ModelUrl, new AvatarRenderSettings() + { + Camera = RENDER_SCENE + }); yield return new WaitUntil(() => renderTexture != null || failureType != FailureType.None); @@ -64,32 +67,12 @@ public IEnumerator RenderLoader_Load_With_Correct_BlendShape_Parameters() renderLoader.LoadRender( TestAvatarData.DefaultAvatarUri.ModelUrl, - RENDER_SCENE, - renderBlendshapeMeshes, - new Dictionary { { RENDER_BLENDSHAPE, BLENDSHAPE_VALUE } } - ); - - yield return new WaitUntil(() => renderTexture != null || failureType != FailureType.None); - - Assert.AreEqual(FailureType.None, failureType); - Assert.IsNotNull(renderTexture); - } - - [UnityTest] - public IEnumerator RenderLoader_Load_Incorrect_BlendShape_Mesh_Parameter() - { - Texture2D renderTexture = null; - var failureType = FailureType.None; - - var renderLoader = new AvatarRenderLoader(); - renderLoader.OnCompleted = data => renderTexture = data; - renderLoader.OnFailed = (failType, message) => failureType = failType; - - renderLoader.LoadRender( - TestAvatarData.DefaultAvatarUri.ModelUrl, - RENDER_SCENE, - renderWrongBlendshapeMesh, - new Dictionary { { RENDER_BLENDSHAPE, BLENDSHAPE_VALUE } } + new AvatarRenderSettings() + { + Camera = RENDER_SCENE, + BlendShapes = new List + { new BlendShape(RENDER_BLENDSHAPE, BLENDSHAPE_VALUE) } + } ); yield return new WaitUntil(() => renderTexture != null || failureType != FailureType.None); @@ -110,30 +93,34 @@ public IEnumerator RenderLoader_Load_Incorrect_BlendShape_Shape_Parameter() renderLoader.LoadRender( TestAvatarData.DefaultAvatarUri.ModelUrl, - RENDER_SCENE, - renderBlendshapeMeshes, - new Dictionary { { RENDER_WRONG_BLENDSHAPE, BLENDSHAPE_VALUE } } + new AvatarRenderSettings() + { + Camera = RENDER_SCENE, + BlendShapes = new List + { new BlendShape(RENDER_BLENDSHAPE, BLENDSHAPE_VALUE) } + } ); yield return new WaitUntil(() => renderTexture != null || failureType != FailureType.None); Assert.AreEqual(FailureType.None, failureType); Assert.IsNotNull(renderTexture); + } - + // create a render string test [Test] public void RenderLoader_CreateRenderString() { var renderSettings = new AvatarRenderSettings { - Scene = RENDER_SCENE, - BlendShapeMeshes = renderBlendshapeMeshes, - BlendShapes = new Dictionary { { RENDER_BLENDSHAPE, BLENDSHAPE_VALUE } } + BlendShapes = new List + { new BlendShape(RENDER_BLENDSHAPE, BLENDSHAPE_VALUE) } }; var renderString = renderSettings.GetParametersAsString(); + Debug.Log(renderString); Assert.AreEqual(RENDER_STRING, renderString); } } diff --git a/Tests/Editor/AvatarUriProcessTests.cs b/Tests/Editor/AvatarUriProcessTests.cs index c2b43ae3..3c12c4c7 100644 --- a/Tests/Editor/AvatarUriProcessTests.cs +++ b/Tests/Editor/AvatarUriProcessTests.cs @@ -6,28 +6,28 @@ namespace ReadyPlayerMe.Core.Tests public class AvatarUriProcessTests { private const string GUID = "633af24a573a46702919320f"; - private const string GUID_URL = "https://api.readyplayer.me/v1/avatars/633af24a573a46702919320f.glb"; + private const string GUID_URL = "https://models.readyplayer.me/633af24a573a46702919320f.glb"; private const string SHORT_CODE = "DDBWOI"; - private const string SHORT_CODE_URL = "https://api.readyplayer.me/v1/avatars/DDBWOI.glb"; + private const string SHORT_CODE_URL = "https://models.readyplayer.me/DDBWOI.glb"; - private const string RANDOM_PARAM_HASH = "123456789"; + private const string RANDOM_PARAM_HASH = "123456789"; private readonly AvatarUri expectedShortcodeUri = new AvatarUri { Guid = SHORT_CODE, - ModelUrl = $"{TestUtils.API_URL_PREFIX}{SHORT_CODE}{TestUtils.GLB_SUFFIX}", + ModelUrl = $"{TestUtils.MODELS_URL_PREFIX}{SHORT_CODE}{TestUtils.GLB_SUFFIX}", LocalModelPath = $"{DirectoryUtility.GetAvatarSaveDirectory(SHORT_CODE, RANDOM_PARAM_HASH)}/{SHORT_CODE}{TestUtils.GLB_SUFFIX}", - MetadataUrl = $"{TestUtils.API_URL_PREFIX}{SHORT_CODE}{TestUtils.JSON_SUFFIX}", + MetadataUrl = $"{TestUtils.MODELS_URL_PREFIX}{SHORT_CODE}{TestUtils.JSON_SUFFIX}", LocalMetadataPath = $"{DirectoryUtility.GetAvatarSaveDirectory(SHORT_CODE)}{SHORT_CODE}{TestUtils.JSON_SUFFIX}" }; private readonly AvatarUri expectedUri = new AvatarUri { Guid = GUID, - ModelUrl = $"{TestUtils.API_URL_PREFIX}{GUID}{TestUtils.GLB_SUFFIX}", + ModelUrl = $"{TestUtils.MODELS_URL_PREFIX}{GUID}{TestUtils.GLB_SUFFIX}", LocalModelPath = $"{DirectoryUtility.GetAvatarSaveDirectory(GUID, RANDOM_PARAM_HASH)}/{GUID}{TestUtils.GLB_SUFFIX}", - MetadataUrl = $"{TestUtils.API_URL_PREFIX}{GUID}{TestUtils.JSON_SUFFIX}", + MetadataUrl = $"{TestUtils.MODELS_URL_PREFIX}{GUID}{TestUtils.JSON_SUFFIX}", LocalMetadataPath = $"{DirectoryUtility.GetAvatarSaveDirectory(GUID)}{GUID}{TestUtils.JSON_SUFFIX}" }; diff --git a/package.json b/package.json index 869e440a..2fa472ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.readyplayerme.core", - "version": "4.0.1", + "version": "4.1.0", "displayName": "Ready Player Me Core", "description": "This Module contains all the core functionality required for using Ready Player Me avatars in Unity, including features such as: \n - Module management and automatic package setup logic\n - Avatar loading from .glb files \n - Avatar creation \n - Avatar and 2D render requests \n - Optional Analytics\n - Custom editor windows\n - Sample scenes and assets", "unity": "2020.3",