Jump to content
Sign in to follow this  
duLuna Bosatsu

Maya sculpt importing wrong, Should I switch 3D programs?

Recommended Posts

This happens to me way too much when I use Maya. Generally it means I **bleep**ed up and have to start all over again:

CogDeformation.jpg

I get a lot of strange curves happening when I upload my sculpts. Not all of the time, probably about 45-50% though. Lossless doesnt help much either. The most plausible reason I can think of that it did it with this project was I rebuilt the surfaces of my initial cylinder, adding 8 more sections to ensure a "boxy" effect to the cogs in the cog wheel.

I've seen people do a better job at recreating this shape in the marketplace, and I'm just wondering- from your personal experience if you've used either Maya or Blender or any other 3D program for SL, do you get better results from one or the other? Any problems like this at all? Tricks for steering clear of them? 

I installed Blender, but I must confess, the UI is completely different. Is it worth my time to learn or will I fall prey to this error again? 

-------

Attempt # 2:
Started from scratch, 16 spans, 32 sections. Meticulous/careful/methodical working. What am I doing wrong? :(

Attempt2.jpg 



Share this post


Link to post
Share on other sites

You can make this work with Maya, but it takes some non-obvious tinkering, due to how the sculpty exporter is set up. Sculpties themselves weren't designed with this kind of modeling in mind, back in the begninng. So, when Qarl Linden wrote the sculpt map exporter for Maya he set it up to employ surface sampling, rather than precise per-vertex position reporting (which is why it works so well with NURBS, which by definition, do not have exact vertex positions in the first place).  Enterprising users later built their own exporters for programs like Blender and Wings, and those work on different principles than the Maya one. 

As you probably know, NURBS modeling is generally the way to go for sculpties in Maya.  But for certain kinds of objects, including gears, it's actually more practical to use polygons. However, if you've ever experimented with trying to get polygon-based sculpties out of Maya, you probably know it doesn't tend to work well.  There's always quite a bit of inaccuracy in the vertex positioning.  To get it to sample plolygonal surfaces with reasonable precision, you need to double up all the vertices.

 

Here's a gear I made just now.  As you can see, the SL version is pretty much a dead ringer for the Maya version.  To make it work, I had to model it in a way you probably wouldn't expect.

gears.jpg

Here's how I did it:

1.  Start with a poly plane, with 64x8 divisions.

2.  Select the second column of vertices, and snap it over onto the first.  Select the fourth row, and snap it onto the third.  Repeat this for every other column.  Then do the same for the rows. The plane should now look like it's got half as many divisions as it actually has.  The vertices are doubled up.

3.  Fold the plane three times along its lenth, to form a four-sided cylinder.  Each side of the cylinder will appear to have 1x32 divisions.

4.  Now let's form the teeth.  On one side of the cylinder, select two adjacent columns of vertices.  Leave the next two  columns unselected, and then add the next two after that to the selection.  Repeat this until you've got 16 rows selected, and 16 unselected.  Move the selected rows away from the cylinder.

5.  Using a bend deformer, roll the tube into a torus.  It should now look exactly like the Maya screenshot above.

6.  Delete history, freeze transformations, and reset transformations.  (Always do this as a final step before sculpt map export, every time you make a sculpty.)

7.  Export a 256x16 sculpt map, and upload to SL.

 

If you plan to bake a texture, you'll first need to clean up the model.  Those doubled up vertices have to go.  Here's what to do:

1.  Merge all the overlapping vertices.

2.  Open up the UV texture editor, and verivy that the UV map is correct.  Depending on which sets of vertices you moved when you did the overlapping, the UV map might be offeset by a row or column (or both).  If so, simply set your UV grid to the appropriate number of divisions (32 for U or 4 for V), and snap the UV's into place.

 

Needless to say, the above is a little bit of a pain.  But then, sculpties are a pain in general.  There's really no need to use them for this purpose anymore, since we've got mesh support now.  You can make a an equivalent mesh gear in just a couple of clicks.

  • Like 1

Share this post


Link to post
Share on other sites

Thankyou for clearing that up for me, Chosen. Your explainations are always very very helpful. :3 I've not really had to make any sharp-angled shapes like this, so the use of polygons is pretty fresh for me. Happy to be learning new ways of doing this though!

I'm having a hard time following the second step of your tutorial. I understandwhat you're telling me to do, but:

Plane.jpg

on length and width- even though it is an even 8x64 I'm left with the last row not having a pairing buddy. I'm actually kind of nervous confessing this, because I know Im probably overlooking something obvious (as per usual xD ). Hope you dont mind.

Share this post


Link to post
Share on other sites

You can safely leave the last row and column each unpaired.  Those are going to pair up with the firsts anyway, when you fold and roll the plane into the torus shape.  But if it makes you feel better, you can go with 65x9, and then everything will pair.  I doubt it will make any difference.

One thing I would suggest, either way, is that you keep the direction of the pairings uniform.  I notice you've got your arrows alternating drections.  That's could make things a little screwy, UV-wise.  For the rows, snap all up or all down.  For the columns, go all left or all right.  If it matters, I did up and left for mine.

Share this post


Link to post
Share on other sites

Ahh, I see! 

"Select the first column of vertices, and snap it over onto the first.  Select the fourth row, and snap it onto the third" 

^ made me think that when you said, "snap it over onto the first" you meant second, and "the fourth to the third" I was just reading it wrong ^_^ thank you Chosen. I'll try this out and get back to you!

Share this post


Link to post
Share on other sites


duLuna Bosatsu wrote:

 

"Select the first column of vertices, and snap it over onto the first."

 

D'oh!  Typo.  Should have said "Select the second column and snap it onto the first."  I'll edit the post.

Sorry about that.

Share this post


Link to post
Share on other sites

it's np :P

So here's my attempt #1. I selected 16 colums on one side for the teeth, pulled them out and proceeded to bend the shape. Unfortunately, in order for the 2 sides to touch the center folds in on itself.  :< I read and reread your steps, I really dont know where I went wrong.

attempt.jpg

Share this post


Link to post
Share on other sites

Have you tried moving the deformer? :)

I take it you're new to using deformers.  Try moving it along each axis, and see what happens.  Keep in mind that the deformation effect is centered around the deformer itself, and you'll be able to make sense of what you're seeing.

As you'll discover, you can solve your current problem simply by moving the deformer up.

 

Another option is to proportion the model so that the deformer will automatically bend it in the way that you want.  Before you apply the deformer, think about the proportions the object's base topology would need to have if you were bending it in RL. 

Say in RL you were bending a piece of hose into a torus shape.  How would that work?  Quite obviously, the length of the hose is going to become the major circumference of the torus.  And of course, the hose's depth and height are going to be the minor diameters of the torus.  With that in mind, what proportions does the hose need to have?

If the hose's length is equal to its width and height, it's not gonna work.  You'd never be able to bend it in the way that you need.  The only way it can work is if the hose is far longer than it is tall or wide.

The same is true here.  It looks to me like you started with a more or less equlateral square tube.  Squish the tube vertically*, and you'll see the problem go away as you effectively change the minor diameter of the torus.

You can also prevent the problem in the first place, by giving the object proper proportions before you apply the deformer.  Stretch the model lengthwise a good deal, then apply the deformer, and the problem won't crop up.

(For what it's worth, I'm not sure how you would have arrived at equal length, width, and height, in the first place. By starting with a square plane, and then folding it three times, the resulting piece of "square tubing" should have ended up four times as long as it was tall.)

 

 

*A few things to note:

  • When I said "vertically", I meant in relation to the deformer's up axis, which from your screenshot, happens to be global Z axis.
  • After you've applied the deformer, the object looks round, but it's not really.  That's just the visual effect produced by the deformer acting upon the object's shape.  It's an illusion of mathematics, nothing more.  The model's actual shape is multiuplied by the deformer's shape, to produce the visual effect.  The real geometric shape of the model itself is still that same square tube it was before the deformer was applied. 
  • Keep in mind, the power of custruction history in Maya.  The object's base shape comes first in the history, and the deformation comes second.  Because of this, you can change the base shape all you want, and it won't change the major roundness of the torus.  That roundness comes only from the deformer, not from the base model.
  • To "bake in" the effects of a deformer, delete construction history.  Only at that point will the perceived shape become real.  With the hostiry gone, you've remove Maya's memory of how the visual shape came into being.  At that point, Maya simply concludes that the shape the object appears to be is the shape it actually is, and that's that.  This is one of the many reasons that, to ensure a clean outcome, you MUST delete history before exporting your sculpt map.

Share this post


Link to post
Share on other sites

This is what it looked like with the first attempt before I used the deformer:

previous1.jpg

 

I actually use the deformers quite a bit, but it never occured to me to move them like I did for this, my shapes in the past simply didnt need it. I'll have to experiment more with what I make :D I should have realized though what was causing it and used a process of elimination (and common sense, really...) to go about looking for a fix. I got a knack for easily-frustrated that impairs my troubleshooting skills :( your hose explaination made a lot of sense as well, I'll need to start thinking more about the shapes as I make them and get used to the tools more. (I've been using SL as a kind of beginner's step into Maya while making an attempt to be productive at the same time. Your help goes a long way to help me branch out <3 )

 ---EDIT: Deleted question due to retardation, I can just manullay snap the points together. xD;; ahhh /que what she mentioned a paragraph ago.

So I went to upload the gear and its inside out:

Attempt2.jpg

I know I can check the "inside out" option in SL, but I'd like to know what I did wrong to get it to reverse like that. I certainly didnt reverse it with the deformer :\

Share this post


Link to post
Share on other sites

My guess is when you folded the plane, you folded inward instead of outward.  In other words, the back face of the plane became the outside of the tube.  An easy way to avoid that is to work with backface culling turned on in Maya.  That way, you'll always know beforehand which side to expose.  Alternatively, you can turn enable normals display, so you can see which way the normals are pointing as you work.

To fix any existing polygonal models that are inside out, simply reverse the normals.  For NURBS models, reverse the surface direction on one axis.

Share this post


Link to post
Share on other sites

thanks for that! I totally folded it backwards. When I selected Reverse Normals nothing happened, at least nothing that was notable in SL- still uploaded reverse.

So I started over again from scratch. Folded it correctly, made the teeth... when I went to export the sculpt map, it had a strange black stripe on it:

gear.jpg

I was curious to see what it would look like in SL:

weird.jpg

ugh.gif what happened~?

Share this post


Link to post
Share on other sites


duLuna Bosatsu wrote:

When I selected Reverse Normals nothing happened, at least nothing that was notable in SL- still uploaded reverse.


Not sure why it wouldn't have worked.  You did have the object selected when you clicked the command, right?  Were you in object mode or component mode?  Did you enable backface culling and/or normals display, to verify that the normals were indeed pointing in the right direction?  Did you delete history before exporting the sculpt map?

 


duLuna Bosatsu wrote:

when I went to export the sculpt map, it had a strange black stripe on it

ugh.gif

 what happened~?

Somehow, the exporter thinks you've got a row of vertices all at <0,0,0>.  Here are the usual suspects that might cause that:

  • You didn't merge any of the overlapping vertices before exporting, did you?
  • Have you checked the UV map to make sure it's correct? 
  • Did you remember to delete history, and freeze & reset transformations before you exported?

If none of those are the culprit, I'm stumped for now.

Share this post


Link to post
Share on other sites

Chosen Few wrote:

Not sure why it wouldn't have worked.  You did have the object selected when you clicked the command, right?  Were you in object mode or component mode?  Did you enable backface culling and/or normals display, to verify that the normals were indeed pointing in the right direction?  Did you delete history before exporting the sculpt map?

Yes to all. I really dunno what caused it, but redoing it worked (sort of.) I went back to another save file where I had folded it into the cylinder, turns out even that one was giving me issues with the vertices at <0,0,0>. So I redid it... again and now all is fine with the sculpt. To answer though, no I didnt merge them, I think I just messed up a row when I was overlapping the columns and rows. The UV map looked fine as well, and yes I took the history free/reset steps.

Onto texturing- as I noticed there was an optical illusion of beveling occurring on the sculpt (as if it were protruding in some areas.) I figured it was normal since your screenshot also had some shaded areas. When I took your steps (merged and checked UVs ) My single area lit gear turned out like this:

texturing.jpg

I dont even know where to begin to escribe what's happening here :| 

 

You mentioned mesh would be easier. I've been reading up on it and I guss with having jumped into the 3D world starting with SecondLife my understanding is limited. As far as meshes go, I have a good idea, but how would applying textures work? I get the feeling the explaination might be pretty long xD and I love your explainations, hope you dont mind me asking.

Share this post


Link to post
Share on other sites

The funky shading in Maya is the result of normals pointing in odd directions.  We collapsed 3/4 of the faces in the model when we snapped all those vertices on top of each other. As a result, some of the light is reflecting parallel to the surface instead of away from it.  Less light from the affected faces makes it to the camera, so those faces appear darker.

To solve the problem, simply select the model, and harden the normals.  That will reset them all to be pointing in the right directions.

As for what's going on with the SL version, there are a few issues to consider.  Take a look at the wireframe, and you'll probably want to puke.  It's gonna be all kinds of sloppy.  There are only 256 possible stops in each direction, and you're trying to make a 32-sided cylinder.  It can't be perfect.  Sculpties just weren't meant for this kind of work. 

 

Regarding your question about how to texture a mesh, the answer is any way you want.  Right now, you're probably so used to SL's iron fisted restrictions, it might not even occur to you how much freedom is at your fingertips with mesh modeling. 

With sculpties and prims, you're stuck with just one UV layout, so there's almost zero control over how the texture wraps around the canvas.  Every texture wraps in basically the exact same way.

But with an arbrary mesh, the UV layout is just that, arbitary.  If you want it to be just a grid like with a sculpty, fine, you have that option (assuming the model has that kind of topology, of course).  But you can also set it up any other way you might want.  There are no rules constricting how you might choose to place each face of the 3D model onto the 2D texture canvas.  However you think it best fits, do it.

 

Before I can elaborate on that, let's first take a look at the gear as an arbitrary mesh model, instead of a sculpty.  Just to show you how easy mesh is to work with, here's how to make that same gear in just a dozen clicks or less.  (Technically, it's 10 clicks, and two drags, but who's counting, right?) 

Note, there are a gazillion and one ways you might go about mesh modeling gear.  This is just the one I happened to choose right now, since it's super easy to explain, and even easier to actually do.  Plus, I just thought "dozen clicks or less" had a nice ring to it. :)

 Here goes:

Click 1.  Start with a polygonal tube, with16 divisions around the axis, and one division along the height.  (Okay, you might have to click two extra times, to plug in those numbers, if your Create Tube settings don't happen to be that way already, but we're not counting those.)

gearStep1.jpg

 

Clicks 2-9.  Around the outer surface, select every other face.

gearStep2.jpg

 

Clicks 10 and 11.  Extrude.  When you click the Extrude button, the manipulator will change to extrusion mode, and it will move to align with the surface normal of one of the selcted faces.  In this state, whatever you do with the manipulator will affect all the selected faces, each relative to its own surface normal.  So, to create the gear teeth, simply drag the manipulator along its local Z axis.  All eight of the selected faces will extrude outward, forming new faces in their wakes.

gearStep3.jpg

 

Click 12.  Scale.  Right now, the teeth are square.  If you're OK with that, you're all done modeling.  But that's not really how gears are usually shaped.  In most cases, the teeth will be tapered a little, so let's do that.  With the manipulator still in extrusion mode, grab the local X axis scaling handle (the red box on the end of the red arrow), and drag it toward the center.

gearStep4.jpg

 

There you go.  A perfectly good gear, in just 12 clicks.  If you were making your own gear for the first time as you were reading this, it probably took you a few minutes, since you were reading as you were working.  The second time you do it'll probably take you about 30 seconds.  Try making a sculpty gear from scratch in 30 seconds; I double dog dare ya!

 

Now let's talk about how you might UV this model.  Before we dive into it, let me first say I'm not going to give an A-Z walkthrough of how I created each of the following examples.  I'll give a basic overview for each one, but I'm not sure it would be a good use of my time today to write a beginner level textbook on the ins and outs of UV'ing 101 right here in this thread.    I'm much more interested right now in discussing the concepts of what makes a sensible UV layout than the specific button pushing.

If you've never done any UV'ing at all before, the best way to learn is just to do it.  Read the relevant chapeter in the User Guide section of your Maya help file, and take a look at any of the thousands of beginner tutorials you'll find all over the Web.  UV your first model, and you'll understand how it all works.

With that out of the way, let's take a look at some possible UV layouts for this particular model.  As I said before, there are any number of ways you could choose to set it up.  Let's start with one of the most obvious possible layouts:

gearUV1.jpg

I created this layout by applying planar UV mapping to the top and bottom, and then applying a cylindrical mapping to the inner faces and outer faces.  Then I simply scaled the results, and moved them to where they fit most easily on the cavas.

With this layout, the top and bottom of the gear are very easy to see, so if you're 2D painting a texture by hand, you can't miss.  The surfaces inside the hole are evenly spaced across the top of the canvas, and those of the outer side are across the bottom, each laid out wrap-around style, to be textured in much the same way as you'd texture the side of a cylinder in SL.

That's all nice and logical, and very easily visualized, but it's not very efficient.  A tremendous amount of canvas space is left unused. That's not good when your goal is to be as low-lag as possible.

 

Now here's the opposite extreme layout.  This one totally maximizes the canvas space, and scales all the faces to their best relative sizes, to ensure uniform pixel density across all:

gearUV2.jpg

With UV layouts like this, you'll be the king or queen of low-lag texturing.  But needless to say, painting this sucker in any 2D paint program would be a nightmare.  You can do it, but it's gonna take time and effort to constantly keep track of which face is which. Maps like this work best if you're going to be 3D painting and/or baking, scenarios in which you really don't have to care about where any particular face is on the canvas.

Now, obviously creating a layout like this one can be tedious.  All that moving, rotating, and scaling of each little face can drive you batty, if you're dong it all by hand.  On a simple model like this gear, it's not terribly time consuming, only takes a minute or two, but still, it's annoying.  On a complex model, it can take hours.

I don't have the patience for that, which is why I've got this awesome little plugin for Maya called Unwrella (also available for Max).  It's designed specifically to do what I just said above, maxmize canvas usage while ensuring even pixel density across all faces.  With Unwrella, I was able to create that second layout instantly, in precisely two clicks.  It's a fantastic tool.  At around $200, it more than pays for itself in a single project.

If you don't want to buy Unwrella, you can acheive pretty decent results quickly with Maya's various automated mapping methods.  Just be aware that you'll often have to refine the map by hand afterwards, as the built-in systems aren't as sophisticated as the plugin.

 

The above two layouts assume you want one texture to cover the entire model, and you want each face to receive a unique area of that texture.  But that's hardly the only way to go about texturing a model. 

For starters, there's no rule that says each face needs its own space.  Put two faces in the same space, and they'll both get the same texturing.  This is why the SL avatar gets the same texturing on both arms, for example.  Both arms have their UV's occupying the exact same part of the map.  Hence whatever you do to one happens to the other.

And of course, there's also no rule that says the model has to have only one texture on it.  What if you want to texture this gear the same way you'd texture a typical SL prim, which each "side" getting its own texture, and with each texture being very squarely laid out across the surface?  In that case, you'd probably want a UV map that looks like this:

gearUV3.jpg

Here, we've repeated the same basic logic as in the first example, except this time, each "side" of the model fills the whole canvas. This is the same way a hollow cylinder works in SL.  The bottom, top, inside, and outside each fill the canvas fully, as separate UV shells.  The top and bottom are planar mapped, while the inside and outside are cylindrically mapped.

Notice I've put each side in its own UV tile.  Technically, each tile is just another repeat of the texture canvas, so in terms of actual texture placement, it really doesn't matter whether we pile all the UV's into just one tile, or spread them out like this.  The mapped results will be the same either way.  However, using multiple tiles does afford a couple of usability advantages.  First, most obviously, it makes things much easier to see.  Second, 3D paint programs like Mudbox tend to interpret each tile as a unique material, so it's usually good practice to do it this way if your intent really is for each side to have its own texture.

Needless to say, we've got the same inefficiency problems we had in the first example.  The top and bottom leave a lot of canvas space unused.  And pixel density is about as bass ackwards as it gets.  Including the teeth, the outer side has twice as many faces as the inner side, which means each outer face only gets half as much canvas space as each inner face, even though the faces inside the hole are physically smaller on the model than most of the outer faces. 

Efficiency wise, this particular layout is pretty silly.  But it's the layout that SL users are familiar with.  You could slap any of the thousands of pre-existing textures in SL on this thing, and they'll all work.  If maximum compatibility is the goal, this would be one way to acheive it.

 

Those are just the tip of the iceberg.  There are as many ways to UV a model as there are stars in the sky.  There's no absolute right or absolute wrong way to UV anything.  As with anything else, make intelligent decisions on a case by case basis, in accordance with the specific goals of each build.

So, once again, to answer your question, the way to texture a mesh model is any darned way you please!

Share this post


Link to post
Share on other sites

Just one caveat about the second UV map, with lots of disconnected islands - The internal mesh streaming data structure in SL stores a vertex list where each element contains position coordinates, normal and UV coordinates. This means a duplicate list element is required every time the same geometric position occurs with different UV coordinates (and/or normal). So separating the UV map into many small islands can substantially increase the data size, which will increase the download weight and thus usually the PE(LI).

In this case, the sharp edges will often cause duplications with different normals anyway, and so the effect of the fragmentation is probably small, but in other cases, especially with smooth shading, the effect can be substantial. In general, keeping smooth shaded sections in as few islands as possible will help to minimise PE. So there is often a trade-off between efficient use of texture area and PE optimisation.

Share this post


Link to post
Share on other sites

Thanks for that, Drongle.  Good to know.

What an annoyance, though.  This is yet another example of where FPS considerations and streaming considerations are at odds.  Smart users will learn to strike a balance, but as we all know, most users aren't so well informerd on these things.  I suspect low rendering costs will take a backseat to low streaming costs in most cases, which is unfortunate, at least from my perspective.

I really don't care if something takes a few seconds longer to load, as long as my ongoing usability after it loads is good.  I know not everyone feels the same on that.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...