Git Product home page Git Product logo

orbiter-tileedit's Introduction

Orbiter tileedit project

tileedit is a texture tile viewer and editor for [Orbiter Space Flight Simulator] (http://orbit.medphys.ucl.ac.uk).

It can be used to navigate the quadtree texture layers for planetary surface rendering introduced in Orbiter 2016. It also contains some rudimentary editing capabilities for elevation tiles.

tileedit is written in C++ and based on Qt to provide the user interface. The previous Matlab-based implementation is now obsolete and retained for reference.

Author: Martin Schweiger

tileedit is licensed under the GNU General Public License Version 3. See file "COPYING" for details.

orbiter-tileedit's People

Contributors

mschweiger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

orbiter-tileedit's Issues

Don't allow editing non-existing tiles

Currently it is possible to edit a non-existing elevation tile, i.e. one that is displayed as a sub-area of an ancestor tile. Edits go to the ancestor, but don't work properly and corrupt the tile.

Instead, editing the ancestor should not be allowed at all.
The user should be warned, and offered the option to create the tile before editing. This also requires the ability to create a new elevation tile as an interpolated ancestor sub-area, which is not yet implemented.

Save surface tile edits/imports in temporary PNG files

To prevent quality degradation of surface tiles across edit cycles, save any edited or imported tiles in a temporary directory as PNG files and load these for further edits.

Upon committing a tile, save it as DXT1 in the Surf layer (but optionally keep the PNG versions to allow further edits.)

PNG export: allow user-defined image scaling

Provide interface to set the mapping from elevation data to 16-bit greyscale values.
Modify the vmin and vmax output in the metafile to define that mapping compatible with ele2png.

Importing nonexisting surface tiles fails

  • Importing a patch for surface tiles which don't exist yet does not work correctly.
  • Propagating an imported patch to non-existent ancestors also fails.

Correct behaviour should be to create new tiles as required. Before import, the required tiles should be synthesized by interpolating an ancestor so that alpha-blending and colour-matching functions can be applied.

Add support for PNG export/import of elevation tiles

Exporting elevation tiles to PNG makes it easier to edit using image editors.

Export either to single-channel 16-bit data, or to 3-channel 8-bit RGB data using a fixed LUT.
Tile scale and offset values should be stored as custom tags in the PNG file.

Migrate tileedit to Qt

Matlab-based code isn't ideal since for developers it requires a Matlab license to compile, and for users it requires installing the bulky Matlab runtimes.

I am migrating tileedit to Qt to avoid these problems. Initially this should just replicate the Matlab functionality.

Matlab implementation is moved to "matlab" subdirectory. The Qt implementation sits alongside in the "qt" branch.

Provide support for surface tile import from png images

Allow surface tiles to be created from png images. Essentially a replication of the plsplit functionality. No export support to be added though since the lossy DXT1 data format used for storing surface tiles would lead to data degradation on export-import cycles.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.