MMD OGB can be added to your world in several ways, ranging from easy to technical, depending on how much control you wish to have over the experience.
⚠️ These instructions were written with little sleep, so if you run into anything that’s confusing let me know so I can clarify things further c:
Adding to a VRC world.
Via VRCStation
This is best for MMD Worlds.
- Go to the Assets/MMDOGB/Prefabs folder.
- Select the MMDOGB_VRCStation prefab.
- Drag this prefab into each of your VRCStations.
- Now choose an Interaction Method from the ones listed below.
PlayerDetector uses a VRC Contact Receiver to detect a player has entered the station. This turns on the Engine and the Motors.
Engine uses a script to reference the AudioLink Controller, it reads the AudioLink audioData on every Update() and changes the position of the Motors to control the vibrations sent to each device.
The Player’s contact receivers are turned on when they are in a VRCStation.
Interaction Methods
This is the easiest but isn’t as accurate since songs have a lot of variety in their AudioLink output. However, this also lets the user control the strength of the using the Gain slider.
To set this up:
- Expand the MMDOGB_VRCStation prefab
- Select the Engine gameObject
- In the Inspector Window, fill in the reference to your AudioLink Controller
This takes work but can be more accurate, since the experience can be curated per song.
■ ■ ■ ■ ■ ■ ■ ■ ■
Requirements:
■ ■ ■ ■ ■ ■ ■ ■ ■
AudioLink https://github.com/llealloo/audiolink
VRCWorld SDK
Recorder: https://docs.unity3d.com/Packages/com.unity.recorder@2.5/manual/index.html
Recorder can be installed via Unity Package Manager
■ ■ ■ ■ ■ ■ ■ ■ ■
Record Procedure:
■ ■ ■ ■ ■ ■ ■ ■ ■
Open the Recording Scene located in Assets/MMDOGB/AudioLink Recording
□ □ □ □ □ □ □ □ □
In Hierarchy
Expand DragMe2UnityRecorder
Select Audio gameObject
Add song to AudioSource:AudioClip
□ □ □ □ □ □ □ □ □
Open Recorder
Window -> General -> Recorder -> Recorder Window
Uncheck “Exit Play Mode” (recommended)
- Add Recorder
Animation Clip
Note: Input gameObject gets removed by VRC Build, no need to set yet.
□ □ □ □ □ □ □ □ □
Enter Play Mode
□ □ □ □ □ □ □ □ □
In Hierarchy Window
Drag “DragMe2UnityRecorder” into Recorder Input gameObject
In Hierarchy Window, select Audio GameObject
In Recorder. Start Recording.
Turn on Audio GameObject
□ □ □ □ □ □ □ □ □
As the song plays, if Motors are too strong or weak…
Adjust Threshold settings via Controller gameObject
□ □ □ □ □ □ □ □ □
Goal: Motors should only be maxed out on strong beats or long notes.
Motors should all move at least slightly unless if the song really doesn’t have instruments in that band.
Please listen through entire song to make sure motors are adequately adjusted.
You can disable/enable the Audio gameObject to restart the song.
□ □ □ □ □ □ □ □ □
In Hierarchy Window
Select Controller gameObject
Threshold settings are located in Inspector Window
Lower Threshold = stronger motor
Higher Threshold = Weaker motor
0 = Red
1 = Yellow
2 = Green
3 = Blue
⚠️ Do not adjust Hit Fade.
Hit Fade adjusts how responsive the Motors are, however
OSC has a delay and therefore you won’t really see much benefit.
⚠️ Do not adjust Gain Value.
Leave this for the end user to adjust so they can control the strength/Frequency of their Motors.
□ □ □ □ □ □ □ □ □
Re-start the song as needed by toggling the Audio gameObject on/off.
Stop recording when satisfied.
■ ■ ■ ■ ■ ■ ■ ■ ■
File Preparation
■ ■ ■ ■ ■ ■ ■ ■ ■
Open Output File
□ □ □ □ □ □ □ □ □
Remove Properties with no data (optional)
Delete all Animation Keys from before the Audio Data is turned on.
Move all remaining Animation Keys so that they start at the beginning of the animation file.
An Example Finished Animation is included in the MMDOGB/AudioLink Recording folder
□ □ □ □ □ □ □ □ □
File should look similar to “Example Finished Animation” file located in Assets/MMDOGB/AvatarDumy
■ ■ ■ ■ ■ ■ ■ ■ ■
Test
■ ■ ■ ■ ■ ■ ■ ■ ■
Open “AvatarDummy_AC” Animator Controller located in Assets/MMDOGB/AvatarDumy
Drag your Output File into Animator Controller
Right-Click Node, Set as Layer Default State
Enter Play Mode
Avatar Dummy should show motors moving.
■ ■ ■ ■ ■ ■ ■ ■ ■
Insert into MMD World
■ ■ ■ ■ ■ ■ ■ ■ ■
Select the Animator Controller for your song in your MMD Project
Same Controller where Viseme and Motion data is stored
Add a Layer
Set Layer Weight to 1.0
Drag your Output File into Animator Controller.