载入中...
搜索中...
未找到
RoadBake.h
浏览该文件的文档.
1#pragma once
2
3#include "procgen/MeshBuild.h"
4#include "procgen/PointSet.h"
7
8#include <cstddef>
9#include <vector>
10
11namespace eve::procgen {
12class Heightmap;
13}
14
15namespace eve::procgen::road {
16
19 float originX = 0.f;
20 float originZ = 0.f;
21 float cellSize = 1.f;
22 float heightScale = 1.f;
23 float blendDistance = 2.f;
24 float maxVerticalDelta = 2.f;
25 std::size_t maximumWork = 16u * 1024u * 1024u;
26};
27
33 int width = 0;
34 int height = 0;
37 std::vector<std::size_t> sampleIndices;
38 std::vector<float> before;
39 std::vector<float> after;
40};
41
45 int turnSamples = 12;
46 bool includePiers = true;
47 bool includeMarkings = true;
48 bool includeNavigation = true;
49 bool includeJunctions = true;
50 bool includePlacements = true;
51 float navRibbonHalfWidth = 0.22f;
52 float arrowSpacing = 5.f;
53 float junctionChordError = 0.10f;
54 float sideObjectSpacing = 8.f;
55 float sideObjectOffset = 0.5f;
56 float sideObjectClearance = 1.5f;
57 int maximumPlacements = 65536;
58 std::size_t maximumMeshElements = 8u * 1024u * 1024u;
59};
60
67
78 const RoadBakeOptions& options = {});
79
90 const RoadTerrainConformOptions& options = {});
91
101 Heightmap& terrain, const MeshBuild& roadMesh, const RoadTerrainConformOptions& options = {});
102
110[[nodiscard]] EVENGINE_API_DOMAINS Result<int> restoreHeightmapFromRoad(Heightmap& terrain,
111 const RoadTerrainConformReceipt& receipt);
112
113} // namespace eve::procgen::road
std::string terrain
#define EVENGINE_API_DOMAINS
Definition Export.h:110
const SquirrelValueOptions & options
Move-only operation result carrying either a value or Status.
Definition Result.h:155
In-memory terrain heightmap: a dense float grid (row-major, index = y * width + x) materialized from ...
Definition Heightmap.h:21
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
Script-friendly collection of attributed 3D samples.
Definition PointSet.h:59
Owning directed road graph with lane connectivity.
Definition RoadNetwork.h:19
EVENGINE_API_DOMAINS Result< int > conformHeightmapToRoad(Heightmap &terrain, const MeshBuild &roadMesh, const RoadTerrainConformOptions &options={})
Atomically conform a heightmap to nearby baked road surface triangles.
Result< RoadBakeResult > bakeRoadNetwork(const RoadNetwork &network, const RoadBakeOptions &options)
Bake every edge, junction platform, pier, marking and navigation overlay.
EVENGINE_API_DOMAINS Result< int > restoreHeightmapFromRoad(Heightmap &terrain, const RoadTerrainConformReceipt &receipt)
Atomically restore a conformance receipt if none of its samples became stale.
EVENGINE_API_DOMAINS Result< RoadTerrainConformReceipt > conformHeightmapToRoadWithReceipt(Heightmap &terrain, const MeshBuild &roadMesh, const RoadTerrainConformOptions &options={})
Atomically conform terrain and return the exact reversible sample delta.
Options for baking a road network into mesh + navigation overlays.
Definition RoadBake.h:43
float junctionChordError
Maximum junction-return tessellation error in world metres.
Definition RoadBake.h:53
float sideObjectClearance
Minimum 3D clearance from other roads and accepted side anchors.
Definition RoadBake.h:56
std::size_t maximumMeshElements
Combined vertex and index output budget.
Definition RoadBake.h:58
Owning bake result: mesh, overlays and generic decoration placement points.
Definition RoadBake.h:62
Owning bake-time overlay snapshot (no pointers into the network).
Definition RoadTypes.h:116
World/grid mapping and bounded blending settings for road-to-terrain conformance.
Definition RoadBake.h:18
Exact changed samples needed to safely restore one road terrain conformance. @cost Storage,...
Definition RoadBake.h:32
int skippedTunnelSamples
Cells whose terrain roof was kept above tunnel surfaces.
Definition RoadBake.h:36
int skippedBridgeSamples
Cells kept below elevated road surfaces.
Definition RoadBake.h:35
std::vector< std::size_t > sampleIndices
Definition RoadBake.h:37