Pighaus Games Docs

These docs describe 1.1, the version on Fab. 1.3 is in testing: read its docs, or what changes when you upgrade.

Rig valuesOlder engines

Every Rig and camera preset that ships with 1.1, as the values that make them. For 5.3 to 5.7, where the plugin installs without content.

Builds for 5.3 to 5.7 ship without content. A .uasset saved by 5.8 can't be opened by an older engine: package versions only go forwards, and no build setting changes that. The code is identical. What's missing is the content, and the part you can't do without is the Rigs.

Every Rig and camera preset in the 5.8 build of 1.1 is below, style by style, as the values that differ from a new one. You get the real tuned values, not a description of them.

Making a rig#

  • 1

    Create the asset.

    Right-click in the Content Browser, choose Miscellaneous → Data Asset, and pick Blendable Camera Rig Asset. Name it after the Rig you're recreating.

  • 2

    Set its values.

    Open it, and for each value in the Rig's block below, find the setting and type the value in. Anything not in the block stays at its default.

  • 3

    Save and repeat.

    Each Rig is independent, and you only need the ones your preset uses. Start with Third Person.

Building the presets#

A camera preset puts Rigs together: the one the camera starts on, the ones it switches to for aiming, ragdolls and slides, its views, and its gamepad and idle shots. Make one the same way (Miscellaneous → Data Asset → Blendable Camera Preset), set the values in its block, then give it its Rigs from the table under the block.

Third Person#

Third Person (PCP_ThirdPerson). The shipping third-person camera. Aim, ragdoll and slide states, TP and FPS views, gamepad and mouse profiles, and an idle drift after ten seconds.

PCR_TPDefault#

(Settings=(PivotLag=(bEnabled=True,bDepthOnly=True,LaggedRate=6.000000,MaxDistance=250.000000,CatchUpRate=4.000000),Composition=(Target=(X=33.701757,Y=53.632011),Recovery=8.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,ShoulderResponse=Slide,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,YawFollowSoftness=60.000000,RecenterDelay=3.000000,RecenterSpeed=1.000000,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),HandheldAmbientScale=2.000000),DefaultBlendTime=0.500000)
  • Composition › Pitch Up › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself

PCR_Aim#

(Settings=(Composition=(Target=(X=14.781994,Y=55.691800),Shifts=((Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=150.000000,AutoShoulderProbeReach=35.000000,MinPitch=-65.000000,FOV=55.000000,ArmPullInTime=0.011111,bGapCentring=True,bPitchResponse=False,bPitchRoomLimit=False,bPitchFollow=False,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchFollowSlopes=False,PitchRecoverDelay=0.350000),DefaultBlendTime=0.250000)

PCR_Ragdoll#

(Settings=(PivotSocket="pelvis",PivotOffset=(X=0.000000,Y=0.000000,Z=0.000000),PivotLagSpeed=8.000000,Composition=(Target=(X=50.000000,Y=54.708163),Shifts=((Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=450.000000,AutoShoulderProbeReach=1.000000,MinPitch=-75.000000,ArmPullInTime=0.011111,bGapCentring=True,bGapYawAssist=True,bPitchRoomLimit=False,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000),DefaultBlendTime=0.500000)

PCR_Slide#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=-35.000000),Composition=(Target=(X=33.118806,Y=52.728274),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=Speed,DriverFull=300.000000,Amount=(X=32.227734,Y=0.000000),BlendTime=0.750000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=125.000000,AutoShoulderProbeReach=55.000000,MaxPitch=5.000000,FOV=105.000000,ArmPullInTime=0.011111,bGapCentring=True,bGapYawAssist=True,bPitchResponse=False,bPitchFollow=False,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchFollowSlopes=False,PitchRecoverDelay=0.350000),DefaultBlendTime=0.250000)

PCR_FPS#

(Settings=(PivotSocket="eyes",PivotOffset=(X=0.000000,Y=0.000000,Z=0.000000),PivotLagSpeed=0.000000,Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmLength=0.000000,AutoShoulderProbeReach=1.000000,FOV=105.000000,ArmPullInTime=0.011111,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,bAutoRecenter=True,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=1.250000,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),BoneStabilisation=1.000000,BoneStabilisationSmoothing=0.010000),DefaultBlendTime=0.200000)

PCR_TPController#

(Settings=(Composition=(Target=(X=42.338727,Y=53.632011),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,bYawFollow=True,YawFollowSoftness=60.000000,bAutoRecenter=True,RecenterDelay=3.000000,RecenterSpeed=1.000000,bLookOvershoot=True,LookOvershootAmount=0.250000,LookOvershootDecay=0.200000,SlopeFollowDelay=0.750000,bPitchRecover=True,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000))),DefaultBlendTime=0.500000)

PCR_Idle#

(Settings=(PivotLagSpeed=8.000000,Composition=(Target=(X=50.000000,Y=54.708163),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=600.000000,AutoShoulderProbeReach=1.000000,MinPitch=-75.000000,FOV=90.000000,ArmPullInTime=0.011111,bGapCentring=True,bGapYawAssist=True,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000),DefaultBlendTime=0.500000)

PCP_ThirdPerson#

(DisplayName=INVTEXT("Third Person"),Description=INVTEXT("The shipping third-person camera. Aim, ragdoll and slide states, TP and FPS views, gamepad and mouse profiles, and an idle drift after ten seconds."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="Slide")),ViewModes=((Name="TP"),(Name="FPS")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_TPDefault
Camera States, AimPCR_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, SlidePCR_Slide
View Modes, TPPCR_TPDefault
View Modes, FPSPCR_FPS
Gamepad RigPCR_TPController
Keyboard Mouse RigPCR_TPDefault
Idle Camera RigPCR_Idle

Third Person Alt#

Third Person Alt (PCP_ThirdPersonAlt).

PCR_TPAlternate#

(Settings=(Composition=(Target=(X=42.338727,Y=53.632011),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,YawFollowSoftness=60.000000,RecenterDelay=3.000000,RecenterSpeed=1.000000,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),HandheldAmbientScale=2.000000),DefaultBlendTime=0.500000)

PCP_ThirdPersonAlt#

(DisplayName=INVTEXT("Third Person"),Description=INVTEXT("The shipping third-person camera. Aim, ragdoll and slide states, TP and FPS views, gamepad and mouse profiles, and an idle drift after ten seconds."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="Slide")),ViewModes=((Name="TP"),(Name="FPS")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_TPAlternate
Camera States, AimPCR_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, SlidePCR_Slide
View Modes, TPPCR_TPAlternate
View Modes, FPSPCR_FPS
Gamepad RigPCR_TPController
Keyboard Mouse RigPCR_TPDefault
Idle Camera RigPCR_Idle

Action RPG#

Action RPG (PCP_ActionRPG). Centred orbit at a long arm, tuned for reading terrain and crowds rather than faces. Recentres behind the player on yaw only after a pause, and hands the shot to a dedicated lock-on rig when a target is held.

PCR_ARPG_Default#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=70.000000),PivotLagSpeed=12.000000,Composition=(Target=(X=50.000000,Y=52.000000),DeadZone=(X=12.000000,Y=14.000000),Recovery=3.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=450.000000,AutoShoulderProbeReach=1.000000,MinPitch=-65.000000,MaxPitch=55.000000,FOV=72.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-12.000000,bYawFollow=True,YawFollowSpeed=1.800000,YawFollowDelay=1.200000,YawFollowSoftness=60.000000,bAutoRecenter=True,RecenterDelay=3.000000,RecenterSpeed=2.500000,bRecenterYawOnly=True,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000))),DefaultBlendTime=0.500000)

PCR_ARPG_Aim#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=70.000000),Composition=(Target=(X=20.000000,Y=55.000000),DeadZone=(X=5.000000,Y=7.000000),Recovery=5.000000,Shifts=((Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=210.000000,AutoShoulderProbeReach=38.000000,MinPitch=-65.000000,MaxPitch=55.000000,FOV=58.000000,ArmPullInTime=0.011111,bGapCentring=True,bPitchResponse=False,bPitchRoomLimit=False,bPitchFollow=False,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchFollowSlopes=False,PitchRecoverDelay=0.350000),DefaultBlendTime=0.280000)

PCR_ARPG_LockOn#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=70.000000),Composition=(Target=(X=50.000000,Y=52.000000),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=FramingSubject,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.500000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=420.000000,AutoShoulderProbeReach=1.000000,FOV=70.000000,ArmPullInTime=0.011111,bAutoShoulderSwap=True,bGapCentring=True,bGapYawAssist=True,bLookAtBreakFree=False,OrientationRequest=Aim,bPitchFollow=False,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchRecover=True,PitchRecoverDelay=0.350000),DefaultBlendTime=0.400000)

PCP_ActionRPG#

(DisplayName=INVTEXT("Action RPG"),Description=INVTEXT("Centred orbit at a long arm, tuned for reading terrain and crowds rather than faces. Recentres behind the player on yaw only after a pause, and hands the shot to a dedicated lock-on rig when a target is held."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="LockOn",Priority=15)),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_ARPG_Default
Camera States, AimPCR_ARPG_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, LockOnPCR_ARPG_LockOn
View Modes, TPPCR_ARPG_Default

Cinematic Action#

Cinematic Action (PCP_CinematicAction). Very close, fixed-shoulder framing with a wide lens. Gentle yaw follow keeps the shot trailing the character without ever recentring, so the camera reads as an operator walking behind them rather than a spring snapping back.

PCR_CinematicAction_Default#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=58.000000),PivotLagSpeed=18.000000,Composition=(Target=(X=30.000000,Y=40.000000),DeadZone=(X=5.000000,Y=7.000000),Recovery=3.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=160.000000,MinPitch=-44.000000,MaxPitch=40.000000,FOV=72.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,ShoulderResponse=Slide,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,OrientationRequest=Strafe,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-6.000000,bYawFollow=True,YawFollowSoftness=60.000000,bAutoRecenter=True,RecenterSpeed=0.250000,bLookOvershoot=True,LookOvershootAmount=0.100000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,bPitchRecover=True,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),HandheldAmbientScale=2.551816,HandheldTransientScale=0.500000),DefaultBlendTime=0.450000)

PCR_CA_Aim#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=62.000000),PivotLagSpeed=24.000000,Composition=(Target=(X=16.000000,Y=57.000000),DeadZone=(X=5.000000,Y=7.000000),Recovery=5.000000,Shifts=((Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=82.000000,AutoShoulderProbeReach=50.000000,MinPitch=-50.000000,MaxPitch=45.000000,FOV=62.000000,ArmPullInTime=0.011111,bGapCentring=True,bPitchResponse=False,bPitchRoomLimit=False,bPitchFollow=False,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchFollowSlopes=False,PitchRecoverDelay=0.350000),DefaultBlendTime=0.220000)

PCR_CA_LockOn#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=62.000000),Composition=(Target=(X=38.000000,Y=55.000000),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=FramingSubject,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.500000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=160.000000,AutoShoulderProbeReach=32.000000,FOV=70.000000,ArmPullInTime=0.011111,bAutoShoulderSwap=True,bGapCentring=True,bGapYawAssist=True,bLookAtBreakFree=False,OrientationRequest=Aim,bPitchFollow=False,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchRecover=True,PitchRecoverDelay=0.350000))

PCP_CinematicAction#

(DisplayName=INVTEXT("Cinematic Action"),Description=INVTEXT("Very close, fixed-shoulder framing with a wide lens. Gentle yaw follow keeps the shot trailing the character without ever recentring, so the camera reads as an operator walking behind them rather than a spring snapping back."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="LockOn",Priority=15)),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_CinematicAction_Default
Camera States, AimPCR_CA_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, LockOnPCR_CA_LockOn
View Modes, TPPCR_CinematicAction_Default

Cinematic Exploration#

Cinematic Exploration (PCP_CinematicExploration).

PCR_CinematicExploration#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=250.000000),PivotLagSpeed=18.000000,PivotLag=(bEnabled=True,MaxDistance=600.000000),Composition=(Target=(X=25.000000,Y=0.000000),DeadZone=(X=5.000000,Y=7.000000),Recovery=3.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=1000.000000,MaxPitch=0.000000,FOV=72.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,ShoulderResponse=Slide,AutoShoulderPinchDistance=300.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=1.500000,PitchArmScaleDown=1.000000,PitchFOVOffsetDown=-10.000000,ProbePullRate=8.000000,RestingPitch=-6.000000,bYawFollow=True,YawFollowSoftness=60.000000,bAutoRecenter=True,RecenterSpeed=0.250000,bLookOvershoot=True,LookOvershootAmount=0.100000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,bPitchRecover=True,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),HandheldTransientScale=0.500000),DefaultBlendTime=0.450000)
  • Composition › Pitch Up › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself

PCP_CinematicExploration#

(DisplayName=INVTEXT("Cinematic Action"),Description=INVTEXT("Very close, fixed-shoulder framing with a wide lens. Gentle yaw follow keeps the shot trailing the character without ever recentring, so the camera reads as an operator walking behind them rather than a spring snapping back."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="LockOn",Priority=15)),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_CinematicExploration
Camera States, AimPCR_CA_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, LockOnPCR_CA_LockOn
View Modes, TPPCR_CinematicExploration

Survival Horror#

Survival Horror (PCP_SurvivalHorror). Tight over-the-shoulder with a short arm and a narrow field of view. Every automatic follow behaviour is off: the camera only moves when the player moves it, which is what makes a corridor feel like a corridor.

PCR_SH_Default#

(Settings=(PivotLagSpeed=18.000000,Composition=(Target=(X=29.411882,Y=44.663900),DeadZone=(X=5.000000,Y=7.000000),Recovery=3.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=140.000000,MaxPitch=55.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,ShoulderResponse=Slide,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,OrientationRequest=Strafe,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-6.000000,bYawFollow=True,YawFollowSoftness=60.000000,RecenterDelay=1.000000,RecenterSpeed=6.000000,bLookOvershoot=True,LookOvershootAmount=0.107335,LookOvershootDecay=0.546971,SlopeFollowDelay=0.750000,bPitchRecover=True,PitchRecoverDelay=0.350000,bConstrainYaw=True,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),PostProcess=(Weight=1.000000,bOverrideExposureSpeed=True,ExposureSpeedDown=3.000000),HandheldAmbientScale=2.000000,HandheldTransientScale=0.500000),DefaultBlendTime=0.450000)
  • Composition › Pitch Up › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself
  • Composition › Pitch Down › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself

PCR_SH_Aim#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=58.000000),PivotLagSpeed=22.000000,Composition=(Target=(X=16.000000,Y=55.000000),DeadZone=(X=4.000000,Y=6.000000),Recovery=5.000000,Shifts=((Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),ArmLength=110.000000,AutoShoulderProbeReach=44.000000,MinPitch=-55.000000,MaxPitch=55.000000,FOV=65.000000,ArmPullInTime=0.011111,bGapCentring=True,bPitchResponse=False,bPitchRoomLimit=False,bPitchFollow=False,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchFollowSlopes=False,PitchRecoverDelay=0.350000),DefaultBlendTime=0.200000)

PCP_SurvivalHorror#

(DisplayName=INVTEXT("Survival Horror"),Description=INVTEXT("Tight over-the-shoulder with a short arm and a narrow field of view. Every automatic follow behaviour is off: the camera only moves when the player moves it, which is what makes a corridor feel like a corridor."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="Slide")),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_SH_Default
Camera States, AimPCR_SH_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, SlidePCR_Slide
View Modes, TPPCR_SH_Default

Immersive#

Immersive (PCP_Immersive).

PCR_Immersive_Default#

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=58.000000),PivotLagSpeed=18.000000,Composition=(Target=(X=24.000000,Y=44.663900),DeadZone=(X=5.000000,Y=7.000000),Recovery=3.000000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=140.000000,MinPitch=-55.000000,MaxPitch=55.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,bAutoShoulderSwap=True,ShoulderResponse=Slide,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,OrientationRequest=Strafe,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-6.000000,YawFollowSoftness=60.000000,RecenterDelay=3.000000,RecenterSpeed=1.000000,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bConstrainYaw=True,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),PostProcess=(Weight=1.000000,bOverrideExposureSpeed=True,ExposureSpeedDown=3.000000),HandheldAmbientScale=2.000000,HandheldTransientScale=0.500000),DefaultBlendTime=0.450000)
  • Composition › Pitch Up › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself
  • Composition › Pitch Down › Response: the CF_EaseCubic curve from Unreal's Mover Examples plugin, an ease in and out from 0 to 1. Without that plugin, draw the same ease yourself

PCP_Immersive#

(DisplayName=INVTEXT("Survival Horror"),Description=INVTEXT("Tight over-the-shoulder with a short arm and a narrow field of view. Every automatic follow behaviour is off: the camera only moves when the player moves it, which is what makes a corridor feel like a corridor."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="Slide")),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_Immersive_Default
Camera States, AimPCR_SH_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, SlidePCR_Slide
View Modes, TPPCR_Immersive_Default

Tight Squeeze#

Tight Squeeze (PCP_TightSqueeze).

PCR_Tight#

(Settings=(PivotOffset=(X=0.000000,Y=5.000000,Z=65.000000),PivotLagSpeed=18.000000,Composition=(Target=(X=45.000000,Y=40.141800),DeadZone=(X=5.000000,Y=7.000000),Recovery=3.000000,bConstantSubjectDistance=True,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=60.000000,MinPitch=-35.000000,MaxPitch=55.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,ShoulderResponse=Slide,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,OrientationRequest=Strafe,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-6.000000,YawFollowSoftness=60.000000,RecenterDelay=3.000000,RecenterSpeed=1.000000,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bConstrainYaw=True,LocalMinYaw=-5.000000,LocalMaxYaw=5.000000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000)),PostProcess=(Weight=1.000000,bOverrideExposureSpeed=True,ExposureSpeedDown=3.000000),HandheldAmbientScale=2.000000,HandheldTransientScale=0.500000),DefaultBlendTime=0.450000)

PCP_TightSqueeze#

(DisplayName=INVTEXT("Survival Horror"),Description=INVTEXT("Tight over-the-shoulder with a short arm and a narrow field of view. Every automatic follow behaviour is off: the camera only moves when the player moves it, which is what makes a corridor feel like a corridor."),Config=(DefaultSettings=(Composition=(Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000))),ArmPullInTime=0.011111),CameraStates=((Name="Aim"),(Name="Ragdoll",Priority=20),(Name="Slide")),ViewModes=((Name="TP")),DefaultViewMode="TP",Comfort=(CentreDotSize=1.000000,CentreDotColour=(R=1.000000,G=1.000000,B=1.000000,A=0.800000),CentreDotPixels=3.000000),SteerRate=10.000000,bAutoDetectInputDevice=True,bIdleCameraEnabled=True,IdleCameraBlendTime=4.000000))

Then give it its Rigs:

SettingRig
Default RigPCR_Tight
Camera States, AimPCR_SH_Aim
Camera States, RagdollPCR_Ragdoll
Camera States, SlidePCR_Slide
View Modes, TPPCR_Tight

Other Rigs#

PCR_CA_Default#

No preset uses it: a closer Cinematic Action shot, for a volume or a Blueprint to ask for.

(Settings=(PivotOffset=(X=0.000000,Y=0.000000,Z=62.000000),PivotLagSpeed=20.000000,Composition=(Target=(X=34.000000,Y=58.000000),DeadZone=(X=9.000000,Y=11.000000),Recovery=3.500000,Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),bDynamicFraming=False,ArmLength=115.000000,AutoShoulderProbeReach=58.000000,MinPitch=-50.000000,MaxPitch=45.000000,FOV=76.000000,ArmPullInTime=0.100000,ArmRelaxTime=0.650000,ArmDamping=(bLeadMovingTarget=False),OcclusionMinTime=0.100000,AutoShoulderPinchDistance=120.000000,AutoShoulderBlendTime=1.000000,bGapCentring=True,bGapYawAssist=True,LookAtOffsetDecay=5.000000,PitchArmScaleUp=0.900000,PitchFOVOffsetDown=0.000000,ProbePullRate=8.000000,RestingPitch=-4.000000,bYawFollow=True,YawFollowSpeed=1.200000,YawFollowDelay=0.800000,YawFollowSoftness=60.000000,RecenterDelay=3.000000,RecenterSpeed=1.000000,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,SlopeFollowDelay=0.750000,PitchRecoverDelay=0.350000,bPredictiveAvoidance=True,Feelers=((PawnWeight=0.000000,ProbeRadius=12.000000))),DefaultBlendTime=0.550000)

PCR_LockOn#

No preset uses it: the lock-on component frames a lock with it.

(Settings=(Composition=(Target=(X=40.819049,Y=54.352452),Shifts=((Driver=CeilingRoom,DriverFull=100.000000,Amount=(X=0.000000,Y=-8.000000),BlendTime=0.000000),(Driver=FramingSubject,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.500000),(Driver=GapRoom,DriverFull=100.000000,Amount=(X=100.000000,Y=0.000000),BlendTime=0.000000))),FOV=70.000000,ArmPullInTime=0.011111,bAutoShoulderSwap=True,bGapCentring=True,bGapYawAssist=True,bLookAtBreakFree=False,OrientationRequest=Aim,bPitchFollow=False,bLookOvershoot=True,LookOvershootAmount=0.050000,LookOvershootDecay=0.100000,bPitchRecover=True,PitchRecoverDelay=0.350000))

If a value looks wrong#

These are exported from the assets 1.1 shipped rather than transcribed. If a Rig you've rebuilt behaves differently from the demo, check every value in its block went into the right group: a value typed at the top level that belongs inside Composition is the usual slip.