You may have seen the world premiere during our monthly meeting on Frame but in case you missed it!
We just shipped a new feature named Node Geometry. It was inspired by Blender Geometry Nodes where you can use a node system to build geometry procedurally. Think about it like a postprocessing system for geometry. Ultimately it produces a geometry but with a procedural approach.
Why you may ask?
Several reasons come to mind:
The cost of downloading assets on the web is a strong limiting factor. Procedural data can help solve that by limiting the download to the core pieces that are assembled later by the NodeGeometry system
The system is dynamic and can produce infinite variants at run time. While there are many digital content creation tools that can create procedural meshes with the same infinite possibilities, the limiting factor again becomes downloading assets created offline. Examples would be terrain or vegetation generation.
It allows a new way of modelling in Babylon.js by assembling core shapes and playing around with a node system
Yup, sure did Sounds like another amazing addition to the framework
BtW, You can come back with this kind of surprise for the next meetup - and for every meetup
The bar has already been raised here so I wonder what better you can still announce? I trust you’ll find something
Meanwhile, for the feature. Now I just need to learn it from the doc and find an idea for a project that could make use of it
One of the ways I’ve been thinking about using the node geometry editor in my CAD web app is to create custom shapes. For example, if I don’t like the default parameters that Babylon offers for Cylinders, can I define a custom geometry object that takes e.g. these parameters instead of the default ones?
That’s amazing! Is there a plan to add extrude, inset, bevel, and other procedural modeling nodes or utility functions that can manipulate geometry at the points/edges/faces level? Take a look at the source code; it seems the current architecture has not prepared for that fine granularity modeling? To achieve that effect, there need to be some extra data structures and utility functions to assist the user in adding and modifying attributes at points/edges/faces.
Sadly, the Web platform doesn’t even have a single solution or library for procedural modeling. It seems that if someone wants to transfer his Houdini logic to the Web, he has to implement everything by himself. It will be awesome to model fully on code (in real-time) rather than solely drag nodes or work in a destructive workflow since coding provides more flexibility, engineering capability, and maintainability.
Anyway, the Node Geometry is already prominent! I will try to implement some simple logic and keep an eye on babylon.js!
Imo, the problem is that webgl is mostly fixed function, where all geometry comes from cpu and vertex shaders only manipulate those vertices sent from the cpu 1:1. This is like 10 or 15 years behind gpu drivers. However, with compute shaders, we can generate new vertices only on gpu side, which opens a lot of doors.