# VMC in UE5 ![](https://hackmd.io/_uploads/H1DD8kp8n.jpg) ## Introduction - VMC protocol is an avatar motion communication protocol for virtual motion capture pioneered by VMC - It's functionally using OSC communication protocol to send avatar pose transforms for VRM avatars - Used by a wide range of VRM focused mocap/vtube solutions like TDPT, VSeeFace, MocapForAll, XR Animator, etc. - This write-up covers a specific VMC implementation to drive VRM characters in UE5. ## Approaches - There are 2 main approaches to accomplish this in UE5. - VRM4U https://ruyo.github.io/VRM4U/ - A great open source VRM import plugin for UE5 - Has a bunch of features, and one being VMC blueprints for driving VRM characters using EPIC's OSC plugin - https://docs.unrealengine.com/5.0/en-US/osc-plugin-overview-for-unreal-engine/ - VMC4UE https://github.com/HAL9HARUKU/VMC4UE - An alternative VMC plugin for UE5, using UE-OSC plugin - https://github.com/monsieurgustav/UE-OSC ## How to setup - This write-up covers the VRM4U approach, it's a lot easier to implement than the VMC4UE plugin and uses the official EPIC OSC plugin. - First, go to plugins in UE5 and enable OSC plugin - ![](https://hackmd.io/_uploads/HkGNzJa82.png) - Go to VRM4U plugin and install the plugin following instructions - Check out the VMC protocol map found in the VRM4U directory, usually in the "Latest" folder - Once in the map, it's pretty straightforward - All you need, is the VRMSimple skeletal mesh in your scene, then make sure the BP_VMCReceiver is also in the same scene - Make sure your receiving port for VMC protocol is set to your VMC sender - e.g. XR Animator is #35939 ![](https://hackmd.io/_uploads/S1Ltfy6In.png) - Make sure the skeletal mesh is using the ABP_VroidVMC_Bone animation blueprint - From there you're good to go, you can use the retarget functionality in VRM4U to runtime retarget to another imported VRM mesh using the VRM4U retarget anim BP - If implementing this functionality in a new map, just make sure there's the VRoidSimple skeletal mesh in the scene with the BP_VMCReceiver and if the VMC receiver is setup proper, it'll send the data to the VRoidSimple in the scene. - Here's an example of it working using XR Animator streaming to UE5.1.1 - https://twitter.com/i/status/1664713670797168644