Decal Surface Displacement Plugin

I think I found a fix. The cage deformer beta feature broke it for me. I recommend disabling for the time being if if you plan on using the plugin.

1 Like

Thank you! Also I already said this in another comment but I found a way to fix it for myself at least. The cage deformation beta seems to break it so disabling that and restarting studio should do the trick.

2 Likes

Do You have a tutorial for this

-Also Really Cool

it sadly just didnt work for me idk if i’m just stupid but rip

Make sure you don’t have the cage mesh deformer beta enabled.

For some reason it breaks this plugin.

2 Likes

Amazing plugin!
I was wondering: is there a way to implement this in a script? I’d like to use this “technology” to creare AoE vfx for when a player casts a skill, however if I try to move the plane where the player is, it won’t deform to match the terrain’s shape.

1 Like

You can use this function directly from the plugin:

function UpdatePlane(Plane)
	local Success = {}
	local Failure = {}
	
	for _,Point in pairs(Plane:GetChildren()) do
		if Point:IsA("Bone") then
			
			if Point:GetAttribute("OriginalPosition") == nil then
				Point:SetAttribute("OriginalPosition",Point.Position/Plane.Size)
			end
			
			Point.Position = Point:GetAttribute("OriginalPosition")*Plane.Size
			
			local RayResults = workspace:Raycast(Point.WorldPosition,Plane.CFrame.UpVector*-Plane:GetAttribute("RayRange"),RayParams)
			if RayResults then
				table.insert(Success,Point)
				Point.WorldPosition = RayResults.Position+RayResults.Normal*Plane:GetAttribute("Offset")
			else
				table.insert(Failure,Point)
			end
		end
	end

	if #Success > 0 then
		for _,Point in pairs(Failure) do

			local Nearest = nil
			local NearestDist = math.huge
			for _,Point2 in pairs(Success) do
				local Dist = (Point:GetAttribute("OriginalPosition")*Plane.Size-Point2:GetAttribute("OriginalPosition")*Plane.Size).Magnitude
				if Dist < NearestDist then
					NearestDist = Dist
					Nearest = Point2
				end
			end

			Point.WorldPosition = Nearest.WorldPosition
		end
	end
end

This is what is used to place the plane onto surfaces. Let me know if you run into any issues with it!

4 Likes

Thank you SO much!! I appreciate it, you are so nice. I will let you know!

1 Like

Is there a script that will create a custom plane?
Such as 1.5x1.5 or 3x3 etc.
And how to implement it?

To my knowledge, creating custom planes is impossible without external software. So no, there are none.

maybe make a version that makes the decals, parts when the user leaves the plugin

I would like to know if there is a way to improve the “Displacement” of the decals.

The left one is the decal at the highest resolution,and the right one is at the lowest resolution.

While I don’t expect this to be perfect,both of them still do clip through stairs a little bit,and if viewed from the side they aren’t even aligned to the ground properly.

I was thinking of much more complex methods of doing this,but I don’t know just how complex could they be before they take up too much performance.

1 Like

Hi, I dont know if anyone else has had this issue, however, when I try to select the plane, all the bone parts go back to their original position and do not follow the wrap i’ve put them in.

Sometimes I seem to be getting an issue where either the top or the bottom half just straight up disappears.
The bones still exist, their position is just… corrupted?
I’m able to send both client- and server side code in DMs if you could assist me, because this might just be my issue.

My guess is that you could move the bones closest to the edge of a part onto the edge of the part…

From what I can understand this seems very interesting. Though it seems the videos are not working so I can’t quite see what this is. I don’t know if it’s on my end or not.

Here is a screenshot:

3 Likes

Hey I was just wandering… Could you add a 100x100 plane? It may be laggy, but it would be so cool. Or you could just tell me how you made the plane?

The videos seem to be corrupt, they don’t seem to want to play. How is this plugin used exactly?

It projects an image using mesh bones
image

1 Like

I know this topic’s old but i added a bit to the plugin
DecalPlacement.rbxmx (376.9 KB)

byyy a bit i mean i added a possibility to remove all data after baking, aswell as some code changes
image