novagraphix_iconNovaGraphix
voxelmesh_0
voxelmesh_1
voxelmesh_2
voxelmesh_3
VOXEL STRUCTUREApril 11, 2023

Voxel Representation & Features

  • Data compression is used to minimize data transfer volume.
  • JS heap memory is deleted immediately after use.
  • Voxel volume requires 4 bytes or 8 bytes per voxel.
    • For a 4-byte voxel, 256 colors are used.
    • For a 8-byte voxel, full-sized colors are used. (cf: atlas texture available)
  • Chunk structure: not used for reducing memory waste, unlike existing research.
  • 3D indexing approach: not used for reducing performance degradation due to expensive multiplication, unlike existing research.
voxelMesh_introduction
voxelMesh_example
VOXEL MODELINGApril 11, 2023

Geometric Modeling & Processing

  • Element types: seven voxel geometries supported.
    • Cube: typical voxel shape
    • Box: variable in width, height, and thickness
    • Cylinder: variable radius and height
    • Sphere: possible changed to oval shape
    • Tetrahedron: magnification applicable in each direction
    • Octahedron: possible changed into diamond shape
    • Lego: basic form of Lego is supported (its size can be changed)
    • Custom: user-specific shapes will also be supported
  • Inquire: we check whether a voxel exists at an offset distance from the current position of the voxel, and returns its value if it exists.
  • Topology: three functions are provided for extracting neighboring voxels.
    • Face-connected: extracts 6 neighboring voxels that share 6 faces of a voxel
    • Edge-connected: extracts 12 neighboring voxels that share 12 edges of a voxel
    • Vertex-connected: extracts 8 neighboring voxels that share the 8 vertices of a voxel.
  • Boundary checking: we check whether a specific voxel is in the boundary and returns true or false.
  • Affine transformation: for example, voxel size can be scaled to reduce a memory waste caused by using a lot of voxels for large objects.
  • Ray intersection: voxels are selected using a mouse (touch). This extends to voxel painting to enable voxel editing.
  • Creating from point cloud: voxels are created from point data set, which does not require data order and has no problem with overlapping. It means 3D scanners can make voxels.
  • Shelling: we delete voxels that exist inside the volume (invisible part) to minimize memory.
  • Filling: we support the function of filling gaps such as holes on the boundary surface. Voxels lost in the middle of the surface can be restored.
  • Editing: voxels are first selected through mouse event and ray intersection, then we perform the voxel addition and deletion using the neighbor information of selected voxels. All work is carried out in an interactive manner.
  • VOX format: this format is supported, widely used in the voxel ecosystem.
boxVoxels
cylinderVoxels
sphereVoxels
tetrahedronVoxels
octahedronVoxels
legoVoxels
VOXEL RENDERINGApril 11, 2023

3D WebGL-based Rendering

  • PBR materials: shaders for physically-based rendering are supported, based on three.js.
  • ATLAS Texture: supported along with PBR shaders to increase the realism of VR and game worlds.
  • Frustum culling: voxels not rendered, which exist outside the viewing space.
  • Occlusion culling: voxels not rendered, which are hidden by other objects so are not visible to the camera.
  • Ambient occlusion: our shader program calculates how exposed each point in a scene is to ambient lighting by counting the presence of neighboring voxels.
ambientOcclusion
ambientOcclusion2
VOXEL ANIMATIONApril 11, 2023

Voxel Dynamics & Simulation

  • Compact structure: VoxelMesh does not use 32 x 32 x 32 chunks of memory to define a few voxels, while most current voxel engines use the chunks. Our VoxelMesh uses only as much memory as it uses, so memory usage can be drastically reduced.
  • GPU computation: VoxelMesh uses one thread per voxel so that each voxel can simultaneously perform the same algorithm. In other words, GPU-based programming is possible, which enables real-time animation development.
  • Signed distance functions: You can easily render a signed distance function (SDF) without any special algorithm. Therefore, various modeling operation functions of SDF can be used without modification. On the other hand, in the case of existing polygon models, the expensive marching cubes algorithm is required.
  • Particle dynamics: VoxelMesh includes a dual structure. One is that it supports a grid network like a general voxel engine, and the other is that it can implement particle dynamics which is hardly possible in existing voxel engines. For example, water simulation can be implemented using the PIC or FLIP algorithm.
  • Animation properties: VoxelMesh has 4 properties for voxel animation. These include size, opacity, life, and rotation. Their total size is 2 bytes.
  • Celluar Automata: VoxelMesh can simulate several types of celluar automata (CA) studied in various areas, including physics, theoretical biology and microstructure modeling.
alienMonster_01
alienMonster_02
alienMonster_03
voxelTween
voxelAutomata_01
voxelAutomata_02
VOXEL APPLICATIONSApril 11, 2023

Application Examples

  • 3D fractals: We create 3D fractals that are a range of chaotic equation-based objects, most often derived from the Mandelbrot set. Typical examples include Mandelbulb, Menger sponge, Juliabulb, Sierpinski tetrahedron, etc. These 3D models are quickly created and rendered in 3D space using the GPU.
  • 3D celluar automata: We build 3D voxels, called 3D cellular automata that are a collection of cells arranged in three-dimensional space, where each cell changes its state as a function of time according to a defined set of rules.
  • Iterated function system: We create 3D voxels from an iterated function system (IFS) which generates a 3D fractal by iterative equations (2D) or a set of transformations (3D).
  • SDF-based raymarch: The SDF(signed-distance function) is used to define the shape and rendering properties of the 3D model, and the ray-march approach is used to generate the final 3D voxel models. By compositing multiple SDF models, more complex voxel models can be created.
  • 3D tween: We create a voxel model at one specific frame in the timeline. And, change that voxels at another specific frame. Animate then interpolates the intermediate models for the frames in between, creating the animation of one voxels morphing into another.
Mandelbulb
MengerSponge
PillarCave
SierpinskiTetrahedron
Apollonian
EllyTetra
IFS3dCross
Juliabulb