You can find the Epic Marketplace page here

Description

This plugin allows the player to see some in game elements (like his Character(s)) through scenarios elements (like walls).

Setup Video Tutorial

Important

This effect won’t workin while Simulating, remember to test it in any other mode, like PIE (Play In Editor).

Terms used in this article

Target: element that has to be seen through others (usually a Character)

Obstacle: walls or any other element that the camera should see through

Setup

Here a fast setup guide, you can also check the video in this article if you prefer

  1. Create a new trace channel (for example CameraBubble), set default to Ignore.
  2. Create a new Collision profile called Obstacle. Set CameraBubble trace channel to Overlap. and CollisionEnabled to Query and Physics.
  1. Create a new Blueprint from CameraBubbleManager in your project. Call it BP_CameraBubbleManger_<YourProjectName>.
  2. Open the BP_CameraBubbleManger_<YourProjectName> blueprint, find the Config category under Variables and set Config > TraceChannel to the channel created in step 1 (be sure to enable Show inherited variables in My blueprint tab settings).
  3. Create a new Blueprint from CameraBubbleTarget in your project. Call it BP_CameraBubbleTarget_<YourProjectName>. Set the variable BubbleCameraManagerClass to BP_CameraBubbleManger_<YourProjectName>.
  4. Put BP_CameraBubbleManger_<YourProjectName> in the map.
  5. Set all the Obstacles Collision Profile to the one created in step 2.
  6. Insert in Targets blueprints BP_CameraBubbleTarget.
  7. Obstacle material has to be masked and has the Material function MF_CameraBubble in it (connected to the Opacity Mask pin).

If you don’t want all Obstacles materials to be always Masked, you can do the follow instead of step 9 (this is how I did in the setup video, it’s the reccomanded way):

Add in all the materials of the Obstacles the MF_CameraBubble Material function and connect Opacity and OpacityMask pins. Or you can use Material Attributes and just connect the funcion in cascade.

Now create a MaterialInstance from the Obstacles materials, enable UseCameraHole and set BlendMode as Masked

Now, in BP_CameraBubbleManager<ProjectName>, enable Config>AutoSwitchMaterial>UseAutoSwitchMaterial and populate the MaterialSwithBaseToBubble Map using as keys (left) Obstacles materials and as Value (right) your instance with enabled UseCameraHole and Blend Mode Masked.

Do that for any material that you want to use CameraBubbleEffect.

In this way only meshes between Targets and Camera will be Masked, all the others will stay Opaque.

Foliage, Instanced Static Mesh (Ism) and Hierarchical Instanced Static Mesh (Hism) [from UE 5.4 version]

  1. Enable in CameraBubbleManager Config > Foliage > UseInstances
  2. A. If you just want to enable CameraBubble on all the foliage, just enable in CameraBubbleManager Config > Foliage > AutoAddFoliage
    B. Or, if you want to control on which components to enable CameraBubble, call CameraBubbleManger->AddIsm() function for each InstanceStaticMesh component you want to use

3. In the Material (or MaterialInstance) used for Foliage or Instances, enable the Instance param

Keep in mind: for Foliages, Ism and Hism collisions and overlaps are not required to work with this plugin. For performance reasons, I decided to make it work in a different way. The bound of the single instances will be used instead of their real collisions. It will work seamless, don’t worry about that ^^.

Advanced setups

Custom Data Offset [from UE 5.4 version]

Normally this plugins will use Custom Data values in meshes and Ism(s) to work.

It will use params from index 0 till MaxTargetNumber-1. If these params are in use in your project, you can shift them increasing the CustomDataOffset param in the Manager from 0 to another number. Keep in mind not to exceed 35-MaxTargetNumber or the plugin won’t work because Unreal has a limit in CustomDataValues.

Change the max Target number [from UE 5.4 version]

Just edit the exposed param in the CameraBubbleManager, no need to edit the Material Function anymore: Config > Max Target Number

Change the max Target number [till UE 5.3 version]

By default, the plugin supports 6 concurrent targets.

To change it:

  1. BP_CameraHoleManger_<ProjectName>: Change Config > Max Targets Number to the desired number.
  2. MPC_CameraBubble: Create new variable: any Target requires a ScalarParameter called RadiusBoundX and a VectorParameter called TargetX, where X has to go from 0 to MaxTargetsNumber-1
  3. MF_CameraHole: Connect the pin with the desired name to the node indicated with the label
  4. Add a new rom in MF_CameraBubble as shown in the screenshot:

Copy and paste the last row, Increase the row number (in the rightmost circle so that it is equal to the previous row + 1. Change RadiusBoundX and TargetX to Match the row number-1. Then connect the new Min pin to the previous one.

Now you can connect the required row number to the Pin indicated by the comment

If it’s not clear feel free to comment here, ask help on the EpicMarketplace or write on my discord channel!