Hello, I've been using AnyPortrait for about a month now and I want to share a few features that I want to have in its development. I wrote it one by one on YouTube, but I thought it would be easier for you to understand and control if I post it as a list here.
- We need All Meshes to Layers
- Preferences Tab (which contains personal preferences as default, and it should be saved)
- And more shortcuts! **
Up Arrow, Down Arrow = Hierarchy up/down and Timeline up/down (make it work wherever I click those windows)
Tab = Toggle between Hierarchy and Controller tab (or maybe other tabs?)
F9 = Ease Keyframe shortcut for selected keyframes
Mouse1 click doesn't work when I click 0, 5, 10, 15, 20 etc... frames in the animation timeline. Please make it work.
Auto bake in every 5 minutes. (Duration and on/off should be changeable in preferences tab)
Auto Keyframe always on (It can be changeable in preferences tab)
There should be shortcut for "Remove Mesh" and "Make Polygons". This is the tools that we always use.
Also don't limit yourself with these, please add almost every tool in prefences shortcut so we can edit the key ourself.
Auto Rig should generate mesh colors together with selected rigs instead of generating random.
Mesh vertex selection would better if it's work with mouse1 hold. Please check Photoshop's Lasso tool. (L is the shortcut) You understand it better.
Clipping Mask is very good to see work in the AP. But you may also consider Mask Tool in the After Effects or Premiere Pro. Mask Tool adds a vertex on the selected mesh, and when all verticles are combined, the outside is hidden. You must also put the "Inverted" option for this, this time selected verticles are hidden and the outside is visible. In this way, we can easily hide some meshes. Also, these verticles must be editable in the timeline. One of the best methods for blink animation.
Please develop more auto generated polygons. It should automatically generate web meshes itself. And we need these options for this tool; Mesh on/off, Expansion and Density. If you guys make it to add this tool, we don't need to spend more time on the creating manual mesh verticles. (Puppet Position Pin Tool/Puppet Starch Pin Tool/Puppet Bend Pin Tool are the most useful ones in the After Effects.)
I know, these are not easy to make it but I wanted to specify this to increase my and others workflow. AnyPortrait has much potantial and needs more development. I want to use AnyPortrait more efficient so please you guys please consider add these I mentioned. I don't expect you guys experienced if we compare with Adobe engineers but at least you can try it. Especially please add shortcuts for most common used tools :)
Oh then it's okay. It really is a unique feature, impressive! I'm also excited for the upcoming 1.2.7 update to see which features & fixes will come. My upcoming posts will continue on a new topic. Thanks again!
We are happy that you make a satisfactory result for you! :)
It's not a bug and doesn't cause problems for the keys in the Auto-Loop Keyframe to appear out of range.
It looks like that keyframe is out of bounds, but in the animation, if this is an Auto-Loop Keyframe, the interpolation calculation is done perfectly!
Don't worry about that.
If you read the tutorial page for the Auto-Loop Keyframe that we attached before, there is a description of the out-of-range keyframes you mentioned.
Please read the 3rd and 4th pictures and explanations on that page.
In other words, thanks to the dummy key outside the end frame, it is the true value of Auto-Loop Keyframe that a natural loop animation is completed without having to place keyframes in the Start and End frames, unlike other programs.
As a test, create a Loop animation using Auto-Loop Keyframe once!
You can easily understand the convenience this gives.
This fixed the issue on this eye. Thank you!
Okay then, I'm going to open new topic next time but one thing left about my last question... "Auto-Loop Keyframe" feature is nice but as I said, if I drag the first key, the last key exceeds the maximum framerate. (And it's locked, I can't move it manually) Isn't this cause a lacking on the flawless on the animation?
(Maximum frame is 60. But the last auto key is on the 66. frame)
1. Atlas Size is not automatically recognized unless you use the PSD file re-import function. But that's okay. :)
Except for a few features, Atlas Size is not used.
If you don't use the automatic mesh generation feature, it won't affect your work.
2.Oh, the animation is more natural than before! Looks good!
You asked about the movement of the inner vertices, yes, move the inner vertices in the center to make the eyes flat. That's exactly what we recommend. It wasn't wrong.
What you're concerned about is, if you move the inner vertices, the lower eyelashes deforms, but once I see it doesn't look weird.
If you want to prevent the lower lash image from being deformed, separate it into a separate layer. In fact, professional 2D facial animators especially divide the eye image into many layers.
(We refer to Live2D users' production process a lot.)
You can create more natural results by layering the whites of the eyes, shadows of the eyes, light, iris, background reflection image, upper and lower lashes, eyelids, etc.
Alternatively, you can add more vertices to the mesh to avoid unintended distortion. Try adding vertices to the edges like this:
Creating vertices as above significantly increases the total number of vertices, but has the advantage of allowing you to edit the shape more precisely.
And also, it is possible to add more vertices.
Of course, how many vertices you create should be decided appropriately by considering the characteristics of the project, execution performance, and quality.
As mentioned before, the vertices of AnyPortrait correspond to vector tools in AE. This is an inevitable structural difference as AnyPortrait was developed to run with high performance in 3D engines and games.
Based on the opinions of users, we can bring some of AE's ideas, but there are limitations due to structural differences.
We would be very grateful if you understand that AE is strong in video production, while assets like AnyPortrait and Unity engine are strong in real-time play.
3. We will check the vertical scrolling using mouse drag and improve it if we can.
You can select multiple keyframes using the Shift and Ctrl keys, so try using it instead.
Thank you for a good suggestion.
4. The keyframe created during the loop is a function of AnyPortrait called "Auto-Loop Keyframe".
It's not a bug, it's an AnyPortrait's original feature! (We love this feature!)
It is a virtual keyframe that has been placed for a natural loop animation.
You can see detailed instructions on the tutorial page below.
Thanks for any additional suggestions.
In fact, many of the contents of this post are recorded in our update plan and are awaiting development.
However, for other users, it is difficult to infer much of the content of this post from the title alone.
Conversely, we welcome you to write each new post on a different topic. It doesn't matter if there are a lot of posts!
It is more helpful to users of forums than having multiple contents in one post.
We would be very grateful if you consider this and use the forum.
As we mentioned, we will close this post once the issue related to "Blinking Eyes" is complete.
It just prevents new comments from being added, but this post is not deleted.
Do not worry about it.
3) Some advice in timeline.
We can select keyframes with this green selection which is nice. However, if I lower the mouse to select more keyframes, the green square gets stuck like that. Can you fix this in next release, maybe?
4) Here's my frame settings:
Loop (1) automatically adds frames to the beginning and end when it is turned on, really nice. But when I push the initial keyframe a little forward (2), the last keyframe exceeds the maximum frame (3).I can't move it manually because it's locked (4). How can I fix this?
1) I edited PNG atlas, it updated in AnyPortrait automatically. However, I set the Area Size manually, which takes time. Shouldn't it be automatically detect? Or is there any simplier way than manual? (It took some time to find the correct size as I gave the values my own guess) Marked as green.
And again... Thank you for your help with your detailed explanations.The pictorial representation in particular helps a lot.
2) Eye problem... I made the video again for your better understanding.
As you said, I kept the widths.It almost worked.
Here's the video link: https://vimeo.com/493015167
[0:00 - 0:19] This is how it should be. Notice the black line below the eye. There is no scale, just what I want. If we do not move the middle vertex, we can reach this result. However, unfortunately, that part of the eye is not hidden unless we lower the middle vertex.
[0:20 - 0:48] If I move down the middle vertex, notice the black eye line below, it becomes scale down.This causes a wrong view.
Here's another example in the AE. In fact, you can see how simple the correct eye animation with these two tools.My request is to please consider bringing these tools in future releases.
Yes I know, there have been a lot of comments on this subject and you have been very helpful to me.Your support is truly incredible and I am satisfied with it.I put "My Personal" in the title because there may be too many comments.Because opening a new topic for each thing would both crowd the site and perhaps disturb some users.But if you want me to continue with the new topic, just say it. If we are to do so, let's not delete this topic, because it contains a lot of information to help me.When I run into the same possible problem, I will probably come back here and apply what you just told. It contains a lot of information that will help other users as well.
If you edit the currently applied PNG image file, the changed image is applied to AnyPortrait immediately.
You just need to open the Eye mesh, modify the position of the vertices, or add more vertices.
Since each vertex has an ID, the information in the modifier is maintained, and you can modify the mesh without deleting the existing mesh. Of course, the shape has changed, so you will have to modify the mesh's Morph a bit in the modifier.
If necessary you will have to modify the Pivot of the Mesh, but the Mesh Group will recognize the changed Pivot position and make the Mesh stay in its original position as possible.
Or, if necessary, you may have to re-import the PSD file.
In that case, read this tutorial.
(Re-importing the PSD file is a rather sensitive task, so we recommend duplicating the character separately to avoid any accidents.)
Apart from the question, we wondered why you think "blinking the eyes with Morph" is "awkward like changing the scale".
And we determined that it wasn't a problem with the mask, but rather the cause of the problem with the shape of the blinking eyes.
Please read our brief description below.
(The description below only describes Morph, not Mask.)
The image above is a simplified representation of the character's eye shape.
We watched your video and reproduced how you made it.
Anyway, it doesn't look so weird to make the eye closed like above.
However, it will look different in the sequence.
As you mentioned, the character's eye appears to be "smaller" rather than "closed".
The reason is that the "width" of the shape of the eye that becomes the mask has become smaller.
Let's fix this.
When expressing closing the eye, try not to reduce the width of both sides of the eye.
Then, as above, a shape that is longer left and right than before appears.
In the continuous sequence, the modified Morph looks different from the previous result.
This is more real than before!
We think that the awkwardness you felt would have gone away a lot in the image above.
At this stage, let's finish with a separate mesh, such as eyelashes and eyelids.
Actually, this method of finishing by covering with another mesh is a production method used by other programs like Live2D.
(Or you can change the Alpha or Visibility of the mask of the closed eye so that the mesh is completely invisible after it is closed. It's your choice.)
This is the finished result.
This is definitely the result of closing the eye of a character that seems to be far from "scale".
Now it seems like we have delivered everything we can tell you.
More than that, we hope you can try it yourself and get the know-how.
Alternatively, it's a good idea to look for tips from other experts.
We hope this ends and you solve this problem.
P.S.1. In the previous explanation, we have prepared a separate Mask mesh and not the Eye. This is to explain to you the concept of the Clipping Mask accurately.
However, if you have divided the "character's eyes" into multiple layers, you can apply this method more flexibly. In fact, our team used the "Eye white" as a Mask in all examples and applied the "Iris or Light of the eyes" as a Clipped Mesh. That's how it described in our video tutorial.
Make it the way that suits you.
P.S.2. Currently, this post has too many comments, different from the original title.
Posts in the forum are also viewed by other users, so from that point of view, this post may be inconvenient to other users.
We will close the comments on this post once this last issue is resolved.
For other issues, please write another post with a specific title.
Please understand it.
Oh, I think I got it. Conversely, the eye white has to be big and the eye shape has to be a mask. However, I have already added this scene to Unity. I will edit the PNG atlas and make changes. But how do I adjust in AnyPortrait as eye stuff will change? Mesh setting, position etc.
Um... no, you made the opposite of what we told you.
Currently, in your work, "Rick Eye Mask" is clipped to "RickEyes", but vice versa, "RickEyes" must be clipped to "Rick Eye Mask".
The Mask layer should be "below". The order of the two layers is reversed.
↓Rick Eye Mask
Rick Eye Mask
Also, "Mask" should have the shape of the eye, and "Eyes" should have the image of the eye.
Also, it is "Eyes", not "Mask", that you need to prepare a large enough image.
Please read our previous description again.
As an additional tip, when making a motion to close the eyes, if you make it with only a mask, you won't be satisfied with it.
Consider an "eyelid" that covers the eyes.
You will make a more quality result.
It is also helpful to see the demo scene included in the AnyPortrait package.
Open up the "AP Tutorial Scene 3 Portrait" scene and you can see how the character blinks eyes.
In addition, please understand that we are currently very busy with development, so we cannot afford to produce YouTube videos.
However, we think that the previous tutorial video that was attached and the answers in this post have provided enough answers.
Try again, and we hope you get the results you want.
1) I added an orange object to be a mask on the eye.
2) But I see the orange mask, not the white eye & iris.
3) Control Parameter: (Half)
4) Control Parameter: (Almost Closed)
Yet, it still looks like scale down. It didn't work like you showed it.
5) Rick Eye Mask: Orange Object
RickEyes: White Eye
Since there is no normal mask tool, we are trying to do this with clipping mask, this both confused me and I could not do it properly. What am I doing wrong? Also, I think you should continue with YouTube tutorial videos. For example, if you show this, I think I will understand better.
Thanks in advance.
We have checked the video you have attached to Vimeo.
In our opinion, this is a really good situation to use Clipping Mask.
We have prepared a sample similar to this situation, so please read the explanation below.
Prepare 2 images.
A is what becomes a mask, which is the shape of the eye.
B is the image of the inside of the eye. Like your work, I combined the whites and irises of the eyes into one image.
The important thing here is that B is sufficiently larger than A!
(1) Create a MeshGroup and add each mesh. The "Eye" mesh (image B) is placed on top of the "Mask" mesh (image A).
(2) Because the eye mesh is large enough, the mask mesh is covered.
(1) Select the "Eye" mesh,
(2) Click the Clipping button.
(3) Now you can see the eye is rendered to match the shape of the Mask mesh.
Now let's make an eye blink.
(1) Add Morph (Controller) modifier.
(2) Add a Control parameter and register it to the modifier.
(3) Register the "Mask" mesh, not the Eye mesh, to the Morph modifier.
(It is important that the Eye mesh is not registered.)
(1) Select the Mask mesh
(2) Let's make the eye closed.
You can make the character only close the eye while maintaining the image inside the eye, i.e. the iris and white.
This is probably what you needed.
This is the finished result.
Because it is the result of the eye being closed by the mask, it shows a different result than the simple scaling you were concerned about.
The point of the explanation above is not editing the "Eye image itself", but editing the "Mask layer" below.
If you can create a Clipped Layer (not a Mask) with a large enough image, you can make the same result as a Normal Mask.
And this method can be applied equally to many other cases.
Please apply the above explanation to your work.
Oh, I wasn't know you did not able to watch the video. So I uploaded it to Vimeo. Please watch it, I need feedback directly from you about how to fix this. (And yes, I already watched the tutorial video that you sent)
We checked the video from the previous post, and the video from this post was not downloaded and could not be checked.
So, we will explain based on the previous video.
If the composition of the layer is changed slightly, the blinking of the character's eyes can be implemented with a Clipping Mask, which can lead to better results in some cases.
In fact, the reason we decided to develop a Clipping Mask instead of a Normal Mask was to express "the blinking of a character's eyes".
Please check the video below. (Check from 16 minutes 54 seconds.)
You should separate the "eye iris" into a separate layer, but the result will be better. You can see that this configuration is better especially when combined with other control parameters (eg eye direction, face direction).
Thank you for considering my suggestions. Of course, each user has a different workflow, but I believe that if these are included, it will make everyone's workflow much easier. You don't know how happy you will make me if you keep adding them with subsequent updates. I know it's not easy, so I wish you luck 😊
By the way, I attached a video into my previous answer. I'm stuck at the eye animation. Grabbing vertex and bringing them closer works the same as scale up or scale down.This makes the eye blink look wrong.The mask tool I added in the previous answer automatically hides the mesh partially instead of moving vertex. That's why this tool is so important. Do you have any idea how it look more realistic in the current version AnyPortrait 1.2.6? (2020-12-17 14-27-02.mkv)
Thanks for the comment.
Our team is sorry that AnyPortrait did not meet your expectations.
Since AnyPortrait is an asset of the Unity engine, we make a development plan assuming that AnyPortrait users will use not only AnyPortrait but also various features of Unity.
That's why AnyPortrait makes it compatible with Unity and other cool assets, rather than being an all-in-one tool.
(In other words, it is very difficult and inefficient for us to give up compatibility and implement them all as internal functions.)
So this development and support sometimes involve a bit of Scripting, and sometimes includes a description of Unity's features.
Instead of implementing all the requirements as internal features, we continually review Unity's upgraded features to meet the requirements, and we are ready to make AnyPortrait compatible with them, and we will quickly support users.
Of course, we will implement what is possible.
First, the automatic mesh generation function.
Fortunately, at the moment we are fully reimplementing the automatic mesh generation feature.
However, please wait a little longer for the Pin Tool.
The Pin Tool will come in handy, but we will start implementing it after considering the Pin Tool and its impact on performance when running in a game with many vertices.
In more detail, we have to consider how it will work when combined with Pin Tool and other modifiers or Vertex Morphs. (It's not that simple!)
As with our previous answer, there is a way to replace Normal Mask.
If there is an alternative method, we lower the priority of the work.
Currently, animation/effect presets are not considered.
Different users have so many different styles of work, and it is difficult to find a common pattern.
Please let us know if you have any effective preset ideas that will help many users.
We will collect opinions and reflect them in improvement.
(The "Wave effect" you mentioned is probably impossible. It doesn't fit AnyPortrait's system. Please check out our previous answer.)
As we've said before, there are a lot of inevitable differences as the core idea of AnyPortrait is somewhat far from AE.
Of course, we will do our best to develop and support as far as possible.
And actually, many of the other suggestions you have given before have been developed or are currently being developed for the next version.
Please look forward to it.
First of all, sorry for the late reply. Thank you for your help, but my coding is not top-notch so I don't think I can do these effects myself with the code. You as a RainyRizzle, the plugin developer, should present this to us users.
I say somethings over and over again because there are a lot of plugins that make our life easier but I can't see them in AP. And I don't know what to do.
The biggest shortcomings of this application:
- No automatic mesh vertex creation. He's just putting the four-pointed vertex. We need to check the vertex number and density of the users. (Creating all vertexes one by one every time we add a new portrait is a huge waste of time) (If there was a Pin Tool, this would not be necessary)
- No normal mask tool! There is no tool that is both favorite and the most important to use to hide things. Because of this, I have a lot of trouble with both invisible and some visible / partially invisible (variable) animations. I can't even.
Eye animation that would actually take a few seconds if there was a Mask Tool: https://youtu.be/7cEr1ya37WA?t=435
When done with Vertex, it takes both time and a wrong appearance:
- No preset effects. Like light, glow, wave effect.
I am used to using the interface (finally), but the animations I make without what I said above are always incomplete. Incomplete, incorrect looking animations.
I'll give you one by one answer to your questions.
1) Check the following cases that the image has become Blurry.
- When Bake PSD with Atlas, Bake Scale is less than 100%.
: If the size of the image file you are importing is very large, or the images in each layer are large, the size of the image may become too small when Bake Atlas.
When bake, try increasing the value of Maximum Atlas and set the size of Atlas to 2048x2048.
Please check the following link for details.
- Mipmap is on or the image is compressed.
: When importing PSD files from AnyPortrait, this problem does not occur by default, but the above option is turned on in Unity's default asset settings.
Check the following page.
2.1) AE's Wave effect seems to be possible because the target is a Vector image.
However, Unity's image method including AnyPortrait is a Bitmap method, not a Vector.
So it is difficult to implement the same way as AE.
However, if you use UV animation you can create a similar effect.
Currently, AnyPortrait does not support UV animation, so you need to write Unity's Shader and Script separately.
Also, to create UV animation, you need a separate pattern texture, not Atlas from PSD.
To create a UV animation, you can control the texture offset of the material with a script and increase or decrease it according to the game time.
We searched, and the following video seems to be helpful to you.
If you want to apply UV animation by importing pattern texture to AnyPortrait, write a similar script using AnyPortrait's API.
Using AnyPortrait's "SetMeshCustomTextureOffset" function you can apply UV effects to AnyPortrait's mesh as well. (Available only at runtime.)
(Adding UV animation functionality to AnyPortrait is currently pending.)
2.2) It is possible to add light effects.
AnyPortrait supports blending methods such as Additive, Soft Additive, and Multiplicative other than Alpha Blending.
If you even apply Clipping, you can create a result similar to the video of the link you attached.
For more information, please refer to the following link.
3) For the answer to the question related to Unity's UI Button, please read the explanation below.
Unity's UI Button is a function that works with Sprite Image.
However, AnyPortrait has a system that renders with Mesh Renderer rather than Sprite Renderer.
So you need to implement the click event differently than the UI Button.
You can create a button that is most similar to a UI button by using the following method.
Prior to work, if you want to move external objects according to the movement of the mesh or bone, you must use the Socket function. ( https://rainyrizzle.github.io/en/AdvancedManual/AD_Socket.html )
(1) Select the target mesh on the Mesh Group screen.
(2) Turn on the Socket option.
When you bake, you can see that a new Socket GameObject has been created.
Please use a Socket, not a mesh.
And, let's make it the same as the environment where the Button operates.
(1) Add a Canvas, and move the AnyPortrait character as a child of the Canvas.
(2) Add EventSystem.
This part is very important.
To put a character created with AnyPortrait on Canvas, you need to do a few steps.
Please refer to the link below to perform the process.
(Otherwise, the character will not render normally.)
Now let's write a really simple script.
After creating a new C# script, write as above.
(It is not necessary to have the same class name or Debug.Log())
(1) Create a new GameObject as a child of Socket. (I set this to the name "Button".)
(2) Add the Box Collider and the Script created above to the created GameObject.
(1) Set the size of the Box Collider.
(2) Make the area large enough to wrap the mesh.
(3) Connect the event listener and function you want to the UnityEvent property of the script.
Now run the game, click on the head and the event I set will be called.
In the above explanation, I set Socket to Mesh, but if Rigging is applied to your character, it is more appropriate to set Socket to Bone.
4) Breathing animation can be easily created using Vertex Morph.
There is a video tutorial on how to create a character's breathing motion, so please check the video below.
Since AnyPortrait is based on Unity, the features of AnyPortrait may differ in many parts from the method of AE.
We ask for your understanding of this.