Basically I want grid snapping that every decent level editor has in 3Ds Max.
I need to build a lot of assets perfectly grid based currently and the grid snapping options in 3Ds Max are just clunky. There it is like it only snaps the mouse position to the grid and not the actual vertices or object. In the perspective view it only works with the ground plane.
Is there any plugin/script that does it right or am I just missing something? Additionally it would be great if there is also something that allows me to select the vertices that should move to their nearest grid point.
Replies
Maybe look for CAD scripts for 3ds max like the one in this YouTube link.
[ame]
That seems to be not much of a improvement.
That shows just the inconvenient way of the snapping.
Just create a grid object somewhere.
Right click to activate it, and
And you can set the size and planes and color and so on.
Right click again and click "activate home grid" to go back to the other grid.
Also you can control what it snaps to and what it snaps by right clicking the snap button.
There is also a snaps toolbar you can unhide that let you quickly set it to snap to vertices or pivots or to the grid or the surface of polygons and such.
You can set the grid spacing of the home grid and user grids, and use the ortho graphic views to get the non-ground-grid snapping or the user-gid and set the xy-zy-etc planes when you need it. Honestly I would just use the orthographic grid. The only tool I know that has all the xyz planes set up to have a grid in the viewport is modo.
Also you should be able to snap edges and vertices to the grid just fine.
Thanks for the gifs! But that grid object doesn't really help and rest I know already.
Main problems are:
- When a vertice ,etc is not already in the grid it will not be moved in the grid: a vertice at position 1.3443 with the grid spacing being 10 will be moved to 11.3443.
- There can only be 1 grid object be active at a time so you can always only use a grid in 1 direction x, y or z.
- I mostly work just in the perspective view and switching between all the views for each orientation is just not feasible. Basically most of my modeling will have to be in the grid. Basically I want do do normal modeling but not allowing values like 12.3434 and insteaad 10,20,30 etc..
Have you tried to snap it to a Plane subdivided to the size you need?
I think it's possible to set a mesh to be not selectable but visible in wireframe mode, so that you can use it as a guide and enable Edge or Vertex snap.
Or do you mean you want a 5.0 offset?
Like you have a vertex at 4.2 and want it to offset by exactly 5.0 so it's 9.2? Or such that all movement of the gizmo at all is only by these 5.0 or 10.0 increments? Do you have a level editor in mind of what you mean?
If what I think you mean is correct, setting the Snap radius to a high amount should be what you mean, this would make any movement made with the gizmo snap to the active grid and disallow any of the intermediate positions.
I don't know anything about having the xz and yz planes visible and snap-able in the 3ds max viewport though
In Maya and XSI this is possible, while holding X in Maya and CTRL in XSI, it will automatically snap to the nearest grid position if you drag one of the gizmo handles.
Yea, theoretically I could make a 3 dimensional grid as a mesh or with splines and then snap to that. Allowing snapping to a freezed object should also work. But the problem is that it will then also snap to grid points in depth, so you could just snap to points that are far away or very close in depth. So it probably gets also messy.
No it does it not by default, atleast not for me and that was a problem. But I found the option for it now, this is how it was for me:
This is tickbox I had to set on for it to work like it does for you:
When you have vertex snapping on it also snaps your starting point vertex so you don't have offset with that even though the tickbox is off.
Looking at your pic it looks like they stripped that option from newer versions of max.
That makes it better but not having a 3 dimensional grid is still a huge point.
Having used a bunch of different modelling programs i still think max's although not as good still stacks up against say Modo or Maya, its just missing some intuitive hotkeys for quickly changing the snapping type.
But basically without the constrain to axis check box on, its useless in the perspective viewport, why its not enabled by default is beyond me.
That just constraints it to the selected axis on the gizmo but it is still bound to the grid plan. So with the floor grid plane on I still have no up and down snapping active. When I then use the Z only axis on the gizmo nothing happens. Makes it more comfortable to use though.
It's not hard to make a script that does this at the object level. Sub-Objects might be tricky.
I make lots of tools, if you like I can develop this further.
So that is what you already made as a script or is that in Maya? Looks exactly like in UE4! But I assume it is then offset moving, like 12.343 becomes with a increment of 10 then 22.343. Would be still great though. Would be really awesome to have that also working in sub-level with vertices and stuff.
Yesterday I tried modeling in a grid with the existing grid snapping and it was often frustrating and slow. When I then put something in UE4 everything simple snapped in place which makes me really wonder why Autodesk never did something like it.
My newest is only 2009, I know it is really old but when you have to buy it on your own and you see that huge price tag every year you rather say: nope, those new features are not that exiting.
I'm also not so sure that that handle makes it much better, I guess it just replaces that option I changed there before.
With the gizmo out of the way, the start snap point is on the vertex itself, not where ever you happen to click on the gizmo.
And you can change the axes faster with hotkeys... X, Y, XY, XZ, etc... than by mousing around to find the right yellow overlay.
Worth a try.
It's in 3ds Max, but the script was super buggy at the time so I didn't want to post it yet.
In newer versions of Max this is no longer necessary if you have vertex snap turned on. But I used to do that all the time back in the day.
Features:
Known issues:
To install or update drag and drop the script into your 3ds Max viewport. Then look in the monsterBlues category to put on a toolbar.
Download
For Max 2009 please read this.
Thanks! But it looks like there are some problems with my version of 3Ds Max, when I drop it in I get this error:
I just get rid of that error by getting rid of that autoundo.
When I then click on the GridMove button I get his error:
I got rid of references to "this". And commented out the AutoUndoEnabled parameter. I don't have Max 2009 to test. But let me know if this works and if you think it would be worth developing further.
Slight rant:
Typically in Max 2009, you could define a struct like so:
struct
(
this,
otherVariables
)
You could self reference items in the struct with "this". In 2010 you no longer needed to declare "this" as it's auto declared. But in Max 2014 they disabled duplicate declarations which means all the old scripts with "this" don't work anymore. I'm annoyed.
That fixed the first error but the issue with this "this" is still there, it is still the same line it marks: gbm.this = gbm
When I simply delete that I get the error with the next line.
Can you try changing this:
to this:
If that doesn't work, I'll need to hunt down a copy of 2009 to fix it.
http://miauumaxscript.blogspot.com/p/miauus-script-pack-vol2.html
That makes it work but only in x. Snapping in y and z does not work no matter how I try it. It works nicely while i move it in x though.
Thanks! I noticed now that it works for y and z for the first pixel of the drag and that always seems to snap to the next increment of that direction even though the starting grid point is closer. The next pixels then drag it normally like without snapping so it isn't useful. For x it works all right.
Bad news:
I'm going to chalk it up to a bug in the default max position controller. It seems to be an internal hard coded optimization is preventing the controller from being updated rapidly.
Good news:
There are a couple of workarounds.
1) If you change all your objects to TCB or Linear position controllers everything works perfectly. You can even set the default position controller in the Preferences > Animation. If your not an animator, it shouldn't matter too much. You can change all the selected objects to TCB controllers with this script:
2) You can change the following line in the code. It will force the script to update when you are done moving the object. The only issue is that it won't snap interactively, only when you are done moving.
Sorry I couldn't fix it properly.
Thanks, the script already helps a lot this way! I'm sure there are also many level designers that will find it very useful.
Interestingly it has no problem updating it to TCB_Position rapidly. Is there a place in the script where TCB_Position would be set once to the objects I currently move or just when I start the movement?
Using TCB_Position instead is otherwise no problem for me, just keeping in mind that I have to set it for each new object first.
there are extensive examples of modular work within Max.
Can you explain exactly what's missing?
I still find max snapping to be pretty terrible. Ideally I would like 3DSMAX to snap every 10cm IN ALL DIRECTIONS. Complete orthographic snapping without difficult grid setups.
Essentially how UE4 is by default.
original link and script is here :
https://forums.autodesk.com/t5/3ds-max-forum/auto-snap-verts-to-whole-numbers-on-object-move-or-dragging/td-p/5452916
I merged his both object and vertex snapping in one tool for convenience ( pardon if the script is a bit Frankenstein-ish )