3D Render

From F4 Map
Jump to: navigation, search


[edit] General

Most of our feature handle these common tags:

  • colour=color description (word or hexadecimal RGB value)
  • height=number in meters
  • min_height=number in meters

[edit] Ground

[edit] Shading

Ground shading is done with a tile based process using Tilemill and Mapnik with svg and textures to add details upon OpenStreetMap data.

[edit] Elevations

The ground elevation is done in a distance adaptive way to get something more precise while zooming closer to the ground. Elevation data comes from DEM3 with a maximum precision of 90m.

[edit] Buildings

[edit] Buildings & building:part

We are based on OpenStreetMap simple 3D building specification

over that base:

  • building:part not fully included in a building are ignored.
  • building:part inherits every building* tags from their parent building if they're not overrided on the part (color, roof shape, height etc).
  • height is generated semi-randomly from way_id if neither specified with height tag nor with building:levels tag (we use 3m/levels).
  • building:part polygons are removed from the outline polygon they intersects unless the outline is tag with building:part=yes.
  • outline with building:part=no or building:parts=vertical/horizontal are ignored.

[edit] "Special" buildings

We're using a proprietary modeled building database (check the Eiffel Tower) transfered as a binary form.

They can be disabled using the "F4 specific buildings" button in the graphic options window.

[edit] Roofs

[edit] Shape

We support simple roof shapes from roof:shape, building:roof:shape and building:shape tags:

   flat [default]
   saltbox (rendered as double_saltbox)
   triple_saltbox (rendered as quadruple_saltbox)

We generate buildings with man_made=chimney or tower:type=cooling using an Hyperboloid shape.

We handle building:part=steps with roof:shape=skillion (if step:height is not specified we'll use 16cm).

[edit] Orientation

Roofs ridges are generated using a straight skeleton algorithm.

If roof:orientation=along/across we will use the optimal oriented bounding box (oBox) to find the ridge orientation.

[edit] Height

If roof height if not defined it will be generated:

Dome, Mansard, Gambrel and Round will use oBox minimal size to determine height.

Skillion will use 25% of building total height.

Others shape will use 4m.

[edit] Walls

Walls height is computed as height - roof:height.

If building=roof or wall=no walls won't be generated.

[edit] Colors

Colors are mapped upon this table

Hex colors are applied "as is".

When no colors are set, we're using a material to color table.

[edit] Materials

Reflect rate table:

   glass = 30%
   gold = 20%
   mirror = 99%

Walls will use building:facade:material, building:material or material tags.

Roofs will use roof:material or building:roof:material tags.

[edit] Urban details

[edit] Barrier

We generate wide polygons for barrier=wall|hedge and textured polygons for barrier=fence.

[edit] Smoke

If a building got a man_made=chimney or tower:type=cooling we ad a white smoke effect on top taking account of current wind direction and speed.

[edit] Sculpture

A Venus de Milo model is pushed on elements with monument=statue artwork_type|artwork:type=sculpture|statue. We handle height and min_height tags.

[edit] Street lamps

A specific model is added on highway=street_lamp points.

[edit] Wind generator

A specific animated model is added on power=generator and generator:source=wind points.

[edit] Petroleum well

A specific animated model is added on man_made=petroleum_well points.

[edit] Construction cranes

A specific animated model is added semi-randomly on landuse=construction polygons.

[edit] Power lines and poles

We handle power=line|minor_line with a black wireframe style with specific models for power=pole|tower points. The tag cables=(number) works on power=line.

[edit] Lighthouses

A specific model is added on man_made=lighthouse polygons and points. Height is taken from height tag or deduced from seamark tags.

[edit] Cemetery

We semi-randomly add graves on landuse=cemetery or amenity=grave_yard polygons.

[edit] Fountain

Animated particle generator is added on amenity=fountain polygons and points.

[edit] Flags

A specific animated flag model is added on golf=pin|hole (last point of lines, center of polygons or position of points) and man_made=flagpole.

[edit] Boats

A specific model is randomly added on lines with waterway=river|canal and boat:yes|designated|permissive or route=ferry.

[edit] Aerialways

A specific model is added on points with aerialway=pylon. Cables are renderered on lines with aerialway=cable_car|j-bar|t-bar|platter|drag_lift|gondola|chair_lift|mixed_lift. Animated gondolas are added along aerialway=cable_car|gondola|chair_lift.

[edit] Natural details

[edit] Water

The water effect is injected inside the ground texture tiles and its wave direction is global to the whole world.

[edit] Trees, Forests, Scrubs

Trees are inserted:

  • onto points with natural=tree
  • semi-randomly along lines with natural=tree_row
  • semi-randomly inside geometries with landuse=forest|orchard or natural=wood

We handle deciduous, conifer and palm trees, they are taken semi-randomly according to the current latitude if not specified in osm tags.

Bush are inserted:

  • semi-randomly inside geometries with natural=heath|scrub

[edit] Vineyards

Polygons with landuse=vineyard are randomly filled with aligned hedges.

[edit] Stones

A specific model is added on natural=stone and megalith_type=true points, lines and polygons.

[edit] Weather

Clouds, rain, snow... are rendered using worldweatheronline API, we cache its response with a 1° precision for 2h.

Wind direction and speed is forwarded to the clouds dome and the chimney smoke effects.

Personal tools