NeoSpark314 / BeepSaber

A basic implementation of the Beat Saber VR game mechanic in the Godot Game Engine for Oculus Quest (and other VR headsets)
MIT License
105 stars 32 forks source link

Multimesh Rings #20

Closed Firepal closed 3 years ago

Firepal commented 3 years ago

I've replaced the individual MeshInstance rings with one MultiMeshInstance with a script that sets up and animates the ring instances.

Animation is accomplished with one scripted "animator" Node for each ring. The MultiMeshInstance's script can tell these nodes to cause the ring to zoom or spin, and the animator node will animate its associated ring instance accordingly. See rings_multimesh.gd and rings_animator.gd

I also made a new extruded 3D ring model, i'd like to know how Quest 1 handles it. I'm experimenting with a shader for it that uses the same color as the floor lights, but the current event_driver.tscn gives no favors for ShaderMaterials as it uses Tweens for color animation, and afaik you can't interpolate set_shader_param, so the color never fades to black...

Firepal commented 3 years ago

I'm actually kinda unhappy with the spinning animation, all rings spin in unison at the same speed and i'd like to find a way to have all the rings spin elegantly like in the OG... ✨

Firepal commented 3 years ago

It looks better now I think. Although I cannot figure out how to make the easing spinning in rings_animator.gd framerate-independent, without resorting to just doing a pow() instead of scaling the rotation speed down every frame...

Firepal commented 3 years ago

Gonna merge this change with an update to SpectrumBar and make a new PR..