top of page

Exploring & Learning Niagara tentacle fx

Writer's picture: Will TzsFxWill TzsFx

Updated: Aug 5, 2023

19th June 2023

 

Learning & exploration aim:

  • To try understand the use of scratch pad & the flexibility of it

  • Create a tentacle fx using Niagara that can at least interact with environment geos (collision capability)

  • Attempt to nest various Niagara fx & other geo elements into a single BP actor asset with working control & parameters

  • Unreal material fx working with Niagara fx

Extra content showcase:

  • Houdini modeling workflow for Jimmy’s (alien) geometry body & tentacle mesh

  • Houdini rigging & simple eye animation imported into Unreal

As an artist that is more experience in Houdini than Unreal, learning to create an unreal fx as complex as this from scratch can be very daunting & very confusing.

With that, I will be following a existing tutorial as a guide. Everything provided by the tutorial, I will attempt to try and use it with a mix of my personal creative artistic touch to it to make it my own piece for the Niagara fx.

Link to youtube tutorial guide:

 

Mesh used for Niagara tentacle

Unreal preview with material fx applied

  • Material using world space sweeping gradient from bottom to top

  • Can use UV space sweeping gradient too – this will make the sweeping applied to every single joint segment of the tentacle instead of the whole tentacle

Simple model prep in Houdini

  • UV prepared this way for flowing techno lines material fx in UE5 in mind






 

Tentacle Niagara Fx Section

Overview of the tentacle Niagara emitter:

  • This fx is not possible without these custom scratchpad setup

  1. 1st (SM Setup) scratchpad module is for initial preparation setup where all the attributes can be pass down the chain

  2. 2nd (SM Particle Setup) scratchpad module is to prepare all the particle & intergrade the given initial attributes on them so that they can act like connected tentacle points

  3. 3rd (SM Make Frozen) scratchpad module was an extra personal module added after the fact for personal customized control & to be use with Jimmy (alien) for this particular case

  4. 4th (SM Root Ignore Force) scratchpad module is for preventing any added forces to ignore the tentacle root point

  5. 5th & 6th (SM Constraint Solver Setup & Cal Mesh Orient) scratchpad module are for solving the mesh orientation along the tentacle chain









 

Quick view of the mentioned Scratchpad module setup

SM Setup scratchpad module (img above)

 

SM Particle Setup scratchpad module

 

SM Make Frozen scratchpad module

 

SM Root Ignore Force scratchpad module

 

SM Constraint Solver Setup scratchpad module

 

Cal Mesh Orient scratchpad module

 

Setting up Niagara tentacle in BP

Jimmy (alien) body model brief workflow in Houdini will be explain in later slides too

Once the Niagara fx is setup & ready,

  1. A “BP” actor will be use for housing everything to come together and control in a single place

  2. Niagara tentacle fx is then duplicated another 7 more to be place at each of the tentacle connector on the Jimmy (alien) model, 4 on each sides

  3. The skeleton network was prepared in Houdini then exported into UE5 with animation (animation for the eyes to move), brief workflow will be shown on later slides

    1. There are joints prepared at the tentacle connector area to be used for Niagara parenting

 

This is the network setup for all 8 tentacles. Its just a typical setup for general parameter ctrl on the BP itself.

 

Quick view of the network setup for all 6 steam & heat distortion Niagara fx. Another typical setup for general parameter ctrl for BP itself like what was done for the 8 tentacles

 

Road block & struggles faced for Niagara tentacle fx

  1. By default when creating the Niagara tentacle, the natural gravity force will pull everything down & the way it was setup, the calculated orientation of the segments are also naturally pointing downwards towards the next neighboring points.

  2. This brings me to the point where I struggle the most.

    1. I wanted to add an option where I can control the root point orientation at will

    2. Or making it even more robust where I can control the 1st few initial point count with absolute orientation that can be tapper off down the segments

    3. And if possible, to have the option to toggle on / off this function.

 

*NOTE* collision mode is using GPU Distance Field type

Another unfortunate issue that can occur is the tentacle breaks when the tentacle’s collision is forced into the environment collision too much.

This causes the tip of the tentacle to suddenly jump to world origin position (0,0,0) & get stuck there permanently.

These broken tentacle then might disappear suddenly if the collision is forced into over colliding with other collision.

  • Issue will be presented in video sample above

 

Current temporary solution for Niagara tentacle fx

  1. Current solution to solve the tentacle root issue I can come up with for the time being, using the SM Make Frozen to apply some frozen ID attribute for the root point

  2. Then use Linear Force to apply a constant directional force to fake the root permanent orientation. Using a curve to only apply this force on the root point only

 

Not ideal result that occur using this solution is that the tentacle root does have occasional sudden glitching effect to it. Sometimes very pronounce, sometimes slightly subtle.

  • Issue presented in video preview above

 

Current finished result of Niagara tentacle fx

 

Future aim for Niagara tentacle fx

  1. Will continue to research, learn & understand more about Niagara.

    1. Would like to find a more robust permanent solution for the 2 issues mentioned for this Niagara Fx

    2. Continue to explore & learn more into scratch pad modules

  2. Try on this fx on other applications or enhance this further for more adaptable uses

    1. Like adding a blendable control which allows more custom & finer control how the tentacle swings / bend but still able to react with dynamic simulation at the same time

 

Extra quick run through of other sections of Jimmy (alien)

Body modeling section in Houdini

  1. The model was quickly prepared in zbrush to get the overall form & silhouette out to Houdini

  2. In Houdini, the segment lines details are achieved with a semi-procedural way







 

stage 1 (img sample left)










stage 2 (img sample left)












stage 3 (img sample left)












  1. Using various curve, shapes & slicing grids approach to slice the main body into different segments

  2. After slicing, using for each loop approach. For each of the segments, convert them into VDB SDF mode, apply smooth edge & some extra VDB Booleans operations to get extra details & segment lines

  3. Convert the VDB voxel back into geometry mesh for normal map baking

 

stage 1 (img sample left)













stage 2 (img sample left)












stage 3 (img sample left)

  1. Low poly was quickly done by turning the high poly mesh back to VDB to fuse everything into a single mesh with smoothing, then convert back to geometry mesh

  2. The mesh is then used as a base to generate a mid to low res geometry using a custom node in Houdini (does the same trick like Zremesher but in Houdini), followed by a quick UV unwrapping

 

Body modeling section in Houdini

  • The rest of the model parts are quickly done in Houdini too to complete the body model for Jimmy (alien)









  • Rigging is also done entirely in Houdini with semi-procedural approach using KineFx in Houdini











  • Network overall view






















  • Close up 1



















  • Close up 2
















  • Simple eye animation preview

 

Updates: 8th July 2023 – updates for Jimmy (alien) Fx

Adding aim / look at feature to Jimmy (alien) – aim at camera / 3rd person character

Goals & aims:

  • The goal / aim of this update & exercise is to add an aim / look at feature to Jimmy (alien)

  • Upon begin play, Jimmy (alien) will start to adjust its orientation to aim the 3rd person character / camera in play

  • The rough target result is to somehow achieve:

    1. The main body of Jimmy (alien) will orient to aim at the player in a ease-in / ease-out manner

    2. On top of the body orient to aim at player, an option to trigger this aim feature when the player get detected by a set bound radius would be ideal

    3. In addition to all that was mentioned, the eyeball will orient to aim at the character independently from the body itself. The idea is to let the eyeball react (rotate) faster than the body when orient to aim at player.

Once again, this is slightly outside of my knowledge for Unreal, I will be using some guide & tutorials from the internet.

 

Adding aim / look at feature to the main body 1st

  • We need to 1st prepare a simple logic, 1 for the ease-in & ease-out aim feature, and the other will be the detection trigger radius

  • This (Img above) is the setup for ease-in & ease-out aim feature

  • Unfortunately, I’m not knowledgeable enough to understand why this would fail when the get player camera manager is used instead of the character reference

 
  • This (Img above) is the setup for detection trigger radius

  • Once again, not sure why this would fail when the get player camera manager is used instead of the character reference

  • I assume if the get player camera manager is used, the network might need to be tweak & setup slightly differently to work. Will look into this in the future if there are free time available

 
  • Once everything is setup, it is then piped into begin play network for this to take action

  • This is where I assume this network will be different if the get player camera manager is used in the earlier network

 

Adding aim / look at feature to the eyeball

  • The network for adding this aim feature to the eyeball is a bit more straight forward & slightly simpler

  • The downside to this current solution I can come up with for the eyeball, is that upon begin play, it will forever aimed at the player. Even when the body stopped orienting / aiming at the player, the eyeball will keep being aimed at the player

    • It would be great to know how to apply this feature with the detection trigger radius option as well

 

Current finished result of aim / look at feature on Jimmy

 
  1. Overall, I’m quite satisfied with the current achievement & result of this add-on feature. Learnt a lot from this exercise. However, points below explains my struggles

  2. For some unknown reason, when this aim / look at feature was applied to the earlier / original version BP for Jimmy (alien). It did not work at all. I could not figure out why this is the case

    1. Due to that, I had spent 1 to 2 hours testing and trying to figure out what is causing this. Sadly, I had not figured out why this is happening

    2. After that, an additional 1 to 2 hours was spent creating a new BP from scratch where the aim / look at feature was added which for some odd reason, it does work on the newly made BP [if one day, you see me bald, now you know why]

    3. This issue will be presented later in a video below, which shows 2 small test BP eyeball newly made that works, and the only one that does not work (stays static) is the one on the far left side of the video

  3. Keen to learn & find out how to apply the trigger detection option on the eyeball orient aim as well, which is where I’m quite lost at the moment

  4. Keen to know how to make this network more adaptable, for instance, if instead of wanting this aim feature to only work on 3rd person character, can it automatically aim at any actor with a camera that the player is currently actively controlling?

 

38 views0 comments

Recent Posts

See All

Comentarios


bottom of page