Skip to main content

Adding the Models and Socket.io

This week involved touching on a few different systems to fine tune existing modules as well as create new modules.  Two components that had the most focus were replacing the primitive models with the GLTF models Max created (~8-10 hours), and separating the living-room and warehouse into two separate HTML files as well implementing Socket.io to allow player game-mode selection (~4-5 hours). The rest of my time was spent on smaller functionality like player speed tweaks and consolidating a-mixins for the for their data to be move to the object JSON file (~2 hours)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWbOzK0jaA6visJrl1eMlWexGo9_sXEfVXRq-MJq7oFLQAN2uS9SUfqsDVkjYKxb9AZtGsbt3jkSSuAYtvV9GV1sF8TDyjrK0Wb_9a0XUagH5gU5Z2EGpI2CUJHQW62cFXxqBD3_N5s6k/s1600/Alpha_Example.png
Alpha Table
Beta Table

Replacing the primitive chair pieces with their models proved to be far more difficult than anticipated, as usual.  The process should have just involved replacing the 'geometry' with the 'gltf-model' component and then adjusting the aframe-physics 'shape' components to create bounding boxes that fit the models, but there were some unexpected side effects.  First, since the shape component relies on 'half-extents' to create the bounding box, we needed to find the dimensions of each model in Maya and them to dimensions in Aframe.  The second issue I faced involved strange behaviours that the models exhibited when interacting with the physics system.  All the table legs behaved like they had very low centres of gravity and they could not be knocked over, but the table top was totally fine.  I eventually narrowed the issue down to the fact that the table leg model was not properly zeroed, so Max exported a new version for me.  Another issue with the models was that they were much more difficult to pick up and they oscillated when picked up and moved quickly.  This seems to have been mostly fixed by increasing the scale of the models, though it still occurs if the user quickly rotates the view while holding an object, so is something I am still working on.

Since we have two different environments that offer different gameplay I needed to separate the warehouse and living-room into two HTML files and then create a nexus room that allows players to select and navigate to either room. This meant I also had to recreate an normal HTML navigation link as an Aframe component.  As it turned out, this was quite simple:

AFRAME.registerComponent('navigate',
{
    schema: {
        url: { default: '' }
    },

    init: function ()
    {
        var data = this.data;
        var el = this.el;

        el.addEventListener('click', function ()
        {
            window.location.href = data.url;
        });
    }
});        

The next few days will be spent implementing the game system that will co-ordinate the two players as they construct the furniture. 

Comments

Popular posts from this blog

[WEEK 1] Introducing our project...

Our goal is to make a cool VR game for Design Studio 3. The main idea involves a collaborative asymmetrical experience to build furniture virtually. There will be two roles in this game: a finder (to look for furniture pieces in the warehouse), and a builder (putting the parts together). We started this project on January 22, 2020 and are currently on our first 1 week sprint of development.

Sprint 10 - Adding more boxes and lots of scripting

As the final submission draws near, lots of work has yet to be done. Due to time constraints and the lack of resources in light of recent events, we made the decision to cut down our scope by removing VR functionality entirely and focus on desktop-to-desktop connection fully. With new goals in mind, I spent the beginning of the week by adding all the boxes for spawning furniture components. To do so, I started by replacing the blue boxes we used previously with stylised boxes that match the environment better. To tell the player what each box contains, an image of the rendered component is placed on each side. The challenge here was that I wanted to avoid creating a GLTF for every single box because it would have slowed down the page drastically. The solution was to instead use a single, universal GLTF for every box and placed images on each side of the box as explained previously (~6hrs). New Warehouse Area - Added new boxes Close up of updated box - Bright colours and side

Storyboard and Physical Layout

I finished up on some graphical elements for the user interaction specification component of the proposal due this coming Friday. This includes the storyboard panels and the physical layout diagram. As I was researching Oculus Rift physical setups, I had to determine how many sensors we would need for our game. I believe that 2 sensors will be sufficient, since we do not need a true 360 degrees experience as the Builder player will primarily be focused on the 180 degree space in front of them (i.e. the fireplace, the TV, and building the furniture). Our game is not an action packed game with any running or shooting. Of course, the player will still be able to fully look around but they shouldn't have a great need to move in the other 180 degrees of space. This would also take into consideration accessibility to our game, because it costs extra to buy a third sensor (the Rift only comes with 2) as well as requiring adapters and wire extensions. I spent about 4 hours researching