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.
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.
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.
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.
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.