Toggle Model Visibility

As a Roblox developer, it is currently too hard to toggle the visibility of all objects within a model. Similar to the property of 2D GUI objects, I believe it would be a significant improvement to create a “Visible” property for Models. Since there are a ton of different visibility-esque properties, from “Transparency” on BaseParts to “Enabled” on ParticleEmitters and such, there are a ton of options to potentially change or disable to achieve complete transparency.

One use case I’ve encountered would be to hide other player’s characters on the client. In a game where multiplayer interaction is unnecessary, hiding other players, or objects players own, can unclutter the screen, allowing players to focus more on gameplay (similar to Pet Sim X’s hide other pets option).

Hiding a player’s character model can also be useful in the case of cutscenes that implement the currently occupied scene, or for characters that are welded to a vehicle or other custom creation where you want to retain character control, but faked in such a way that the player doesn’t realize they’re actually just controlling their original character model. This would allow the player to quickly enter and exit different vehicles.

Not only could this property be used for characters, but would also allow for more ease in the creation of custom LoD systems, allowing developers to toggle extra details off and on with a single property.

Currently, I’ve managed to partially implement the behavior I want for player characters by grabbing all descendants of a model, then checking each one for specific class types that I don’t want to disable (i.e. I want to disable objects with .Enabled, but don’t want to break my Constraints), checking these classes for specific properties (.Transparency, .Enabled) with a pcall. Original values are tracked, and reset when the function is called with visible = true. This solution works for my purposes for now, but I can’t help but feel that a Visible property for models would make things significantly easier.

49 Likes

I support this feature request. Here are some extra stuff:

Feature: Model.Render → Determines whether or not the descendants of a model should be rendered or not. (Includes: BaseParts, Particles, Beams, Textures, Decals, BillboardGui, SurfaceGui, between others)

How can this help? → This can help us make those Render distance codes more efficient by disabling/enabling the property instead of parenting objects or changing the LocalTransparencyModifier of all the parts in it (something that we shouldn’t have to do, should be offered by the engine but is a solution to a constant issue). Another thing it would help us with is to disable the visibility of all other player’s characters more efficient rather than deleting all parts, parenting their character model, or making them transparent. We can also use it to toggle the visibility of some objects that should not be Render until something happens. (You can parent it I know, but this can also be another work around).

Thank you, focasds.

14 Likes

This feature would be super nice for writing high-speed chunk rendering systems. Right now, my systems loop through each part and parent them to nil, and then back- this is suboptimal! We waste a lot of time setting each individual part’s parent to nil- having a Model.Rendered property would help developers implement their own culling systems.

I’m not going to pretend I have a lot of knowledge on Roblox’s internals, but I would imagine less property updates is faster.

1 Like

I see this as a massive win for LOD, the ability to hide groups would be cool
My game would benefit from this, although this property would need to be based on folders since i use them, but since areas are all under 1 folder, i can just toggle on that, and hide areas you cant see from another area, this can also allow to hide interiors/exteriors with ease.

It would be useful to try and keep some extra toggles, like to keep collisions, or to keep particle emitters on/off, etc

2 Likes

I must agree, I don’t know why it isn’t like that already. It’s intuitive, but right now it’s unintuitive having to open the model, then select every part to change its properties. Roblox, please fix.

I made this exact feature request (link) 5 years ago but it doesn’t seem like its going to happen :confused:

1 Like

Would anyone want a plugin to do this?

2 Likes

Bumping this up, I am in need of having a feature to toggle a model’s visibility. With the additions of PivotTo/ScaleTo, could another one be added to that list like SetTransparencyTo(Number), scale from 0-1 and the default is 0.

It will make my life easier when:

  1. Making characters not show up while they are editing their character for example.
  2. Making specific models semi-transparent until the player unlocks it and becomes fully visible.
  3. Affect particles and everything that has a transparency level with the given modifier.
  4. Hiding things that player don’t want to see but must still be kept in the world.
  5. Tweening a model’s transparency using this function. (Yes I know a work around to Roblox not offering any kind of tweening for Models)

The current work around requires users to keep the current properties somewhere to then apply the modifier sent.


I wish models had features like CanvasGroup, GroupTransparency, GroupColor3:frowning:

5 Likes