PDA

View Full Version : T-Spline FFDs?


nurcc
02-07-2005, 07:53 PM
Hey, have a couple of quick questions for you guys..

I'm a developer/researcher with T-Splines. We were thinking about other applications of the technology, and were wondering if there would be much use for a T-Spline Lattice deformer. That is, instead of a complete lattice (3d grid), being able to split subsections where you need more control, while keeping other areas more simple.

I guess the first question I have is if there are performance problems with using a normal lattice in Maya.

The second question is whether there's any possible benefit to having local detail in a lattice. Would that be helpful?

Thanks.

zkanal
02-07-2005, 08:25 PM
I for one would find it VERY useful :)
There has been many times where I have been missing a feature like that.
Of course one could do practically the same thing with a wrap deformer based on a poly object with localized detail, but it's painfully slow and files get huge.
And no, I think the lattice is quite fast in maya.

Also as long as you are on "the line" here, I would like to take the opportunity to ask a bit about textures on T-spline .. will it be like nurbs with pre defined coordinates for placing textures, or will it more resemble traditional UV-mapping?

nurcc
02-07-2005, 11:36 PM
UV mapping on T-Splines is a little bit complicated, but here's as good a place as any to explain it.

The first thing to explain is that there are two cases for the topology of T-Splines - T-Nurcc and T-Grid. A T-Nurcc is like a SubD, while a T-Grid is like a Nurbs. There's a little Venn diagram here: http://www.tsplines.com/FAQ.html#compatibility

So, if you're a T-Grid, there is a global parameterization that you can use as a UV mapping. However, you can also edit that parameterization like you would edit a polygon's UV map, using all the same tools.

If you're a T-Nurcc, there is no global parameterization, but you can use all the poly UV mapping tools.

Behind the scenes, what we do is create a PolyMesh with the same topology as the T-Spline, and connect it's output UVs to our TSpline Shape. For the actual display, we decompose our surface into a bunch of Bezier patches, and interpolate the UV coordinates across the bezier patches parametrically.

Let me know if there's anything I haven't covered.. we realize that we aren't Maya users, and that we may be overlooking some very important things. If you've got more questions, or if the way we're doing it disappoints you, we'd be eager to hear your comments/suggestions/way you would like it to work.

zkanal
02-08-2005, 12:35 AM
No it sounds very logical .. guess I was just dreaming of another way to create texture coordinates.. there must be a smarter way than good 'ol uv :P Or maybe not?

Also, what are the real benefits of using T-splines in comparison not to nurbs, but let's say polygons where you also can localize details? Speed?

nurcc
02-08-2005, 06:47 AM
One thing that I find interesting in CG is how much research goes into solving common problems in CG that never really sees the light of day. We haven't done anything special with the UVs of T-Splines, because one of our big ideas is compatibility with the rest of the pipeline.
But there are at least a few people who are researching better ways of texture mapping - one from last year's SIGGRAPH was poly cube maps, http://vcg.isti.cnr.it/polycubemaps/

As for T-Spline advantages over Polys, there are a few, depending on how you're using the polys.

If you're doing low-poly modeling, or if you really want something that's polygonal with sharp edges ( eg. a cube made of only 6 faces ) then T-Splines aren't going to do anything for you. In other words, if polygonal shapes are what you want, you should probably use polys.

If you're doing smooth surface modelling, you're probably modelling a rough shape, then smoothing it later. If this is what you're doing, it's like you're using the polymesh as a control cage for a SubD.

If you insert geometry on such a model, then the smoothed surface will change. If you insert geometry on a T-Nurcc, then the smoothed surface does not change until you move control points.

The insertion problem can be often made worse because N-sided polygons often look weird in different renderers. Because of this, artists sometimes try to avoid n-gons by adding whole edge loops. With T-Splines, the faces around T-Junctions shade like quads, so it's perfectly acceptable to terminate edge loops in T-Junctions. That way, you only have the loops where they're need to hold the shape, and have a lighter model all around.

Also, because we deal with the surface as a parametric surface, we have the advantage of being able to tessellate very quickly, and at different resolutions. We also have an adaptive tessellation where you can use more polygons in areas of high curvature, and less where it's more flat. While these kinds of things aren't impossible to do with a poly, they are usually slower.

Another nice thing is that you can exactly represent any Nurbs or any SubD with a T-Nurcc. So, you can take a Nurbs, and extrude some faces out of it. With SubDs (or, as I was talking about earlier, polys used as SubD control cages) you can't exactly represent all Nurbs surfaces, even if you have the same topology and the vertices in the same locations as the CVs. One of the things that you can do with T-Splines is merge a Nurbs patch model into a single smooth surface which has roughly the same number of control points in roughly the same spots (things can get a little weird at the seams, but if the isoparms line up between patches, you'll actually end up with fewer CVs in the T-Spline. If they don't line up, we typically add a few, so that the surface is tangent and curvature continuous everywhere).

Anyhow, there are a few advantages, I guess we'll see if they'll be worthwhile enough for people to actually use T-Splines.. ;)

stormtroopar
02-09-2005, 08:15 AM
Another nice thing is that you can exactly represent any Nurbs or any SubD with a T-Nurcc. So, you can take a Nurbs, and extrude some faces out of it. With SubDs (or, as I was talking about earlier, polys used as SubD control cages) you can't exactly represent all Nurbs surfaces, even if you have the same topology and the vertices in the same locations as the CVs. One of the things that you can do with T-Splines is merge a Nurbs patch model into a single smooth surface which has roughly the same number of control points in roughly the same spots (things can get a little weird at the seams, but if the isoparms line up between patches, you'll actually end up with fewer CVs in the T-Spline. If they don't line up, we typically add a few, so that the surface is tangent and curvature continuous everywhere).

Anyhow, there are a few advantages, I guess we'll see if they'll be worthwhile enough for people to actually use T-Splines.. ;)


I wish maya actually had a geometry type like the T-Nurcc you are describing and not the subD it has right now. And yes you are right, you can't get a true representation of a nurbs surface using poly or subd. There are a lot of advantage to using nurbs in production, especially in a big place, but with nurbs, having to resort to patching can be a pain. If a surface type that is just like nurbs but can be a continuous surface, that would be awesome. But it sounds like it wouldn't have the same UV properties as nurbs though... which would be too bad...

Anyway, getting back to the topic. First off, lattice in Maya has no performance issue. In fact most of the time when dealing with something complex, lattice is the way to go because its fast and responsive. I do think having a T-spline lattice would be cool. Another thing is if we were able to semi-sculpt the lattice cage before deforming and subdividing it would even be better. I can see there are times for example if I am modifying a face, (since maya does not have any good 'soft selection' type tool), being able to subdivide a lattice can be helpful and I wouldn't have to end up with a very dense lattice that is hard to manipulate. Actually, the more I think about it the more I think it is a cool idea. I can also apply it to rigging and skinning. Think about how much more control you can have with a lattice bind. It would be easy, fast, yet quite controllable.

But, if this was to happen, its got to be at least as fast as maya's default lattice.

Another area I see how this T-spline approach can be cool is in character deformation. If for a skinning system that is controlled by some sort of envelope, and the envelope itself has T-spline properties where it can be multi-resolution, that would allow a great deal of control, but without the fuzz of adding multiple deformers and so on...

I am sure there are plenty more usage of this technology, but these are what I can think of at the moment. If you want more details or specifics, feel free to ask.

Hope this helps.

zkanal
02-09-2005, 12:20 PM
Thank you very much for your lengthy reply!
I for one think that the ability to localize detail is totally awesome, I come from a nurbs backround but I'm working mostly with polyproxy/subD and I miss the ability to insert "isoparms" without altering the shape. The new ability with T-splines to do the same locally is totally superb!
This ability of T-splines is something I think you should try to push in your marketing more clearly as I didn't understand that from your website in the first place.

Good luck with the development, what is the ETA for your product?

Oh, and I think I'm in love with the concept of polyCubeMaps :)
If they only wrote a plug-in for let's say photoshop that keeps track of which squares fits into which so that one could put two together, paint a bit, and then rearrange them again, paint again, and so on.

CGTalk Moderation
02-09-2006, 01:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.