It's well and truly time to do a follow-up to Part 1 of our blog on vehicle workflow, in which I'll be giving an overview of vehicle interior modeling and texturing. All of the methods applied in Part 1 are very much applicable, so I recommend reading it first:
It covers many of the tricks involved in vehicle art creation quite comprehensively, so I won't repeat them here - this part will be somewhat shorter.
Starting the interior of a car can be a bit daunting without any reference markings, so it's best to draw up a series of lines marking out the the edges of the door panels and centre console first. You can use these markings to locate the steering wheel position, which dictates the position of the seats and some dashboard features.
With this location pinned down, you can start modeling the dashboard and door panels. In many cars the dash is symmetrical from the drivers to the passengers side, with the exception of the gauge cluster. I typically keep a symmetry modifier on the mesh until I am reasonably happy with the overall shape, and then go about working on the unique geometry for each side. It's also helpful to place a camera at the location of the driver's head, so you can easily check the in-game PoV at any time.
As you can see above, I like to use subsurface smoothing (Turbosmooth for the 3dsMax users) during the early modeling phase, especially with very curvy interiors like the Pessima's. This is an unconventional workflow, but can be quite helpful for guaranteeing consistent curves, assuming the base mesh is very low-poly.
Below you can see the base mesh without any subsurface smoothing(left), with no more than about 500-600 triangles. This of course looks awful, but fortunately you won't have to look at it if you keep the subsurf modifier visible while modeling. Instead you'll see the nicely subsurfed mesh on the right:
The door panels can be started by extruding the existing edge loop from the external door mesh. Make sure to give the panels significant thickness to avoid clipping with the outer door mesh in a crash.
Once you're happy with the shape, apply a single-pass subsurf modifier and watch your polygon count quadruple. You may want to merge some superfluous edge loops at this point to keep the geometry light and clean. At this point the finer details can start to be added. These include vents, door handles, knobs and asymmetrical details. As always, avoid adding geometry except where it's needed to control shading. some concave features like vents and cup-holders need an additional ring of edges around them to avoid disturbing the shading on the main surface hosting them.
Sometimes it's necessary to use triangles instead of quads, but be careful that they don't result in poor shading. Reducing geometry by merging edges can often be a more effective means for smoothing out the appearance of a model than adding polygons, and this will be especially true once a high-poly smoothed normal map is baked on.
UV mapping the interior is all about finding continuous surfaces and unwrapping them in such a way that seams are either not visible, or occur at the edges of materials. For very curvy interiors this can result in some pretty unusual UV layouts. Once the UV layout is finished the first thing I do is bake an ambient occlusion pass onto the texture. This is a helpful starting point since it will be used in almost all of the texture layers. Bake the AO with a subsurf modifier for extra smoothness. Note that any parts that can move or rotate may look wrong with AO applied unless they are first separated from nearby occluding objects (see the steering wheel in the middle-left image below for an example - this had to be re-baked afterwards).
Next, it's a good idea to bake a colour-coded map of material types and keep it on a hidden layer in your working file, so you can easily select everything using a particular material when creating the texture.
The official cars currently use 2048x2048 interior textures, which we think is a suitable middle ground between quality and loading speed. Nevertheless, we work on textures at 4096x4096 to preserve their quality during editing, and to allow future-proofing.
Now bake on the normal map, also using a subsurf modifier. To give the edges of UV islands some extra pop, you can also overlay a UV-island based bevel map. Simply render out the UV islands in white (above, right) in very high resolution, apply some Gaussian blur and run a normal map filter to create well-defined normal map edge bevels.
Some details are too small to be included in the mesh geometry, but can be modeled separately and baked as normal and diffuse maps onto the main texture. I group these in a new layer and use them to bake temporary textures, before baking these textures onto the main interior textures. In Blender, you can use two UV layers to manage this: one UV layer is for the temporary detail textures (stereo, A/C unit, power window controls), and another UV layer is for the main texture, which the details will be baked to.
A specular map can generally be derived from the diffuse map, with some special overlays to account for differences in materials or adding grunge spots. For a subtle lighting effect that gives the diffuse textures a photo-like quality, the normal map can be converted to greyscale and faintly applied as "hard light" over the main diffuse texture. Reflectivity is the inverse of the diffuse texture's alpha map; more transparent areas are more reflective.
If you're working in Blender it's helpful to set up the materials for preview in the viewport. However, be aware that things can look significantly different in-game, so it's a good idea to regularly export your work to get
a feel for how the lighting will look in BeamNG.drive.
Making the gauge cluster is more of a mathematical problem than a modeling issue, and involves first figuring out the range of the speedometer, the number of interval marks , and the total angle of the needle arc from zero to max speed. Once you've sorted this out, it's a simple matter of creating a single interval mark and copying it around the perimeter of the gauge, rotating it by several degrees at a time. Keep switching back to your camera in the driver's head position to make sure the gauges are readable. The finished gauge cluster model can be rendered onto 1024x512 textures; diffuse, normal and specular, which will then be applied to a flat plane on the dashboard mesh with a unique material.
Seats can also be modeled using the 2-stage process of low-poly primitive shapes, and application of subsurface smoothing followed by refining and cleaning up the mesh. These can be assigned their own 512x512 textures. Depending on styling (more curves usually result in more geometry), the full set of interior meshes may have up to 20,000 triangles.
The process described above is certainly not the only way to create an interior (and I've probably offended a few modeling purists with my subsurf method), but should help shine some light on the task at hand. This year we've started seeing very high standards in community car mods, and I hope this helps pave the way for more fantastic user-made content.
Updated 1 Week Ago at 03:05 AM by B25Mitch
We just released a hotfix for the latest 0.4.1 version that fixes a crash on startup that happened if you had an Xbox controller connected that was low on battery :|
Also, since the move to DirectX11, WindowsXP is not supported anymore from this version on. We created a fallback version of the game that you can get like described below.
Fixed crash on startup when a gamepad doesn't have full batteryFixed Pessima V6 configuration not loading properlyAdded fallback for torqueArm
Added "Port Escape" scenario featuring the PessimaAdded "Drown the Pigeon" scenarioPessima: Added "stanced" configurationH45: Tuned heavy duty rear suspension to take loads betterD15 Custom Off-Road: More damping and limiter dampingEast Coast USA: removed duplicate bridge
How to get the last version that supports DirectX 9:
Right click on on the game, select properties:
Then select the 0.4.0.6 version under "BETAS" and just click on close:
Updated 2 Weeks Ago at 03:02 PM by tdev
We've just released version 0.4.1.1, addressing the invisible vehicle bug and much more.
Small optimizations in the physics coreIncreased timing for engine drowningController hotplugging fixed: you can now plug/unplug controllers (joysticks, gamepads, steering wheels) at any time
Fixed invisible Vehicles on DirectX version 10.1Merged resolution and refresh rate options for a better user experience: it was not showing all resolutions beforeFixed black water on Low quality settingsFixed XInput cache file infinitely growing in sizeFixed each XBox controller being detected as two different devices at the same timeFixed various "XBox controller plugged" messages appearing at wrong timesFixed broken bindings (H-shifters and camera zoom) in the following steering wheels: SideWinder Force Feedback Wheel, Fanatec Porsche 911 Turbo S Wheel, Ferrari F1 wheel Integral T500, Logitech Driving Force Pro, Logitech Driving Force GT, Logitech Momo Racing Force Feedback WheelLowered G27 LEDs log severity during successful initializationFixed 'Device Detection' progress dialog not showing up if the process takes a long timeFixed 'Device Detection' progress dialog sometimes being stuck open foreverFixed all 4 possible XBox controllers sharing the exact same name
Added the Ibishu PessimaAdded Pessima test scenarioAdded self-collision to wheel axis nodesGavril Vanster: Interior mirror flexbody fixGavril T6/75: Fixed incorrectly being front wheel drive, acceleration bug fix & an issue where the engine would stop if any node touches waterVarious small vehicle improvements and fixesMinor improvements for Jungle Rock Island
Updated 3 Weeks Ago at 09:39 PM by tdev
Version 0.4.1.0 released, welcoming DX11
This update took us longer, since we were working on bigger changes that needed time to mature enough to be released with quality in mind.
We have switched from DirectX9 to DirectX11. The benefits are improved performance, future proofness and a good step towards modernizing the game engine core. The downside is that DirectX 11 will not run on Windows XP any more.
Moved some calculations to the GPU, speeding up the flexmeshes considerablyImplemented realistic Electronic Stability Control with multiple switchable configurations: Use CTRL+Q to switch. The Hirochi Sunburst is currently the only vehicle modern enough to have ESC support.Small startup time improvementAdded force-feedback defaults to Fanatec and T500RS wheelsNew main menu background images replacing the blurry video - Higher quality and more appealingAdded new vehicle Lua API: getYawAngularVelocity, getPitchAngularVelocity, getRollAngularVelocityAdded brakePressureDelay to simulate delay of air brakes on heavy trucksChangelogs in the start menu and the info tabImproved debug visualization for sounds.Windows 10: Tested and found to be working well, fixed version reporting
Mouse wheel, axes, and some buttons can be bound now, enabling you to have mouse steering Improved bindings: now faster and more direct: calling VLua, ELua, JS or TS directly G27 steering wheel RPM LEDs working Fixed setting bindings of high-end controllers that can fire rapid events (such as Fanatec CS or Saitek X-55) Fixed inability to add and save bindings after the last one has been removed Right mouse button "look" is now a binding like the rest (and can be replaced by mouse steering, accelerate & brake, and many others) Add filtering options to mouse controls (deadzone, linearity, inversion) Show controller name next to axis/button identifier when editing a binding (to help those with many controllers connected at the same time) Show device type icon (keyboard, gamepad, etc. icons) next to most binding assignments Minor GUI improvements in Controls menu to improve usability "Advanced Functions" mode now also disables certain hotkeys used for debugging and alike.
Vehicle loading optimized making it 3x fasterUsing average wheel speed for speedometer instead of the speed of one of the wheelsFixed physics core loosing beams under rare circumstancesDifferential improvementsFixed crash when loading dead island mod with "Direct Sound" enabledRemoved all sound providers except one for now.Fixed an issue where users could not define an audio device properlyFixed negative values in colorpickerFix for suspension replacement disabling steeringPrevent CEF console from being enabled at the same time as full screen modeFixed sorting of rendered objects to reduce pixel fillrate, GPU state changes and to improve instancingFixed crash when more than 16 sounds are playing at the same timeFixed default water density being far too low
Added Electronic new Stability Control and ABS UI debugging appsNew and improved colorpicker in the vehicle selectionSeveral minor fixes to the UI: dashboard selection/highlighting, vehicle selector sizing too farImproved auto-hiding of the dashboard: after 30 seconds and only when no tab is openVehicle Selector performance problems fixed: showing up much quicker nowFixed Problem in the UI with duplicate audio devices making the UI stop workingFixed Tacho2 up when engine values were missing: "NaN" is not shown but instead hiding the value now
Jungle Rock Island: Airfield progress, AI improvements, new materials/textures, added a fort, fixed dirt road suddenly ending, also now released and stableGridMap: Added an ice patch, extended existing terrain samplesEast Coast USA: Improved materials and LODs for buildings for improved performance4 new Scenarios: Moose Test, Jungle Rock Island Shortcut, East Coast USA Jumps, Heavy Machine DeliveryUpdated colmesh for striped concrete barrierFixed "Supercar Rally" scenarioFixed "Island Tour" scenario
T75: Added new Cement Mixer upfit. Continued optimizations. Redesigned front jbeam to better simulate leaf springs. Fixed missing hood and fender cams, rear spotlights. Fixed slow onset instability problems.Sunburst: Added new rally parts and non-ABS brakes to the Hirochi Sunburst Rally200BX: Added new spoilers (XType and Small Lip). Tierod stiffness increased, fixed LSD diff being lockedD15: Added new off-road parts and "D15 V8 4WD Flatbed Custom" config. Fixed ABS settings for steelwheels, increased front suspension dampingD15/Roamer Small Trailer: Improved trailer wheels, collision and suspensionRoamer: Added new roofrack objects, spare tire, carry bagSunburst: Stiffened door hinges, headlights, tierodsImproved ABS system, also tuning (to suit new system):200BX, D15, Grand Marshal, SunburstBolide: Fixed normalmap artifact, fixed doors colliding with fenders, stiffened chassisCovet: Added new rally parts to the Ibishu Covet Rally. Increased HP of base modelGrand Marshal: Stiffened chasssis and rear door hinge, fixed dashboard mesh stretchingPigeon: Increases suspension dampingVan: Fixed rear view mirror mesh stretching, increased front suspension dampingConcrete Barrier: Remade nodes/beams, replaced with an updated modelAdded a "Kick Plate" prop (scenario to use it will come)Flexbody binding improvements/fixes: 200BX, Bolide, Covet, D15/Roamer, Grand Marshal, Sunburst, T75Improvements to glass strength: 200BX, Bolide, Covet, D15/Roamer, Grand Marshal, Moonhawk, Sunburst, T75
pressureWheels Wiki page added: PressureWheelsFlexBodies Wiki page improved, multiDAE incorporated: FlexbodiesBeams Wiki page improved: Beams
If you modified your input bindings, you might miss the default mappings for the new actions. You can either reset to default or, map it manually. We are working on fixing this issue to come up again in the future.
If the game fails to start, please try to delete your "My Documents/BeamNG.drive" folder.
For feedback, comments or anything alike, please use this thread: 0-4-1-x-Current-bugs-and-help-thread-0-4-1-0
Updated 3 Weeks Ago at 08:44 AM by DrowsySam
Here's some of our changes since the last release, we have some heavy background work going on so we will release the update when it's ready.
New and improved ABS systemG27 steering wheel RPM LEDs workingAdded force-feedback defaults to Fanatec and T500RS wheelsNew main menu background images - Higher quality and more appealing (work in progress)Mouse buttons, axes, and wheel binding support (work in progress)
Fixed an issue where users could not define and audio device properlyFixed negative values in colorpickerFixed some bugs in anisotropic beam codeFix for suspension replacement disabling steering
Supercar Rally scenario fixFixed Island Tour scenarioT-Series: Fix for instability, fixed wandering steeringJungle Rock Island: Airfield progress, new materials/textures, added a fortImprovements to glass strength: 200BX, Bolide, Covet, D15, Grand Marshal, Moonhawk, SunburstNew ABS tuning (to suit new system):200BX, Grand Marshal, Sunburst200BX: Tweaked parking brake, stiffened tie rodsBolide: Fixed doors colliding with fenders, stiffened chassisD15: Increased front suspension dampingGrand Marshal: Stiffened chasssis and rear door hinge, fixed dashboard mesh stretchingSunburst: Stiffened door hinges, headlights, tierods, added non ABS rally brakesVan: Fixed rear view mirror mesh stretching, increased front suspension damping
pressureWheels Wiki page addedflexBodies Wiki page improved, multiDAE incorporatedBeams Wiki page improved
Work in progress:
DirectX 11: This will enable us in the future to use more powerful features. For the near time we will just make it work - no fancy things.OpenAL Soft soundsystem supposed to replace the DirectSound Soundsystem. It's supposed to be more stable and has more features (looking into HRTF)Physics Mesh handling redesign: one step closer to push things to the GPU
Updated 07-04-2015 at 07:51 PM by tdev