Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

Transform Tools

Discussion in 'Assets and Asset Store' started by pluginmaster418, Aug 18, 2020.

  1. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Transform tools is an editor extension designed to make object placement faster and easier.
    Features:
    • Align and distribute. Easy to use tools to align and distribute game objects. Similar to the tools you can find in Illustrator, Photoshop, Inkscape, and others.
    • Grid arrangement. Arrange objects on a 3D grid.
    • Radial arrangement. Arrange objects in radial patterns such as arcs, circles, ellipses, and spirals.
    • Rearrange. Swap the positions of the selected objects.
    • Position, rotation and scale progression. Incrementally change the scale, rotation, and position values of the selected objects.
    • Randomize transform. Add random values to the position, rotation and scale of each selected object.
    • Center pivot. Center the pivot of 3D objects, sprites and UI objects.
    • Edit pivot. Edit the pivot position and rotation of 3D objects, sprites and UI objects.
    • Place on the surface. Place objects on the closest surface in the direction defined by the user.
    • Simulate gravity. Physics based placing tool.
    • Remove overlapping. Move objects far enough so that they do not overlap.
    • 2D and 3D. All tools can be used on 2D and 3D objects.
    • Runtime functions. Static class for calling methods at run time.
    Links:

    Please post any feedback, suggestions or ask for support or missing features here.
     
    Last edited: Jan 6, 2021
    StevenPicard likes this.
  2. vertexx

    vertexx

    Joined:
    Mar 18, 2014
    Posts:
    299
    Sounds good! Any links to this? The one posted goes to another asset?
     
  3. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Thanks for letting me know, I already replaced the link. Check out this teaser video:
     
    Last edited: Aug 24, 2020
  4. vertexx

    vertexx

    Joined:
    Mar 18, 2014
    Posts:
    299
    Looking very intuitive and that's good!
    For those of us like to dabble and have fun..intuitive work is the best.
    From what I can see this asset will save lots of time with certain headaches.
    Your pivot tool alone looks good... appears to be just a simple drag and click to place that pivot.
    Anyway...lots of luck with this, and I guess soon a price will appear? Unless I've missed it?
     
  5. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hey, thanks for your kind words. My goal here is to create tools that make life easier for developers, artists and asset integrators. About the price, it will be $14.99.
     
    Last edited: Aug 20, 2020
  6. vertexx

    vertexx

    Joined:
    Mar 18, 2014
    Posts:
    299
    OK. I'll keep an eye out for it. Meanwhile..back to work,
     
  7. mlcvr

    mlcvr

    Joined:
    Aug 16, 2020
    Posts:
    1
    Hi excellent tool :) One observation, one request!

    Observation - it seems that objects need to be at the same level in the hierarchy to align them? e.g. I can't ask a child to align to it's parent's axis (say I want to center a sphere on a cylinder where the cylinder is it's parent).

    Request - it would be nice to be able to have an align centres to anchor ... again, think of the sphere example. Say I'm using a sphere to cap a cylinder with a hemi-sphere. I'd like to snap the sphere's centre to the cylinders end.

    cheers!
     
  8. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hi, thanks for helping me to improve the tool. Currently, the selection is filtered by the topmost transform, which is useful in some cases. But you are right, sometimes you need to disable the filter so i'm going to solve it by adding a toggle. About the request, I'm going to add a popup selection field in which you can select between the object center and the bounding box. It will be in the next version. I hope it will be available before Wednesday next week. It depends on how long the approval of the package takes. I'll let you know when it is available.
     
    StevenPicard and mlcvr like this.
  9. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hey, Version 1.1 is out now. Please check it out and let me know if you have any other request or suggestion.
     
  10. FuguFirecracker

    FuguFirecracker

    Joined:
    Sep 20, 2011
    Posts:
    416
    Hey Hey

    Just purchased. Lots to love in this asset.

    A few *slight* modifications, I've made:

    That Pivot Monobehaviour ... I know it's a super small an' all, but I have a "zero tolerance" policy for Editor Assets that bundle scripts with my builds. Is it really needed anyway? [ rhetorical]

    I modified the StartEditingPivot method by removing reference to the Pivot component in the newer-upper. And I deleted the Pivot Monobehaviour.
    Code (CSharp):
    1.  var pivot = new GameObject("Pivot");
    I found it sufficient to then set the active tool to Move to give me a nice gizmo representation.
    Code (CSharp):
    1. Tools.current = Tool.Move;
    press 'v' and snap to vertex ! [ you should include in your documentation ;) ]
    No need for other tools; Rotating || scaling a pivot has no consequence.

    Also, I moved the Apply && Cancel buttons into the SceneView - closer to where I find them useful.

    I plan on extending your wonderful asset with some more functionality related to aligning items relative to Canvas / CameraView / SceneView ... Let me know if you're interested in looking at any further modifications I make. You're welcome to use any, should they be agreeable to your senses.

    Thanks !
     
  11. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hey. Thanks for the purchase and I am glad you liked it. I welcome your suggestions and ideas to improve the tool and I'm definitely interested in any comments and requests for new features. I will try to include most of the features you mentioned in the next version. I'll let you know when it's available.
     
    FuguFirecracker likes this.
  12. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Version 1.2 is available now.
    Features
    • [Added] Functionality to align items relative to canvas.
    • [Added] Functionality to place objects on surfaces without collider.
    • [Improved] Button size. They are smaller now.
    Fixes
    • [Deleted] Pivot Monobehaviour. Now there are no scripts that bundle with builds.
     
    FuguFirecracker likes this.
  13. jeremedia

    jeremedia

    Joined:
    Apr 21, 2015
    Posts:
    62
    Great tool, thank you. The contents of the static TransformTools class would be equally useful to access during runtime. I'll probably re-work a version of it for personal runtime use. I suggest officially offering runtime support in a later release.
     
  14. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    I'm glad you like it and thanks for the suggestion, I'll keep it in mind for the next version.
     
  15. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Version 1.3 is now available
    New Features
    • [Added] Functionality to simulate gravity.
    • [Added] Runtime support.
     
    FuguFirecracker and jeremedia like this.
  16. jeremedia

    jeremedia

    Joined:
    Apr 21, 2015
    Posts:
    62
    Awesome! Thank you. There really is no other asset with your collection of options available for use at runtime.
     
  17. dock

    dock

    Joined:
    Jan 2, 2008
    Posts:
    585
    I've been using this tool all day and I'm really impressed. Great work!
    I love the align tools, and have already benefitted from the Align to Grid tool.

    I have a few requests :)

    1: Is it possible to allow Snap To Surface for objects without a meshfilter? Right now my component-only gameobjects don't snap. I had to make a tiny cube meshfilter, with mesh renderer disabled, before it would snap correctly.

    2: Can the Apply these buttons be exposed to Unity's shortcuts? I can see myself assigning common ones to shortcut keys, such as Place On Surface or Randomise Rotation/Scale. Right now the shortcuts simply open up the menu rather than apply the result.

    3: I'd love a 'relax' or 'smooth' feature aimed to even out the position spacing within a selection. This could be done in steps.

    4. With things like Randomise, it would be helpful to have a scale value that could be multiplied over the Apply result. It's quite fiddly to change six values with decimals when I really just want to change it to 0.2x or 10x the current setting.

    5. With the Circle arrange, could there be an option to make the radius based upon spacing instead? I found myself trying to figure out what the radius would be for 7 x 2m spaced objects.


    Congratulations on making such a great tool and I'm excited to see where it goes in the future. I love how cleanly it is integrated and it doesn't fight with basic Unity controls.
     
    Last edited: Jan 13, 2021
    jeremedia and pluginmaster418 like this.
  18. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Thank you so much for your kind words! Glad to hear that you are taking advantage of what the tool has to offer.
    All your requests are excellent Ideas, I will include them in the next version. I'll let you know when it's available.
     
  19. jeremedia

    jeremedia

    Joined:
    Apr 21, 2015
    Posts:
    62
    Great suggestions.
     
  20. dock

    dock

    Joined:
    Jan 2, 2008
    Posts:
    585
    Thank you! I’m looking forward to using it.
     
  21. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Version 1.4 is now available
    Features
    • [Added] Commands to Unity Shortcut Manager.
    • [Added] Functionality to homogenize spacings, rotations and scales.
    • [Added] Multiplier value to Randomize windows.
    • [Added] Functionality to the Circle Arrangement tool to calculate the radius from the spacing.
    Fixes
    • [Fixed] Problem when placing objects in meshes without collider.
     
  22. boerup

    boerup

    Joined:
    Feb 5, 2021
    Posts:
    2
    I am getting this error when building:

    Assets/PluginMaster/DesignTools/TransformTools/Runtime/TTRuntime.cs(1162,102): error CS0234: The type or namespace name 'Undo' does not exist in the namespace 'UnityEditor' (are you missing an assembly reference?)
     
  23. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hi, thanks for reporting the bug. I'm uploading a new version with the fix at the moment. In the meantime you can remove line 1162 in TTRuntime.cs.
    Code (CSharp):
    1. if (!orientToPath || (orientToPath && data.type != IncrementalDataType.OBJECT_SIZE)) UnityEditor.Undo.RecordObject(obj.transform, "Progressive Position");
     
  24. boerup

    boerup

    Joined:
    Feb 5, 2021
    Posts:
    2
    Done - and it solved my build problems!

    Thanks.
     
    pluginmaster418 likes this.
  25. chengkachun

    chengkachun

    Joined:
    Jun 19, 2015
    Posts:
    7
    Very good tool for 3d artist ~! Can you explain more about the runtime function?
    possible to snap objects to animated surface?
     
  26. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hello, it is possible to snap objects to an animated surface using the TTRuntime.PlaceOnSurface method. For example:
    Code (CSharp):
    1. using UnityEngine;
    2. using PluginMaster.Runtime;
    3. public class SnappedToSurface : MonoBehaviour
    4. {
    5.     private TTRuntime.PlaceOnSurfaceData _data = new TTRuntime.PlaceOnSurfaceData();
    6.     private void Start()
    7.     {
    8.         _data.projectionDirectionSpace = Space.Self;
    9.         _data.projectionDirection = Vector3.down;
    10.         _data.rotateToSurface = true;
    11.         _data.objectOrientation = Vector3.down;
    12.         _data.surfaceDistance = 0f;
    13.         _data.mask = ~0;
    14.     }
    15.     private void Update()
    16.     {
    17.         TTRuntime.PlaceOnSurface(new GameObject[] { gameObject }, _data);
    18.     }
    19. }
    I just tested it and noticed that there is a problem when the surface is moving in the direction of the object. I already fixed it and it will be available in the next version.
     
    Last edited: Mar 31, 2021
    jeremedia likes this.
  27. chengkachun

    chengkachun

    Joined:
    Jun 19, 2015
    Posts:
    7
    Thanks !!
     
  28. chengkachun

    chengkachun

    Joined:
    Jun 19, 2015
    Posts:
    7
    Can you make a tutorial to demo how to use it?
    Sorry I have very limited coding experience.
     
  29. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    1. Right-click on the project window.
    2. Select: Create / C# Script.
    3. Name the file SnappedToSurface.
    4. Open the file and delete the content.
    5. Copy and paste the code I gave you and save the file.
    6. In Editor, select the object you want to snap to the surface.
    7. In the inspector window, add the component: "Snapped to surface".
     
  30. Overlogical

    Overlogical

    Joined:
    Sep 12, 2020
    Posts:
    12
    Hi, I am looking mainly for a pivot modification solution and found your work looking great. I have to decide between your solution an Pivot Modder from BrainFail. For Pivot Modder it is stated that it:

    ▓ Preserves UVs and surface normals so that the materials and textures stay intact on pivot modifications.

    ▓ Preserves original collider orientation for sphere, box, capsule and mesh colliders and others. Even supports compound colliders.

    ▓ Preserves NavMeshObstacle orientation.

    Is this also the case for the way you change the privot position and rotation?

    Thanks!
     
  31. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hi,
    Yes, even when you change the pivot position and rotation.
    Only when the pivot position changes. If you change the rotation, the orientation of the collider will not be preserved.
    Only when the pivot position changes. If you change the rotation, the orientation of the obstacle will not be preserved.
     
  32. Overlogical

    Overlogical

    Joined:
    Sep 12, 2020
    Posts:
    12
    Hmm, as I have to rotate the pivot point of imported assets and they have colliders, I guess your tool would not be the right one. That is unfortunate, as it seems better in beside that. Thank you for your answer. Is this functionality planned? By the way, I use your play mode safe tool - very good!
     
    Last edited: Oct 6, 2021
  33. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Let's do this. I'm going to do some tests, if it works I'll include it in the next version, if not I'll let you know how the tests went anyway.
     
  34. Overlogical

    Overlogical

    Joined:
    Sep 12, 2020
    Posts:
    12
    In this case I buy your asset now, to support your development. Edit: Done :)
     
  35. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Thanks, but there is a possibility that the idea I have may not work. I think I will have an answer by tomorrow.
     
  36. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hey @Overlogical
    After trying different things, I came to a conclusion. It is impossible to rotate the colliders since they are oriented with respect to the local coordinate axes.
    However, there is a workaround which is the following:
    1. Add an empty child to the object whose pivot is to be modified.
    2. Add clones of the original colliders to that child.
    3. Rotate the child so that the new colliders are in the same position and orientation as the originals were initially.
    4. Disable or remove the original colliders.

    The main disadvantage of that approach is that all existing references to the original colliders will be lost and will have to be manually replaced.

    What you think? Is that change worth making?
     
  37. Overlogical

    Overlogical

    Joined:
    Sep 12, 2020
    Posts:
    12
    I'll answer on discord.
     
  38. Wilbert-Blom

    Wilbert-Blom

    Joined:
    Aug 13, 2011
    Posts:
    104
    It looks like aligning is always according to the global directions. Is it possible to align along the local direction?

    AlignLOcal.png
    Align in local Z direction

    AlignLOcalZ.png
     
  39. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Added to to-do list. I'll let you know when it's done.
     
  40. Wilbert-Blom

    Wilbert-Blom

    Joined:
    Aug 13, 2011
    Posts:
    104
  41. dock

    dock

    Joined:
    Jan 2, 2008
    Posts:
    585
    I'm a big fan of transform tools and I use Radial Arrangement pretty often.

    Would it be possible to update it to support 'rotate around parent', or local coordinates in general? Sometimes I can use the 'transform position', but this doesn't use the orientation of the parent. As a result I tend to do all my rotations and grids around 0,0,0 before moving the parent back into position.
     
  42. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165

    Added to to-do list.
     
    dock likes this.
  43. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Added to version 2.1. Now available for download.
     
  44. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Added to version 2.1. Now available for download.
     
    dock likes this.
  45. pawelpoz

    pawelpoz

    Joined:
    Dec 9, 2015
    Posts:
    1
    Thanks for a great plugin. I'm wondering if it's possible to do something like this with it (resize the object to fill the space between the objects):

    From this:


    To this:
     

    Attached Files:

  46. pluginmaster418

    pluginmaster418

    Joined:
    Jun 6, 2020
    Posts:
    165
    Hi. No, currently it doesn't work that way.