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

Controllers and Game-state Management

The two issues I worked on this past week were getting game-pad controllers working with our project (~6 hours), and general work on the game-state systems to iron out some of the kinks and add some more functionality (~3-4 hours).  Unfortunately neither of these tasks proved 100% successful due to some set backs. The game-pad controllers are so close to working, movement and look controls are fully functional, but I cannot get the Super Hands components to pick up the button events from aframe-extras.  The easiest way to see this is by looking at some code: <!-- Camera --> <a -entity id= "rig" movement-controls position= "0 0 0" > <a -entity id= "camera" camera wasd-controls= "acceleration: 125" look-controls= "pointerLockEnabled:true" position= "0 1.6 0" capture-mouse st...

Sprint 4 - Alpha Presentation and Furniture

This week, the team presented our proposal for our project as well as demonstrated the alpha build. In its current state, the living room and warehouse environments are at their most primitive states and will be developed further over time. In future plans, I will have to redesign the living room to allocate more space to the user. It's currently too small and claustrophobic, which makes it difficult for a VR user to have enough building space. I spent the days prior to the presentation polishing the design comps then producing OBJ files of the environments to insert into A-Frame. I did this by going back and forth between a-frame and Maya and resizing the scene until it was the ideal size. This way, Mitchell is able to simply drag and drop the obj into the project without having to tweak the transformations (~5hrs). Table Model with UVs Chair Model with UVs Shelf Model with UVs After the presentations, I began working on modelling the 3 pieces of furniture that pl...

Sprint 2 - 3D Modelling the Environments

This week's focus has mainly been on writing the design document and preparing for the alpha prototype (~2hrs). A great majority of the written sections in our proposal is complete while a large chunk of graphics remains to be developed in the coming week. The sooner the design document is complete, the better of an idea we have in how the project will turn out in the end.  On my end, I am responsible for 3D modelling the environments that will be used in the alpha demo. These are also necessary for producing design comps. The environments will be very low poly environments using primitive shapes and basic forms to form the rooms, nothing too extravagant. Below are a few screenshots of the environments in their current state: Living Room (~3hrs) that will be played in VR and the Warehouse (~4hrs) on desktop; all modelled in Maya. Warehouse Back Side Warehouse Front Gate Warehouse Top-Down View Living Room Back View Living Room Front View Living Roo...