Hacker News new | past | comments | ask | show | jobs | submit login
The Perfect Voxel Engine (2021) (voxely.net)
75 points by helloplanets 7 months ago | hide | past | favorite | 30 comments



For anyone interested, these days there are multiple people working on impressive stuff, sometimes it's even open source:

https://www.youtube.com/@GabeRundlett (open source engine in C++ with e.g. Rust bindings via C)

https://www.youtube.com/@DouglasDwyer (proprietary, using Rust and WGPU but interesting videos)

https://www.youtube.com/@xima1 (afaik proprietary, using WebGPU and typescript)

Open source stuff:

https://github.com/ria8651/alex (Rust) https://github.com/davids91/shocovox (Rust)

There is a myriad more, many discords...


With the help of the voxelgamedev community, I'm maintaining a relatively large listing of such projects over at https://voxel.wiki/wiki/projects/.

Sadly, a lot of projects get abandoned.... :(


The Minecraft team at 4J have just announced a new voxel-based crafting game platform.

https://www.thecourier.co.uk/fp/news/dundee/4988656/4j-studi...


While I got a nice grade in my Computer Graphics intro course back in the day - I have not done any CG since. I have a dumb question:

Why is it better render small cubes, then to render triangles (or polygons)? I mean, a cube is, eventually, 6 squares, or 12 triangles, in a certain formation, right? So is the entire benefit captured by this 1/12 ratio? Or is there a deeper motivation for this pseudo-rasterization?


Not sure I'm fully understanding your question but the primary reason for the voxel engines is interactibility. They're trying to be Minecraft 2, not Crysis 5.


All of these demos are surely using the same rendering engine underneath as a classic mesh 3D, but voxels let you smash stuff up easier than trying to figure out where to make breaks in meshes and close the holes.

As Lin says "Universe = voxels" .. insinuating that atoms are essentially voxels.


Most voxel engines end up rendering triangles. The voxels are used to represent the world to allow for cool physics, in particular destruction.


Unlike general meshes, the low-level triangles used to represent voxel surfaces can be easily computed in a shader rather than stored explicitly, and even per-voxel data can sometimes be recomputed on the fly because of procedural generation.


This might profit from some context: This is written by "John Lin", who is famous for his impressive voxel videos on social Media. He became a hallmark name in voxel discussions. See for example his youtube: https://www.youtube.com/channel/UCM2RhfMLoLqG24e_DYgTQeA


As far as I can tell, he got famous for the voxel demos, then decided to not do voxels, based on feedback from fans.

Edit: I misunderstood.


Hm, do you have a source for that? It's possible that you're mixing it up with his decision to shelf "micro-voxels" in favor of the traditional, chunkier voxel art style.

https://youtube.com/watch?v=8ptH79R53c0 (see pinned comment)


Thank you, I think you are right.


Huh, interesting. Even today when there's a voxel discussion on graphics programming communities - john lin comes but all the time


From what I've read (the pinned comment in the aforementioned video), he just decided to ditch high resolution voxels for lower resolution ones, as the feedbacks said they preferred a more pixelated art style. But still voxels. But looking at his latest blog post, it seems that he's not focused on voxels at the moment yet. Or maybe got hired and can't talk about it, who knows ¯\_(ツ)_/¯


It's a shame he disappeared for some reason, his stuff was crazy


His latest blog post/tweet was less than a year ago https://voxely.net/blog/using-a-rnn-for-2d-tile-map-synthesi...


Are voxels the goto method for easy mesh manipulation without worrying about vertices? I’ve been trying to research ways to 3d model without worrying about topology. So far all I’ve found is CSG and voxels.


There’s also SDF (Signed Distance Fields) modeling, such as present in multiple modeling tools like Adobe Substance 3D Modeler [0] or WOMP [1].

I suppose this is similar to voxels in that the data is stored in a uniform grid, but the way it gets rendered is different.

[0] https://www.adobe.com/products/substance3d/apps/modeler.html

[1] https://womp.com/


SDFs don't inherently have a grid, right? You can use marching cubes to sample them along a grid, but you can also do ray marching


It depends on the representation. SDFs can be pure mathematical functions, in which case there is no grid, or they can be a grid of values representing distances to the implicit surface, in which case they do use a grid. The latter representation, to my knowledge, is rarely used in 3d, but it is used in 2d for SDF fonts for example.


A grid of values can be a sampling of an SDF, but it cannot be a true SDF itself.


From what I can find this depends on the definition, as there is a difference between a Signed Distance Function [0], and a Signed Distance Field, where the latter does get defined as a grid of values:

> A signed distance field is represented as a grid sampling of the closest distance to the surface of an object represented as a polygonal model. [1]

and

> Signed Distance Fields (SDF) are 3D textures where each texel stores the distance from the surface of an object. By convention, this distance is negative inside the object and positive outside. [2]

But that grid of values gets generated from either mathematical formulas, e.g. spheres, or from another representation of geometry such as a mesh or a vector shape.

[0] https://en.wikipedia.org/wiki/Signed_distance_function

[1] https://developer.nvidia.com/gpugems/gpugems3/part-v-physics...

[2] https://docs.unity3d.com/Packages/com.unity.visualeffectgrap...


Some people might use the terms in this sloppy way, but not distinguishing between a field and a discrete grid sampling of that field is incorrect.


That makes sense. Coming from a non-math background I wasn’t familiar with the mathematical term field. Learning something new every day :)


Can you even call voxel objects a mesh?


Why not?


Hijacking the thread: I'm looking to compute sciency stuff on a grid of truncated octahedrons, and rendering that to voxels. Does anyone know a good way to do that??


It would be interesting to have some interpretability to how the YouTube algorithm suddenly picks out these 'old' gems.


ML directed A/B testing to see what sticks, is my uneducated guess.


I'm really hoping for a more human-centric version of 'interpretability'.

That might be how the algo picks up what to trend but it doesn't tell us what sparked it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: