Jump to content

Recommended Posts

I've been playing around with camera functions, trying figuring out how they work, and I thought I'd share some of what I've found

 

It seems there are at least 2 different types of cameras, the default gameplay camera, and scripted cameras created by scripts. Each have there own set of natives assosciated with them, and the ones for the gameplay camera are pretty limited. It isn't possible to get a handle to the gameplay camera, there are only a few functions that access and modify certain properties (GET_GAMEPLAY_CAM_COORD, GET_GAMEPLAY_CAM_ROT, etc)

 

There is a lot more control over scripted cameras. They can be created with CREATE_CAM or more often CREATE_CAM_WITH_PARAMS, which return an ID, it's possible to get/set most of their properties, interpolate between them, attach/pointAt targets, etc. Each creation function takes a string name, ie "DEFAULT_SCRIPTED_CAMERA", "DEFAULT_SPLINE_CAMERA", and a few others. I've only tested using "DEFAULT_SCRIPTED_CAMERA" so far, as it's the most commonly used one

 

Creating a camera sets it as active, but that's not enough for it to render. RENDER_SCRIPT_CAMS must also be called. I'm not sure what all the params are, only that the first is a bool that sets whether to render scripted cameras or the gameplay camera. Using the common values from the scripts for the others seems to work: RENDER_SCRIPT_CAMS(1, 0, 3000, 1, 0). Set the first param to 0 to switch back to the default game camera

 

To shake the camera, call SHAKE_CAM(cameraId, shakeType, shakeAmplitude). shakeType is a string containing the name of the shake type. I found the following types in the decompiled scripts:

 

 

"HAND_SHAKE""SMALL_EXPLOSION_SHAKE""MEDIUM_EXPLOSION_SHAKE""LARGE_EXPLOSION_SHAKE""JOLT_SHAKE""VIBRATE_SHAKE""ROAD_VIBRATION_SHAKE""DRUNK_SHAKE""SKY_DIVING_SHAKE""FAMILY5_DRUG_TRIP_SHAKE""DEATH_FAIL_IN_EFFECT_SHAKE" 
Some types are one-shot shakes (such as explosions), but most of them loop. To stop a looping shake, use STOP_CAM_SHAKING

 

There seems to be a hard limit of 26 scripted cameras that can be created at a time. After that, calling CREATE_CAM will return an invalid ID, until other cameras are destroyed with DESTROY_CAM(cameraID), or DESTROY_ALL_CAMS()

 

Some things I still plan on looking into:

-CameraAnimations

-Special types of scripted cameras, ie spline, cinematic, I'm not sure at all how these work yet

-Any other natives I may have missed, as well as the unknown ones that are still hashed

 

If you're using the Community Scripthook V .Net wrapper, use the new Camera/Gameplay classes (not yet in a release build, but you can get automated builds from the latest commit here). See this post for a simple example

 

I'll be releasing a Top Down Mod using all of this pretty soon

Edited by wozzy
Link to comment
https://gtaforums.com/topic/793247-cameras/
Share on other sites

  • 4 weeks later...

Highly anticipating this.

 

In regards to cams, is there a way to avoid LOD when the cam is too far away from the player ped? Other than dragging the player ped along with the cam, I don't see how this can be avoided (not that I mind). It would be great to have WASD control of the cam and fly around. It would make for great unique shots.

Link to comment
https://gtaforums.com/topic/793247-cameras/#findComment-1067566778
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 0 User Currently Viewing
    0 members, 0 Anonymous, 0 Guests

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.