Hi everyone! I’ve been trying for the second day to cut a piece off a block. I created a BP_CreatedDynamicMeshActor, made the block, and created a second dynamic mesh as a “knife” that looks like a rectangle. The expectation is that the knife will pass through the block and cut out a piece from it, but no matter how hard I try, the boolean operation just won’t work. I’m attaching screenshots. I have no idea what I’m doing wrong.
Hi there, welcome to community forums
Over here
“Apply Mesh Boolean” your TargetMesh should be the dynamic mesh you are cutting.
and your ToolMesh is your “cutter” to simply put.
TargetMesh = block dynamic mesh
ToolMesh = knife dynamic mesh
Also make sure the transform is correct. If the knife is another actor/component, visual location in the level does not always mean the boolean node is using that same transform. The tool mesh needs to be passed with the correct transform relative to the target, otherwise it may look like it intersects, but the boolean is actually happening somewhere else.
In other words, both meshes need to be evaluated in the same transform space.
Hello! thx for answer! I applied the dynamic mesh as you said, but unfortunately, it didn’t work. Attempts to set its position in space only produce errors. The most I managed to achieve was my milling cutter appearing at the bottom of the cube, but it looked very bad, with clearly broken geometry
No worries.
If you can share some screenshots or a short video of the setup and the result, maybe we can help more. It is quite hard to figure out the setup or the error/result without seeing it.
Also, if possible, show the mesh generation part, the Apply Mesh Boolean node, and the actual result in the viewport.
So
Your cutter/tool is : Cylinder
Your Target is : Wall
I see you Cutter1 (Which I assume correct) get dynamic mesh and assign as tool but you are also assigning Cutter1 location to Target? I expect it to be on “Tool Transform Location” but instead I see a “Wall Actor Location” which is fundamentally your target so I think locations are still mixed in that terms.
Alternatively when you position manually and boolean, it should just work as expected. I see wall has quite a thickness (sometimes boolean when so thin can cause errors but thats not the case in this).
Try not assigning locations. just Target Mesh and Tool Mesh, try position in level and see if the results are expected or not.
Then if everything is fine and OnConstruction if you have to position them. Subtract TargetLoc from tool location and input into tool location. Since these are seperate actor, positions should be relative to target.
edit:
Also I see the compute mesh ? used in cutter but pin is empty? You don’t have to compute mesh over there i think you can just use directly dynamic mesh.
Greetings! Yes, you correctly noticed that I had the Locations mixed up on one of the screenshots — I spotted it myself and fixed it, but it didn’t yield any results. I also tried following the approach from this thread UE5: How to spawn Dynamic Mesh Component Actor Dynamically? - #9 by baibaituan but my attempts were unsuccessful as well, even though it seems to me I replicated everything exactly. More precisely, I tried that approach, then I tried to simplify it and not create a third BP for implementing the boolean, but instead did it as before in BP_wall. That also produced no results. Pure magic. Having worked in 3D for 20 years, I’m used to the result being predictable if you do everything logically, but here I sense some hidden logic that I just can’t grasp. The scheme itself should be extremely simple:
BP_cutter — append cylinder — set (Make the variable global)
BP_wall — append box — get dynamic mesh from BP_cutter — apply boolean mesh — release compute mesh
And that’s it! This should work, since the exact same scheme works if you make the tool and target mesh in a single BP. The only difference I’m trying to implement is to get a reference to the tool from another BP and use it. This is just nonsense.
Allright no worries, there can be something hidden / leftover missing in your scripts. I worry also that this operation in Construct so maybe the tool mesh ref you passing somehow empty? No problem I will just quickly make a boolean cut with 2 actors and their components.
This is a pure sandbox template that I do the blueprint job in 5.7
So this is the cutter named as ToolCut_BP as parent class is DynamicMeshActor class
Can be normal actor too but better be dynamic mesh actor, it has some additional things however not a blocker actor would work too.
On Construction i set a material as something transparent from editor. I reset it ,so when construction runs its always clean and append a box. Something thin on Y like a thick plane.
TargetCut_BP is similar. I get component on construction, reset and add a big enough box to be cutted.
I added 2 actors to the world and for the cutter assigned a tag.
If you want you can do from details panel too on the ClassDefaults search tag
We will use this tag to select the correct actor from the world/level. If you are doing with something else its totally fine, I am just making step by step tutorial.
Making the Boolean Operation
I created a new function and named something like DoBoolean
Simply we make a selection query to level, GetAllActorsOfAClassWithTag. I select our class DynamicMeshActor and define the tag that we have the cutter which is ToolCut_BP. Simply we check this with a IsValid, so the operation only runs when there is a cutter found.
After Is valid , we GetComponenByClass for this we already know this is a DynamicMeshComponent. We get its mesh which is cutter.
Plug the target and tool also feed in world transforms.
As for the last and most important part we click DoBoolean function we just created and in Details panel mark it as “Call In Editor”
This simply enables us to manually call this function from the Editor before begin play on construction time. Construction manual call can be required since if we don’t, we can not be sure that Tool or Target prepared first so if the boolean function runs by itself may return an empty Tool/Cutter. Since we cannot control construction order in blueprints common and organised method is to call manually.
If you click and check actor in the level for target, you should be able to see “DoBoolean” function as a button in the panel
We can click and do boolean cut.
Results

Every tool has its working fundamentals, UE has its own way of doing it since this is an Engine, scripts and their behavior varies from engine to engine, can be sometimes hard to understand what is going wrong in the beginning and its totally fine (that’s why the forums exists). I think the error you having either coming from transforms or the order of construction execution as mentioned above but you can follow this and give a shot. Let me know if you can get it working.
Thank you so much! It works and it helped me understand some things. For my game mechanic, all I have left to do is automate the DoBoolean button so that during the process, the cut remains as it should after the cutter passes. I think I’ll continue experimenting with connecting the DoBoolean function to EventTick and add control over the cutter’s geometry so I can really chew into the base geometry. I’ll keep posting my progress here. If you have any comments on the implementation, I’d be very grateful. Thanks again, you’ve helped me a lot!
That’s great happy that it worked and helped you.
Yes simply in your game after begin play whenever you want you can call DoBoolean() function, either from a input, or like Fruit Ninja. You make an action → CanSlice(), you check if the action of player is meaningfull / valid, if Valid DoBoolean() pass variables needed.
Geometry script is a powerfull tool but it’s also kinda costly for big operations, unlimited possibilities for art, design and gameplay itself. Let us know about your progress or if you get stuck.
Happy developing!













