All Projects → reinterpretcat → Utymap

reinterpretcat / Utymap

Licence: apache-2.0
Highly customizable library for procedural world generation based on real map data

Projects that are alternatives of or similar to Utymap

Geomapping With Unity Mapbox
Geomap is the virtualization of data that maps a Country. Mapbox Unity SDK gives data(Global map layers of Streets, Buildings, Elev, and Satellite) generating custom 3D worlds for Mobile VR/AR apps.
Stars: ✭ 118 (-85.7%)
Mutual labels:  unity3d, augmented-reality, virtual-reality
Unity Webxr Export
Develop and export WebXR experiences using Unity WebGL
Stars: ✭ 130 (-84.24%)
Mutual labels:  unity3d, augmented-reality, virtual-reality
Hover Ui Kit
Create beautiful user interfaces for immersive VR/AR experiences.
Stars: ✭ 662 (-19.76%)
Mutual labels:  unity3d, augmented-reality, virtual-reality
Ar Vrcourse
VR,AR,MR 开发入门教程
Stars: ✭ 298 (-63.88%)
Mutual labels:  unity3d, augmented-reality, virtual-reality
Dungeontemplatelibrary
🌏: Dungeon free resources (terrain & roguelike generation)
Stars: ✭ 595 (-27.88%)
Mutual labels:  procedural-generation, unity3d, virtual-reality
Mapssdk Unity
This repository contains samples, documentation, and supporting scripts for Maps SDK, a Microsoft Garage project.
Stars: ✭ 307 (-62.79%)
Mutual labels:  unity3d, virtual-reality, maps
Enhancer
A collection of utilities to enhance the Unity Editor
Stars: ✭ 394 (-52.24%)
Mutual labels:  unity3d, gamedev
Holoshield
Highly customizable sci-fi shield / force field shader for Unity3D. Allows you to set edge power & color, inner texture scrolling, waviness, scale pulsation and procedural intensity noise. Implements tessellation for low-poly base meshes.
Stars: ✭ 401 (-51.39%)
Mutual labels:  unity3d, gamedev
Verticaldissolve
Procedural vertical dissolve shader. Highly customizable. Tweak edge color, noisiness & waviness, rim light, emission scrolling and more.
Stars: ✭ 434 (-47.39%)
Mutual labels:  unity3d, gamedev
Consolation
In-game debug console for Unity.
Stars: ✭ 489 (-40.73%)
Mutual labels:  unity3d, gamedev
Game Networking Resources
A Curated List of Game Network Programming Resources
Stars: ✭ 4,208 (+410.06%)
Mutual labels:  unity3d, gamedev
Timezone Boundary Builder
A tool to extract data from Open Street Map (OSM) to build the boundaries of the world's timezones.
Stars: ✭ 469 (-43.15%)
Mutual labels:  maps, openstreetmap
Texturepanner
This repository hosts a shader for Unity3D whose main goal is to facilitate the creation of neon-like signs, conveyor belts and basically whatever based on scrolling textures
Stars: ✭ 528 (-36%)
Mutual labels:  unity3d, gamedev
Unity2d Components
A constantly evolving array of Unity C# components for 2D games, including classes for pixel art cameras, events & messaging, saving & loading game data, collision handlers, object pools, and more.
Stars: ✭ 375 (-54.55%)
Mutual labels:  unity3d, gamedev
Unity Shadersketches
Sketches made with ShaderLab in Unity.
Stars: ✭ 362 (-56.12%)
Mutual labels:  procedural-generation, unity3d
Mapbox Gl Native
Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
Stars: ✭ 4,091 (+395.88%)
Mutual labels:  maps, openstreetmap
Texture maker
A texture maker tool for unity.
Stars: ✭ 358 (-56.61%)
Mutual labels:  procedural-generation, unity3d
Webxr Samples
Samples to demonstrate use of the WebXR Device API
Stars: ✭ 487 (-40.97%)
Mutual labels:  augmented-reality, virtual-reality
Texturesynthesis
Texture synthesis from examples
Stars: ✭ 709 (-14.06%)
Mutual labels:  procedural-generation, gamedev
Lovr
Lua Virtual Reality Engine
Stars: ✭ 743 (-9.94%)
Mutual labels:  gamedev, virtual-reality

experimental Build Status Coverity Release Join the chat at https://gitter.im/reinterpretcat/utymap

Table of Contents

Description

utymap is a library which provides highly customizable API for procedural world generation using real vector map data, e.g. OpenStreetMap, NaturalEarth. Core logic is written on C++11 and can be used on many platforms as it has no dependency to specific game engine or application framework. It is designed for interactive world creation at different zoom levels, including globe and street level.

Status

Current master branch has a very experimental version. It is recommended to use the latest release.

Build

See instructions here.

Structure

Source code

Project consists of four sub-projects:

  • android contains Android Studio project to build core library for Android platform.
  • core contains essential logic written on C++11 for constructing of map based apps: mesh generators, mapcss parser, spatial geo index, etc. It does not depend on any 3D render framework or game engine.
  • docs contains documentation files.
  • unity contains examples written on C# which can be reused to build map oriented Unity3D apps using core library. It demonstrates basic use cases: globe zoom level rendering, 3D scene with all details.

Documentation

Best way to start with the project is reading documentation files in docs folder which cover the following topics:

Demo scenes

The simplest way to explore the project is to check source code of demo scenes:

  • Import scene shows how to import map data from a file. Please note, that import and rendering logic depends on mapcss rules which means you cannot use arbitrary mapcss with arbitrary data format.
  • Elevation scene shows how elevation support works. Please note, as scene loads multiple tiles at once, mapzen server might reject some of requests. Also, first time loading takes time: just wait a little bit and restart the scene again. Once processed, all downloaded data is cached inside StreamingAssets/index folder.
  • Customization scene demonstrates three aspects of customization:
    • How to use custom logic for building game objects from existing map data
    • How to use custom prefabs to replace arbitrary elements on the map
    • How to add new elements to map data and scene
  • Search scene demonstrates offline search API in action which can be used for exploring nearby objects by their specific characteristics (bus stops, bars, etc.)
  • Third Person contains default third person character from standard assets which can walk around rendered environment. Another interesting part here is how text search can be used to get nearest address from OSM data.
  • Map scene is the most advanced one. It is designed to be a full functional map component which can be used in mobile builds. It supports zoom levels from globe overview till street view.

Features

Mobile support

Performance is constantly in main focus. As result, utymap can be used on mobile phone: just check demo app in play store. Of course, there are still areas for improvements.

Various map data

utymap can use various vector map data sources and file formats:

  • Mapzen (geojson)
  • OpenStreetMap (pbf, xml)
  • NaturalEarth (shape data)

Theoretically, you can extend utymap with any vector map data format support.

Multiple zoom levels

utymap can load your scene at different zoom levels:

Zoom:Demo

In this demo, mapzen data is used for zoom levels from 1 till 15 and OpenStreetMap for zoom level 16.

Non flat terrain

utymap encapsulates elevation processing internally to support different elevation data providers:

  • raw SRTM
  • mapzen elevation data
  • your own elevation data by conversion in simple text format

This old demo is built using elevation data provided by mapzen:

Elevation:Prague

Custom styles

utymap supports styling via CSS-like language:

area|z16[building],
area|z16[building:part] {
    builder: building;
    height: 12m;
    min-height: 0m;
    facade-color: gradient(#c0c0c0, #a9a9a9 50%, #808080);
    ...
}
area|z16[roof:shape=skillion] {
    roof-type: skillion;
}
area|z16[building:color] {
    roof-color: eval("tag('building:color')");
}
area|z16[building:material=brick] {
    facade-color: gradient(#0fff96, #0cc775 50%, #066139);
    facade-texture-type: brick;
}

For example, you can have different styles for different seasons of year. Or you can vary textures based on region

Tree generation

utymap can consume map data to generate more complex tries via custom L-System implementation

Flexible extension

If you want to build or use your own models, extend application logic (for example, by attaching MonoBehaviour to generated meshes), you can do it using custom scripts in Unity:

public GameObject Build(Tile tile, Element element)
{
    GameObject gameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
    gameObject.name = GetName(element);

    var transform = gameObject.transform;
    transform.position = tile.Projection.Project(element.Geometry[0],
        GetMinHeight(element) + element.Heights[0]);
    transform.localScale = new Vector3(2, 2, 2);

    gameObject.GetComponent<MeshFilter>().mesh.uv = GetUV(element);
    gameObject.GetComponent<MeshRenderer>().sharedMaterial = GetMaterial(element);

    return gameObject;
}

Map data is encapsulated via Element class which provides access to raw geometry and attributes.

Map editor

You can build your own objects (buildings, roads, etc.) on top of generated objects:

IMapDataEditor editor = _compositionRoot.GetService<IMapDataEditor>();
var node = new Element(7,
    new GeoCoordinate[] { new GeoCoordinate(52.53182, 13.38762) },
    new double[] { 0 },
    new Dictionary<string, string>() { { "name", "Near me" } },
    new Dictionary<string, string>());

editor.Add(MapStorageType.InMemory, node, new Range<int>(minLevelOfDetail, maxLevelOfDetail));

This data can be stored in multiple data storages located on disk or memory to keep original map data untouched.

Contacts

Do not hesitate to contact me using gitter chat link above.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].