Normals for Multiple Objects

Hello everyone, this is my first post and thread (as well as my first problem to bring up here) about normals for multiple objects. I am in the process of finishing up a model to be exported into a physics engine, and I’m constructing it to the likings of the engine. Here is the model, a goofy-looking creature…

In order for it to work properly in the physics engine, I need the eyes to be a separate object so as to be swappable with other eye textures. I know how to do it all, but this happens…

The normals get messed up… For the record, I tried Ctrl+N to recalculate the normals; I’ve seen this done correctly in 3ds MAX, but as my skills are more fluent in Blender I am unable to use 3ds MAX effectively. Can anyone shed light on my problem? Thank you in advance.

I doesn’t look like reversed normals. It looks like the smooth shader is turned on for the model and the first set of eyes. With the swapped pair it looks like it is set to flat. Try turning it back on and see if that fixes the problem.

It isn’t set to flat; the eyes are freshly separated from the model, hence my post above saying “I need the eyes to be a separate object”. When separated, the smoothing or normals don’t retain themselves in which poses a major problem for me. I think Blender is calculating the shading automatically, so is there any workaround to this?

I am not sure what effect you are expecting… The eyes are different geometry from the rest of the head. That they stand out is no surprise to me. Perhaps you can clear this up for us by posting a .blend?

Anyhow, face normals will only ever point in one of exactly two ways: perpendicular to the face going “this way” or perpendicular going the other way. You can always look at what the normals will look like going the other way by selecting them in Edit Mode and hitting Ctrl+f,f.

While I am at it, I am curious to know why the eyes should be separated from the main mesh? Perhaps we are overlooking an alternate approach completely.

Cool character, by the way.

-rking

The eyes are separated into ‘bodygroups’ that are able to be swapped within the physics engine, so if the entire model is replaced only to have different eyes seems a bit unnecessary. I mean, if it can be done in 3ds MAX then it can be done in Blender, right…? Right?

I have included the .blend file and textures, don’t release it as yours okay? :no:

Also, I may say that the eyes are still solid on the model in the .blend, as the resulting smoothing occurs when separated. A reference pic can be seen on what to select in my first post in this thread.

Attachments


Wendell.blend (917 KB)

Ok - I am glad I asked. A better way to do this is to UV map the first eye into position, then simply offset your map to switch eyes. If you put them all horizontally then it simplifies the offset even more.

But when I get back to a computer (my phone might fit some definition of “computer”, but since it doesn’t run Blender it doesn’t qualify in my book) I will see if any solution leaps out at me.

-rking

OK, now I understand the problem.

And a solution did jump out at me. It is a bit gnarly so buckle in.

  1. I selected the center triangle for the eye area, then expanded the selection twice with Ctrl+Numpad “+”
  2. I duplicated that area with Shift+d and separated it with p,s
  3. I then set the original mesh to make the inner bit transparent - by adding a material with Alpha=0, Specularity=0, and no Shadow - and assigning that to the region defined by that first triangle and only one Ctrl+Numpad “+”
  4. I then went into the other mesh, the eye chunk, and did the inverse: I made the whole thing the Transparent Material then selected the first triangle and did Ctrl+Numpad “+” one time then assigned that to the old Material.
  5. It works at this point for render and for the BGE, but it was still looking shabby in the 3D View, so I enabled Object Properties > Display > Transparency for both the main mesh and the eye chunk.

The reason this tomfoolery is required is because of the way smooth shading works. It interpolates the value based on the normals of adjacent faces. If you rip a portion of a mesh out, the edges of the meshes have nothing to interpolate against. So I had to include an invisible edge for both meshes.

Here is the example of what I did: Wendell2.blend (857 KB) (Note that this is only for the Left eye. You could Mirror Modify or similar to get the other side done).

I still say the right way to do this is to use UV map offsets.

Another thing, I notice that your bones are all very short. This is going to mess with your deformations. I see that it already messed with your Automatic Weight assignments. I would select the Wendell Mesh, Alt+p to clear parent and remove the Armature Modifier. Then I would stretch all the bones out so they reached their children, then I would re-parent using Automatic Weights. The weighting will come out 10x better and the pivots for bone deformations will come out 100x better.

What do you think?

-rking

Oh, I don’t automatically set bone deformations; I paint it all myself, and the physics engine seems to like the short bones. I find this ridiculous, but I don’t have a num pad on my laptop… I’ll need to assign the buttons a bit. Thanks for the answer!