Not only do you possess a ton of knowledge. You are also very creative. On top of that, you have the gift of explaining things in a manner that is crystal clear and understandable. Your tutorials are simply outstanding. A HUGE thank you again, Junichiro!
A Half-edge in a Graph, of a Vertex, usually relates to another vertex - which can be introverted | extroverted - describing if the vertex is “prev” | “next”. This rendering technique that you’re referencing applies a use for Half-edges in theory, but the standard for rendering Meshes doesn’t: We typically store Mesh data by 1) A tuple of vertices 2) A tuple of faces 3) A tuple of normals (not always, but usually) … sometimes more… Where a Face literally stores the Path (sequence) of vertices of the face - assuming they are coplanar. Example: Mesh = { Vertices = { A,B,C,D,E,F,G,H } Faces = { Face( A,B,D,C ), … Face( A,B,F,E ) // or something … etc } } So, I wouldn’t say you’re technically using Half-edges, as Meshes dont typically get stored in Graphs - even if they ARE easy to represent w/ graphs… Although, there could be other benefits to your model. Consider the idea of a Hyper-edge in a Hyper-Graph… It tends to save storage over Usual-edges. Because of degree… A usual graph edge stores a copy of each vertex (not necessarily a hard copy, but still). Each vertex has a personal number of edges (called its degree), which is also how many copies of an edge exist in a Graph. Hyper-edges store more vertices, reducing the total number of edges, which reduces the degree (sometimes / usually) - which reduces the number of copies, and saves memory. An example is having an “N-clique” being replaced with a Hyper-edge with N vertices. The N-clique has a lot more copies… so Hyper-edges save memory. The “Half-edge” is probably called something different in this context, but is probably a lot more useful in this context… To my understanding, Hyper-vertex partial-edges can be introverted | extroverted, which is how we segregate “prev” and “next”. Therefore, there is arguably still a “Tail” and “Head” of the Hyper-edge - but now those Tail and Head aspects are collections, instead of a single vertex. Because of this- it is still possible to perform Multi-partite ‘color mapping’ (idk the technical term) from one color to the next- because the Tail and Head could correspond to colors in a Bipartite structure. Something like that… Anyway… Cheers.
Thank you, Junichiro. I had a lot of joy learning half-edges concept along your video. I've already spent so much time doing workaround from edges using functions for prims and points because didn't understand the concept when read documentation by myself, that your video is like a blessing. Also, I think it could be so much easier if Houdini had markers and dedicated Geometry Spreadsheet page for half-edges.
Thank you so much. I recently went through the vex document in details. So, I wonder what I can do with hedge. Your video is such a good example showing its power. This video does help me a lot.
Please make a video about Expression functions and how they work inside Houdini. I know it's a very basic topic but I haven't found any video properly explaining it.
Hello. So based on this , would it be possible, to create a polygon mesh based on floating points? Like in 2D you can use traingulate2D, but use it on a non grid like cases?
it is not practical. too slow. the last example showed a torus with +/- a thousand vertices, but i need processing of geometries from 10k to 100k vertices. i'm still using simple indexed vertices instead of half edges. Maybe, half edge calculations would be practical if they're done in the gpu.
Not only do you possess a ton of knowledge. You are also very creative. On top of that, you have the gift of explaining things in a manner that is crystal clear and understandable. Your tutorials are simply outstanding. A HUGE thank you again, Junichiro!
Excellent! you are doing gods work Junichiro.
lol so true
A Half-edge in a Graph, of a Vertex, usually relates to another vertex - which can be introverted | extroverted - describing if the vertex is “prev” | “next”.
This rendering technique that you’re referencing applies a use for Half-edges in theory, but the standard for rendering Meshes doesn’t:
We typically store Mesh data by
1) A tuple of vertices
2) A tuple of faces
3) A tuple of normals (not always, but usually)
… sometimes more…
Where a Face literally stores the Path (sequence) of vertices of the face - assuming they are coplanar.
Example:
Mesh = {
Vertices = { A,B,C,D,E,F,G,H }
Faces = {
Face( A,B,D,C ), …
Face( A,B,F,E ) // or something
… etc
}
}
So, I wouldn’t say you’re technically using Half-edges, as Meshes dont typically get stored in Graphs - even if they ARE easy to represent w/ graphs…
Although, there could be other benefits to your model.
Consider the idea of a Hyper-edge in a Hyper-Graph… It tends to save storage over Usual-edges. Because of degree…
A usual graph edge stores a copy of each vertex (not necessarily a hard copy, but still).
Each vertex has a personal number of edges (called its degree), which is also how many copies of an edge exist in a Graph.
Hyper-edges store more vertices, reducing the total number of edges, which reduces the degree (sometimes / usually) - which reduces the number of copies, and saves memory.
An example is having an “N-clique” being replaced with a Hyper-edge with N vertices. The N-clique has a lot more copies… so Hyper-edges save memory.
The “Half-edge” is probably called something different in this context, but is probably a lot more useful in this context…
To my understanding, Hyper-vertex partial-edges can be introverted | extroverted, which is how we segregate “prev” and “next”. Therefore, there is arguably still a “Tail” and “Head” of the Hyper-edge - but now those Tail and Head aspects are collections, instead of a single vertex. Because of this- it is still possible to perform Multi-partite ‘color mapping’ (idk the technical term) from one color to the next- because the Tail and Head could correspond to colors in a Bipartite structure.
Something like that…
Anyway…
Cheers.
Thank you, Junichiro. I had a lot of joy learning half-edges concept along your video. I've already spent so much time doing workaround from edges using functions for prims and points because didn't understand the concept when read documentation by myself, that your video is like a blessing.
Also, I think it could be so much easier if Houdini had markers and dedicated Geometry Spreadsheet page for half-edges.
As well as for edges.
Nice, tutorial completed
fantastic as usual! On my way to procedural mastery.
Thank you so much. I recently went through the vex document in details. So, I wonder what I can do with hedge. Your video is such a good example showing its power. This video does help me a lot.
brilliant stuff.. thank you.
excellent.
Please make a video about Expression functions and how they work inside Houdini. I know it's a very basic topic but I haven't found any video properly explaining it.
Hey is it possible if I can get any material from you about the implementation of half edge
Hello. So based on this , would it be possible, to create a polygon mesh based on floating points? Like in 2D you can use traingulate2D, but use it on a non grid like cases?
AAAWESOME!
good job ! i am curious why your English is so good as a Japanese ? i am Chinese and i want to know how to learn English could achieve your level?
it is not practical. too slow. the last example showed a torus with +/- a thousand vertices, but i need processing of geometries from 10k to 100k vertices. i'm still using simple indexed vertices instead of half edges. Maybe, half edge calculations would be practical if they're done in the gpu.