These look absolutely fantastic! I’m in awe. I’m an intermediate Maya user and am just now getting into Blender. I have searched for what seems like an eternity for ways to create truly realistic 3D roads and intersections. I’ve been following various tutorials on YouTube and have been trying different methods with varying levels of success, but I still haven’t found the perfect way to achieve what I’m wanting. Your site is the first I’ve seen where I feel like this is genuinely possible with Blender.
I’m currently working on a passion project which is to develop a 3D racing game in Unity. Modelling true-to-life city/street-based courses is one of the primary focuses of the development. If you’ve ever played much of the Burnout series (1-3), these are the sorts of environments I’m looking to create.
I was wondering if you had any in-depth tutorials on how to make these complex city roads with curves, lanes, intersections and most importantly, road markings? I saw your sped up video, but since I’m a Blender newbie I found it quite difficult to follow along 🙁 Alternatively, if you’d be interested in teaching me a few things here and there via email, I’d be eternally grateful 🙂
Anyway, fantastic work here. Keep up the good work!
Hello James. Everything is possible with Blender, it is just a tool which allows you to all you can do with other modeling software, sometimes even faster due shortcut support and many clever features. Personally I would prefer Blender even it is not free because I enjoy modeling using this SW so much! And new version 2.8 will be even more capable, especially for preparing assets to modern game engines (due it’s advanced realtime viewport capabitilies).
To modeling & texturing roads – I think it depends on the target game engine, if it for example allows to blend textures, the process would be different than mine, seamless texturing was what took me the most of the time. In the case of old game like RBR where only simple mapping of diffuse textures are allowed, it is all about good textures (that “fits” together graphically) with combination of hiding seams using Vertex Slide (Shift+V or double G, don’t forget to turn on “Correct UVs” option).
You just need to make vertically seamless base texture (simple tarmac) and then create variations by adding details like different lines on top of it. This way you can be sure textures can blend together. Also make sure that every details should be very subtle to avoid visible repeating (patterns).
But of course if you are making some more complex intersections, it is still a lot of manual work – always start with the main parts (model sections with “stripes” where cars are driving), then fill the rest with those parts of the road texture so seams are not so much visible.
Road markings – arrows – are just simple polygons overlays, I am using ShrinkWrap modifier for this purpose – it keeps all these overlay polygons above road surface.
And just a tip – if you are texturing using Photoshop, it is VERY handy to keep every texture in separate documents and place them to a final texture using “linked document” – this way it gets auto-updated whenever you make changes to your textures.
I know it would be better to make a video tutorials but I have not so much time at the moment as I want to finish my track as soon as possible. But if you need some specific help, I can demonstrate the solution on some quick video.
Good luck with discovering Blender – if you dig into it a little, I am sure you will start enjoying it as me 🙂 And of course stay tuned for next news 🙂
Thank you so much Jan. It’s only been a few days and I’m already starting to get the hang of Blender and I have to say I’m really enjoying it. Hotkeys and potential speed in workflow are what I believe set Blender apart from Maya and other software packages. I have sent you a small donation as a thank you for all the information you’ve shared on your website, and of course I cannot wait to see your finished product 🙂
I tried making an intersection from a Google Earth screenshot for practice. Here are some images:
I know there are some glitches and distortion in the texturing here and there, but I am making progress 🙂 I’d love some feedback on the mesh quality / texturing.
I have really enjoyed reading all your posts and I’m learning a lot from just looking at the images you’ve shared. They are really inspiring me. My game will feature fictitious tracks, but based on real-life roads.
One thing I haven’t yet cracked is making a good texture map. I LOVE the one you created; it looks absolutely brilliant. I can’t seem to find a way to group all my textures together in the right layout to make the most of the UV space. Initially I was going to have one big texture for a single double-sided road, but I see you not only don’t do that, but you only use about a quarter of the texture space I use, yet your roads show barely any signs of tiling. I’d love some more advice for laying out one large composite texture for creating any type of road. Thanks for the Photoshop tip – I will definitely put that to use.
Another thing I wasn’t sure of is the vertex slide feature – what’s it for and how does it work? I know you told me it helps hide seams, but it doesn’t seem to work in the UV window. Maybe I am being stupid haha 🙂
Hello James,
thank you for your donation! As I have this project as my priority at this time, it helps me a lot!
First I should say I am not sure if my methods are the best ones. This track is my first try and many results I achieved here are product of try & error approach. But the same as you I was not satisfied with any example and tutorials on this, so I decided to find some working method by myself. I also got very handy tips from experienced Richard Burns Rally modders like http://trackbuilding.blogspot.com
Also I am not sure if that uneven mesh on intersection won’t make some shading issues in modern engines where specularity / normal mapping effects are supported. I just test my model in old RBR where there is only simple diffuse color supported so the only problem I have discovered is that I will have to subdivide the ground mesh to achieve proper ground collision (graphics model is different from the one used for collisions), otherwise a car would fall through those large polygons. But it is perfectly OK because the collision mesh density does not affects game performance much.
I think your roads are fine, maybe I would tune your texture a bit. I would definitely make it longer – you need it long to avoid repeating. Always make it as high-resolution as possible because you can always reduce it, but not enlarge. As a general rule, I think the key is to make the texture very subtle to avoid visible repeating and seams, but at the same time it should have some road-specific details like little stones, some grunge, stripes from wheels, dirt on borders, you can also add grain filter on top of everything to make it more rough (I use this). Try to keep all of these as separate layers and smart-objects so your work is not destructive, use Offset & Clone tool to make every of these layers seamless… then try to tune opacity / transitions of the layers to get nice final texture. Test your texture directly on some piece of road model, look at it from a driver’s view point & orthographic view (5 on NumPad) to see how much the repeating is visible. In Blender, you can use your PSD as a texture for these tests…so you don’t have to export it everytime you change it.
From my experience it is very important to have this base road texture really fine-tuned and not continue if you are not completely satisfied because you will be adjusting your intersections to it. If you make any radical changes on that texture later, you will have to adjust all your road models accordingly…
I really didn’t make any road textures before making this track so in my case I just spent a lot of time to fiddling with it, there is no simple magic method which would guarantee good looking texture I think.
Vertex Slide – it allows you to move vertices without stretching model’s texture. You can fine-tune your mesh this way and reduce seam visibility on some areas. I made a video for you here:
Feel free to ask if you need a help with some specific tasks 🙂
Thank you once again for such a comprehensive response and for the video.
A-ha! Now I understand the vertex sliding… that’s perfect. I often UV map my stuff and end up wanting to shift vertices around but have to simply put up with the distortion created as a result. This will help me get around that.
I have created a new higher-res road texture, which I turned into a sort of template. I created a set of different line markings, each on their own separate layer, and using this method I’m able to swap out the asphalt surface with anything I want; this way I can make loads of different types of roads, but have the lines/details (and therefore the UVs) in the exact same place. This makes for easy switching in between different textures. Each road piece is 512×2048, and the entire texture is 8192×2048. I wonder if that’s enough? Anyway, here’s a little preview: https://s25.postimg.cc/6xrmmon8f/texturepreview.png
You might notice that the white middle road lines are offset slightly so the entire line occurs once on one side of each ‘piece’ of road. I had too much trouble by splitting the middle road line between two polygons – I’d either have perfectly horizontally mirrored textures on the rendered road mesh which looked weird, or if I’d try to mix and match different parts of the texture together, the lines wouldn’t match up. I probably didn’t explain that in the best way, haha. Hope it makes some sort of sense…
Anyway, I’d love to continue the discussion further by email. There are a lot more things I’m very interested to find out more about your road UV mapping process. Your intersection speed-modelling video has been a great help and I’ve learned a lot, but I’d love to see some specifics on how you create those prefab road pieces, and how you map them so there isn’t any tiling. Is it just long textures, or do you swap / mix / match parts to break the repetition?
These look absolutely fantastic! I’m in awe. I’m an intermediate Maya user and am just now getting into Blender. I have searched for what seems like an eternity for ways to create truly realistic 3D roads and intersections. I’ve been following various tutorials on YouTube and have been trying different methods with varying levels of success, but I still haven’t found the perfect way to achieve what I’m wanting. Your site is the first I’ve seen where I feel like this is genuinely possible with Blender.
I’m currently working on a passion project which is to develop a 3D racing game in Unity. Modelling true-to-life city/street-based courses is one of the primary focuses of the development. If you’ve ever played much of the Burnout series (1-3), these are the sorts of environments I’m looking to create.
I was wondering if you had any in-depth tutorials on how to make these complex city roads with curves, lanes, intersections and most importantly, road markings? I saw your sped up video, but since I’m a Blender newbie I found it quite difficult to follow along 🙁 Alternatively, if you’d be interested in teaching me a few things here and there via email, I’d be eternally grateful 🙂
Anyway, fantastic work here. Keep up the good work!
Cheers,
James
Hello James. Everything is possible with Blender, it is just a tool which allows you to all you can do with other modeling software, sometimes even faster due shortcut support and many clever features. Personally I would prefer Blender even it is not free because I enjoy modeling using this SW so much! And new version 2.8 will be even more capable, especially for preparing assets to modern game engines (due it’s advanced realtime viewport capabitilies).
To modeling & texturing roads – I think it depends on the target game engine, if it for example allows to blend textures, the process would be different than mine, seamless texturing was what took me the most of the time. In the case of old game like RBR where only simple mapping of diffuse textures are allowed, it is all about good textures (that “fits” together graphically) with combination of hiding seams using Vertex Slide (Shift+V or double G, don’t forget to turn on “Correct UVs” option).
You just need to make vertically seamless base texture (simple tarmac) and then create variations by adding details like different lines on top of it. This way you can be sure textures can blend together. Also make sure that every details should be very subtle to avoid visible repeating (patterns).
But of course if you are making some more complex intersections, it is still a lot of manual work – always start with the main parts (model sections with “stripes” where cars are driving), then fill the rest with those parts of the road texture so seams are not so much visible.
Road markings – arrows – are just simple polygons overlays, I am using ShrinkWrap modifier for this purpose – it keeps all these overlay polygons above road surface.
And just a tip – if you are texturing using Photoshop, it is VERY handy to keep every texture in separate documents and place them to a final texture using “linked document” – this way it gets auto-updated whenever you make changes to your textures.
I know it would be better to make a video tutorials but I have not so much time at the moment as I want to finish my track as soon as possible. But if you need some specific help, I can demonstrate the solution on some quick video.
Good luck with discovering Blender – if you dig into it a little, I am sure you will start enjoying it as me 🙂 And of course stay tuned for next news 🙂
Thank you so much Jan. It’s only been a few days and I’m already starting to get the hang of Blender and I have to say I’m really enjoying it. Hotkeys and potential speed in workflow are what I believe set Blender apart from Maya and other software packages. I have sent you a small donation as a thank you for all the information you’ve shared on your website, and of course I cannot wait to see your finished product 🙂
I tried making an intersection from a Google Earth screenshot for practice. Here are some images:
https://s25.postimg.cc/hiczxvwcf/intersection-1.png
https://s25.postimg.cc/ea8ilfa8v/intersection-2.png
https://s25.postimg.cc/ldge11ne7/intersection-3.png
I know there are some glitches and distortion in the texturing here and there, but I am making progress 🙂 I’d love some feedback on the mesh quality / texturing.
I have really enjoyed reading all your posts and I’m learning a lot from just looking at the images you’ve shared. They are really inspiring me. My game will feature fictitious tracks, but based on real-life roads.
One thing I haven’t yet cracked is making a good texture map. I LOVE the one you created; it looks absolutely brilliant. I can’t seem to find a way to group all my textures together in the right layout to make the most of the UV space. Initially I was going to have one big texture for a single double-sided road, but I see you not only don’t do that, but you only use about a quarter of the texture space I use, yet your roads show barely any signs of tiling. I’d love some more advice for laying out one large composite texture for creating any type of road. Thanks for the Photoshop tip – I will definitely put that to use.
Another thing I wasn’t sure of is the vertex slide feature – what’s it for and how does it work? I know you told me it helps hide seams, but it doesn’t seem to work in the UV window. Maybe I am being stupid haha 🙂
All the best,
James
Hello James,
thank you for your donation! As I have this project as my priority at this time, it helps me a lot!
First I should say I am not sure if my methods are the best ones. This track is my first try and many results I achieved here are product of try & error approach. But the same as you I was not satisfied with any example and tutorials on this, so I decided to find some working method by myself. I also got very handy tips from experienced Richard Burns Rally modders like http://trackbuilding.blogspot.com
Also I am not sure if that uneven mesh on intersection won’t make some shading issues in modern engines where specularity / normal mapping effects are supported. I just test my model in old RBR where there is only simple diffuse color supported so the only problem I have discovered is that I will have to subdivide the ground mesh to achieve proper ground collision (graphics model is different from the one used for collisions), otherwise a car would fall through those large polygons. But it is perfectly OK because the collision mesh density does not affects game performance much.
I think your roads are fine, maybe I would tune your texture a bit. I would definitely make it longer – you need it long to avoid repeating. Always make it as high-resolution as possible because you can always reduce it, but not enlarge. As a general rule, I think the key is to make the texture very subtle to avoid visible repeating and seams, but at the same time it should have some road-specific details like little stones, some grunge, stripes from wheels, dirt on borders, you can also add grain filter on top of everything to make it more rough (I use this). Try to keep all of these as separate layers and smart-objects so your work is not destructive, use Offset & Clone tool to make every of these layers seamless… then try to tune opacity / transitions of the layers to get nice final texture. Test your texture directly on some piece of road model, look at it from a driver’s view point & orthographic view (5 on NumPad) to see how much the repeating is visible. In Blender, you can use your PSD as a texture for these tests…so you don’t have to export it everytime you change it.
From my experience it is very important to have this base road texture really fine-tuned and not continue if you are not completely satisfied because you will be adjusting your intersections to it. If you make any radical changes on that texture later, you will have to adjust all your road models accordingly…
I really didn’t make any road textures before making this track so in my case I just spent a lot of time to fiddling with it, there is no simple magic method which would guarantee good looking texture I think.
Vertex Slide – it allows you to move vertices without stretching model’s texture. You can fine-tune your mesh this way and reduce seam visibility on some areas. I made a video for you here:
Feel free to ask if you need a help with some specific tasks 🙂
Thank you once again for such a comprehensive response and for the video.
A-ha! Now I understand the vertex sliding… that’s perfect. I often UV map my stuff and end up wanting to shift vertices around but have to simply put up with the distortion created as a result. This will help me get around that.
I have created a new higher-res road texture, which I turned into a sort of template. I created a set of different line markings, each on their own separate layer, and using this method I’m able to swap out the asphalt surface with anything I want; this way I can make loads of different types of roads, but have the lines/details (and therefore the UVs) in the exact same place. This makes for easy switching in between different textures. Each road piece is 512×2048, and the entire texture is 8192×2048. I wonder if that’s enough? Anyway, here’s a little preview: https://s25.postimg.cc/6xrmmon8f/texturepreview.png
You might notice that the white middle road lines are offset slightly so the entire line occurs once on one side of each ‘piece’ of road. I had too much trouble by splitting the middle road line between two polygons – I’d either have perfectly horizontally mirrored textures on the rendered road mesh which looked weird, or if I’d try to mix and match different parts of the texture together, the lines wouldn’t match up. I probably didn’t explain that in the best way, haha. Hope it makes some sort of sense…
Anyway, I’d love to continue the discussion further by email. There are a lot more things I’m very interested to find out more about your road UV mapping process. Your intersection speed-modelling video has been a great help and I’ve learned a lot, but I’d love to see some specifics on how you create those prefab road pieces, and how you map them so there isn’t any tiling. Is it just long textures, or do you swap / mix / match parts to break the repetition?