Unity ã® AnimatorController ãšãã£ã¿ã GraphView ã§çœ®ãæãããšãã£ã¿æ¡åŒµã§ãã ã°ã©ãã§ã®ç·šéã«å ããŠãå£ããªããªãã¡ã¯ã¿ãªã³ã°ïŒå倿ã»ã«ã¹ã±ãŒããªããŒã ïŒã ã³ã³ãããŒã©ãŒã®è§£æïŒéçã»åçïŒã仿ãã®èªåçæïŒãªããžã§ã¯ãã¬ãžã§ããã» DBT ã¬ãžã§ããã»ãã©ã¡ãŒã¿ãŒå§çž®ïŒãã®ããã¯ãã¬ãããšã®é£æºãC# ãšã®çžäºå€æã 1 ã€ã®ãŠã£ã³ããŠã«ãŸãšããŠããŸãã
- Unity 2022.3 以é / ããã±ãŒãžå
net.yozolab.daerd - VRChat SDKã»NDMFã»Modular Avatar ã¯ä»»æãç¡ããŠãã³ã³ãã€ã«ã»åäœããè©²åœæ©èœã ããé ããŸã
| æ¹æ³ | æé |
|---|---|
| VCC / ALCOM | ãããæŒããŠè¿œå |
| UPM (Git URL) | Package Manager â ïŒ â Add package from git URL ã« https://github.com/YozoraKurage/DaerD.gitïŒæ«å°Ÿã« #0.12.0 ã®ããã«ã¿ã°ãä»ããã°ããŒãžã§ã³åºå®ïŒ |
| æå | Releases ãã .unitypackage ãŸã㯠.zip |
éãæ¹: ã¡ãã¥ãŒã® YozoLab > DaerDã.controller ã®å³ã¯ãªã㯠> Open in DaerDã
AnimatorController ã€ã³ã¹ãã¯ã¿ãŒã®æ¯è»ã¡ãã¥ãŒãèšå®ã§ãããã«ã¯ãªãã¯ã§éããã
æå¹ã«ãããšïŒæ¢å®ã¯ãªãïŒãProject ãŠã£ã³ããŠã§ã®ããã«ã¯ãªãã¯ã DaerD ã«æ¥ãŸãã
- ãšãã£ã¿
- å£ããªããªãã¡ã¯ã¿ãªã³ã°
- è§£æ
- çæããŒã«
- ãã¬ãã飿º
- C# Recipe
- VRChat / NDMF 飿º
- èšå®ãšã·ã§ãŒãã«ãã
- ã¹ããŒããã·ã³ / ãµãã¹ããŒããã·ã³ / ãã¬ã³ãããªãŒãã°ã©ãã§ç·šéãè€æ°ã®ã³ã³ãããŒã©ãŒãã¿ãã§åæã«éããŸã
- Shift + ã¹ã¯ããŒã«ã§è¡šç€ºäžã®ã¬ã€ã€ãŒãäžäžã«åãæ¿ããCtrl + Shift + ã¹ã¯ããŒã«ã§ éããŠããã¿ããåãæ¿ãïŒã©ã¡ããç«¯ã§æ¢ãŸãïŒ
- ãã¬ã³ãããªãŒã¯ Hierarchy ããã«ããã蟿ããŸãïŒè¡ã®ã¯ãªãã¯ã§éžæïŒãã¬ãŒã ã ããã«ã¯ãªãã¯ã§å ¥ãåããªãŒãžæœããééã¯ã·ãŒã³ã® Hierarchy ãšåãæäœïŒ
- ããŒã ç»é¢ â ã¬ã€ã€ãŒäžèŠ§ã§ Home ãéžã¶ãšã°ã©ãã®ä»£ããã«åºããã³ã³ãããŒã©ãŒå šäœã®ç»é¢ã ãã¬ãããªã³ã¯ïŒãã©ã¡ãŒã¿ãŒã¹ãã¢ã®ã¹ããã蟌ã¿ïŒãçæãã仿ãã®èšé²ãšå ¥å£ ïŒDBT ã¬ãžã§ããã»ãªããžã§ã¯ãã¬ãžã§ããã»å·¡ååæã»C# RecipeïŒã å šäœã«å¹ãããŒã«ãéãŸããŸããã¬ãžã§ãããåæèšå®ã¯å±éãããšããªãŒã®å£ã«ãªã£ãŠ èªã¿è¿ããªãã®ã§ãã³ã³ãããŒã©ãŒãšäžç·ã«ä¿åããããã®èšé²ãå¯äžã®èª¬æã«ãªããŸã
- DD ããŒã¿ã®åé¢ãšç Žæ£ïŒããŒã ç»é¢ã® Controller ã«ãŒãïŒ â DaerD ã®ä¿åããŒã¿ã¯
æ¢å®ã§ã³ã³ãããŒã©ãŒã®ãµãã¢ã»ããã§ãããåé¢ãããš
Assets/zz_DaerD/âŠã® å°çšãã¡ã€ã«ãžç§»ããã³ã³ãããŒã©ãŒåŽãã DaerD ã®çè·¡ãæ¶ããŸãïŒé åžçšãæå ã§ã¯ ãã®ãŸãŸäœ¿ããçµ±åã§æ»ããŸãïŒãç Žæ£ã¯ä¿åããŒã¿ãäžžããšæ¶ããŸãã ã©ã¡ããã³ã³ãããŒã©ãŒæ¬äœïŒã¬ã€ã€ãŒã»ãã©ã¡ãŒã¿ãŒã»ã¢ãŒã·ã§ã³ïŒã¯ç¡å·ã§ã
Animator 㯠1 ã€ã®ã¹ããŒãããåºãé·ç§»ããªã¹ãé ã«è©äŸ¡ããæ¡ä»¶ãæºãããæåã® 1 æ¬ãåã¡ãŸãã ã¹ããŒããéžã¶ãšãã®å šé·ç§»ãè©äŸ¡é ã«äžŠã³ããã©ãã°ã§äžŠã¹æ¿ããããŸãïŒEntry / Any State ãåãäžèЧïŒã è¡ã«ããŠã¹ãä¹ãããšã°ã©ãåŽã®è©²åœãšããžãè²ä»ããSolo ãããé·ç§»ã«é»ãŸããŠè©äŸ¡ãããªãé·ç§»ã¯ Mute ãšåãèµ€ã§è¡šç€ºãããŸãã
ããŒã«ããŒã®æ€çŽ¢æ¬ããã¹ããŒãåã»ã¢ãŒã·ã§ã³åã§å šã¬ã€ã€ãŒãæšªææ€çŽ¢ããŠãžã£ã³ãã åè£ã¯ ââ ã§éžã¹ãŸãã
- Select Sync â éžæäžã¹ããŒãã®ã¯ãªããã Unity ã® Animation ãŠã£ã³ããŠãžéããã¿ã€ã ã©ã€ã³ãå³åº§ã«åãæ¿ã
- Preview â éžæãå€ãããã³ã« Animation ãŠã£ã³ããŠã®ãã¬ãã¥ãŒãåãçŽããã·ãŒã³ã®ããŒãºã远åŸããã ïŒSelect Sync ãåæãªã®ã§ãPreview ãå ¥ãããšèªåã§æå¹ã«ãªããŸãïŒ
ã©ã¡ãã Animation ãŠã£ã³ããŠã®ç¶æ ã«å¯äœçšããããããããŒã«ããŒããã®ãªããã€ã³ã§ãã
ãã©ã¡ãŒã¿ãŒã®åãå€ãããšããããåç §ããŠããæ¡ä»¶ãå šéšæžãæããŠã³ã³ãããŒã©ãŒã æå¹ãªãŸãŸä¿ã¡ãŸãïŒã¢ãŒã / ãããå€ã®å¯Ÿå¿ä»ãã¯çŽç²é¢æ°ãšããŠåäœãã¹ãæžã¿ïŒãé©çšåã«å·®åãã¬ãã¥ãŒã
ãªããŒã ãããšãæ¡ä»¶ã»ãã¬ã³ãããªãŒïŒDirect ã®åãŠã§ã€ãã Synced ã¬ã€ã€ãŒã®äžæžãããªãŒãå«ãïŒã» ã¹ããŒãã®ãã£ãŒã«ãã»VRC Parameter Driver ã®ãšã³ããªãŸã§æ°ããååãæ³¢åããŸããUnity æšæºã¯ããããããŸããã åç §ã®å¥ãã©ã¡ãŒã¿ãŒãžã®ä»ãæ¿ãïŒãªãããïŒãåç §ããšæ¶ãã¯ãªãŒã³åé€ãåãä»çµã¿ã§ãã
| 察象 | ã§ããããš |
|---|---|
| ã¬ã€ã€ãŒ | ã³ã³ãããŒã©ãŒè·šããåç §ãã©ã¡ãŒã¿ãŒã®èªå远å ããã¬ãŒã ã®åŒãç¶ã |
| ã¹ããŒã | Ctrl+C â ã¬ã€ã€ãŒãåãæ¿ã㊠Ctrl+VãBehaviourã»ç¯å²å ã®é·ç§»ã«å ããEntry / Exit / AnyState ãšã®æ¥ç¶ã貌ãä»ãå ã§åŒµãçŽããå¥ã³ã³ãããŒã©ãŒãžè²Œããšåç §ãã©ã¡ãŒã¿ãŒãèªå远å ããã¬ã³ãããªãŒã¯è€è£œãååãããå Žåã®ã¿é£çªããµãã¹ããŒããã·ã³ã¯å¯Ÿè±¡å€ïŒã¬ã€ã€ãŒããšã³ããŒã䜿çšïŒ |
| é·ç§» | æ¡ä»¶ã€ãã§ã³ããŒïŒããŒã¹ã |
| ãã¬ãŒã / ããŒã | Ctrl+C / Ctrl+Vãã¯ãªããããŒããã¬ã€ã€ãŒåç §ãæããªãã®ã§å¥ã¬ã€ã€ãŒã»å¥ã³ã³ãããŒã©ãŒãžè²ŒããŸããã¹ããŒããšäžç·ã«éžã¶ãšçžå¯Ÿäœçœ®ãä¿ã£ããŸãŸç§»å |
| Behaviour | ã€ã³ã¹ãã¯ã¿ãŒã§ã¿ã€ãã«ãã¯ãªãã¯ããŠè€æ°éžæããCtrl+C / Ctrl+V ã§éžãã ãã®ã ããä»ã¹ããŒããž |
ã¬ã€ã€ãŒèšå®ã®ãã¹ããŒãã貌ãä»ããããã¯ã衚瀺ãåãæ¿ããã«ä»ã¬ã€ã€ãŒãžçŽæ¥è²Œãä»ããããŸãã
ã¬ã€ã€ãŒ / ãã¬ã³ãããªãŒããã³ãã¬ãŒãåããŠããã©ã¡ãŒã¿ãŒãªãããä»ãã§ã€ã³ããŒãã
- ã¯ãªããäžèЧ â åç §ããŠãã AnimationClip ã䜿çšã¹ããŒãã€ãã«äžèŠ§è¡šç€ºïŒååã§çµã蟌ã¿ã»ã¹ããŒããžãžã£ã³ãã»äžæ¬å·®ãæ¿ãïŒ
- ãªãã¹ â é局倿Žã§å£ãããã€ã³ãã£ã³ã°ãã¹ãã£ã³ã㊠From â To ãäžæ¬æžãæãã ãŠã£ã³ããŠãéããŠããéã ã Hierarchy ã®å€æŽã«è¿œåŸããèªåãªãã¹ä»ã
- Empty ã¯ãªãã â ã³ã³ãããŒã©ãŒããšã«ãã¬ãŒã¹ãã«ããŒãæå®ãããšæ°èŠã¹ããŒãã«èªåèšå®ããã è§£æã®ã穎åããä¿®æ£ãã¢ãŒã·ã§ã³æªèšå®ã®ã¹ããŒãã空ã®ãã¬ã³ãããªãŒã¹ããããäžæ¬è£å®ããŸã
.controller ã«æ®ã£ãæªåç
§ã®ãµãã¢ã»ããïŒãŽãïŒãæ€åºããŠã¯ã³ã¯ãªãã¯åé€ã
éã«ã䜿çšäžãªã®ã« Project ãŠã£ã³ããŠã«é²åºããŠãããµãã¢ã»ããïŒBehaviour ã®é衚瀺ãã©ã°ã
倱ããããã®ïŒã¯ãåé€ããéè¡šç€ºã«æ»ããŸãã
ããŒã«ããŒã®ãè§£æããŸã㯠YozoLab > DD StaticAnalyzeãçµæã¯ç¬ç«ãŠã£ã³ããŠã«åºãã®ã§ã
ã°ã©ããç·šéããªãã確èªã§ããŸããå€ãã®åé¡ã¯ã¯ã³ã¯ãªãã¯ã§ä¿®æ£ã§ããŸãã
æ€åºã«ããŽãªïŒ20 çš®ïŒ:
| ã«ããŽãª | èŠãŠãããã® |
|---|---|
| Unused Parameter | ã©ããããåç §ãããŠããªããã©ã¡ãŒã¿ãŒ |
| Invalid Condition | åãšåããªãã»å£ããæ¡ä»¶ |
| Duplicate Condition | åãé·ç§»å ã§éè€ããŠããæ¡ä»¶ |
| Dead Transition | æ¡ä»¶å士ãççŸããŠããŠæç«ãããªãé·ç§» |
| Exit Time 0 | Exit Time ã 0 ã®é·ç§» |
| Soloed Transition | Solo ã®æ¶ãå¿ã |
| Any State Retrigger | Can Transition To Self ã®ä»ãã£ã±ãªãïŒé·ç§»å ãé ããåçãçŽãããå®çªã®çœ ïŒ |
| Unreachable State | å°éã§ããªãã¹ããŒã |
| Dead Entry Branch | éããªã Entry åå² |
| Terminal States | å ¥ã£ããåºãããªãã¹ããŒã矀 |
| Duplicate Name | ååã®ã¹ããŒã / ã¬ã€ã€ãŒ |
| Missing Motion | ã¢ãŒã·ã§ã³æªèšå® |
| Missing Behaviour | åç §ã®å£ãã Behaviour |
| Empty Layer | äžèº«ã®ãªãã¬ã€ã€ãŒ |
| Layer Weight | ã¬ã€ã€ãŒãŠã§ã€ãã®èšå®ãã¹ |
| WriteDefaults | WD ã®æ··åš |
| Direct Blend Tree | DBT ã®å¥å šæ§ïŒWD OFF ã®ã¹ããŒãããŠã§ã€ããã©ã¡ãŒã¿ãŒæªèšå® / æ¬ èœ / é FloatïŒ |
| Clip Bindings | ã¯ãªããã®ãã€ã³ãã£ã³ã°ïŒå£ãããã¹çïŒ |
| VRC Parameters | ãã©ã¡ãŒã¿ãŒã¹ãã¢ãšã®äžäžèŽãçµã¿èŸŒã¿ãã©ã¡ãŒã¿ãŒã®åéã |
| AAP / Driver, AAP / Layers | AAPïŒã¢ãã¡ãŒã·ã§ã³ã§æžããã©ã¡ãŒã¿ãŒïŒãšãã©ã€ã / ã¬ã€ã€ãŒã®åã¿åãã |
YozoLab > DD DynamicAnalyzeãã³ã³ãããŒã©ãŒãèªãã®ã§ã¯ãªãèµ°ãããŠçããè§£æã§ãã
é ããªããžã§ã¯ãäžã®æ¬ç©ã® Animator ãæã§ã¹ãããããçµæãæ³¢åœ¢ãšããŠèŠãŸã
ïŒUnity Profiler ïŒ gtkwave ã®ãããªçªãPlay / Pause / ã³ãéã / ã¹ã¯ã©ããè¡ã®çµã蟌ã¿ã
ãã€ã³ã¿äœçœ®ã§ã®ãºãŒã ïŒã
æéã¯ãŠãŒã¶ãŒã決ããŸã â FPSã»ç§æ°ã»ãžãã¿ïŒåãã¬ãŒã é·ã®ã°ãã€ãïŒã»ã·ãŒãã ã·ãŒããåããªãå®å šã«åãå®è¡ã«ãªããŸãã
è£ çè ãšãªã¢ãŒãã®ã¢ãã«ïŒäœãçžæã«æž¡ããäœãæž¡ããªããïŒ
Parameter Driver 㯠SDK ã«èµ°ãããã®ã§ã¯ãªãèªåã§é©çšããã®ã§ãSDK ã®æç¡ã«äŸåããã
è£
çè
ãšãªã¢ãŒããåºå¥ã§ãïŒlocalOnly / IsLocalïŒãéã«å²ã蟌ããŸãã
è£ çè ã®ã³ããŒãšä»äººã®ã³ããŒãåãæèšã§èµ°ãããäž¡è ã®éãæž¡ãã®ã¯ åæãã©ã¡ãŒã¿ãŒãš VRChat çµã¿èŸŒã¿ãã©ã¡ãŒã¿ãŒã ãã§ãã
- çµã¿èŸŒã¿ïŒGesture / Viseme / Grounded / Upright / ã¹ã±ãŒã«ç³»âŠïŒã¯ã¢ãã¿ãŒã®åææ ãšã¯ç¡é¢ä¿ã« ãã©ãããã©ãŒã åŽãåžžæåæããã®ã§ãåæãã©ã¡ãŒã¿ãŒã«å ¥ããªããŠãçžæåŽã«å±ããŸãã åšæãµã³ãã«ã«ã¯ä¹ããªãã®ã§ãã®åšæã¶ãé ããã-1ã1 ã® 8bit äžžããåããŸãã ïŒVelocityZ ã 1 ã«åŒµãä»ãã®ã¯å®æ©ã«ç¡ãæåã§ãïŒ
- éã«
IsLocalãšIsOnFriendsListã¯èŠãåŽããšã®å€ãAvatarVersionãªã©ã¯ããŒã«ã«å°çšãªã®ã§æž¡ããŸãã
ãªã¢ãŒãã¯è€æ°äººã«ã§ããŸã â 人ããšã«å
¥å®€æå»ãšãµã³ãã«æå€±ãå¥ã
ã«æã¡ïŒé信㯠1 åã
é
éã ãã人ããšïŒãè¡ã¯ Remote / Remote 2 ⊠ãšåãããŸãããA ãå±
ããšããã« B ã
åšåã®éäžã§å
¥ã£ãŠãããã¯ããªã¢ãŒãã 1 人ã ãã®å®è¡ã§ã¯æåã®ãã¬ãŒã ã§ãã詊ããªãç¶æ³ã§ãã
çžæã®å ¥å®€æå»ãæå®ã§ããŸãã0 ã¯å šå¡åæèªã¿èŸŒã¿ã§ãããããã¯ã€ã³ã¹ã¿ã³ã¹ã®æåã® 1 åã éãããšèµ·ããªããªãå¯äžã®ç¶æ³ã§ããããšããæ¥ãçžæã¯åæå€ãäžæ¬ã§åãåããæ®ãã¯èªå㧠远ãã€ããŸãïŒïŒå°éãã index ããã®ãŸãŸè§£éããåŽã«ãªãã远ãã€ãããã瀺ããã©ã°çŸ€ã¯ ãŸãã«ãã®ããã®ãã®ïŒã
åæã¯åšæãµã³ããªã³ã°ãšããŠæš¡æ¬ããŸãã1 åšæã®äžã§èµ·ããŠæ¶ããå€åã¯å±ããã1 åšæã« 2 åã®å€å㯠2 åç®ã ããå±ããŸãïŒïŒãã³ãŒãã index ã®å€åãåãããŒãçç±ãã®ãã®ïŒã å€ã¯å®éã®ç²ŸåºŠã§äžžãããïŒFloat 㯠-1ã1 ã 8bitãInt 㯠1 ãã€ããBool 㯠1 ãããïŒã æå€±ã¯ãµã³ãã«åäœã§ãïŒïŒ index ãšãã£ã³ãã«ãé£ãéãããšã¯ãªãïŒã
è¿äŒŒã®æç€ºïŒé»ã£ãŠé£ãéããããåæãšããŠèšãããïŒ
ãã®ã³ã³ãããŒã©ãŒã«å³ããŠãè¿äŒŒããŠããç®æãåæãã§è¡šç€ºããŸãã
- æ¡ä»¶ä»ã Entry é·ç§»ãæã€ã¬ã€ã€ãŒã¯æ¢å®ã¹ããŒãããå§ãŸã
- èªåèªèº«ããå ¥ãçŽãããã©ã€ã㯠1 åããèµ°ããªã
- ã¬ã€ã€ãŒããŸãããã©ã€ãã®äŒæã 1 ãã¬ãŒã é ãã
- å®è¡ãããªãããã€ãã¢ïŒéã¿ãåãã Layer Control ã ãã¯èšé²å€ã«åœ±é¿ããïŒ
- ãã³ã¢ãŒã·ã§ã³ç³»ïŒVelocityã»AngularYïŒã¯äž¡æ¹ã®ã³ããŒã§åãå€ã«ãªããã宿©ã§ã¯çžæåŽã® ã³ããŒã ãããã¬ã€ã¹ããŒã¹ç§»åãæ°ãã
SDK ãå
¥ã£ãŠããã°ãDD ãååã§èªã¿æžãããŠããæ³å®ïŒChangeType ã®çªå·ã»ãã£ãŒã«ãåã»
çºç«ã OnStateEnter ã§ããããšïŒãå®éã® SDK åãšçªãåããããã¹ããèµ°ããŸãã
ã©ã€ã / ããã / èšé²ã®ä¿å
ã©ã€ãã«åãæ¿ãããšåãã¯ã©ã€ã¢ã³ããéãããŸãŸ EditorUpdate ã§åãç¶ãã æ³¢åœ¢ã®å€ã»ã«ããã®ãŸãŸæžãæããŠãã®å Žã§çµæãèŠãããŸãïŒè¡ã誰ã®å€ãã瀺ããŠããã®ã§ã æäœçšã®å¥ããã«ã¯æã¡ãŸããïŒãTrigger ã ãã¯ãã§ãã¯ããã¯ã¹ã§ã¯ãªãæŒããã¿ã³ã§ã 波圢ã«ã¯1 ãã¬ãŒã ã®ãã«ã¹ãšããŠåºãŸãïŒé·ç§»ã«æ¶è²»ãããç¬éã« Mecanim ãäžããã®ã§ã æ®ã£ãå€ã ããèšé²ãããæŒããè·¡ãã©ãã«ãæ®ããŸããïŒãå±¥æŽã¯æå®ç§æ°ã¶ãã®çªã è¡ã¯ã¹ã³ãŒãããšã«æãããããæ¢å®ã§ã¯äžåºŠãåããªãã£ãä¿¡å·ãé ããŸã ïŒèŠåºãã«é ããæ°ãåºãã®ã§ãç¡ãããšãéããªã ãããåºå¥ã§ããŸãïŒã
ãããåŽã¯æå»æå®ã®å ¥åïŒStimulusïŒããŠã£ã³ããŠäžã§ç·šéã§ããã·ãŒããåºå®ããã° å®å šã«åãå®è¡ãåçŸã§ããŸãã
ãªã¢ãŒãé å»¶ã®è¡ã¯ããã©ã¡ãŒã¿ãŒããšã«ãçžæãå¥ã®å€ãèŠãŠããæéããåºããŸã â å€éåãããã¿ãŒã²ããã§ã¯ãããçžæã®ã³ããŒã®å€ããã€ãŸããªã¢ãŒãèŠç¹ãã®ãã®ã§ãã
å®è¡ã®èšé²ã¯ AnimationClipïŒ.animïŒãšããŠä¿åã»åèªã¿èŸŒã¿ã§ããŸããèšé²ã¯ãæé à å€ã®æ²ç·ã ãã®ãã®ãªã®ã§ãUnity ã®ã¢ãã¡ãŒã·ã§ã³ãŠã£ã³ããŠã§ãã®ãŸãŸéããŠå·®åãåããŸã ïŒä¿¡å·ã®ã¹ã³ãŒãã»åã»ã¹ããŒãåã¯ãµãã¢ã»ãããšããŠåããã¡ã€ã«ã«å梱ïŒã éåãã«ãèªããŸã â ä¿åããå®è¡ããæå»æå®ã®å ¥åããšããŠèªã¿èŸŒãã°ãããå®è¡ãèšé²ãã å€ã次ã®å®è¡ã®å ¥åã«ãªããŸãïŒå¥ã®åæåšæã»å¥ã®ãã¬ãŒã ã¬ãŒãã»å¥ã®ã·ãŒãã§è©ŠãïŒã ä¿åããå®è¡ã¯ãŽãŒã¹ããšããŠéããŠæ¯èŒãã§ããŸãïŒã¯ãªãã > éããŠæ¯èŒâŠïŒãåãããã®ã¯ ãã¬ãŒã çªå·ã§ã¯ãªãæå»ãªã®ã§ããžãã¿ã§äž¡è ã®ãã¬ãŒã é·ãéã£ãŠããŠãåãç¬éãåãåã«æ¥ãŸãã Shift+ã¯ãªãã¯ã§ç¬¬ 2 ã«ãŒãœã«ã眮ããšãã«ãŒãœã«ãšã®**ÎïŒçµéç§ïŒ**ãããŒã«ããŒã«åºãŸã â ããã°ã«ãæŒããŠããã¬ã€ã€ãŒãåããŸã§ãã®ãããªãå®è¡ã«æããããåãã®ã»ãšãã©ã¯é·ãã®åãã§ãã
ç¬ç«ãããã©ã«ããšåå空éã«ãããã³ã¢ãžã®äŸåã¯äžæ¹åã»3 åã®ã¿ïŒasmdef ã眮ãã ãã§åãåºããŸãïŒã
ãªã³ã¯ãããã¬ããã®äžã®ãªããžã§ã¯ãã察象ã«ãã仿ãã§ãïŒãã¬ãã飿ºãåæïŒã çŸåšã®çš®é¡ã¯ãã°ã« 1 çš®: 察象ãªããžã§ã¯ã矀ããã©ã¡ãŒã¿ãŒã§ ON/OFF ããã¯ãªãããšé ç·ãèªåçæããŸãã ããŒã ç»é¢ã® Object Gadgets ã«ãŒãã+ Add Gadgetãããã
- æ¹åŒã¯ 2 ã€: æ°èŠã¬ã€ã€ãŒïŒBool + OFF/ON 2 ã¹ããŒã + 峿é·ç§»ïŒãš Direct ãã¬ã³ãããªãŒïŒFloat ã§é§åãã 1D ããªãŒã 1 ã¬ã€ã€ãŒã«éçŽïŒ
- ãã©ã¡ãŒã¿ãŒã®æ°èŠäœæ / æ¢åæµçšãåæç¶æ ONã察象ããšã®å転ã®ã»ããã³ã³ããŒãã³ãã® enabledã»ãã¬ã³ãã·ã§ã€ãã»ä»»æããããã£ãåããã°ã«ã«æããããŸã
- 察象ã¯åç §ã§ä¿åãããã¹ã¯è¡šç€ºã®ãã³ã«å°åº â ãã¬ããåŽã®ãªããŒã ã芪æ¿ãã«è¿œåŸããŸã
- ã¯ãªããã¯çæããã代ããã«ææã¡ã® .anim ãæžã蟌ã¿å ã«æå®ã§ããŸããDaerD ãæžãã®ã¯ ãã®ã¬ãžã§ããèªèº«ã®è¡ã ãã§ãä»ã®ã«ãŒãã«ã¯è§Šããããã¡ã€ã«ãæ¶ããŸãã
- ã¬ãžã§ããã®åé€ã¯ã³ã³ãããŒã©ãŒåŽã®çæç©ã ããæ¶ãããã¬ããã«ã¯è§ŠããŸãã
Float ã®æ¯ãã¬ãŒã æŒç®ãè¡ã Direct ãã¬ã³ãããªãŒã®ä»æãïŒWD ON ã® 1 ã¹ããŒã + ãã¹ãããããªãŒïŒãèªåçæã ããŒã ç»é¢ã® DBT Gadgets ã«ãŒãã+ Add Gadgetããããçæç©ã¯ã³ã³ãããŒã©ãŒã®ãµãã¢ã»ãããšããŠä¿åããã Direct ãã¬ã³ãããªãŒã®ã¿ã®ã¬ã€ã€ãŒã¯ã¬ã€ã€ãŒäžèЧã«ãDBTããããžãä»ããŸãã
æèŠãã¬ãŒã æ°ã¯å€ã«ãããäžå®ã§ãé£éãããšå ç®ãããŸã:
| ãã¬ãŒã | ã¬ãžã§ãã |
|---|---|
| 1 | å ç®ã»æžç®ïŒRanged çãåãïŒã»ä¹ç®ã»AND / OR / NOTã»Float As Boolã»ãªãããã»sin / cos / tanã»LUT (Curve)ã»atan2ã»å¹³æ¹æ ¹ã»éå¹³æ¹æ ¹ã»log2ã»exp2ã»ææ°ã¹ã ãŒãº (Smooth) |
| 2 | éæ°ã»ç¬Šå·ä»ãä¹ç®ã»ç·åœ¢ã¹ã ãŒãº (Smooth (Linear)) |
| 3 | éæ° (Ranged)ã»é€ç® |
| 4 | é€ç® (Ranged)ã»ç¬Šå·ä»ãé€ç®ã»çŽ¯ä¹ |
| 5 | æ¡åè§£ |
| NïŒ1ã8ïŒ | Buffer (Delay) |
ã¹ã ãŒãº 2 çš®ã ãã¯ã段ãã§ã¯ãªããã£ã«ã¿ãªã®ã§ããã®æ°åã¯æåã®å¿çãŸã§ã®æéã§ã ïŒèœã¡çããŸã§ã®æéã¯ã¹ã ãŒãºéã®åé¡ã§ãã°ã©ãã®åœ¢ãšã¯é¢ä¿ãããŸããïŒã
粟床ã»ç¬Šå·ã»æç³»åãºã¬ã®æ±ã
- 逿°ã®ç¯å²ã宣èšã§ãããªã Reciprocal (Ranged) / Divide (Ranged) ãæåã§ãã逿°ã 1 以äžãž æã¡äžããŠå³å¯åŽã ãã§å²ãã®ã§ãéæ°ã® 240 äžéãã«ãã¯ã¢ãã衚ã®èª€å·®ããããŸãã
- 笊å·ä»ãä¹ç® / é€ç® â Direct ã®éã¿ã¯è² ããŒãã«åãæšãŠãããçŽ ã®ä¹é€ç®ã¯æ£æ°å°çšã§ãã 笊å·ä»ãçã¯å ¥åãæ£è² ã®ååã«åã㊠4 象éãåç®ããã®ã§ãã©ã®ç¬Šå·ã®çµã¿åããã§ãæ£ããèšç®ããŸã ïŒã¬ã³ãžãçžãã®ã¯å ¥åã ãã§ãç©ã¯ç¯å²å€ãžåºãããŸãïŒ
- å¹³æ¹æ ¹ã»éå¹³æ¹æ ¹ã»log2ã»exp2 ã¯çªïŒå ¥åã¬ã³ãžïŒã宣èšããã ãã® 1 ãã¬ãŒã ã®ããŒãã«ã ãµã³ãã«ã¯é¢æ°ã«åãããŠé 眮ããŸãïŒå¹³æ¹æ ¹ãšå¯Ÿæ°ã¯çæ¯ãææ°ã¯çéé â ã©ã¡ãããã®æ¹ã誀差ãå šåã§äžå®ã«ãªãïŒ
- 环ä¹ã¯åºãææ°ããã©ã¡ãŒã¿ãŒã«ã§ããå¯äžã®åœ¢ã§ãlog2 â 笊å·ä»ãä¹ç® â exp2 ã® 4 ãã¬ãŒã ïŒäžéã¬ã³ãžã¯å®£èšãã 2 ã€ããèªåã§æ±ºãŸããŸãïŒ
- LUT (Curve) ã¯ä»»æã®ã«ãŒãã 1D ãã¬ã³ãããªãŒã®åºåç·åœ¢ããŒãã«ã«ãã€ã¯ã atan2 ã¯æ¹åãã¯ãã«ããè§åºŠããåšãåäœïŒ0..1ïŒã§è¿ã 2D FreeformDirectional ã®æ¹å LUT ã§ã çµæããã®ãŸãŸ sin / cos ãžæž¡ããŸããã©ã¡ããè£å©ã¬ã€ã€ãŒãªãã§ããªãŒå ã«åãŸããŸã
- Buffer (Delay) ã¯å ¥åãã¡ããã© N ãã¬ãŒã é ãããã³ããŒããã¬ã³ãããªãŒã®èšç®ã¯ 1 段ããšã« 1 ãã¬ãŒã é ãããããæ®µæ°ã®éãåå²ãåããã©ã¡ãŒã¿ãŒã®å¥ãã¬ãŒã ã®å€ãèŠãŠããŸã ãæç³»åãºã¬ãããæµ ãåŽã«ãããã¡ãæãã§è£æ£ããŸã
- éæ°ã»é€ç®ã»ãã¬ãŒã æéã»äžè§é¢æ°ã¯ã³ã³ãããŒã©ãŒæ«å°Ÿã«å°çšã®è£å©ã¬ã€ã€ãŒã远å ããŸã
æå®ãããã©ã¡ãŒã¿ãŒçŸ€ããã€ã³ããã¯ã¹ + åå¥å€ãã£ã³ãã«ããšããå°æ°ã®åæãã©ã¡ãŒã¿ãŒã«æåå²å€éããŸãã VRChat ã®çŽ 0.3 ç§ã®åæåšæãå©çšããããŒã«ã«åŽã®å·¡åã¹ããŒãã Parameter Driver ã§å€ãé çªã«èŒãã ãªã¢ãŒãåŽã AnyState ãã³ãŒããŒã§æžãæ»ããŸããåæã³ã¹ãã®ãã¬ãã¥ãŒä»ãïŒããŒã ç»é¢ããïŒã DaerD ãçæããã¬ã€ã€ãŒã«ã¯ã¬ã€ã€ãŒäžèЧã§ã¢ã€ã³ã³ãä»ãïŒããŒã«ãããã«ç±æ¥ãåºãŸãïŒã ãŠã£ã¶ãŒãããåãã¬ã€ã€ãŒãåçæãããŒã ç»é¢ã®è¡ããåé€ã§ããŸã ïŒã¬ã€ã€ãŒã»çæãã©ã¡ãŒã¿ãŒã»åæãªã¯ãšã¹ããæé€ãIsLocalã»è»¢é察象ã»Empty ã¯ãªããã¯æ¶ããŸããïŒã
- ã€ã³ããã¯ã¹ã¯æ¢å®ã®ãèªåãã§ãã©ã¡ãŒã¿ãŒæ°ã«å¿ã㊠Int / Bool ã®å®ãæ¹ãéžæïŒåãããæ°ãªãåæãã©ã¡ãŒã¿ãŒ 1 åã§æžã IntïŒ
- Float ãã£ã³ãã«æ°ã¯ 1ã8ã1 ã¹ãããã§è€æ°ã® Float ãéã³ã¹ãããæ°ãæžãããŸãïŒãã£ã³ãã« 1 æ¬ã«ã€ãåæ 8 bitïŒ
- ãå·¡åé ïŒCycle OrderïŒããšãã£ã¿ã§é çªããã©ãã°æå®ãè¡ããšã®å®éã®æŽæ°ééïŒãç§ããšïŒãš å·¡åå šäœã®ã¿ã€ã ã©ã€ã³ïŒF â B â I âŠïŒã衚瀺ã察象äžèЧã«ã¯æ€çŽ¢çªä»ã
- IsLocal ãå·¡ååæèªèº«ãçæãããã©ã¡ãŒã¿ãŒã¯å¯Ÿè±¡ã«éžã¹ãŸãã
- çæ State ã«ã¯ã³ã³ãããŒã©ãŒã® Empty ã¯ãªãããèªåå²ãåœãŠïŒã¹ãããæéã¯ã¯ãªããé·ã§æ£èŠåïŒ
- 1 åšã®æèŠæéã»åªå ãã©ã¡ãŒã¿ãŒã®æŽæ°ééã»è¿œå ã³ã¹ã 0 ã§å ¥ãã¹ãããæ°ã»å§çž®ããŠãæžããªãæ§æã» ããããæäœã§é§åãããŠãã察象ãªã©ãèŠå衚瀺
ãªã¯ãšã¹ã (Req) / åæåãã©ã° (Ready) / ãºã¬çã (Stale) / ã°ã«ãŒã
åæãªã¯ãšã¹ãïŒReqïŒ â æå¹ã«ãããã©ã¡ãŒã¿ãŒã¯é çªãåŸ
ããã«éããŸããããŒã«ã«ã® Bool ãã©ã°ã
ç«ã€ãšå·¡å㯠1 ã¹ãããã¶ãå¯ãéããŠãã®ã¹ããããéããé¢ããå Žæãžå·¡åãæ»ããŸããäœçœ®ãæ»ãã®ã§
å·¡åãæ¢ãŸãããå¯ãéã©ããã¯é£ç¶ããªãã®ã§ãã©ãã ãå©ãããŠã 1 åšã¯æå€§ 2 åãŸã§ã§ãïŒãŠã£ã¶ãŒãã«ç§ã§è¡šç€ºïŒã
ãå€ãã£ãç¬éã«éããããã¯ãã¡ãã®åœ¹ç®ã§ãÃN åã¯èªã¿åãå°çšã®è¡šç€ºã§ã â éã¿ã¯ 1 åšã®é
åã
æžãæããã ãïŒ1 ã€ãäžãããš 1 åšã䌞ã³ãŠä»ãé
ããªãïŒãªã®ã§ããŠã£ã¶ãŒãããæ°ããéã¿ã¯é
ããŸããã
ãã ã C# ã¬ã·ãã® .Rate(...) ãªã©ã§ä¿åæžã¿ã®éã¿ã¯ãã®ãŸãŸèªã¿èŸŒã¿ã»çæã»ãšã¯ã¹ããŒãããã
ãã®å Žåã ã ÃN åã«å®éã®æ æ°ãåºãŸãïŒééã空ããããªãéã¿ã¯å®å¹å€ã«äžžããŠèŠåïŒãæç€ºã¹ã±ãžã¥ãŒã«ã
ææžãã®ã¹ããããæã€èšå®ãåæ§ã«è¡šç€ºã»çæããããBack To Cycle Orderãã§éåžžã®å·¡åé ãžæ»ããŸãã
ãªã¢ãŒãåæåãã©ã°ïŒReadyïŒ â ãã®ã¯ã©ã€ã¢ã³ããå
šã¹ãããã 1 床以äžåä¿¡ãçµããæç¹ã§ 1 ã«ãªã
ããŒã«ã« Bool ãçæããŸãããªã¢ãŒãã«ã¯è£
çè
ãžåãåãããææ®µãç¡ãã®ã§ãããããã®ä»£ããã§ãã
åã¹ãããã®åä¿¡ãããã¯äžåºŠç«ã£ããèœã¡ãªããããåšåã®éäžã§å
¥ã£ãŠãæå€§ 1 åšã§ã©ããããå€å®ã«
æéçªãããŒãžã³ãèŠããŸãããè£
çè
åŽã¯æåãã 1ïŒèªåã®å€ã¯ã©ãã«ãè¡ã£ãŠããªãããïŒãªã®ã§ã
ãåæåãçµãããªã¢ãŒãã㯠Ready && !IsLocal ãšæžããŸããåæãããã®å¢å 㯠0ãè²»çšã¯ã¹ãããæ°ã¶ãã®
ããŒã«ã« Bool ãšç£èŠã¬ã€ã€ãŒ 1 æã
åæãºã¬çããã©ã°ïŒStaleïŒ â 1 åšã®ããã ã«å šã¹ããããå±ããªãã£ããšã 1ãå±ããåšã§ 0 ã«ãªã ããŒã«ã« Boolãå€å®ã¯ã1 åšã« 1 åã ãéãããã¹ãããããåã£ãŠããç¬éãªã®ã§ãã¿ã€ããŒãããŒãžã³ãèŠããã ãªã¯ãšã¹ãã§ 1 åšã䌞ã³ãŠã誀æ€ç¥ããŸãããåä¿¡ããããèœãšãã®ã¯ç£èŠã¬ã€ã€ãŒèªèº«ã§ãèªãåŽãšèœãšãåŽã åãã¬ã€ã€ãŒã«å ¥ãããç«¶åããŸããïŒããŒã«ãŒã®ã¹ãããã¯ãŸã 1 ããŠã§ã«äžžããšæ®ã£ãŠããã®ã§ã次ã®ã¹ããã㯠æ°çŸãã¬ãŒã å ïŒã1 åšã« 1 åã ãéãããã¹ããããç¡ãå·¡åïŒå šã¹ããããè€æ°åéãããïŒå šéšãªã¯ãšã¹ãå¯Ÿè±¡ïŒ ã§ããããŒã«ãŒçšã«ã€ã³ããã¯ã¹å€ã 1 ã€è²·ãè¶³ããŠå¿ ãäœããŸãïŒè²»çšã¯ã€ã³ããã¯ã¹å€ 1 åãšãã³ãŒããŒã¹ããŒã 1 åã1 åšã®é·ãããã€ããŒããã¿ã€ãã³ã°ãå€ãããŸããïŒãäœããªãã®ã¯ãå šã¹ããããåãã¹ããããéããå·¡å ïŒã¹ãããã 1 ã€ãããªãèšå®ã ãã§ããã®å Žå㯠1 åšã®ãã¡ã«æ¬ ããããã®ãäœãç¡ããããé»ã£ãŠèœãšãã ãšã©ãŒã§æåŠããŸããåšã®éäžã§å ¥ã£ããªã¢ãŒãã¯ãã®åšã®ããã 1 ã«ãªãã®ã§ããåæåäžããšåºå¥ããããšã㯠Ready ãšçµã¿åãããŸãã
ã°ã«ãŒã â åæã«å€ããã¹ãå€ãããªã¢ãŒãã§å¿
ãåæã«ä»£å
¥ãããŸãããã³ãŒãã¯å®ãã©ã¡ãŒã¿ãŒã§ã¯ãªã
圱ãã©ã¡ãŒã¿ãŒïŒHold/ïŒãžåããå
šã¡ã³ããŒãå±ããæç¹ã§ 1 åã® Parameter Driver ãäžæ¬ã³ããŒããã®ã§ã
åææ§ãã¿ã€ãã³ã°ã§ã¯ãªãæ§é ã§ä¿èšŒãããŸãïŒ1 ã€ã®ãã©ã€ãã®ãšã³ããªã¯åããã¬ãŒã ã§èµ°ãããïŒã
æããªãã£ãåšã¯ã³ããããããã¡ãããæ°ããç¶æ
ã§ã¯ãªããæã£ã 1 åšåã®ç¶æ
ã®ãŸãŸæ¬¡ã®åšã§æ²»ããŸãã
åãã¹ãããã«èŒããã©ã¡ãŒã¿ãŒã¯å
ã
äžç·ã«å±ãã®ã§ã°ã«ãŒãã¯äžèŠã§ããã®å Žåã¯èŠåãåºããŸã
ïŒã°ã«ãŒããèŠãã®ã¯åãéãã»ãã£ã³ãã«ãè¶³ããªããªã©ã§åãã¹ãããã«å
¥ããããªããšãïŒãåæãããã®å¢å 㯠0ã
ã³ã³ãããŒã©ãŒãããããåæµãããã®ããã¯ãã¬ããïŒMA Merge AnimatorïŒã«çŽã¥ããŸãã ãªã³ã¯ãšèšå®ã¯ãã¹ãŠã³ã³ãããŒã©ãŒåŽã«ä¿åããããã¬ããã«ã¯ 1 ãã€ãã眮ããŸãã â DaerD ã®ç¡ãç°å¢ã§ãã®ãã¬ãããéããŠä¿åããŠããäœãå£ããäœãæ¶ããŸããã
- Prefab Link ã«ãŒãïŒããŒã ç»é¢ïŒ: ãã¬ããã D&D ããããScan & Linkãã§ãããžã§ã¯ããèµ°æ»ã åè£ã«ãªãã®ã¯ãã®ã³ã³ãããŒã©ãŒãåæµããã Merge Animator ãæã€ãã¬ããã ãã§ã DaerD ãåæã«éžã¶ããšã¯ãããŸãã
- ãªã³ã¯ã®ç¶æ ãåžžæè¡šç€º: ãã¬ããåªå€± / Merge Animator åªå€± / å¥ã³ã³ãããŒã©ãŒãåæµãããã å€ãã£ã / MA æªã€ã³ã¹ããŒã«ãã©ã®å Žåããªã³ã¯ãåæã«ä¿®çã»ä»ãæ¿ãããŸããïŒRescan ã¯æç€ºæäœïŒ
- ãã©ã¡ãŒã¿ãŒã¹ãã¢ã®ã¹ãããããã®ã«ãŒãã«ãããŸãããªã³ã¯æã«ã¹ãã¢ãæªèšå®ãªãã ãã¬ããèªèº«ã® MA Parameters ãåæã«å²ãåœãŠãŸã
- ãã¬ãããžã®æžã蟌ã¿ã¯æç€ºãã¿ã³ã ãïŒäŸ: ã«ãŒããž MA Parameters ã³ã³ããŒãã³ãã远å ïŒã ããã±ãŒãžãããŒãžã£ç®¡çäžã®ãã¬ãããšããã¬ããã¢ãŒãã§æªä¿åã®ãã®ã¯æåŠããŸã
ãªããžã§ã¯ãã¬ãžã§ããã®å¯Ÿè±¡ãšãC# Recipe ã® Objects() ã®æ€èšŒã¯ããã®ãªã³ã¯ãèµ·ç¹ã«è§£æ±ºãããŸãã
ã³ã³ãããŒã©ãŒå
šäœãŸãã¯éžæã¬ã€ã€ãŒãããããåæ§ç¯ããç·šéå¯èœãª C# ãžãšã¯ã¹ããŒãããŸãã
API 㯠AnimatorAsCode V1 æºæ ã®æ¹èš
ïŒNewState / WithAnimation / TransitionsTo(x).When(go.IsTrue()) / Drives / DrivingRemaps âŠã
ãã©ã¡ãŒã¿ãŒã¯åä»ããã³ãã«ïŒãçæã³ãŒãã¯åé ã« API ããŒãã·ãŒãä»ãã§ã
AI ã«æž¡ããŠãã®ãŸãŸç·šéããŠãããã圢åŒã§ãã
- ã¯ãªãã / ãã¹ã¯åç §ã¯ Recipe ã¢ã»ããïŒScriptableObjectïŒã®ãã£ãŒã«ãã«èªåä»£å ¥ããã ã€ã³ã¹ãã¯ã¿ãŒã§ D&D å·®ãæ¿ãå¯èœ â ã³ãŒãã« GUID ã¯äžåå ¥ããŸãã
- åºå㯠partial class ãåãã 2 ãã¡ã€ã«ã
<Name>.Generated.csã¯æ¯åäœãçŽãããæ©æ¢°åŽã<Name>.csã¯ããªãïŒã AIïŒã® Build() ã§ãDaerD ã¯äºåºŠãšäžæžãããŸããïŒå®è¡ãããã®ã¯ãã¡ãïŒã ãšã¯ã¹ããŒã â æŽåœ¢ â çæ â ã³ã³ãããŒã©ãŒç·šé â åãšã¯ã¹ããŒãããšããã«ãŒãã§æŽåœ¢ãæ¶ããªãããã®åå²ã§ã åãšã¯ã¹ããŒãã®å€æŽã¯ Generated åŽã® git diff ã«ãããã«åºãŸã - Recipe ã¢ã»ããã®ããšã¯ã¹ããŒãåŽãšæ¯èŒãã¯äž¡è ã宣èšããå 容ïŒIRïŒãçªãåãããæŽåœ¢ãæå³ãå€ã㊠ããªãããšãä¿èšŒããŸã â èªã¿æ¹ã§ã¯ãªãåºæ¥äžããç©ã®æ¯èŒãªã®ã§ãã«ãŒãããã«ããŒã§æžãçŽããŠãéããŸã
- ãçæãã§å¯Ÿè±¡ã³ã³ãããŒã©ãŒãžé©çšïŒéšå Recipe ã¯ååã¬ã€ã€ãŒããã®å Žã§çœ®æãexclusive ã¯å šäœãææïŒã ãæ€èšŒãã§ã³ãŒããšå®ç©ã®ä¹é¢ãã¬ããŒããRecipe ææã¬ã€ã€ãŒã«ã¯ã¬ã€ã€ãŒäžèЧã§ã¢ã€ã³ã³ãä»ããŸã
- ã³ã³ãããŒã©ãŒã¯èªåã®ã¬ã·ãã®æåšãèŠããŠããŸã â åãšã¯ã¹ããŒãã¯æ¢åã®ã¬ã·ããæŽæ°ããã®ã æ¢å®ã§ããã©ã«ãç§»åãååã³ã³ãããŒã©ãŒã§éè€ãã¢ãã§ããŸãããããŒã ç»é¢ã® C# Recipes ã«ãŒãã« ç¶æ ïŒææ° / ã³ã³ãã€ã«åŸ ã¡ / ã³ã³ãã€ã«ãšã©ãŒ / 察象äžäžèŽïŒãšçæã»æ€èšŒã»éãã®ãã¿ã³ã䞊ã³ãŸã
- 鮮床ã¬ãŒã â ã³ã³ãã€ã«åŸ ã¡ãã³ã³ãã€ã«ãšã©ãŒã§ãå®è¡ãããã³ãŒãã .cs ããå€ããããã ã¯ã çæã»æ€èšŒã¯é»ã£ãŠå€ãã³ãŒããèµ°ããããçç±ã衚瀺ããŠæ¢ãŸããŸã
æ£ããã¯ã©ãŠã³ãããªããã§æ ä¿ãããŠããŸãïŒãšã¯ã¹ããŒã¿ã¯å®éã«ãã«ã㌠API ãå®è¡ããªãã ãã®åŒã³åºãåãèšé²ããæ¹åŒãªã®ã§ãåºåã³ãŒããšæ€èšŒæžã¿åäœãæ§é çã«äžèŽããŸãïŒã
è§£æã CI ã®ããã«ãã¹ã¯ãªãã / batchmode ãããåããšã¯ã¹ããŒããåŒã¹ãŸãã
var source = RecipeExport.ToSource(controller); // ãã¡ã€ã«ãäœããã³ãŒãã ãè¿ã
var diffs = RecipeExport.Verify(controller, source); // 空 = ãã®ã³ãŒãã¯å
ã³ã³ãããŒã©ãŒãå®å
šã«åæ§ç¯ãã
RecipeExport.ToDirectory(controller, "/tmp/recipes"); // ãããžã§ã¯ãå€ãž 2 ãã¡ã€ã«
RecipeExport.ToProject(controller, "Assets/Recipes"); // asmdef ãš Recipe ã¢ã»ãããŸã§ïŒãŠã£ã³ããŠããããåŒã¶ïŒUnity -batchmode -quit -projectPath P \
-executeMethod Yozolab.DaerD.Authoring.RecipeExportCli.Run \
-daerdController Assets/FX.controller -daerdOut /tmp/recipes -daerdVerify-daerdOut ããããžã§ã¯ãå
ãªããã«æžãåºããå€ãªã .cs 2 ãã¡ã€ã«ã®ã¿ãçç¥ãããšåã³ã³ãããŒã©ãŒã®é£ãžã
ä»ã« -daerdNamespace / -daerdClass / -daerdLayers a;b / -daerdNoAsset / -daerdNoAsmdef / -daerdMigrateã
c.Raw(controller => âŠ)â DaerD / Unity ã®å š API ãžã®ãšã¹ã±ãŒããããc.AsyncSync()â å·¡ååæããã«èšå®ããŠã£ã¶ãŒãã«ã¯ç¡ãæç€ºã¹ã±ãžã¥ãŒã« ïŒSchedule("Hue","Outfit","Hue","Tail")ïŒãŸã§æå®ã§ããŸãc.Gadgets("DBT")â DBT ã¬ãžã§ããã C# ã§äžŠã¹ãŠ 1 ã¬ã€ã€ãŒã«çæïŒåŒæ°ã¯ãã©ã¡ãŒã¿ãŒãã³ãã«ã§ãæååã§ãå¯ïŒc.Objects()â ãªããžã§ã¯ãã¬ãžã§ããã宣èšïŒ.Toggle("Hat").Shows("Head/Hat")âŠïŒã察象㯠ãªã³ã¯å ãã¬ããå ã®ãã¹ã§æžããçææã«å šå¯Ÿè±¡ãæ€èšŒããŠããçµã¿ç«ãŠãŸã â æ¬ ããããã° äœãäœããã«å šéšãåæããã®ã§ãå¥ãã¬ãããžç§»æ€ãããšãã® TODO ãªã¹ãã«ãªããŸãã ãã¬ããã«ã¯æžããŸãã
ã¬ãžã§ããã®ãã¬ãŒã 远跡
ãã«ããŒã¯åãã©ã¡ãŒã¿ãŒãå
¥åããäœãã¬ãŒã é
ããŠãããã远跡ããŠããŠãFramesBehind("Out") ã§
æžããŠããæäžã«èªããŸãïŒBuffer ã®æ®µæ°ãæã§æ°ããã«èšç®ã§ããïŒãåãä¿¡å·ãå¥ã®æ·±ãã§ 1 ã€ã®ã¬ãžã§ããã«
å
¥ããšãäž¡æ¹ã®å¹Žéœ¢ãšæ¿ãã¹ã Buffer åŒã³åºããåæãã§å ±åããŸããç¡é¢ä¿ãª 2 ä¿¡å·ã®å¹Žéœ¢å·®ã¯å ±åããŸãã
ïŒãã¬ãŒã æé à ã¬ãŒãã®ãããªãããããæãã察象ãç¡ãçµã¿åããïŒã.RequireAligned() ãä»ãããš
å ±åã§ã¯ãªãçææåŠã«å€ãããŸããçæã®ãã³ã«ãã®ã¬ã€ã€ãŒã»è£å©ã¬ã€ã€ãŒã»åºåãã©ã¡ãŒã¿ãŒã®åå空é
ïŒOut ãš Out/âŠïŒãæé€ããŠããäœãçŽãã®ã§ãäœåºŠ Generate ããŠãç©ã¿äžãããŸããã
ãšã¯ã¹ããŒãããã³ãŒãã®ãã¡ãããªãŒããã®ãŸãŸåºãŠèªã¿ã¥ããã¬ãžã§ããã¬ã€ã€ãŒã ããã¬ãžã§ããåŒã³åºãã« æžãæããããšããäœ¿ãæ¹ãã§ããŸãã
ãã©ã¡ãŒã¿ãŒã¹ãã¢ïŒVRC Expression Parameters ã¢ã»ãã ãŸã㯠Modular Avatar ã® MA Parameters ã³ã³ããŒãã³ãïŒãã³ã³ãããŒã©ãŒã«æç€ºçã«å²ãåœãŠããšïŒããŒã ç»é¢ã® Prefab Link ã«ãŒãïŒã ãããäºç®è¡šç€ºã»synced / saved ãã°ã«ã»å·®åãã¬ãã¥ãŒä»ãåæã䜿ããŸããæ€åºã¯ ãDetectãïŒã·ãŒã³ã®å®å šäžèŽïŒãšãScan & LinkãïŒãã¬ãããšããŠããååšããªãã®ããã¯çšïŒã® 2 æ¬ã§ãã©ã¡ããæŒãããšãã ãèµ°ãã®ã§ã®ããã¯çš Animator ã§ã誀çããŸããã
- ãã©ã¡ãŒã¿ãŒã®ã«ã¹ã±ãŒããªããŒã 㯠Expressions Menu å ã®åç §ïŒãµãã¡ãã¥ãŒã»ããããã® ãµããã©ã¡ãŒã¿ãŒå«ãïŒãžãæ³¢åããŸããã¡ãã¥ãŒã®ç·šéãã®ãã®ã¯ MA Menu ãªã©ã®é åãšããŠéæèŒã§ã
- Play Audio / Locomotion / Layer Control / Playable Layer Control / Pose Space ã®ç·šé
- Behaviour ã®ã¹ããŒãéã³ããŒïŒããŒã¹ããã¹ããŒãè€æ°éžææã®äžæ¬ç·šé ïŒçš®é¡ + ã€ã³ã¹ã¿ã³ã¹åã§æããŠè¡šç€ºããç·šéã¯åã Behaviour ãæã€å šã¹ããŒããžåæ ã æªææã¹ããŒããžã®äžæ¬è¿œå / å šåé€ / å šããŒã¹ããå¯èœïŒ
- PhysBone ç³»ãã©ã¡ãŒã¿ãŒãã¡ããªãŒã®äžæ¬ãªããŒã
ãã¹ãŠ VRChat SDK äžåšã§ãã³ã³ãã€ã«ã»åäœããŸãïŒè©²åœæ©èœã®ã¿é衚瀺ïŒã
ã°ã©ãåŽã®æ¢å®å€:
| ã㌠| åäœ |
|---|---|
| I / O / P | å ¥ã£ãŠããé·ç§» / åºãŠããé·ç§» / ç¹ãã£ãŠããé·ç§»ãã¹ãŠãéžæ |
| F / A | éžæããã¬ãŒã / ã°ã©ãå šäœããã¬ãŒã |
| M / T | é ç·ãM = éžæãé·ç§»å ãšããŠããŒã¯ãT = ããŒã¯æžã¿ â éžæãžæ¥ç¶ãããŒã¯ãç¡ããšãã® T ã¯ã¯ãªãã¯é ã«é£çµããã®ã§ã2 åéžãã§ T ã ãã§ç¹ãããŸã |
| â â â â | é£ã®ããŒããžéžæãç§»å |
| F2 / Ctrl+F2 | éžæããã¹ããŒãã»ãã¬ãŒã ã»ããŒãããªããŒã / ã¹ããŒãã®ã¯ãªããããªããŒã |
| Ctrl+C / Ctrl+V / Ctrl+Shift+V | ã³ã㌠/ 貌ãä»ã / ã³ããŒããé·ç§»ãæ°èŠãšããŠè²Œãä»ã |
| Ctrl+D | éžæã¹ããŒããè€è£œ |
| Ctrl+A / Ctrl+Shift+A | å šããŒããéžæ / å šé·ç§»ãéžæ |
| Ctrl+F | æ€çŽ¢æ¬ãž |
ã€ã³ã¹ãã¯ã¿ãŒåŽã§ã¯ Ctrl+C / Ctrl+V / Ctrl+Shift+V ãéžæäžã®é·ç§»ã»Behaviour ã«å¹ããŸãã
Preferences > Yozolab > daerD ã®ãããŒããŒãã·ã§ãŒãã«ãããã§å€æŽã»åå¥ã«ç¡å¹åã§ããŸã ïŒã°ã©ããšã€ã³ã¹ãã¯ã¿ãŒã¯å¥æ ãªã®ã§ãåãããŒã«å¥ã®åœ¹å²ãå²ãåœãŠãããŸãïŒã
- é圢ä»ãäžæ¬ãã©ã³ãžã·ã§ã³çæïŒSeededïŒ
- é·ç§»æ¡ä»¶ã®ããŠã¹ãã€ãŒã«æäœïŒæ¯èŒ / trueã»false ã®ãããã¢ããäžã§å転ããããå€ã®äžã§å¢æžã 1 å»ã¿ã»Ctrl 䜵çšã§ 0.1 å»ã¿ãInt ã¯åžžã« 1 å»ã¿ïŒ
- ã¯ãªããã® Loop Time äžæ¬åãæ¿ããçééæŽå
- ãã©ã¡ãŒã¿ãŒã®è€è£œ / ã³ã㌠/ åç §ãªããã / ã¯ãªãŒã³åé€ãAAP ãããžè¡šç€º
æ¥æ¬èª / English ãåãæ¿ããããŸãïŒPreferences > Yozolab > daerDãæ¢å®ã¯ã·ã¹ãã èšèªã«è¿œåŸïŒã
翻蚳㯠gettext ã® .po 圢åŒã§ Editor/Localization/<èšèªã³ãŒã>.po ã«æ ŒçŽïŒPoedit ãªã©ã§ç·šéå¯èœïŒã
æªç¿»èš³ã®é
ç®ã¯è±èªã®ãŸãŸè¡šç€ºããã.po ãä¿åãããšéããŠãããŠã£ã³ããŠã«å³åæ ãããŸãã
If I quit, MIT license will be removed from relevant products.
... Though this might change depending on how I feel :)