# Gitting Gud ###### tags: `WebXR` 'Open metaverse' 'M3' 'git gud' ### Overview The metaverse has become a hot topic over the past few months. The focus has been on large corporations and platforms seeing huge buzz around the billions they are spending and the incredible appreciation in their crypto tokens. While the decentralized platforms have drawn huge attention and accomplished miracles in bringing the idea of the metaverse to a somewhat large audience, Facebook's rebranding has driven the frenzy. The mainstream now knows the word "metaverse" and has expectations of what it will be. Hundreds are articles have been written about Meta and the struggle with the open metaverse, but most have missed what I believe will be the foundations of the actual metaverse. For years, the homebrew metaverse has been built slowly and without attention by a small core of dedicated developers (wizards?). This development has happened in both native client worlds like VRChat and web clients like Janus. The webXR movement built on tools like A-Frame and Janus are the most exciting to me. They represent an evolution of the internet into the metaverse in a way that hundreds or thousands of native client platforms do not. They also represent a return to ideals that failed during the construction of the web2 ecosystem and the clearest chance to try again to create an equitable digital world. I personally believe that the combination of WebXR and web3 will be a large part of the foundation of the user-facing aspects of the metaverse while decentralized hosting like IPFS and Dfinity's Internet Computer will evolve to provide the networking back end. Even if one solution does not scale to meet the challenge, the lessons learned will lead us to a better outcome. Many people are skeptical of web3 and the chances of an open metaverse emerging to challenge the walled gardens of web2. I do not think Meta or Roblox has any hope to build THE metaverse, but there is serious concern over whether their business models will become the exploitative foundations of the metaverse. If nobody is there to challenge those business models then we will simply get a spatial continuation of web2 complete with surveillance capitalism and the attention economy. If we don't work to build the future we want to see then we absolutely will get something we don't want controlled by entrenched powers we don't trust. So, that's why I'm working on this. I've been working for a while now but the ever-helpful Jin has also made this metaverse developer onboarding checklist and I'm a sucker for merit badges so I decided to formally go through it. You can git gud yourself by following along: https://github.com/M3-org/git-gud ### Checklist - [x] Make avatar - [x] 3D Scan - [x] Optimize in Blender - [x] Create World - [x] Decentralized Hosting - [x] Promotion ### Step 1: Make avatar While I hopefully will have my CloneX by the time this is done, I started with making an avatar using VRoidstudio https://vroid.com/en/studio. VRoidstudio is a free to use VRM avatar creation tool. Avatars can be created from scrath or from a template. I am still optimizing mine and it has pretty generic clothes but did make the face from scratch. The hair is a template. I tried to make some from scratch but it is going to take a lot of playing to get good tat that. https://booth.pm/ja/items/3078012 ![](https://i.imgur.com/MeD2kSH.png) I haven't gotten to play with fashion in Blender but intend to work on custom clothing outside of VRoidstudio (added to to do list) ### Step 2: 3D Scan I used a Samsung S20 with ISO 200, speed 1/90, white color balance. Meshroom was used for the stiching and optimized in blender. The scan was taken at 3 different elevations. I do not have precise measurements but would think near 0 degrees, and +/- 30 degrees. The capture was done by hand. https://alicevision.org/#meshroom The subject is an oversized brachiosaurus toy my kids have, name Brachi. It took me 18 hours to create the model but I am using a laptop with an RTX2070. Picture of the point cloud being built: ![](https://i.imgur.com/kY7ypHm.png) The raw model stitched together in meshroom: ![](https://i.imgur.com/jGRsgnP.png) See Brachi there in the middle of that mess? ### Step 3: Optimize in Blender The original model was imported as a .OBJ. You can see what the model looked like in its original state more zoomed in than above ![](https://i.imgur.com/FThpJ6Z.png) Oh no! Brachi's head is a mess. This was probably too sophisticated a subject for a first experiment. Not sure what happened but my guess is that there were not enough overlapping photos at constant elevations of the head. I took like 280 pictures so that seems absurd but that's my guess. The original model altogether, including the room background mesh, was 163,354 triangles. The optimized model I did this very manually in the end. I tried to select the Brachi model, invert, and hide, but the export included everything. I'll play with that more in the future. In the end I just selected and deleted all of the non-Brachi vertices, which was actually much easier than trying to select every Brachi vertex. ![](https://i.imgur.com/IyO6LI2.png) At least the body looks ok. I think I'll put it in the distance of my home space and see how it looks. Final triangle count: 1,935. Once I loaded the models into the world I had the problem of them looking gray. ![](https://i.imgur.com/ZDHm5fl.png) Thanks to Bai's recommendations I shrunk the texture and it worked. Not quite as nuanced but still like it aside from the head: ![](https://i.imgur.com/UNNZ1Vg.png) ### Step 4: Create World The Github repo holding my world is located here: https://github.com/Griffisaurus/peronsalspace The world was created with JanusXR https://www.janusvr.com/ from a local build built from the 1.5.3.0 source code. Need to update to the newest version to take advantage of updated physics and Ready Player Me support. Right now it is very simple and not cozy. The first two were just imports of template rooms and I wanted to spend some time modeling my own house. I like the hexagon idea but don't like how exposed the single hexagon is. ![](https://i.imgur.com/wPKMeN2.jpg) ![](https://i.imgur.com/yxlzD7I.png) I have started making a model with a honeycomb shape but realize using extruded circles for the geometry makes it feel too ethereal and looks awful in world. When I have some time I am going to make the honeycomb modules out of cylinders to give them more weight. The stairs are also too artificial looking and collision meshes aren't working with them. Need to make them a separate object or get a model that Janus picks up as One last note, the skybox came from Vesta https://vesta.janusxr.org/bepis/day-template/fork The objects in the house came from Blenderkit https://www.blenderkit.com/ ### Step 5: Decentralized Hosting Check out my world hosted on IPFS with https://fleek.co/. Check out the finished product at my ENS address: https://griffisaurus.eth.link/ IPNS has some trouble so try this if it doesn't load: https://white-sunset-7274.on.fleek.co/ ### Step 6: Sizzle <iframe width="560" height="315" src="https://www.youtube.com/embed/AYrJExIM7VY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> ## To do - [ ] Optimize avatar hair - [ ] Make new avatar wardrobe - [ ] Update to Janus 1.5.3.2 - [ ] Make honeycomb housing more weighty, add to world - [ ] add audio system script to homeworld - [ ] Isolated gravity by hexagon structure? - [ ] Experiment with walkthrough photogrammetry - [ ] Experiment with Brachi more. See if I can get a good scan.