Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FeatureRequest] Input: csv & fbx -> Output fbx_blendshape #13

Open
GermanCreator opened this issue Oct 27, 2019 · 5 comments
Open

[FeatureRequest] Input: csv & fbx -> Output fbx_blendshape #13

GermanCreator opened this issue Oct 27, 2019 · 5 comments

Comments

@GermanCreator
Copy link

Please create a cli where you input your csv and your face-fbx or body+face-fbx and it outputs a fbx with blendshapes applied, with rotating eyes and head movement data.

Alternatively do it with dae.

@NumesSanguis
Copy link
Owner

I definitely see the value of simplifying the process and allowing for scripted generation of .fbx / .dae files with facial animation included.

I think this is best implemented with the Blender add-on for FACSvatar, that is in development. Functions, like "choose .csv", would be added to the add-on. This add-on would then pass on the values to the FACSvatar modules outside Blender. These modules do their processing as usual and Blender waits for the resulting data to be streamed back into the avatar.

If this is all possible from the interface of the add-on, it means you can also call them from a script that calls Blender and passes on the variables you need. It would be the same CLI as you would normally use to do Blender tasks without interface.


Since this is a community project, it's not that I'm going to implement this all by myself. In the end it's up to the community members to add functionality for what they need, but I'm glad to help and discuss.
I hope to add functionality that's useful for everyone, but in the end this is a side project for me and I've limited time to work on this. So expect that you, or some of your colleagues / someone you hire, to code, etc.

If you're still interested, we can discuss how to make this possible in more detail?

@GermanCreator
Copy link
Author

GermanCreator commented Oct 28, 2019

Your project is shattered into pieces that are linked together. Even though it is working, it is hard to impossible to follow your approach.
I can understand that you do this in your free time and therefore want to encourage collaboration.
But to collaborate/contribute, your code structure needs to be more coherent.
So either you restructure/refactor your project, or the cli is dependent on your willingness to create.

@NumesSanguis
Copy link
Owner

NumesSanguis commented Oct 29, 2019

I'm aware my project is not the easiest to start with. The flexible nature makes it powerful, but harder to grasp. Also, it connects software I don't manage (e.g. OpenFace, ManuelBastioniLAB, FACSHuman). What part are you struggle with? I hope with docker-compose at least getting everything to run is quite straightforward.
What part needs to be more coherent / clearer? How to develop new modules? How to have ZeroMQ sockets communicate with each other? The communication paradigm of the current modules? How to connect it with Blender (which I agree, is definitely a mess now)? Some part of the documentation?

@GermanCreator
Copy link
Author

The cli I mentioned is also a good start for this. Have one python module or better, executable for windows, that has several inputs and outputs like the one mentioned. Include libraries for fbx import export rather than depending on bulky systems like openface, unity and blender. Then opensource this. THEN people will contribute. Because remember, it's not just your free time, it's also theirs. Your free time to develop, their free time to understand your code and contribute.

BTW: you have a .ch email. Are you from the german speaking part?

@NumesSanguis
Copy link
Owner

I'm sorry, if you're looking for that kind of tool, you're not the audience of this project. You want a ready made project, which is more likely what a commercial company would offer. If you want to redo the functionality of long standing projects like OpenFace, Unity3D and Blender, alone, it would take a full-time job for more than a year, and likely it would result in a project inferior in quality than all 3 of them, which would result in no one using it.

The whole design idea behind modules is that you can replace a part of it with some new better open source project that e.g. does face tracking. You only have to replace 1 module, without having to bother about code in the other modules. It is also code language independent, because not everything is made in Python. If you don't have a whole dedicated developer team, this is one of the fastest ways, because you just have to create a data interface (ZeroMQ) for a new project, instead of recreating the same functionality from scratch.

You don't have to understand the code in other modules, only how to start them. If you want to develop something new, you only need to know how to receive data from another module and how to pass it on. So for adding functionality to Blender, you only need to know how to send a path to a .csv to the input_facsfromcsv module and how to receive the resulting data back in Blender from process_facstoblend (which will be shown in the upcoming Blender add-on).

p.s. I'm not from Switzerland. ProtonMail can be made accounts can be made by everyone: https://protonmail.com/ . My German is quite limited.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants