- unity ã§ .vmd ãåçããã©ã€ãã©ãª
- çŸç¶ã¯ humanoid åã
- 衚æ ã¯ãšãããã VRM 1.0 ã® expression ã«äŸå
- burst, playable ã«ã察å¿ãã
- åå空é AnimLite.Vrm é¢ä¿ã¯ãUniVRM 1.x ãå¿ èŠã§ã
- éåæã§ã® .vmd èªã¿èŸŒã¿
- .vmd, model, web loading ã®ãã£ãã·ã¥æ©èœ
- è£å©æ©èœãšããŠã.json ã§é³æ¥œãã¢ãã«ãã¢ãã¡ãŒã·ã§ã³ãé 眮ããèšå® ïŒ file/web ããããŒãããæ©èœ
- clone ããããAssets/AnimLite/Resources_moved ã«ããäžèš .txt ãã¡ã€ã«ããAddressable ã«ç»é²ã㊠simply addressable names ã«ããŠãã ãã
- default_body_adjust.txt
- default_facemap.txt
- facemap ãš body adjust ã«äœãæå®ããªããšãã«ããã©ã«ãã§åç §ããããã«å¿ èŠã§ã
- Asset/Resources_moved ãã©ã«ãã reimport ããªããšãäžã® vrm ãããŒãã§ããªãããã§ãïŒ univrm ã®èªå倿ããªãã«ããŠããããïŒ
- ããšè¶³æ¥å°ã¯ foot IK target ãšããã¬ã€ã€ãŒåã«å±ãããã®ãšå€å®ããããã«ãªã£ãŠãŸã
- äœ¿ãæ¹ã®ããã¥ã¡ã³ãçãªãã®ãæªæŽåãªã®ã§ãclone ããŠãæå³äžæãšã¯æãâŠ
2025.7.17
- .json èªèŸŒïŒã¡ãã·ã¥çµåã®éãçµå察象ããªã¹ãã§æå®ã§ããããã«ãã
- æãã¢ã¯ã»ãµãªãŒãçè±ãããçã®çšéã«äœ¿çšã§ãããšæã
- .json ã® Model.Options ã§èšå®ãã
- 察象ãšãããã¡ãã·ã¥ãå«ãã²ãŒã ãªããžã§ã¯ãåãé å圢åŒã§æå®ã§ãã
- ããã§äœ¿çšãããŠãããããªã¢ã«åããåäžã®ããã«ããŠå¯Ÿè±¡ãšããããã®ãæå®ã§ãã
- äœãæå®ããªããã°ãã¹ãŠå¯Ÿè±¡ãšãªã
- ã¯ã€ã«ãã«ãŒãã䜿çšå¯èœ
- ! ã§å§ãŸãå Žåã¯ãéã«å¯Ÿè±¡ãšããªãããã«ãªã
- \ ã§ãšã¹ã±ãŒãã§ãã
- 倿Ž
- ã¡ãã·ã¥åäžåæã®ãããªã¢ã«åæå®ã§ã.json ãªãã·ã§ã³åã倿Ž
- MeshMaterialName -> MeshMaterialOnSingleMesh ãªã©
- ã¡ãã·ã¥åäžåæã®ãããªã¢ã«åæå®ã§ã.json ãªãã·ã§ã³åã倿Ž
- ä¿®æ£
- ã¢ãã«ãã£ãã·ã¥ããªãã«ããŠããšã©ãŒãåºãªãããã«ãã
2025.7.2
- .json èªèŸŒïŒã¡ãã·ã¥çµåã«å¯Ÿå¿
- 詳ãã㯠issue ã«æžãã
- äžèšïŒã¢ãŒã
- åäžã¡ãã·ã¥åäžãã¯ã¹ãã£å
- ãããªã¢ã«ããšã«ãµãã¡ãã·ã¥å
- ãµãã¡ãã·ã¥åãã€ã€åäžã¢ãã©ã¹å
- .json ã® Model.Options ã§èšå®ãã
- ã.json ã«ã€ããŠããåç §ã®ããš
- ãµã³ãã«ã¯ Sample6 overrid json ã®ã¶ããã£ãšã«ããïŒäœïŒAsset/ds/dance_scene.jsonïŒ
- ä¿®æ£
- job ã¢ãŒãïŒUseStreamHandleAnimationJob : falseïŒã®æãplayable ã®åæäœçœ®ãæå®ããŠãªãã£ãã®ã§ãæã ããããããŠã orz â .SetTime(0) çãªããšããã£ãŠæé 0 ããå§ãŸãããã«ãã
2025.6.2
- .json èªèŸŒïŒMotions ã®ããŒåã _ ããå§ãŸãããŒã¹ããŒãããã€ã®ãŸã«ãèªã¿èŸŒãŸããªããªã£ãŠãã®ã§ä¿®æ£
- .json èªèŸŒïŒMotions ã®ããŒåã§ã®ã¯ã€ã«ãã«ãŒãã§ãå é ãšçµç«¯ã«æŠå¿µã«å¯Ÿå¿ããŠããªãã£ãã®ã§ä¿®æ£
- .json èªèŸŒïŒx, y, z å€ã®ããå€ã§ãpopulate ãå©ããªãã£ãã®ãä¿®æ£
[ x, y, z ] 㯠[ null, 0 ] ãªã©ãnull ãçç¥ãå¯èœïŒ null ã¯ããŒã¹ã®äŸ¡ãæ®ãïŒ - .json èªèŸŒïŒOptions ã§ populate ãå©ããªãã£ãã®ãä¿®æ£
- .Json èªèŸŒïŒMotions.Model ã® Scale ããã³ããŒããããã¢ãã«ã® Transform.LocalScale ãç§»åãªã©ã«æ£ããåæ ãããªãã®ãä¿®æ£
ãã¬ããããªãœãŒã¹ãšããŠããŒãããã¢ãã«ã®å Žåã¯ããã®ã¢ãã«ã®åæå€ã«ä¹ç®ãããïŒ position ã¯å ç®ïŒ - ä»åããä¿®æ£äºé 㯠Issues ã«æžãããã«ãã
2025.5.13
- è¶³æ¥å°ã®è£éã調æŽïŒãã¯ãã¯æã匷ããªã£ãŠããŸã£ãããâŠïŒ
- è¶³éŠæ¥å°ã®è§åºŠãè£éããããã«ãã
- .json ã§ vector3 ã®ãšãããã¹ã«ã©ãŒã [0.0, 0.0, 0.0] 圢åŒã§ãæžããããã«ããïŒã¹ã«ã©ãŒã¯ x, y, z ãã¹ãŠã«é©çšïŒ
- è¶³æ¥å°ã®å€å®ãã¬ã€ãã£ã¹ãããã¹ãã£ã¢ãã£ã¹ãã«ãã
- ä¿®æ£
- 䞊åããŒãæã« BackGround ãïŒã€ããªãæãæåã® Motion ã BackGround æ±ãã«ãªã£ãŠãã®ãä¿®æ£
- Motions.{keyname}.Model ã ãã® .json ããšã©ãŒã§èªã¿èŸŒããªãã£ãã®ãä¿®æ£
- è¶³éŠïŒ©ïŒ«ã®å€ããåæ¹ã·ãŒã¯ã®æã«ããæ£ããååŸã§ããªãã£ãã®ãä¿®æ£ãã©ã³ãã ã·ãŒã¯ã§ãèªããããã«ãªã£ã
2025.4.24
- .json ã® Animation.Options 以äžã«ãã BodyScaleFromHuman/MoveScaleFromHuman/FootScaleFromHuman ãããã¯ãã«å€ã§æå®ã§ããããã«ããã
- ãã¯ãã«ã¯ { "x":0.0, "y":0.0, "z":0.0 } ãŸã㯠[0.0, 0.0, 0.0] ãšãã圢åŒã§æå®ã§ãã
- ä»ãŸã§éããã¹ã«ã©ãŒå€ã§æå®ãå¯èœ
- foot ik ã®æ¥å°ã§ã段差ã§ã«ã¯ã«ã¯ããã®ãè£éã§ç·©åãã
- ãã®ãããã§è¶³ã®é«ãç§»åã 0.1 ç§ãããé ããã®ã§è¥å¹²ãã¯ãã¯ããå ŽåãããããïŒãã£ã©ã¯ã¿ã®äžã«å°é¢ããããšãã®ã¿ïŒ
- è¶³éŠã®è§åºŠè£é㯠leg only with ground ã®æå¯Ÿå¿ãé£ããããšãåãã£ãã®ã§ãæ ¹æ¬çã« job æ§æãå€ããå¿ èŠããã£ãŠæªå®è£
2025.4.17
- foot ik ã®ä¿®æ£ãããã
- 段差ãšãã§ããããããã®ä»¥å€ã¯ã ãããè§£æ¶ã§ããæ°ããããã©ãŸã ãããã¬
- ãªããå€ãªäžæžããã¡ãã£ããã git ãããããã
2025.4.15
- foot ik mode ãæ··åšããããšããjob ã®äŸåé¢ä¿ãšã©ãŒãåºãŠããã®ã§è§£æ¶ããïŒãšæãïŒ
- ik anchor ãžã®æžã蟌ã¿ã§ãik ãš fk+ground ã¯äŸåé¢ä¿ãªãã§è¡ãããšæããã ãã©ã屿§äœ¿ã£ãŠãåé¿ã§ããªã
- ãŸã å€ãªæåããã®ã§çŽãããïŒ foot only ã®æãšãïŒ
2025.4.10
- è¶³ïŒ©ïŒ«ãæ¥å°ã«å¯Ÿå¿ããã
- animation job ã ãš job äžã§ raycast ã䜿ããªãã®ã§ãjob system ã§ raycast command ã䜿ãã¢ãŒãã experimental ãšããŠå®è£ ãã
- sample7 ã§ animation job ãš job system ã§ã®å®è¡æ¯èŒãsample8 ã§æ¥å°ãå®è¡
- sample8 ã§ã¯ .json ã« Mosions.Animation.Options.UseStreamHandleAnimationJob : false ãèšè¿°ãããšäœ¿ããããšã瀺ããïŒããã©ã«ãã§ã¯ true ïŒ
- çŸç¶ãåŸæ¥ã®ã¢ãã¡ãŒã·ã§ã³ã¢ãŒãïŒ transform, animation job playable ïŒã§ã¯ãæ¥å°ã¯äœ¿ããªã
- job system 㯠ecs ã¿ããã« job ãå°ããåäœã§çµãã ãã ãã©ãè€éã«ãªã£ãŠããŸã£ã
- animation job ã®ããã«ã¢ãã«ïŒäœããšã«åäžã® job ã®ã»ããããã©ãŒãã³ã¹ã§ãŠããïŒ
- ã¢ãã«ïŒäœã®æã§ã䞊å床ã¯é«ããªã£ãŠãããããŒã¿ã«è² è·ã¯å¢ããŠãæ°ãããïŒã¢ãã«å¢ãããé転ãããïŒïŒ
- äžé£ã® job ã¯ã.json åäœã§äœã£ãŠã
- animation job ã®ããã«ã¢ãã«ïŒäœããšã«åäžã® job ã®ã»ããããã©ãŒãã³ã¹ã§ãŠããïŒ
- æ¥å°ãšã¿ãªãããæãšããã§ãªãæã§ãã£ãããããããŠãè¶³ïŒfootïŒã®è§åºŠããã©ãã©ããã®ã§èª¿æŽå¿ èŠãâŠ
- DanceSetPlayerFromJson ã§ã¢ãã¡ãŒã·ã§ã³çµäºãéç¥ããããã«ãã
- OnPlayEnd ã await ããã°åŸ æ©ã§ããïŒ DanceSetSimpleCaption ã§äœ¿ã£ãŠãïŒ
2025.1.26
- Motions.Animation.Options ã® BodyScaleFromHuman ããBody/Foot/Move ã«åãã
- ããã«ãããè °ã®äœçœ®ãã¢ãã«ã®å€§ããã«åããããŸãŸãç§»åéãæ©å¹ ã ã調ç¯ãããã§ããããã«ãªã£ã
2025.1.17
- DanceSetPlayerFromJson ã®ããŒãéå§/å®äºããåŸ
æ©å¯èœãªç°¡æå
Œ
±ã€ãã³ãã§æµãããã«ããïŒAsyncMessaging<T>.Post()ïŒ
- caption ãªã©ã¯ããã await ã§åŸ ãŠãïŒawait AsyncMessaging<T>.ReciveAsync()ïŒ
- static 颿°ãªã®ã§ãåç §ãã»ããããããªã©ã¯ããªãã§ãççµåçã«ããåãã§ããããã¿ãT ã®åãåãçžæå士ã§ããåãããã
2025.1.14
- ä»ãŸã§TâAããŒãºåºå®ã ã£ããããŒãºè£æ£ãäžè¬åãã
- .txt ãã¡ã€ã«ã« humanoid éšäœãšããŒã«ã«åè»¢è£æ£å€ãèšè¿°ã§ãã
- .json ã« BodyAdjustFilePath ãšã㊠.txt ãã¡ã€ã«ã®ãã¹ãæå®ãã
- .json ã® Options ã il2cpp, android, ios åãã®æã ã dynamic åã§ã¯ãªã object åã«ãªãããã«ãã©ã°ããå
¥ãã
- ãŠããããããã .net standard 2.1 åãã ãš dynamic 䜿ããªãã£ãœãã®ã§ãUSE_DYNAMIC ã true ãããªããš object ã«ãªãããã«ãããã©æ©ã¿äž
- ExpandoObject ã ãš quest3 ã§ãšã©ãŒã§ãã®ã§ãJson.Net ã® JObject ã«å€æŽãããåãã
2024.12.31
- .json ã® åããŒãã« Options ãšããŠä»»æã®èšå®ããããããã«ãã
- ããã«äŒŽããMotions ã«ãã Options ã廿¢
2024.12.19
- ãã¡ã€ã«ããªãœãŒã¹ããããŒããããã®ã IPrototype ãšãããã®ã§çµ±äžãããInstance ãšããã®ã§ã€ã³ã¹ã¿ã³ã¹ãšããŠäœ¿çšãããåç §ã«ãŠã³ãã§ç®¡çã
- ãã£ãã·ã¥æ©æ§ãçµ±äžãããã¢ãŒã·ã§ã³ãšã¢ãã«ã§å¥ã ã®ä»çµã¿ã ã£ãã®ããIPrototype ã䜿ã£ãŠåç §ã«ãŠã³ããåãããã«ããã
- ããããæŽçãããå€ããã®ãæ¶ããããããŠã³ããããšããã·ã¥ãæŽçºããŠããŸã£ããçµæããµã³ãã«ã® 2, 4, ã¯åããªããšæãïŒDanceSet ã䜿ã£ãŠãããµã³ãã«ïŒ
- ããš sample 5 ã®ãã¹ã§ .. ã䜿ã£ãŠãããã®ãããŸãåããŠãªããããªæ°ãããã確èªããåã«ããã·ã¥ããŠããŸã£ã⊠orz
2024.12.6
- zip sequential mode ãš IArchive ã®ãã©ãŒã«ããã¯ã®æŽåæ§ããšããŠãªãã£ãã®ã§ä¿®æ£
- ããã«ãšããªããå šäœã®äžŠå/鿬¡ãã©ã°ãšã㊠DanceSceneLoader.UseSeaquentialLoading ã远å ããzip ã®äžŠåãšã¯åãã
- zip 鿬¡ããŒãã§ã¯ãå šäœã䞊åããŒãããæã¯ã»ããã©ã§å¶åŸ¡ããããã§ãªããªãæ®éã«é次ããŒãããã
- ãœãŒã¹ã® s-jis ã utf-8 bom ã«ããã仿ŽéããâŠ
- GameObject.InstantiateAsync ã䜿ããš vrm ã® spring bone ã§åé¡ãã§ããããªã®ã§ããã
2024.12.1
- .json ã«èšèŒããçžå¯Ÿãã¹ã§ã¯ã.json ã®ãããã©ã«ããèµ·ç¹ã«ããããã«ããããã®ã»ããèªç¶ããªãšâŠ
- ä»ãŸã§ã¯äžåŸã§ PathUnit.ParentPath ãèµ·ç¹ã ã£ã
- ããã«åãããŠãzip 管ççšã® IArchive ãæ¡åŒµããŠãã©ã«ãé¢é£ã管çããã¯ã©ã¹ã«ãã
- zip ã®äžŠåããŒãæãïŒã€ã ããªãŒãã³ããã¢ãŒãã远å
- ä»ãŸã§ã¯äžŠååäœã§ zip ãã¡ã€ã«ããªãŒãã³ããŠããïŒ ZipArchive ãš Stream ã¯ã©ã¹ã®éœåäžïŒ
- ãã¡ã€ã«ãããã³ã°ã䜿çšããããšã§ãªããšããªãããã ã£ãã®ã§çµã¿èŸŒãã§ã¿ããâŠããquest3 ã§èœã¡ãã®ã§èª¿æ»äžâŠ
- äžéšéšäœã§ quaternion ã®å転é åºéã«ãªã£ãŠãããããã ããããã orzãè©ãšã
2024.11.3
- .json ã® BackGrounds ãš Motions ã®ããŒåã§ã¯ã€ã«ãã«ãŒãã䜿ããããã«ãã
2024.10.20
- vrm 0.127.0 ã«ãã
- graph.Evalute() ã§ã·ãŒã¯ãããšé³ãºã¬ããŠããããã¹ããªãŒãã³ã°èªèŸŒã®ããã ãšããã£ãã®ã§ãªãã«ãã
- vrm ã humanoid ã as resource ã§ããŒããããšããïŒã€ã³ã¹ã¿ã³ã¹ãååšããŠããŠãïŒãã¬ãããæ¶ããšã¡ãã·ã¥çãæ¶ããŠããŸãã®ãåãã£ãã®ã§ããªãœãŒã¹ç®¡çã®ä»çµã¿ãæ°ãããã
- ããã«ãšããªã humanoid ãã£ãã·ã¥ã®ä»çµã¿ã倿Žãã
- ã²ãŒã ãªããžã§ã¯ããããŒã«ããŠããã®ããããŠãã²ãªåãïŒã€ã ãä¿åããããã«ãã
- ãªãŒãã£ãªãã¢ãã¡ãŒã·ã§ã³ãçµ±äžããã
- animation clip ã as resource ãšããŠããŒãã§ããããã«ãã
- sample6 ã® json ãªãŒããŒã©ã€ãããïŒã€éå®ããé
åæå®ã§ããããã«ãã
- ããã§ãã£ã©ã¯ã¿ãšèæ¯ãå¥ã ã«å·®ãæ¿ãããã§ããããã«ãªã£ã
2024.9.28
- AudioPlayable ã§ Graph.Evalute() ãå¹ããªãã£ãã®ãä¿®æ£
- Sample6 ã§ , . ããŒãæŒããŠåçäœçœ®ãååŸç§»åããããã«ãã
2024.9.27
- è€æ°ã® .vmd ãèªããããã«ãã
- .json ã§ "AnimationFilePath" ã« é
åãæžãã
"AnimationFilePath": ["body.vmd", "face.vmd"] - åäœãšããŠã¯ãè€æ°ã® .vmd èŸæžãïŒã€ã®èŸæžã«ããŒãžããããããåãããŒã¯åŸèªã¿ã§äžæžã
- .json ã§ "AnimationFilePath" ã« é
åãæžãã
2024.9.19
- .json èªèŸŒããªãŒããŒã©ã€ãã§ããããã«ããïŒSample6ïŒ
- ãªãŒããŒã©ã€ãåã® .json ã«èšè¿°ã®ããé ç®ã ãäžæžããããããšã¯ããŒã¹ã®å€ãæ®ã
- ãã£ã©ã ãå€ããããã¢ãŒã·ã§ã³ã ãå€ãããã§ãã
- ãã£ã©ãèæ¯ã®å®çŸ©ããé åããããŒããªã¥ãŒãã¢ã«ãããåãååãä»ããå 容ã«ã€ããŠãªãŒããŒã©ã€ãããã
- 衚æ
ã catmul è£éã«ãã©ããŠã¿ã
- ç®ãã¡ãããšéããªããšãããããªã
ãã以åã®ä¿®æ£
- local/web ãã file, zip ãããŒãããŸã addressable resource ãããŒãã§ããããã«ãã
- .glb ãèªããããã«ãã(BackGrounds ãšããŠ)
- ã·ãŒã³äžã® game object ã€ã³ã¹ã¿ã³ã¹ã®ãã£ãã·ã¥ïŒåããã¹ã®ã¢ãã«ãåããŒãããªããŠãããããã«ïŒ
- ããŒãã®äžŠå床ãé«ããïŒåã .json ã«åºãŠãã鳿¥œãã¢ãã«ãã¢ãã¡ãŒã·ã§ã³ã衚æ å®çŸ©ãã®ã©ããã䞊åã«ãªãããã«ããïŒ
- ZipArchive ã®ããŒãæããã¡ã€ã«ã¹ããªãŒã ã䜿ããŸãããã«å¥åã«ãã¡ã€ã«ããªãŒãã³ãã䞊åããŒãã§ããã¹ã€ããã远å ãã
- ZipArchive ã®æã« .glb ãèªããŠããªãã£ãã®ãä¿®æ£
- ZipArchive ã® vmd ããŒãã§ MemorryStream ã«ã³ããŒããŠããã®ãè§£æ¶
- .vmd ãã£ãã·ã¥ã®åç §ã«ãŠã³ããããã¯å¯Ÿå¿ãããŠãªãã£ãã®ã§ãinterlocked ã䜿ãããã«ãã
.vrm ããäœæããã¢ãã«ã²ãŒã ãªããžã§ã¯ãããã·ãŒã³äžã§ãã£ãã·ã¥ããŠããæ©èœã远å ïŒãã£ãã·ã¥æå€§æ°ã®ç®å®ãæå®ã§ããïŒã¢ãã«ããŒãã¯ãµã€ãã«éããããããŸãæå³ãªãæ°ããããã¡ã¢ãªç¡é§ã«ãªãã ãã§äœèšãªæ©èœããªã
- ããŒã¿ããŒãã«ïŒã€ã§ã倱æãããšãšã©ãŒã§äžæããŠããããç¶è¡ããããã«ãã
- 倱æããããŒã¿ã«ã¯ default ãå ¥ã
- http ã§ã® .zip ããŒãã§ãã¯ãšãªã¹ããªã³ã°ã® ? 以éãããå Žåãæ©èœããŠããªãã£ãã®ã§ä¿®æ£
- ãã ããhttps://.../ds.zip?dl=1/dance_scene.json ã®ãããªèšè¿°ã¯ãŸã ç¡çïŒãšãããæžãæ¹ã©ãããããæ©ã¿äžïŒ - http ã®ã¯ãšãªã¹ããªã³ã° + .zip entry ã®èšè¿°ãå¯èœã«ãã
- xxx/xxx.zip?xxx=xxx&xxx=xxx/xxx/xxx.xxx 圢åŒ
- http ããŒããããã¡ã€ã«ããã£ãã·ã¥ããããã«ããã
- ãã£ãã·ã¥ãã¡ã€ã«ã¯ Application.CashDataPath/loadcach ãã©ã«ã
- ä»»æã®ã¿ã€ãã³ã°ã§ã¯ãªã¢ã§ããããå¿ ãããã°ã©ã éå§æã«ã¯ãªã¢ããã
.json ã§ãã¯ãã«å€ã [0.0, 0.0, 0.0] ã§ãèšè¿°ã§ããããã«ããããšæãïŒçŸç¶ã¯ Animation.Options ã® scale ã®ã¿å¯Ÿå¿ããŠãïŒ- çŸç¶ã.vmd ã®ãã£ãã·ã¥ã¯ãªã³ã¡ã¢ãªã ãã©ãäžæãã¡ã€ã«ã«ããæ¹ããããªãïŒã¡ã¢ãªå æãç¶ããã®ã£ãŠã©ããªã®
move/body/ik ã®è£æ£ã¹ã±ãŒã«ã¯æ°Žå¹³ãšåçŽã§å¥ã«ããã»ããããããïŒïŒãã¯ãã«ã§æå®ãããªã©ïŒ- åçš®åäœãã©ã°ãšãã¯ãçŸç¶ã® static 倿°ãããªããŠã颿°ã«åŒæ°ã§æž¡ãæ¹åŒã«ããã»ããããããªâŠ
- IStreamProcedure ã Absolute ã®ãšãã«ã¯ã€ãæ°ãããã®ã§èª¿æ»ãã
- ããããã°ã«ã¡ã©ããªããšãµã€ãã®ãã¥ãŒã¯ãŒã ãšãã¡ããããèããŠãªãã£ããâŠ
ãã£ã©ããšã«ããŒã³ã®ãªãã»ããå€ãèšå®ã§ããããã«ãããããïŒïŒŽããŒãºâããŒãºãããã§ãã£ãŠãããïŒ- å転å¶éãæ¯çãã€ããã®ãããããªããç¹ã«è©ãã¢ãã«ã«ãã£ãŠéããããªâŠ
足ãšã€ãŸå ïŒåãïŒã®ãªã³ãªããåã㊠.json ã«èšèŒã§ãããšãããã<- 察å¿ããhttp æã® .zip ã§ ã¯ãšãªã¹ããªã³ã°ã® ? 以éãš ZipArchive ãšã³ããªã®æå®ã«å¯Ÿå¿ããããïŒããhttp ã§ã® .zip ã¯ããŸãå®çšæ§ãªãæ°ãããâŠïŒâ xxx/xxx.zip?xxx=xxx&xxx=xxx/xxx/xxx.xxx ã®åœ¢åŒã§èšèŒã§ããããã«ãã.zip ã®äžŠåã¹ã€ããã¯ãZipArchive ã®ãšã³ããªã®æã«æ©èœããªãããšã«æ°ã¥ããã®ã§ã察å¿ãããâ 察å¿ãããå¥ã®ãã¡ã€ã«ãšããŠæ±ã£ãŠäžŠåããŒãå¯èœãšããåããã¹ã®ã¢ãã«ããã£ãã·ã¥ããéãåãã¢ãã«ãè€æ°äœåæã«è¡šç€ºãããšæåŸã®ã¢ãã«ãã衚瀺ãããªã- DanceSetSimpleCaption ã«ãããŠããã£ã©ãå€ããšãããããæå³äžæã«ãªãã®ã§ãè€æ°åã«åãããšãã¹ã¯ããŒã«ãããšã察åŠããã
WebGL ã§ãµã³ãã«äœã£ãŠã©ã£ãã«çœ®ãããã<- webgl ã ãšã¹ã¬ãã䜿ããªããããã®ã§ãã¡ãã- DanceSet ã DanceScene ã«ãªããŒã ããããã
çŸç¶ DanceSet ã®æ©æ§ãæ°æ§ïŒéã«ãªã£ãŠããã®ã§çµ±åãããïŒãšãã£ã¿äžã§ãªãŒãµãªã³ã°ããã¿ã€ããš .json ããèæ ®ããŠãªãã¿ã€ãïŒ- .vmd ã®è©ãè ããããæéŠãããããåèããã
ã¢ãã¡ãŒã·ã§ã³ãšã¢ãã«ããã£ãã·ã¥ãããã®ã§ã鳿¥œããã£ãã·ã¥ãããã¹ããããèªããããããã- é¡ãšäœã® bounding box ãå€ãªã®ã§ä¿®æ£ããã
- zip çžå¯Ÿãã¹æå®æã® archive fallback ãè¥å¹²éãªãšãããã®ã§ã¡ãããšãã
- 衚é¢çãªæé©åããããã°
- burst 颿°ã®åŒæ°ã« ref/in ãšã [NoArias] ãšã
- aggressive inlining ã€ããã
- æ±çšã®ã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªã«ããã
- è€æ°ã¢ãã¡ãŒã·ã§ã³ã®ææãåãæ¿ãã«å¯Ÿå¿ããã
- ecs ã§ã䜿ããããã«ããã
- body motion ã burst job ãªã®ã«ãface ã® playable script ãã¡ã€ã³ã¹ã¬ãããªããã«é
ãããªããšããªããªããâŠ
- 衚æ 㯠univrm ã§ã¯ãªãåçæ¹æ³ããããšãããã
- .vmd 倿ãé«éåããã
- ãããã䜿ããããã«ãªã£ãŠããæ°ãããã®ã§ãããããå€é¢çãªé¢æ°ã ãã§ãæŽçããããâŠ
- zip paralell open single file èªã¿èŸŒã¿ã®æ android(quest3) ã§èœã¡ãããã«ãªã£ããfile mapping ã®ãšãã§èœã¡ãŠãæ§å
- éåæãšäžŠåããŸãæ±ããŠãªãæãç¹ã« unity ã® Awaitable
- éåæãšããã¯ã°ã©ãŠã³ãã¹ã¬ãããåãã颿°ã«ãããããª
- xxxAsync() ãš xxxBg() ãšãïŒ
-> åºæ¬çã« async ã¯éåæã§ãã£ãŠäžŠååã§ã¯ãªãããã«ãã
ïŒäžŠåå㯠Task.Run() ã Awaitable.MainThreadAsync() ãªã©ã§ããïŒ
- unity 6 ~~~6 prevew~~~ +
VRM1.20VRM0.127.0 - ãã¹ãã³ãŒãã¯æžããŠãªãïŒããããããªãïŒããµã³ãã«ã·ãŒã³ãåãã°ãšãããããããã¿ãã㪠-> ãŒã¡ãŒã¡æžããŠããããã«ããŸãããããªãããã®ãããžã§ã¯ãã ãšãã«ãéããªããªãã®ã§å€ãã
- ãšãããã
quest2quest3ïŒè²·ã£ãïŒïŒïŒã§éã³ãªããä¿®æ£ããŠãããã â ã»ããæ©èœãããã£ãŠããã®ã§ quest3 ã©ã€ããåäž. deep link ã§ãã©ãŠã¶ããèµ·åã§ããããã«ãããããããã¬...
- Sample5 load from json ãš Sample6 override json ã·ãŒã³ã«ãµã³ãã«ããã
- ïŒã¢ãã«ãèžãã®ããã£ãšæ°è»œã«èŠããã®ã§ããªãããããããã©ãŒããããäžéã«ïŒã€ãããšãããªãšæã
- ããèããã vrm live viewer ã®ãã©ãŒããããšããããã«åœããããããªãã®ãïŒ mmd çéã«ã¯è©³ãããªãã®ã§...ïŒ
- zip ãèªããããã«ããããåºããŠã¢ããããŒãããã®ã§å¥œããªãã¥ãŒã¯ã§èŠãŠãã¿ãããªäžçããããšãããªãŒãšãæãã -> ããŸãããšæå·åã§ããã°ãããã ãã©ããªããã¢ã€ãã¢ãªããã
- 楜æ²ãã¢ãã«ãã¢ãã¡ãŒã·ã§ã³ãã®äœè æ å ±ããã¥ãŒã¯ãŒãç©æ¥µçã«è¡šç€ºããããã«ããã°ãäœè ãããã·ãŒã³ãšããŠé²èЧå¯èœãªåœ¢æ ã§é åžãããçãªæ°æã¡ã«ãªãããããªãããªãšïŒã¢ãŒã·ã§ã³åäœãšããããªãïŒ
- DanceSetSimpleCaption ã¯ãšããããã·ã³ãã«ãªäœè æ å ±ã衚瀺ãããããã
{
"Audio": {
"AudioFilePath": "",
"Volume": 0.0,
"DelayTime": 0.0,
"Options": { ... } // ä»»æã®ããŒã¿
},
"BackGrounds": { // èæ¯çšã¢ãã«ãããŒããªã¥ãŒãã¢ã§å®çŸ©ïŒ .glb ãæ³å®ïŒ
"key-name": {
"ModelFilePath": "",
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"EulerAngles": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"Scale": 0.0,
"Options": {
"MeshCombineMode": "None", // éžæè¢ã¯ "IntoSingleMesh" | "ByMaterial" | "ByMaterialAndAtlasTextures"
"MeshMaterialOnSingleMesh": "", // IntoSingleMesh ã®æã«ããããªã¢ã«åãæå®ãã¯ã€ã«ãã«ãŒãã«å¯Ÿå¿ãã·ã§ãŒããŒåã§ããã
"SkinMaterialOnSingleMesh": "", // åäžã§ãã¹ãã³ã¡ãã·ã¥ã®ãããªã¢ã«ãæå®ãããçç¥æã¯ MeshMaterialOnSingleMesh ãšåããããªã¢ã«ãé©çšããã
"BlendShapeMaterialOnSingleMesh": "", // åäžã§ããã¬ã³ãã·ã§ã€ãä»ã¹ãã³ã¡ãã·ã¥ã®ãããªã¢ã«ãæå®ãããçç¥æã¯åäž
"TargetMeshList": [], // çµå察象ãšããã¡ãã·ã¥ãå«ãã²ãŒã ãªããžã§ã¯ãåãé
åã§æå®ãã¯ã€ã«ãã«ãŒãã«å¯Ÿå¿ãå
é ã« ! ãã€ãããšéã«å¯Ÿè±¡ãšããªãæå®ããšã¹ã±ãŒã㯠\ ã§ãçç¥ãããšãã¹ãŠã®ã¡ãã·ã¥ãçµå察象ãšãªã
"TargetMaterialList": [] // çµå察象ãšãããããªã¢ã«åãé
åã§æå®ãã¯ã€ã«ãã«ãŒããçç¥æãç㯠TargetMeshList ãšåãã
}
},
"Options": { ... } // ä»»æã®ããŒã¿
},
"Motions": { // ãã£ã©ã¯ã¿ãŒã®ã¢ãã«ãã¢ãã¡ãŒã·ã§ã³ããããŒããªã¥ãŒãã¢ã§å®çŸ©
"key-name": {
"Model": {
"ModelFilePath": "",
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"EulerAngles": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"Scale": 0.0,
"Options": {
"MeshCombineMode": "None", // éžæè¢ã¯ "IntoSingleMesh" | "ByMaterial" | "ByMaterialAndAtlasTextures"
"MeshMaterialOnSingleMesh": "", // IntoSingleMesh ã®æã«ããããªã¢ã«åãæå®ãã¯ã€ã«ãã«ãŒãã«å¯Ÿå¿ãã·ã§ãŒããŒåã§ããã
"SkinMaterialOnSingleMesh": "", // åäžã§ãã¹ãã³ã¡ãã·ã¥ã®ãããªã¢ã«ãæå®ãããçç¥æã¯ MeshMaterialOnSingleMesh ãšåããããªã¢ã«ãé©çšããã
"BlendShapeMaterialOnSingleMesh": "", // åäžã§ããã¬ã³ãã·ã§ã€ãä»ã¹ãã³ã¡ãã·ã¥ã®ãããªã¢ã«ãæå®ãããçç¥æã¯åäž
"TargetMeshList": [], // çµå察象ãšããã¡ãã·ã¥ãå«ãã²ãŒã ãªããžã§ã¯ãåãé
åã§æå®ãã¯ã€ã«ãã«ãŒãã«å¯Ÿå¿ãå
é ã« ! ãã€ãããšéã«å¯Ÿè±¡ãšããªãæå®ããšã¹ã±ãŒã㯠\ ã§ãçç¥ãããšãã¹ãŠã®ã¡ãã·ã¥ãçµå察象ãšãªã
"TargetMaterialList": [] // çµå察象ãšãããããªã¢ã«åãé
åã§æå®ãã¯ã€ã«ãã«ãŒããçç¥æãç㯠TargetMeshList ãšåãã
}
},
"Animation": { // ãã£ã©ã¯ã¿ãŒã®ã¢ãã¡ãŒã·ã§ã³
"AnimationFilePath": "", // ["", ..., ""], ãšããã°è€æ° .vmd ã®ããŒãžèªèŸŒãšãªã
"FaceMappingFilePath": "", // .vrm ãš .vmd ã®è¡šæ
å察å¿è¡šãžã®ãã¹ã"" ãªãããã©ã«ãã®å¯Ÿå¿è¡šã䜿çšããã
"BodyAdjustFilePath": "", // ã¢ãã¡ãŒã·ã§ã³ã®ããŒãºè£æ£è¡šãžã®ãã¹ã"" ãªãããã©ã«ãã®è£æ£è¡šïŒT -> A ããŒãºå€æçšïŒã䜿çšããã
"DelayTime": 0.0,
"Options": { // Vmd ã§ã¯äžèšãèšèŒå¯èœã ããä»»æã®ããŒã¿ãèšè¿°ã§ãã
"BodyScaleFromHuman": 0.0, // 身äœãµã€ãºã®è£æ£æ¯çã0.0 ãªãèªåçã«èšç®ãããïŒãã¯ãã«ã§è»žããšã®æå®ãå¯èœïŒ
"FootScaleFromHuman": 0.0, // 足äœçœ®ã®è£æ£æ¯çã0.0 ãªãèªåçã«èšç®ãããïŒãã¯ãã«ã§è»žããšã®æå®ãå¯èœïŒ
"MoveScaleFromHuman": 0.0, // ãã£ã©ã¯ã¿ãŒç§»åã®è£æ£æ¯çã0.0 ãªãèªåçã«èšç®ãããïŒãã¯ãã«ã§è»žããšã®æå®ãå¯èœïŒ
"FootIkMode": "auto", // .vmd ã®ããããã©ãããããauto|on|off|leg_only|foot_only ããéžã¶ãauto 㯠.vmd ã®è¶³ïŒ©ïŒ«ã«ããŒãããããªããã§èªåå€å¥ãã
// _with_ground ãã€ãããšæ¥å°ïŒ©ïŒ«ã䜿ãïŒ auto_with_ground ãšã leg_only_with_ground ãšãæžãïŒ
"UseStreamHandleAnimationJob": true // åŸæ¥ã® animation job ã¢ãŒãã䜿çšããïŒæ¥å°ã詊ãã«ã¯ false ïŒ
},
},
"ModelInformation": { // ãã£ã©ã¯ã¿ãŒã¢ãã«ã®æ
å ±
"Caption": "", // ãã£ã©ã¯ã¿ãŒåãšããŠè¡šç€ºããã
"Author": "", // äœè
æ
å ±ãšããŠè¡šç€ºããã
"Url": "",
"Description": ""
},
"AnimationInformation": { // ãã£ã©ã¯ã¿ãŒã¢ãã¡ãŒã·ã§ã³ã®æ
å ±
"Caption": "", // ã¢ãã¡ãŒã·ã§ã³åãšããŠè¡šç€ºããã
"Author": "", // ã¢ãã¡ãŒã·ã§ã³ã®äœè
ãšããŠè¡šç€ºããã
"Url": "",
"Description": ""
}
}
},
"AudioInformation": { // 鳿¥œã®æ
å ±
"Caption": "", // æ²åã®ãã£ãã·ã§ã³ãšããŠè¡šç€ºããã
"Author": "", // 鳿¥œã®äœè
ãšããŠè¡šç€ºããã
"Url": "",
"Description": ""
},
"AnimationInformation": { // ããã©ã«ãã¢ãã¡ãŒã·ã§ã³ã®æ
å ±ïŒçŸåšã¯æ©èœããŠããªãïŒ
"Caption": "", // ã¢ãã¡ãŒã·ã§ã³åãšããŠè¡šç€ºããã
"Author": "", // ã¢ãã¡ãŒã·ã§ã³ã®äœè
ãšããŠè¡šç€ºããã
"Url": "",
"Description": ""
},
"Options": { ... } // ä»»æã®ããŒã¿
}
- ãã¹ã®åœ¢åŒ
- çžå¯Ÿãã¹æå®ïŒ step1.vmdïŒ . ã .. ã䜿ããïŒ
- 絶察ãã¹æå®ïŒ c:/xxxx/ds/step1.vmd
- web ããïŒ https://github.com/abarabone/AnimLite/raw/master/Asset/ds/step1.vmd
- zip ãæå®ïŒ https://github.com/abarabone/AnimLite/raw/master/ds-sjis.zip
- zip å ã®ãã¹ãæå®ïŒ https://github.com/abarabone/AnimLite/raw/master/ds-sjis.zip/ds/step1.vmd
- drop boxïŒ https://www.dropbox.com/xxxx/step1.vmd?rlkey=kfga3v1soo6sple638gk326qt\&st=hrqrzch6\&dl=1 â æ«å°Ÿã dl=1 ã«ããã°ããã¿ãã
- ã¯ãšãªã¹ããªã³ã°äžã® & ã¯ãquest3(android?) ã ãš & ã®ããã«ãšã¹ã±ãŒãããªããšãã¡ã ã£ãã®ã§æ³šæ
- one drive ãšã google ã®ãã€ãã©ã€ããšãã ãšãã¹ã«æ¡åŒµåãå«ãŸããªãã®ã§ãcontent ã® type ãšãèŠãæ¹æ³ã«ããªããšãã¡ããâŠ
- https://www.dropbox.com/xxxx/step1.vmd?rlkey=kfga3v1soo6sple638gk326qt\&st=hrqrzch6\&dl=1/ds/step2.vmd ã®ãããªèšè¿°ïŒã¯ãšãªã¹ããªã³ã°ã®åŸã« zip å ã®ãã¹æå®ïŒãOK
- unity ã®ãªãœãŒã¹ã¯æ«å°Ÿã« as resource ãã€ããïŒ step1 as resource
- AnimationFilePath ã«éããåäœã§ãé
åã§ãèšè¿°ã§ãã
"AnimationFilePath": "body.vmd"
"AnimationFilePath": ["body.vmd", "face.vmd"]
- åäœ zip ã«åºããããŒã¿ã¯ã
- ïŒçš®é¡ã®ããŒãã¢ãŒãããããDanceSceneLoader.ZipLoaderMode ã§æå®ããïŒå
šäœçšã®èšå®ãªã®ã§ããŒãã®åºŠã«å€ãããã¯ã§ããªãïŒ
- Sequential ... ïŒã€ãã€ããŒã
- ParallelOpenSingleFile ... 䞊åããŠããŒããããããã¡ã€ã«ã¯ïŒã€ã ãéãïŒãã¡ã€ã«ãããã³ã°ã䜿çšãandroid ã ãšäžå®å®ããã調æ»äžïŒ
- ParallelOpenMultiFiles ... 䞊åããŠããŒããããã¡ã€ã«ã¯ããããéãïŒãã®ã¶ãã¡ã¢ãªãæ¶è²»ããïŒ
- ããã©ã«ã㯠ParallelOpenMultiFiles
- ïŒçš®é¡ã®ããŒãã¢ãŒãããããDanceSceneLoader.ZipLoaderMode ã§æå®ããïŒå
šäœçšã®èšå®ãªã®ã§ããŒãã®åºŠã«å€ãããã¯ã§ããªãïŒ
- ãã¡ãã utf8 ãš sjis ã® zip ã«å¯Ÿå¿ããŠããã€ããïŒ win ã®éãã§äœã£ã zip ã¯ãªããš shift-jis ã§å éšãã¹ãä¿åããã仿§ãããïŒ
- çžå¯Ÿãã¹ã¯ãäžèšã®ããã«çµ¶å¯Ÿãã¹ã«å€æããŠããŒããã
- .json ã®ãããã©ã«ããèµ·ç¹ãšããŠæ€çŽ¢
- .json ãäžæžãèªã¿ãã¿ããŠããå Žåã¯ãããŒã¹ãšãªã£ã .json ã®ãããã©ã«ããæ€çŽ¢å¯Ÿè±¡ãšãªã
- äžèšã§ã¿ã€ãããªãå ŽåããŸã㯠.json ã䜿çšããŠããªãå Žå
- FullPathMode.PersistentDataPath ã®æã¯ Application.persistentDataPath + /ds/step1.vmd
- FullPathMode.DataPath ã®æã¯ Application.dataPath + /ds/step1.vmd
- ããã©ã«ã㯠dataPathïŒ android ã®å®æ©ã®æã ã persistentDataPath ïŒ
- .json ã®ãããã©ã«ããèµ·ç¹ãšããŠæ€çŽ¢
- PathUnit.IsAccessWithinParentPathOnly ã true ãªããããŒã«ã«ãã¡ã€ã«ã«é¢ããŠã¯ PathUnit.ParentPath 以äžã«ãããã¡ã€ã«ã«ããã¢ã¯ã»ã¹ã§ããªãããã«ãã
- ããã©ã«ã㯠true
- ã¢ã¯ã»ã¹ãããš IOException ãã¹ããŒããïŒ null ãè¿ããããšãã®ã»ããããã ãããïŒ
- json ãªã®ã§ããããçç¥ããŠãèªãã
- ãã ããŸã ãšã©ãŒåŠçãšããã¹ããšãããŠãªãã®ã§ããããããšã©ãŒãåºããšæã
- åçš®ããŒã¿ã®ãã¹ãšãã£ã©äœçœ®ããæå®ããŠããã°ãããšã¯çç¥ïŒåæå€ãšãªãïŒã§ããªããšãªãOkã ãšæã
- .json ãå¥ã® .json ã§ãªãŒããŒã©ã€ãã§ããããçç¥ããéšåã¯ãªãŒããŒã©ã€ããããåã® .json ã®å€ãæ®ã
- Motions/BackGrounds ã®ããŒåã§ã¯ã€ã«ãã«ãŒãïŒ *, ?, # ïŒã䜿ãããšã³ããªã®å€ãäžæžãã§ãã
- ãããããããŒã®ãšã³ããªã®å€ãäžæžããã
- ã¡ãªã¿ã« # ã¯æ°åïŒæåãšããããããã# èªäœãšããããããããã«ãã
- ã¯ã€ã«ãã«ãŒãã䜿ã£ãããŒã®ãšã³ããªèªäœã¯ã衚瀺察象ã§ã¯ãªããªã
- ã¯ã€ã«ãã«ãŒãã§ã®äžæžãã¯ã.json ã«ç»å Žããé ã«é©çšãã
- .json ããªãŒããŒã©ã€ãããå Žåãäžäœ .json ã®ãšã³ããªãäžæžãã®å¯Ÿè±¡ãšãªã
"Motions": { "mob##": { // ã¯ã€ã«ãã«ãŒãã䜿ã£ãããŒå "Animation": { "AnimationFilePath": "step,vmd" } }, "mob01": { // mob## ããããããã®ã§ãäžæžãããã察象ãšãªã "Model": { "ModelFilePath": "character1.vrm", // ãã ã mob## ã§ã¯ ModelFilePath ã®èšå®ããªãã®ã§ãcharacter1.vrm ã¯çãã }, "Animation": { "AnimationFilePath": "walk,vmd" // mob## ã« AnimationFilePath ã®èšå®ãããã®ã§ãstep.vmd ã§äžæžãããã } } }
- ãããããããŒã®ãšã³ããªã®å€ãäžæžããã
- Motions/BackGrounds ã®ããŒåã '_' ã§å§ãŸããã®ã¯ã衚瀺察象ã§ã¯ãªããªã
- ãã ãããŒåããããããä»ã®ãšã³ããªã®ããŒã¹ãšãªãããšãã§ãã
- ããŒã¹ããŒã«ã¯ã¯ã€ã«ãã«ãŒãã䜿çšã§ãã
- ããŒã¹ãä»ã®ããŒã¹ãç¶æ¿ã§ãã
- ããŒã¹ç¶æ¿ã¯ãããåã«èšè¿°ãããããŒã¹ããã®ã¿å¯èœ
- äžäœ .json ããã¯ããŒã¹ç¶æ¿ã§ããªãïŒå¯èœãšãããè¿·ã£ãããæå³ããªãç¶æ¿ãèµ·ããããªã®ã§ãããïŒ
-> ã¡ãªã¿ã«ïŒã€äžäœã® .json ã§ _* ãå®çŸ©ãããŠãããšããããïŒã€äžäœã§ _* { } ãšç©ºã®å®çŸ©ãæžãã°ããŒã¹ãšããŠæ±ãããšãã§ãã
ïŒéåžžã®å®çŸ©ã¯äžäœãããªãŒããŒã©ã€ãã§ãããã®ãªãŒããŒã©ã€ããããŒã¹ãšããŠåäž .json å éšã§åç §ããã°ïŒ¯ïŒ«ïŒ"Motions": { "_center-*": { // ã¯ã€ã«ãã«ãŒãã䜿ã£ãããŒã¹ãšã³ã㪠"Animation": { "AnimationFilePath": "step,vmd", "DelayTime": 0.4 } }, "center-ch": { // _center-* ããããããã®ã§ãããŒã¹ãšããŠç¶æ¿ã§ãã "Model": { "ModelFilePath": "character1.vrm" // character1.vrm ã¯æ®éã«é©çš }, "Animation": { // AnimationFilePath 㯠center-ch ã«èšè¿°ããªãã®ã§ã_center-* ã® step.vmd ãç¶æ¿ã§ãã "DelayTime": 0.0 // DelayTime 㯠center-ch ã§èšè¿°ãããŠããã®ã§ 0.0 ãé©çš } } }
- ã¯ã€ã«ãã«ãŒãã§ã®äžæžã/ããŒã¹ç¶æ¿ãå®è£ ãããããããã©ã«ãã¢ãã¡ãŒã·ã§ã³ã¯å»æ¢ãšãã
- åãããã¯ã« Options ãšããŠãä»»æã®å
容ãèšè¿°å¯èœãæ³å®ãšããŠã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåå¥ã«è§£éããçšé
- çŸç¶ã§ã¯ãAnimation ãããã¯ã§ vmd çšã« FootIkMode ãªã©ã§äœ¿çšããŠãã
- .json ã«æžããŠããããããã£ã®ã¿ååŸããã
- .Options 㯠dynamic ã¢ã¯ã»ã¹ãå¯èœãå éšã«ã¯ ExpandoObject ãæ ŒçŽãããŠããïŒåæå€ã¯ null ã ãã¢ã¯ã»ã¹ããæç¹ã§çæãããïŒ
- .OptionsAs<ãã·ãªã¢ã©ã€ãºå ã¯ã©ã¹>() ã§ããã©ã«ãå€ãèæ ®ããå倿ãã§ããã¡ãããšããåã§åãåããïŒåäœãšããŠã¯ populate ã®ãããªæãïŒ
- Motion.Animation.Options ã® BodyScaleFromHuman ã«ã€ããŠ
- BodyScaleFromHuman
- ã¢ãã¡ãŒã·ã§ã³ã«ããã身äœãµã€ãºã®è£æ£å€ãå€ * 0.8 * 0.1 ãã¢ãã¡ãŒã·ã§ã³ã®ç§»åãã¯ãã«ã«ä¹ç®ãããã
- å€ã 0.0 ãªãèªåèšç®ãããAnimator.humanScale * 0.8 * 0.1 ãšãªãïŒhumanScale ã¯æšæºè¡äž 1m ããã®æ¯çïŒ
- * 0.8 ã¯ãunity humanoid ã®è¡äžæšæº(1m)ãš mmd æšæºãã¯ãšã®è¡äžã®æ¯ç
- * 0.1 ã¯ãmmd ã®äœçœ®åäœãã unity(1m) ãžã®è£æ£å€ãçµéšçã«å²ãåºããã®ã§ãæ ¹æ ã®ããå€ã§ã¯ãªã
- å€ã 1.0 ã«ãããšãvmd æ¬æ¥ã®ã¢ãã«ãšè¿ãå€ãšãªãïŒããã«è©Šè¡é¯èª€ã§èª¿ç¯ããã€ããïŒ
- ã¢ãã¡ãŒã·ã§ã³ã«ããã身äœãµã€ãºã®è£æ£å€ãå€ * 0.8 * 0.1 ãã¢ãã¡ãŒã·ã§ã³ã®ç§»åãã¯ãã«ã«ä¹ç®ãããã
- FootScaleFromHuman ã¯è¶³ïŒ©ïŒ«ã®è£æ£å€ãBody ãšåæ§ã®èšç®ã§ãæ©å¹ ã調ç¯ããã
- MoveScaleFromHuman ã¯ãã£ã©ã¯ã¿ãŒç§»åéã®è£æ£å€ãèšç®ã¯ Body ãšåæ§
- Body ã 0.0 ã«ã㊠Move ã 1.0 ã«ããã°ãäœã®äžäžç§»åããã£ã©ã¯ã¿ãŒã®èº«äœãµã€ãºã«åããã€ã€ãç§»åéãå
ã®ã¢ãã«ãšåãã«ã§ãã
- Foot ã Move ãšç°ãªãå€ã«ãããšæ»ã£ãŠã¿ãã
- å°ãããã£ã©ã§ 1.0 ã«ãããšå€§è¡ã«ãªã£ãŠé 匵ã£ãŠãæããããŠãããã
- ä»èãããš FromHuman ã£ãŠæå³ããããªããªãFromVmd ãšãã®ãããã®ã§ã¯ïŒ FromHumanoid ãªããŸã ããâŠ
- å scale å€ã¯ãã¹ã«ã©ãŒå€æå®ãšãã¯ãã«å€æå®ãå¯èœ
- ãã¯ãã«å€ã¯ {"x":0.0, "y":0.0, "z":0.0} ãŸã㯠[0.0, 0.0, 0.0] ã®ããããã®èšè¿°ãã§ãã
- BodyScaleFromHuman
- ããã¹ããã¡ã€ã«ã§ãHumanoidBodyBones Enum å€ã«å¯Ÿå¿ããéšäœããšã«ãããŒã«ã«å転ãèšè¿°ãã
- .json ã® BodyAdjustFilePath ã "" ã«ãããšããã©ã«ãã®è£æ£ãã¡ã€ã«ã䜿çšãããããäžèšã®ãã㪠T -> A ããŒãºè£æ£ãšãªã£ãŠããã
LeftUpperArm
lrot z+30
RightUpperArm
lrot z-30
- çŸç¶ã¯ããŒã«ã«å転ããèšè¿°ã§ããªã
- ããŒã«ã«å転ã¯ãlrot | local rotation | LocalRotation ã®åŸã«ãx|y|z{宿°} ãšãã圢åŒã§èšè¿°ãã
- å転㯠x|y|z 軞ã {宿°} 床ãšããæå³åããæã¡ã* ã§ã¯ã©ãŒã¿ããªã³ã®æãç®ã®ããã«èšèŒã§ãã
- ãšããã§ https://www.nicovideo.jp/watch/sm42270202 ãããããŠããããããã¯ããããšãã .vmd ããŒã¿ã¯ãã©ããè©ã 30 床ãããåã«åŸããŠãã
- ãããè£æ£ããã«ã¯ãäžèšã®ãããªè£æ£ãã¡ã€ã«ãçšæããã°ãã
LeftShoulder
lrot y-30
RightShoulder
lrot y+30
LeftUpperArm
lrot y+30 * z+30
RightUpperArm
lrot y-30 * z-30
- ã¡ãªã¿ã«äžèšã®ããã«åŠçããŠããããããŸãèªä¿¡ã¯ãªãâŠ
ããŒã³åè»¢è£æ£ = 芪ããŒã³ã®åè»¢è£æ£ * è£æ£ãã¡ã€ã«ããåŸãå転 * ã¢ãã¿ãŒããåŸãåæå§¿å¢å転
localRotation = inv(芪ã®ããŒã³åè»¢è£æ£) * .vmd ããåŸãå転 * ããŒã³åè»¢è£æ£
- ã¯ãŒã«ãå転ã§ãã£ãã»ããç¡é§ãªããããã
- unity 6 preview ãã addressables ã§ã® Resources ãã©ã«ãã䜿ããªããªã£ããããâŠïŒã²ã©ãïŒ -> Resources_moved ã«ç§»åãããŠããŸã