The subdivide POP doesn’t seem to work the same way as the SOP and actually seems to just be broken. I can’t really get anything useful out of it.
The SOP appears to do a standard catmull-clark subdivision where on the first subdivision quads are quartered and triangles are split into thirds and converted to quads.
The POP doesn’t seem to be doing that…in fact it only seems to be generating mangled geometry in my simple test cases. It also only outputs triangles whereas the SOP will give you quads. I’d expect it to output quads with a toggle parameter to output triangles.
Here’s the comparison images of subdividing some shapes. One is the SOP, one the POP and one is my own script implementation in POPs. The crease weight is turned up in these examples and just breaks in the POP.
Currently the Subdivide POP is quite different and simpler than the SOP.
It only performs “loop” subdivision on triangles (Loop subdivision surface - Wikipedia), not catmull clark, so quads get triangulated first.
Otherwise it currently expects manifold geometry and it will fail with mangled geometry when that’s not the case - for example two triangles connected by a single point will fail.
Crease seems to behave the same as the SOP with a closed input, like a Box, so 1 is sharp, indeed the result is a bit funky with a Grid POP, we’ll look into that.
Otherwise Catmull Clark subdivision is on our list.
Do you mind sharing your first geo as another test case?
Thank you!
If you’re projection mapping the SOP would still be the way to go as triangles UV’s will crease and don’t play nice compared to just having nice interpolation on quads. I guess my post was half bug and half RFE here.
I am not totally sure what you mean, quads always get turned into triangles for rendering, since Vulkan I believe (quads are an openGL primitive though they’re slow, but were removed in vulkan), which you can see setting a MAT to GPU Tesselated Wireframe.
I mean that when you interpolate the uvs on a quad surface you don’t get creases like you do if you interpolate them on a triangle. Does that make sense? I’m not sure what the technical term for that is but you can calculate cleaner uvs if you do it on a quad by quad basis rather than treating each triangle individually. Eventually everything is a triangle but the interpolation is different between them.
After playing with subdivide SOP and POP a bit more I think I see what you mean.
Subdividing triangles with catmull clark (Subdivide SOP) adds some wobliness to the uvs indeed,
but it doesn’t seem to be happening with the subdivide POP and loop algorithm.
In any case you’ll be able to play with it more once the non buggy version is out, and we’ll eventually add catmull clark as well.
Rather than my crap explanation here’s a tox to show the difference…my demo is in SOPs but the same applies to POPs.
This is obviously only really relevant for later but please bear this example in mind when doing the updates in the future. base_subdivide_example.tox (9.5 KB)