Want an equivalent of photoshop layers in studio for world geometry - Hard to edit layered geometry

As a Roblox developer, it is currently very difficult to both edit developer volumes, such as invisible parts, and actual maps. The pink volumes are parts, assets, et cetera that are used to mark things in my game.

Basically, these volumes have the following issues:

  • When I’m placing other parts with the dragger, the dragger runs into them
  • Locking them prevents them from being moved, but sometimes I need to move them. Also, I still can’t drag things underneath them
  • Sometimes I want Roblox to treat these as invisible and non-existent so I can edit geometry
  • Other times, I want to use Roblox’s normal build tools to position/move them

Desire: Some way to have these exist, and not exist, depending on what “layer” of the geometry is on. For example, some of these volumes are more important than others.

Also, sometimes actual world geometry gets in the way.

UX notes

  • Edit volumes should be moved with regular tools. However, when editing the game, sometimes I don’t want to see these, and just want to build
  • Volumes tend to be hidden from users, but may be invisible walls, or other things that get in the way
  • Volumes may end up in either workspace, or server storage, sort of depends on the game
  • Volumes may be parts, roblox parts, et ceter.a

Current workaround

The current workaround is to have a plugin to moves these from workspace to server storage and back. However, this feels kind of bad, and I don’t have a good plugin installed! (Anyone got any recommendations?)

Also, if we do this

Proposed solution

As I was typing this up, I realized a good solution.

I really want some sort of layer system like photoshop has. Something where I can layer geometry, other items, and details, and then edit things as a whole.

Would let me block out content, and then edit details.

Side note: Can someone make a plugin to do this, using collection service? Needs to be able to put everything back when I press play.

19 Likes

This would be incredibly useful.

Another use case, editing the collision fidelety of mesh parts, we sometimes wish to use box and cancollide false to save on physics collision MB. However, sometimes these bounding boxes are giant, and affect the ability to see other meshs that may need attention as well, without zooming into the bounding box - a tedious task.

2 Likes

Would a plugin like this be what you’re asking for?
image

It would allow you to assign parts into layers so that you can toggle an entire layer’s .Locked properties

It wouldn’t solve the dragger issue, but it would allow you to edit them/get them out of your face much more easily.

3 Likes

Yeah, that would get me somewhere. To fix the dragging issue, the plugin just needs to move the assets to another folder or something, or the new Lua dragger needs to be modified to respect a CollectionService “Ignore” tag or something.

1 Like

Why not parent these parts somewhere else, like ServerStorage or ReplicatedStorage? That way, they are completely out of the way when you don’t need to edit them, and if you do, you can just parent them to Workspace to make your edit.

And if you do that, you can even make them visible to aid editing, since when not in Workspace, they won’t be rendered!

Some of them need to exist in workspace because I’m actually using touched events on them.

Would love a plugin to move them in and out though.

+1

This would be incredibly useful.

Ideally “developer volumes/regions” would be a first class object that Studio could reason about.

This could make them more robust under translate, copy, resize, etc. I.e. I could define them around some model and when I moved the model around, Studio would move the region also.

The Locked/Unlocked tool, in specific, is a mess right now. I use “unlock all” at least 10 times a day when I’m in Studio. Locked/Unlock is basically a UX crutch for not having multiple layers (i.e. right now you can only have two layers as far as selection is concerned, and only one can be mutable, and selection semantics are not even self-consistent).

3 Likes

I’m using volumes in my current project for room transitions and plan to use them later for point-in-part checks and other mechanics. I’m currently making them anchored and changing their collision group to one that doesn’t collide with the default collision group (so Studio tools’ cannot touch them and work through them and I can’t move them by accident, and gameplay raycasts wont have to worry about blacklisting them), and storing them in a folder in workspace so I can easily access them (since I cannot select them in the viewport anymore due to the collision group trick).

This allows me to always see where my boundaries are, drag things through them (but unfortunately not place things naturally inside of them), and write the rest of my game’s code without worrying about them getting in the way.

Problems with what I’m doing include:

  • Weird collision group hack.
  • Cannot pair volumes with related instances (i.e. folder or group them) since I need to be able to have easy access to them since I can’t simply select them; I don’t want to bury them into a deep hierarchy.
  • Cannot drag parts inside of volumes unless I reparent their folder.
  • Cannot easily hide volumes unless I reparent their folder.

Layers as proposed above would let me easily hide volumes so I can drag parts through them or into their space (partial reason for the collision group hack), or look at my work without clutter. I could instead leave volumes locked so i can’t edit them by accident instead of using the collision group hack since I could just hide them.

I would still need the collision group hack to avoid interrupting raycasts, but I could instead write a default raycast blacklist module to get around this given that the rest of the benefits of the hack would no longer exist.


Outside of volumes, I’d use this for turning off certain categories of props (i.e. foliage, furniture) so I can work around structures or terrain without random objects getting in my way and blocking my camera (e.g. adding siding to a wall behind a row of desks), and turning off walls or ceilings so I can work more comfortably on inside environments (i.e. see the whole space from above instead of only small parts of it from inside).


It would be really neat if we could also toggle off terrain (like it’s its own layer). I usually build with parts and use terrain water exclusively. Sometimes when I need to build underwater because of the overbearing underwater fog I set WaterWaveSize to 0/0 (NaN), which makes it disappear entirely and lets me see what I’m doing :-).

6 Likes