It is more or less an experimental/exploratory project to see what is possible with Godot, I've been working with XR lately and wiring up the avatar (in this case, a Rexoulum avatar) and it's interesting that it works somewhat. There are a lot of things missing like for instance, nose twitch, breathing, and so forth, but slow and steady, I'm getting there.
#[WIP-Experiment] VRChat Clone
16 messages · Page 1 of 1 (latest)
Nice will be cool to see what you come up with!
Me too!
Things I got done:
- TCP Network Protocol (With Threefish encryption/hmac with Elliptic Curve Cryptography Key Exchange protocol set up in place, this is something I already wrote a while back and it works pretty well for my needs. For those wondering why I would use Threefish Cipher rather than AES-256, it eliminates the need for block cipher mode of operation and initial vectors.)
- GLTF File Export with working bones/blendshapes/materials (Embedded textures)
- Physics Working
- Breathing/Blend Shapes animation scripts working
Things I need to work on:
- Get body rigging to work properly
- XR Avatar Wiring with bones
- Learn more about the Skeleton3D in Godot
Essentially, the networking, dynamic scene synchronization and creation, and so forth are all doable from the get go. So I basically just have to set up a few ground rules on how Godot's version of VRChat works. If XRAvatar is working properly in a full sense, then we pretty much got an Open Source VRChat based on Godot.
Honestly, the coolest thing about this is, it essentially remove all of the artificial limitations of VRChat, but the trade off is that security can be chucked out of the window in this case, because anytime you load somebody else world, you're running whatever code on that world. Avatar though, it will be strictly on GLTF file format so that narrows down a lot of risks, not perfect, but not bad either.
Next to-do after learning a bit more about how Skeleton 3D in Godot are supposedly done:
- Make some basic animations for walking/running/turning cycle in Blender for Model
- Make an Active Ragdoll / Physics Animation in Godot: https://www.youtube.com/watch?v=0MHY2TDeMLM
- Map Left Controller Joystick to the movement of the Character
- Make sure left and right controllers are mapped to respective arms
- Headset to be mapped to head
If all goes well, I think I might have a shot at making this works finally
Just one more thing that VRChat doesn't have... Active Ragdoll
A couple things. Have you looked into the V-Sekei project? And have you visited MalcolmNixon's Youtube channel? If not I would recommend both!
I checked into MalcolmNixon's plug-in, and it is a good starting point for the player avatar. I had no idea about V-sekai project, I googled for it and found the discord server over there and their github:
https://github.com/V-Sekai/v-sekai-game
I never knew they had that project up...
Thank you for giving me ahead up on there, I've reached out to them and trying to learn more about their project.
Depending on how things goes, I may fold this project and join up on V Sekai Project, it's pretty impressive
My first step would probably to be writing a developer documentations for the overall nuances of the project.
Nice either way maybe you guys can share code somehow or maybe you still just do your own thing, seems like you got a lot accomplished already. Also you could look at the Mirror as well which just went open source and has only simple XR functionality, maybe the pieces you built / are building would slot in there as well. Have fun!
Couldn't share the model though (licensing), but I could share some of the codes I guess, but it's not even worth sharing tho, because it's so basic and simple. Such as timer elapsed loop for breathing blendshape which amounts to this:
static float breathingInc = 0.05;
public void OnElapsed(...) {
var blendshape = GetNodeFromScene("...");
var breathingVal = blendshape.GetValue() + breathingInc;
if (breathingVal >= 1) breathingInc = -0.05;
if (breathingVal <= -1) breathingInc = 0.05;
blendshape.SetValue(breathingVal);
}
Mostly been working on the model itself for making sure it works with Godot with animation/skeleton exported properly
And to research/experiment Skeleton3D/IKSkeleton3D
Godot seems to have most of the things handled, I could share network protocol and etc