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.

e.g:

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

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…