Home Technical Talk

3ds Max: Editting Vertex Normals Precisely

cefa74e96c4c00ce9faeabd6c3093213.png

Hi guys, I'm working on a series of seamless modular trench staticmeshes. I want to change the vertex normals on the very edge of the green object (highlighted in the picture) so that they perfectly match the v-normals on the corresponding edge of the red object. The objective is to eliminate any lighting seams that would occur when I line up two trench modules inside UDK (I'm using Triplanar Projection Mapping so I don't have to worry about UV seams here; only lighting seams).

How can I edit the normals in such a precise way?

Replies

  • pointcache
    Offline / Send Message
    pointcache polycounter lvl 6
    hm they should be in one plane, so you can do something like eyeball when some group of poly is roughly in same plane and then use "make planar" each group, and test/refine until its done.
  • SuperFranky
    Offline / Send Message
    SuperFranky polycounter lvl 10
    On scriptspot.com you can find a script that "stitches" normals on seams between two objects.
  • Eric Chadwick
    I did this a few years ago for a modular trench-based game. I made instance-copies of all the sections, overlaid them, added an Edit Normals modifier to all of them, marquee-selected each vertex, Average button. Repeat for each vert along the seam.

    This ensures every vertex along the shared seam, for every model, has the exact same vertex normals.

    The script might do this, but I doubt it. You need to make sure every single piece gets the same normals along that edge.
  • Eric Chadwick
  • Nightingale
    But won't that script not work on seams which are oriented 90°, -90°, or 180° from the 0° seam, since it is taking the average across all meshes?

    Am I misunderstanding what that script does?
  • Eric Chadwick
    Haven't tried it. Looks interesting though, worth a test.
  • Nightingale
    I think I have to do a bit of troubleshooting to get the script to work with my version of 3ds Max (I just keep getting "unable to locate script." messages).

    But in the meantime, is there some way for me to view/assign the [r1,r2,r3] components of a particular v-normal vector? I don't mind doing it the tedious way so long as I can do it precisely the way I want.
  • Eric Chadwick
    Did you try this? Make instance-copies of all the sections, overlay them, with all of them selected add an Edit Normals modifier, marquee-select a window around a vertex, press the Average button. Repeat for each vert along the seam.
  • Nightingale
    Thanks for continuing to help me with this :)

    9455fa0ceffac295e3b9ce343a388a01.png
    b8e29f7cbf2ee3947744440b01eb30af.png
    This is the result of taking the averages vert-by-vert.

    I'm not sure if I totally understood your instructions, because I don't understand why taking averages would be helpful here since there's no guarantee they would end up in the Y-Z plane. I also have seams which are oriented 90*, -90*, and 180* to contend with.

    In the first picture I posted, the little red object was the "model mesh" with v-normals meeting the necessary specifications:

    1.) They all lie in the Y-Z plane.
    2.) They are left-right symmetrical, which ensures that pieces will be seamless whether I join them front-to-back or front-to-front or back-to-back.

    If I could somehow select a group of v-normals, and then tell them that I want them to point in the same direction as a "model" v-normal, that would be perfect.
  • Eric Chadwick
    Yeah, you can do that. That's what Copy Value/Paste Value does. Select one normal, copy it, select all the others, paste. You have to have all the models selected, and add a Normals modifier first, then you can copy/paste within that one instanced modifier.
  • Noors
    Offline / Send Message
    Noors greentooth
    edit: didnt see you had a ref object. Yeah, copy paste will do.

    Else, average them with their own flipped model. The normals will lie on the YZ plane.

    Also you could attach the models,
    weld verts,
    add an edit normal modifier,
    make all normals explicit,
    collapse,
    then for each part, duplicate the object and delete unwanted faces. The custom normals will stay intact.
    Might be quicker, depending of the number of points.
    I'm not sure if multi seelction copy/paste works well.

    You'd need maxscript to set normals without that, and i doubt you want to mess with edit normals through mxs.
  • Nightingale
    Ah, it was right under my nose all this time. I should really pay closer attention to the UI.

    Thanks guys :)
Sign In or Register to comment.