initial upload

This commit is contained in:
Fiedler
2025-09-24 13:27:39 +02:00
commit c721469c3b
2676 changed files with 787530 additions and 0 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a8b4c95484e72ba4ea75e52d96ecf521
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f0e7f1fdea3633740a7586226f0fc226
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bb88a70ca37448c1906b764cbfec3045
timeCreated: 1701763961

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6e9506fb62cb91b4dab901dbd1cca7c9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e69184ecad010749b48c62f237935c4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a7d37dbbb852bdb49a43e11d5a9e8056
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6130a94ff0043ac4983cd532a41f62f6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 07a568e242a398945948decb4871af90
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 977bc9a52e4b03846ad72fde8cbb784a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 54480b39006983c4d9a14e0045318f34
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 862b1f4e571bfdd4c973a50badc0681f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,144 @@
fileFormatVersion: 2
guid: afb771dbd34896e41a7cd182ab4ffd2c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Lumin
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 533ab396e3cb7b14eb85ee382134ffc9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3bdaf65b38e5dcc49b8c0040b306c777
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,253 @@
# Avatar Creator Elements
As part of the Unity SDK 5.0.0 update we added a new set of classes we call Avatar Creator elements.
These elements are designed to be simple and modular and can be used as simplified building blocks when it comes to
creating your own Avatar Creator UI. We tried to keep them as simple as possible so that the code in each script would
be relatively simple to understand, which will hopefully make it easier for you to create your own using the same Avatar
Creator API's we provide.
## Account Creation Element
This element is useful for creating an Account Creation UI.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/AccountCreationElement.prefab`.
**Key features include:**
- an input field for the user to enter their email address
- a button to send an account creation sign up email to the user
- a button to continue without signup
If you view this AccountCreationElement in the unity inspector you will find a number of assignable fields and 2 events
that can be easily subscribed to.
The first event OnSendEmail, is fired when the send button is clicked.
It also has a string parameter that can be used to retrieve the email address entered by the user if needed.
The second event OnContinue, is fired when the skip button is clicked.
Both of these are UnityEvents so they can be subscribed to in the inspector using the `+` symbol or in code.
## Asset Selection Element
This element, useful for creating asset selection UI panels or windows.
_NOTE: for creating color selection panels we suggest using the ColorSelectionElement instead_
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/AssetSelectionElement.prefab`.
This is best used for assets of the following asset types:
- BeardStyle
- Shapes (EyeShape, LipShape, etc)
- Facewear
- Headwear
- Clothing (Outfit, Shirt, Bottom, Top, etc)
- Facemask
- Glasses
- EyeColor **(this is a special case as eye color is actually a texture asset, not simply a color value)**
It is not recommended to use this for Color selection or Template avatar selection, for these we recommend the ColorSelectionElement & TemplateSelectionElement.
### Inspector Properties
If you find and open the AssetSelectionElement prefab we can go through the properties you see in the inspector.
**ButtonElementPrefab:** This is the prefab that will be used to display each asset.
**ButtonContainer:** This is the transform that the ButtonElementPrefabs will be instantiated under.
**SelectedIcon:** This is the icon that will be displayed on the selected asset to indicate to the user which one is currently selected. NOTE: This should exist already as a child of the AssetSelectionPrefab.
**OnAssetSelected:** This is a UnityEvent that will be fired when an asset is selected. It has a single parameter of type AvatarCreatorAsset. This can be used to retrieve the asset that was selected.
**BodyType:** This is the body type that the assets should be filtered by. This is used to ensure that only assets that are compatible with the selected body type are displayed.
**AssetType:** This is the asset type that the assets should be filtered by. This is used to determine which assets should be displayed and equipped.
**IconSize:** This is the square dimension size of the icon that will be requested. NOTE: bigger sizes will result in larger file sizes.
### Prefab Setup
You can add the AssetSelectionElement to your scene by following these steps.
1. Find the AssetSelectionElement prefab in the Unity Project window.
2. Drag the AssetSelectionElement prefab into your scene. NOTE: It should be placed as a child of a Canvas object as it is a UI element
3. Find the AssetSelectionElement in the hierarchy and select it to open the inspector.
4. From here you will need to set your Asset Type
5. Set your body type (this can also be done at runtime using the SetBodyType function).
6. You can also adjust any other settings as needed.
7. Lastly you will see an OnAssetSelected event. You can subscribe to this event by clicking the `+`.
#### OnAssetSelected event
This event is called whenever an asset button is clicked (selected) and it has a single parameter of IAssetData.
The purpose of this event is to allow you to retrieve the asset ID and AssetType from other scripts. With this data you
can make requests to our API's to update the avatar customizations. For example changing hair styles.
## Color Selection Element
This element is useful for creating a color selection UI panels.
_NOTE: This is not recommended for selecting eye color as it is actually a texture asset, not a color value,
for this you instead need to use the AssetSelectionElement._
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/ColorSelectionElement.prefab`.
This is best used for assets of the following asset types:
- SkinColor
- HairColor
- EyeColor
- LipColor
- EyebrowColor
- BeardColor
### Prefab Setup
You can add the ColorSelectionElement to your scene by following these steps.
1. Find the ColorSelectionElement prefab in the Unity Project window.
2. Drag the ColorSelectionElement prefab into your scene. NOTE: It should be placed as a child of a Canvas object as it is a UI element
3. Find the ColorSelectionElement in the hierarchy and select it to open the inspector.
4. From here you will need to set your Asset Type
5. By default all the properties on the ColorSelectionElement component should be set already however you can also adjust them as you like.
6. Lastly you will see an OnAssetSelected event. You can subscribe to this event by clicking the `+
## Template Selection Element
This element is useful for creating a template selection UI panels.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/TemplateSelectionElement.prefab`.
### Prefab Setup
You can add the AssetSelectionElement to your scene by following these steps.
1. Find the TemplateSelectionElement prefab in the Unity Project window.
2. Drag the TemplateSelectionElement prefab into your scene. NOTE: It should be placed as a child of a Canvas object as it is a UI element
3. Find the TemplateSelectionElement in the hierarchy and select it to open the inspector.
4. By default all the properties on the TemplateSelectionElement component should be set already however you can also adjust them as you like.
5. Lastly you will see an OnAssetSelected event. You can subscribe to this event by clicking the `+`.
## Avatar Preview Element
The AvatarPreviewElement is prefab that can be used to load an avatar during the avatar creation process and it adds a number of useful features.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/AvatarPreviewElement.prefab`.
**Key features include:**
- AvatarPreviewElement component that stores a reference to the avatar and overrides when a new one is loaded
- CameraFocuser component that can be used to switch the camera focus between the avatar face and full body viewpoints
- AvatarRotator component for rotating the avatar
- MouseRotationHandler component that implements the IAvatarRotatorInput interface for handing mouseInput
## Gender Selection Element
This element is useful for creating a gender selection UI.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/GenderSelectionElement.prefab`.
**Key features include:**
- 2 buttons (male, female)
- A OnGenderSelected UnityEvent that can be subscribed to in the inspector or in code to retrieve the selected gender.
## Login Element
This element is useful for creating Ready Player Me login UI.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/LoginElement.prefab`.
**Key features include:**
- an input field for the user to enter their email address
- an input field for the user to enter in their 1 time login code
- functionality to automatically send a login code to the user after they enter their email address
- functionality to merge user session to their Ready Player Me account
- OnLoginSuccess event that can be subscribed to in the inspector
- OnLoginFailed event that can be subscribed to in the inspector and passes a string containing the error message
## Logout Element
This element is useful for creating Ready Player Me user logging out UI.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/LogoutElement.prefab`.
**Key features include:**
- a button, that user can click to log them out
- OnLogoutSuccess event that can be subscribed to in the inspector
- OnLogoutFailed event that can be subscribed to in the inspector and passes a string containing the error message
## Photo Capture Element
This element is useful for creating a photo capture UI and returning the image (selfie) of the user as a Texture2D so
that it can later be used to create a new avatar.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/PhotoCaptureElement.prefab`.
## Avatar List Element
This element is useful for creating Ready Player Me UI for showing user avatars.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/AvatarListElement.prefab`.
**Key features include:**
- A script, that will create prefabs with AvatarListItem script to the specific container (Example contains scrollview container)
- Filter, that allows you to select, if you want to see all of the avatars or only avatars created under the application
- OnAvatarSelect event that passes an avatar string, that was selected
- OnAvatarModify event that passes an avatar string, that was selected for modification
- OnAvatarDeletionStarted event that passes an avatar string, that was selected for deletion (On this element, we have also attached the DeleteAvatarElement, so when the user click on delete, then it shows avatarDeletionElement)
- onAvatarsLoaded event which passes an array of avatarIds, that were loaded
- public function RemoveItem, that deletes item with specific avatar id, that was initialized
## Avatar Deletion Element
This element is useful for creating Ready Player Me UI for popup to delete specific user avatars.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/DeleteAvatarElement.prefab`.
**Key features include:**
- a Button to confirm the deletion
- a Button to cancel the deletion
- OnCancel event that passes the avatar string
- OnConfirm event that passes the avatar string after deleting the avatar
- OnError event that passes the error string, when something went wrong with deletion
## Selfie To Avatar Element
This a higher level element is useful for creating a UI that not only enables photo capture, it also uses the selected
photo to request an avatar before finally invoking the OnAvatarCreated event passing the GameObject and AvatarProperties.
**Prefab Location:**
`Runtime/AvatarCreator/Prefabs/SelfieToAvatarElement.prefab`.
## ButtonElement
This element is useful for creating a UI button that can be used to select an asset.
The ButtonElement prefab has the image set to a loading icon by default so that it is seen to be loading, until the
asset has been loaded.
It uses the SelectionButton script that provides functionality for:
- Adding a listener to the button's OnClick event
- Setting the button's icon
- Setting the button color
## ColorButton
This element is useful for creating a UI button that can be used to select a color of an asset.
The ColorButton prefab has the image set to white circle icon, it is white so that the tint or color value can be set
using the SetColor function on the SelectionButton script.
## UserAvatarElement
This element is used in the avatar list to show avatar in the AvatarListElement.
This element contains 2 fields:
- Button Actions - Array of actions for the buttons, that the avatarListElement is listening to. Currently, it has Delete, Select, and Customize actions.
- Avatar Image - RawImage
This prefab is initialized in the AvatarListElement and it listens to the onclick events for the buttons above.
This is fully customizable. For example, if you don't need the deletion functionality, then you don't add the delete button to the button actions list and the button click events are not registered for listening and AvatarListElement doesn't send out OnAvatarDeletionStared events.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ce481db567276a74f8fe46776fb84830
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,17 @@
{
"name": "ReadyPlayerMe.Samples.AvatarCreatorElements",
"rootNamespace": "",
"references": [
"ReadyPlayerMe.AvatarCreator",
"ReadyPlayerMe.Core"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e34105d609c45f54aab82374692c2c2e
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3b116b1953623984eb0b2dd28991d2b8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f04ec88bd778aa844b3565bd6486dc88
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4763807aec6c7fd47816464a150bea11
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,129 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using ReadyPlayerMe.AvatarCreator;
using ReadyPlayerMe.Core;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;
using TaskExtensions = ReadyPlayerMe.AvatarCreator.TaskExtensions;
namespace ReadyPlayerMe.Samples.AvatarCreatorElements
{
public class AvatarHandler : MonoBehaviour
{
[SerializeField] private RuntimeAnimatorController animationController;
public UnityEvent<AvatarProperties> OnAvatarLoaded;
public UnityEvent OnAvatarLoading;
private AvatarManager avatarManager;
private readonly CancellationTokenSource cancellationTokenSource = new();
private GameObject avatar;
public AvatarProperties ActiveAvatarProperties { get; private set; }
private void Awake()
{
avatarManager = new AvatarManager(token: cancellationTokenSource.Token);
}
public async Task LoadAvatar(string avatarId)
{
await LoadAvatarWithId(avatarId);
}
public async Task SelectAsset(IAssetData assetData)
{
OnAvatarLoading?.Invoke();
var newAvatar = await avatarManager.UpdateAsset(assetData.AssetType, assetData.Id);
SetupLoadedAvatar(newAvatar, ActiveAvatarProperties);
}
public async Task SaveActiveAvatar()
{
await avatarManager.Save();
AuthManager.StoreLastModifiedAvatar(avatarManager.AvatarId);
}
public async Task CreateNewAvatarFromTemplate()
{
await CreateTemplateAvatar();
}
public async void LoadPreviousOrCreateNewAvatar()
{
var session = AuthManager.UserSession;
await TaskExtensions.HandleCancellation(string.IsNullOrEmpty(session.LastModifiedAvatarId) ? CreateTemplateAvatar() : LoadAvatarWithId(session.LastModifiedAvatarId));
}
private async Task<AvatarProperties> LoadAvatarWithId(string avatarId)
{
OnAvatarLoading?.Invoke();
var newAvatar = await avatarManager.GetAvatar(avatarId);
var newAvatarProperties = await avatarManager.GetAvatarProperties(avatarId);
SetupLoadedAvatar(newAvatar, newAvatarProperties);
AuthManager.StoreLastModifiedAvatar(avatarId);
return newAvatarProperties;
}
/// <summary>
/// Creates an avatar from a template and sets its initial properties.
/// </summary>
/// <returns>The properties of the created avatar.</returns>
private async Task<AvatarProperties> CreateTemplateAvatar()
{
OnAvatarLoading?.Invoke();
var avatarTemplateFetcher = new AvatarTemplateFetcher(cancellationTokenSource.Token);
var templates = await avatarTemplateFetcher.GetTemplates();
var avatarTemplate = templates[1];
return await LoadAvatarFromTemplate(avatarTemplate.Id);
}
public async Task<AvatarProperties> LoadAvatarFromTemplate(string templateId)
{
OnAvatarLoading?.Invoke();
var templateAvatarResponse = await avatarManager.CreateAvatarFromTemplateAsync(templateId);
SetupLoadedAvatar(templateAvatarResponse.AvatarObject, templateAvatarResponse.Properties);
return templateAvatarResponse.Properties;
}
private void SetupLoadedAvatar(GameObject newAvatar, AvatarProperties newAvatarProperties)
{
if (avatar != null)
{
Destroy(avatar);
}
avatar = newAvatar;
ActiveAvatarProperties = newAvatarProperties;
SetupAvatar(newAvatarProperties);
OnAvatarLoaded?.Invoke(newAvatarProperties);
}
/// <summary>
/// Sets additional elements and components on the created avatar, such as mouse rotation and animation controller.
/// </summary>
private void SetupAvatar(AvatarProperties newAvatarProperties)
{
avatar.AddComponent<MouseRotationHandler>();
avatar.AddComponent<AvatarRotator>();
var animator = avatar.GetComponent<Animator>();
AvatarAnimationHelper.SetupAnimator(new AvatarMetadata
{ BodyType = newAvatarProperties.BodyType, OutfitGender = newAvatarProperties.Gender }, animator);
animator.runtimeAnimatorController = animationController;
}
private void OnDestroy()
{
cancellationTokenSource.Cancel();
cancellationTokenSource.Dispose();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3ecb8ba5c129421f8d6dbb840f7522b6
timeCreated: 1717661891

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace ReadyPlayerMe.Samples.AvatarCreatorElements
{
public class PanelSwitcher : MonoBehaviour
{
[SerializeField] private List<ButtonElementLink> buttonElementLinks;
private void Awake()
{
foreach (var elementButtonLink in buttonElementLinks)
{
if (elementButtonLink.button == null)
{
continue;
}
elementButtonLink.button.onClick.AddListener(() =>
{
ShowElement(elementButtonLink.element);
});
}
}
/// <summary>
/// Function, that allows to show element without clicking on the button or having any links to the button.
/// </summary>
/// <param name="element">The GameObject to be displayed. This GameObject must be in the list of buttonElementLinks in order to be activated.</param>
public void ShowElement(GameObject element)
{
foreach (var elementSection in buttonElementLinks)
{
elementSection.element.SetActive(elementSection.element == element);
}
}
}
[Serializable]
public struct ButtonElementLink
{
public Button button;
public GameObject element;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5e202c27d1e0b894bb5290a05554dc44
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,42 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using ReadyPlayerMe.AvatarCreator;
using UnityEngine;
using UnityEngine.Events;
using TaskExtensions = ReadyPlayerMe.AvatarCreator.TaskExtensions;
namespace ReadyPlayerMe.Samples.AvatarCreatorElements
{
public class SessionHandler : MonoBehaviour
{
private readonly string sessionStoreKey = "StoredSession";
public UnityEvent<UserSession> OnLogin;
private async void Start()
{
using var cancellationTokenSource = new CancellationTokenSource();
await TaskExtensions.HandleCancellation(Login(cancellationTokenSource.Token));
}
private async Task Login(CancellationToken token)
{
if (PlayerPrefs.HasKey(sessionStoreKey))
{
AuthManager.SetUser(JsonUtility.FromJson<UserSession>(PlayerPrefs.GetString(sessionStoreKey)));
}
else
{
await AuthManager.LoginAsAnonymous(token);
}
OnLogin?.Invoke(AuthManager.UserSession);
}
private void OnApplicationQuit()
{
PlayerPrefs.SetString(sessionStoreKey, JsonUtility.ToJson(AuthManager.UserSession));
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7471eeda09ce4a41be66fad7330f344e
timeCreated: 1716201515

View File

@ -0,0 +1,204 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using ReadyPlayerMe.AvatarCreator;
using ReadyPlayerMe.Core;
using UnityEngine;
using UnityEngine.Events;
using TaskExtensions = ReadyPlayerMe.AvatarCreator.TaskExtensions;
#pragma warning disable CS4014
#pragma warning disable CS1998
namespace ReadyPlayerMe.Samples.AvatarCreatorElements
{
/// <summary>
/// A class responsible for creating and customizing avatars using asset and color selections.
/// </summary>
[RequireComponent(typeof(SessionHandler))]
public class SimpleAvatarCreator : MonoBehaviour
{
public UnityEvent<AvatarProperties> OnAvatarLoaded;
public UnityEvent OnAvatarSelected;
[SerializeField] private List<AssetSelectionElement> assetSelectionElements;
[SerializeField] private List<ColorSelectionElement> colorSelectionElements;
[SerializeField] private BodyShapeSelectionElement bodyShapeSelectionElement;
[SerializeField] private GameObject loading;
[SerializeField] private GameObject createRPMAccount;
private OutfitGender gender = OutfitGender.Masculine;
[SerializeField] private AvatarHandler avatarHandler;
public async void OnLogout()
{
avatarHandler.CreateNewAvatarFromTemplate();
}
public async void OnLogin()
{
avatarHandler.CreateNewAvatarFromTemplate();
}
public async void SelectAvatar(string avatarId)
{
await TaskExtensions.HandleCancellation(avatarHandler.LoadAvatar(avatarId), () =>
{
OnAvatarSelected?.Invoke();
});
}
public async void LoadAvatar(string avatarId)
{
await TaskExtensions.HandleCancellation(avatarHandler.LoadAvatar(avatarId));
}
public async void OnAvatarDeleted(string avatarId)
{
if (AuthManager.UserSession.LastModifiedAvatarId == avatarId)
{
AuthManager.StoreLastModifiedAvatar(null);
}
if (avatarHandler.ActiveAvatarProperties.Id != avatarId)
{
return;
}
await TaskExtensions.HandleCancellation(avatarHandler.CreateNewAvatarFromTemplate());
}
public void SignupAndSaveAvatar()
{
if (!AuthManager.IsSignedIn)
{
createRPMAccount.SetActive(true);
return;
}
SaveAvatar();
}
public async void SaveAvatar()
{
loading.SetActive(true);
await TaskExtensions.HandleCancellation(avatarHandler.SaveActiveAvatar(), () =>
{
OnAvatarSelected?.Invoke();
loading.SetActive(false);
});
}
public async void LoadAvatarFromTemplate(IAssetData template)
{
await TaskExtensions.HandleCancellation(avatarHandler.LoadAvatarFromTemplate(template.Id));
}
/// <summary>
/// LoadUser is used to initialize the avatar creator and loads initial avatar assets.
/// </summary>
public async void LoadUserAssets(UserSession session)
{
UpdateButtons();
}
private void OnEnable()
{
avatarHandler.OnAvatarLoading.AddListener(OnAvatarLoading);
avatarHandler.OnAvatarLoaded.AddListener(OnAvatarLoadingFinished);
bodyShapeSelectionElement.OnAssetSelected.AddListener(OnAssetSelection);
// Subscribes to asset selection events when this component is enabled.
foreach (var element in assetSelectionElements)
{
element.OnAssetSelected.AddListener(OnAssetSelection);
}
foreach (var element in colorSelectionElements)
{
element.OnAssetSelected.AddListener(OnAssetSelection);
}
}
private void OnDisable()
{
avatarHandler.OnAvatarLoading.RemoveListener(OnAvatarLoading);
avatarHandler.OnAvatarLoaded.RemoveListener(OnAvatarLoadingFinished);
bodyShapeSelectionElement.OnAssetSelected.RemoveListener(OnAssetSelection);
// Unsubscribes from asset selection events when this component is disabled.
foreach (var element in assetSelectionElements)
{
element.OnAssetSelected.RemoveListener(OnAssetSelection);
}
foreach (var element in colorSelectionElements)
{
element.OnAssetSelected.RemoveListener(OnAssetSelection);
}
}
private void OnAvatarLoadingFinished(AvatarProperties properties)
{
GetColors(properties);
LoadAssets(properties.Gender);
OnAvatarLoaded?.Invoke(properties);
loading.SetActive(false);
}
private void OnAvatarLoading()
{
loading.SetActive(true);
}
/// <summary>
/// Handles the selection of an asset and updates the avatar accordingly.
/// </summary>
/// <param name="assetData">The selected asset data.</param>
private async void OnAssetSelection(IAssetData assetData)
{
await TaskExtensions.HandleCancellation(avatarHandler.SelectAsset(assetData));
}
/// <summary>
/// Loads and initializes asset selection elements for avatar customization.
/// </summary>
private void LoadAssets(OutfitGender newGender)
{
if (gender == newGender)
{
return;
}
gender = newGender;
UpdateButtons();
}
private void UpdateButtons()
{
bodyShapeSelectionElement.LoadAndCreateButtons();
foreach (var element in assetSelectionElements)
{
TaskExtensions.HandleCancellation(element.LoadAndCreateButtons(gender));
}
}
/// <summary>
/// Loads and initializes color selection elements for choosing avatar colors.
/// </summary>
/// <param name="avatarProperties">The properties of the avatar.</param>
private void GetColors(AvatarProperties avatarProperties)
{
foreach (var element in colorSelectionElements)
{
element.LoadAndCreateButtons(avatarProperties);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f5c8c0dceba52dc439e98eb49fdee50f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 068f2a0ca2e83c8498c54511c718556c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d9a6d4be16619c142942bf89c7bae842
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7f8cbf4cac04965498efbd3edb6b6a80
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,815 @@
fileFormatVersion: 2
guid: 3cbb653e566e97343918381e88d5a336
ModelImporter:
serializedVersion: 20200
internalIDToNameTable:
- first:
74: -623603649343465320
second: IdleAnim
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: IdleAnim
takeName: Scene
internalID: 0
firstFrame: 1
lastFrame: 250
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human:
- boneName: Hips
humanName: Hips
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftUpLeg
humanName: LeftUpperLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightUpLeg
humanName: RightUpperLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftLeg
humanName: LeftLowerLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightLeg
humanName: RightLowerLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftFoot
humanName: LeftFoot
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightFoot
humanName: RightFoot
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Spine
humanName: Spine
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Spine1
humanName: Chest
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Neck
humanName: Neck
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Head
humanName: Head
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftShoulder
humanName: LeftShoulder
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightShoulder
humanName: RightShoulder
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftArm
humanName: LeftUpperArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightArm
humanName: RightUpperArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftForeArm
humanName: LeftLowerArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightForeArm
humanName: RightLowerArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHand
humanName: LeftHand
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHand
humanName: RightHand
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftToeBase
humanName: LeftToes
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightToeBase
humanName: RightToes
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandThumb1
humanName: Left Thumb Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandThumb2
humanName: Left Thumb Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandThumb3
humanName: Left Thumb Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandIndex1
humanName: Left Index Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandIndex2
humanName: Left Index Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandIndex3
humanName: Left Index Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandMiddle1
humanName: Left Middle Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandMiddle2
humanName: Left Middle Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandMiddle3
humanName: Left Middle Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandRing1
humanName: Left Ring Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandRing2
humanName: Left Ring Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandRing3
humanName: Left Ring Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandPinky1
humanName: Left Little Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandPinky2
humanName: Left Little Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LeftHandPinky3
humanName: Left Little Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandThumb1
humanName: Right Thumb Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandThumb2
humanName: Right Thumb Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandThumb3
humanName: Right Thumb Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandIndex1
humanName: Right Index Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandIndex2
humanName: Right Index Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandIndex3
humanName: Right Index Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandMiddle1
humanName: Right Middle Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandMiddle2
humanName: Right Middle Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandMiddle3
humanName: Right Middle Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandRing1
humanName: Right Ring Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandRing2
humanName: Right Ring Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandRing3
humanName: Right Ring Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandPinky1
humanName: Right Little Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandPinky2
humanName: Right Little Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RightHandPinky3
humanName: Right Little Distal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Spine2
humanName: UpperChest
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
skeleton:
- name: Idle(Clone)
parentName:
position: {x: -0, y: 0, z: 0}
rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067}
scale: {x: 100, y: 100, z: 100}
- name: Hips
parentName: Idle(Clone)
position: {x: 0.0000054227744, y: -0.000099712015, z: 0.009881933}
rotation: {x: -0.017752707, y: -0.014600183, z: 0.057954896, w: 0.9980546}
scale: {x: 1, y: 0.99999994, z: 0.99999994}
- name: Spine
parentName: Hips
position: {x: 1.8626451e-11, y: 2.3283064e-10, z: 0.0009850007}
rotation: {x: -0.060444016, y: 0.02222846, z: 0.0076916553, w: 0.99789447}
scale: {x: 1.0000001, y: 0.99999994, z: 0.99999994}
- name: Spine1
parentName: Spine
position: {x: -2.3283063e-11, y: -3.72529e-10, z: 0.0013049985}
rotation: {x: -0.001966985, y: 0.02816036, z: 0.014810795, w: 0.99949175}
scale: {x: 1, y: 1, z: 1}
- name: Spine2
parentName: Spine1
position: {x: 5.5879353e-11, y: -3.7252902e-11, z: 0.0012179994}
rotation: {x: 0.0775649, y: 0.028701188, z: 0.013446998, w: 0.9964834}
scale: {x: 1, y: 0.99999994, z: 0.9999998}
- name: Neck
parentName: Spine2
position: {x: 2.9802322e-10, y: 3.352761e-10, z: 0.0015559992}
rotation: {x: 0.20591657, y: -0.020034786, z: -0.0057151127, w: 0.9783478}
scale: {x: 1, y: 1.0000002, z: 1}
- name: Head
parentName: Neck
position: {x: -3.7252902e-11, y: -3.4458936e-10, z: 0.0012259983}
rotation: {x: -0.15525319, y: -0.03980011, z: -0.0071697915, w: 0.98704666}
scale: {x: 0.99999994, y: 1, z: 0.9999999}
- name: LeftShoulder
parentName: Spine2
position: {x: -0.0004710002, y: 0.000063000174, z: 0.0014109979}
rotation: {x: -0.5034451, y: 0.51089174, z: 0.4967612, w: -0.48863176}
scale: {x: 1.0000001, y: 1, z: 1.0000005}
- name: LeftArm
parentName: LeftShoulder
position: {x: -0, y: 8.381903e-10, z: 0.0011889997}
rotation: {x: 0.04026848, y: -0.0121197505, z: -0.15569276, w: 0.98691}
scale: {x: 0.9999998, y: 0.9999999, z: 0.99999994}
- name: LeftForeArm
parentName: LeftArm
position: {x: 3.72529e-10, y: 0, z: 0.002851001}
rotation: {x: -0.007404159, y: 0.032828238, z: -0.010180534, w: 0.9993817}
scale: {x: 1.0000001, y: 0.99999994, z: 0.99999994}
- name: LeftHand
parentName: LeftForeArm
position: {x: -2.9802322e-10, y: -8.9406965e-10, z: 0.0025199992}
rotation: {x: 0.031621255, y: -0.013275368, z: -0.06196229, w: 0.9974891}
scale: {x: 0.9999999, y: 1, z: 1}
- name: LeftHandThumb1
parentName: LeftHand
position: {x: 0.00032400063, y: -0.000052000283, z: 0.00026399968}
rotation: {x: -0.12974979, y: 0.354518, z: 0.049425732, w: 0.9246832}
scale: {x: 1, y: 0.99999994, z: 1}
- name: LeftHandThumb2
parentName: LeftHandThumb1
position: {x: 4.4703483e-10, y: 0, z: 0.0004140013}
rotation: {x: -0.010698191, y: -0.031999644, z: 0.10152806, w: 0.9942603}
scale: {x: 0.9999996, y: 0.99999976, z: 0.9999997}
- name: LeftHandThumb3
parentName: LeftHandThumb2
position: {x: -1.4901161e-10, y: -0.0000000011920929, z: 0.00030499962}
rotation: {x: -0.022186182, y: -0.16830541, z: 0.051528685, w: 0.9841371}
scale: {x: 0.99999994, y: 0.9999999, z: 1}
- name: LeftHandIndex1
parentName: LeftHand
position: {x: 0.00035300024, y: 0.0000699994, z: 0.0009749992}
rotation: {x: 0.048929688, y: 0.056480315, z: 0.054952014, w: 0.9956888}
scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994}
- name: LeftHandIndex2
parentName: LeftHandIndex1
position: {x: 1.4901161e-10, y: -5.9604643e-10, z: 0.00044700055}
rotation: {x: 0.032124396, y: -0.0003168471, z: 0.0058242087, w: 0.99946684}
scale: {x: 1.0000001, y: 1.0000001, z: 0.9999999}
- name: LeftHandIndex3
parentName: LeftHandIndex2
position: {x: 2.9802322e-10, y: -5.9604643e-10, z: 0.00028299852}
rotation: {x: 0.14166911, y: -0.013053746, z: 0.075384416, w: 0.9869532}
scale: {x: 1, y: 0.99999994, z: 0.9999999}
- name: LeftHandMiddle1
parentName: LeftHand
position: {x: 0.000092000366, y: 0.000035000146, z: 0.0010019987}
rotation: {x: 0.06783789, y: 0.05010298, z: 0.065387, w: 0.9942899}
scale: {x: 1.0000001, y: 1.0000001, z: 0.99999994}
- name: LeftHandMiddle2
parentName: LeftHandMiddle1
position: {x: -7.4505804e-11, y: 0, z: 0.00045700013}
rotation: {x: 0.03080288, y: -0.0011871154, z: 0.009796587, w: 0.9994768}
scale: {x: 0.9999998, y: 0.99999994, z: 0.99999994}
- name: LeftHandMiddle3
parentName: LeftHandMiddle2
position: {x: 1.4901161e-10, y: -8.9406965e-10, z: 0.00035399882}
rotation: {x: 0.19465981, y: -0.013929159, z: 0.022654228, w: 0.98051023}
scale: {x: 1, y: 1, z: 0.9999998}
- name: LeftHandRing1
parentName: LeftHand
position: {x: -0.00015400007, y: -0.000021999776, z: 0.0009559995}
rotation: {x: 0.0652171, y: 0.053111825, z: 0.054190435, w: 0.9949821}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000002}
- name: LeftHandRing2
parentName: LeftHandRing1
position: {x: -0, y: 5.9604643e-10, z: 0.00041900203}
rotation: {x: 0.025588611, y: -0.0005314535, z: 0.016495906, w: 0.9995363}
scale: {x: 0.99999976, y: 0.9999998, z: 0.9999999}
- name: LeftHandRing3
parentName: LeftHandRing2
position: {x: -1.4901161e-10, y: 5.9604643e-10, z: 0.00036199926}
rotation: {x: 0.28615636, y: -0.01232516, z: 0.0055507096, w: 0.95808756}
scale: {x: 1, y: 0.99999994, z: 1}
- name: LeftHandPinky1
parentName: LeftHand
position: {x: -0.00039100027, y: -0.000104998646, z: 0.00089799985}
rotation: {x: 0.063793175, y: 0.04244791, z: 0.06982692, w: 0.9946119}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001}
- name: LeftHandPinky2
parentName: LeftHandPinky1
position: {x: 7.4505804e-11, y: -5.9604643e-10, z: 0.00028200026}
rotation: {x: 0.029822726, y: -0.0036825757, z: 0.20324965, w: 0.97866577}
scale: {x: 0.99999994, y: 1, z: 0.99999994}
- name: LeftHandPinky3
parentName: LeftHandPinky2
position: {x: -1.3038516e-10, y: 5.9604643e-10, z: 0.00022400006}
rotation: {x: 0.39893115, y: -0.20778313, z: 0.010740187, w: 0.8930648}
scale: {x: 0.99999994, y: 0.99999994, z: 1}
- name: RightShoulder
parentName: Spine2
position: {x: 0.00047099977, y: 0.00006300028, z: 0.0014109991}
rotation: {x: 0.54397774, y: 0.47888118, z: 0.45377564, w: 0.51850617}
scale: {x: 1.0000001, y: 1.0000001, z: 0.99999994}
- name: RightArm
parentName: RightShoulder
position: {x: 2.2351741e-10, y: -0.0000000020302833, z: 0.0011890004}
rotation: {x: -0.04825462, y: 0.04616396, z: 0.14652379, w: 0.9869504}
scale: {x: 1, y: 1.0000001, z: 1.0000001}
- name: RightForeArm
parentName: RightArm
position: {x: 7.4505804e-11, y: -1.4901161e-10, z: 0.002851001}
rotation: {x: -0.0070665916, y: -0.03477688, z: 0.012713833, w: 0.9992893}
scale: {x: 1, y: 1, z: 1.0000001}
- name: RightHand
parentName: RightForeArm
position: {x: -0, y: 0, z: 0.0025199996}
rotation: {x: 0.04785175, y: 0.058315746, z: 0.009439293, w: 0.997106}
scale: {x: 1, y: 1.0000001, z: 1.0000001}
- name: RightHandThumb1
parentName: RightHand
position: {x: -0.00032399947, y: -0.00005200058, z: 0.0002639999}
rotation: {x: -0.064041786, y: -0.37624794, z: -0.09219173, w: 0.9196939}
scale: {x: 1, y: 0.9999998, z: 0.9999998}
- name: RightHandThumb2
parentName: RightHandThumb1
position: {x: 1.3038516e-10, y: 0.0000000023841857, z: 0.00041399995}
rotation: {x: -0.0038111755, y: 0.03170799, z: -0.04698655, w: 0.99838483}
scale: {x: 0.99999976, y: 0.99999994, z: 0.9999999}
- name: RightHandThumb3
parentName: RightHandThumb2
position: {x: -5.5879353e-11, y: -2.9802322e-10, z: 0.00030499994}
rotation: {x: -0.011741132, y: 0.12505826, z: -0.015240938, w: 0.99196285}
scale: {x: 1, y: 1.0000001, z: 1}
- name: RightHandIndex1
parentName: RightHand
position: {x: -0.00035300016, y: 0.0000699991, z: 0.00097499957}
rotation: {x: 0.057316687, y: -0.0567899, z: -0.05457637, w: 0.99524426}
scale: {x: 1, y: 0.99999976, z: 1}
- name: RightHandIndex2
parentName: RightHandIndex1
position: {x: 9.3132255e-12, y: 5.9604643e-10, z: 0.0004470007}
rotation: {x: 0.034629483, y: 0.00038205454, z: -0.0058260653, w: 0.9993832}
scale: {x: 1.0000001, y: 1.0000002, z: 1}
- name: RightHandIndex3
parentName: RightHandIndex2
position: {x: -3.7252902e-11, y: 0.0000000011920929, z: 0.00028299965}
rotation: {x: 0.09107981, y: 0.008501703, z: -0.075797535, w: 0.99291843}
scale: {x: 1, y: 0.9999999, z: 1}
- name: RightHandMiddle1
parentName: RightHand
position: {x: -0.00009199984, y: 0.00003499925, z: 0.001001999}
rotation: {x: 0.07009912, y: -0.050102215, z: -0.06523403, w: 0.99414307}
scale: {x: 1, y: 0.9999999, z: 1.0000001}
- name: RightHandMiddle2
parentName: RightHandMiddle1
position: {x: 3.7252902e-11, y: -2.9802322e-10, z: 0.00045700086}
rotation: {x: 0.029282305, y: 0.0011647637, z: -0.009792112, w: 0.99952257}
scale: {x: 0.9999999, y: 0.9999999, z: 1}
- name: RightHandMiddle3
parentName: RightHandMiddle2
position: {x: -9.313225e-11, y: 0.0000000011920929, z: 0.00035399987}
rotation: {x: 0.16913739, y: 0.01228213, z: -0.022702849, w: 0.98525447}
scale: {x: 0.99999994, y: 1, z: 0.9999998}
- name: RightHandRing1
parentName: RightHand
position: {x: 0.0001540003, y: -0.000022000968, z: 0.0009559996}
rotation: {x: 0.06400013, y: -0.048408736, z: -0.052136634, w: 0.9954107}
scale: {x: 1, y: 0.9999999, z: 0.9999999}
- name: RightHandRing2
parentName: RightHandRing1
position: {x: -7.4505804e-11, y: 8.9406965e-10, z: 0.00041899979}
rotation: {x: 0.026879793, y: 0.0005887259, z: -0.01649302, w: 0.9995024}
scale: {x: 0.99999976, y: 1, z: 1.0000001}
- name: RightHandRing3
parentName: RightHandRing2
position: {x: 3.72529e-10, y: 0.0000000016391277, z: 0.0003620006}
rotation: {x: 0.32800856, y: 0.01448318, z: -0.005422084, w: 0.9445482}
scale: {x: 0.99999994, y: 1, z: 1}
- name: RightHandPinky1
parentName: RightHand
position: {x: 0.00039100042, y: -0.00010499984, z: 0.0008979996}
rotation: {x: 0.062328994, y: -0.050560072, z: -0.07196722, w: 0.9941728}
scale: {x: 1, y: 0.99999964, z: 1}
- name: RightHandPinky2
parentName: RightHandPinky1
position: {x: 7.4505804e-11, y: 2.9802322e-10, z: 0.00028200023}
rotation: {x: 0.028489292, y: 0.00742512, z: -0.21269062, w: 0.976676}
scale: {x: 0.9999999, y: 0.9999998, z: 1}
- name: RightHandPinky3
parentName: RightHandPinky2
position: {x: -6.3329936e-10, y: -1.4901161e-10, z: 0.00022399992}
rotation: {x: 0.42514056, y: 0.22205992, z: -0.010551289, w: 0.8774016}
scale: {x: 0.99999994, y: 0.99999994, z: 0.9999999}
- name: LeftUpLeg
parentName: Hips
position: {x: -0.0009529998, y: 0.00003299997, z: 0.00005200038}
rotation: {x: 0.13053624, y: 0.9748479, z: -0.1559531, w: -0.09116148}
scale: {x: 1.0000025, y: 1.0001271, z: 1.0000004}
- name: LeftLeg
parentName: LeftUpLeg
position: {x: 2.2351741e-10, y: -2.9802322e-10, z: 0.0045820004}
rotation: {x: -0.196851, y: 0.025723659, z: -0.0063769147, w: 0.9800752}
scale: {x: 0.99999994, y: 0.99999994, z: 0.9999999}
- name: LeftFoot
parentName: LeftLeg
position: {x: -2.9802322e-10, y: -1.4901161e-10, z: 0.004438994}
rotation: {x: 0.47943965, y: -0.03928834, z: 0.007122174, w: 0.876666}
scale: {x: 1, y: 0.9999999, z: 1}
- name: LeftToeBase
parentName: LeftFoot
position: {x: 5.9604643e-10, y: -1.4901161e-10, z: 0.0014878722}
rotation: {x: 0.2682536, y: 0.018551948, z: 0.0437289, w: 0.9621765}
scale: {x: 1, y: 1, z: 1.0000001}
- name: RightUpLeg
parentName: Hips
position: {x: 0.00095300016, y: 0.000032999982, z: 0.000052000767}
rotation: {x: -0.08746487, y: 0.9948373, z: -0.04381664, w: -0.026996166}
scale: {x: 0.99999815, y: 0.99989516, z: 1.0000002}
- name: RightLeg
parentName: RightUpLeg
position: {x: 7.4505804e-11, y: 1.4901161e-10, z: 0.0045820014}
rotation: {x: -0.23705193, y: 0.0014610811, z: -0.057765007, w: 0.96977705}
scale: {x: 0.99999976, y: 1, z: 0.9999999}
- name: RightFoot
parentName: RightLeg
position: {x: 3.7252902e-11, y: -1.4901161e-10, z: 0.0044390038}
rotation: {x: 0.61518645, y: -0.047250383, z: 0.028496785, w: 0.78644836}
scale: {x: 1, y: 1.0000001, z: 1.0000001}
- name: RightToeBase
parentName: RightFoot
position: {x: -1.4901161e-10, y: 0, z: 0.001488106}
rotation: {x: 0.27527592, y: -0.018841553, z: -0.043828975, w: 0.9601808}
scale: {x: 1.0000002, y: 1, z: 1}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 3
humanoidOversampling: 1
avatarSetup: 1
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eb1536d8dd4f1b04bb85321582c7d098
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f0aaaec71c157b444abbbcf4f58bbbd7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cbdf4825ec22333499b1a1bdec095dd3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bfbcd552d69ab1547b6e372c53c978b7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 496e2d2d242b10e4cba4b50e899cac3d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7363ba7ab31d47d489b60e3aa6a53579
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 650a725a2bb22784e89b330b54529457
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Poppins
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 12aac7490fc6e5b41a811cc24c825f5e
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Poppins
fallbackFontReferences:
- {fileID: 12800000, guid: 650a725a2bb22784e89b330b54529457, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d973b673168b8254598ac312da376d5d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4a9ba395fb0e1c442a04dc03688fd489
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f2698416402208740a90ceb8648693d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 80a1b1f210f412d4c8b6bc1f7542904e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 33d8dc86a202ba44b8cb194156559a13
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9ae39b2477877814bbda5f30ccd568b5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b65d2d945cbfb354fb58d5ccbb6389aa
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d70c7227c7a96c041b344fa81303a7f2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 28a35a14cdccfc0419355c42267642cf
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6a199e79851fe4442b80b453d7c90378
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 42c66edfc5ef73f4c9aa610dc3015852
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 96bbe48dabe2100478aef7f14da51ed9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 442244fdabc5d0c4d88db0751a5d574d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ac4cce0c6986b54ba52582f773169d5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a99e579c7aaa6914c9719bfb617d58e9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b5927d8bfb6d7434b8043ee7777f7601
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e6d11b2f2e2f50947811d484e5a858f3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 01083a6af0db6304e86bf6591bf6772f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a5ed6191d7d0cd342a49ca4f06149214
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f91494514ca9e1c4ea412ea70019e9a2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 27be6f3384ce29d4c9ccfd2eb27159a7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 94e6adc5c795ff348bce129db0368b1f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5e420b3fa0d83174da72733d83b11c29
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More