Graph Node Overview
Map Sources
Creates a map (of float values) of the environment. It can be used to generate terrain if used as a height map, to filter spawned objects, or as an input for several other nodes.
Info: The maps are visualized in a black/white/blue manner. White is always the maximum value (does not have to be “1”), and black always represents the minimum value (does not have to be “0”). Shades of blue are used for negative values.
All these nodes generate “Map” data types:
Constant Value
Outputs a map with a constant value.
Constant One
Outputs a map with only “1”s.
Constant Texture
Outputs a defined texture as a map.
Constant Zero
Outputs a map with only “0”s.
Terrain Elevation
The height map of the earth surface retrieved from satellite images. Note that neither tunnels nor bridges are contained. Additionally, the map is not detailed enough to foresee the vehicle’s altitude.
Perlin Noise
Outputs a perlin noise.
Example Use Case: Adding synthetic variety by either adding or multiplying perlin noise to another image.
Pose Set Rasterizer
This node transforms a “pose set” into a map. This node is very helpful for visualization/preview purposes in the graph.
Example Use Case: Using the distance transform to get the distances to the closest pose.
OSM Geometry Rasterizer
Returns a “black and white” image of where the queried entities are. The results can either be drawn filled or as an outline.
Info: Geometry that is not closed (roads) but drawn with the filled style will result in odd looking shapes.
Example Use Case: Using the park query to only allow spawning of trees in this permitted area and feeding it into a grass texture layer.
Road Network Mask
➞ Visit the in depth page
Blend Texture At Pose Heights
Blends a given texture at the positions of a set of poses with the input map and returns the blended map. Height and Alpha channel can be chosen from the source texture. A scale factor is multiplied with the xz-scale as well the height of the blended pattern.
Note: The Height channel is added to the poses' y-positions and then blended with the input map's height data.
Example Use Case: Used to blend patterns from a texture with an existing terrain map. The texture can incorporate a channel for actual height values as well as a channel for alpha blending values.
Map Modifiers
Map operators are a set of nodes used to modify “Maps” in different ways.
Blur
Adds blur to the “black and white” image.
Example Use Case: Smoothing edges to let values fade into each other.
Convolute
A custom convolution. https://en.wikipedia.org/wiki/Convolution
Example Use Case: Using a Sobel filter kernel to highlight edges. https://en.wikipedia.org/wiki/Sobel_operator
Distance Transform
➞ Visit the in depth page
Math
Feel free to explore the possibilities!
Remap
➞ Visit the in depth page
Normal Projection Evaluator
Computes the dot-product between the given normal and the derived input image at every position.
Example Use Case: Evaluating how steep the slope of a hill is in order to, say, put trees on top and stones at the side of the hill.
Scale
Scales the map values by a given factor.
Pose Set Sources
Pose sets define a group of positions. They are usually used as a preprocessing step to spawners as there are several nodes to modify the poses before spawning objects based on a pose set.
All these nodes generate “PoseSet” data types:
Grid Poses
The Grid Poses node generates an even grid of poses.
OSM Poses
➞ Visit the in depth page
Road Network Poses
➞ Visit the in depth page
Pose Set Modifiers
There are a variety of nodes to process the generated pose sets.
Add Random Rotation
Randomly rotates the generated poses.
Add Random Translation
Randomly translates/shifts the generated poses.
Remove By Map
Uses a map to remove/mask certain poses.
Example Use Case: You want to spawn coins on the road, but based on the road width, you want to have more of them. Then you can combine it with the Grid Positions node like in the example above.
Remove Close Neighbours
Removes poses that are closer than the defined distance.
Example Use Case: Cleaning up your poses to make them less dense. RotateTowardsGradientDirection
Rotates poses depending on the gradient.
Example Use Case: Rotating spawned objects toward a road.
Translate Along Gradient
Move poses in the direction provided by a gradient.
Example Use Case: Moving spawned objects away from the road.
Set Heights By Map
➞ Visit the in depth page
Unify Poses
The Unify Poses node fuses multiple pose sets to one.
Example Use Case: Cleaning up / simplifying your graph.
Portals
➞ Visit the in depth page
Spawners
As the name indicates, spawners are the node type to spawn prefabs and game objects in your scene based on different rules.
OSM Building Spawner
This spawner is dedicated to spawning buildings on places where buildings also exist in the real world. It uses the outline of a building and creates a 3D mesh with the chosen material applied.
Pose Set Spawner
➞ Visit the in depth page
Road Network Spawner
This spawner spawns objects on all roads (note: roads can also be pedestrian walkways or similar).
Speciality for Road Network Spawner – Geometry Bending By adding the component RouteGeometryBender to a prefab, it is possible to bend the geometry with the route spline.
As the bending target, a MeshCollider and/or MeshFilter can be added to the component. The bending resolution determines the sample count on the spline. In order to get a satisfying result, an evenly tessellated mesh with a sufficient resolution should be provided.
Example Use Case: Generating tunnels or trenches to drive or fly through spaces in VR.
Grid Spawner
➞ Visit the in depth page
Unconstrained Grid Spawner
Allows spawning objects in a grid, like the Grid Spawner, but is not restricted by the Extents of the Elastic Scene Generator.
Note
Due to the Spawner being able to spawn objects in areas without Map data, the Spawner does not allow graph data injection.
OSM Spawner
The OSMSpawner spawns objects based on OSM/Overpass queries.
Collision Solver
To keep objects from intersecting with each other, you can add a CollisionSolver component to the prefab of the game object that you want to place.
Note that intersections can be detected only with game objects that have some sort of collider attached to them. The terrain itself is excluded from all intersections. The physics engine then takes care of shifting objects over a certain number of iterations.
Elastic Scene Definition
➞ Visit the in depth page
Texture Layer
➞ Visit the in depth page
Data Provider Nodes
Data Provider nodes allow the user to select one element of a list using different approaches.
Currently the ElasticSDK offers the following nodes.
Pick Prefab Randomly
➞ Visit the in depth page
Pick Prefab by Map
➞ Visit the in depth page