Update: now has an auto-find-start-of-beat feature in settings!

This scene features a girl dancing infinitely, with smooth transitions between all moves. Legs and arms are animated separately, each with distinct transitions. Note that the girl in the video below is not the one actually in the scene. To keep the file size small, I included a generic female model in the var package. If you decide to change the model, make sure to adjust the height of the Slate and the Invisible Plane to ensure the new model stands firmly on the ground.

The background music is "Meizong - Phate," which is licensed for free use. You can also upload your own music to the scene. Click on "SET_BPM_AND_MUSIC_HERE" to select your music and set the BPM. After that, go to settings and click on "Find Beat Start." This will automatically find the exact millisecond where the music starts and sync the dance to it. Disclaimer: This only works with tracks that start on a beat (which is 99% of the tracks).

This project is a work in progress. Honestly, I have spent more than a year developing this scene through many iterations. Eventually, I wrote my own Python script to generate all the necessary state machine code. If you delve into this file, you'll grasp the complexity of its creation. I'm considering another overhaul of this scene using AcidBubbles Scripter, which was recently released. This upgrade would give me greater control over the animations.

Additionally, there is a settings menu that allows you to choose passthrough, enabling her to dance in your room—a really cool feature. If you don't use VR to view behind the girl, you can turn off the backlight to save some FPS. There's also an option to display the animation names, which I mainly use to identify suboptimal transitions. The animation workbench lets you debug specific arm animation transitions by overwriting the source and target animation numbers.

Please let me know what you think about this scene; your feedback keeps me motivated to continue working on it.

For future updates, which will probably take some time to implement, I am considering:
  • An automatic height scaler for the floor
  • An automatic "start of music" checker which automatically delays the animation start to match the music
  • An automatic BPM checker
  • Adding thoughts to the girl that depend on her state
  • Allowing the player to compliment the girl, which changes her state
  • Allowing the player to scold the girl, which changes her state
  • This would change the scene into some kind of "trainer" game
  • Enabling the girl to turn around

Author
pinosante
Downloads
6,435
Views
14,708
Dependencies
18
Packages
1
Total Size
7.32 MB
Version
1.3
First release
Last update
Rating
5.00 star(s) 9 ratings

More resources from pinosante

Credits

Creator Support Link
Acid Bubbles Acid Bubbles
Acid Bubbles Acid Bubbles
MacGruber MacGruber
NoStage3 NoStage3
ascorad ascorad
VAMFantasy VAMFantasy
AshAuryn AshAuryn
MacGruber MacGruber
JayJayWon JayJayWon
JayJayWon JayJayWon
hazmhox hazmhox
SPQR
hazmhox hazmhox
Sally Whitemane Sally Whitemane
PluginIdea PluginIdea
Acid Bubbles Acid Bubbles
AshAuryn AshAuryn
Jackaroo Jackaroo

Latest updates

  1. Added extra animations, fixed some animations and added auto-find-start-of-beat feature

    Added: a new leg "stepping" animation (E) a new arm "heart" animation (13) fixed some...
  2. Fixed dependencies some more

    I fixed the dependencies some more. Should now work without any errors if you auto-download...
  3. Fixed dependencies

    Fixed some dependencies in the package.

Latest reviews

this was really well done, thank you for sharing, also such a good use of VamStory plugin :)
pinosante
pinosante
Thanks! Yeah, the VamStory plugin is really cool to use for menu's and submenu's! :).
Upvote 0
I love it! I tried to make an automated dance scene using only cycle forces but I couldn't make multiple dances with smooth transitions. You did an amazing job!
pinosante
pinosante
Thanks for your kind words! I also tried working with cycle forces, but I found it challenging to ensure that the movements didn't suddenly become unnatural.
Upvote 0
I'm obsessed with simple yet organic dances in VAM. Most of my time playing VAM is messing around with different dance moves. But I was always too lazy to make proper transitions between different moves. I really appreciate your work here, as a follow creator I know how much time and effort is needed to achieve something like this. Shameless self plug, feel free to use any of the dance animations in my scene Club NTR. Maybe we can collab in the future :)
pinosante
pinosante
It's great to hear that you appreciate the effort that went into my scene :). I think we can both agree that smooth animations really enhance immersion, judging from your fantastic NTR scene as well. Thank you for your kind review!
Upvote 0
This what I was looking for. I have to agree with Star&Garters. With all of these great resources it may be very difficult to migrate to VAM 2
pinosante
pinosante
Agreed! Thanks for your review :).
Upvote 0
Although Googling the BPM of a song isn't too troublesome, I was thinking about another method for automatically detecting BPM. BPM is usually reflected in specific instruments in the music, such as the rhythm-controlling drums. So, monitoring specific frequencies at a certain threshold to calculate BPM might yield accurate results. For instance, by counting how many times the threshold is reached within a given time frame, you can calculate and adjust the BPM in real-time. This is similar to how I control lighting in a scene. Especially now, more songs are using variable tempo arrangements, though it's still uncommon. Regardless, the effect in this scene is great. Keep exploring; I will continue to follow and support you!
pinosante
pinosante
Thanks for your kind feedback, much appreciated! We think along the same lines, the last few days I have been exploring this BPM counting approach, but it's quite the challenge. I used the BeatIt plugin to monitor the 50 Hz frequency bandwidth, (also tried 25 Hz and all kinds of variations) but the problem lies in the fact that the signal is noisy. So it'll pass the threshold and then a few ms later, pass it again, due to the noise. So then I tried to use LogicBricks2 hysteresis pluging to account for the noisyness (and also tried using a up-motion value threshold together with a low-motion value threshold) but somehow it was still very hard to only get a pulse at the beat. If you want I can share the json in the discussion and you can maybe take a look at it? In theory this should work, I completely agree. In the end, I made a simple BPM beat tapper, where you can tap along with the music to determine the BPM. But this means a user is tapping for a few minutes to the music.
Upvote 0
I love good customizable dance scenes with synced lighting, and now we're going even further with synced dance animation transitions! So cool.

...who's even gonna' use VaM 2.0 at this point lol. Gonna' be such a long time to come back to the functional possibilities of 1.0, even if it is prettier/more performant.
pinosante
pinosante
Thanks for the kind words! I agree, I hope that when 2.0 arrives, we can port most of these plugins to it. Stuff like Timeline, MacGruber stuff, etc. So essential.
Upvote 0
This is an excellent research result.
I'm trying to do something similar, but it's so time-consuming that I've given up.
It is now possible to have each weight for each individual control in the acid timeline, so if you make good use of that, this field may evolve further.
pinosante
pinosante
Oh wow! I didn't know you could control the individual weights now. That's really cool. Yeah, and it's incredibly time-consuming. I mean, it says something when writing a Python script to automate writing the state machine code, is actually a time saver :). Thanks for the review and the tip!
Upvote 0
Man, this is really cool! The dance transitions are smooth but a little more variation would be nice. I liked the gaze feature of slut+ but the face she made was too much. Maybe try Expression randomizer for more subtlety to the expressions. The fact that you can load your own music in game is pretty special. I wanted that feature a while back for a mini-game scene of mine but couldn't figure out how to do it without scripting (which I really didn't want to do). And, you motivated me to figure out VR passthrough finally. I managed to kind of get it to work by changing background to black (in SteamVR w/ Valve Index), but that meant all black items in the scene were invisible. Still a cool effect to see the girl dancing in my room and maybe I'll eventually figure out how to use the green screen.
Oh, and one last thing, for some reason the first time I loaded, none of the menus appeared. But a quick reload (not even restart VAM) fixed it. Strange. There was a plugin I had to enable for the first time, so it was probably that. But I'm pretty sure it wasn't VAM Story which would be an obvious suspect.
Keep up the good work.
pinosante
pinosante
Agree that more variation would be nice. I have some more animations lined up, but it's quite the challenge to do the transitions. I'll look into Expression randomizer. Passthrough is really cool to get working. Regarding the menu not appearing at first, I think it's due to the onscene load plugin which needs to run first, but needs to be allowed to by the user. So the first time it runs, it will fail, since the user didn't approve it yet. Thanks for the review!
Upvote 0
Nice you inspired me to grab the VR Desk Top finally got to say best thing i have done lately lol
pinosante
pinosante
Yeah, pretty mind blowing isn't it :).
Upvote 0
I haven't had the time to try it yet, but this is a direction I've been wanting to explore for a long time. Using music's frequency bands combined with conditional gateway to control characters "automatically" dancing, much like controlling lights with music, is something I've been curious about. It's great to see that someone is already experimenting with this. If there were a solution to get music BPM in real-time, this could yield even better results. Unfortunately, it seems quite challenging to achieve this at the moment.
pinosante
pinosante
Yeah, this is doable. I've not done it in this release, because it took me more than a year to actually have smooth transitions and good animations working. But the way you can approach this is as follows: you could click on start the scene, and then "buffer" 8 beats of music. In these 8 beats the user has to wait, and then the animation starts. In the background, using the frequency analysis, and threshold logic (with Scripter this becomes very easy) you can then check if the 8 beats had beats, or no beats. Depending on this, you can *in advance* (since you scan this 8 beats ahead of the real animation) let the girl do a "break / bridge" animation when there is no beat, and choose a "dancing" animation when a beat is detected again. I've also tried setting a beat-light to the musicbeat, but to be honest that was not really working out well. I'd get double triggers at the same time, since the music generates continous output instead of true / false, so when the beat is greater than some threshold, sometimes this will yield two or more triggers for the lighting. So I feel that I can't really use that for dancing. Finally: the idea to scan the bpm in the music is theoretically doable, but it would involve running the script for 8 or 16 beats, in combination with the frequency analysis, to calculate the bpm. It's actually a really cool idea, but at this point not really worth it for me. It's easier to just use other software to determine BPM and then add it manually to VAM.
Upvote 0
Back
Top Bottom