mirror of
https://gitlab.com/ProcyonLotor/vrchat-template.git
synced 2026-08-25 18:53:53 +05:00
Compare commits
20 Commits
308c7bd793
...
project-st
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36a4cd76b1 | ||
|
|
01f42bcce5 | ||
|
|
47a346551c | ||
|
|
0fcc132eac | ||
|
|
acc87b4b09 | ||
|
|
89d3c504e6 | ||
|
|
fb5a718243 | ||
|
|
8f6a83b86f | ||
|
|
0f37a5a02c | ||
|
|
27c93c3e29 | ||
|
|
6c7f9e5493 | ||
|
|
5a270289f0 | ||
|
|
a01ccf03ce | ||
|
|
c2e20e8aa7 | ||
|
|
9bc6821b6d | ||
|
|
821a60251c | ||
|
|
b1690c7a57 | ||
|
|
3fd6371608 | ||
|
|
957768b38a | ||
|
|
255858a478 |
347
.vscode/settings.json
vendored
347
.vscode/settings.json
vendored
@@ -1,347 +0,0 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"*.anim": "yaml",
|
||||
"*.asset": "yaml",
|
||||
"*.controller": "yaml",
|
||||
"*.cubemap": "yaml",
|
||||
"*.flare": "yaml",
|
||||
"*.lighting": "yaml",
|
||||
"*.mask": "yaml",
|
||||
"*.mat": "yaml",
|
||||
"*.meta": "yaml",
|
||||
"*.prefab": "yaml",
|
||||
"*.unity": "yaml"
|
||||
},
|
||||
"yaml.customTags": [
|
||||
"tag:unity3d.com,2011:0 mapping", // object
|
||||
"tag:unity3d.com,2011:1 mapping", // GameObject
|
||||
"tag:unity3d.com,2011:2 mapping", // Component
|
||||
"tag:unity3d.com,2011:3 mapping", // LevelGameManager
|
||||
"tag:unity3d.com,2011:4 mapping", // Transform
|
||||
"tag:unity3d.com,2011:5 mapping", // TimeManager
|
||||
"tag:unity3d.com,2011:6 mapping", // GlobalGameManager
|
||||
"tag:unity3d.com,2011:8 mapping", // Behaviour
|
||||
"tag:unity3d.com,2011:9 mapping", // GameManager
|
||||
"tag:unity3d.com,2011:11 mapping", // AudioManager
|
||||
"tag:unity3d.com,2011:13 mapping", // InputManager
|
||||
"tag:unity3d.com,2011:18 mapping", // EditorExtension
|
||||
"tag:unity3d.com,2011:19 mapping", // Physics2DSettings
|
||||
"tag:unity3d.com,2011:20 mapping", // Camera
|
||||
"tag:unity3d.com,2011:21 mapping", // Material
|
||||
"tag:unity3d.com,2011:23 mapping", // MeshRenderer
|
||||
"tag:unity3d.com,2011:25 mapping", // Renderer
|
||||
"tag:unity3d.com,2011:27 mapping", // Texture
|
||||
"tag:unity3d.com,2011:28 mapping", // Texture2D
|
||||
"tag:unity3d.com,2011:29 mapping", // OcclusionCullingSettings
|
||||
"tag:unity3d.com,2011:30 mapping", // GraphicsSettings
|
||||
"tag:unity3d.com,2011:33 mapping", // MeshFilter
|
||||
"tag:unity3d.com,2011:41 mapping", // OcclusionPortal
|
||||
"tag:unity3d.com,2011:43 mapping", // Mesh
|
||||
"tag:unity3d.com,2011:45 mapping", // Skybox
|
||||
"tag:unity3d.com,2011:47 mapping", // QualitySettings
|
||||
"tag:unity3d.com,2011:48 mapping", // Shader
|
||||
"tag:unity3d.com,2011:49 mapping", // TextAsset
|
||||
"tag:unity3d.com,2011:50 mapping", // Rigidbody2D
|
||||
"tag:unity3d.com,2011:53 mapping", // Collider2D
|
||||
"tag:unity3d.com,2011:54 mapping", // Rigidbody
|
||||
"tag:unity3d.com,2011:55 mapping", // PhysicsManager
|
||||
"tag:unity3d.com,2011:56 mapping", // Collider
|
||||
"tag:unity3d.com,2011:57 mapping", // Joint
|
||||
"tag:unity3d.com,2011:58 mapping", // CircleCollider2D
|
||||
"tag:unity3d.com,2011:59 mapping", // HingeJoint
|
||||
"tag:unity3d.com,2011:60 mapping", // PolygonCollider2D
|
||||
"tag:unity3d.com,2011:61 mapping", // BoxCollider2D
|
||||
"tag:unity3d.com,2011:62 mapping", // PhysicsMaterial2D
|
||||
"tag:unity3d.com,2011:64 mapping", // MeshCollider
|
||||
"tag:unity3d.com,2011:65 mapping", // BoxCollider
|
||||
"tag:unity3d.com,2011:66 mapping", // CompositeCollider2D
|
||||
"tag:unity3d.com,2011:68 mapping", // EdgeCollider2D
|
||||
"tag:unity3d.com,2011:70 mapping", // CapsuleCollider2D
|
||||
"tag:unity3d.com,2011:72 mapping", // ComputeShader
|
||||
"tag:unity3d.com,2011:74 mapping", // AnimationClip
|
||||
"tag:unity3d.com,2011:75 mapping", // ConstantForce
|
||||
"tag:unity3d.com,2011:78 mapping", // TagManager
|
||||
"tag:unity3d.com,2011:81 mapping", // AudioListener
|
||||
"tag:unity3d.com,2011:82 mapping", // AudioSource
|
||||
"tag:unity3d.com,2011:83 mapping", // AudioClip
|
||||
"tag:unity3d.com,2011:84 mapping", // RenderTexture
|
||||
"tag:unity3d.com,2011:86 mapping", // CustomRenderTexture
|
||||
"tag:unity3d.com,2011:89 mapping", // Cubemap
|
||||
"tag:unity3d.com,2011:90 mapping", // Avatar
|
||||
"tag:unity3d.com,2011:91 mapping", // AnimatorController
|
||||
"tag:unity3d.com,2011:93 mapping", // RuntimeAnimatorController
|
||||
"tag:unity3d.com,2011:94 mapping", // ShaderNameRegistry
|
||||
"tag:unity3d.com,2011:95 mapping", // Animator
|
||||
"tag:unity3d.com,2011:96 mapping", // TrailRenderer
|
||||
"tag:unity3d.com,2011:98 mapping", // DelayedCallManager
|
||||
"tag:unity3d.com,2011:102 mapping", // TextMesh
|
||||
"tag:unity3d.com,2011:104 mapping", // RenderSettings
|
||||
"tag:unity3d.com,2011:108 mapping", // Light
|
||||
"tag:unity3d.com,2011:109 mapping", // ShaderInclude
|
||||
"tag:unity3d.com,2011:110 mapping", // BaseAnimationTrack
|
||||
"tag:unity3d.com,2011:111 mapping", // Animation
|
||||
"tag:unity3d.com,2011:114 mapping", // MonoBehaviour
|
||||
"tag:unity3d.com,2011:115 mapping", // MonoScript
|
||||
"tag:unity3d.com,2011:116 mapping", // MonoManager
|
||||
"tag:unity3d.com,2011:117 mapping", // Texture3D
|
||||
"tag:unity3d.com,2011:118 mapping", // NewAnimationTrack
|
||||
"tag:unity3d.com,2011:119 mapping", // Projector
|
||||
"tag:unity3d.com,2011:120 mapping", // LineRenderer
|
||||
"tag:unity3d.com,2011:121 mapping", // Flare
|
||||
"tag:unity3d.com,2011:122 mapping", // Halo
|
||||
"tag:unity3d.com,2011:123 mapping", // LensFlare
|
||||
"tag:unity3d.com,2011:124 mapping", // FlareLayer
|
||||
"tag:unity3d.com,2011:126 mapping", // NavMeshProjectSettings
|
||||
"tag:unity3d.com,2011:128 mapping", // Font
|
||||
"tag:unity3d.com,2011:129 mapping", // PlayerSettings
|
||||
"tag:unity3d.com,2011:130 mapping", // NamedObject
|
||||
"tag:unity3d.com,2011:134 mapping", // PhysicMaterial
|
||||
"tag:unity3d.com,2011:135 mapping", // SphereCollider
|
||||
"tag:unity3d.com,2011:136 mapping", // CapsuleCollider
|
||||
"tag:unity3d.com,2011:137 mapping", // SkinnedMeshRenderer
|
||||
"tag:unity3d.com,2011:138 mapping", // FixedJoint
|
||||
"tag:unity3d.com,2011:141 mapping", // BuildSettings
|
||||
"tag:unity3d.com,2011:142 mapping", // AssetBundle
|
||||
"tag:unity3d.com,2011:143 mapping", // CharacterController
|
||||
"tag:unity3d.com,2011:144 mapping", // CharacterJoint
|
||||
"tag:unity3d.com,2011:145 mapping", // SpringJoint
|
||||
"tag:unity3d.com,2011:146 mapping", // WheelCollider
|
||||
"tag:unity3d.com,2011:147 mapping", // ResourceManager
|
||||
"tag:unity3d.com,2011:150 mapping", // PreloadData
|
||||
"tag:unity3d.com,2011:152 mapping", // MovieTexture
|
||||
"tag:unity3d.com,2011:153 mapping", // ConfigurableJoint
|
||||
"tag:unity3d.com,2011:154 mapping", // TerrainCollider
|
||||
"tag:unity3d.com,2011:156 mapping", // TerrainData
|
||||
"tag:unity3d.com,2011:157 mapping", // LightmapSettings
|
||||
"tag:unity3d.com,2011:158 mapping", // WebCamTexture
|
||||
"tag:unity3d.com,2011:159 mapping", // EditorSettings
|
||||
"tag:unity3d.com,2011:162 mapping", // EditorUserSettings
|
||||
"tag:unity3d.com,2011:164 mapping", // AudioReverbFilter
|
||||
"tag:unity3d.com,2011:165 mapping", // AudioHighPassFilter
|
||||
"tag:unity3d.com,2011:166 mapping", // AudioChorusFilter
|
||||
"tag:unity3d.com,2011:167 mapping", // AudioReverbZone
|
||||
"tag:unity3d.com,2011:168 mapping", // AudioEchoFilter
|
||||
"tag:unity3d.com,2011:169 mapping", // AudioLowPassFilter
|
||||
"tag:unity3d.com,2011:170 mapping", // AudioDistortionFilter
|
||||
"tag:unity3d.com,2011:171 mapping", // SparseTexture
|
||||
"tag:unity3d.com,2011:180 mapping", // AudioBehaviour
|
||||
"tag:unity3d.com,2011:181 mapping", // AudioFilter
|
||||
"tag:unity3d.com,2011:182 mapping", // WindZone
|
||||
"tag:unity3d.com,2011:183 mapping", // Cloth
|
||||
"tag:unity3d.com,2011:184 mapping", // SubstanceArchive
|
||||
"tag:unity3d.com,2011:185 mapping", // ProceduralMaterial
|
||||
"tag:unity3d.com,2011:186 mapping", // ProceduralTexture
|
||||
"tag:unity3d.com,2011:187 mapping", // Texture2DArray
|
||||
"tag:unity3d.com,2011:188 mapping", // CubemapArray
|
||||
"tag:unity3d.com,2011:191 mapping", // OffMeshLink
|
||||
"tag:unity3d.com,2011:192 mapping", // OcclusionArea
|
||||
"tag:unity3d.com,2011:193 mapping", // Tree
|
||||
"tag:unity3d.com,2011:195 mapping", // NavMeshAgent
|
||||
"tag:unity3d.com,2011:196 mapping", // NavMeshSettings
|
||||
"tag:unity3d.com,2011:198 mapping", // ParticleSystem
|
||||
"tag:unity3d.com,2011:199 mapping", // ParticleSystemRenderer
|
||||
"tag:unity3d.com,2011:200 mapping", // ShaderVariantCollection
|
||||
"tag:unity3d.com,2011:205 mapping", // LODGroup
|
||||
"tag:unity3d.com,2011:206 mapping", // BlendTree
|
||||
"tag:unity3d.com,2011:207 mapping", // Motion
|
||||
"tag:unity3d.com,2011:208 mapping", // NavMeshObstacle
|
||||
"tag:unity3d.com,2011:210 mapping", // SortingGroup
|
||||
"tag:unity3d.com,2011:212 mapping", // SpriteRenderer
|
||||
"tag:unity3d.com,2011:213 mapping", // Sprite
|
||||
"tag:unity3d.com,2011:214 mapping", // CachedSpriteAtlas
|
||||
"tag:unity3d.com,2011:215 mapping", // ReflectionProbe
|
||||
"tag:unity3d.com,2011:218 mapping", // Terrain
|
||||
"tag:unity3d.com,2011:220 mapping", // LightProbeGroup
|
||||
"tag:unity3d.com,2011:221 mapping", // AnimatorOverrideController
|
||||
"tag:unity3d.com,2011:222 mapping", // CanvasRenderer
|
||||
"tag:unity3d.com,2011:223 mapping", // Canvas
|
||||
"tag:unity3d.com,2011:224 mapping", // RectTransform
|
||||
"tag:unity3d.com,2011:225 mapping", // CanvasGroup
|
||||
"tag:unity3d.com,2011:226 mapping", // BillboardAsset
|
||||
"tag:unity3d.com,2011:227 mapping", // BillboardRenderer
|
||||
"tag:unity3d.com,2011:228 mapping", // SpeedTreeWindAsset
|
||||
"tag:unity3d.com,2011:229 mapping", // AnchoredJoint2D
|
||||
"tag:unity3d.com,2011:230 mapping", // Joint2D
|
||||
"tag:unity3d.com,2011:231 mapping", // SpringJoint2D
|
||||
"tag:unity3d.com,2011:232 mapping", // DistanceJoint2D
|
||||
"tag:unity3d.com,2011:233 mapping", // HingeJoint2D
|
||||
"tag:unity3d.com,2011:234 mapping", // SliderJoint2D
|
||||
"tag:unity3d.com,2011:235 mapping", // WheelJoint2D
|
||||
"tag:unity3d.com,2011:236 mapping", // ClusterInputManager
|
||||
"tag:unity3d.com,2011:237 mapping", // BaseVideoTexture
|
||||
"tag:unity3d.com,2011:238 mapping", // NavMeshData
|
||||
"tag:unity3d.com,2011:240 mapping", // AudioMixer
|
||||
"tag:unity3d.com,2011:241 mapping", // AudioMixerController
|
||||
"tag:unity3d.com,2011:243 mapping", // AudioMixerGroupController
|
||||
"tag:unity3d.com,2011:244 mapping", // AudioMixerEffectController
|
||||
"tag:unity3d.com,2011:245 mapping", // AudioMixerSnapshotController
|
||||
"tag:unity3d.com,2011:246 mapping", // PhysicsUpdateBehaviour2D
|
||||
"tag:unity3d.com,2011:247 mapping", // ConstantForce2D
|
||||
"tag:unity3d.com,2011:248 mapping", // Effector2D
|
||||
"tag:unity3d.com,2011:249 mapping", // AreaEffector2D
|
||||
"tag:unity3d.com,2011:250 mapping", // PointEffector2D
|
||||
"tag:unity3d.com,2011:251 mapping", // PlatformEffector2D
|
||||
"tag:unity3d.com,2011:252 mapping", // SurfaceEffector2D
|
||||
"tag:unity3d.com,2011:253 mapping", // BuoyancyEffector2D
|
||||
"tag:unity3d.com,2011:254 mapping", // RelativeJoint2D
|
||||
"tag:unity3d.com,2011:255 mapping", // FixedJoint2D
|
||||
"tag:unity3d.com,2011:256 mapping", // FrictionJoint2D
|
||||
"tag:unity3d.com,2011:257 mapping", // TargetJoint2D
|
||||
"tag:unity3d.com,2011:258 mapping", // LightProbes
|
||||
"tag:unity3d.com,2011:259 mapping", // LightProbeProxyVolume
|
||||
"tag:unity3d.com,2011:271 mapping", // SampleClip
|
||||
"tag:unity3d.com,2011:272 mapping", // AudioMixerSnapshot
|
||||
"tag:unity3d.com,2011:273 mapping", // AudioMixerGroup
|
||||
"tag:unity3d.com,2011:290 mapping", // AssetBundleManifest
|
||||
"tag:unity3d.com,2011:300 mapping", // RuntimeInitializeOnLoadManager
|
||||
"tag:unity3d.com,2011:310 mapping", // UnityConnectSettings
|
||||
"tag:unity3d.com,2011:319 mapping", // AvatarMask
|
||||
"tag:unity3d.com,2011:320 mapping", // PlayableDirector
|
||||
"tag:unity3d.com,2011:328 mapping", // VideoPlayer
|
||||
"tag:unity3d.com,2011:329 mapping", // VideoClip
|
||||
"tag:unity3d.com,2011:330 mapping", // ParticleSystemForceField
|
||||
"tag:unity3d.com,2011:331 mapping", // SpriteMask
|
||||
"tag:unity3d.com,2011:363 mapping", // OcclusionCullingData
|
||||
"tag:unity3d.com,2011:1001 mapping", // PrefabInstance
|
||||
"tag:unity3d.com,2011:1002 mapping", // EditorExtensionImpl
|
||||
"tag:unity3d.com,2011:1003 mapping", // AssetImporter
|
||||
"tag:unity3d.com,2011:1005 mapping", // Mesh3DSImporter
|
||||
"tag:unity3d.com,2011:1006 mapping", // TextureImporter
|
||||
"tag:unity3d.com,2011:1007 mapping", // ShaderImporter
|
||||
"tag:unity3d.com,2011:1008 mapping", // ComputeShaderImporter
|
||||
"tag:unity3d.com,2011:1020 mapping", // AudioImporter
|
||||
"tag:unity3d.com,2011:1026 mapping", // HierarchyState
|
||||
"tag:unity3d.com,2011:1028 mapping", // AssetMetaData
|
||||
"tag:unity3d.com,2011:1029 mapping", // DefaultAsset
|
||||
"tag:unity3d.com,2011:1030 mapping", // DefaultImporter
|
||||
"tag:unity3d.com,2011:1031 mapping", // TextScriptImporter
|
||||
"tag:unity3d.com,2011:1032 mapping", // SceneAsset
|
||||
"tag:unity3d.com,2011:1034 mapping", // NativeFormatImporter
|
||||
"tag:unity3d.com,2011:1035 mapping", // MonoImporter
|
||||
"tag:unity3d.com,2011:1038 mapping", // LibraryAssetImporter
|
||||
"tag:unity3d.com,2011:1040 mapping", // ModelImporter
|
||||
"tag:unity3d.com,2011:1041 mapping", // FBXImporter
|
||||
"tag:unity3d.com,2011:1042 mapping", // TrueTypeFontImporter
|
||||
"tag:unity3d.com,2011:1045 mapping", // EditorBuildSettings
|
||||
"tag:unity3d.com,2011:1048 mapping", // InspectorExpandedState
|
||||
"tag:unity3d.com,2011:1049 mapping", // AnnotationManager
|
||||
"tag:unity3d.com,2011:1050 mapping", // PluginImporter
|
||||
"tag:unity3d.com,2011:1051 mapping", // EditorUserBuildSettings
|
||||
"tag:unity3d.com,2011:1055 mapping", // IHVImageFormatImporter
|
||||
"tag:unity3d.com,2011:1101 mapping", // AnimatorStateTransition
|
||||
"tag:unity3d.com,2011:1102 mapping", // AnimatorState
|
||||
"tag:unity3d.com,2011:1105 mapping", // HumanTemplate
|
||||
"tag:unity3d.com,2011:1107 mapping", // AnimatorStateMachine
|
||||
"tag:unity3d.com,2011:1108 mapping", // PreviewAnimationClip
|
||||
"tag:unity3d.com,2011:1109 mapping", // AnimatorTransition
|
||||
"tag:unity3d.com,2011:1110 mapping", // SpeedTreeImporter
|
||||
"tag:unity3d.com,2011:1111 mapping", // AnimatorTransitionBase
|
||||
"tag:unity3d.com,2011:1112 mapping", // SubstanceImporter
|
||||
"tag:unity3d.com,2011:1113 mapping", // LightmapParameters
|
||||
"tag:unity3d.com,2011:1120 mapping", // LightingDataAsset
|
||||
"tag:unity3d.com,2011:1124 mapping", // SketchUpImporter
|
||||
"tag:unity3d.com,2011:1125 mapping", // BuildReport
|
||||
"tag:unity3d.com,2011:1126 mapping", // PackedAssets
|
||||
"tag:unity3d.com,2011:1127 mapping", // VideoClipImporter
|
||||
"tag:unity3d.com,2011:100000 mapping", // int
|
||||
"tag:unity3d.com,2011:100001 mapping", // bool
|
||||
"tag:unity3d.com,2011:100002 mapping", // float
|
||||
"tag:unity3d.com,2011:100003 mapping", // MonoObject
|
||||
"tag:unity3d.com,2011:100004 mapping", // Collision
|
||||
"tag:unity3d.com,2011:100005 mapping", // Vector3f
|
||||
"tag:unity3d.com,2011:100006 mapping", // RootMotionData
|
||||
"tag:unity3d.com,2011:100007 mapping", // Collision2D
|
||||
"tag:unity3d.com,2011:100008 mapping", // AudioMixerLiveUpdateFloat
|
||||
"tag:unity3d.com,2011:100009 mapping", // AudioMixerLiveUpdateBool
|
||||
"tag:unity3d.com,2011:100010 mapping", // Polygon2D
|
||||
"tag:unity3d.com,2011:100011 mapping", // void
|
||||
"tag:unity3d.com,2011:19719996 mapping", // TilemapCollider2D
|
||||
"tag:unity3d.com,2011:41386430 mapping", // ImportLog
|
||||
"tag:unity3d.com,2011:55640938 mapping", // GraphicsStateCollection
|
||||
"tag:unity3d.com,2011:73398921 mapping", // VFXRenderer
|
||||
"tag:unity3d.com,2011:156049354 mapping", // Grid
|
||||
"tag:unity3d.com,2011:156483287 mapping", // ScenesUsingAssets
|
||||
"tag:unity3d.com,2011:171741748 mapping", // ArticulationBody
|
||||
"tag:unity3d.com,2011:181963792 mapping", // Preset
|
||||
"tag:unity3d.com,2011:285090594 mapping", // IConstraint
|
||||
"tag:unity3d.com,2011:294290339 mapping", // AssemblyDefinitionReferenceImporter
|
||||
"tag:unity3d.com,2011:355983997 mapping", // AudioResource
|
||||
"tag:unity3d.com,2011:369655926 mapping", // AssetImportInProgressProxy
|
||||
"tag:unity3d.com,2011:382020655 mapping", // PluginBuildInfo
|
||||
"tag:unity3d.com,2011:387306366 mapping", // MemorySettings
|
||||
"tag:unity3d.com,2011:403037116 mapping", // BuildMetaDataImporter
|
||||
"tag:unity3d.com,2011:403037117 mapping", // BuildInstructionImporter
|
||||
"tag:unity3d.com,2011:426301858 mapping", // EditorProjectAccess
|
||||
"tag:unity3d.com,2011:468431735 mapping", // PrefabImporter
|
||||
"tag:unity3d.com,2011:483693784 mapping", // TilemapRenderer
|
||||
"tag:unity3d.com,2011:612988286 mapping", // SpriteAtlasAsset
|
||||
"tag:unity3d.com,2011:638013454 mapping", // SpriteAtlasDatabase
|
||||
"tag:unity3d.com,2011:641289076 mapping", // AudioBuildInfo
|
||||
"tag:unity3d.com,2011:644342135 mapping", // CachedSpriteAtlasRuntimeData
|
||||
"tag:unity3d.com,2011:655991488 mapping", // MultiplayerManager
|
||||
"tag:unity3d.com,2011:662584278 mapping", // AssemblyDefinitionReferenceAsset
|
||||
"tag:unity3d.com,2011:668709126 mapping", // BuiltAssetBundleInfoSet
|
||||
"tag:unity3d.com,2011:687078895 mapping", // SpriteAtlas
|
||||
"tag:unity3d.com,2011:747330370 mapping", // RayTracingShaderImporter
|
||||
"tag:unity3d.com,2011:780535461 mapping", // BuildArchiveImporter
|
||||
"tag:unity3d.com,2011:815301076 mapping", // PreviewImporter
|
||||
"tag:unity3d.com,2011:825902497 mapping", // RayTracingShader
|
||||
"tag:unity3d.com,2011:850595691 mapping", // LightingSettings
|
||||
"tag:unity3d.com,2011:877146078 mapping", // PlatformModuleSetup
|
||||
"tag:unity3d.com,2011:890905787 mapping", // VersionControlSettings
|
||||
"tag:unity3d.com,2011:893571522 mapping", // CustomCollider2D
|
||||
"tag:unity3d.com,2011:895512359 mapping", // AimConstraint
|
||||
"tag:unity3d.com,2011:937362698 mapping", // VFXManager
|
||||
"tag:unity3d.com,2011:947337230 mapping", // RoslynAnalyzerConfigAsset
|
||||
"tag:unity3d.com,2011:954905827 mapping", // RuleSetFileAsset
|
||||
"tag:unity3d.com,2011:994735392 mapping", // VisualEffectSubgraph
|
||||
"tag:unity3d.com,2011:994735403 mapping", // VisualEffectSubgraphOperator
|
||||
"tag:unity3d.com,2011:994735404 mapping", // VisualEffectSubgraphBlock
|
||||
"tag:unity3d.com,2011:1001480554 mapping", // Prefab
|
||||
"tag:unity3d.com,2011:1027052791 mapping", // LocalizationImporter
|
||||
"tag:unity3d.com,2011:1114811875 mapping", // ReferencesArtifactGenerator
|
||||
"tag:unity3d.com,2011:1152215463 mapping", // AssemblyDefinitionAsset
|
||||
"tag:unity3d.com,2011:1154873562 mapping", // SceneVisibilityState
|
||||
"tag:unity3d.com,2011:1183024399 mapping", // LookAtConstraint
|
||||
"tag:unity3d.com,2011:1210832254 mapping", // SpriteAtlasImporter
|
||||
"tag:unity3d.com,2011:1233149941 mapping", // AudioContainerElement
|
||||
"tag:unity3d.com,2011:1268269756 mapping", // GameObjectRecorder
|
||||
"tag:unity3d.com,2011:1307931743 mapping", // AudioRandomContainer
|
||||
"tag:unity3d.com,2011:1325145578 mapping", // LightingDataAssetParent
|
||||
"tag:unity3d.com,2011:1386491679 mapping", // PresetManager
|
||||
"tag:unity3d.com,2011:1403656975 mapping", // StreamingManager
|
||||
"tag:unity3d.com,2011:1480428607 mapping", // LowerResBlitTexture
|
||||
"tag:unity3d.com,2011:1521398425 mapping", // VideoBuildInfo
|
||||
"tag:unity3d.com,2011:1541671625 mapping", // C4DImporter
|
||||
"tag:unity3d.com,2011:1542919678 mapping", // StreamingController
|
||||
"tag:unity3d.com,2011:1557264870 mapping", // ShaderContainer
|
||||
"tag:unity3d.com,2011:1597193336 mapping", // RoslynAdditionalFileAsset
|
||||
"tag:unity3d.com,2011:1642787288 mapping", // RoslynAdditionalFileImporter
|
||||
"tag:unity3d.com,2011:1652712579 mapping", // MultiplayerRolesData
|
||||
"tag:unity3d.com,2011:1660057539 mapping", // SceneRoots
|
||||
"tag:unity3d.com,2011:1731078267 mapping", // BrokenPrefabAsset
|
||||
"tag:unity3d.com,2011:1736697216 mapping", // AndroidAssetPackImporter
|
||||
"tag:unity3d.com,2011:1742807556 mapping", // GridLayout
|
||||
"tag:unity3d.com,2011:1766753193 mapping", // AssemblyDefinitionImporter
|
||||
"tag:unity3d.com,2011:1773428102 mapping", // ParentConstraint
|
||||
"tag:unity3d.com,2011:1777034230 mapping", // RuleSetFileImporter
|
||||
"tag:unity3d.com,2011:1818360608 mapping", // PositionConstraint
|
||||
"tag:unity3d.com,2011:1818360609 mapping", // RotationConstraint
|
||||
"tag:unity3d.com,2011:1818360610 mapping", // ScaleConstraint
|
||||
"tag:unity3d.com,2011:1839735485 mapping", // Tilemap
|
||||
"tag:unity3d.com,2011:1896753125 mapping", // PackageManifest
|
||||
"tag:unity3d.com,2011:1896753126 mapping", // PackageManifestImporter
|
||||
"tag:unity3d.com,2011:1903396204 mapping", // RoslynAnalyzerConfigImporter
|
||||
"tag:unity3d.com,2011:1931382933 mapping", // UIRenderer
|
||||
"tag:unity3d.com,2011:1953259897 mapping", // TerrainLayer
|
||||
"tag:unity3d.com,2011:1971053207 mapping", // SpriteShapeRenderer
|
||||
"tag:unity3d.com,2011:2058629509 mapping", // VisualEffectAsset
|
||||
"tag:unity3d.com,2011:2058629510 mapping", // VisualEffectImporter
|
||||
"tag:unity3d.com,2011:2058629511 mapping", // VisualEffectResource
|
||||
"tag:unity3d.com,2011:2059678085 mapping", // VisualEffectObject
|
||||
"tag:unity3d.com,2011:2083052967 mapping", // VisualEffect
|
||||
"tag:unity3d.com,2011:2083778819 mapping", // LocalizationAsset
|
||||
"tag:unity3d.com,2011:2089858483 mapping", // ScriptedImporter
|
||||
"tag:unity3d.com,2011:2103361453 mapping", // ShaderIncludeImporter
|
||||
]
|
||||
}
|
||||
1
Assets/avatar-example/3rdparty/Mochie/MochieStandard.shader
vendored
Normal file
1
Assets/avatar-example/3rdparty/Mochie/MochieStandard.shader
vendored
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/3rdparty/Poiyomi/PoiyomiToon.shader
vendored
Normal file
1
Assets/avatar-example/3rdparty/Poiyomi/PoiyomiToon.shader
vendored
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/action/backflip.anim
Normal file
1
Assets/avatar-example/animations/action/backflip.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/action/conga.anim
Normal file
1
Assets/avatar-example/animations/action/conga.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/action/dance.anim
Normal file
1
Assets/avatar-example/animations/action/dance.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/action/high-five.anim
Normal file
1
Assets/avatar-example/animations/action/high-five.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/expressions/happy.anim
Normal file
1
Assets/avatar-example/animations/expressions/happy.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/expressions/mad.anim
Normal file
1
Assets/avatar-example/animations/expressions/mad.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/pants-off.anim
Normal file
1
Assets/avatar-example/animations/toggles/pants-off.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/pants-on.anim
Normal file
1
Assets/avatar-example/animations/toggles/pants-on.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/shirt-off.anim
Normal file
1
Assets/avatar-example/animations/toggles/shirt-off.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/shirt-on.anim
Normal file
1
Assets/avatar-example/animations/toggles/shirt-on.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/shoes-off.anim
Normal file
1
Assets/avatar-example/animations/toggles/shoes-off.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/animations/toggles/shoes-on.anim
Normal file
1
Assets/avatar-example/animations/toggles/shoes-on.anim
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/materials/body.mat
Normal file
1
Assets/avatar-example/materials/body.mat
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/materials/body.mat.meta
Normal file
1
Assets/avatar-example/materials/body.mat.meta
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/materials/outfit1.mat
Normal file
1
Assets/avatar-example/materials/outfit1.mat
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/materials/outfit1.mat.meta
Normal file
1
Assets/avatar-example/materials/outfit1.mat.meta
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
72
Assets/avatar-example/mesh/blend~/add_setup_triplanar.py
Normal file
72
Assets/avatar-example/mesh/blend~/add_setup_triplanar.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from math import pi
|
||||
|
||||
import bpy
|
||||
from bpy.types import Context, Operator
|
||||
|
||||
|
||||
def create_triplanar_setup(context: Context) -> None:
|
||||
"""
|
||||
Creates triplanar setup - a mesh cube with UVProject modifier and 6 UV projectors
|
||||
|
||||
:param context: Current context
|
||||
:type context: bpy.types.Context
|
||||
"""
|
||||
bpy.ops.object.empty_add(type='CUBE', radius=1.6, location=(1.6, 1.6, 1.6), rotation=(0, 0, 0))
|
||||
anchor_empty = context.active_object
|
||||
anchor_empty.name = "UV_anchor"
|
||||
|
||||
bpy.ops.mesh.primitive_cube_add(radius=1, calc_uvs=True)
|
||||
cube_obj = context.active_object
|
||||
|
||||
bpy.ops.object.modifier_add(type='UV_PROJECT')
|
||||
uv_mod = cube_obj.modifiers["UVProject"]
|
||||
|
||||
rotations_list = [
|
||||
("top", (0, 0, 0)),
|
||||
("front", (pi/2, 0, 0)),
|
||||
("back", (pi/2, 0, pi)),
|
||||
("left", (pi/2, 0, pi/2)),
|
||||
("right", (pi/2, 0, -pi/2)),
|
||||
("bottom", (pi, 0, 0)),
|
||||
]
|
||||
|
||||
uv_mod.projector_count = len(rotations_list)
|
||||
|
||||
for i, (name, rotation) in enumerate(rotations_list):
|
||||
bpy.ops.object.empty_add(type='SINGLE_ARROW', radius=1.6, location=(0, 0, 0), rotation=rotation)
|
||||
uv_projector = context.active_object
|
||||
uv_projector.name = "UV_%s" % name
|
||||
uv_projector.parent = anchor_empty
|
||||
uv_mod.projectors[i].object = uv_projector
|
||||
|
||||
|
||||
class MESH_OT_AddTriplanarSetup(Operator):
|
||||
bl_idname = "mesh.setup_triplanar_add"
|
||||
bl_label = "Triplanar UV Setup"
|
||||
bl_options = {'REGISTER', 'UNDO'}
|
||||
|
||||
def execute(self, context: Context):
|
||||
try:
|
||||
create_triplanar_setup(context)
|
||||
except Exception as e:
|
||||
self.report({'ERROR'}, str(e))
|
||||
return {'CANCELLED'}
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
def draw_triplanar_setup(self, context):
|
||||
self.layout.operator(MESH_OT_AddTriplanarSetup.bl_idname, icon='MOD_UVPROJECT')
|
||||
|
||||
|
||||
def register():
|
||||
bpy.utils.register_class(MESH_OT_AddTriplanarSetup)
|
||||
if draw_triplanar_setup.__name__ not in [f.__name__ for f in bpy.types.INFO_MT_mesh_add._dyn_ui_initialize()]:
|
||||
bpy.types.INFO_MT_mesh_add.append(draw_triplanar_setup)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.INFO_MT_mesh_add.remove(draw_triplanar_setup)
|
||||
bpy.utils.unregister_class(MESH_OT_AddTriplanarSetup)
|
||||
|
||||
|
||||
register()
|
||||
BIN
Assets/avatar-example/mesh/blend~/blender-setup-example.blend
LFS
Normal file
BIN
Assets/avatar-example/mesh/blend~/blender-setup-example.blend
LFS
Normal file
Binary file not shown.
288
Assets/avatar-example/mesh/blend~/fbx_export.py
Normal file
288
Assets/avatar-example/mesh/blend~/fbx_export.py
Normal file
@@ -0,0 +1,288 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
import bpy
|
||||
_FUTURE = bpy.app.version >= (2, 80, 0)
|
||||
from bpy.props import BoolProperty, EnumProperty, IntProperty, StringProperty
|
||||
from bpy.types import Context, Operator, Panel, Scene, UIList
|
||||
if _FUTURE:
|
||||
from bpy.types import Collection as Group
|
||||
else:
|
||||
from bpy.types import Group as Group
|
||||
|
||||
|
||||
def message_box(message: str, title: str = "Message", icon: str = 'INFO') -> None:
|
||||
"""Shows modal window with a message
|
||||
|
||||
:param message: Message text
|
||||
:param title: Window title
|
||||
:param icon: Window icon
|
||||
"""
|
||||
def draw(self, context):
|
||||
col = self.layout.column(align=True)
|
||||
for line in message.strip().split("\n"):
|
||||
col.label(text=line)
|
||||
bpy.context.window_manager.popup_menu(draw, title=title, icon=icon)
|
||||
|
||||
|
||||
def name_as_path(name: str) -> str:
|
||||
"""Converts and sanitizes an arbitrary string to a canonical path with OS-specific separator
|
||||
|
||||
:param name: Some name
|
||||
:returns: Canonical path
|
||||
"""
|
||||
return os.path.join(*[bpy.path.clean_name(n) for n in name.replace("\\", "/").split("/") if n]) + ".fbx"
|
||||
|
||||
|
||||
def fbx_export(context: Context) -> None:
|
||||
"""
|
||||
Export all objects Groups to ASCII FBX
|
||||
"""
|
||||
print("[%s] Batch FBX export begin" % datetime.now())
|
||||
|
||||
settings_ascii = dict(
|
||||
# Common
|
||||
version='ASCII6100',
|
||||
axis_forward='-Z',
|
||||
axis_up='Y',
|
||||
global_scale=1.0,
|
||||
object_types=context.scene.fbx_object_types,
|
||||
use_selection=True,
|
||||
# Mesh
|
||||
mesh_smooth_type='FACE',
|
||||
use_mesh_edges=False,
|
||||
use_mesh_modifiers=context.scene.fbx_use_modifiers,
|
||||
use_tspace=False,
|
||||
# Armature
|
||||
add_leaf_bones=False,
|
||||
armature_nodetype='NULL',
|
||||
primary_bone_axis='Y',
|
||||
secondary_bone_axis='X',
|
||||
use_armature_deform_only=True,
|
||||
# Animation
|
||||
use_anim=context.scene.fbx_use_anim,
|
||||
use_default_take=False,
|
||||
# File
|
||||
batch_mode='OFF',
|
||||
path_mode='RELATIVE',
|
||||
)
|
||||
|
||||
settings_binary = dict(
|
||||
# Common
|
||||
version='BIN7400',
|
||||
axis_forward='-Z',
|
||||
axis_up='Y',
|
||||
apply_scale_options='FBX_SCALE_ALL',
|
||||
apply_unit_scale=True,
|
||||
bake_space_transform=True,
|
||||
global_scale=1.0,
|
||||
object_types=context.scene.fbx_object_types,
|
||||
use_custom_props=True,
|
||||
use_selection=True,
|
||||
# Mesh
|
||||
mesh_smooth_type='FACE',
|
||||
use_mesh_edges=False,
|
||||
use_mesh_modifiers=context.scene.fbx_use_modifiers,
|
||||
use_mesh_modifiers_render=True,
|
||||
use_tspace=False,
|
||||
# Armature
|
||||
add_leaf_bones=False,
|
||||
armature_nodetype='NULL',
|
||||
primary_bone_axis='Y',
|
||||
secondary_bone_axis='X',
|
||||
use_armature_deform_only=True,
|
||||
# Animation
|
||||
bake_anim=context.scene.fbx_use_anim,
|
||||
bake_anim_force_startend_keying=True,
|
||||
bake_anim_simplify_factor=1.0,
|
||||
bake_anim_step=1.0,
|
||||
bake_anim_use_all_actions=True,
|
||||
bake_anim_use_all_bones=True,
|
||||
bake_anim_use_nla_strips=True,
|
||||
# File
|
||||
batch_mode='OFF',
|
||||
embed_textures=False,
|
||||
path_mode='RELATIVE',
|
||||
)
|
||||
|
||||
settings = settings_binary if _FUTURE or context.scene.fbx_force_binary else settings_ascii
|
||||
if _FUTURE:
|
||||
settings.pop('version')
|
||||
rootpath = os.path.normpath(bpy.path.abspath(context.scene.fbx_export_dir))
|
||||
groups = bpy.data.collections if _FUTURE else bpy.data.groups
|
||||
override = context.copy()
|
||||
|
||||
for group in [g for g in groups if g.fbx_exportable]:
|
||||
filepath = os.path.join(rootpath, name_as_path(group.name))
|
||||
basepath = os.path.dirname(filepath)
|
||||
|
||||
if not os.path.exists(basepath):
|
||||
os.makedirs(basepath)
|
||||
|
||||
override.update(
|
||||
{
|
||||
"selected_objects": group.objects
|
||||
}
|
||||
)
|
||||
settings.update(
|
||||
{
|
||||
"filepath": filepath
|
||||
}
|
||||
)
|
||||
|
||||
if bpy.app.version >= (4, 0, 0):
|
||||
with context.temp_override(**override):
|
||||
bpy.ops.export_scene.fbx(**settings)
|
||||
else:
|
||||
bpy.ops.export_scene.fbx(override, **settings)
|
||||
|
||||
print("\n[%s] Batch FBX export end." % datetime.now())
|
||||
|
||||
|
||||
class FBX_OT_ManualExport(Operator):
|
||||
bl_idname = "fbx.manual_export"
|
||||
bl_label = "Manual Export"
|
||||
bl_description = "Export FBX manualy"
|
||||
|
||||
def execute(self, context):
|
||||
try:
|
||||
fbx_export(context)
|
||||
except Exception as e:
|
||||
self.report({'ERROR'}, str(e))
|
||||
return {'CANCELLED'}
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class FBX_UL_ExportItems(UIList):
|
||||
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
|
||||
row = layout.row(align=True)
|
||||
row.prop(item, "fbx_exportable", icon='CHECKBOX_HLT' if item.fbx_exportable else 'CHECKBOX_DEHLT', text="", emboss=False)
|
||||
row.prop(item, "name", text="", emboss=False, icon='GROUP')
|
||||
|
||||
|
||||
class SCENE_PT_fbx_autoexport(Panel):
|
||||
"""Creates a Panel in the scene context of the properties editor"""
|
||||
bl_label = "FBX Auto-Export"
|
||||
bl_idname = "SCENE_PT_fbx_autoexport"
|
||||
bl_space_type = 'PROPERTIES'
|
||||
bl_region_type = 'WINDOW'
|
||||
bl_context = "scene"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
scene = context.scene
|
||||
|
||||
col = layout.column()
|
||||
|
||||
split = col.split()
|
||||
sub = split.column()
|
||||
sub.label(text="Filter groups:")
|
||||
sub.template_list("FBX_UL_ExportItems", "", bpy.data, "collections" if _FUTURE else "groups", scene, "fbx_group_index", rows=5)
|
||||
sub = split.column()
|
||||
sub.label(text="Filter object types:")
|
||||
sub.prop(scene, "fbx_object_types")
|
||||
|
||||
col.separator()
|
||||
|
||||
if _FUTURE:
|
||||
col.use_property_split = True
|
||||
col.use_property_decorate = False
|
||||
col.prop(scene, "fbx_on_save")
|
||||
col.prop(scene, "fbx_use_anim")
|
||||
col.prop(scene, "fbx_use_modifiers")
|
||||
if not _FUTURE:
|
||||
col.prop(scene, "fbx_force_binary")
|
||||
|
||||
col.separator()
|
||||
|
||||
col.prop(scene, "fbx_export_dir")
|
||||
col.operator(FBX_OT_ManualExport.bl_idname)
|
||||
|
||||
|
||||
def on_save(*args, **kwargs) -> None:
|
||||
"""
|
||||
Runs when Blender file is being saved
|
||||
"""
|
||||
if not bpy.context.scene.fbx_on_save:
|
||||
return
|
||||
|
||||
try:
|
||||
fbx_export(bpy.context)
|
||||
except Exception as e:
|
||||
message_box(str(e), "Export error", 'ERROR')
|
||||
|
||||
|
||||
classes = [
|
||||
FBX_OT_ManualExport,
|
||||
FBX_UL_ExportItems,
|
||||
SCENE_PT_fbx_autoexport,
|
||||
]
|
||||
|
||||
|
||||
def register() -> None:
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
Scene.fbx_export_dir = StringProperty(
|
||||
name="FBX Export Dir",
|
||||
description="FBX Export Directory",
|
||||
subtype="DIR_PATH",
|
||||
default="//../fbx/",
|
||||
)
|
||||
Scene.fbx_on_save = BoolProperty(
|
||||
name="Export on save",
|
||||
description="Export FBX on Blender file save",
|
||||
default=False
|
||||
)
|
||||
Scene.fbx_object_types = EnumProperty(
|
||||
name="Object Types",
|
||||
options={'ENUM_FLAG'},
|
||||
items=(
|
||||
('EMPTY', "Empty", ""),
|
||||
('CAMERA', "Camera", ""),
|
||||
('LAMP', "Lamp", ""),
|
||||
('ARMATURE', "Armature", "WARNING: not supported in dupli/group instances"),
|
||||
('MESH', "Mesh", ""),
|
||||
('OTHER', "Other", "Other geometry types, like curve, metaball, etc. (converted to meshes)"),
|
||||
),
|
||||
description="Which kind of object to export",
|
||||
default={'ARMATURE', 'EMPTY', 'MESH', 'OTHER'},
|
||||
)
|
||||
Scene.fbx_group_index = IntProperty(default=0)
|
||||
Scene.fbx_force_binary = BoolProperty(
|
||||
name="Binary Format",
|
||||
description="Force export FBX file as binary",
|
||||
default=False
|
||||
)
|
||||
Scene.fbx_use_anim = BoolProperty(
|
||||
name="Include Animation",
|
||||
description="Export baked keyframe animation",
|
||||
default=False
|
||||
)
|
||||
Scene.fbx_use_modifiers = BoolProperty(
|
||||
name="Apply Modifiers",
|
||||
description="Apply modifiers to mesh objects.\n** WARNING: Breaks exporting shape keys",
|
||||
default=False,
|
||||
)
|
||||
Group.fbx_exportable = BoolProperty(
|
||||
name="Export Group",
|
||||
description="Mark group as FBX exportable",
|
||||
default=False
|
||||
)
|
||||
bpy.app.handlers.save_pre.append(on_save)
|
||||
|
||||
|
||||
def unregister() -> None:
|
||||
bpy.app.handlers.save_pre.remove(on_save)
|
||||
del Group.fbx_exportable
|
||||
del Scene.fbx_use_modifiers
|
||||
del Scene.fbx_use_anim
|
||||
del Scene.fbx_force_binary
|
||||
del Scene.fbx_group_index
|
||||
del Scene.fbx_object_types
|
||||
del Scene.fbx_on_save
|
||||
del Scene.fbx_export_dir
|
||||
for cls in reversed(classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
|
||||
|
||||
register()
|
||||
91
Assets/avatar-example/mesh/blend~/ui_bone_size.py
Normal file
91
Assets/avatar-example/mesh/blend~/ui_bone_size.py
Normal file
@@ -0,0 +1,91 @@
|
||||
import bpy
|
||||
from bpy.props import FloatProperty
|
||||
from bpy.types import Context, Operator, Panel
|
||||
|
||||
|
||||
class ArmEditOperator:
|
||||
@classmethod
|
||||
def poll(cls, context: Context):
|
||||
return (
|
||||
context.active_object
|
||||
and context.active_object.type == 'ARMATURE'
|
||||
and context.active_bone
|
||||
and context.mode == 'EDIT_ARMATURE'
|
||||
)
|
||||
|
||||
|
||||
class ARMATURE_OT_ReadBoneLength(ArmEditOperator, Operator):
|
||||
"""Make length property equal to actual bone length"""
|
||||
bl_idname = "armature.read_bone_length"
|
||||
bl_label = "Read Bone Length"
|
||||
bl_options = {'UNDO'}
|
||||
|
||||
def execute(self, context):
|
||||
context.active_bone.bbone_y = context.active_bone.length
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class ARMATURE_OT_MakeBoneSquare(ArmEditOperator, Operator):
|
||||
"""Make bone's width and depth equal to it's length"""
|
||||
bl_idname = "armature.make_bone_square"
|
||||
bl_label = "Make Bone Square"
|
||||
bl_options = {'UNDO'}
|
||||
|
||||
def execute(self, context):
|
||||
context.active_bone.bbone_x = context.active_bone.bbone_z = context.active_bone.length * 0.5
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class VIEW3D_PT_bone_size(Panel):
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'UI'
|
||||
bl_label = "Bone Size"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context: Context):
|
||||
scene = context.space_data
|
||||
ob = context.active_object
|
||||
return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT'
|
||||
|
||||
def draw(self, context: Context):
|
||||
layout = self.layout
|
||||
|
||||
col = layout.column()
|
||||
col.prop(context.active_bone, "bbone_x", text="Bone Width")
|
||||
col.prop(context.active_bone, "bbone_z", text="Bone Depth")
|
||||
sub = col.row(align=True)
|
||||
sub.operator(ARMATURE_OT_ReadBoneLength.bl_idname, icon="COPYDOWN", text="")
|
||||
sub.prop(context.active_bone, "bbone_y", text="Bone Length")
|
||||
col.operator(ARMATURE_OT_MakeBoneSquare.bl_idname, icon="MESH_PLANE")
|
||||
|
||||
|
||||
def update_length(self, context) -> None:
|
||||
context.active_bone.length = self.bbone_y
|
||||
|
||||
|
||||
def register():
|
||||
bpy.types.EditBone.bbone_y = FloatProperty(
|
||||
name="B-Bone Display Y Length",
|
||||
description="B-Bone Y size",
|
||||
default=1.0,
|
||||
min=0.0,
|
||||
soft_min=0.001,
|
||||
step=10,
|
||||
precision=3,
|
||||
options={'HIDDEN'},
|
||||
update=update_length,
|
||||
)
|
||||
bpy.utils.register_class(ARMATURE_OT_ReadBoneLength)
|
||||
bpy.utils.register_class(ARMATURE_OT_MakeBoneSquare)
|
||||
bpy.utils.register_class(VIEW3D_PT_bone_size)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.utils.unregister_class(VIEW3D_PT_bone_size)
|
||||
bpy.utils.unregister_class(ARMATURE_OT_MakeBoneSquare)
|
||||
bpy.utils.unregister_class(ARMATURE_OT_ReadBoneLength)
|
||||
del bpy.types.EditBone.bbone_y
|
||||
|
||||
|
||||
register()
|
||||
113
Assets/avatar-example/mesh/blend~/ui_grid.py
Normal file
113
Assets/avatar-example/mesh/blend~/ui_grid.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import math
|
||||
|
||||
import bpy
|
||||
from bpy.props import EnumProperty, IntProperty
|
||||
|
||||
HU_TO_METERS_RATIO = 0.025 # 1hu = 2.5cm
|
||||
GRID_SUBDIVISIONS = 8
|
||||
|
||||
|
||||
class VIEW3D_OT_ResetGrid(bpy.types.Operator):
|
||||
"""Reset grid settings to defaults"""
|
||||
bl_idname = "screen.reset_grid"
|
||||
bl_label = "Reset Grid"
|
||||
bl_options = {'UNDO'}
|
||||
|
||||
def execute(self, context):
|
||||
context.space_data.grid_lines = 16
|
||||
context.space_data.grid_scale = 1.0
|
||||
context.space_data.grid_subdivisions = 10
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class VIEW3D_PT_grid_level(bpy.types.Panel):
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'UI'
|
||||
bl_label = "Grid Level"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
row = layout.row()
|
||||
row.prop(context.scene, "grid_type", expand=True)
|
||||
|
||||
col = layout.column()
|
||||
if context.scene.grid_type == 'HAMMER':
|
||||
col.prop(context.scene, "grid_hu")
|
||||
|
||||
grid_size = pow(2, context.scene.grid_hu)
|
||||
|
||||
split = col.split(align=True)
|
||||
col_l = split.column()
|
||||
col_l.alignment = 'RIGHT'
|
||||
col_l.label("Hammer Units:")
|
||||
col_l.label("Meters:")
|
||||
col_r = split.column()
|
||||
col_r.label("%i hu" % grid_size)
|
||||
col_r.label("%.3f m" % (grid_size * HU_TO_METERS_RATIO))
|
||||
|
||||
elif context.scene.grid_type == 'POWEROF2':
|
||||
col.prop(context.scene, "grid_po2")
|
||||
|
||||
layout.operator(VIEW3D_OT_ResetGrid.bl_idname)
|
||||
|
||||
|
||||
def update_grid_hu(self, context) -> None:
|
||||
grid_size = pow(2, self.grid_hu)
|
||||
context.space_data.grid_lines = max(3, math.ceil(1024 / grid_size))
|
||||
context.space_data.grid_scale = grid_size * HU_TO_METERS_RATIO
|
||||
context.space_data.grid_subdivisions = GRID_SUBDIVISIONS
|
||||
|
||||
|
||||
def update_grid_po2(self, context) -> None:
|
||||
context.space_data.grid_lines = max(3, pow(2, self.grid_po2 + 5))
|
||||
context.space_data.grid_scale = 1 / pow(2, self.grid_po2)
|
||||
context.space_data.grid_subdivisions = GRID_SUBDIVISIONS
|
||||
|
||||
|
||||
def update_type(self, context) -> None:
|
||||
if self.grid_type == 'HAMMER':
|
||||
update_grid_hu(self, context)
|
||||
elif self.grid_type == 'POWEROF2':
|
||||
update_grid_po2(self, context)
|
||||
|
||||
|
||||
def register():
|
||||
bpy.types.Scene.grid_type = EnumProperty(
|
||||
items=(
|
||||
('HAMMER', "Hammer Units", "Main basic settings"),
|
||||
('POWEROF2', "Power Of 2", "Armature-related settings"),
|
||||
),
|
||||
name="Grid type",
|
||||
description="",
|
||||
update=update_type,
|
||||
)
|
||||
bpy.types.Scene.grid_hu = IntProperty(
|
||||
name="Grid level",
|
||||
description="Hammer Units grid level",
|
||||
min=0,
|
||||
max=9,
|
||||
default=6,
|
||||
update=update_grid_hu,
|
||||
)
|
||||
bpy.types.Scene.grid_po2 = IntProperty(
|
||||
name="Grid divisions",
|
||||
description="Grid divisions in power of 2",
|
||||
min=-4,
|
||||
max=4,
|
||||
default=0,
|
||||
update=update_grid_po2,
|
||||
)
|
||||
bpy.utils.register_class(VIEW3D_OT_ResetGrid)
|
||||
bpy.utils.register_class(VIEW3D_PT_grid_level)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.utils.unregister_class(VIEW3D_PT_grid_level)
|
||||
bpy.utils.register_class(VIEW3D_OT_ResetGrid)
|
||||
del bpy.types.Scene.grid_po2
|
||||
del bpy.types.Scene.grid_hu
|
||||
del bpy.types.Scene.grid_type
|
||||
|
||||
|
||||
register()
|
||||
BIN
Assets/avatar-example/mesh/fbx/avatar-example.fbx
LFS
Normal file
BIN
Assets/avatar-example/mesh/fbx/avatar-example.fbx
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/mesh/fbx/scene/room.fbx
LFS
Normal file
BIN
Assets/avatar-example/mesh/fbx/scene/room.fbx
LFS
Normal file
Binary file not shown.
1
Assets/avatar-example/mesh/unity/avatar-example.unity
Normal file
1
Assets/avatar-example/mesh/unity/avatar-example.unity
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/prefabs/player-follower.prefab
Normal file
1
Assets/avatar-example/prefabs/player-follower.prefab
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/prefabs/player-weapon.prefab
Normal file
1
Assets/avatar-example/prefabs/player-weapon.prefab
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/scripts/avatar-main-menu.asset
Normal file
1
Assets/avatar-example/scripts/avatar-main-menu.asset
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/scripts/avatar-parameters.asset
Normal file
1
Assets/avatar-example/scripts/avatar-parameters.asset
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/scripts/vrc-tracking-control.cs
Normal file
1
Assets/avatar-example/scripts/vrc-tracking-control.cs
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
Assets/avatar-example/shaders/standard-two-sided.shader
Normal file
1
Assets/avatar-example/shaders/standard-two-sided.shader
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
BIN
Assets/avatar-example/sounds/cool-cats.ogg
LFS
Normal file
BIN
Assets/avatar-example/sounds/cool-cats.ogg
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/sounds/high5.ogg
LFS
Normal file
BIN
Assets/avatar-example/sounds/high5.ogg
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/sounds/purr.ogg
LFS
Normal file
BIN
Assets/avatar-example/sounds/purr.ogg
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/sounds/slap.ogg
LFS
Normal file
BIN
Assets/avatar-example/sounds/slap.ogg
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/body/body_albedo.png
LFS
Normal file
BIN
Assets/avatar-example/textures/body/body_albedo.png
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/body/body_metallic.png
LFS
Normal file
BIN
Assets/avatar-example/textures/body/body_metallic.png
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/body/body_normal.png
LFS
Normal file
BIN
Assets/avatar-example/textures/body/body_normal.png
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/outfit/outfit1_albedo.png
LFS
Normal file
BIN
Assets/avatar-example/textures/outfit/outfit1_albedo.png
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/outfit/outfit1_metallic.png
LFS
Normal file
BIN
Assets/avatar-example/textures/outfit/outfit1_metallic.png
LFS
Normal file
Binary file not shown.
BIN
Assets/avatar-example/textures/outfit/outfit1_normal.png
LFS
Normal file
BIN
Assets/avatar-example/textures/outfit/outfit1_normal.png
LFS
Normal file
Binary file not shown.
@@ -1,8 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"com.vrchat.avatars": {
|
||||
"version": "3.x"
|
||||
},
|
||||
"com.vrchat.core.vpm-resolver": {
|
||||
"version": "0.1.x"
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
QualitySettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 5
|
||||
m_CurrentQuality: 3
|
||||
m_CurrentQuality: 2
|
||||
m_QualitySettings:
|
||||
- serializedVersion: 2
|
||||
name: VRC Low
|
||||
pixelLightCount: 4
|
||||
shadows: 2
|
||||
shadowResolution: 2
|
||||
shadowResolution: 1
|
||||
shadowProjection: 1
|
||||
shadowCascades: 2
|
||||
shadowDistance: 75
|
||||
@@ -58,7 +58,7 @@ QualitySettings:
|
||||
skinWeights: 4
|
||||
textureQuality: 0
|
||||
anisotropicTextures: 2
|
||||
antiAliasing: 4
|
||||
antiAliasing: 2
|
||||
softParticles: 1
|
||||
softVegetation: 1
|
||||
realtimeReflectionProbes: 1
|
||||
@@ -86,43 +86,6 @@ QualitySettings:
|
||||
shadows: 2
|
||||
shadowResolution: 3
|
||||
shadowProjection: 1
|
||||
shadowCascades: 2
|
||||
shadowDistance: 75
|
||||
shadowNearPlaneOffset: 2
|
||||
shadowCascade2Split: 0.33333334
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 0
|
||||
skinWeights: 4
|
||||
textureQuality: 0
|
||||
anisotropicTextures: 2
|
||||
antiAliasing: 4
|
||||
softParticles: 1
|
||||
softVegetation: 1
|
||||
realtimeReflectionProbes: 1
|
||||
billboardsFaceCameraPosition: 1
|
||||
vSyncCount: 0
|
||||
lodBias: 2
|
||||
maximumLODLevel: 0
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
streamingMipmapsRenderersPerFrame: 512
|
||||
streamingMipmapsMaxLevelReduction: 2
|
||||
streamingMipmapsMaxFileIORequests: 1024
|
||||
particleRaycastBudget: 4096
|
||||
asyncUploadTimeSlice: 2
|
||||
asyncUploadBufferSize: 128
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
excludedTargetPlatforms:
|
||||
- Android
|
||||
- serializedVersion: 2
|
||||
name: VRC Ultra
|
||||
pixelLightCount: 8
|
||||
shadows: 2
|
||||
shadowResolution: 3
|
||||
shadowProjection: 1
|
||||
shadowCascades: 4
|
||||
shadowDistance: 150
|
||||
shadowNearPlaneOffset: 2
|
||||
|
||||
20
README.md
20
README.md
@@ -1,11 +1,8 @@
|
||||
# VRChat Unity project template
|
||||
|
||||
Omni-template for making VRChat content
|
||||
|
||||
## Synopsis
|
||||
|
||||
The template have:
|
||||
|
||||
- Unity Editor settings for work with Git
|
||||
- Git settings for work with Unity Editor
|
||||
- Git LFS attributes
|
||||
@@ -17,8 +14,7 @@ The template have:
|
||||
|
||||
The repository have separate branches for separate content types, the only difference between them is default packages in `Packages/vpm-manifest.json`
|
||||
> Branches structure
|
||||
>
|
||||
> ```text
|
||||
> ```
|
||||
> -master-+---------------------->
|
||||
> |\
|
||||
> | \-world-------------->
|
||||
@@ -26,8 +22,7 @@ The repository have separate branches for separate content types, the only diffe
|
||||
> \-avatar------------->
|
||||
> ```
|
||||
|
||||
## How to use for a new project
|
||||
|
||||
## How to use
|
||||
1. `git init` a new repo from the branch you want
|
||||
2. Init Git LFS with `git lfs install`
|
||||
3. Open the project in Unity
|
||||
@@ -36,21 +31,10 @@ The repository have separate branches for separate content types, the only diffe
|
||||
|
||||
> After opening the project in Unity Editor you might want to add **all** new files to Git.
|
||||
|
||||
## How to work with existing project
|
||||
|
||||
1. Check that you have git-lfs installed `git lfs status`
|
||||
2. Pull existing repo `git pull https://gitlab.com/ProcyonLotor/vrchat-template.git` and optionally pull all LFS objects `git lfs fetch --all`
|
||||
(repo will take much more disk space, but will have complete project history)
|
||||
3. (Optional) Some VPM packages might come from Community Repositories,
|
||||
add them from project's [vpm-repositories.txt](./vpm-repositories.txt) file to CreatorCompanion,
|
||||
or run this command in project's folder `FOR /F %L IN (.\vpm-repositories.txt) DO vpm add repo %L`
|
||||
(command requires `vpm` tool installed, see [vpm cli](https://vcc.docs.vrchat.com/vpm/cli/))
|
||||
|
||||
> **IMPORTANT**: When opening a previously worked on project on a new machine, Unity may warn you about script errors and suggest you enter Safe Mode,
|
||||
> this is because VPM has not loaded yet and didn't resolved the required packages, ignore the errors and continue loading.
|
||||
> Sometimes you may need to reopen the project couple times for all packages to resolve and scripts to recompile.
|
||||
|
||||
## License
|
||||
|
||||
For project's license see [LICENSE](./LICENSE) file.
|
||||
Project contains `com.vrchat.core.bootstrap` package, for license see [Packages/com.vrchat.core.bootstrap/License.md](./Packages/com.vrchat.core.bootstrap/License.md) file.
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
https://adjerry91.github.io/VRCFaceTracking-Templates/index.json
|
||||
https://poiyomi.github.io/vpm/index.json
|
||||
https://redsim.github.io/vpmlisting/index.json
|
||||
https://spokeek.github.io/goloco/index.json
|
||||
https://vcc.vrcfury.com/
|
||||
https://wholesomevr.github.io/SPS-Configurator/index.json
|
||||
Reference in New Issue
Block a user