Repository navigation
Releases
Releases · realTimexo/UnityToBeamNG
v0.4.3
- New: speed limit signs (
BeamNGSpeedSign, km/h or mph, generated number texture, simple replaceable model,map.jsonspeed limit segments along the road in front of the sign). - Performance: smart collision (simplified collision mesh for heavy objects, none for tiny ones), automatic distance LOD, meshes above 60,000 vertices are split into parts. The blanket performance warning is replaced by a summary.
- Road Architect: spline nodes/splines are never marked as roads (duplicates), roads are detected at every export,
RoadWidth()supported; signals and signs are snapped to the nearest road. - Materials: colour tint is baked into the exported texture.
- Minimap: roads are not painted by default (BeamNG draws them), switches for info.json registration, offset corner, flips.
- Water: stock texture paths written; water in the scene is detected.
- Road Architect road surface/marking materials (RoadMaterial1-4, markers) are exported matte (roughness 0.9, no metal) and listed in the report with shader, tiling and texture size.
- Fix: meshes whose name ends in digits (e.g. SketchUp "ID1012") were invisible in BeamNG: Torque reads the trailing number of a node name as detail size. A suffix is added to the node name.
- New: speed zones (
BeamNGSpeedZone): pick start and end node (Road Architect nodes), the limit applies to the road between them. - Roads: DecalRoad nodes closer than 2 m and sharp spikes are removed, width capped at 24 m (log: "centerline to edge distance exceeding 20m"); the minimap draws roads by default.
- Roads: sparse road nodes (Road Architect: one per ~100 m) are resampled every 8 m (Catmull-Rom): BeamNG draws the minimap road and builds the AI graph between nodes, so they were long straight chords.
- Speed zone gizmo follows the road nodes; speed waypoints get a small radius. New buttons: make selected objects (your own models) speed/stop signs; "Check selected objects" diagnosis.
- Fix: signal lamp objects lost their material when the tool folder was replaced by an update (165 "empty material slot" warnings, grey lamps). Generated materials now live in Assets/UnityToBeamNG_Generated and are repaired at export.
- Fix: compile error (ShapeOptions.Lod1 / Lod1Pixels were missing).
- Materials: tiling/offset and colour texture are read from the property that is really used (custom shaders such as Road Architect's); shaders named Transparent/Fade/Cutout and Road Architect marker materials with an alpha texture are exported with transparency (fixes white, stretched marking overlays).
- Report: skipped Road Architect lens meshes are no longer listed as "not exported".
Full Changelog: v0.4.2...v0.4.3
v0.4.2
- Map tab: own preview image; default description "Made with UnityToBeamNG!".
- New: BeamNGTrafficSign (signStop/basicStop), BeamNGWater (WaterBlock), Water tab, minimap draws water.
- Road Architect traffic lights / all-way stops are converted to BeamNG signals (Traffic tab button + automatic at export).
- Road Architect detection also supports the FritzsHero fork (RoadIntersection, renamed fields) and reports what it found.
- Converted Road Architect lights get own switching lamp objects (replace its texture atlas lens).
- Water that already exists in the scene (flat meshes with a water material, HDRP WaterSurface) is exported as BeamNG water; such meshes are no longer exported as normal meshes.
- Lamp switching Lua: finds signals via getSignalByName or getSignals.
- Simpler GitHub issue templates.
- Auto-detect Road Architect roads at export; minimap warns if no roads exist.
- Removed warnings for features confirmed in game.
Full Changelog: v0.4.1...v0.4.2
v0.4.1
- Fix (beamng.log / Unity warning): texture file names are shortened (max 40 chars + hash) - Windows "Could not find a part of the path" for very long sign texture names; temp folder name shortened.
- Fix (beamng.log): materials named
Camera,spotlight,Material(and other BeamNG class names) were not mapped; they get the prefixm_. - Terrain textures: PBR (v1.5) mode with
TerrainMaterialTextureSetis now the default (settingterrainPbr). The set is written first inart/terrains/main.materials.json; structure check aborts the export if the set is undefined or a texture size does not match its slot. Classic mode kept as a switch. - Minimap:
minimapImageon the TerrainBlock (no leading slash) in addition to theinfo.jsonentry; resolution "Auto" = terrain size (max 2048). - Vegetation: LODs per BeamNG mapping guide (
<name>_a100,bb_autobillboard25,nulldetail10; grass_a12+nulldetail4), wind (vertex colours R = bend, G = phase, B = flutter; bark black;windScale+ForestWindEmitter), tree collision only above 2.5 m (default), per-tree-type report lines. - README: logo, preview image, how-to GIF.
Full Changelog: 0.4.0...v0.4.1
v0.4.0
- New: vegetation. Trees painted with Unity's Paint Trees and grass / meshes painted with Paint Details on a Unity Terrain are exported as BeamNG forest items:
art/forest/managedItemData.json(typeTSForestItemData),forest/<type>.forest4.json(one JSON object per line:type,pos,rotationMatrix,scale) and aForestobject (theForest) in a newVegetationgroup. Format taken from the BeamNG docs (Forest Data / Forest class).- Tree prefabs (LOD0 only, billboards skipped) are merged into one DAE per prefab; materials/textures go through the normal material export. Leaf/grass materials are exported double-sided with alpha test.
- Collision: trees get
"collidable": trueand a convex trunk collision shape written as an extraColmesh-1node inside the DAE (radius from the prefab'sCapsuleCollideror estimated from the trunk; bushes below a configurable height get none). Detail meshes (rocks...) can optionally collide with a bounding box. Grass never collides. - Details: grass textures become three crossed quads (tinted with Unity's healthy/dry colour), detail meshes use their prefab. Density slider + hard instance budget (the density is lowered automatically when the budget would be exceeded). Positions come from Unity's detail layer; heights from the terrain.
- Limits (reported in the export report): forest items only have ONE uniform scale (tree width/height scale is averaged), no wind sway (
windScale0), no distance LOD / billboards.
- New: minimap.
minimap/terrain.pngis rendered on the CPU (terrain layer colours + hillshade, roads, building footprints, trees) and registered ininfo.jsonas"minimap":[{"file","size","offset"}](docs). Resolution 512-4096. - New "Vegetation" tab (trees, details, minimap options). Structure check now also verifies forest files (every placement type is defined, every shape exists, minimap file exists).
- Unit tests for forest line format, collision orientation and foliage detection.
Full Changelog: v0.3.2...v4.0.0
v0.3.2
- Fix (from beamng.log): meshes whose name ends in a number (
Cylinder_001,Object_7...) were rejected by BeamNG with "Shape with invalid detail levels" (Torque reads a trailing number as detail-level size) - this made stop sign, traffic lights and other models invisible. DAE node names now never end in a digit. - Fix (from beamng.log): materials named only with digits (
1,3,8, typical for FBX buildings) failed with "Object name cannot start with a digit" / "Unable to find material" -> houses without textures. Names starting with a digit now get the prefixn_. - Fix: traffic-light lamp Lua extension crashed every frame (
greenwas both a duration and the lamp list). Durations renamed togreenSec/yellowSec/allRedSec. modScript now uses the documentedload()/setExtensionUnloadMode(). - Meshes with more submeshes than materials use the last material (like Unity) instead of the grey missing_material.
- Fix: structure check compared the DAE material id (
<name>-material) with main.materials.json and aborted the export; it now compares the material name. - Fix: transparent materials had a black background in BeamNG. BeamNG's texture cooker drops the alpha channel of
*.color.png. Textures with alpha are now split: opaque color PNG (colors bled into transparent areas) + separate grayscale*.opacity.dataR.pngwritten asopacityMap. Sign-like (binary alpha) textures use alpha test, soft ones (markings, glass) use translucent + Z-write.doubleSidedis exported for materials with Render Face = Both (_Cull= 0). - Fix: DAE ids - material ids are now
<name>-materialso they can never collide with the mesh/node id (a model whose mesh and material share a name, typical for Blender exports, could make BeamNG drop the object). - New:
SkinnedMeshRenderer(FBX/Blender models with an armature or shape keys) are baked in their current pose and exported as static meshes instead of being skipped. - Report: lists every renderer that was NOT exported (disabled / LOD1+ ...), plus a note for materials set to a transparent render mode without alpha in the texture.
- README: how to set up intersections, signals and AI traffic.
Full Changelog: v0.3.1...v0.3.2
v0.3.1
- Road Architect: detection via its
SplineNnode objects (works from Road1, the Spline or MainMeshes object) + spline sampling; diagnostic list of components when nothing is found. - Road markings: transparent/cutout materials are exported (translucent / alphaTest); emission exported as emissiveMap/emissiveFactor.
- Traffic lights: poles with three emissive lamps,
signal_lamps.json+ Lua extension (scripts/unity_to_beamng/modScript.lua,lua/ge/extensions/unityToBeamNG/lights.lua) switch the lamps; ZIP now also containsscripts/andlua/. - Tool window: "Report an issue / bug on GitHub" button. README: download link.
Full Changelog: v0.3.0...v0.3.1
v0.3.0
- Terrain textures: classic terrain materials with
diffuseMap/diffuseSizeper Unity layer. The PBRTerrainMaterialTextureSetmode is EXPERIMENTAL and off by default (BeamNG crashed with D3D12 'root cbv' when the set was not found). - Roads: Road Architect detection searches parents/children; new 'Find Road Architect roads in scene' button; fixed roads with a single point.
- Road network:
BeamNGRoad(child points or Road Architect) andBeamNGRoadPiece(modular 3D pieces with connectors) are exported as invisible DecalRoads; endpoints within 0.75 m are snapped together. - Traffic lights:
BeamNGTrafficIntersection+BeamNGTrafficLight, one-button 4-way intersection,signals.json. - New tabs: Roads, Traffic. New option: left-hand traffic.
Full Changelog: v0.2.2...v0.3.0
v0.2.2
- Fix: solid-color materials (e.g. a plain red Unity material) stayed white in BeamNG. BeamNG's TextureCooker rejects textures smaller than 16x16 ("Size must be a power of two and at least 16x16"). Solid color textures are now 16x16, and all exported textures are at least 16x16.
- Collision mode now written as
Visible Mesh Final(BeamNG logged a performance warning forVisible Mesh). - Removed the
CloudLayerobject (it logged "Missing texture"); setglobalEnviromentMaponLevelInfo(BeamNG logged it as missing). - Confirmed in game: image textures now display correctly.
Full Changelog: v0.2.1...v0.2.2
v0.2.1
- Fixed wrong rotation direction
- Fixed material export
Full Changelog: https://github.com/realTimexo/UnityToBeamNG/commits/v0.2.1