Just today, I was in a meeting in which I was asked about what is so unique about the NGRAIN voxel engine (as compared to other voxel engines), and I gave a rather unconvincing answer, because it was too low level and lacked context.  Since I wanted a second chance at better answering this question, I thought I would do a blog on it as well.

Because we have primarily advanced our voxel engine towards maintenance and training of complex equipment (such as a jet engine), we have developed data structures and algorithms in a technical direction different from most voxel engines, and in some cases, solving quite different problems.  For starters, most voxel engines focus more on smooth surfaces (e.g. body parts), rather than focus on surfaces with hard edges (see helicopter rotor image in Figure 1).  In fact, when we first saw the bad aliasing artifacts (see the circles in Figure 1), we were convinced that there is a bug.  It was only after thorough evaluation that we realized that the industry-accepted algorithms caused these artifacts.   The newly invented algorithms eliminated the bad aliasing artifacts entirely, as can be seen in the Figure 2.

fig1_artifacts

Figure 1. Helicopter rotor with bad aliasing artifacts.

 

fig2_noartifacts

Figure 2. Helicopter rotor with aliasing artifacts resolved.

 

Secondly, we developed a data structure that specifically optimizes the memory usage and rendering speeds of hollow datasets.  In many voxel engine scenarios, the dataset is solid, meaning that a voxelset of dimensions X x Y x Z should contain exactly XYZ occupied voxels.  However, when dealing with surfaces, the percentage of occupied voxels is usually very small, usually hovering around or less than 5% occupied (i.e. 5% of XYZ).    Even a very busy x-ray representation of complex surface geometry (such as a 3126 engine, see Figure 3) shows only 5% occupied.

fig3_3126xray

Figure 3. A 3126 engine is only 5% occupied.

Thirdly, the NGRAIN voxel engine has been optimized to handle many voxelsets, not just a single monolithic voxelset that represents everything.  For example, the 3126 engine in Figure 3 has close to 1000 parts, and represented by 1000 voxelsets.  These 1000 voxelsets permit each part to be animated in real-time, which would be very difficult if the engine is represented by a single voxelset.  As well, the ability to handle many voxelsets allow parts instancing, which reduces the data file size and memory usage, as well as permit the specification of the maximum level of detail for each part (for good enough visual quality and maximize performance).  These are not the usual topics of discussion for a voxel engine implementation.

And on the topic of lowering data filesize, it would be crucial for faster transmission of the data if the data resided on an external server.  As well, because there can be a long transmission delay in getting all the data for the entire model, there is desire to interact with the in-progress model immediately.  To permit this, a progressive loading algorithm has been invented.  In fact, the most compelling aspect of this progressive loading approach is that the interaction with the model does not lock the downloading of the rest of the data.

Finally, in the new NGRAIN voxel engine, we developed very fast data structures that allow both hollow and solid data to be optimally handled, permit even faster 3D geometric differencing (see previous blog post), and dynamic level of detail (for good enough visual quality and maximize performance).

So how do I know that the above discussions show that the NGRAIN voxel engine is so unique as compared to other voxel engines?  Each of the topic above has been granted a US patent for NGRAIN, with the exception of the new NGRAIN voxel engine data structure, which is currently a US patent pending.