From what I read around here, people tend to use LUA. I personally use AngelScript for its flexibility.
I pushed my work-in-progress for my SmartBody wrapper. It's useable if you want to run a quick test in your game, you'll just need to replace a few includes as I pulled the files right from my engine, and remove C++11 keywords if you don't have them. I'll clean this once the wrapper will be complete, but it should fit for most cases.
https://github.com/xplodwild/OgreSmartBody
There is a README.md included for more details and example of use. Lib uses the same license as SmartBody, LGPL.
After some time using SB, I have another round of how-to questions for you Ari
1) Using the code you have on my repository, I cannot get locomotion animations to work. The character moves in the 3D space, but no animation is played. No visible error in logs. I'm starting the locomotion using:
Code: Select all
<locomotion manner="run" target="1000 0 400 -1000 0 1000 10 -10" />
I'm setting up the locomotion animations the same way you do in Python (check SmartBodyTools.cpp and SmartBodyManager::createCharacter, I mimic'd a few of the python scripts in C++ with the native interface), except I'm not retargetting the motions as I'm using Utah and Utah's animations directly (no prefix).
2) I also cannot get lipsyncing to work. Same as above,
https://github.com/xplodwild/OgreSmartB ... r.cpp#L170 is used to setup the character, and I'm starting a speech using this (took from SB manual):
Code: Select all
sbmgr->executeBML(character->getName(), "<speech type=\"application/ssml+xml\">" \
"<sync id=\" T0\" time=\" .1\" />hello" \
"<sync id=\" T1\" time=\" .2\" />" \
"<sync id=\" T2\" time=\" .35\" />my" \
"<sync id=\" T3\" time=\" .4\" />" \
"<sync id=\" T4\" time=\" .6\" />name" \
"<sync id=\" T5\" time=\" .72\" />" \
"<sync id=\" T6\" time=\" .9\" />is" \
"<sync id=\" T7\" time=\" .1.07\" />" \
"<sync id=\" T8\" time=\" 1.4\" />Utah" \
"<sync id=\" T9\" time=\" 1.8\" />" \
"<lips viseme=\" _\" articulation=\" 1.0\" start=\" 0\" ready=\" 0.0132\" relax=\" 0.0468\" end=\" 0.06\" />" \
"<lips viseme=\" Z\" articulation=\" 1.0\" start=\" 0.06\" ready=\" 0.0952\" relax=\" 0.1848\" end=\" 0.22\" />" \
"<lips viseme=\" Er\" articulation=\" 1.0\" start=\" 0.22\" ready=\" 0.2442\" relax=\" 0.3058\" end=\" 0.33\" />" \
"<lips viseme=\" D\" articulation=\" 1.0\" start=\" 0.33\" ready=\" 0.3586\" relax=\" 0.4314\" end=\" 0.46\" />" \
"<lips viseme=\" OO\" articulation=\" 1.0\" start=\" 0.46\" ready=\" 0.4644\" relax=\" 0.4756\" end=\" 0.48\" />" \
"<lips viseme=\" oh\" articulation=\" 1.0\" start=\" 0.48\" ready=\" 0.4888\" relax=\" 0.5112\" end=\" 0.52\" />" \
"</speech>");
But no lips are moving unfortunately. I don't plan to use a TTS, but rather an externally played sound file, I might be missing a config line somewhere.