Giter VIP home page Giter VIP logo

isosurface's Introduction

isosurface

A project testing and comparing various algorithms for creating isosurfaces.

In an effort to find the best way of making a dynamic voxel engine, I've been researching new methods of extracting isosurfaces from data sets. I'm making my findings open-source. Some of the code is borrowed/inspired by existing implementations, but most is my own. It's not very optimized and it doesn't have much of a use outside of displaying data, but maybe you'll find some use in it.

See Game1.cs for a more detailed outline. Each class contains at least some documentation containing what it does and what issues it may have (None of the implementations are 100% working according to the original papers).

This requires XNA 4.0 to build and run

Implemented and Mostly Working Algorithms

  • 2D Uniform Dual Contouring
  • 2D Adaptive Dual Contouring
  • 3D Uniform Dual Contouring
  • 3D Adaptive Dual Contouring
  • Dual Marching Squares (Schaefer's and Warren's) [2D Dual Marching Cubes]

Notes

  • The 2D DC implementations don't connect properly; they were my first tests with DC and have some issues, and the adaptive implementation doesn't have simplification
  • My QEF solver is hardly a QEF solver; Rather, it takes a set of offsets to apply to the mass point and find the one that has the lowest error, so do not use this as an example of what to do
  • The QEF solver is disabled in the 3D DC implementations but can be enabled (simplification needs some tweaks); sharp features will be lost and mesh will be deformed if the error tolerance is high without it
  • Dual Marching Squares currently doesn't move the dual grid vertices to their ideal locations to preserve sharp features

Controls

  • Space - Adjust quality (ADC3D only)
  • Tab - Switch algorithm
  • 1 - Toggle mesh visibility
  • 2 - Toggle outline/tree visiblity
  • 3 - Toggle solid/wireframe/both rasterization
  • C - Toggle mouse locking

Adaptive dual contouring Dual marching squares

isosurface's People

Contributors

lin20 avatar

Watchers

 avatar  avatar

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.