Hi, I’m trying to add a mesh that I created as an ExtrudePolygon to a terrain generated with a heightmap.
My idea is to add it as a decal so the polygon can take the height shape of the heightmap.
I’m using MeshBuilder.CreateDecal(
decal_field, terrain, { position: new Vector3(0, 0, 0)...)
But I’m not sure if I’m able to actually pass the mesh I created as decal.
Is there any way to do this?
Thanks
CreateDecal already creates a mesh with the appropriate decal shape, so you can’t use the ExtrudePolygon one. If you just want the decal to have a custom polygonal shape, you could use DynamicTexture to draw it instead Dynamic Textures | Babylon.js Documentation (babylonjs.com), see:
Drawing HTMLCanvasElement as Decal | Babylon.js Playground (babylonjs.com)
1 Like
Hi @carolhmj thanks for your great answer! I actually started figuring out how to use the DynamicTextures you told me about. I’ve been having some problems with it.
In my example I have a shape that I would like to apply to my GroundMesh as a texture. The problem is that I cant figure out the resolution and decal size I would need to make the shape fit perfectly within the width and height of my ground:
If you’re going to apply the shape to a ground you don’t even need the decal, just assign the DynamicTexture to the ground’s material: Drawing HTMLCanvasElement as Decal | Babylon.js Playground (babylonjs.com)
1 Like
@carolhmj In this case, what happens if my ground already has a different material? Can I apply an additional material with the DynamicTexture to a specific position in the ground?
Oh in this case the new Texture Decals feature will be useful: Decals | Babylon.js Documentation (babylonjs.com), you can just use the DynamicTexture instead of the image textures Texture Decals | Babylon.js Playground (babylonjs.com)
1 Like
Going through the documentation and the examples this looks like just what I need. Thanks a lot. I am actually trying to implement it now on my example but not being able to render the textures properly:
You’ll need to check if the decal map is ready before rendering to it, here’s an example: Drawing HTMLCanvasElement as Decal | Babylon.js Playground (babylonjs.com)
1 Like