Skip to main content

Building the Shelf and Chairs

With the final submission looming closer, most of my effort was directed at replacing some hard-coded game-play functionality with dynamic data from the Builder and Finder systems (~3 hours), assisting my team with issues they encountered (~2-3 hours), and getting the shelf and chair ready to be built by the players (~8 hours).

The Builder and Finder systems still had a few hard-coded values from the Beta build of the project that were specific to constructing the table, so I worked on replacing those with the data that is contained in the instructions arrays that Priscilla and Maxime created this week.  I was initially have problems accessing this array before I discovered that JavaScript arrays can be accessed by string, which simplified it a lot.  Below is an example of the before and after of this process.


// Before
socket.on('setFurn', function (data)
{
    this.current = data.id; // Where data.id was always "table"
    this.step = 0

    // "tableTop" is the id for the first piece of the table.
    sceneEl.emit("setInstruct", { furn: this.current, piece: "tableTop" }); 
});

// After
socket.on('setFurn', function (data)
{
    // Get the instruction object for the specified id
    this.current = instructions[data.id]; 
    this.step = 0

    // Send the parts required out to the app.
    sceneEl.emit("setInstruct", instructions[this.step]) 
});

 In addition to this, I helped Priscilla and Max with some of the code they worked on.  The most notable was helping Max to add images to the snap-points by adding the image source to the templates array and reading it in through the 'spawner' component, which is something he discusses further in his blog.

Unfortunately a large chunk of my time was spent preparing the chair and shelf models for their placement into the game; far more than I anticipated.  Preparing the models for the Aframe environment involved manually creating the Aframe Physics bounding boxes and then manually placing each snap-point for every individual piece of the chair and shelf models.  Creating the bounding box for a piece involves finding the dimensions of the piece from the Maya file, and then translating these values into XYZ 'half-extends' that the physics system uses to create the bounding box.  Placing the snap-points then requires spawning all the pieces for a build, constructing the furniture in the Aframe Scene Inspector, then dragging a placeholder snap-point to the approximate positions that are required, and recording the position data in the template file. 
Although this was not challenging work, it was time-consuming and repetitive and it was slowed down occasionally when problems with the exported models or textures were discovered.

As we approach the final deadline the stress is mounting, but the worst is behind us, so all that is really left to do is hooking up the remaining systems, and implementing a player 'ready' system. 




Comments

Popular posts from this blog

Sprint 5 - Finishing the Furniture

This week, I completed modelling (4hrs) and texturing (7hrs) the furniture that will be used in the scene. It took longer than I expected because I had difficulty nailing down an art style while also working with new techniques in Substance Painter that I wasn't familiar with. A big challenge was finding a style that I really liked and understanding how to achieve that. My experience is more in realistic modelling and texturing where it's easy to see where things don't look right. However, with stylized pieces, it's up to my own interpretation. I'm also working with a very base, low-resolution mesh because I want to avoid creating too much detail through normal or height maps. The simpler, the better, but, the simpler, the less there is to work with. The grand solution in nailing down a flexible art style was through the use of ambient occlusion. By baking the same model over itself, I get an AO map, which already improves the look dramatically as it removes ...

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...

Catalogue, Sound Effects, JSON for Instructions

This week I updated the image for the catalogue and added it to the Living Room environment as an image plane (~2hrs). I am currently adding smaller clickable planes on top of it to represent the different furniture options to choose to build. A screenshot of this can be seen below. I also looked for some sound effects to use for user feedback (~2hrs) when pieces are combined together correctly, incorrectly, pieces are dropped, etc. These sound files have been added to the shared drive and will be implemented in the code in the next few days. Some example sounds can be listened to at the following links: https://freesound.org/people/NenadSimic/sounds/150879/ https://freesound.org/people/grunz/sounds/109662/ https://freesound.org/people/GabrielAraujo/sounds/242501/ https://freesound.org/people/kirbydx/sounds/175409/  I also worked on adding JSON for the builder.js and finder.js files to store the required information for the instructions (~1hr). An example o...