Screen3D - A 3D UI framework that just works

SERIOUS release… fixed a weird offset bug

man, this sure is a serious release…

jokes aside, cool framework! can really see where this could come in handy, especially when those showcases being completely clean and beautiful. oh, and that 3D UI nesting…my fav out of them all!!!

3 Likes
  • added optional “outdated version” notification system
  • fixed anchorpoint jank
  • added support for GuiObject.Rotation

image

The module is now also available on the creator store:

3 Likes

Oh hey, the creator page isn’t working. Did you set it to public?

2 Likes

mish just recently set it to public

whoops…

2 Likes

Nevermind, looks like it didn’t go through moderation

get the github version while we wait…

2 Likes

Here’s a reupload of screen3d without the version check system :confused:

2 Likes

Does it works in Roblox instead of roblox studio?
Did you see something like this in other roblox games?

2 Likes

it works literally everywhere

mish and i made it for this game

but we were inspired by this one

4 Likes

Thats a good framework ,y’all share it quickly
I bookmarked this already

2 Likes

Found a weird bug (Idk If im breaking a rule or warning).

Im setting the text of a textlabel to the humanoids.health value in a renderstepped loop.

	RunService.RenderStepped:Connect(function()
		TotalHealthText.Text = Knit.Player.Character.Humanoid.MaxHealth
	end)

This is what is happening for some reason:

This is the UI without that code:

Wait no, sorry. Its happening with and without the code but not consistently. I have no idea whats going on…

1 Like

Currently privated (I think?)

1 Like

Can i see the whole code?

what you sent should work as long as TotalHealthText is a 2D TextLabel

I know why this happens but you don’t know

The reason why this thing appears is because when you first publish something, Distribute to Creator Store is disabled by default, also the “Distribute to Creator Store” button is not in the Asset Configuration interface, so you will have to right click on your model in the Toolbox > Models and press View in Browser and so on to be able to launch it in the store for the public

If you look at the info of an asset and see this irrelevant message it is because when you publish, Distribute to Creator Store is disabled by default and the owner of the asset forgets

No excuses but most of them don’t know it
1 Like

WHAT …Good developers thought you have even hacked Roblox Engine for this but it’s an simple community recourses , but they become jealous for you special UI skills ,thanks to @yy_qat

Its not happening anymore, im not actually sure what was going on as I tried to fix it for 3 whole days.

It just… Stopped happening.

I do have a question to ask however.

In your game UNORTHODOX ACCOUNTING You manipulate the 3d healthbar according to the players movedirection and when they jump/land.

I would like to do that as well… Ive tried messing around with some offset logic. But it seems a little buggy as im not sure how to smoothly change offset to create the same effect you are producing.

I know you might consider what im talking about a developer secret. But I would really love if it you could tell me.

Anyways, thank you for this resource! really simplifies the hell out of 3d UI!

2 Likes

These SurfaceGui.HorizontalCurvature and SurfaceGui.Shape may be are really unused and deceased and underrated and VERY VERY BUGGED.

Sometimes i though this exists and Abcreator used but then it was removed

Me seeing this : :grinning: , :neutral_face: , :slightly_frowning_face: , :disappointed_relieved: and finally to :sob:

2 Likes

We dont use the movedirection, we use the assemblylinearvelocity

also i kinda forgot to mention this but Screen3D objects also have a property called rootOffset that acts as a “primary offset” to all of the 3D components inside it, which we set to the character’s velocity divided by some “sensitivity”, relative to the camera’s rotation.

you can also use the x axis of the relative velocity as an angle for CFrame.Angles for the rotation effect

we then use lerping dark magic to make it look smooth

here’s a REALLY SIMPLIFIED version of what we do:

RunService.RenderStepped:Connect(function(dt)
    local RelativeVelocity = camera.CFrame.Rotation:ToObjectSpace( CFrame.new(Velocity * sensitivity_constant1 ))).Position
    local lerp_alpha = math.min(dt*lerp_speed,  1  ) --avoids low framerate jank

    screen.rootOffset = screen.rootOffset:Lerp( CFrame.new(RelativeVelocity) , lerp_alpha  )

    component.offset =  CFrame.Angles(0,0,math.clamp(-Velocity.X / sensitivity_constant2, -min_angle, max_angle)) --we lerp this one too but i cant be bothered to lerp it here
end)
1 Like

Do you mind providing the values for the variables that aren’t localized inside this script?

This is going straight to my new few games!

1 Like