In a previous video, I'd made some low poly assets for Simple Asset Manager in Blender, I've exported them to Unreal, and test them out on the Sheffield map. I've not listened to the song I've used in the background, let's see how it sounds!
The music used is Underbelly & Ty Mayer - On Foot.
A rough breakdown of how I’m developing my Sheffield game in Blender and Unreal.
Today we’re going over to Arundel Gate; more specifically, the NCP car park. So let’s fly over there now.
The car park is an important building, because the streets parallel to it are at very different heights. Here we’re looking at Arundel Gate from the opposite direction of where we usually start the game – the car park would be around where the bus is on the left.
If we look at it from above, we’ll see that a lot of the rooftop area is a pedestrian walkway – there’s even the Tank nightclub that sits between the two buildings.
As a pedestrian, there are a series of stairs and walkways which take you to the lower level of Pond Street.
I’ll have a picture of that next, but I want to point out to you beyond the stairs in this old photo. [todo] This looks very different to how it does now; this used to be two nightclubs underneath the car park: Berlins Bar and Gossips, and the bridge at the forefront is no longer there.
Modern day, we clearly see the O2 Academy and how it is placed on top of the NCP car park.
Now, let’s have a look at the Sheffield map in Blender at the same area – the selected object is the Odeon cinema, which I now realise is out of proportion to the O2 Academy. In reality – the cinema is much smaller.
This video will be about modelling the NCP car park, and the roof area so that the buildings aren’t hovering – and aligning Arundel Gate and Pond Street to their respective ground levels. We can see it better in Unreal.
After some very rudimentary blockout, I want to load this in Unreal to see how this very basic shape looks.
In Blender, I select the NCP Car Park building, and File → Export – and I’m going to choose .fbx → Save it. Oh, yeah it crashed. I think it’s because the scene is too big; so what I’ll do this time is reload the project, select the building, and set the geometry to the object. Ctrl C to copy, and Ctrl N for New. And then paste it in with Ctrl V. Press NumPad dot(.) to jump to it to make sure it’s there. And then export to .fbx again.
Find the file you’ve just exported in its’ folder, and drag it into your Unreal scene. I have a folder specifically for buildings, so I’ll put it in there. From Unreal, drag from your Content Browser into your scene, and set the Location on the X,Y,Z to 0,0,0 so it snaps to the right place.
Have a look around, and change what you like; either by modelling in Unreal, or changing the file and re-exporting your model and reloading it into Unreal like we’ve done here.
Asset management is a big deal with Blender at the moment, there’s some great addons, like Blender Cloud and Chocofur to name a couple, but if I were to include that in my blend file, would I get into trouble?
I need to bear in mind this is the first sentence people see when this link gets shared. Anyway, I’ve gotten quite stuck into modding Assetto Corsa over the past week, the workflow I’m using for the Sheffield map is similar to that of AC: using reference data from satellite imagery and streetmap data, and importing it into 3D.
The Cadwell track, after a curious search to see if there is one available was placed on a ‘someones done this already, and done a fantastic job of it – so I don’t need to (yet!)’ list. Despite being a list with a very long name, it’s a very short list so far.
I decided to look for a track that I couldn’t find, something new – and that’s where two of the creative projects I’m working on coalesced.
I’d set out to use free and open source software to build a playable track in Blender – and while I didn’t complete that with Cadwell, it did put me on the right track to actually making usable race circuits. That’s what this post is about.
I went on a deep-dive of Indian motor racing circuits, and aside from the world-famous Buddh, I could find very little. This was the niche I was looking for.
I’ve started with the first other major circuit I could find, Madras Motor Race Track (Irungattukottai, Chennai) – and is one of a few circuits I have earmarked for a small India track and car mod pack.
For your benefit, I’ve written this with hindsight – so I hope it saves you some time!
The first part we see is after I’ve downloaded the .osm (OpenStreetMap file) from where I’ve selected the region of the track. I’ve used blender-osm to import the map data, and I’m now trying to figure out how to get it to run.
Once you have it imported, first thing I do is press 7 on the numpad in Blender to jump to Top view, and select the objects until you find the racetrack, and name it 1ROAD. Anything you name it after that (with no spaces) is entirely up to you. This is the track you will drive on.
I export the 3D file to .fbx and import it with ksEditor, part of the Assetto Corsa SDK, From here, allowing that my map is compliant, export it to the tracks folder in your Assetto Corsa directory. If you are using Steam, it’ll be in: C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\content\tracks
A quick way to do this is to find the folder of any track you like, copy it and paste it into a new folder with the name of your track, and change everything in your new folder to suit your level. Once you’ve exported your map to the .kn5 file format, drop it in this folder and make sure the file has the same name as the folder, and any textures you’ve used are in the tracks textures folder.
More to come
What I learnt
Everything needs a texture. If it doesn’t have one, it’s going to crash ksEditor
.dds (DirectDraw Surfaces) do not support layers. You can have transparency, but you can’t have multiple layers.
It’s best if your road is low resoultion mesh, high resolution imagery.
You will need Blender 2.7x Yes, going back to it feels like writing with your left hand, but the .kn5 exporter tool really is the best way of exporting your mesh. I found that using 2.9x and exporting to ksEditor only caused problems. Revert, revert to 2.7x, open the example track, and you’re on the way to a playable track.
Scale your UVs correctly I’d not scaled my grass textures correctly from high-res source photos, and the perspective it gave was that I was driving a car, but the size of an ant – each grass blade was the size of my car!
Make your track flat When I’d imported my track from my 2.8x experimentation with ksEditor, I’d solidifed the track so that it was 3D and had depth. I found though, when importing into 2.7x, hitting the side of the meshes depth sent the car into an uncontrollable spasm. The track has to be flat. 1 pixel (to the chefs amongst us, that’s one layer of onion skin).
If you use the example file from the Blender KN5 Exporter, use it as an example file, and then delete it When you playthrough, the intersection between the example racetrack, and your imported racetrack – it causes glitches will cause you to spin out, and fall into invisible potholes. It took me until Part 4 to realise this.
Use a UV grid. Google images ‘UV Grid’. Find a high resolution version, and apply it to everything. It makes a great placeholder image, and you can see exactly where to edit when you want to colour the texture.
No such luck, synapses are firing on all cylinders, I’ve cancelled an important VLC update for the sake of a screenshot, and now when I try to open anything with it, its only use is a strobe light.
When I run the game, I start at a 2:00 angle, which leads me to beleive that the empty to represent AC_PIT_0 is at a strange (or unsupported) angle.
While playing the lap from the OSM import, I’d timed that I was completing the laps in around 45 seconds, which is obviously ridiculously fast – so I scaled the track to be twice the size, and it now seems to work – and would probably make a good Drift track.
I’ve not completed a full track yet, because: – there’s no kerbs – the start position is on the grass – I’m quite sure that since I doubled the size of the track, the timer markers are in the wrong place.
So this area here is the pit-lane, and behind this would be the stadium area where spectators are sitting.
Continuing on from the Pitlane after this tyre ends is a wall with a glass divider, like the ones in the picture above.
By this point, the car would have re-joined the circuit, and the track above is part of the maintance route, which the Ligier Maintenance Vehicle from the video(s) above would drive on. Both barriers are solid walls with viewing windows above them.
I don’t know if that’s their real name, but they’re a prominent and majestic outlook onto the track. I clearly know which companies logo to find a hi-resolution image of, and aim towards something like this. Interestingly, the tyre is not where I would expect it to be from the screenshot above; which is odd, since the tyre bears the MRF logo.
My point for this is the two MRF towers just past the start-line, they’re 1x and 1.5x the size of each other, and the top floor is an actual viewing platform – so it’s a great place to put a camera (or two!). If you’re feeling creative, you could create a camera, and put a sofa scene infront of it to show people watching from their couch inside of their hotel room!
While it is possible to complete a track, the kerbs and run-offs are not in place to help with corners (and I ran most of the racetrack backwards, and was not penalised). This is next.
I’d been looking for a way to revamp the Sheffield map. ~~ Previously, my primary focus had been an FPS – but now I’m thinking about making it as racetracks for the beautiful Assetto Corsa.
I looked for some videos on the level editor, and there is Race Track Builder (currently £44.99, even amidst the Steam Summer Sale) Race Track Builder is interesting, because it uses map and terrain data from Google Maps, and you edit in the shape of the track using splines and curves, and export it to FBX format so that ksEditor can read the file and convert it to a map file usable ingame.
I took my Sheffield map (‘Here’s one I prepared earlier…’) – this was created by using the blender-osm plugin. I exported it the mesh to a .fbx file (a widely supported 3d model format) so that I could import it into ksEditor.
We at least know that ksEditor is at least reading the file structure of the FBX, and it appears to be compliant. Only thing is, this is a large map with a lot of buildings without textures. I need to start smaller, and I want to find a way to do it cheaply; we are after all a shoestring budget studio.
You’ll see a lot of content on this page which is produced with the blender-osm tool with the Sheffield map. I’m going to start smaller, but use the same process – I’m going to replicate a track I remember from my childhood days, family outings to Cadwell Park near Louth with my dad.
Not the chronological next day, but the second day where I can sit down and make progress: this project has been in my mind since I started thinking about it, so pieces of the jigsaw have popped into my mind.
I’ve gone around the objects and given anything that doesn’t have a texture in the map (aside from the road and ground) a UV grid texture, as a placeholder so that everything in the level is assigned one.
The missing files
ui_track.json This is various specific details you’re asked about the location of the track. This is the information that’s populated in the bottom left corner of the preview image below.
Map (Map.png) An outline of your map with a transparent background
Preview This is any image you’d like to use as the track preview. One way of generating this is to click the error message, and run the map – if it’s playable, you can press F8 to capture a screenshot and use that as your map preview. Since my track doesn’t run yet – I made a quick render in Blender of the track to use as a placeholder for now: you can now see it behind the layout.
Some of you may remember that some time ago, I made a vow to produce a music video for one of Sheffield composer, Skywatcher Music‘s tracks. Here’s a couple of little progress videos I’ve made centered around the orange Broadstadium3D models from 3D Warehouse.
Today, I finally completed the first, and actually had enough screencast footage for a second video, so why not?
The second video is all screencast, and starts with me completely breaking Adsetts Building (though I didn’t realise that’s what I was doing at the time) – in the preview image above, you can see that it’s too big and floating off the ground.
I want to share with you a bit about my process of how I work through the means of screenshots and explaining them:
Here I’m using an OpenStreetMap overlay of the area UV mapped to my Terrain object: to the top right, I have a UV image editor window and four faces selected on the mesh in front of the cathedral (orange). The Terrain while in this state is not curved and has no elevation, it’s completely flat.
To quickly navigate to any point in the map, I can select a single face from the 3D viewport, hover over to the map, press a to select all faces in the UV editor and NumPad . to jump to that point on the map, it also works vice versa, and the top right corner I can search for buildings by name.
From a lower view, having the building and street names on the ground is useful. Having a building levitate 15ft in the air, not so much.
There are some buildings you might not have seen yet, they’ve been imported and adapted from the Broadstadium3D libraries on 3D Warehouse: these will need retopologising and UV mapping with my own textures.
Here I’m finalising a composite of progress videos, backed to a Skywatcher Music track. Although the cut is slightly rough, I do hope to release this by the end of the night.
The bottom layer with the waveform is the audio for the video, the blue is video file, purple represents image sequences and the pink strips are speed modifiers, to speed up or slow down segments. This area can get very complicated.
This will download a zip file, open and extract it. It’ll look like this:
Look in this folder called model.dae
The textures don’t quite work….
…and then sometimes they do:
Using layouts from KMZ files is finickity in Blender. I’m only interested in the mesh itself, its shape, and I’ll completely retexture this myself. One reason being that .kmz files use textures from Google Street View, which, as an open-source project, I can’t (and don’t want to use Google imagery)
Fortunately, as you can see from this (largely upscaled) example of one of the image textures, there’s enough detail to paint over to produce my own textures.