User Tag List

Results 1 to 38 of 38

Thread: Denny's Research and Development

  1. #1
    0

    Denny's Research and Development

    This is my one stop shop for all future mini projects, which I will do to become more adept with UE4. I work as a character rigger and animator during weekdays and have worked a lot with Maya and UE3 prior to UE4. I am aiming to do personal projects with UE4, I do however need to learn the depths of the engine to avoid unpleasant surprises. Do not expect eye candy in this thread. The goal is to learn and understand the engine, not to amaze visitors with jaw dropping art.

    Whenever I create something new that I think is useful to remember, or just showing off what I have been up to, I will post it in this thread. My goal is to post something new every week, unless I have been too busy at work or when I finally end up working on a bigger personal project. With some of my findings I may post guides or tutorials to explain it in detail.

    For each category, the newest entry is at the bottom.

    Downloads



    Prototype content



    UE4 General Topics



    Character Rigging and Animation



    Unsorted



    Demo Reel 2015
    Last edited by Denny; 06-26-2017 at 01:50 PM.

  2. #2
    0
    Change default paths, and share content between projects, the unofficial way

    Warning: This is in no way a supported solution by Epic right now. If you use Junctions to share content between projects, be aware that a lot of testing is needed to ensure it is a production ready solution. I have not had problems myself yet, but there could be hidden issues. So tread lightly.

    In my first post I want to share a useful way of circumventing some current limitations with UE4 projects. In Windows, Unreal Projects are by default set to "MyDocs\Unreal Projects". Each project can have a unique path which needs to be set on creation. For The Vault however, you are stuck with a specific path. (..\Unreal Engine\Launcher\VaultCache) This AnswerHub question covers the problem.

    Where are the Vault files stored in the new launcher for 4.2.1?

    So how do we solve this? There actually is an old way of doing this, which is a hidden functionality usually used by sysadmins to administrate servers and workstations. What we need to do is create something called a Junction or Soft Link. (we'll use Junction) Have you ever created a shortcut to a file or a folder before? As you know, this is not the actual folder or file. Double clicking it will lead you to the real thing.

    So what is a Junction then? It is a fancy word for a path that is remapped to a folder on the same or some other harddrive. The main difference from a standard shortcut is that a Junction looks and behaves as if it is the actual folder, even for applications!

    You can watch the video to see the whole process. When you know how it works, it takes a few seconds to do in the future for anything you can imagine.



    To make it clear, an ordinary shortcut to Unreal Projects would look like this:
    C:\..\Desktop\Unreal Projects.lnk (the shortcut on your desktop)
    C:\..\Documents\Unreal Projects (the actual folder you reach through the shortcut)

    For the Junction example, this would be the actual folder on our second harddrive we want to "link".
    D:\Unreal Projects\
    ..\ContentExamples\
    ..\EffectsCave\


    If we create a Junction from that folder, it would look like this.
    C:\..\Documents\Unreal Projects (this is now a Junction)
    ..\ContentExamples\
    ..\EffectsCave\


    It may seem confusing at first. It looks like the folder is on C:\ when you open it. The path even says you are in C:\...\Documents! Don't let that fool you. Internally you are actually on D:\ drive. If we paste any file inside the C:\-drive path, it is actually written in the D:\-drive path. Did you know that Junctions can even be used for network paths? Using this method allows you to put your projects on a local server, like a NAS, to work on the same path as your colleagues do. It's still recommended that you use Perforce or SVN though, too easy to corrupt files otherwise.

    So how do we accomplish this? Usually this involves CMD commands inside windows, but there is a free program to do it easily. Install the program below, it may need a restart.

    http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

    1. Go to C:\..\Documents\
    2. Move the folder Unreal Projects to your second harddrive
    3. Right click and drag your moved folder and drop it back inside C:\..\Documents as a Junction.

    If you double click the junction it will appear as if Unreal Projects is still in your Documents folder, and it will do that for Unreal Engine as well! If you open the Launcher you will see that everything is still intact. Only difference is that all your project files now end up on your second hard drive. Any program running on your computer will communicate with the operating system to get files and folders. Programs does not understand the difference between a junction and an actual path. All it knows is if it exists or not, and if it is allowed to read it or not.

    How to share content between projects then? Create a folder for your shared assets. Then create a junction to that folder in your other project. I do advice you tread carefully when working with a shared folder like this, it is possible that there are project specific caches to keep track of assets and you may get weird behaviours. I have not battle tested this myself, but I would expect there are things that could break.

    I hope this is useful!
    Last edited by Denny; 06-21-2014 at 11:19 AM.

  3. #3
    0
    Generic Human Male

    To be able to prototype ideas quickly in the future I will need prototype content. I have modelled and rigged a generic human male in Maya, which I will use for player and AI purposes. I did not use the A.R.T. plugin. I believe a tool like that should be used after having a fundamental understanding of the underlying system.

    The character has a basic skeleton and deformation, with twist bones for shoulders, wrists and legs. I did not create a facial rig because I do not have the time, or the skill, to sculpt a proper face. I have considered doing a generic female too, but I don't know if I will actually gain anything by doing so. I think it's better to save that energy for proper projects later.

    Here are a couple of screenshots of the rig in action, with some poses in the engine. Animations are coming up later.


    Attached Images Attached Images   
    Last edited by Denny; 06-21-2014 at 11:22 AM.

  4. #4
    0
    Changing values during simulation can have unexpected side-effects

    This is directly related to this post I made on AnswerHub a while back. Note that the initial post is not the source of the problem, see the other comments.

    https://answers.unrealengine.com/questions/57502/possible-bug-animblueprint-state-event-not-firing.html

    Some animation related aspects, especially State Machines in Animation Blueprints, behaves erratically if default properties are modified during playback / simulation on an actor. If I understand the problem correctly, this is because some components of the actor resets on a default property change, which also causes State Machines to re-evaluate from entry point.

    So a headsup to anyone out there, don't use the details panel for quick debugging of animations on a placed actor. Or at least be aware that you may get odd behavior, You may ask why I was even doing this when I could just work inside the Animation Blueprint? It is because booleans are controlled by another blueprint through the Event Graph, I could not modify the booleans because they would reset back to the other blueprint.

    Note to self: Use other means to debug animations. Using simple level blueprint inputs is fine until an actual controller or AI is implemented to drive the values for me.

  5. #5
    0
    Unarmed movement in level

    I spent three-four hours animating some unarmed cycles in Maya. I did the Idle, Walk, Jog and Run without any references, just to get it quickly over with. They're not perfect, but good enough for prototype use.

    I'm using Root Motion in the first video. I am, however, not going to use root motion for most of my animations though... Because it is very limited in UE4 right now. The only way to get root motion is through AnimMontage and it doesn't allow nifty stuff like 1D Blendspaces. It also doesn't allow blending except when playing/switching a montage. This makes it hard to jump between animations without hitches.


  6. #6
    0
    Unarmed movement in 1D Blendspace

    Here's a video with the animations inside a 1D Blendspace. No root motion of course.


    More to come tomorrow, hopefully.

  7. #7
    0
    These look fantastic! Have you got any plans to release the base rig in the future?

  8. #8
    0
    Infiltrator
    Join Date
    Jun 2014
    Posts
    13
    Nice smooth animation blending there, man!

    I do feel like the arms go up too quickly--but maybe that's because I'm a lazy runner!

    I guess, let me put it this way, I feel like the arms would key later on in the blend than the feet--like he'd have to build up a bit more momentum before justifying their raising, I want them to hold off a bit longer. What do you think? Is that a preference/character thing? I'm a noob on animation stuff.

  9. #9
    0
    Quote Originally Posted by Skulburn View Post
    These look fantastic! Have you got any plans to release the base rig in the future?
    Thanks! A big 'maybe' on the release. You see, I have previously released stuff like this for free. I'm kind of tired of doing so. It is a way of devaluing my own work, as if it's not worth anything. If I am to sell the rig and/or the animations, I would have to spend a lot of work to polish the result to justify a price point, and to increase demand. Consider that there already is the A.R.T. tools released with UE4, people will expect a similar level of features and functionality. Then there is the Adventure Kit, which not only has prototype rigs and animations, but actual gameplay features.

    I could release it, as it is, and add a disclaimer that the point of the setup is for prototyping. I guess there could be a market where 'less is more'. There's also the question of what outlets to use for selling it. The marketplace is not open yet, there are some third party options, or even running my own.

    There is also the aspect of if I want to focus on creating and selling content for other developers, or if I want to finally finish a game by myself before I go to the grave. I have worked with games for quite a while now, but never actually finished a project on my own.

    It's still too early to say really, as I only have one rig and four animations. As it will continue to grow, I guess I will have a better sense of what to do with it. I'm happy for any feedback in this regard.

    Quote Originally Posted by Dannthr View Post
    Nice smooth animation blending there, man!

    I do feel like the arms go up too quickly--but maybe that's because I'm a lazy runner!

    I guess, let me put it this way, I feel like the arms would key later on in the blend than the feet--like he'd have to build up a bit more momentum before justifying their raising, I want them to hold off a bit longer. What do you think? Is that a preference/character thing? I'm a noob on animation stuff.
    Thank you! Like you say, it's a matter of preference or style. If you go and look at how people run and jog, you will see a huge variety of ways of how to run (and how NOT to).

    The animations were made individually without reference, so I tried to make them appear as close as possible to the real thing in my head. It's not the best way to work, but I kind of have a stupid pride of doing things without reference. But then, it's noticeable that I'm not at the level of a Pixar animator, and I never intend to be, so I will continue to focus on making games than spend time on mastering the art of animation. While flawless animations will add a lot of juiciness to a game, it is usually not worth spending the time needed to perfect a sequence when there is so much else to do. Can the player see that the guy over there is running, or that a person over there got sad or happy for some odd reason during gameplay? Then it's good enough for me.

    As a one man show, I'm following the mantra a friend once told me; "It should be good enough for TV". When he said it, Full HD TV were still not the norm and a lot of detail disappeared on screen. The point of the expression is to not spend more effort than what's really needed, most people will be happy with "good enough", while fellow artists will only be satisfied if you reach the level of a master. I have too long been blinded by the need to satisfy fellow artists and developers, forgetting that the reason why I got into this was to create an experience that others could enjoy. Those others are not primarily developers, so I should stop working myself to the ground to please the wrong audience.

    To be honest, most of the projects that I and some others appreciate are the ones who actually gets done and are playable. The best projects for reference, which I can think of, that has a perfect balance of quality vs effort, is what Hourences do. (See Solus for example) Hourences is very skilled at what he does, but he doesn't spend more time than is actually needed! He works smart, not hard. Look at his Solus videos on Youtube and you will see what I mean. He could definitely add more polish to the stuff he makes, but it is not necessary. Good enough for TV my friend, good enough.

    Ranting aside. In regard to the animation blending, where the arms start coming up, it highly relies on each animation and how many animations there are in the blend space. I believe there would need to be an extra animation or two in the blend space to add a proper transition. A linear blend can only go so far, it's not possible to change the blending of the arms and legs individually unless you change/add animations to the blend space, or do a lot of wizardry in the Animation Blueprint. Which frankly is not worth the effort, unless you're doing a game which highly relies on locomotion like Mirror's Edge.

    I also think that it's hard to judge the blend properly unless it is previewed in a gameplay scenario. There are a lot of cases when you must stop staring at the animation for what it is, and rather go with the flow and get a sense for how it feels. This is one of the unintuitive things of game development and animation that some people grasp late, sometimes you have to sacrifice animation quality to get responsiveness. That's why you can play some third person action games, where each sequence may look a bit funky on its own, but put in a gameplay scenario where the player only sees some sequences in the corner of the eye, it's perfect!

    Also, not to forget, there are no 'start moving' and 'end moving' animations right now. For example, if you go from stand still to running, you need to accelerate. These animations are a 'nice to have', rather than a need, so I will not likely make them for the prototype stage. Unless I feel like experimenting more with locomotion, which I kind of despise to be honest.

    Thank you both, again, for the feedback. I really appreciate it.
    Last edited by Denny; 06-28-2014 at 08:25 AM.

  10. #10
    0
    Testing Blueprint Interfaces for interaction

    So today I got curious about how to best approach generic interaction in a level. What would be the best way to just place a button and connect it to any other actor? I didn't know about Blueprint Interfaces, except their name, but after watching this tutorial I learned how awesome they are. Previously to this, I thought I had to use Event Dispatchers, or Cast To ObjectType + Function Call, to get what I want. This however, is very clean to work with.

    I managed to create a generic button, which I could connect to any level actor I want. Then I added a door, an elevator and a cannon which I could interact with. Then all I had to do was connect them to a button after placement in the level. Really nifty.



    I love this feature already.
    Last edited by Denny; 06-28-2014 at 11:54 AM.

  11. #11
    0
    Previewing movement in third person camera

    Small update. I wanted to see how my character looks like in a third person camera. So I modified the existing TPP example and modified the camera. I also added a normalization function to the movement vector so the character doesn't speed up when running diagonally. It is looking better than I expected.



    This is probably the last update for this week. I will hopefully have new stuff to show next weekend.

  12. #12
    0
    Getting gameplay data from web server

    There are currently two plugins available for doing JSON queries. (JSON Query and VaRest) That is, get JSON data from a web server. I used Stefander's plugin to get a basic value and apply it to gameplay.

    For this test I decided to just give my character a funky hat based on a number, which I get from a locally hosted PHP server. Pretty fun to be honest.


  13. #13
    0
    Blending/Overdriving poses using timeline curves (Overgrowth Style)

    After seeing the GDC talk by David Rosen a while back, I tried to recreate the way he blends between poses using bouncy easing curves. He overdrivies the pose value, greater than 1 (100%), to add extra bounce. From what I have seen, it is not possible to blend a pose past 100% in UE4 out of the box. I have not looked into the source code of UE4, which makes me uncertain, but I think UE4 uses Quaternions to blend between poses. Which may be the reason it can not overdrive. I bet the overdrive needs to happen directly on the euler rotation values.

    I messed with this a little bit a week back, but put it down. After seeing a few threads popping up about this subject on the forums, like this one, I could not resist jumping in and try to implement it properly again. While it looks messy, I think it should be cheap enough to implement as there is mostly additive data being calculated.

    Last edited by Denny; 07-15-2014 at 08:27 PM.

  14. #14
    0
    Easing functions in Blueprint

    In relation to the previous post, I wanted to see how much work there is to implement a generic easing function. Referencing this article I recreated the easeOutElastic effect. Pretty painless to be honest. I'm probably going to recreate a set of easing functions, unless Epic decides to implement one for us.


  15. #15
    0
    Awesome work Denny!

    I get the feeling you're perhaps planning on a project with melee combat down the road?

    Anyhow, looks really good. I especially like the Overgrowth style animation blend, that's very cool.

    One thing I think you could do to make it pop more and to get around the lack of blending past 100% natively is to blend in physics weight using the same bouncy easing (maybe make it so it drives past 100% and the more it's past there, the more physics weight). That would require setting up a PhAT asset for the character and tuning it to look good though. It's not too bad (there are tutorials) and I'm sure being an animator helps with that hehe.

  16. #16
    0
    Thank you n00854180t. I definitely want to do some game with melee in the future, but it is not on the road map right now. A sword just happened to be the easiest prop to model and pose with.

    I've worked with PhAT before in UE3 and doing what you suggest may not be as reliable as using easing functions. I think the biggest problem would appear when you want to use physics for other behaviors on the character and it is already occupied by the tweening process. It is a good suggestion though, I have yet to dabble with PhAT in UE4 and I think there are some tricks worth trying out, like blending dying to ragdoll.

    Thank you for dropping by.
    Last edited by Denny; 07-16-2014 at 08:25 AM.

  17. #17
    0
    Blueprint Easing Function Library

    I could not resist spending a few hours implementing an easing library. I think I used pretty much every easing resource available on the web for reference. I don't take credit for the math, only the implementation.

    The functions use an input Alpha value, expecting a value between 0.0-1.0. Output is a value that starts/end at 0.0/1.0 with some overdrive as seen in the video. The only exception are the elastic functions which also has a parameter for frequency.



    The function library can be downloaded below for UE4 4.3.0. Instructions can be found inside the ReadMe file.
    http://dennylindberg.com/downloads/ue4/blueprint/EasingFunctionLibrary.zip
    Last edited by Denny; 07-16-2014 at 11:50 PM.

  18. #18

  19. #19
    0
    Promoter
    Join Date
    May 2014
    Posts
    173
    Nice, this is handy, thx!

  20. #20
    0
    President, Raikoh: Enjoy!

  21. #21
    0
    Promoter

    Join Date
    Mar 2014
    Posts
    265
    Hey, nice work! Thank you!

  22. #22
    0
    Very nice man, this will help my melee project alot :-)

  23. #23
    0
    Hi Denny,
    I was looking for a solution to use easing in my blueprints. Your library solved my problems.
    Thank you!

  24. #24
    0
    redbox, TheOneWolf, Malheiro: Thank you for stopping by.

    In regards to this thread, sorry for the lack of updates. I have been busy with my day job and freelance in my free time. Downtime is important so I'm using the few hours I have left to just relax.

  25. #25
    0
    Maya Tutorial - Setting up an automated knee

    This is not exactly UE4, but it can very well be used for any characters for a game. If you're interested in rigging I recommend watching this tutorial for how to do a stable automated knee setup for IK legs.


  26. #26
    0
    Maya Tutorial - Using dynamic rotation pivots in your rigs

    Another Maya rigging tutorial. Showing how to work with dynamic pivots. I am just about to finish up some freelance tasks which has kept me busy for the last few months, so I can get back to UE4 now.


    (60 fps available when 720/1080 is finished processing)

  27. #27
    0
    Some really good stuff here Denny.
    Been fiddling with blending/overdriving poses based on your "Overgrowth Style" example above.
    Shows promise

    Thanks!
    Rule#21: Be polite, be professional, but have a plan to kill everyone you meet.


  28. #28
    0
    Quote Originally Posted by Denny View Post
    Blueprint Easing Function Library

    I could not resist spending a few hours implementing an easing library. I think I used pretty much every easing resource available on the web for reference. I don't take credit for the math, only the implementation.

    The functions use an input Alpha value, expecting a value between 0.0-1.0. Output is a value that starts/end at 0.0/1.0 with some overdrive as seen in the video. The only exception are the elastic functions which also has a parameter for frequency.



    The function library can be downloaded below for UE4 4.3.0. Instructions can be found inside the ReadMe file.
    http://dennylindberg.com/downloads/ue4/blueprint/EasingFunctionLibrary.zip
    Very nice man! I'll definitely find some use for this, visualization is sweet too
    Game Developer @ LODZERO - My Twitter | tomlooman.com UE4 samples & tutorials | C++ Survival Game (Open-source template)

  29. #29
    0
    Very useful, thanks for sharing!

  30. #30
    0
    Thanks for the feedback fellas!

    Sorry for not doing any updates for a while, life has been super busy. I get my daily UE4-fix at work, so there's not much left to do when I get home. Hopefully I can show some interesting stuff in the future.

  31. #31
    0
    I would love to see some more in-depth Maya related unique content using ART or a custom solution

    Great stuff anyway, really nice RnD

  32. #32
    0
    Thanks Nicolas! I'm going to be honest and say that I will likely never touch ART. I think ART and the whole "default human skeleton" thing might have been one of Epic's worst decisions, because it locked away several workflows that was previously possible in UE3 and now is impossible. As an example, try sharing an animation blueprint with two characters of different skeleton assets and you'll see what I mean. I won't go on a longer rant than this, but if I ever am to make more Maya videos, it is going to be done using conventional methods in Maya.

  33. #33
    0
    Quote Originally Posted by Denny View Post
    Thanks Nicolas! I'm going to be honest and say that I will likely never touch ART. I think ART and the whole "default human skeleton" thing might have been one of Epic's worst decisions, because it locked away several workflows that was previously possible in UE3 and now is impossible. As an example, try sharing an animation blueprint with two characters of different skeleton assets and you'll see what I mean. I won't go on a longer rant than this, but if I ever am to make more Maya videos, it is going to be done using conventional methods in Maya.
    Well, this might interest you...Miquel Campos released today mGear, a rigging framework I used A LOT in Softimage...and its soooo gooodddd!!!!

    Try it, you wont be disappointed

    Honestly I'm really eager to see some tricks in Maya related to rigging ( with or without ART, doesn't really matters ), especially because I'm about to attempt in recreating Naughty Dog The Last of Us rigging style, for both facial animation ( combination of both blend shapes and joints ) and body rig setup ( proxy bones for wrists and clothes UE4-driven animation ), so some nice tricks will be highly appreciated

  34. #34
    0
    Naughty Dog and Bungie always do god-like things with character rigging and pipelines. Studying their methodology more would be fun, but making it look anywhere as good is going to take a lot of hard work. I would love to tackle such a project, but usually it falls short because there are no great character models to work with.

    Whenever I have free time I may look into Miquel's toolset. I personally don't like jumping into other frameworks if I am capable of creating a rig from scratch myself. I already have a lot of tools that I have created myself to streamline my workflow, specifically for games, so I don't know if Miquel's toolset will help me much. It seems great for movie production, hopefully it's good for games as well. In the end we're still in the same spot as with A.R.T.

    I believe that every game should have a custom workflow catered to it. Even if it may be tempting to use an existing solution, it is important to balance the pro's and con's before using it. There are so many technical aspects that need to be setup correctly for an engine.

  35. #35
    0
    Animated interpolation with bounce

    I created this video as a reply to this AnswerHub thread. It shows how to interpolate an object to follow another with a bounce. Might be useful to some of you.




    A candle stick

    In the video I happened to use a model I recently made to practice high poly modelling and then baking down to a low poly object. So I chose a very basic prop. I made the UVs so I could add any material I wanted to the mesh without distortion. The materials in the image below are default ones by Epic, but the mesh, LOD's and normal map by me. It was a great learning experience to get clean normal maps into unreal.

    I used Maya to create the models and Allegorithmic's tools, using the Maya scripts, to bake the normal map.

    Name:  Candlestick_003.jpg
Views: 1098
Size:  75.6 KB
    Name:  Candlestick_002.jpg
Views: 1093
Size:  54.4 KB

  36. #36
    0
    The reason why I haven't been so active here in this thread is because we just released our new game! Another thread already got started, so you can read about it below.

    Guardians of Valor (official thread)
    Last edited by Denny; 06-10-2015 at 12:08 PM.

  37. #37
    0
    My latest demo reel. Has Unity 5, Unreal Engine 3 and Unreal Engine 4 content.

    Last edited by Denny; 07-07-2015 at 03:32 PM.

  38. #38
    0
    Student project - Small game with randomized rooms

    I recently finished a student project for a 3D course. I made an attempt at generating random rooms with different themes, but with the catch that all meshes in the room to be merged at runtime to reduce draw calls. The game features crude mobile style graphics. You can download the playable build below.

    Download playable build (.zip, 76 MB)


    The reason for me attempting this is because I have another top-down project in the making, where I want to generate rooms and reduce draw calls. The hope is that I can re-use this prototype to produce a proper system for merging content.

    I made all the models in Maya and the textures in MS Paint. Some textures were photo sourced because I couldn't be damned to hand paint such a huge area. I also created the materials, particle effects and fire/light effects. Apart from that everything is programmed or made in blueprint, even the animations are procedural. I didn't use any existing classes except Actor. The whole game is contained in a single level blueprint.

    I merge meshes during runtime when the room is spawned. I am quite happy with the system as I support a recursive structure. The floor, walls and ceiling are separate classes which return generated mesh data. I could potentially generate a whole level using recursion if I spent time building the content for it.
    Last edited by Denny; 06-26-2017 at 01:49 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •