Giter Site home page Giter Site logo

mesh-voxelization's Introduction

Mesh-Voxelization

This project converts a mesh into voxels in Unity. The idea is to ray trace the mesh and find where each ray intersects a triangle. These positions can then be used to make a 3D array of voxels.

The ray tracing is accelerated by using a AABB tree to group the mesh triangles. The AABB tree should be much faster for large meshes but the overhead might not be worth it for smaller meshes.

The original code for the AABB tree can be found in the core section of this collection of code from Miles Macklins blog.

For the demo scene the voxels are converted back into a mesh by adding quads at the edge of each voxel.

The mesh before voxelization.

Before voxelization

The mesh after voxelization.

After voxelization

mesh-voxelization's People

Contributors

scrawk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mesh-voxelization's Issues

Disable box on view

I have a weird question specific to my use case.

I have a raycast in my player which acts as its vision or to put it simple imagine it is the laser it uses to shoot.

Could you please help me know how can I disable every Box that is touched by the raycast ? (Every box that is "seen" is disabled since it has been seen.) I am asking such a simple question because I am not making the assumption that each box is a game object...

This would mean the world to me ๐Ÿ™๐Ÿ™๐Ÿ™ based on my limited knowledge I guess I would do something like this (let me know if i am wrong or if you have any feedback):

void Update(){ 
    var ray = new Ray(this.transform.position, this.transform.forward)
    RaycastHit hit;
    if (Physics.Raycast(ray, out hit, 100)){
        lastHit = hit.transform.gameObject;
        // is this correct? will this be a single Box from the voxels?
        lastHit.setActive(false);
        // could i also change the color maybe? to some gray-ish so it looks "disabled"? 
        lastHit.material = disabledMaterial;
    }
}

Second question: are the transform.forward of the Box-es pointing in the direction of the normals of the mesh or are they all pointing in the same direction (up?) ? this might be a problem for me. Imagine I want to only disable a Box if the raycast is within a 60 degree angle from the transform.forward of the box, which should be in the direction of the normal of the mesh,.. but if it is not like that oriented then I am a bit in trouble and need to figure out how to do this...

Now that I think of it!! Maybe I can just add a transform as a child to every box, but how can I retrieve the appropriate Quaternion, that was the normal to the original mesh ?

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.