Blur effect for dead bodies

Hello! I’ve seen this cool system on Reddit where a player dies with a blur effect with this ModularScript from this dev forum post, but I do not know how to achieve this, and I’m hoping for some help from the community!

There weren’t any other resources on any other forums, and it seems like nobody had thought of a solution.

Their video:

6 Likes

Actually, skip this I’ll send you an example soon. I’m wrong.

could be done with a billboardgui, based on how the box remains in shape when the camera moves.

Could use this, too. Just position the billboardgui right, blur it, and done. You can enable/disable the blur then using a remoteevent or bindableevent.

Here’s a resource I found for the blur. It’s old, but I guess it’ll do:

1 Like

Right okay so you can use this logic:

local Directions = {Vector3.new(1,1,0),Vector3.new(1,-1,0),Vector3.new(-1,1,0),Vector3.new(-1,-1,0),
	Vector3.new(1,0,1),Vector3.new(1,0,-1),Vector3.new(-1,0,1),Vector3.new(-1,0,-1),Vector3.new(0,1,1),
	Vector3.new(0,1,-1),Vector3.new(0,-1,1),Vector3.new(0,-1,-1)}

local function Update()
	local maxX,maxY = 0,0
	
	local i = 1
	while i < #Directions do
		local Dis = Camera:WorldToScreenPoint((Object.CFrame * CFrame.new(Object.Size/2*Directions[i])).Position)
		-Camera:WorldToScreenPoint((Object.CFrame * CFrame.new(Object.Size/2*Directions[(i%#Directions)+1])).Position)
		
		maxX = math.max(maxX,math.abs(Dis.X))
		maxY = math.max(maxY,math.abs(Dis.Y))
		i += 1
	end
	
	local MP = Camera:WorldToScreenPoint(Object.Position)
	
	Frame.Position = UDim2.fromOffset(MP.X,MP.Y)
	Frame.Size = UDim2.fromOffset(maxX+50,maxY+50)
end

To size the frame and then apply the blur to that frame object.

This is the code im using to apply the neon blur:

neon:BindFrame(Frame,{
	Transparency = 0.5;
	BrickColor = BrickColor.new("White");
})

The Result:


It adjusts pretty nicely.

And because everything updates frequently, you can use this to blur player heads!

Kind of like Bodycam I’d say.

4 Likes

Is there a way you could give me a step by step or an copy version? I’m not familier with ModuleScripts or applying them :+1:

I already gave you enough code, what I can do is give you a guide.

Step 1:
Create a ScreenGui and Insert a local script and a frame into it.

Step 2:
Open the script and paste in the given Update function and Directions table.

Step 3:
Insert the blur module into the script and make a reference to it in the script. Like local blur = require(script.Blur)

Step 4:
Use RunService.RenderStepped:Connect(Update) in the script to run the update function every frame.

Step 5: Use the blur module to apply blur to the frame you just added.

1 Like

Sorry I have been busy with irl stuff but I hope I got it right but I’m like confussed about the last two steps, Step 4 and 5

local blur = require(script.neon)

local Directions = {Vector3.new(1,1,0),Vector3.new(1,-1,0),Vector3.new(-1,1,0),Vector3.new(-1,-1,0),
	Vector3.new(1,0,1),Vector3.new(1,0,-1),Vector3.new(-1,0,1),Vector3.new(-1,0,-1),Vector3.new(0,1,1),
	Vector3.new(0,1,-1),Vector3.new(0,-1,1),Vector3.new(0,-1,-1)}

local function Update()
	local maxX,maxY = 0,0

	local i = 1
	while i < #Directions do
		local Dis = Camera:WorldToScreenPoint((Object.CFrame * CFrame.new(Object.Size/2*Directions[i])).Position)
		-Camera:WorldToScreenPoint((Object.CFrame * CFrame.new(Object.Size/2*Directions[(i%#Directions)+1])).Position)

		maxX = math.max(maxX,math.abs(Dis.X))
		maxY = math.max(maxY,math.abs(Dis.Y))
		i += 1
	end

	local MP = Camera:WorldToScreenPoint(Object.Position)

	Frame.Position = UDim2.fromOffset(MP.X,MP.Y)
	Frame.Size = UDim2.fromOffset(maxX+50,maxY+50)
end

And heres the screenshot of the layout I followed