Need help with gun system hands

I am making a gun system right now and it is working really well but I want to have more visual things like adding the player holding gun viewport sorta thing that is shown below


I tried using a viewportframe for this but I don’t know how to animate it for recoil and that sorta stuff and also it just looks really bad with the viewportframe quality.
Also I do want a position at the barrel on the viewport where the bullet will come out so I can show the bullet.

Does anyone know how to make this?

how come you don’t just use a viewmodel

I mean there’s going to be clipping but usually just move the gun back or just prevent firing or do some hacky method

Or am I misunderstanding something? I got close to zero experience with viewports

ViewportFrames shouldn’t be used for Viewmodels, you should simply store your Hands in let’s say for an example game/ReplicatedStorage/Viewmodel and in a script simply clone the viewmodel, parent it to the camera and update it’s CFrame to match the Camera’s CFrame every frame

I don’t really understand. Can you explain more?

Not viewports, but only viewmodels.

In the real world space, I have a model in Workspace.

but here you can see how it works

I recommend looking up a gun tutorial, because I think they all use Viewmodels, and are helpful.