Home Technical Talk

[Solved][3dsMax] Transfer vertex normals from another object.

polycounter lvl 16
Offline / Send Message
dimwalker polycounter lvl 16

I need normals of border vertices on object A to match normals of vertices in same coordinates of object B, basically to fix the seam without affecting object B.

Tried noors normal thief and it does almost that, except there is still a small split that prevents smooth shading. Interestingly enough is that in-house tool produce same result with small normals deviation. Is there other ways to do this or maybe there is something about the mesh itself I need to check/change for scripts to work precisely?

Both objects are editable poly.


Replies

  • Klunk
    Offline / Send Message
    Klunk ngon master

    you could try adding an edit normal modifer to both objects

    select the normals on both side of the seam

    then use average selected

  • dimwalker
    Offline / Send Message
    dimwalker polycounter lvl 16

    Unfortunately I can't - not allowed to modify object B.

  • Ghogiel
    Offline / Send Message
    Ghogiel greentooth

    If it's not a metric ton of verts you need to match you can do what Klunk said, select both objects, add an edit normal modifier but now instead just copy value and paste value from one normal to the other. It'll not be the best way if you need to do this a lot, since it only works by doing one vert at a time

  • dimwalker
    Offline / Send Message
    dimwalker polycounter lvl 16

    Thanks. As a last resort it will do, hopefully will only have to do this in problematic areas where lightmap artefacts occur.

  • Klunk
    Offline / Send Message
    Klunk ngon master

    quick and dirty script, you'll need to edit the last line and then press ctrl-e


    now you see it

  • Klunk
    Offline / Send Message
    Klunk ngon master
  • dimwalker
    Offline / Send Message
    dimwalker polycounter lvl 16

    Takes a long time to process, but is totally worth the wait. Does exactly what I need. Thank you!

    One question though. Can understand what code does in general, but not why. Why does it use mapping channel?

  • Klunk
    Offline / Send Message
    Klunk ngon master

    there are other ways to do it, storing the edge normals in an array would have been a better way to go but it was really just a cut and paste script I had code that worked that way. In general keeping normals in a mapping channels work well with scripting as you don't need the object selected and to be in the Modify Panel to work on them as with the Edit_Normals modifier.

    quick note, another reason to use a map channel to store custom normals is that they are not lost when a modifier is applied, though specified normals can travel down the modifer pipeline most modifiers do not bother to implement it so they are lost where as map channels will travel unchanged and universally through the pipeline. This is true for both sdk and scripting.

    another quick note most mesh attachment doesn't preserve specified normals but does preserve map channels.

Sign In or Register to comment.