aws-samples / amazon-sumerian-hosts

Amazon Sumerian Hosts (Hosts) is an experimental open source project that aims to make it easy to create interactive animated 3D characters for Babylon.js, three.js, and other web 3D frameworks. It leverages AWS services including Amazon Polly (text-to-speech) and Amazon Lex (chatbot).
MIT No Attribution
189 stars 83 forks source link

How to develop a custom Amazon Sumerian Host avatar? #178

Open IvanFarkas opened 1 year ago

IvanFarkas commented 1 year ago

How to develop a custom Amazon Sumerian Host avatar?

I want to develop a custom Amazon Sumerian Host avatar, like Luke.

roschler commented 1 year ago

@IvanFarkas Bump. This is something that I have wanted to know how to do too for a long time, especially when it comes to connecting the graphics library, in my case ThreeJS, to move the skeleton (including eyes) and Amazon Polly to move the mouth bone(s).

trusktr commented 1 year ago

It isn't very well documented, but the examples show how to load a custom model. Here's the Babylon example:

https://github.com/aws-samples/amazon-sumerian-hosts/blob/mainline2.0/packages/demos-babylon/src/customCharacterDemo.js

To figure it out, we'll need to look at where characterConfig gets passed into createHost, and figure out what things the Sumerian Hosts code expects from the asset files.

From there, we should be able to generate alterantive GLTF (.gltf, .glb) files from a tool like blender that meets the requirements.

We might also open those GLTF files inside a tool like Blender and see if that serves an example. I'm imagining, for example, if we can import those and we can see the animtion in Blender, we can tweak them (f.e. make the character taller, replace the skin with another, etc), then export in the same format.

trusktr commented 1 year ago

Btw, I have a buildless fork (a fork where everything is plain JS modules, requires no build), here:

flckv commented 1 year ago

hi @trusktr (1) did you choose to use vanilla js to avoid build issues with aws sumerian avatar? Do you think build issues happen with frameworks e.g. react ? https://github.com/aws-samples/amazon-sumerian-hosts/issues/173 (2) I can see you are invested in moving sumerian to vanilla js and thank you for the great work!! I am guessing you tried importing new outfits and new characters with blender( or others) and not worried about issues like https://github.com/aws-samples/amazon-sumerian-hosts/issues/37 ?

IvanFarkas commented 1 year ago

It isn't very well documented, but the examples show how to load a custom model. Here's the Babylon example:

https://github.com/aws-samples/amazon-sumerian-hosts/blob/mainline2.0/packages/demos-babylon/src/customCharacterDemo.js

To figure it out, we'll need to look at where characterConfig gets passed into createHost, and figure out what things the Sumerian Hosts code expects from the asset files.

From there, we should be able to generate alterantive GLTF (.gltf, .glb) files from a tool like blender that meets the requirements.

We might also open those GLTF files inside a tool like Blender and see if that serves an example. I'm imagining, for example, if we can import those and we can see the animtion in Blender, we can tweak them (f.e. make the character taller, replace the skin with another, etc), then export in the same format.

You misunderstood the issue. Please read the description again. It's not about code but using graphics tools!

IvanFarkas commented 1 year ago

Btw, I have a buildless fork (a fork where everything is plain JS modules, requires no build), here:

The real help would be a Typescript version or a wrapper, but the nasty Monkey Patching and blatant overuse of archaic mixins instead of modern and elegant design patterns, it's very hard. Probably a properly written TS wrapper would be the way to solve it.

trusktr commented 9 months ago
@flckv off topic about the build: > hi @trusktr (1) did you choose to use vanilla js to avoid build issues with aws sumerian avatar? Yeah, I removed the build (and run as JS modules natively in the browser) to avoid having to spend time solving build issues. It makes maintenance easier, and I'm planning to do some things with this code, so I don't want Webpack to be a blocker. Once written as plain JS modules, it will work in a browser forever (clone this repo 10 years from now, it will simply still work). Better if people manage their own build choices in their apps, and they can choose to take on that burden. > Do you think build issues happen with frameworks e.g. react ? #173 Yeah, that issue does not happen with the vanilla approach. If someone adds a build tool to their app, they might run into any number of issues with the build tool, such as in #173. It's more of a webpack issue than a Sumerian.

(2) I can see you are invested in moving sumerian to vanilla js and thank you for the great work!! I am guessing you tried importing new outfits and new characters with blender( or others) and not worried about issues like #37 ?

I haven't done this yet, and would like to learn soon! But it is not related to the build, it will be the same process either way.

trusktr commented 9 months ago

You misunderstood the issue. Please read the description again. It's not about code but using graphics tools!

I fully understood the issue!

Without documentation, the hard way is

It is the reverse engineering approach.

Of course documentation would be better, but so far, I haven't seen any!

trusktr commented 9 months ago

Probably a properly written TS wrapper would be the way to solve it.

What the "it" that that will solve? I wasn't sure what you're referring to there.