With GraphN 1.0, we've introduced a brand-new Mesh data type, which unlocks a vast field of possibilities for all things geometry related. This resulted in dozens of nodes dedicated to mesh processing, and in this primer, we'll go through the following topics to help you get the most of those nodes:
- Working with meshes from your DCC.
- Creating primitives.
- Editing geometry.
- Querying geometry.
- Volumetric Workflows.
In GraphN, you can't directly modify a given mesh in your scene. Instead, what you can do is create a copy of it, and work on that copy with all the modifications that you want. This is why we created the Input Mesh and Output Mesh nodes. To read a mesh's data from your scene, you need to store it in a scene container, then pass it to the input mesh node like so:
This setup gets your current selected object with ALT+S, then creates a mesh data structure out of it with the Input Mesh node. From there, you can do all sorts of operations like querying all the vertex positions of your mesh, decimating it, smoothing it, subdividing it, triangulating it, etc...
The node Output Mesh has a Material input, and you can give it a material name if you're in Maya, and for Unreal Engine, simply select the material in your content browser, spawn a Get Selected Asset node to query it, and feed it to the Material input of the Output Mesh node.
If you connected the output of an Input Mesh node to the Root node, then ran your graph, nothing would happen because the mesh data type doesn't create a mesh in your scene, it simply creates a mesh data structure internally. To create a mesh in your scene, you need the node Output Mesh, which takes a mesh property, and converts it into a mesh that you can see in your 3D software.
In this demo, we're creating a cube with the node Create Box, then outputting it in the viewport with the node output mesh:
To recap: if you have a mesh that already exists in your scene, you can query its data with the Input Mesh node, but can't directly modify it. What you need to do instead is create a new copy of that mesh with the Input Mesh node, which will create that new mesh in your scene, and allow you to modify it at runtime with your graph.
Don't forget to check out the input mesh and output mesh node reference pages!
GraphN's geometry nodes offer a wide range of primitives. Alone, primitives may not seem like much, but they give you so much data to query that they can become much more powerful than they seem. For example, the node Create Plane gives you just a plane, but you could query all the vertices of the plane to scatter objects on them or deform the plane to create a nice-looking terrain, etc...
Meshes have a lot of data that you can query, from component positions to rotations, normals, face areas, edge lengths, etc... For starters, let's take a fairly complex mesh, and place a small cube on each face of the mesh:
In the following demo, we're converting a mesh's bounding box into an actual box mesh, then hardening its normals, before outputting it as a mesh on its own.
We also provide various component connectivity features to help you get specific components. In this graph, we have a node Get Border Vertices to retrieve all border vertices on the input mesh, then another node Mesh Connectivity Info to retrieve all the vertices that are connected to each border vertex. You could for example apply some vertex colors to these vertices, move them, or extract their faces as an independent mesh, etc...
In GraphN 1.0, all components are outputted as a Mask.
Needless to say, the possibilities are endless, and we're hoping to provide a significant workflow upgrade on components around GraphN 1.5, which will feature a lot more component query capabilities, ranging from colors to uvs and every other component data type.
We provide various nodes to update mesh data:
As a reminder, you can't update an existing mesh (like say a cube created in Maya) with GraphN; it'll always create a duplicate mesh of your input mesh, and update that duplicate instead. We're hoping to change that in the near future and will update this section accordingly.
We provide a couple of really insightful preset projects that you can find in GraphN's front page, and each one of them shows a wide range of workflow utilities that can be used for world-building or object creation. As of GraphN 1.0, the geometry library is still in its early days, and we'll be adding more and more nodes while improving performance, until it gets to a point where you can create any object you have in mind with relative ease.