PDA

View Full Version : Faster Maya SubD


vapulus
10-14-2002, 09:30 PM
I'm a long-term Lightwave fan, and I probably always will be. However, in my current high-level animation class, everything is done in Maya. I've been modeling all of my characters in Lightwave then importing the polygon base in Maya and converting it to SubD there. However, the performance of the subD surfaces have been terrible at best. The poly count is quite low, as well. I've set the display subdivision to 0, and it's still not even tolerable to work with. In lightwave I can display only the base polygons, but it seems that if I display the polygon proxy in Maya, it still takes a rediculous amount of time to update the SubD geometry. Is there a way to make SubD surfaces quit trying to update? I mean...like...is there a way to switch between SubD and Poly Proxy in such a way that it doesn't try to constantly work on the subdivision geometry? I'm tempted to use ConnectPolyShape, 'cause I believe I could get better performance out of it (I think there's a way to switch between proxy and subdivided views, but I haven't used CPS that much).

Alright, I know that was a load of information, and I apologize for that, and thank you for bearing with me. :thumbsup:

I guess I just need to know if there's an efficient way to have it not update the Subdivisions and let me just work on the base cage. The 1 frame ever 5 seconds does not lend itself to facial animation very well, as the blendshapes are impossible to use like this. The version of Maya I'm using is 4.0, so I don't know if 4.5 has more efficient SubD or not.

I appreciate any kind of info you gurus can hand down to me. :D

-wT-
10-14-2002, 09:53 PM
I've noticed that subdiv's in Maya are usually rather slow, and I don't think there's a direct solution to it.
All I can think of for now, is that you could just work with the original mesh, animate it, and then make it subdiv for rendering?

Am not sure if it would work just like that, like if the animations would carry over to the subdiv, but alteast by using the original mesh as a wrap modifier for the subdiv. That should do it.


Ok, I wasn't much help, I hope someone with actual knowledge about these things would reply soon ;)

vapulus
10-14-2002, 09:59 PM
I hadn't thought of using a wrap deformer. That might work. I'm just hoping there's an easier way. =) I'm going to be highly disturbed if there's no way to just turn off SubD temporarily. This is Maya, for goodness sakes. :surprised

:D

ryguy
10-14-2002, 11:07 PM
Try deleting the blind data nodes in the hypergraph:

Go into Poly proxy mode, fire up the hypergraph. In the HG, go into View - > Show up and downstream connections. You should see some or a crapload of BlindData nodes. Delete them. If there is still some slowdown, go back into Standard mode and do the same for the SubD surface.

I've actually imported 11 characters into a scene and these characters are subD's, all have blendshapes, textures, and are all rigged. Of course I had each character on a layer but it wasn't so slow I couldn't work in it. I only had problems when I had hardware texturing on. Of course, before I bought any of the characters in, I deleted any un-needed history and blindData nodes.

I've included a screenshot. Takes about 30 seconds to load (when only Maya is running). But once the scene loads, it seems to be fine, however I do have a decent video card.

Try deleting the blindData nodes. Then re-save into another file. Then try navigating around the scene, you should have improved performance.

Hope this helps you on your way.

~Ryan

vapulus
10-14-2002, 11:32 PM
That definitely improved things, but I still find the blendshape performance unacceptable. I guess it just bothers me that Lightwave performs perfectly on my other (slow) computer, but my fast box with Maya can't keep up. =)

I guess I just don't get why I can't REALLY switch between poly proxy and standard modes. I mean, I CAN, but it still constantly updates the SubD geometry, and reacts rediculously slow.
I miss my "Tab" Key. =)

Thanks for your help, though, ryguy.

If I don't find a way to get the speed up I'll most definitely not be using maya any longer than I have to, and that's sad...'cause just about everything else about Maya rocks.

ryguy
10-14-2002, 11:36 PM
How many levels is your SubD model? AliasWavefront has said before that your SubD models shouldn't exceed level 7...

Have you tried Clean Topology or collapse in the SubD menu set?

(trying to keep you using Maya) :buttrock:
~Ryan

mushroomgod
10-14-2002, 11:36 PM
theres a plugin on highend that alows you wo work/animate with you low poly model and then at render time it applys a smooth to your object and renders it...once its finished rendering it deletes the smooth and you back to you low poly model again...

kinda the way max does things

anyway, i have found it very usfull, though it may not be 100% what you after..

KingMob
10-14-2002, 11:40 PM
ryguy

thank you thank you thank you...

this fixed by sub d problem...had to save and then reopen but its MUCH FASTER...

you are my hero...

I am confused by that pluig in on high end, but it sounds keen!

ryguy
10-14-2002, 11:44 PM
I've had the same problems before though, I just like to share :)

Great job on your monster BTW!

~Ryan

vapulus
10-14-2002, 11:46 PM
Originally posted by mushroomgod
theres a plugin on highend that alows you wo work/animate with you low poly model and then at render time it applys a smooth to your object and renders it...once its finished rendering it deletes the smooth and you back to you low poly model again...

kinda the way max does things

anyway, i have found it very usfull, though it may not be 100% what you after..

That will most definitely work for what I'm trying to do. What's the name of the plugin?

And by the way, thank you to everybody that has tried to help me. I appreciate it. =)

KingMob
10-14-2002, 11:47 PM
thanks, it's my first REAL character, i have started many but never gotten to far, I have had a slow week (doing freelance design does that to you ya know?) and needed to keep my mind of my late bills, so I decided to Finally do a full maya character..

I have learned so much thanks to people like you and leigh who are willing to help out morons like me.

anyways, I posted your reply in one of my threads, hope you don't mind but a few people were asking the same questions and this info seems like really rare for some reason...

thanks again

KingMob
10-14-2002, 11:49 PM
by the way vapulus

Glad to finally see another JTHM fan around here, we should make soe cahracters...

I got dibs on Shmee and Squee

ryguy
10-14-2002, 11:50 PM
No prob... this forum needs a SubD FAQ! :)

~Ryan

vapulus
10-14-2002, 11:56 PM
Originally posted by KingMob
by the way vapulus

Glad to finally see another JTHM fan around here, we should make soe cahracters...

I got dibs on Shmee and Squee

Sure, you steal the fun ones. =D

KingMob
10-14-2002, 11:58 PM
ok how about I do Shmee from the future

"AAAAAGHAAHGHA MY SPINE!!!! THOSE BASTARDS TOLD ME THEY FIXED THAT GLITCH..."


that's fantastic!

vapulus
10-15-2002, 12:03 AM
*sigh*
I love that entire storyline. =)

"Oh my god! It's GOD!"

vapulus
10-15-2002, 12:18 AM
Anyways....I still can't believe there's no way to go back to the poly proxy by itself in maya once it's a SubD surface.

How does everybody do this? I mean...does everybody just deal with how slow SubD is? Blendshapes seem rediculously slow with a SubD character. I can't believe this would be acceptable to any professional animators.

I would hate to have to use NURBS for my characters. I've never gotten along with NURBS very well...it's the Lightwave influence, I think.

How do all you guys do it? Just put up with the speed hit? I just think there's gotta' be something big I'm missing, or I've lost quite a bit of respect for AliasWavefront's coding. =)

KingMob
10-15-2002, 12:50 AM
can you use a normal polygon character to be a blend shape for a poly proxy? just curious...I don't know if that would help you at all even if it works that way...like I said, I am new to binding.

vapulus
10-15-2002, 12:54 AM
I did some tests with that earlier and it doesn't seem to work. I still suck at Maya, though, so I'm not positive.

I just wish I could turn off the SubD geometry and just use the PolyProxy. It seems SO simple, yet doesn't seem possible.
I can make the SubD Geometry not visible, but it's obviously still being calculated. =P

KingMob
10-15-2002, 12:57 AM
did you try deleting those blind nodes...taht made a HUGE difference for me..

vapulus
10-15-2002, 01:07 AM
I did delete the blind nodes and it did make a difference. It still isn't a smooth transition with the blendshapes, though. It's hard to tell what i'm doing with the mouth visemes I have set up 'cause they run so jagged.

KingMob
10-15-2002, 01:10 AM
well I got my rig constraints working well, so I am going to start doing my blend shapes...I'll elt you know if I have any luck!

vapulus
10-15-2002, 01:16 AM
thanks =)

ryguy
10-15-2002, 01:27 AM
Maybe this could help you:

Create two layers. In Poly Proxy mode, select the poly cage. Put it on a layer. Now, select the poly cage again, pickwalk down (just press down) this should select the SubD surface.

Throw the subD surface on the other layer.

Now you should be able to go back and fourth between poly and standard mode via layers.

~Ryan

vapulus
10-15-2002, 01:54 AM
Originally posted by ryguy
Maybe this could help you:

Create two layers. In Poly Proxy mode, select the poly cage. Put it on a layer. Now, select the poly cage again, pickwalk down (just press down) this should select the SubD surface.

Throw the subD surface on the other layer.

Now you should be able to go back and fourth between poly and standard mode via layers.

~Ryan

This would work for some things, but once you add blendshapes to an object, you can no longer use the poly proxy mode. =P

KingMob
10-15-2002, 01:55 AM
can you make all the blend shapes (no animate yet) then delete them once set, THEN make a poly proxy?

I would like to know how this is done as well actually.

vapulus
10-15-2002, 02:02 AM
You don't actually "make" a poly proxy. The poly proxy is the object that is subdivded into the SubD surface. So if you import a poly mesh and then SubD it, the original mesh is your poly proxy. So, you can't really "make" one after you do your blendshapes. Not that i know of, anyway.

ryguy
10-15-2002, 02:10 AM
If your head is a seperate object, you could put the head on a layer and hide everything else and then animate the facials by themselves.

I've never tried to add in blendShapes from a poly proxy level. I've always selected the SubD surface and created different models from that head. I'm not sure if maya would like that.

For blendShapes to work correctly, the other "shapes" or "expressions" need to be based off the same mesh or you'll get very wierd results. I've used a slighty different head model once thinking Maya wouldn't know the difference... but she did. Didn't get good results so I ended up using the original head.

You can make all your blendShapes in a seperate Maya file. Once finished, you can load them into your main character file. Select all the shapes, then select your original head mesh last. Animation menu set, deform, create blend shape.

Once you do that, you don't need the other models you imported into the scene since they are already applied to your main head model, so you CAN delete them.

However if you select your head with blendShapes on it and delete history... your blendShape node will be deleted as well :P

I hope this helps, I didn't know exactly what you meant but I think I covered all the bases with BlendShape.

I've attached an image of a basic blendShape setup (as seen on another thread.)

~Ryan

ryguy
10-15-2002, 02:16 AM
I also should add, once you make your model a SubD and start using different levels and creases, Maya is assuming that you won't be using Poly-mode for any more extrudes or tweaking.

The only time I really go back to a poly-mode is for texturing and if I'm rigging a complex subD character that has a crazy amount of level 0 vertices :) Or if I'm attaching something, like an arm or leg. I will go back into poly-mode but I'll delete the SubD surface, then attach any geometry... then create a SubD out of the newly attached polygon.

Other than that, I don't see why you would need to go back.

~Ry

KingMob
10-15-2002, 02:24 AM
I would only go back because aniamting a sub0-d cahracter is really slow, i can do the poly in real time...I hae a decent card to a geforce 4 64 meg, I need a quadro...and dual box.

first I need money...so I need a job! that would do it!

CIM
10-15-2002, 02:36 AM
Too bad the ToggleSubDee script at Highend3d.com doesn't work.

vapulus
10-15-2002, 04:20 AM
No kidding =)
And your sig rules. =)

fango
10-15-2002, 05:20 AM
i dont know it that will help you with blend shapes, but while working in Sub'Ds,
you can go to poly mode, select the poly, assign a lambert to it, then disable subd display in the show menu of your panelview.

CIM
10-15-2002, 05:33 AM
Damn, Maya has the poorest sds I've ever seen (well, it's Pixar's really). I too can't believe how slow they are! Lightwave is easily 5-10 times faster.

So, is there actually a way around this big problem? The previous posts only help a little, yeilding minor speed improvements. I too am looking for a solution.

fango
10-15-2002, 06:06 AM
compared to 4.0, working in sub's in 4.5 is faster,

or maybe it just feels that way.
Deleting the blind data nodes really helped, though.

i thought Lightwave didn t have true subdivision surfaces (and only maya and soft did) and used their own proprietary Subdivision Lightwave surface.

That changed ? can LW subD's be imported in PRman as true curves now ? that would be nice :bounce:

rebo
10-15-2002, 06:08 AM
:bounce: ConnectPolyShape 3 :bounce:

Even tho I have access to maya subdivs I dont use them, CPS does the job for me.

wedge
10-15-2002, 06:27 AM
could have sworn this was a Maya forum, not a "Lightwave is better" forum.

CIM
10-15-2002, 08:03 AM
"could have sworn this was a Maya forum, not a "Lightwave is better" forum."

Nope, just trying to figure out a way around Maya's horribly slow sds--true or not.

I guess most of you are just used to it. It's kinda like going from DSL/Cable back to 56K or lower.

MasonDoran
10-15-2002, 09:28 AM
i dont know much about SubDs....but some from friends of mine dont even use them.....they just apply a smooth to the lowpoly model before rendering and if they want to go back to the low poly mode...they just turn the smooth node to 0. They can always change the smooth level based on their needs. As i understand it, Maya is the only app with HIEARCHAL SubDs....which is much slower then the Smooth Proxy(CPS in 4.0)...which is what all of the other 3d apps use. At least Maya has both versions....giving u a choice.

RYguy....why dont u just model with SubDs.....convert to Polys....add a smooth node....and work from there? Then it is no different then LW Subds?? BTW...are u rigging on the lowpoly mesh or on the SubD mesh?

ryguy
10-15-2002, 02:18 PM
I've always used polys first, made all my extrudes, etc on the poly mode, then I create a SubD out of it. Then I make all my final tweaks refining and creasing.

The problem with "why dont u just model with SubDs.....convert to Polys....add a smooth node" method is if you have any creases (full or partical), you will lose them, making your model look like you just started it. (I've attached a picture of this)

I don't have a problem with SubD's, I've been using them for a while now.

The main reason why I like SubDs is that they're easy to animate without using any deformers. I've run into speed problems before, but you just need to utilize Maya's layers and disable what you don't need to "see".

Could some of you that are having speed problems post a screenshot of your model?

ryguy
10-15-2002, 02:29 PM
I've added a FAQ entry in the Maya FAQ thread:

***Cure for subdivision SLOWNESS***

1.) Open the Hypergraph. Options > Display > Shape Nodes.

2.) Select the shape node for your SubD model , and "show up-and-downstream connections".

3.) Right-mouse over your SubD model in the viewport and go to Poly Proxy mode.

4.) In the Hypergraph, you should see the downstream connections change to a historyshape node (the
poly proxy) and a bunch of blindData nodes.

5.) Delete the blindData nodes. If you move vertices on your model, you should already see a slight
increase in speed.

6.) Create two layers.

7.) Select and assign the the poly proxy (historyShape) and the subd shape node to seperate layers.

8.) Hide the layer with the Subd shape node

9.) Middle mouse drag the Poly Proxy (historyShape) node over the shading group (at the right end of the
network in the hypergraph) to give it a material, so it is shaded in the viewport.

10.) Now move some vertices on your poly proxy and you should have full interactivity! You can hide
and show both layers whenever you want. (Note that the greatest performance increase comes from
hiding the SubD layer.)

You can also bind the poly proxy to a skeleton and animate it. That way you can alter and assign UVs on
the SubD model after the poly proxy is skinned. When you want to render, just hide the poly proxy and
show the subd! Walla!

Hopefully this will work for everyone. If it doesn't and you have questions, post them. I'll try to solve
them. Note that you must repeat the steps concerning the Poly Proxy node if you switch back to standard
mode and then back to Poly Proxy node (deleting blindData nodes, assigning to the layer and assigning a
shading group, etc).

fango
10-15-2002, 03:49 PM
great, constructive and useful post ryguy :) :thumbsup:

vapulus
10-16-2002, 12:30 AM
yeah, great post, ryguy

i'm just afraid it might die if i give it blendshapes
'cause once i use blendshapes it disallows use of poly proxy mode...for some weird-ass reason

playmesumch00ns
10-16-2002, 09:16 AM
On maya's Subdivision Surfaces

Okay there's two 'types' of subdivs that seem to get confused quite easily. There's Heirachical Subdivision Surfaces (Maya) and Subdivided Surfaces (Max, LW, PRMan etc.).

The reason the Max and Lightwave subdivs are 'so fast' is because all they're doing is essentially a polysmooth on the mesh.
You can do this yourself in Maya by just sticking a polysmooth node on you mesh and then turning the subdivision levels up and down. There are also a million-and-one scripts to do this for you (like CPS) and Maya 4.5 has this functionality out-of-the-box.

I don't know about Max and Lightwave but PRMan's subDs subdivide the mesh at rendertime to sub-pixel accuracy (which is also what Maya's do) so you never see any facets: NURBS features on a poly mesh.

Now Maya's sub-Ds are heirachical, which means you can do all sorts of funky things. But this also means that when you convert it, it's not a polygon mesh anymore, it's a subd mesh, which is a different beast entirely, and the cause of much aggro if you try to treat it like one.

One other thing worth noting is that Maya is a NURBS modeller by trade. NURBS are much faster than polygons. Which is why they're used in film projects (also because PRMan will render NURBS about 10x faster than polys, although of course Pixar are switching over to subd's now)

MasonDoran
10-16-2002, 09:31 AM
Now thats why i love Maya....you feel like your are inside the app....and once you know what you are doing(the frustrating part).....you have complete control over all of the details. Its not "why cant Maya do this or that".....its HOW do you make it happen which makes the app so attractive to me. I just love learning :)

dwalden74
10-16-2002, 11:04 AM
PRMan's subDs subdivide the mesh at rendertime to sub-pixel accuracy (which is also what Maya's do)

Hi playmesum-

Are you sure this is true? I know for Maya´s displacement, that the displacement tesselation occurs *before* rendering time, which can result in extremely long pre-render times. Subdees in Maya might be the same way, although I use them so infrequently that I don´t actually know. PRMan is different in that the displacement calculations are made at rendering time, and is much faster than Maya in this. I believe the new mental ray also calculates displacement in this way.

:beer:
David

vapulus
10-16-2002, 01:33 PM
Thanks, playmesumch00ns. I knew the SubD in Maya was heirarchial and LW's was not, but I didn't realize that it would create THAT much of a performance difference. I guess I'm used to the fast way of doing things. =) I think for who I am and what I'm doing, CPS is probably the better bet for me. If it's what LW does, then it's what I'm used to. I obviously don't quite grasp all of the power of Maya's SubD, since I don't really know the difference between them and LW's, yet. I did notice that Maya's SubD are really powerful, and that's why I wanted to use them. I'll have to do further testing of both options. I'm just used to hitting my "tab" key and constantly switching between poly and subD mesh. I think it made me soft. =)

Thanks to EVERYBODY who posted in this thread. This is a huge pile of good information for everybody who uses SubD's with Maya. Especially that Blind Node thing. Stupid Blind Nodes. =)

Waboflex
10-16-2002, 04:56 PM
Copied and pasted from a post I made a while back:

---------------------------

- I've got 2 shelf buttons set up, one to convert Poly -> Subd and the other to go Subd -> Poly (using vertices, level 0). Now basically if you want to move a vertex, edge or face you do this in Standard mode. NEVER edit components in Polygon mode because you'll wait forever for viewport updates if the model's reasonably complex. Editing in Standard mode is way, way faster than CPS with big meshes (in my experience), and it's the way you're meant to work with Maya's subd's.

- When you need to change the topology, e.g., extruding or splitting faces, convert it back to poly's first. Not only is this faster than doing the same to the subd version in Polygon mode, but it also deletes history when you convert. So you never build up those blind data nodes which slow things down.

Effectively it's like using Lighwave's subd's, and it's been a quick, efficient and problem-free method for me, and you get the real benefit of resolution-independent render smoothness. The only real downside is that converting to poly's will kill any detail at level 2 and beyond, so you can't really do it this way if you use hierarchy detail. But then again not many people do.

Oh and BTW, rendering them is slow with the default tessellation of 4, try setting it to 2 and they speed up a lot. I've never needed a higher level than that.

-----------------------

As I mentioned, the speed of Maya's subd's when used in component mode is actually pretty impressive (judging by the frame rate display when pulling points, they're about 3 or 4 times as fast as smoothed poly's or CPS with the 9,000 and 30,000 poly models I tested on). The problem is definitely caused by those naughty blind data nodes, which is a shame since they didn't work like this in Maya 3. Of course blend shapes and rigging are still slow (any app is much the same with high polycounts) so you should always animate with the low poly version.

Hope it helps. :)

Wabo.

mushroomgod
10-16-2002, 05:53 PM
sorry guys i had no idea this thread was still alive...

for those who want to try that smooth/render script you can find it on highend....its called SmoothZet v1.1

CGTalk Moderation
01-13-2006, 07: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.