diff --git a/documentation/docfx_project/docfx.json b/documentation/docfx_project/docfx.json index 3e03762a2..29115d05f 100644 --- a/documentation/docfx_project/docfx.json +++ b/documentation/docfx_project/docfx.json @@ -80,6 +80,32 @@ "_site/**" ] }, + { + "src": "../docs/MeshGeneration/Factories", + "dest": "docs/MeshGeneration/Factories", + "files": [ + "*.md", + "*.yml", + "toc.yml" + ], + "exclude": [ + "obj/**", + "_site/**" + ] + }, + { + "src": "../docs/MeshGeneration/Factories/Modifiers", + "dest": "docs/MeshGeneration/Factories/Modifiers", + "files": [ + "*.md", + "*.yml", + "toc.yml" + ], + "exclude": [ + "obj/**", + "_site/**" + ] + }, { //put docfx_project/toc.yml into _site root to get navigation bar on top "files": ["toc.yml"] } @@ -89,7 +115,8 @@ "src": "../docs/", "dest": "docs", "files": [ - "images/**" + "images/**", + "MeshGeneration/Factories/Images/**" ], "exclude": [ "obj/**", diff --git a/documentation/docs/06-map-factory-framework.md b/documentation/docs/06-map-factory-framework.md new file mode 100644 index 000000000..3eec46a92 --- /dev/null +++ b/documentation/docs/06-map-factory-framework.md @@ -0,0 +1,27 @@ +# Map Factory Framework + +This framework allows you to create and style your maps through factory and visualization abstractions. The system is intended to be designer-friendly by serializing configuration settings in `ScriptableObjects`. + +## Map Controller + +Not a part of the Map Visualization structure but respresents the rest of the application and requests tiles from Map Visualization. + +## Map Visualization + +Core class of the visualization tree, keeps and manages the factories. + +###Factories + +Factories are wrappers around Mapbox Api end points like raster image or vector data. + +####[Terrain Factory](MeshGeneration/Factories/TerrainFactory.md) + +Factory responsible for creating the world base. + +####[Map Image Factory](MeshGeneration/Factories/MapImageFactory.md) + +Factory responsible for assigning materials and textures to the world base mesh. + +####[Mesh Factory](MeshGeneration/Factories/MeshFactory.md) + +Factory responsible for the visualization of vector data. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Images/flatterrain.png b/documentation/docs/MeshGeneration/Factories/Images/flatterrain.png new file mode 100644 index 000000000..f0e0b2035 Binary files /dev/null and b/documentation/docs/MeshGeneration/Factories/Images/flatterrain.png differ diff --git a/documentation/docs/MeshGeneration/Factories/Images/modifiedterrain.png b/documentation/docs/MeshGeneration/Factories/Images/modifiedterrain.png new file mode 100644 index 000000000..543bcff45 Binary files /dev/null and b/documentation/docs/MeshGeneration/Factories/Images/modifiedterrain.png differ diff --git a/documentation/docs/MeshGeneration/Factories/Images/realheight.png b/documentation/docs/MeshGeneration/Factories/Images/realheight.png new file mode 100644 index 000000000..860cf76f9 Binary files /dev/null and b/documentation/docs/MeshGeneration/Factories/Images/realheight.png differ diff --git a/documentation/docs/MeshGeneration/Factories/MapImageFactory.md b/documentation/docs/MeshGeneration/Factories/MapImageFactory.md new file mode 100644 index 000000000..5ae6c7e08 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/MapImageFactory.md @@ -0,0 +1,3 @@ +# Map Image Factory + +Factory responsible for assigning materials and textures to the world base mesh. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/MeshFactory.md b/documentation/docs/MeshGeneration/Factories/MeshFactory.md new file mode 100644 index 000000000..e6c74e577 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/MeshFactory.md @@ -0,0 +1,59 @@ +# Mesh Factory + +Factory responsible for the visualization of vector data. + +##Layer Visualizers + +####[Vector Layer Visualizer](VectorLayerVisualizer.md) + +Creates visualization for polygon and line features in 3D space. + +####[Poi Layer Visualizer](PoiLayerVisualizer.md) + +Creates visualization for point features in 2D/3D space. + +##Modifier Stacks + +####[Modifier Stack](Modifiers/ModifierStack.md) + +Modifier stacks are pretty much styles for features. Stacks keep mesh & gameobject modifiers and run them on feature objects. This is the actual process creating visuals for features. + + +####[Merged Modifier Stack](Modifiers/MergedModifierStack.md) + +Works just like regular stacks but merges the mesh outputs. + +##Modifiers + + +###Mesh Modifiers + +Mesh Modifiers creates the data, like vertices, triangles, normals and UVs, to build meshes. + +####[Chamfer Modifier](Modifiers/ChamferModifier.md) + +Bevels corners and adds another vertex&line to craete a smoother corner. Work only with Polygon Mesh Modifier and used to create smooth building meshes. + +####[Polygon Mesh Modifier](Modifiers/PolygonMeshModifier.md) + +Creates polygon from a vertices of a polygon feature. Main used for creating building footprint, landuse, water etc meshes. + +####[Line Mesh Modifier](Modifiers/LineMeshModifier.md) + +Creates polygons from a vertices of a line feature. Mainly used for creating road, border, contour line meshes. + +####[Height Modifier](Modifiers/HeightModifier.md) + +Pushes a polygon up depending on the features height value and creates side walls down to features minimum height value or ground. + +####[UV Modifier](Modifiers/UvModifier.md) + +Creates UV map values for polygons. Works with Polygon Mesh Modifier. + +###Game Object Modifiers + +Game Object Modifiers works on and modifies an already existing game object with a mesh. + +####[Texture Modifier](Modifiers/TextureModifier.md) + +Changes the given game object's material. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/ChamferModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/ChamferModifier.md new file mode 100644 index 000000000..d7ebb4455 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/ChamferModifier.md @@ -0,0 +1,3 @@ +#Chamfer Modifier + +Bevels corners and adds another vertex&line to craete a smoother corner. Work only with Polygon Mesh Modifier and used to create smooth building meshes. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/HeightModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/HeightModifier.md new file mode 100644 index 000000000..329d9e4c0 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/HeightModifier.md @@ -0,0 +1,3 @@ +#Height Modifier + +Pushes a polygon up depending on the features height value and creates side walls down to features minimum height value or ground. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/LineMeshModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/LineMeshModifier.md new file mode 100644 index 000000000..10e8f8aad --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/LineMeshModifier.md @@ -0,0 +1,3 @@ +#Line Mesh Modifier + +Creates polygons from a vertices of a line feature. Mainly used for creating road, border, contour line meshes. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/MergedModifierStack.md b/documentation/docs/MeshGeneration/Factories/Modifiers/MergedModifierStack.md new file mode 100644 index 000000000..d8917a8f0 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/MergedModifierStack.md @@ -0,0 +1,3 @@ +#Merged Modifier Stack + +Works just like regular stacks but merges the mesh outputs. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/ModifierStack.md b/documentation/docs/MeshGeneration/Factories/Modifiers/ModifierStack.md new file mode 100644 index 000000000..5949d93ad --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/ModifierStack.md @@ -0,0 +1,3 @@ +#Modifier Stack + +Modifier stacks are pretty much styles for features. Stacks keep mesh & gameobject modifiers and run them on feature objects. This is the actual process creating visuals for features. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/PolygonMeshModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/PolygonMeshModifier.md new file mode 100644 index 000000000..2c45bd74f --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/PolygonMeshModifier.md @@ -0,0 +1,3 @@ +#Polygon Mesh Modifier + +Creates polygon from a vertices of a polygon feature. Main used for creating building footprint, landuse, water etc meshes. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/TextureModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/TextureModifier.md new file mode 100644 index 000000000..f63623c32 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/TextureModifier.md @@ -0,0 +1,3 @@ +#Texture Modifier + +Creates UV map values for polygons. Works with Polygon Mesh Modifier. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/Modifiers/UvModifier.md b/documentation/docs/MeshGeneration/Factories/Modifiers/UvModifier.md new file mode 100644 index 000000000..d4fd6be22 --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/Modifiers/UvModifier.md @@ -0,0 +1,3 @@ +#UV Modifier + +Creates UV map values for polygons. Works with Polygon Mesh Modifier. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/PoiLayerVisualizer.md b/documentation/docs/MeshGeneration/Factories/PoiLayerVisualizer.md new file mode 100644 index 000000000..3511b17ef --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/PoiLayerVisualizer.md @@ -0,0 +1,3 @@ +#Poi Layer Visualizer + +Creates visualization for point features in 2D/3D space. \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/TerrainFactory.md b/documentation/docs/MeshGeneration/Factories/TerrainFactory.md new file mode 100644 index 000000000..9b1ec6d3c --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/TerrainFactory.md @@ -0,0 +1,49 @@ +# Terrain Factory + +Terrain Factory creates the world base mesh. It's able to create flat terrain, real height terrain or modified terrain where real height is multiplied by a factor. + +####Parameters + +**Map Type**: Flat, Height or Modified Height. + +**Map ID Type**: Data source used in the *Height* and *Modified Height* map types. Default value is "mapbox.terrain-rgb". + +**Height Multiplier**: Used in *Modified Height* map type as a simple multiplier on queried terrain height. + +**Resolution**: Terrain is generated as a grid mesh and resolution represents the sample count on each edge of this grid. + +**Material**: Base material for the generated mesh. Will most likely be overridden by MapImageFactory but useful if you're not using it. + +**Update**: Update function recreates the terrain using current parameters. + +####Methods + +Terrain factory has three public methods; `Initialize`, `Register` and `Update` coming from the base `Factory` class. + +`Initialize` method clears and reinitalizes the registered tile list. Can be used as a reset method. + +`Register` method adds new tiles to the registered tiles list to be processed. + +`Update` method clears the mesh data for all tiles and recraetes them using current settings. Clearing the mesh data first is important for stitching tile edges to each other. + + +Private method `Run` starts the processing of a tile and directs tile to different functions depending on the `Map Type` parameter. These methods can be extracted into external modules in the future. + +`CreateTerrainHeight` fetches the data from the Mapbox server and passes it to `GenerateTerrainMesh` for mesh generation, which creates a grid and queries the data for height of each node in this grid. Mesh vertices, triangles, normals and UV map are all created and set in this function. + +`FixStitches` method stitches the edges of terrain tiles to make it look continuous and smooth. + +`CreateFlatMesh` creates a quad as base mesh and doesn't use resolution. + + +##Flat Terrain + +![flat terrain](images/flatterrain.png) + +##Real Height + +![real height terrain](images/realheight.png) + +##Modified Terrain Height + +![modified terrain](images/modifiedterrain.png) \ No newline at end of file diff --git a/documentation/docs/MeshGeneration/Factories/VectorLayerVisualizer.md b/documentation/docs/MeshGeneration/Factories/VectorLayerVisualizer.md new file mode 100644 index 000000000..a365a53df --- /dev/null +++ b/documentation/docs/MeshGeneration/Factories/VectorLayerVisualizer.md @@ -0,0 +1,3 @@ +#Vector Layer Visualizer + +Creates visualization for polygon and line features in 3D space. \ No newline at end of file diff --git a/documentation/docs/toc.yml b/documentation/docs/toc.yml index b54a6c56e..d2b2bdc51 100644 --- a/documentation/docs/toc.yml +++ b/documentation/docs/toc.yml @@ -16,5 +16,8 @@ - name: Changelog href: 05-changelog.md +- name: Map Factory Framework + href: 06-map-factory-framework.md + - name: HoloLens Development href: hololens-development.md \ No newline at end of file