[Tutorial Preview] Gore Mesh & Dismemberment Tutorial

Like most everyone else in the known universe, I’ve been playing a lot of Fallout 4 lately. Fallout 4’s weapons have a tendency to sever limbs and heads. While not realistic, it’s kind of satisfying in a morbid & grotesque way.

I’ve seen many requests for a tutorial on how to do achieve this dismemberment in UE4. Back in UDK/UE3, there was a “BoneBreak” functionality that made doing this easy. That functionality is still in the engine in UE4, so achieving this affect is really quite easy, but there’s a catch: You can’t do it with only Blueprint. For some reason, the skeletal mesh BreakConstraint function (same as the old “BoneBreak”) isn’t made available to Blueprint.

It would be relatively trivial to write a plugin to expose the functionality to Blueprint, or to do a custom build of the engine that made BreakConstraints callable from Blueprint, but as of right now, you have to use at least a little C++ to make this effect work.

I’m hoping to record the tutorial using C++ over the Thanksgiving break here in the US so, with any luck ("lord willin’ and the creek don’t rise), it should be available by 11/29/2015.

I’ll probably also write a plugin to make this functionality available to Blueprint-only users and a corresponding Blueprint version of the tutorial, but no timeline on that yet.

In UDK, there was a way to alter mesh weights. Is this achievable in UE4?

To alter vertex weighting of the mesh? I know it’s possible if you’re using C++, but I haven’t ever needed to do that. I think you’d get to that data using the underlying [FONT=Courier New]FSkeletalMeshResource, but I’d have to research it more. It seems to be much more common to have a divided gore mesh and swap visibility from the regular mesh to the gore mesh after dismemberment. In face, the UDK/UE3 gore tutorials I’ve seen all use the gore mesh approach. In my sample project right now, I’m just using the epic guy whose parts are conveniently weighted 100% to a single bone.

I’ve done dismemberment long time ago here and the tutorials I remember at the time involved altering mesh weights using another gore mesh and swapping visibility with it. It’d be more practical to investigate this because we can’t assume such robotic weightings being the norm.

EDIT:

The tutorial I based my work on was this. If there is an alternative way that can achieve the same effect, let us know. ^^

It’s basically the same process. The default UE4 guy didn’t need a gore mesh, however. I’m going to try and find a mesh I can use for the tutorial that I can create a gore mesh for.

Awesome! Good luck. ^^

We had this working great in UDK using the same above method Seenoh mentioned with weighting vertices. I have been anxiously waiting for epic to offer the same functionality so we can replicate results in UE4 as the bonebreak in the current skelmesh system does not appear to affect weights in anyway from reading other threads. Not sure if thats accurate but ideally it gives better results. Have needed this badly in Unreal 4 for non death dismemberments on organic creatures.

If you need any assets or project build to work from we have one setup on perforce and have a proper mesh setup to use with swing trace collision if you wanted to use it as a testing ground along with all assets required to replicate collision and phys gore gibs.

Enemy is set up like so with pre made gore caps on every limb. We are blueprint only right now.

Aesthetic:

Hey, that Zombie looks pretty sweet! I certainly wouldn’t mind having an asset to play with, though I’ll probably just gorify the MakeHuman mesh for the actual tutorial so I can distribute it and also explain a little bit of the process behind making a gore mesh.

If you want to tell me what Unreal version and what platform you’re on, I can quickly throw together a plugin to give you BreakBone functionality. It’s actually fairly trivial to expose it to Blueprint… the difficulty (and my hesitation) comes in supporting multiple Unreal versions on multiple platforms for a plugin. If you’re stuck, though, I can compile a binary plugin for you for Windows, Mac, Android, or iOS. If you’re supporting console, I can’t really help, as I’m not a licensed developer on any console platforms, though I could give you the plugin source.

Yeah I would be happy to get that and test this out in our build. We are on the latest version of Unreal 4.10.0

Would really appreciate any help to get this exposed and working, we have been waiting since beta for EPIC to put this in heh. Also any help you need testing or showcasing I would be happy to help for your plugin or tutorial.

I will PM you my info or you can link here. Thanks!

I’d also love to have the bone-break plugin for 4.10.

As far as having to support multiple versions - you could always wrap your proprietary stuff into your own DLL and then just leave the UE4-interfacing code open.

I’m not worried about proprietary stuff. :slight_smile:

I’ve created a plugin, working on building platform binaries now, will post when they’re done.

I didn’t expect the level of interest in this. I’ve gone ahead and created a plugin that gives Blueprint users the ability to do bone breaks.

You can download it here:

To install it, just create a folder called “Plugins” in your project folder (if it doesn’t have one already) and then unzip that and drag the BoneBreak folder into the Plugins folder. The plugin adds two new blueprint nodes:

The Bone Break node does the actual… well… bone break, in case that wasn’t obvious. The first two pins are required. The first pin is the skeletal mesh to perform the bone break on. The second pin is the name of the bone to break off. If you want to apply force to the bone as it breaks, you can populate Impact Location and Force using data. You likely want to calculate this based on Hit Result data. The final boolean is experimental and untested, but allows you to ragdoll the broken part of the mesh. This is for situations where you break off a bone like the upper arm. There are two joints that make up the arm that you may want to be controlled by the physics system. Setting this to true should cause that to happen.

If you need the location of a bone for any reason, you can use the second node this plugin adds: the Get Bone Location node. It takes a skeletal mesh and bone name and returns a vector identifying that bones location in world space.

Let me know if you have any problems with it. It has both editor and game binaries for Windows & Mac plus game binaries iOS and Android, but it has not been extensively tested.

Note: This should work on Mac and Windows, both in editor and game binaries are include. I’ve also included, but not tested, iOS and Android game binaries. I have not included either editor or game binaries for Linux - sorry - but the source code is included.

@ - you are the MAN!

Now to embark on the long and difficult journey to retrofit my characters for this! Not being an artist this is going to be tricky haha.

Edit: Speaking of which, how should we prepare the character assets for this? Is it the same as the UDK process? If so, where do you specify that the weights need to use the broken version and such instead of the normal one etc.? Thanks :slight_smile:

This will be extremely useful! Thanks for providing this to the community. Next stop wound rendering :slight_smile:

http://www.valvesoftware.com/publications/2010/gdc2010_vlachos_l4d2wounds.pdf

@ - Maybe you can figure out how to take the basics I have of the L4D2 system to the next level, since you seem to have a handle on building gore caps and the like :slight_smile:

Check this out: WIP - Dynamic Left 4 Dead 2-Style Wounds/Dismemberment - Community & Industry Discussion - Epic Developer Community Forums

Mind blown. That’s my next hours reading set.

will you do a write up on your blog about this stuff? Your dissolve material write up was well put together. A bit off topic but if anyone is interested http://martiancraft.com/blog/2015/02/disintegrating-baddies/.

Glad to see people are excited about this.

So, to answer the questions:

  • Yes, you use this just like the old UDK BoneBreak. Typically, you’d have one or more gore meshes that have the limbs separated, the vertices weighted so that the severed parts are entirely weighted onto a single bone, and at the point of dismemberment, you add new topology to cover the holes, typically textured with bloody meat-like textures. Upon death or dismemberment, you hide the regular mesh and show the gore mesh and then call Break Bone.

  • I’ve read the L4D2 paper. IIRC, they do most of their cool stuff in the shader. I’m curious to see how you’ve done that in UE4, but I definitely can’t promise I can go further than you have.

  • My current plan is to do a series of video tutorials showing how to do the dismemberment - one for C++, one for Blueprint with the plugin I posted, and one showing how to prepare a gore mesh. I hope to have the first one done by the end of the Thanksgiving break, but no promises - it’s a hectic time of year. Unfortunately, doing these as posts for the company blog would just be a much longer process. It would take several weeks, possibly months, to get through the editing and approval process and get it scheduled in with the other posts.

Sounds super. I’ll stay tuned to this thread for sure.

hey there,
I’m the author of the original UDK tutorial so I’m obviously interested in this :smiley:

I’m glad to see that this is partially there in UE4 because any other method I’ve heard of doesn’t seem satisfactory. the L4D2 method seems to always completely destroy what you chop off - sever the head and then there’s no head to be found, which is good enough if you have weapons that explode, but not for blades that just ‘cut’

you mention preparing the gore meshes, how does that work?
in UDK it was super nice because there was this partial mesh weight swapping, which means that for multiple cuttable body parts the rest of the parts remain intact. for example in a model that you can chop off the arms and head from the body, if you chop one arm the other arm and the head are still properly stitched. are you accounting for this?

To be perfectly honest, I’m still researching the gore mesh. From what I’ve seen, very little UE3 functionality was removed when they moved to UE4. Some things were - where they relied on a third party library, or where they completely rewrote something - but a lot of the underlying core functionality is nearly identical (at least in terms of API calls) to UE3. So, I need to figure out if the partial mesh weight swapping is available and just not exposed to Blueprint, or if it’s simply not available in the engine period. From there, I’ll figure out an approach.

If the partial mesh weight swapping isn’t available, I’ll need to see if it’s something that is within my ability to add. If not, the only way to properly deal with it that jumps to mind would be separate gore meshes for each dismemberable limb, which is inefficient and less than ideal.

tl;dr: Still researching, don’t know for sure yet.