Development log - Building a complete car from scans - VR Game dev

13
AlecMoody
ngon master
Online / Send Message
AlecMoody ngon master
Hi All,
I have been working towards building a VR game where you can completely disassemble and repair first generation mazda miatas. Building every component of a car is a massive task - There are a few hundred unique parts + a library of re-use parts (mostly fasteners). Over the last 6 months I have developed a scanning/modeling workflow that allows me to quickly create high quality art.

Photogrammetry does a really good job of capturing rough/cast surfaces but also allows me to build parts that are dimensionally accurate. With this in mind I can approach each part as a separate project and be assured that bolt holes will be perfectly aligned the whole car is assembled.

Right now my workflow looks like this:
1) Disassemble parts into their minimum number of components
2) Spray surfaces with multiple colors of matte spray paint, if I don't want to ruin a part I will use developer spray which can be wiped off.
3) Scan with my photogrammetry setup and process in reality capture
4) Manually remodel any parts that need to be perfectly clean. Things like mating surfaces and highly polished/machined surfaces
5) Combine scan data and manual modeling for a final high poly model
6) Generete a low through mostly automated methods - Zremesher and pro optimize modifiers
7) Bake model and then apply a library of smart materials in substance painter

Some of the work I have done so far:

Front Upright with hub nut, dust cap, and wheel studs:


Front Hub:

Front upper control arm:


An raw scan of front lower control arm:


A low poly workflow test done with raw scans- these scans were done as a test before I separated these objects into their components and re-scanned them.

Replies

  • RyanB
    Offline / Send Message
    RyanB Polycount Sponsor
    Everything about this is awesome except...miatas? :smile:

    I'm planning out a small photogrammetry rig right now for scanning plastic models.  I want to use a stepper motor to rotate the model within a sphere of LEDs.  Still considering how I'm going to diffuse the LEDs and some other potential technical problems.
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Great job so far, would obviously love to hear more about your scanning setup. Did stuff like screw threading and very small holes generally need to be redone or cleaned up by hand? Or is the resolution good enough that they're not really a problem? It looks like that stuff held up decently even in your test scans
  • Toku
    Offline / Send Message
    Toku polycounter lvl 6
    Awesome idea and a very useful application of the technology!  I am excited to see the progress. I have always wanted to disassemble an engine block haha
  • csprance
    Offline / Send Message
    csprance Polycount Sponsor
    Can you share some of your scanning setup? Sounds like a pretty awesome if not very involved project. Looking forward to seeing how it turns out. 
  • Deeside
    Offline / Send Message
    Deeside polycounter lvl 3
    RyanB said:
    Everything about this is awesome except...miatas? :smile:

    I'm planning out a small photogrammetry rig right now for scanning plastic models.  I want to use a stepper motor to rotate the model within a sphere of LEDs.  Still considering how I'm going to diffuse the LEDs and some other potential technical problems.
    You could try a light box and have the light source on the outside - works pretty well and is cheap:

    https://www.amazon.com/Neewer-Shooting-Diffusion-Backdrops-Photography/dp/B00GKGGICC/ref=sr_1_1?s=photo&ie=UTF8&qid=1488606086&sr=1-1&keywords=Pop+Up+Photo+Box


  • MeshMagnet
    Offline / Send Message
    MeshMagnet polycounter lvl 5
    Some of you guys have been asking about Alec's setup.  He talks about and shows it in this Photogrammetry thread:

    http://polycount.com/discussion/comment/2515809#Comment_2515807

    Scroll down about halfway to see Alec's setup.

  • Kanni3d
    Offline / Send Message
    Kanni3d polycounter lvl 4
    This might be dumb, but are you also keeping the scan data color? Or would you want to recolor everything by hand? Beautiful scans so far
  • DJ_Aaron
    Offline / Send Message
    DJ_Aaron polycounter lvl 7
    Awesome stuff so far. Thats a heck of a lot of scans to polish. Good luck! 
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Great job so far, would obviously love to hear more about your scanning setup. Did stuff like screw threading and very small holes generally need to be redone or cleaned up by hand? Or is the resolution good enough that they're not really a problem? It looks like that stuff held up decently even in your test scans
    I detailed my most recent scan setup in this tutorial- I have made some changes since I posted in the photogrammetry thread.

    http://www.alecmoody.com/rubble/

    I moved away from continuous lighting which has allowed me to ditch the tripod and cable release. Shooting with flash units enables me handhold and it takes about 5 minutes to shoot 100 photos. Most of these scans are between 200 and 400 photos- I spend more time prepping the surfaces and coming up with a simple fixture to hold the objects than I do shooting. Also, another nice thing about using artificial lighting is that I can shoot 200 photos, process them, and then see if there are any poorly resolved areas.  If I need to I can go shoot more under identical lighting.

    As far as threaded holes and concavities go- it really depends on how deep the holes are. As the hole gets deeper it is harder to get any meaningful images/lighting. Fortunately, for my purposes this usually isn't a problem since it will be nearly impossible to see into those holes on a baked game mesh.

    Here is as a high res image of the raw scan for the lower ball joint. I will remodel all the areas I outlined for cleanliness and also because I tore the rubber boot when I was popping the joint:


    I will  also sculpt some repairs on the joint- you can see where I bashed it with hammer to try and pop it before resorting to a pickle fork.


    Also,
     I am not keeping any scan color data since I am doing aggressive surface treatment in order to get good scans:


    Aside from game model use, I am planning to publish a library of decimated scans sitting together in an assembly. Having a 100% complete car that can be brought into cad is a huge resource for designing and testing parts for the aftermarket.
  • EarthQuake
    Everything about this is way cool.
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Rescan of the front lower control arm:



    Cleaned up lower ball joint:


  • Tomiajayi
    Offline / Send Message
    Tomiajayi polycounter lvl 2
    Looks incredible. if you had modeled everything by hand I would have to call you the modeler of the world!!!! :D
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    This is the first set of parts baked with materials:


  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Assembled and exploded. These images are from substance painter so no SSAO:

  • Drew++
    Offline / Send Message
    Drew++ polycounter lvl 9
    Awesome stuff amigo! :smiley:
  • Pedro Amorim
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Quick viewer scene:
    http://www.alecmoody.com/hubscene.html

    And  front caliper scan:

  • Johnnynapalmsc
    Offline / Send Message
    Johnnynapalmsc interpolator
    This is awesome stuff man! Love how all of this looks like so far
  • Quack!
    Offline / Send Message
    Quack! polycounter lvl 13
    Really cool, can't wait to see how far you take it!
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Front lower control arm:

  • dtschultz
    Offline / Send Message
    dtschultz polycounter lvl 12
    THis is really cool Alec!
  • rohMizuno
    Offline / Send Message
    rohMizuno Polycount Sponsor
    that is so cool. Now please tell me you will print the parts once finished and assemble your own car.
  • SteveHarlow
    Offline / Send Message
    SteveHarlow polycounter lvl 3
    God that's sick. Really cool to see what looks objectively "correct" in 3d. I would've never thought about adding those little paint/welding speckles.

    Also, stamped sheet metal suspension parts is my trigger. Thanks Mazda.
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I did a materials polish pass on the hub/upright set:


    And it had been a while since I had done any poly modeling. Since this brake dust shield only bolts to one part and it does so on a simple plane, I decided to polygon model it (it is also hard to scan both sides of a thin sheet metal part):


    Rotor scan:

    Brake caliper bracket:


    I am very familiar with all of these parts but this is forcing me to look closely at them and I am finding little engineering details I hadn't considered before. For example, these slider pins are differentiated by more than just  diameter. The larger pin has flats machined into it and the plating on the two pins is different. I have two different brands of pins and both sets show these differences.


  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I'm almost done with all the high poly work for the brakes there are a ton of parts which in turn means a lot of separate scans, Specifically there are:

    Brake lines+ fittings (banjo fitting, crush washers, special hollow bolt)
    Brake Pad
    Brake pad backing plate
    Two types of pad clips
    Caliper
    Caliper Bracket
    Slider Pins
    Rotor

    I finished this off. I'm not 100% satisfied with the material yet. It looks a little to procedural and obviously from substance painter:

  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    This is kind of cool- The rotor scans show pad transfer on the rotor surfaces and the brake pad shows corresponding wear marks  on the pad face:



  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Finished rotor:

  • JohnathonWindsor
    Offline / Send Message
    JohnathonWindsor polycounter lvl 2
    Hi Alec,

    Good work, sent you an email
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I finished up the front calipers late last night. This is a ton little parts and working after hours took forever. Two unique bolts (slider pins), caliper bracket, caliper, brake pads at two different wear levels, pad backing plate, and two kinds of brake pad clips.



    Marmoset viewer:
    http://www.alecmoody.com/Caliper/Caliper.html

  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I did a quick test of my pieces in an assembly.



  • Kashaar
    Offline / Send Message
    Kashaar Polycount Sponsor
    Damn, this is a cool project! Awesome job so far :-)
  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 8
    Is this the precursor to "My Summer Car"? Nice work nonetheless.
  • Daemonecles
    Offline / Send Message
    Daemonecles polycounter lvl 6
    As someone who's had to model these exact pieces before, you did a great job!  Awesome that you have the know how to break down the physical object so you can model it more accurately.  Great job converting from the scan to the materials etc!
  • cyborgguineapig
    Offline / Send Message
    cyborgguineapig polycounter lvl 12
    This is the coolest thing I've seen in a long time. So many applications here with this process. 
  • Chimp
    Offline / Send Message
    Chimp interpolator
    Awesome work man, this is some inspiring dedication to a project. On a separate note though...

    ROFL made my day. This project is cool though, please have it explode the parts out in a cool modern way at some point. 
  • Aga22
    Offline / Send Message
    Aga22 polycounter lvl 7
    this is so bloody amazing it brings tears to my eyes 
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Viewing my content in room scale:
  • mats effect
    Offline / Send Message
    mats effect Polycount Sponsor
    Hey Alec kind of interested in what kind of set up you are using to scan stuff with. Been trying out a few methods myself of late and am waiting for a lightbox to arrive so I can try that out. How do you handle scanning the bottom of objects? 
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I did a scan tutorial a while back:
    http://www.alecmoody.com/rubble/


    For big objects I tack togther a steel tube fixture to hold it in the air- usually I am left with one or two bolt holes where my object attaches that I still need to clean up.
  • Elithenia
    Offline / Send Message
    Elithenia polycounter
    This is awesome :) looking forward to seeing your progress!

  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    The first round of rough profiling to see how my content will work at scale. About 3 cars worth of parts (~300 pieces) all as pickups with physics. I also duplicated textures and materials. Render target is 100% but I am running MSAA. GPU usage peaked at 46% on my 1070 and core 1 of my cpu peaked at 52% and my video memory peaked at ~50%.



    The only big thing I still need to test is how unreal batches draw calls and if more unique parts will massively inflate my draw call count.
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Hello everyone. Can someone with more blueprint/unreal experience give me some advice?

    Step 1 of my project is room scale with the ability to snap and unsnap parts with your hands. I need to plan for long term functionality when the parts can be swapped out for damaged, clean, and aftermarket versions. Also I need it to be possible to remove literally every part from the car, including the entire body, leaving a blank rig with nothing in it.  My current plan is to build a rig for the car and add sockets for the location of every part on the car. I need to skin the rig to something, right? A single triangle placed out of view? Am I going to run into any unexpected performance issue with a few hundred static meshes assigned to a few hundred sockets? Is this the right approach to take? Ultimately I want the car on an IK setup so that when the car is raised on a lift the suspension/wheels droop correctly.

    Another potential sticking point. There are going to be sub assemblies of the car that I require players to remove and take over to a work bench or other work area to service. Some examples, wheel studs and suspension bushings need to be pressed out on a shop press. If I do bottom end rebuilds players will need to put the engine on a stand before they can pull it apart. I'm having a hard time visualizing how that will interact with this system.
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    Car parts are great at blocking bullets in robo recall:



    The content looks great in UE4's forward renderer under direct lighting. However, in shadow where the lighting is flat (say under a car) the lack of any ambient occlusion (and especially specular occlusion) is really noticeable. There are a lot of glowy looking edge highlights taht shouldn't be there.  I am continuing down this route with the hope that epic implements some kind of AO for forward rendering in VR. If not I will have to hire someone to implement something custom..


  • fearian
    Offline / Send Message
    fearian Polycount Sponsor
    Afraid I can't offer useful technical advice, but I wanted to stop by and say these look great in VR.

    Some suggestions for construction mechanics:
    If the car is not moving at all but you don't want an insane hierarchy of sockets, at larger levels could you not have groups of parts socket to a dummy object in the correct position? If everything moves up and down together at most that could look just fine.

    have you thought about how the player picks up objects? It can be odd sometimes in VR when objects have a set 'holding' pivot that feels unnatural. Will they snap to a default angle?

    finally please just have the player spawn in a room next to a pile of loose car parts like lego. call it hard mode.

  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I made up a quick garage. This is super hacky and simple but it provides slightly more context to test rendering features in. I also threw in an old gt40 model to test with while I wait on the actual body work.

    Lastly, I found a slightly hacky way to improve the extra reflections under the car. I made a box reflection volume and set the brightness to 50%. Everything inboard of the rotor gets much darker reflections. I still really want some kind of dynamic AO between the parts but this is a huge improvement. I wish there was a more memory efficient way to achieve a similar effect. I have the cubemap res set to 512 right. Since it is a global switch there isn't a good way for me to drop the resolution on specific cubemaps where I don't need it.


  • AzzySky
    Offline / Send Message
    AzzySky polycounter lvl 2
    Man, this is so cool!)
  • AlecMoody
    Online / Send Message
    AlecMoody ngon master
    I have officially licensed the Bauer LTD. Catfish for my game:


    I also have some early polygon models built from cad data:


    My largest 3d scan so far. 1300 photos and 56 hours of processing time. I need to be more deliberate with my photo taking on objects this large. It takes so little time for me to snap off 1300 photos that I'm often not that careful about overshooting. I now know that photo count and processing time to do not scale linearly.


  • s1dK
    Offline / Send Message
    s1dK interpolator
    Looks amazing mate, can wait for more :D
13
Sign In or Register to comment.