Hi, all.

I am interesting in near real-time voxel-based engine for cnc simulation. Can anybody answer if is it possible to achive the folowing with voxel farm engine:

1. 1000^3 scene with voxel size  = 1^3 (not fully-filed octree but may be 50%).
2. near real time boolean diffrence from blank model (1000^3) the tool model (200x200x50 as max possible). Near real time means ~ 10 msek or so on.
3. Fast rendering after No.2 (I mean fast updating mesh geometry of the scene to output the new result).
Also near real time ~ 10 msek.

Also does VF provide mesh2volume and volume2mesh operations and how fast they are (for the resolutions described above).

Sure all timings are in the common machine (probably with descrete graphics card if VF uses it for calculations).

0 0
Voxel Farm is designed and optimized to handle 41,943,040^3 voxel scenes.

Updating 1000^3 voxels all at once under 10msec is not a realistic expectation. For a dental application, it is more likely you will only need to update the impact area of the simulated dental tool, which is likely to be much smaller than you entire scene content of 1000^3. What are the update sizes you need for the application? Also what is the tool model exactly? Can be described as a field function, or is it an arbitrary mesh?

Note that voxels in Voxel Farm include a geometric profile. One voxel does not turn into a single pixel when rendering, instead, you can think of a voxel as a descriptor of the surface the crosses that point of space. It is likely you can achieve the same results with a much smaller voxel count.

Voxel Farm includes voxelization (mesh2volume) and contouring (volume2mesh) functions. These are robust functions that can handle complex multi-attribute meshes; for instance, you can voxelize UV-coordinate sets for the mesh. This, of course, increases the operation's time. For contouring it is the same, if you choose to enable mesh simplification to produce much leaner meshes, this requires additional processing.

0 0
Thanks for the answer. It is not a dental simulation. I am testing several options for the general wire (long but thin cylinder) cutter and "disk" like cylinder which is 500x500x10. Sure it is much samller then shole blank model - I do not need to update whole 1000^3 scene.
Also tooth model possible is much smaller then my estimated models (with the same resolution).
So the estimated blank is 1000^3 and tool is about 500x500x10 (or may be 200x200x50). The model can be described as parametric eqauntion (r = r(u,v) or F(x,y,z) =0 => so I can easaly detrmine when point or cube is inside tool model or not. Generaly tools are just simple finite or infinte cylinder with possible half-sphere ending. 

Nice to hear that Voxel Farm has both mesh2volume and volume2mesh functions.

I already have some custom results with OpenVDB engine and search for possible alternatives.

So what is the possible performance for this task per tool position (in the described limitations)?

0 0
In general, it is hard to predict what the performance will be, but we can do some napkin math.

Voxel Farm performs all voxel generation in CPU, then converts voxels to triangles and uploads them to GPU for rendering.

From your comment, it is not clear what is tool and what is model, but you do state "tool is about 500x500x10". Let's assume your tool has the potential to affect a surface of 500x500 voxels. If you were to represent this as a triangle mesh, you would need 500x500x2 triangles (you need two triangles to patch one voxel) That is a 500,000 triangle update for the GPU, which depending on what vertex attributes you will need (position, normal, color, etc.) and your GPU bandwidth may just be enough to put above your 10msec budget.

If you cut triangle counts by mesh-optimization, simplifying a 500,000 triangle mesh will also put you above the 10msec mark.

For your application, you are probably better running marching cubes in GPU over a discrete 1000^3 grid.
0 0