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

List of embedded SSML feature strings? #19

Closed
roschler opened this issue Sep 3, 2020 · 9 comments
Closed

List of embedded SSML feature strings? #19

roschler opened this issue Sep 3, 2020 · 9 comments

Comments

@roschler
Copy link

roschler commented Sep 3, 2020

Where can I find the complete list of embedded SSML feature strings? For example, like this one used to adjust the look-at target during speech:

mark(name='{"feature":"PointOfInterestFeature","method":"setTargetByName","args":["chargaze"]}')
@c-morten
Copy link

c-morten commented Sep 3, 2020

We currently support this syntax on the GestureFeature and PointOfInterestFeature. You can use it with any of the methods on those features whose arguments can be parsed from a JSON string. We could easily extend this functionality to the LipsyncFeature and AnimationFeature if it there's demand for it, please let us know if you would find this useful in your projects.

@roschler
Copy link
Author

roschler commented Sep 3, 2020

@c-morten Thanks! Is there something that documents the embedded string syntax? For example, what does "chargaze" actually mean and how you specify a target (specific object or host) with that syntax?

@c-morten
Copy link

c-morten commented Sep 3, 2020

"chargaze" is the name of a joint (so an Object3D) in the alien's glTF character file, it's located directly between the eyes. If you open a glTF file in a program like Blender you can inspect the names and locations of all of the joints in the skeleton. If you do this, you'll notice that there is a ':' separating 'char' and 'gaze'. Three.js strips the ':' from names on import, which is why we have removed it here. setTargetByName allows you to specify the name of any Object3D in the scene that you want the host to look at, it will search the scene for that name and find the corresponding object.

@roschler
Copy link
Author

roschler commented Sep 3, 2020

@c-morten What happens if you specify a target that exists in more than one host? For example, suppose there were two alien characters on screen, I'm assuming they would both have a "chargaze" joint?

@c-morten
Copy link

c-morten commented Sep 3, 2020

We do have a setTargetById method as well. This allows you to pass an object's id property, which is unique. For that you'd probably need to use string formatting to insert the id after the characters are imported since id gets generated when the object is created.

Another alternative would be to create your own message for the name of the mark tag and add a listener for that. Then you could use whatever logic you'd like to figure out which host you want to target inside your listener function.

@roschler
Copy link
Author

roschler commented Sep 4, 2020

@c-morten Thanks. Side questions, is there a quick way to get rid of all the "stray hair" on the Cristine model? Hopefully some way that someone who is not an animator (massive understatement in my case) could do? I use the models frequently with their head position in profile and those hair elements look really bad from that view on that model.

@c-morten
Copy link

c-morten commented Sep 4, 2020

The only way to do that would be to edit the hair geometry in an external program like Blender, which would take some modeling and rigging knowledge. You would need to detach the skinning, make your geometry edits and then re-skin. You'd likely need to make some texture updates as well since the hair was textured with that specific geometry in mind.

@roschler
Copy link
Author

"We could easily extend this functionality to the LipsyncFeature and AnimationFeature if it there's demand for it, please let us know if you would find this useful in your projects."

I would definitely find that useful. Should I post that as a separate issue?

@c-morten
Copy link

^ Please do post a separate issue for this, I'll mark it as a feature request and add it to the backlog

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