Coder Social home page Coder Social logo

vb6hobbyst7 / voxels Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stoyannk/voxels

0.0 1.0 0.0 1 MB

Voxels Library - C++ library for voxel manipulation and polygonization

Home Page: http://stoyannk.wordpress.com/voxels-library/

License: Other

C++ 99.55% CMake 0.41% C 0.04%

voxels's Introduction

Voxels Library - Library for Voxel manipulation and polygonization

Official Voxels website: http://stoyannk.wordpress.com/voxels-library/

General Notes

Voxels is a library for manipulating voxel grids and triangulating them to triangle soups. The library supports grid compression and fast polygonization using the TransVoxel algorithm.

Voxels is in alpha. Unfortunately I don't have enough time to dedicate it and at this point there are no plans to update the library. No significant changes were applied to the library since the first public release in 2014. The library depends on my dx11-framework for some utilities - nothing that can't be easily ported. When building make sure you have also downloaded the dx11-framework files. The gist of the library is the "TransVoxelImpl.cpp" file that implements the Transvoxel algorithm along with the LOD levels and the vertex transitions. The Grids can be sompressed and saved/loaded to disk - take a look at the "VoxelGrid.cpp" file.

Major features

  • Polygonization based on the TransVoxel algorithm
  • Level of detail
  • Dynamic Material support
  • Dynamic manipulation
  • Voxel grid compression
  • Scalable implementation
  • Pluggable grid generation

Voxels advantages

Voxel-based surfaces allow for more freedom than usual polygon-based ones. The major advantages of such a representation can be summarized as follows:

  • Freedom of form - You can create virtually any surface configuration. Gives much more possibilities than heightmaps for terrains for instance. With usual heightmaps you can't have caves or overhangs as part of the terrain mesh.
  • Destructibility/constructibility - The voxel surface can be trivially modified in real-time allowing easy sculpting. Allow users to create their worlds or destroy them.
  • Procedural generation - Procedural surfaces can easily be created, which diminishes greatly the content creation effort and possibly the memory footprint of the whole application

Requirements

  • Windows 32-bit or 64-bit
  • SSE2-enabled processor
  • Voxels scales very well across processor cores; the more available on the machine - the faster the polygonization process will be.

The library is not strictly cross platform at the moment. I haven't tried it on other targets, but there shouldn't be hurdles porting it.

Documentation

Detailed documentation is available in the doc_source folder.

Samples

A sample application that uses Voxels is available on http://github.com/stoyannk/volumerendering. A pre-built version of the sample with editing functionality is available in the Download section.

Acknowledgements

Voxels uses the TransVoxel algorithm as described in: Lengyel, Eric. “Voxel-Based Terrain for Real-Time Virtual Simulations”. PhD diss., University of California at Davis, 2010. For more information please refer to http://www.terathon.com/voxels/. Voxels uses the GLM maths library http://glm.g-truc.net/0.9.7/index.html

License

The library is licensed under the permissive 3-clause BSD license. Please refer to the LICENSE file for all the details.

voxels's People

Contributors

stoyannk avatar

Watchers

 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.