Closed zwcloud closed 4 years ago
Hello, thanks for the report.
It looks like the problem is that it doesn't recognise Unity's Terrain as being a mesh that it can project against. This issue is reproducible, the decal projection system completely doesn't work with Unity's Terrain.
I think it would be a lot of work to get this type of decal system to work in a satisfactory way with Unity's Terrain. Although we cannot directly access the meshes generated by Terrain, we could still build a decal mesh by looking up height data from the Terrain. The bigger problem is that the Terrain swaps between different resolution meshes as the camera moves. To avoid visually clipping through the terrain, the generated decal mesh would need to also swap between matching meshes under the exact same conditions.
That would be possible to do, but it feels to me like something that would better be done by a dedicated Terrain-based system, or a decal system that does the projection at render-time and so doesn't need to access mesh data at all.
It looks like the problem is that it doesn't recognise Unity's Terrain as being a mesh that it can project against.
That's a terrain-like mesh, not a Unity terrain: MeshB.zip
I have also tried regular meshes like sphere, plane and box, it doesn't work either.
Aha, okay. By default the decal looks for nearby meshes that are on objects flagged as "static" (the checkbox on top-right of the inspector when the mesh's object is selected.) If the meshes you're testing with aren't static then the decal will normally not try to project against them.
If you want a decal to project against non-static mesh objects you can untick "All static meshes" on the Decal Mesh and add whatever MeshFilter
s you wish to the "Target meshes" list.
Here is a decal projecting against the example mesh, with the mesh itself still being non-static:
Hopefully that helps.
using Unity 2019.3.9f1 URP 7.3.1