veykril / cubism-rs Goto Github PK
View Code? Open in Web Editor NEWA rust wrapper around the Live2D Cubism SDK with extra functionality
License: Apache License 2.0
A rust wrapper around the Live2D Cubism SDK with extra functionality
License: Apache License 2.0
A big question regarding the api is how controllers should be applied. What I mean with controllers are basically all objects that modify model values like the EyeBlinking effects or motions for example. There are two ways I can think of which both advantages and disadvantates.
Controllers are now registered to models through their TypeId
meaning that a controller can at most exist once in each UserModel
.
Potential controllers that have yet to be implemented:
There are some options to implement these:
Currently working on re-implementing some features of Cubism 3 Native SDK Framework (Such as loading .model3.json
, 3c1u:cubism-fw-port) and I found out that there is no well-documented information for files it handles (Even in Japanese!).
All the(so far) known json files cubism uses:
Some of these are just a simple struct definition, nevertheless each probably deserves its own module in the json module. The json module is solely for the definitions, since those basically only act as configuration. Any proper functionality(aside from maybe validation) should go into their own modules.
Discussion: Regarding structure definitions, which fields should get a default de/serialization instead of Option wrappers? This can probably get resolved once the use case for each field is clearer and whether the field has an appropriate default or not.
Is there any chance this will continue to get worked on, or is this an abandoned project?
Cubism 4 SDK has been released. I replaced the third-party folder with the new SDK and it worked fine because of its backward compability.
However, some features have been added to Core/Framework.
Quick and dirty implementation has already been done here. It would probably benefit from having some randomness attached to it later on.
The current api of the (two) implemented renderers has been made quite hastily and I'm uncertain whether these are good enough or if they can be improved.
In general it seems best to have one renderer per moc
(all models that use the same moc
) since these always have the same drawable count meaning there is no need to recreate a vertex buffer then. Even better, the index buffer only has to be uploaded once since the index data is static(this is now implemented in the glium renderer. It creates the index buffers once for a given moc and then only allows rendering models from the same moc).
This can probably be enforced by checking the underlying moc
, for example by cloning the Arc
into the renderer and then comparing.
It's probably best to have one renderer per model after all so that the renderer can cache the vertexbuffers if necessary by making use of the DynamicFlags::VERTEX_POSITIONS_CHANGED flags.
Expressions have already been partially implemented, but the implementation is very rough and has to be improved. See here for the current implementation. It is implemented as a controller now but it only allows to set a single active expression a time and doesnt allow for any transitions which is obviously not the greatest feature set.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.