Unreal Engine 4.26. Alembic Hair. Q&A Part 4. Official answers from the community.

Jan 22, 2021 11:34 · 2303 words · 11 minute read

Hello everyone! With you - Andrey Krivulya Charly And this is the next series with official answers from “Epic Games” regarding “Alembic Hair” and “Grooming Plugin” in “Unreal Engine 4”.

00:15 - In this video - I will answer such questions.

00:18 - About eyebrows and a 32bit groom-mesh. Let’s talk again about the problems with exporting “vertex paint” from “Xgen”.

00:25 - Let’s learn how to check the channels - “BaseColor (Per Vertex)” and “Roughness”.

00:29 - Let’s talk about “Alembic Viewer”. And is there a possibility to cache animation hair from other applications? What should be considered when exporting from “Houdini”? How much hair is optimal and how to optimize them in the “viewport”.

00:42 - Does Epic Games plan to support “mGPU”? Are you ready to absorb some interesting information? Then let’s go.

00:49 - Also, if you want to support this channel: Then write a comment.

00:53 - Like this video. Subscribe and share this video on social media.

00:57 - This is very important for its development.

00:59 - Buy any of the plugins from the links in the pinned comment.

01:03 - Also - buy any of the models from my “CGTrader”, “Artstation” or buy any of the prints there.

01:10 - So. This video was published with the support of Alexey Savchenko.

01:14 - Olesya Primakhina. Andrey Dronin. Stas Starykh.

01:18 - Charles and the entire “Unreal Engine” community.

01:20 - And also - Simon Barrionuevo and Nick Rutlinh.

01:23 - So that’s it. If you are actively developing something in the “Unreal Engine” and you have questions about licensing, the development of your projects, or cooperation with the “Epic Games” company, then you can contact Alexey Savchenko.

01:36 - He has a Youtube channel, the link to which I left in the pinned comment.

01:40 - There is a lot of useful information here on all these topics.

01:43 - Many interesting interviews and so on. Alexey releases videos every day.

01:48 - As for Olesya Primakhina, you can refer to her on licensing the engine for games and enterprise.

01:55 - The easiest way to find her - is on Facebook.

01:57 - The link was also pinned in the comment. Andrey Dronin is the editor of the UE4 Daily magazine.

02:03 - There you will find all the most interesting with regards to this engine.

02:08 - Stas Starykh is the creator of the “VR Professionals” channel and the consultant for the “Unreal Engine 4”.

02:13 - Simon Barrionuevo shared scenes for answering questions.

02:17 - And Nick Rutlinh created an excellent hair and wool shader tutorial.

02:22 - So. Last time I already answered a question from Christian Hecht About the problem of grounding the eyebrows to the head and told how to solve it.

02:30 - Also, after I received an answer - I wrote such a message to “Epic Games”.

02:34 - I was hoping for a real solution and want to ask.

02:36 - Are you planning to improve 16-bit limited precision for future versions? Or is it possible to force it manually - to work 32bit? Reply from Charles: “There is no option for the 32bit version to fix this problem. ” The only known solution for this is the one mentioned earlier.

02:56 - We have a prototype solution to fix the problem.

02:59 - But unfortunately - we didn’t do it in 4. 26.

03:03 - On the next question, which I think - you also remember from the previous video…

03:07 - About the problems of exporting “vertex paint” from Xgen using a script.

03:10 - I got another answer. It sounds like this.

03:14 - I’m not fully sure if this is something that the script support at the moment (per-vertex attribute).

03:20 - The main intent was to have root UV exported.

03:24 - David should be able to confirm. You can verify if those attributes are properly transferred to the engine with the view mode: To do this, use commands.

03:34 - To check “Base Color (Per Vertex Color)” r. hairstrands. strandsmode 9 A for “Roughness” r. hairstrands. strandsmode 10 If this is not the case, then you can probably also inspect the exported alembic with an alembic viewer on GitHub.

03:52 - And he gave a link - https://github. com/alembic/abcview and check if the attributes are there or not.

03:56 - If not then you will need to update the script to support that.

04:02 - So, we check “BaseColor” with the command in the console - given by Charles.

04:07 - As you can see, the color I exported in the previous tutorial is not displayed.

04:12 - Why I need to check “Roughness” I honestly did not understand, but I also used the command that Charles.

04:17 - By the way, to return to normal mode, you need the command: r. hairstrands. strandsmode 0 As you remember from the answer - in this case, you need to check this “Alembic” file using the “alembic viewer” which can be downloaded from the link on GitHub.

04:32 - If you did not find the necessary attributes there, then you need to modify the script that they did.

04:38 - So. I tried to follow the link and download the archive given there.

04:42 - But I didn’t find the executable in the folders.

04:44 - And as I understand it, I need to do some kind of compilation there.

04:47 - That is, to have programming skills that I do not have.

04:50 - In the end - I wrote Charles about this and asked for help.

04:54 - Also, asked how to modify “Xgen Export Script” in this case? Answer from him…

04:58 - These scripts do not officially support and are only provided for reference.

05:03 - A few possibilities I can see: You can maybe find some premade binary available on this.

05:09 - You can maybe also export your alembic into ASCII format to inspect its content and see if there the tags are there or missing.

05:19 - Maybe ask someone from your community to help on this for this specific asset? Fair? I’m not interested in wasting time on this.

05:28 - Something there to program and change scripts.

05:30 - When in “Ornatrix” it is done in one click.

05:32 - Therefore friends - in the next lessons I will show only “Ornatrix”.

05:36 - I’m not interested in a product that doesn’t develop.

05:39 - And as you know, support for “Xgen” ended back in 2016.

05:44 - So let’s move on to the next question. This is followed by an interesting question on Youtube from Zhonghe Gao He wrote such a post.

05:53 - I work in film and television animation, and I needed to animate with the UE4 engine, and the appearance of Groom gave us a better, faster process.

06:04 - But unfortunately, we needed to import the externally finished hair animation into UE4.

06:09 - Currently, however, the UE4 groom does not accept the Cache.

06:12 - It’s just Niagara’s kinetic solution. However, there are still many uncertainties in the real-time dynamic settlement of film and television animation, including all the problems such as interweaving and flying around.

06:26 - Therefore, for us, is there a feasible scheme to import the external hair movement cache into UE4?” Answer from Charles: This is indeed a recurrent ask from VFX/linear media firms. We don’t have a good solution for this yet.

06:43 - Some external partner implemented some custom solution for supporting this. It roughly boils down to: 1. Importing a groom for each cached frame 2. Streaming & replacing the position of the strands by the cached position during interpolation steps.

06:59 - This is not an easy task, and require engineer.

07:02 - I can’t tell you when, but this is something we will likely support in the future.

07:07 - So I think you remember from the previous videos - a question from Gabriel Arnold about “Houdini”.

07:13 - And his dialogue with Nick Burkard. So, Nick finally provided the required “Alembic” and was researched at “Epic Games”.

07:20 - In the end - I got a detailed answer with “tips & tricks” from Anousack Kitisa And it sounds like this.

07:26 - We are currently working on a solution to help export grooms from Houdini. We will have more details early next year(2021) As for the groom Alembic you provided, it imports fine as is but here are some remarks about the imported attributes: First.

07:47 - It’s missing the groom_version_major and groom_version_minor attributes. These don’t affect how the groom is imported but let us know if the groom Alembic complies with the specifications.

07:58 - The width attribute is correctly imported as a per-vertex attribute, but the values ​​are constant.

08:03 - In this case, it is equal to 1. If you intend to have width varying along the strand, you’ll have to export the per-vertex width.

08:11 - The groom_id attribute is correctly imported as a per-strand attribute, but the values are constant (in this case, 0). The “ID” must be unique for each hair.

08:21 - Note that you may not even need this attribute Since it is used - not by itself, but with other attributes.

08:28 - groom_skinprim and groom_skinprimuv are not valid groom attributes.

08:34 - If groom_skinprimuv is supposed to be the groom_root_uv, it should be converted to 2 floats exported into the groom_root_uv attribute.

08:44 - Next, I decided to ask about the maximum amount of wool or hair in “Unreal Engine 4. 26”.

08:49 - This question worried me a lot after the release of “Weta Meerkat Demo”.

09:05 - The question I posted to Epic Games. Usually for my renders in Arnold - I use 150K-400K hairs for best results.

09:15 - This is thin, lifelike hair. Sometimes for fur it is 1 or 2 million.

09:20 - For a good fluffy coat. For example, I showed them this dog in which I used 4 million hairs.

09:27 - And said. I want to import it into “Unreal Engine”.

09:29 - And I asked what about “Unreal Engine 4. 26” - what are the limitations? And if I import 4 million hairs into it, how can I optimize it with “LODs Clusters” and so on? Any advice, please.

09:43 - By the way, then a detailed article about this project was not published yet - in the blog “Unreal Engine”.

09:47 - I will of course give a link to it in a pinned comment.

09:50 - And there you can download the project and see how they did everything.

09:54 - It was then that I asked this question, and about a month later this article came out.

09:58 - So, I think that you will still be interested in the answer from “Epic Games”.

10:02 - And it sounds like this. This is a good question :) It really depends on what you are after.

10:08 - If this is for actual real-time usage, you probably don’t want to go too high as performance might suffer quite a bit.

10:16 - If it is only for having good looking image, then the threshold is probably higher.

10:21 - You need to consider both the number of strands, but also the number of CVs you have on your curves.

10:26 - If your fur is relatively short (mouse/cat/… ) you can probably go way larger longer one.

10:33 - Human hair, bull and others. This is because the cost partially boils down to the number of segments which need to be processed.

10:42 - In term of number of hair and wool, the meerkat sample video we released with Weta was about 400k for the meerkat, and 3M for the eagle.

10:53 - But this was for a linear movie, with a beefy GPU. So keep that in mind.

10:59 - Project “Weta” should work on 2080Ti without issue.

11:03 - As far as I know, “mGPUs” are not very useful in the context of “Unreal Engine 4”.

11:08 - And hence the hair. Since support for both distributed GPU work and AFR (alternative frame rendering) is not available.

11:17 - And not yet supported in “Unreal Engine 4”.

11:20 - As for 2xGPU support - as far as I know, at the moment - there is no clear plan.

11:25 - Another thing to keep in mind is the importer settings. For short fur with many curves you should probably use the ‘low’ quality setting for interpolation as there is no need for high quality matching metric, and this will shrink a lot the import/building time.

11:44 - As far as setting up “LOD” is concerned, documentation is coming soon with release 4. 26.

11:49 - You can add “LOD” to the “groom editor” by clicking on the plus button at the top of the toolbar.

11:54 - And set the decimation factor for curves and vertices.

11:58 - This will be enough to get you started. And we are trying to achieve at least one “LOD”.

12:03 - This is really a bit like the level of detail of a regular “mesh”.

12:07 - Friends, that’s all I wanted to show in this video.

12:10 - As I said - I try to make small videos in order to upload them to Youtube faster.

12:15 - So let’s dwell on this for now. I am naturally looking forward to new responses from the developers and I think that I will always have something to tell about this topic.

12:22 - If you have any questions - write them in the comments.

12:26 - Thank you for watching and wish you a good mood. .