Curved surfaces, why not?

jpr27 said:
Could we do a curved surface per pixel or similar with todays fp power (NOT USING TRIANGLES) for curved surfaces.
The problem with supporting curved surfaces directly is mainly to determine where within a given surface a pixel hits. Except for very limited classes of surfaces (like spheres, cylinders and certain other conics) there are no closed-form solutions to this problem, meaning you have to use some sort of iterative procedure to do approximations - which I expect will require a lot more computational horsepower per rendered pixel than the usual triangle tessellation for a given image quality level. The ideas linked to by DudeMiester just serve to illustrate the problem - I mean, 220 shader instructions per pixel?
 
Simon F said:
Quadratic and even cubic triangular Bezier patches cannot guarantee C1 continuity, only C0, with their neighbouring (triangular) patches. This means that you will get some creases in the model. You have to go to quartic triangular patches (i.e. 15 control points) in order to guarantee C1.
You are right, and I was wrong, sorry. :(
After a long while, the idea just popped into my mind again in yesterday afternoon, and I gave it a try - and it sucked.
 
Last edited by a moderator:
DudeMiester said:
Jebus raising the dead! Ever heard of PM?
I thought it was nice of him to publicly acknowledge the fact. Someone else may have learned something.
 
If your interested in the math of continuity Jorg Peters has a whole bulch of papers on minimally complex surfaces to meet particular continuity requirements.
 
ERP said:
I think the largest valence in the model was 8 but this was close to 5 years ago and I'd have to look at it to verify. By far the most common valence (other than 4) was 5.

Pardon me for being rude, but with such high valences, you should get another artist ;) A vertex with 8 edges is totally unneccessary, there are modeling strategies to deal with such cases.
It's actually a somewhat complex and often argued problem in the online CG community, which has moved to Catmull-Clark subdivs almost exclusively in the past years. Basicaly, you can have n-sided polygons and n-sided vertices (where n is the number of adjacent edges meeting at that vertex). You can build a polymesh that has either
- only 4-sided polygons (quads) and n-sided vertices, or
- only 4-sided vertices and n-sided polygons.
Generally, the first version is prefered, because it gives more control over the surface curvature for the artist. It's because an n-sided polygon gets subdivided to n quad polygons, with an n-sided vertex in the middle, but there's no direct control over that vertex. Also, the topology will tend to have a spiderweb-like structure at this vertex, which gets worse and worse as the number of edges increases - an 8-sided vertex is a truly horrible thing and will most likely cause some ugly pinching on the subdivided surface.

The problems with maintaning an all-quad polymesh, with only a few 3 and 5-sided vertices are that it takes a lot more time to build, and it is generally more dense than a less organized mesh with n-sided polygons. So there are supporters for both approaches, and neither has been declared a winner yet ;)

Hard surfaces like cars, weapons, armor etc. are even more complicated to build from quad polys only, partially because surface smoothness is a lot more important here compared to characters. However I've seen a lot of very nice car models that looked prefectly smooth in high-res images with good AA/filtering (that would bring out any surface problems). In the end, complex NURBS surfaces are the best way to model them, but they have a huge computation hit for all the procedurally performed blends, fillets and trims to get those nice shapes we see on today's cars. But NURBS modeling is very time consuming as well, so modelers tend to stick with polygons.
The problem here is what ERP has already mentioned somewhere - to get enough control over the subdivided surface, you'll usually have to increase the density of the control mesh to a level where it's usually more efficient (at this time) to skip subdivision at all. This will change in the next few years however, at least IMHO.


Another, more generic problem with tesselation is that you can (and will) waste a lot of processing time and memory for objects far away from the camera. Even in the controlled enviroment of CG, it's always better to have both lazy and adaptive tesselation to keep render times manageable. Thus it is especially important in a realtime enviroment to only perform tesselation when it's worth doing. But AFAIK all of today's hw tesselation implementions, with the exception of the Xenos, are lacking any support for adaptive/lazy tesselation, and I believe that it's the reason why they aren't used at all.

They should be free to use whatever tool they like then they should provide a dense mesh.
This mesh must be (automatically) remeshed to fit with proprietary 3D engine costraints (you can't support any vertex valence, any kind of topology, and so on..).
The difficult part is the remeshing phase, without this phase is a comlpetely waste of time to even try to support SS in a realtime engine.

I dunno, but I imagine that any procedural remeshing would produce results inferior to what a skilled modeler can deliver. I've never heard of any remeshing that could build a good face or hand, for example... keep in mind that you'd also have to weight this newly created mesh for skeletial animation, where it's increasingly important to have good topology.
 
Pardon me for being rude, but with such high valences, you should get another artist A vertex with 8 edges is totally unneccessary, there are modeling strategies to deal with such cases.

In the more general case say a face or a body I probably agree, howeverin this case it was a car being modelled and it contained a large number of sharp surfaces that came together at a point. i.e it was not a simple genus 0 or 1 surface.

I actually sat down and went over the model, we discussed a number of strategies, all of which would have posed other issues.

in the past years. Basicaly, you can have n-sided polygons and n-sided vertices (where n is the number of adjacent edges meeting at that vertex). You can build a polymesh that has either
- only 4-sided polygons (quads) and n-sided vertices, or
- only 4-sided vertices and n-sided polygons.

Unfortunately mathematically they are exactly the same. After a single subdivision your N-Sided polygon becomes and N-Valence vertex, so it doesn't solve the problem.

In the end, complex NURBS surfaces are the best way to model them, but they have a huge computation hit for all the procedurally performed blends, fillets and trims to get those nice shapes we see on today's cars. But NURBS modeling is very time consuming as well, so modelers tend to stick with polygons.

Yep I then had the same car build from NURBS, there were more issues, notably ensuring all the patches actually joined with the correct curvature and it would have required minimally trimming in the rederer which was simply not possible.

The problem here is what ERP has already mentioned somewhere - to get enough control over the subdivided surface, you'll usually have to increase the density of the control mesh to a level where it's usually more efficient (at this time) to skip subdivision at all. This will change in the next few years however, at least IMHO.

I suspect where they will be used extensively first will be in conjunction with height maps, it's a potentially very interesting form of geometry compression, and I think space will be an area that sees significant effort (on consoles at least) in the next few years

I dunno, but I imagine that any procedural remeshing would produce results inferior to what a skilled modeler can deliver. I've never heard of any remeshing that could build a good face or hand, for example... keep in mind that you'd also have to weight this newly created mesh for skeletial animation, where it's increasingly important to have good topology.

I looked at this aswell, and it doesn't really solve any of the issues. You trade mesh quality for artist flexibility (in this case I don't think it's a worthwhile trade).

The one thing that interested me was Heirarchical Subdivs (or heirarchical surfaces in general) they are potentially interesting because you build LOD's as the model is constructed. However it makes you reliant on the artist doing the "right thing", while he's modelling, and my experience in general is that if you can't define exactly what the "right thing" is the artist will find new and inventive ways to screw your runtime.
 
nAo said:
IMHO it doesn't make much sense to let an artist provide a SS base model.
They should be free to use whatever tool they like then they should provide a dense mesh.
This mesh must be (automatically) remeshed to fit with proprietary 3D engine costraints (you can't support any vertex valence, any kind of topology, and so on..).

I don't agree here. The "automatic remesh" can be a very difficult task, actually almost impossible, and this is the main reason why we are still using triangles now.
As soon as you let artist do whatever they want and produce a dense model, you're screw. I don't blame artists here, but the lack of specialised tool.

So IMO, if somebody has a new paradigm, he will have to come with a 3d engine and a nice GUI, and not a remeshing tool.
 
Back
Top