Search Unity

  1. Get the latest news, tutorials and offers directly to your inbox with our newsletters. Sign up now.
    Dismiss Notice

ProBuilder ProBuilder grid snap counter-intuitive behaviour

Discussion in 'World Building' started by crdmrn, Nov 15, 2020.

  1. crdmrn


    Dec 24, 2013
    So, as Unity no longer supports ProGrids, ProBuilder is now using the built-in snap function.
    Now, this dosen't seem work on absolute values but rather on increments.
    For example, if I set the increment snap to 1 and I then try to move an object that is placed at 1.6 on the X axis, it will go on moving at 2.6, 3.6, etc, when I'd need it to should snap to absolute values.
    This creates maddening situations when using ProBuilder to block out a level; it's so easy to misplace a vertex/edge/face and then it's almost impossible to bring them back to the original position, especially when the error is noticed too late.
    I'm not sure why you chose to implement the grid snap function like that, but at least give users the chance to choose how it should work cause tbh, ProBuilder used to be near perfect for level prototyping until ProGrids was dropped :(

    Edit: I realized it's actually possible to have global grid snapping when the Handles rotation is set to Global (why can't I turn it on when they're set to local I'm not really sure, used to be possible and pretty useful in ProGrids).
    Also, the snap settings are now a detachable panel that takes away way more space than it should (I mean, why couldn't it stay an overlay) as well as breaking the workflow.
    I don't want to sound nostalgic, and I do really understand why you would want to make this feature a built-in and more sophisticated one, but this doesn't mean you have to throw away all the things that were learned by iteration developing something like ProGrids ^^"
    Last edited: Nov 15, 2020
  2. gabrielw_unity


    Unity Technologies

    Feb 19, 2018
    Hey! :)

    Looks like you found the confusion I was going to help with ... ok, I see there is still some, so I'll try to clear that up:

    1) Increment Snapping

    So, as you know, Unity has long had a system where you hold "CTRL/CMD" and then move/rotate/scale will snap to increments. For example, if your Move increment is "1", and your object is at .002 ... it'll move to "1.002, then 2.002, 3.002", etc. Not great if you want to make sure things are perfectly snapped, but useful in situations where you just want to offset by an amount.

    This particular system - we changed nothing, it continues to exist and work as always.

    2) Absolute Snapping (aka, World Grid Snapping)

    As the title implies ... this is the Other Thing. You want an object to be absolutely, 100%, no doubts snapped to an exact point and all other things to also snap in the same way. No ambiguity, no cracks/leaks/overlaps. (insert some tesla panel gaps joke here I suppose ...)

    Now, why does this only work when World coordinates is chosen? Well, the reason is we only have a World Grid right now. ie, a Grid that originates from the World Origin, and is oriented to the world. So ... if you are using Local Coordinates, the object would appear to jump around and snap randomly (would not match the intended direction of movement). Per the image below - you could snap to the red, blue, or green circles ... none of which are sure to be what you want, depending on the situation.

    So - on that front, we chose to limit it to World Coordinates snapping, so the result of an action is always an expected one. I do understand it means you need to take an extra step (swap to world, do your movement, or make the Local movement, then use "Push to Grid" action).

    3) Regarding the UI panel ... yes, sorry, it was a poor decision, based on the hope that we would have a better solution very soon. That was delayed ... but now with Overlays, we'll have that, and much more!

    Hope this helps, thanks for the feedback!