The UK appears to have come to terms with the lockdown, recognising it was not a decision taken lightly, given the impact on the economy. Here in leafy Chiswick, our team has risen to the challenge of remote working and productivity has soared. This was our week in isolation.

Toby – Leading from Home

I’m conscious that these diaries are very focused on our technology, the technical processes and the details behind the solutions we produce. That’s the very reason we’ve asked our developers to write these. However, what’s absolutely the single most important reason for the work we do is the real-world benefit of it. Our focus is always on what’s best for our client; what is it that we can do to achieve the outcome they’re looking for in real-world terms?

Indeed there have been numerous times, over the past few years, when I’ve found myself recommending approaches not necessarily within our wheelhouse; ways of achieving a client’s objectives that are unrelated to immersive technology.

We have all sorts of projects going on now. We have, for example, the Eyes and Ears, Driving Simulator, and Traffic Officer VR that regular readers will be familiar with. Also coming through now, are solutions for events that can’t be held in traditional ways during the COVID-19 pandemic; the challenge laid down for us here by clients is how closely they can replicate a physical show or conference in the digital world.

First and foremost the one thing that can’t yet be recreated is the personal contact that is obviously so valuable but, let’s face it, isn’t happening right now anyhow. So this is an opportunity to explore what you can unlock with a virtualised event; endless possibilities with regards to content, content that can be changed on-the-go, interactive conversations and demonstrations, way more scope in terms of settings, and levels of information and data collection that can’t be replicated in the real world.

Of course there are huge financial savings with people not travelling and hosting, the cost of stands, the cost of presence in the exhibition halls, smaller carbon footprints and so much more. Finally, and really importantly, are the CSRE benefits. It amazes me the amount of waste involved in participating at physical conferences and events with those hugely expensive stands being single-use, the carpet being binned, and of course the environmental cost of attending these things.

So virtualising an event is, of course, different and quite a jump to make in one go, but arguably it can be far more cost-effective and, actually just as effective.

Josh – Programme Manager

The focus this week was on the iteration/change period of our ‘Eyes and Ears’ project that I talked about last week. Everything has come together really well and the items we considered for improvement were well worth getting done – it’s been shipped to the client and we await feedback!

Elsewhere, I was helping the same client with the script for the next scenario (3rd) in the solution, called Vulnerable Customers. It focusses on a customer that for whatever reason has found themselves walking along a hard shoulder of the road network.

This is a situation that all traffic officers will be faced with and we’re aiming to help them handle such a situation with compassion and empathy. The script has now been approved and I’ve drawn up the solution design document, which we’ll get to work on drawing up a backlog of tasks so we can commence production straight away.
The rest of my week was spent covering off the items from our previous retrospective. Namely improving the quality of our documentation and the speed of our Quality Assurance process. I’ve incorporated a new document style to all of our current projects and templated more for future projects.

The QA process is quite an enjoyable problem, from a bug perspective it holds up well. The issue is how we minimise our time spent undertaking admin in the QA process, to ensure we spend more time on core work. So far we know we want to incorporate more automated testing and improve the workflow between our various tools – basically if it moves we automate it.

We use Gitlab for version control and Atlassian for issue tracking, which can be a problem as the two are competitors somewhat, so their integrations out of the box are not perfect. We think a custom MXT API might streamline the process significantly so Cat and I have been going through their documentation and writing a specification..
Next week alongside scenario 3, we have a vehicle checks experience to kick-off and the mixed reality component of the Driving Simulator to start. I’m sure there’s more, but that’s it for now!

Cat – Lead Programmer

This week I’ve mostly been trying to optimise how we pull our work together. As part of this, we have a server to produce automated builds of our solutions which we then test to ensure quality and robustness before approving them into the main development stream. It’s worked well, but because every build requires a full compilation and subsequent upload to the cloud (we’re making VR solutions, so builds aren’t fast or small), builds ‘stack up’ on top of each other in the pipeline, which delays work being tested and subsequently integrated into the project.

After having a meeting on the matter with the team, we found that the system was actually producing a lot of unnecessary builds – wasting time, storage and computational horsepower. Instead of making a build every time a developer sends some work to the server, I modified the build script to only make builds under certain conditions.

By making use of Gitlab’s work-in-progress merge requests, we can automatically signal when a particular feature is ready for testing and only produce builds if that’s the case. We’re confident this will improve things!
I also finished off my work organising our packages, with a final solution making use of Unity’s asset package system. This allows us to work on packages in the same manner as we work on our solutions, with them being automatically versioned, built and uploaded to a central location we can all access them from.

I’m expecting this will make bootstrapping new projects much easier, as including packages is now as simple as downloading them from Gitlab and dragging them into the project, without having to fiddle with Git submodules or Unity’s package manager.

Sergio – Programmer

This week, I have been collaborating with our team to deliver a major part of one of our ongoing projects and to finally lock down any existent features. In retrospect, this was a very challenging piece of work which every member of our team has spent months designing, developing and improving.

We started from our daring curved world system where our infinite motorway could be segmented into modular pieces and bend to any direction and angle in real-time. The hazard system followed, which users can detect or miss, creating a reaction effect where a customer on the road would complain. There were many ways we can create those logics and with what we know today, potentially some of those could have ended up better and some worse.

The speed of change in our technology ensures every day and every project is a constant learning experience that drives us all to surpass our clients’ expectations and indeed our own.

Slava – Lead 3D Artist

Our plan for this week was to make 5 different new cars for traffic, so I worked on two models and to maintain diversity of shapes, I decided to do two quite distinct cars, Nissan Leaf and Suzuki Jimny. The first is a sleek modern shape and the second a typical off-road car, both shapes missing from our asset list. As I already gained some experience in adapting this type of low-poly models for our projects, this work went smoothly and I was really happy with results.

I also spent time improving the interior of a Mercedes, which is important for aspects of the finished project when a user is sitting inside customer car. I added some 3D details for this interior as it was too flat. And the last important task was adjusting the colours for all traffic cars.

We are changing car body colour via script, which requires each car to have a list of colours typical for that particular model and I created these lists and tested how each colour looks in game mode – often these colours need tweaking to appear realistic in an immersive environment.

Stefano – 3D Artist

This week I started with some sound design, mixing and editing different sounds to obtain a single clip that mimics the sensation of being in a car while driving through a big puddle – it’s all about the detail. Firstly, I searched for the exact sound on the internet, but when I couldn’t find anything suitable, I set to creating it from scratch, with sounds from different sources, like a big ocean wave, which had the right sort of base notes and I could modify to suit my puddle!

I applied a filter in Adobe Audition that allowed me to reduce the higher frequencies, giving the impression of the muffled sound from inside the car. Then I boosted the lower frequencies to achieve the effect of the trembling bass sound caused by the pressure inside the car. This effect should give a physical sensation of presence, but it can only be perceived using good quality bass headphones.

Notch filter – the peak on the left side of the graph gave me the bass trembling effect
For the rest of the week I mostly improved my 3D rigging to speed up the process and helping with quality assurance, along with creating video walkthroughs of our updated projects.

Kyung-Min – 3D Generalist

This week was full of ups and downs, but most importantly the team learned many lessons that only strengthen us going forwards. We brought one of our sub-projects to a close and as always it was fun to see it come together.

With the introduction of better management regarding performance cost across the board, a lot more changes could be made to improve the visuals of our experience overall. Sergio undertook a deep-dive into the impact of different elements, allowing us to pinpoint and improve the biggest drawbacks. Most we already knew were issues, but some big surprises were revealed and with these metrics, we could plan changes and what needed our focus.

Continuing my rain shaman duties, I used particles for the cars as they drove over a wet motorway. Tuning the effects to look good in VR proved to be an interesting challenge but I also spent time making improvements to the realism of the rain. With a smaller stream of water and droplets on the windscreens, applying bigger textures but smaller details proved to be more aesthetically pleasing. Because of the angle of the lights, the water would not show up and so I had to create an illusion by making the droplets themselves emit light, then counter it with a stronger normal map. The effect worked well and I was pleased with the results. Even with the freed up frame a lot of work never made it through to the final build but this is something I’m accustomed to. There’s always space to improve and that’s always our intention.

Jordi Caballol – Programmer

This week I’ve been focused on performance. Our infinite runner uses a smart trick: instead of having three versions of everything (a straight one and one curved to each side), we curve everything when painting it. This trick however has a heavy impact on the performance as to have the objects in the right place and with the right curvature, we had to supply a lot of data for each of them. When we added all the trees and objects around the road, all this data caused a significant drop in performance.

During the week I worked on a new algorithm to achieve the same result. This algorithm utilises a different approach on obtaining the necessary data, with every object responsible for find its own data, without us having to be setting it explicitly.

Now we can deliver the level of detail that guarantees a realistic immersive environment for users with no drop in performance, we can add even more detail to improve the visuals and ultimately the experience of our clients’ users.