Rendering an object in first-person at the bottom right of players' screens

I was wondering how to display a hand when players interact with objects in-game similar to @ZeekerssSilent Dark:

After reviewing his uncopylocked code, it turns out he was using @Maximum_ADHD’s 3D module, which is fairly outdated. I was considering using viewports, but its contents aren’t affected by lighting in the workspace. In conclusion, I should locally position a hand out of players’ screens and interpolate it upwards upon interaction. To accomplish this, I believe I need to calculate positions in which the hand is perfectly off the screen and perfectly fitted into the bottom right of the screen in all types of resolutions, but I have little idea of how to go about this.

I would probably store the hand in the camera as a viewmodel, then update its CFrame every frame relative to the camera’s CFrame.


game["Run Service"].RenderStepped:Connect(function()
hand.CFrame = camera.CFrame*OFFSET

Not sure if this is what you’re trying to achieve or not, but it should give you the effect you’re looking for.

This is pretty simple and effective, but a constant offset would cause it to appear correctly in only a select few resolutions, correct? My understanding on this is that a client window with an unorthodox aspect ratio would incorrectly place the hand. Or would only the FOV affect how it’s displayed…