Skip to content

revoconner/3dsMax-TransferVertexID

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3dsMax - Transfer Vertex ID [ALPHA]

A tool that allows users to transfer vertex ID from one mesh to another provided that they share the same topology. This wasn't possible before in 3ds Max. The tool is not limited by different shape of the geometry or by UV of the models.

This tool lets user choose three corresponding vertices from Source Mesh to Target Mesh.

image

What this tool can do:

  • It transfers vertex ID from one mesh to another with the same vertex numbers.
  • It does not need the two meshes to share similar form, that means their world space and local space coordinates can be different.
  • It does not need the two meshes to share same UV info.
  • It's the first tool made for 3ds Max that can do this. (There is only one other that uses world space coordinates or UV to transfer the vertex ID by Changsoo Eun. https://cganimator.com/mcg-reordervertsbyproximity/)

How to use:

Video Tutorial - https://www.youtube.com/watch?v=Afi4RAibtAE

  1. Install by dragging and dropping the TransferVertexID.mzp file into max viewport. This will create a menu item called RevScript where you can find your tool.
  2. You can also run this by downloading all the files and keeping them in the same folder. Then running TransferVertID.ms from the script editor.
  3. Once the dialog box is ready, select a temporary folder. This folder is used to store vertex mapping of the two meshes and other things.
  4. Reset xform and collapse stack on both the meshes. Make sure they are editable polys.
  5. Then select Target mesh and go into vertex sub-object mode. You have to select 3 vertices one at a time, one by one. You must select three neighboring vertices only such that each vertex has at least one immediate neighbor in your selection.
  6. Select vertex 1, then press the button 1 -- Select vertex 2, then press the button 2 -- Select vertex 3, then press button 3. [Only select one vertex at a time]
  7. You will see the text field getting updated with the vertex ID of your selection.
  8. Once done, press the Process Source Mesh. Make sure your source object is selected beforehand, however, it does not matter if it is in object selection mode or sub-object selection mode.
  9. Do the same for the Target Mesh. Make sure to select corresponding vertices in order. [Source 1 >> Source 2 >> Source 3 >>Process mesh>> Target 1 >> Target 2 >> Target 3>> Process mesh]
  10. Then click the big Transfer Vertex ID button to get the correct mesh.

Note

  • This is my first maxscript so its a bit clunky.
  • This is in alpha state so some faulty results from time to time are expected.
  • It uses python to do some operations in the background however as long as max supports pymxs it should, in theory, work.
  • It's slow, very slow on large meshes, but I am working on optimising the algorithm to get the fastest reuslts possible in the next release. Expect it soon.

Known Bugs

  • recursion limit exceeds for more than 10000 vertices. (Fixed for next release)
  • recursion algorithm is too slow for real world use. (Fixed for next release)

Roadmap

  • Change UI to adopt new algorithm, iterative method using bit arrays that works on initial mapped faces instead of vertices. [Implemented in next release]
  • Make the algorithm faster. [Implemented in next release]
  • Add another option to transfer VID using UV for meshes with floating geometry but same UV.
  • Remove the need for temporary folder to be selected by the user.