mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
//
|
|
// dancing_bot.js
|
|
// examples
|
|
//
|
|
// Created by Andrzej Kapolka on 4/16/14.
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// This is an example script that demonstrates an NPC avatar running an FBX animation loop.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
var animation = AnimationCache.getAnimation("http://www.fungibleinsight.com/faces/gangnam_style_2.fbx");
|
|
|
|
Avatar.skeletonModelURL = "http://www.fungibleinsight.com/faces/beta.fst";
|
|
|
|
Agent.isAvatar = true;
|
|
|
|
var jointMapping;
|
|
|
|
var currentFrame = 0.0;
|
|
|
|
var FRAME_RATE = 30.0; // frames per second
|
|
|
|
Script.update.connect(function(deltaTime) {
|
|
if (!jointMapping) {
|
|
var avatarJointNames = Avatar.jointNames;
|
|
var animationJointNames = animation.jointNames;
|
|
if (avatarJointNames.length === 0 || animationJointNames.length === 0) {
|
|
return;
|
|
}
|
|
jointMapping = new Array(avatarJointNames.length);
|
|
for (var i = 0; i < avatarJointNames.length; i++) {
|
|
jointMapping[i] = animationJointNames.indexOf(avatarJointNames[i]);
|
|
}
|
|
}
|
|
currentFrame += deltaTime * FRAME_RATE;
|
|
var frames = animation.frames;
|
|
var rotations = frames[Math.floor(currentFrame) % frames.length].rotations;
|
|
for (var j = 0; j < jointMapping.length; j++) {
|
|
var rotationIndex = jointMapping[j];
|
|
if (rotationIndex != -1) {
|
|
Avatar.setJointData(j, rotations[rotationIndex]);
|
|
}
|
|
}
|
|
});
|
|
|
|
|