Physical Inventory System
Unreal Engine 5 Tutorial
Unreal Engine 5 Tutorial
Migration (if necessary).
This asset is provided as a sample project. If you need to integrate this asset into your project, follow these steps:
Open the backpack project and select the Content > 3dInventory folder. Right-click and select Migrate > Your Project > Content folder.
After successful migration, you can close this project and immediately open your own.
For successful operation, you need to create additional collision channels: Project Setting > Collision and create a new
Object Channels > BackpackObj = Ignore
Trace Channels > Backpack = Ignore
For the Outline Effect to work, ensure that:
Project Setting > Rendering > Custom Depth-Stencil Pass = Enabled with Stencil
That's all you need to do to proceed with your project.
Backpack Setup Guide
Choose the correct backpack component:
BPC_Backpack_SM — if you use a Static Mesh.
BPC_Backpack_SK — if you use a Skeletal Mesh.
Create a duplicate of the chosen blueprint and open it.
Replace the default SM_Backpack or SK_Backpack with your own backpack mesh inside the blueprint.
Position the mesh the way you want.
Open your backpack mesh → open its materials.
For each material:
Add the MF_Backpack function.
Connect it to OpacityMask (or Opacity). If both are inactive, select Blend Mode = Masked in the material settings.
If needed, plug your alpha mask texture into the Alpha input.
Return to your backpack blueprint.
Adjust their positions:
SpawnPoint — where the item appears when picked up.
DropPoint — where the item is dropped.
Important: move the component, not the pointer selected in the viewport.
Rotate and position the camera so it looks directly at the center of your backpack working area.
Move the Slicer so your backpack opening looks correct.
You can set boundaries in two ways:
Create custom collision meshes that describe your backpack shape:
Top Lid — detects when an object tries to exit the backpack area.
Collision: Block All
Main Volume — ensures the item is inside the backpack.
Collision: Outside Only
Inner Walls — main space used for physical movement inside the backpack.
Collision: Block All
If needed, duplicate boundaries multiple times to prevent pushing objects inside from the outside (example OverlapExternal and BlockExternal).
You can use:
Box Collision components, or
Mesh components (recommended if you want debug visualization).
Before editing BP_Backpack_SK:
Open Construction Script and disconnect the bone-space transformation node.
This prevents bone transforms from interfering with boundary placement.
After finishing boundaries, reconnect the node.
Here are some screenshots showing:
how to place boundaries,
how to add the internal overlap shape,
how to define the main collision walls.
Use as many shapes as needed for precise collision.
And we add an overlay that will determine that our object is now in the backpack.
This is how I did it for BP_Backpack_SM (Static Mesh type), you can do the same for Skeletal Mesh (basic setup)
Set the following:
Collision: Block All (Custom)
BackpackObj = Block
Use CCD: True
Place under SBlock (Scene Component)
Collision: Overlap All (Custom)
BackpackObj = Overlap
Place under SOverlap (Scene Component)
Set Visibility = Ignore (for traces)
Backpack = Ignore
Pawn = Ignore
Inside your backpack blueprint set:
Detect → the inner overlap zone.
Backpack → your Static or Skeletal Mesh.
Parent → Construction Script parent execution.
These variables already exist in the parent class, just set values to them.
Use Attach Component to Component to bind all backpack logic to the correct bone (usually spine_05).
Open your BP_Character.
Add a Branch to all movement events (jump, crouch, run, walk, look).
This ensures the character cannot move while the backpack UI is active.
Add BPI_3dInventory to your character.
Open the example BP_Character and copy the “Main Backpack Functions” block into your character.
Create missing variables (highlighted in blue) and set default values.
You can remove:
Grab Phys Objects block
Client Only: Interaction Trace if you use your own trace system
(just ensure Interacted Actor is updated correctly)
Create a Child Actor Component and assign:
BP_Camera_SM (or Skeletal version)
Position the backpack where you want it to appear.
Copy the example logic:
Set As BP_Backpack variable.
For skeletal backpacks, attach the mesh to the correct bone in your character’s skeleton.
If you want to use the outline system:
Add a Post Process Component
Configure it as shown in the example screenshot.
Create a child class of BP_Item (or use the example in the map).
Assign a Static Mesh to Cube.
Set collision on those objects:
Backpack = Ignore
BackpackObj = Block
During backpack use:
Item collision switches to BackpackObj
When dropped → back to PhysicsBody
If you want certain world objects to remain visible through the backpack camera:
Add MF_OcclusionMask to their materials (works even in translucent mode)
Included debug controls:
RMB — move camera
RMB + MMB — rotate camera
Disable before release by setting:
BP_BackpackCamera > BlockDebugControl = true
If you encounter issues or bugs, please email me before leaving a negative review — I’ll fix everything quickly.
Good reviews motivate me to continue improving the project!
This project took a lot of time and energy to create.
Thank you for supporting it with a positive rating!
Submit bugs here:
Bug Report Form
or write me: myalreadyday@gmail.com