mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 18:13:05 +02:00
Bug fix to AnimNode::setSkeletonModel and AnimNodeLoader.
Also updated avatar.json to test nested graphs under a SM.
This commit is contained in:
parent
21c6ba9bdf
commit
9d983e0614
4 changed files with 99 additions and 11 deletions
|
@ -167,7 +167,7 @@ void MyAvatar::update(float deltaTime) {
|
||||||
static float t = 0.0f;
|
static float t = 0.0f;
|
||||||
_animVars.set("sine", 0.5f * sin(t) + 0.5f);
|
_animVars.set("sine", 0.5f * sin(t) + 0.5f);
|
||||||
|
|
||||||
if (glm::length(getVelocity()) > 0.01) {
|
if (glm::length(getVelocity()) > 0.07f) {
|
||||||
_animVars.set("isMoving", true);
|
_animVars.set("isMoving", true);
|
||||||
_animVars.set("isNotMoving", false);
|
_animVars.set("isNotMoving", false);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1245,12 +1245,14 @@ void MyAvatar::setupNewAnimationSystem() {
|
||||||
|
|
||||||
// load the anim graph
|
// load the anim graph
|
||||||
// https://gist.github.com/hyperlogic/7d6a0892a7319c69e2b9
|
// https://gist.github.com/hyperlogic/7d6a0892a7319c69e2b9
|
||||||
auto graphUrl = QUrl("https://gist.githubusercontent.com/hyperlogic/7d6a0892a7319c69e2b9/raw/250ce1f207e23c74694351f04367063cf1269f94/avatar.json");
|
// python2 -m SimpleHTTPServer&
|
||||||
|
//auto graphUrl = QUrl("http://localhost:8000/avatar.json");
|
||||||
|
auto graphUrl = QUrl("https://gist.githubusercontent.com/hyperlogic/7d6a0892a7319c69e2b9/raw/403651948de088ca4dcdda4f873e225b091c779a/avatar.json");
|
||||||
_animLoader.reset(new AnimNodeLoader(graphUrl));
|
_animLoader.reset(new AnimNodeLoader(graphUrl));
|
||||||
connect(_animLoader.get(), &AnimNodeLoader::success, [this](AnimNode::Pointer nodeIn) {
|
connect(_animLoader.get(), &AnimNodeLoader::success, [this](AnimNode::Pointer nodeIn) {
|
||||||
_animNode = nodeIn;
|
_animNode = nodeIn;
|
||||||
_animNode->setSkeleton(_animSkeleton);
|
_animNode->setSkeleton(_animSkeleton);
|
||||||
AnimPose xform(_skeletonModel.getScale(), glm::quat(), _skeletonModel.getOffset() + glm::vec3(0, 0, 1));
|
AnimPose xform(_skeletonModel.getScale() / 10.0f, glm::quat(), _skeletonModel.getOffset() + glm::vec3(0, 0, 1));
|
||||||
AnimDebugDraw::getInstance().addAnimNode("node", _animNode, xform);
|
AnimDebugDraw::getInstance().addAnimNode("node", _animNode, xform);
|
||||||
});
|
});
|
||||||
connect(_animLoader.get(), &AnimNodeLoader::error, [this, graphUrl](int error, QString str) {
|
connect(_animLoader.get(), &AnimNodeLoader::error, [this, graphUrl](int error, QString str) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ public:
|
||||||
void setSkeleton(const AnimSkeleton::Pointer skeleton) {
|
void setSkeleton(const AnimSkeleton::Pointer skeleton) {
|
||||||
setSkeletonInternal(skeleton);
|
setSkeletonInternal(skeleton);
|
||||||
for (auto&& child : _children) {
|
for (auto&& child : _children) {
|
||||||
child->setSkeletonInternal(skeleton);
|
child->setSkeleton(skeleton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,11 @@ AnimNode::Pointer AnimNodeLoader::load(const QByteArray& contents, const QUrl& j
|
||||||
|
|
||||||
void AnimNodeLoader::onRequestDone(QNetworkReply& request) {
|
void AnimNodeLoader::onRequestDone(QNetworkReply& request) {
|
||||||
auto node = load(request.readAll(), _url);
|
auto node = load(request.readAll(), _url);
|
||||||
emit success(node);
|
if (node) {
|
||||||
|
emit success(node);
|
||||||
|
} else {
|
||||||
|
emit error(0, "json parse error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimNodeLoader::onRequestError(QNetworkReply::NetworkError netError) {
|
void AnimNodeLoader::onRequestError(QNetworkReply::NetworkError netError) {
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
"interpTarget": 6,
|
"interpTarget": 6,
|
||||||
"interpDuration": 6,
|
"interpDuration": 6,
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{ "var": "isMoving", "state": "walk" }
|
{ "var": "isMoving", "state": "walk_fwd" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "walk",
|
"id": "walk_fwd",
|
||||||
"interpTarget": 6,
|
"interpTarget": 6,
|
||||||
"interpDuration": 6,
|
"interpDuration": 6,
|
||||||
"transitions": [
|
"transitions": [
|
||||||
|
@ -27,27 +27,109 @@
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "idle",
|
"id": "idle",
|
||||||
|
"type": "blendLinear",
|
||||||
|
"data": {
|
||||||
|
"alpha": 0.5,
|
||||||
|
"alphaVar": "sine"
|
||||||
|
},
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "normal_idle",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/idle.fbx",
|
||||||
|
"startFrame": 0.0,
|
||||||
|
"endFrame": 90.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "other_idle",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/idle.fbx",
|
||||||
|
"startFrame": 20.0,
|
||||||
|
"endFrame": 90.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "walk_fwd",
|
||||||
"type": "clip",
|
"type": "clip",
|
||||||
"data": {
|
"data": {
|
||||||
"url": "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx",
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/walk_fwd.fbx",
|
||||||
"startFrame": 0.0,
|
"startFrame": 0.0,
|
||||||
"endFrame": 90.0,
|
"endFrame": 35.0,
|
||||||
"timeScale": 1.0,
|
"timeScale": 1.0,
|
||||||
"loopFlag": true
|
"loopFlag": true
|
||||||
},
|
},
|
||||||
"children": []
|
"children": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "walk",
|
"id": "walk_bwd",
|
||||||
"type": "clip",
|
"type": "clip",
|
||||||
"data": {
|
"data": {
|
||||||
"url": "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_walk.fbx",
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/walk_bwd.fbx",
|
||||||
|
"startFrame": 0.0,
|
||||||
|
"endFrame": 37.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "turn_left",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/turn_left.fbx",
|
||||||
"startFrame": 0.0,
|
"startFrame": 0.0,
|
||||||
"endFrame": 28.0,
|
"endFrame": 28.0,
|
||||||
"timeScale": 1.0,
|
"timeScale": 1.0,
|
||||||
"loopFlag": true
|
"loopFlag": true
|
||||||
},
|
},
|
||||||
"children": []
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "turn_right",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/turn_right.fbx",
|
||||||
|
"startFrame": 0.0,
|
||||||
|
"endFrame": 30.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "strafe_left",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/strafe_left.fbx",
|
||||||
|
"startFrame": 0.0,
|
||||||
|
"endFrame": 31.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "strafe_right",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "https://hifi-public.s3.amazonaws.com/ozan/anim/standard_anims/strafe_right.fbx",
|
||||||
|
"startFrame": 0.0,
|
||||||
|
"endFrame": 31.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": true
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue