Move in MSRAbot simulation software
|
@ -0,0 +1,54 @@
|
|||
#![MARR_logo.png](/docs/MARR_logo.png)[Microsoft Applied Robotics Research Library: Labanotation Suite](/README.md)
|
||||
|
||||
# **MSRAbot Simulation Software**
|
||||
|
||||
## **Description**
|
||||
The MSRAbot Simulation Software uses javascript and html code to implement an animated 3D model of the robot and a user interface for selecting and rendering gestures described in the JSON format. A temporary local HTTP server invoked with python or an existing server can be used to host the software and the simulation is run within a modern web browser. The user can choose from a collection of sample gestures, or select a new gesture captured and created using this project's Gesture Authoring Tools.
|
||||
|
||||
## **Installation**
|
||||
|
||||
Copy the entire **MSRAbotSimulation** folder into a convenient folder on your local computer.
|
||||
|
||||
**Note:** If you are already running or have access to an HTTP server, you can copy this folder into that server's file tree.
|
||||
|
||||
## **Starting Up**
|
||||
|
||||
1. Open a command prompt or terminal session with access to your python installation
|
||||
1. Navigate to the MSRAbotSimulation folder containing the file index.html
|
||||
1. Run the following command (for python 2.3):
|
||||
```
|
||||
> python -m SimpleHTTPServer
|
||||
```
|
||||
|
||||
**Note:** If you are running python version 3 or higher, run this command:
|
||||
```
|
||||
> python3 -m http.server
|
||||
```
|
||||
4. Open your favorite browser and open the URL http://localhost:8000
|
||||
|
||||
**Note:** If you have installed the folder into an existing HTTP server, you do not need to run the previous python commands but will need to adjust the URL for that particular server. For example: http://[your_server_name/your_installation_path]/MSRAbotSimulation/index.html:8000
|
||||
|
||||
**MSRAbot Model Running in a Browser**
|
||||
![LabanotationSuite_MSRAbot_in_browser.png](docs/LabanotationSuite_MSRAbot_in_browser.png)
|
||||
|
||||
|
||||
## **Viewing Gestures**
|
||||
Animated gestures are viewed in the browser by selecting and loading JSON files. View angle, panning, and zoom are available by clicking and holding mouse buttons and scroll wheels within the scene. Animation speed can be adjusted with a slider bar in the upper-right control panel.
|
||||
|
||||
**Select a Gesture**
|
||||
|
||||
Changing the gesture to be viewed is performed by clicking the drop-down text box in the upper-right corner of the browser screen. A selection of sample gestures are available, as well as an ability to load a newly created gesture stored on the local computer:
|
||||
|
||||
![LabanotationSuite_Gesture_selection.png](docs/LabanotationSuite_Gesture_selection.png)
|
||||
|
||||
**Select a Local Gesture File**
|
||||
|
||||
New gesture files created by the user can be viewed by selecting Import/Upload JSON File in the drop-down text box and then navigating to the file on the local computer:
|
||||
|
||||
![LabanotationSuite_Gesture_File_selection.png](docs/LabanotationSuite_Gesture_File_selection.png)
|
||||
|
||||
**Show Model Helpers**
|
||||
|
||||
In the future, different robot models may be made available for rendering gestures. Until then, viewing skeletal components of the selected robot model is possible by opening the Robot menu, clicking the showHelpers box, and adjusting the opacity of the model surface as desired.
|
||||
|
||||
![LabanotationSuite_Show_Helpers.png](docs/LabanotationSuite_Show_Helpers.png)
|
После Ширина: | Высота: | Размер: 146 KiB |
После Ширина: | Высота: | Размер: 179 KiB |
После Ширина: | Высота: | Размер: 752 KiB |
После Ширина: | Высота: | Размер: 839 KiB |
После Ширина: | Высота: | Размер: 58 KiB |
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>MSRAbot</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<script type="text/javascript" src="js/libs/three.min.js"></script>
|
||||
<script type="text/javascript" src="js/libs/stats.min.js"></script>
|
||||
<script type="text/javascript" src="js/libs/dat.gui.min.js"></script>
|
||||
<script type="text/javascript" src="js/libs/Tween.js"></script>
|
||||
<script type="text/javascript" src="js/libs/loaders/GLTFLoader.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/libs/controls/DragControls.js"></script>
|
||||
<script type="text/javascript" src="js/libs/controls/OrbitControls.js"></script>
|
||||
<script type="text/javascript" src="js/libs/controls/TransformControls.js"></script>
|
||||
|
||||
<script>
|
||||
var dev_version = '' + Math.floor(Math.random() * 100);
|
||||
var js_files = ['utils', 'msrabot', 'labanotation', 'app'];
|
||||
|
||||
for (var i = 0; i < js_files.length; i++) {
|
||||
document.write('<script src="js/' + js_files[i] + '.js?rand=' + dev_version + '"\><\/script>');
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body style="touch-action: none;">
|
||||
|
||||
<main id="app" style="width: 100%; height: 100%; "></main>
|
||||
<div style="z-index:10001; position:fixed; left: 0; top: 0; color: #000; "><img src="images/Logo_RobotHandshake.png" width="64px" /></div>
|
||||
<div style="z-index:10001; position:fixed; left: 80px; top: 0; color: #000;">
|
||||
<div style="font-size: 1.8em; font-weight: bold; margin-bottom: -0.3em">Microsoft Applied Robotics Research Library</div><br />
|
||||
<div style="font-size: 1.5em; font-weight: normal; margin-top: -0.3em"><a href="https://github.com/microsoft/LabanotationSuite">Labanotation Suite</a>: JSON Gesture Performance</div>
|
||||
</div>
|
||||
<script>
|
||||
//
|
||||
// no scrollbars
|
||||
document.body.style.overflow = 'hidden';
|
||||
|
||||
run();
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
function run() {
|
||||
_app = new APP(document.getElementById('app'));
|
||||
if (_app) {
|
||||
_app.initialize();
|
||||
|
||||
animate();
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
function animate() {
|
||||
requestAnimationFrame(animate);
|
||||
|
||||
_app.update();
|
||||
_app.render();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,566 @@
|
|||
//--------------------------------------------------------------------------------------------
|
||||
// Copyright(c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
'use strict';
|
||||
|
||||
var _app = null;
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
var APP = function (domTarget)
|
||||
{
|
||||
this.self = this;
|
||||
this.container = domTarget;
|
||||
this.clock = null;
|
||||
this.renderer = null;
|
||||
this.scene = null;
|
||||
this.camera = null;
|
||||
this.enableStats = false;
|
||||
this.stats = null;
|
||||
|
||||
this.nativeWidth = 0;
|
||||
this.nativeHeight = 0;
|
||||
|
||||
this.screenWidth = window.innerWidth;
|
||||
this.screenHeight = window.innerHeight;
|
||||
|
||||
this.hiding = null;
|
||||
|
||||
this.eventDoneInit = null;
|
||||
|
||||
//
|
||||
// objects & modules
|
||||
this.msrabot = null;
|
||||
this.labanotation = null;
|
||||
|
||||
//
|
||||
// input events
|
||||
this.mouse = new THREE.Vector3(0, 0, 0);
|
||||
this.touches = [];
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
|
||||
APP.prototype.constructor = APP;
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.initialize = function initAPP()
|
||||
{
|
||||
this.setupRenderer();
|
||||
this.setupDomEvents();
|
||||
this.setupMiscellaneous();
|
||||
this.createDebugLabels();
|
||||
this.initializeScene();
|
||||
|
||||
//
|
||||
// load default labanotation file
|
||||
this.loadNewFile(this.params.gesture);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.setupRenderer = function ()
|
||||
{
|
||||
this.clock = new THREE.Clock();
|
||||
|
||||
this.renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
|
||||
this.renderer.setPixelRatio(window.devicePixelRatio);
|
||||
this.renderer.setSize(this.screenWidth, this.screenHeight);
|
||||
this.renderer.setClearColor(0x000080, 1);
|
||||
|
||||
this.renderer.shadowMap.enabled = true;
|
||||
|
||||
this.container.appendChild(this.renderer.domElement);
|
||||
|
||||
this.nativeWidth = this.renderer.domElement.clientWidth;
|
||||
this.nativeHeight = this.renderer.domElement.clientHeight;
|
||||
|
||||
//
|
||||
// stats
|
||||
if (this.enableStats) {
|
||||
this.stats = new Stats();
|
||||
this.container.appendChild(this.stats.dom);
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.setupDomEvents = function ()
|
||||
{
|
||||
window.addEventListener('resize', this.onWindowResize.bind(this), false);
|
||||
|
||||
document.addEventListener('keydown', this.onDocumentKeyDown.bind(this), false);
|
||||
|
||||
document.addEventListener('mousedown', this.onDocumentMouseDown.bind(this), false);
|
||||
document.addEventListener('mousemove', this.onDocumentMouseMove.bind(this), false);
|
||||
document.addEventListener('mouseup', this.onDocumentMouseUp.bind(this), false);
|
||||
|
||||
document.addEventListener('wheel', this.onDocumentMouseWheel.bind(this), false);
|
||||
|
||||
document.addEventListener('touchstart', this.onDocumentTouchStart.bind(this), false);
|
||||
document.addEventListener('touchmove', this.onDocumentTouchMove.bind(this), false);
|
||||
document.addEventListener('touchend', this.onDocumentTouchEnd.bind(this), false);
|
||||
|
||||
document.addEventListener('contextmenu', this.onContextMenu.bind(this), false);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.setupMiscellaneous = function ()
|
||||
{
|
||||
var scope = this;
|
||||
|
||||
//
|
||||
// create form element to support uploading of local files
|
||||
var form = document.createElement('form');
|
||||
form.style.display = 'none';
|
||||
document.body.appendChild(form);
|
||||
|
||||
this.fileInput = document.createElement('input');
|
||||
this.fileInput.multiple = true;
|
||||
this.fileInput.type = 'file';
|
||||
this.fileInput.addEventListener('change', function () {
|
||||
scope.importFile(scope.fileInput.files);
|
||||
form.reset();
|
||||
});
|
||||
form.appendChild(this.fileInput);
|
||||
|
||||
//
|
||||
// dat.GUI
|
||||
var gui = new dat.GUI({ width: 400 });
|
||||
var files = ['Ges01_wavehand', 'Ges02_balancinghands', 'Ges03_drawlines', 'Ges04_comehere', 'Ges05_demopoint', 'Ges06_chickenwing'];
|
||||
var fileNames = [];
|
||||
|
||||
fileNames.push("-- Import/Upload JSON File --");
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
fileNames.push(files[i] + ".naive");
|
||||
fileNames.push(files[i] + ".total");
|
||||
fileNames.push(files[i] + ".parallel");
|
||||
}
|
||||
|
||||
this.params = {
|
||||
gesture: fileNames[2],
|
||||
animationSpeed: 1,
|
||||
opacity: 0.4,
|
||||
staticElbow: true,
|
||||
showHelpers: false,
|
||||
};
|
||||
|
||||
var folder = gui.addFolder('Labanotation');
|
||||
folder.add(this.params, 'gesture', fileNames).onChange(function () {
|
||||
if (scope.params.gesture == fileNames[0]) {
|
||||
scope.fileInput.click();
|
||||
} else
|
||||
scope.loadNewFile(scope.params.gesture);
|
||||
});
|
||||
|
||||
folder.add(this.params, 'animationSpeed', 0.0, 3.0).step(0.01).onChange(function () {
|
||||
});
|
||||
|
||||
folder.open();
|
||||
|
||||
folder = gui.addFolder('MSRAbot');
|
||||
folder.add(this.params, 'staticElbow').onChange(function () {
|
||||
if (scope.msrabot)
|
||||
scope.msrabot.setStaticElbow(scope.params.staticElbow);
|
||||
});
|
||||
|
||||
folder.add(this.params, 'showHelpers').onChange(function () {
|
||||
if (scope.msrabot)
|
||||
scope.msrabot.setShowHelpers(scope.params.showHelpers);
|
||||
});
|
||||
|
||||
folder.add(this.params, 'opacity', 0.0, 1.0).step(0.01).onChange(function () {
|
||||
scope.changeMSRAbotOpacity(scope.params.opacity);
|
||||
});
|
||||
|
||||
// folder.open();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.initializeScene = function ()
|
||||
{
|
||||
var scope = this;
|
||||
|
||||
this.scene = new THREE.Scene();
|
||||
this.scene.background = new THREE.Color(0xf0f0f0);
|
||||
|
||||
this.camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 10000);
|
||||
this.camera.position.set(0, 260, 600);
|
||||
this.camera.lookAt(0, 160, 0);
|
||||
this.scene.add(this.camera);
|
||||
|
||||
this.scene.add(new THREE.AmbientLight(0x707070));
|
||||
|
||||
//
|
||||
// lights
|
||||
{
|
||||
var intensity = 1.5;
|
||||
var distance = 0;
|
||||
var angle = Math.PI / 4;
|
||||
var penumbra = 0.5;
|
||||
var shadow_mapsize = 4096;
|
||||
var shadow_bias = -0.0000222;
|
||||
|
||||
var light = new THREE.SpotLight(0x606060, intensity, distance, angle, penumbra);
|
||||
light.position.set(-430, 825, 1000);
|
||||
light.castShadow = true;
|
||||
light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(120, 1, 20, 5000));
|
||||
light.shadow.bias = shadow_bias;
|
||||
light.shadow.mapSize.width = shadow_mapsize;
|
||||
light.shadow.mapSize.height = shadow_mapsize;
|
||||
|
||||
this.scene.add(light);
|
||||
|
||||
var light = new THREE.SpotLight(0x303030, intensity, distance, angle, penumbra);
|
||||
light.position.set(-430, 825, -1000);
|
||||
light.castShadow = true;
|
||||
light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(120, 1, 20, 5000));
|
||||
light.shadow.bias = shadow_bias;
|
||||
light.shadow.mapSize.width = shadow_mapsize;
|
||||
light.shadow.mapSize.height = shadow_mapsize;
|
||||
this.scene.add(light);
|
||||
}
|
||||
|
||||
//
|
||||
// create plane MSRAbot stands on
|
||||
var planeGeometry = new THREE.PlaneBufferGeometry(2000, 2000);
|
||||
var planeMaterial = new THREE.MeshPhongMaterial({ color: 0xf0f0f0, flatShading: true, side: THREE.FrontSide });
|
||||
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
|
||||
planeGeometry.rotateX(-Math.PI / 2);
|
||||
plane.receiveShadow = true;
|
||||
this.scene.add(plane);
|
||||
|
||||
var helper = new THREE.GridHelper(2000, 100);
|
||||
helper.position.y = plane.position.y + 1;
|
||||
helper.material.opacity = 0.25;
|
||||
helper.material.transparent = true;
|
||||
this.scene.add(helper);
|
||||
|
||||
//
|
||||
// create camera and scene panning controls
|
||||
this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
|
||||
this.controls.damping = 0.2;
|
||||
this.controls.addEventListener('change', function () {
|
||||
scope.render();
|
||||
});
|
||||
this.controls.addEventListener('start', function () {
|
||||
scope.cancelHideTransorm();
|
||||
});
|
||||
this.controls.addEventListener('end', function () {
|
||||
scope.delayHideTransform();
|
||||
});
|
||||
|
||||
this.controls.target.set(0, 160, 0);
|
||||
this.controls.update();
|
||||
|
||||
this.transformControl = new THREE.TransformControls(this.camera, this.renderer.domElement);
|
||||
|
||||
this.transformControl.showZ = false;
|
||||
this.transformControl.addEventListener('change', function () {
|
||||
scope.render();
|
||||
});
|
||||
this.transformControl.addEventListener('dragging-changed', function (event) {
|
||||
scope.controls.enabled = !event.value;
|
||||
});
|
||||
this.scene.add(this.transformControl);
|
||||
|
||||
// Hiding transform situation is a little in a mess :()
|
||||
this.transformControl.addEventListener('change', function () {
|
||||
scope.cancelHideTransorm();
|
||||
});
|
||||
this.transformControl.addEventListener('mouseDown', function () {
|
||||
scope.cancelHideTransorm();
|
||||
});
|
||||
this.transformControl.addEventListener('mouseUp', function () {
|
||||
scope.delayHideTransform();
|
||||
});
|
||||
|
||||
//
|
||||
// set up custom event used by labanotation and msrabot modules
|
||||
// signaling they''re done initializing
|
||||
this.eventDoneInit = new CustomEvent('doneInit', { "bubbles": true, "cancelable": false });
|
||||
|
||||
document.addEventListener('doneInit', function (e) {
|
||||
if ((scope.msrabot != null) && (scope.msrabot.doneInitializing) && (scope.labanotation != null) && (scope.labanotation.doneInitializing))
|
||||
scope.doneInitializing();
|
||||
});
|
||||
|
||||
//
|
||||
// create MSRAbot module
|
||||
this.msrabot = new MSRAbot(this);
|
||||
if (this.msrabot != null)
|
||||
this.msrabot.initialize(plane.position);
|
||||
|
||||
//
|
||||
// create labanotation handling module
|
||||
this.labanotation = new Labanotation(this);
|
||||
if (this.labanotation != null)
|
||||
this.labanotation.initialize();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.createDebugLabels = function ()
|
||||
{
|
||||
var x = 10;
|
||||
var y = 86;
|
||||
|
||||
this.dbgLabel1 = this.createDebugLabel('dbgLabel1', x, y);
|
||||
y += 28;
|
||||
//this.dbgLabel2 = this.createDebugLabel('dbgLabel2', x, y);
|
||||
//y += 28;
|
||||
//this.dbgLabel3 = this.createDebugLabel('dbgLabel3', x, y);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.createDebugLabel = function (name, x, y)
|
||||
{
|
||||
var dbgLabel = document.createElement('div');
|
||||
|
||||
dbgLabel.id = name;
|
||||
dbgLabel.textContent = '';
|
||||
dbgLabel.style.left = '' + x + 'px';
|
||||
dbgLabel.style.top = '' + y + 'px';
|
||||
dbgLabel.style.opacity = "0.8";
|
||||
dbgLabel.style.padding = "4px";
|
||||
dbgLabel.style.borderBottom = "1px solid #363636";
|
||||
dbgLabel.style.fontFamily = "Monospace";
|
||||
dbgLabel.style.color = "#000";
|
||||
dbgLabel.style.zIndex = 10002;
|
||||
dbgLabel.style.position = "fixed";
|
||||
|
||||
document.body.appendChild(dbgLabel);
|
||||
|
||||
return dbgLabel;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.doneInitializing = function ()
|
||||
{
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.loadNewFile = function (filename)
|
||||
{
|
||||
if (this.labanotation != null)
|
||||
this.labanotation.loadNewFile(filename);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.changeMSRAbotOpacity = function (opacity)
|
||||
{
|
||||
if (this.msrabot != null)
|
||||
this.msrabot.changeOpacity(opacity);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.importFile = function (files)
|
||||
{
|
||||
if (files.length < 1)
|
||||
return;
|
||||
|
||||
var scope = this;
|
||||
var map = {};
|
||||
var file = files[0];
|
||||
|
||||
map[file.name] = file;
|
||||
|
||||
var manager = new THREE.LoadingManager();
|
||||
manager.setURLModifier(function (url) {
|
||||
var file = filesMap[url];
|
||||
|
||||
if (file) {
|
||||
console.log('Loading', url);
|
||||
return URL.createObjectURL(file);
|
||||
}
|
||||
|
||||
return url;
|
||||
});
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
scope.loadFile(files[i], manager);
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.loadFile = function (file, manager)
|
||||
{
|
||||
var scope = this;
|
||||
var filename = file.name;
|
||||
var extension = filename.split('.').pop().toLowerCase();
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.addEventListener('progress', function (event) {
|
||||
var size = '(' + Math.floor(event.total / 1000).toFixed(0) + ' KB)';
|
||||
var progress = Math.floor((event.loaded / event.total) * 100) + '%';
|
||||
|
||||
console.log('Loading', filename, size, progress);
|
||||
});
|
||||
|
||||
if (extension != 'json') {
|
||||
alert("please import a file with extension .json");
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// read json file
|
||||
reader.addEventListener('load', function (event) {
|
||||
var contents = event.target.result;
|
||||
|
||||
if (contents.indexOf('postMessage') !== - 1) {
|
||||
var blob = new Blob([contents], { type: 'text/javascript' });
|
||||
var url = URL.createObjectURL(blob);
|
||||
|
||||
var worker = new Worker(url);
|
||||
|
||||
worker.onmessage = function (event) {
|
||||
event.data.metadata = { version: 2 };
|
||||
scope.labanotation.loadLabanotationData(filename, event.data);
|
||||
};
|
||||
|
||||
worker.postMessage(Date.now());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// >= 3.0
|
||||
var data;
|
||||
|
||||
try {
|
||||
data = JSON.parse(contents);
|
||||
} catch (error) {
|
||||
alert(error);
|
||||
return;
|
||||
}
|
||||
|
||||
scope.labanotation.loadLabanotationData(filename, data);
|
||||
|
||||
}, false);
|
||||
|
||||
reader.readAsText(file);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.delayHideTransform = function ()
|
||||
{
|
||||
this.cancelHideTransorm();
|
||||
this.hideTransform();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.hideTransform = function ()
|
||||
{
|
||||
var scope = this;
|
||||
|
||||
this.hiding = setTimeout(function () {
|
||||
scope.transformControl.detach(scope.transformControl.object);
|
||||
}, 2500);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.cancelHideTransorm = function ()
|
||||
{
|
||||
if (this.hiding) {
|
||||
clearTimeout(this.hiding);
|
||||
this.hiding = null;
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentKeyDown = function (event)
|
||||
{
|
||||
switch (event.keyCode) {
|
||||
case 0x41: // 'A'
|
||||
break;
|
||||
case 0x44: // 'D'
|
||||
break;
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentMouseDown = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.mouse.x = (event.clientX / this.nativeWidth) * 2 - 1;
|
||||
this.mouse.y = -(event.clientY / this.nativeHeight) * 2 + 1;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentMouseMove = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.mouse.x = (event.clientX / this.nativeWidth) * 2 - 1;
|
||||
this.mouse.y = -(event.clientY / this.nativeHeight) * 2 + 1;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentMouseUp = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.mouse.x = (event.clientX / this.nativeWidth) * 2 - 1;
|
||||
this.mouse.y = -(event.clientY / this.nativeHeight) * 2 + 1;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.convertTouchEvents = function (touches)
|
||||
{
|
||||
this.touches = [];
|
||||
|
||||
for (var i = 0; i < event.touches.length; i++) {
|
||||
this.touches.push(
|
||||
new THREE.Vector2(
|
||||
( touches[i].pageX / this.nativeWidth) * 2 - 1,
|
||||
(-touches[i].pageY / this.nativeHeight) * 2 + 1));
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentTouchStart = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.convertTouchEvents(event.touches);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentTouchMove = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.convertTouchEvents(event.touches);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentTouchEnd = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
this.convertTouchEvents(event.touches);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onDocumentMouseWheel = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onContextMenu = function (event)
|
||||
{
|
||||
// event.preventDefault();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.onWindowResize = function ()
|
||||
{
|
||||
this.nativeWidth = this.renderer.domElement.clientWidth;
|
||||
this.nativeHeight = this.renderer.domElement.clientHeight;
|
||||
|
||||
this.screenWidth = window.innerWidth;
|
||||
this.screenHeight = window.innerHeight;
|
||||
|
||||
if (this.camera) {
|
||||
this.camera.aspect = window.innerWidth / window.innerHeight;
|
||||
this.camera.updateProjectionMatrix();
|
||||
}
|
||||
|
||||
if (this.renderer)
|
||||
this.renderer.setSize(this.screenWidth, this.screenHeight);
|
||||
|
||||
this.render();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.update = function ()
|
||||
{
|
||||
var delta = this.clock.getDelta();
|
||||
|
||||
TWEEN.update();
|
||||
|
||||
if (this.stats)
|
||||
this.stats.update();
|
||||
|
||||
if (this.labanotation != null)
|
||||
this.labanotation.update(this.clock);
|
||||
|
||||
if (this.msrabot != null)
|
||||
this.msrabot.update(this.clock);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
APP.prototype.render = function ()
|
||||
{
|
||||
this.renderer.clear();
|
||||
|
||||
this.renderer.render(this.scene, this.camera);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,307 @@
|
|||
//--------------------------------------------------------------------------------------------
|
||||
// Copyright(c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation = function (app)
|
||||
{
|
||||
this.app = app;
|
||||
this.filename = null;
|
||||
this.labanotationName = "";
|
||||
this.duration = 0;
|
||||
this.animationStart = 0;
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
this.animationTestIndex = 0;
|
||||
|
||||
this.doneInitializing = false;
|
||||
}
|
||||
|
||||
Labanotation.prototype.constructor = Labanotation;
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.initialize = function initLabanotation()
|
||||
{
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.loadNewFile = function (filename)
|
||||
{
|
||||
var gesture_file = "labanotation/" + filename + ".json";
|
||||
|
||||
this.loadLabanotation(gesture_file);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.loadLabanotation = function (filename)
|
||||
{
|
||||
var scope = this;
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.onreadystatechange = function (event) {
|
||||
if (xhr.readyState == XMLHttpRequest.DONE) {
|
||||
if (xhr.status == 200 || xhr.status == 0) {
|
||||
if (xhr.responseText.length > 0) {
|
||||
var data = undefined;
|
||||
|
||||
try {
|
||||
data = JSON.parse(xhr.responseText);
|
||||
} catch (error) {
|
||||
console.warn("FAILED to parse Labanotation buffer.");
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
if (data) {
|
||||
scope.loadLabanotationData(filename, data);
|
||||
|
||||
scope.doneInitializing = true;
|
||||
|
||||
//
|
||||
// done. Fire init complete event
|
||||
if (scope.app.eventDoneInit != null)
|
||||
document.dispatchEvent(scope.app.eventDoneInit);
|
||||
}
|
||||
|
||||
data = undefined;
|
||||
}
|
||||
} else {
|
||||
console.error("Couldn't load Labanotation json file [code " + xhr.status + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xhr.addEventListener("abort", function () {
|
||||
console.warn("XMLHttpRequest abort.");
|
||||
}, false);
|
||||
|
||||
xhr.addEventListener('error', function (event) {
|
||||
console.warn("XMLHttpRequest error.");
|
||||
}, false);
|
||||
|
||||
xhr.overrideMimeType("text/xml;");
|
||||
xhr.open("GET", filename, true);
|
||||
|
||||
xhr.send(null);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.loadLabanotationData = function (filename, data)
|
||||
{
|
||||
this.parseLabanotation(data);
|
||||
this.filename = filename;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.parseLabanotation = function (data)
|
||||
{
|
||||
var scope = this;
|
||||
|
||||
this.labanotation = null;
|
||||
this.labanotationName = "";
|
||||
this.animationStart = 0;
|
||||
this.duration = 0;
|
||||
|
||||
//
|
||||
// get node with labanotation information
|
||||
for (var key in data) {
|
||||
if (data.hasOwnProperty(key)) {
|
||||
scope.labanotation = data[key]
|
||||
scope.labanotationName = key;
|
||||
|
||||
var min, max;
|
||||
|
||||
for (var position in scope.labanotation) {
|
||||
if (scope.labanotation.hasOwnProperty(position)) {
|
||||
var obj = scope.labanotation[position];
|
||||
var time = obj["start time"];
|
||||
|
||||
if (min === undefined) {
|
||||
min = time;
|
||||
max = time;
|
||||
} else {
|
||||
min = Math.min(min, time);
|
||||
max = Math.max(max, time);
|
||||
}
|
||||
|
||||
scope.convertLabanotation2Vec(obj, "right elbow");
|
||||
scope.convertLabanotation2Vec(obj, "right wrist");
|
||||
scope.convertLabanotation2Vec(obj, "left elbow");
|
||||
scope.convertLabanotation2Vec(obj, "left wrist");
|
||||
}
|
||||
}
|
||||
|
||||
scope.start_time = min;
|
||||
scope.end_time = max;
|
||||
scope.duration = (max - min);
|
||||
}
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.convertLabanotation2Vec = function (data, key)
|
||||
{
|
||||
var obj = data[key];
|
||||
var dir = obj[0].toLowerCase();
|
||||
var lv = obj[1].toLowerCase();
|
||||
var phi = 0;
|
||||
var theta = 180;
|
||||
|
||||
switch (lv) {
|
||||
case "high":
|
||||
theta = 45;
|
||||
break;
|
||||
case "normal":
|
||||
theta = 90;
|
||||
break;
|
||||
case "low":
|
||||
theta = 135;
|
||||
break;
|
||||
default:
|
||||
theta = 180
|
||||
console.log("Unknown level '" + lv + "' for '" + key + "'.");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (dir) {
|
||||
case "forward":
|
||||
phi = 0;
|
||||
break;
|
||||
case "right forward":
|
||||
phi = -45;
|
||||
break;
|
||||
case "right":
|
||||
phi = -90;
|
||||
break;
|
||||
case "right backward":
|
||||
phi = -135;
|
||||
break;
|
||||
case "backward":
|
||||
phi = 180;
|
||||
break;
|
||||
case "left backward":
|
||||
phi = 135;
|
||||
break;
|
||||
case "left":
|
||||
phi = 90;
|
||||
break;
|
||||
case "left forward":
|
||||
phi = 45;
|
||||
break;
|
||||
case "place":
|
||||
if (lv == "high") {
|
||||
theta = 5;
|
||||
phi = 0;
|
||||
} else if (lv == "low") {
|
||||
theta = 175;
|
||||
phi = 0;
|
||||
} else {
|
||||
theta = 180;
|
||||
phi = 0;
|
||||
console.log("Unknown place for '" + key + "'.");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
phi = 0;
|
||||
console.log("Unknown direction for '" + key + "'.");
|
||||
break;
|
||||
}
|
||||
|
||||
theta = THREE.MathUtils.degToRad(theta);
|
||||
phi = THREE.MathUtils.degToRad(phi);
|
||||
|
||||
// length of the limb
|
||||
y = Math.cos(theta);
|
||||
x = Math.sin(theta) * Math.sin(phi);
|
||||
z = Math.sin(theta) * Math.cos(phi);
|
||||
|
||||
//
|
||||
// write data back into object
|
||||
obj["theta"] = theta;
|
||||
obj["phi"] = phi;
|
||||
obj["vector"] = new THREE.Vector3(x, y, z);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.getRotation = function (theta, phi)
|
||||
{
|
||||
var result = [];
|
||||
|
||||
result["theta"] = theta;
|
||||
result["phi"] = phi;
|
||||
|
||||
var y = Math.cos(theta);
|
||||
var x = Math.sin(theta) * Math.sin(phi);
|
||||
var z = Math.sin(theta) * Math.cos(phi);
|
||||
|
||||
result["vector"] = new THREE.Vector3(x, y, z);
|
||||
|
||||
return result;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.interpolateRotation = function (obj1, obj2, s, name)
|
||||
{
|
||||
var theta, phi;
|
||||
|
||||
if (obj1 == null) {
|
||||
theta = obj2[name]["theta"];
|
||||
phi = obj2[name]["phi"];
|
||||
} else {
|
||||
theta = THREE.MathUtils.lerp(obj1[name]["theta"], obj2[name]["theta"], s);
|
||||
phi = THREE.MathUtils.lerp(obj1[name]["phi"], obj2[name]["phi"], s);
|
||||
}
|
||||
|
||||
return this.getRotation(theta, phi);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.updateAnimation = function (time)
|
||||
{
|
||||
var scope = this;
|
||||
var objPrevious = null;
|
||||
var timePrevious = 0;
|
||||
|
||||
for (var position in scope.labanotation) {
|
||||
if (scope.labanotation.hasOwnProperty(position)) {
|
||||
var obj = scope.labanotation[position];
|
||||
|
||||
var start_time = obj["start time"];
|
||||
|
||||
if ((timePrevious <= time) && (time <= start_time)) {
|
||||
var s = (time - timePrevious) / (start_time - timePrevious)
|
||||
|
||||
var re = this.interpolateRotation(objPrevious, obj, s, "right elbow");
|
||||
var rw = this.interpolateRotation(objPrevious, obj, s, "right wrist");
|
||||
var le = this.interpolateRotation(objPrevious, obj, s, "left elbow");
|
||||
var lw = this.interpolateRotation(objPrevious, obj, s, "left wrist");
|
||||
|
||||
if (scope.app.msrabot) {
|
||||
scope.app.msrabot.updateBody(re, rw, le, lw);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
objPrevious = obj;
|
||||
timePrevious = start_time;
|
||||
}
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
Labanotation.prototype.update = function (clock)
|
||||
{
|
||||
if (!this.doneInitializing)
|
||||
return;
|
||||
|
||||
var elapsedTime = clock.getElapsedTime() * 1000.0;
|
||||
|
||||
if (this.animationStart == 0)
|
||||
this.animationStart = elapsedTime;
|
||||
|
||||
var timeIndex = (elapsedTime - this.animationStart) * this.app.params.animationSpeed;
|
||||
|
||||
if (timeIndex > this.duration) {
|
||||
//
|
||||
// reset
|
||||
timeIndex = 0;
|
||||
this.animationStart = elapsedTime;
|
||||
}
|
||||
|
||||
if (this.app.dbgLabel1)
|
||||
this.app.dbgLabel1.textContent = "time: " + timeIndex.toFixed(0) + "ms, duration: " + this.duration.toFixed(0) + "ms";
|
||||
|
||||
this.updateAnimation(this.start_time + timeIndex);
|
||||
}
|
|
@ -0,0 +1,889 @@
|
|||
/**
|
||||
* Tween.js - Licensed under the MIT license
|
||||
* https://github.com/tweenjs/tween.js
|
||||
* ----------------------------------------------
|
||||
*
|
||||
* See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.
|
||||
* Thank you all, you're awesome!
|
||||
*/
|
||||
|
||||
var TWEEN = TWEEN || (function () {
|
||||
|
||||
var _tweens = [];
|
||||
|
||||
return {
|
||||
|
||||
getAll: function () {
|
||||
|
||||
return _tweens;
|
||||
|
||||
},
|
||||
|
||||
removeAll: function () {
|
||||
|
||||
_tweens = [];
|
||||
|
||||
},
|
||||
|
||||
add: function (tween) {
|
||||
|
||||
_tweens.push(tween);
|
||||
|
||||
},
|
||||
|
||||
remove: function (tween) {
|
||||
|
||||
var i = _tweens.indexOf(tween);
|
||||
|
||||
if (i !== -1) {
|
||||
_tweens.splice(i, 1);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
update: function (time, preserve) {
|
||||
|
||||
if (_tweens.length === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
|
||||
time = time !== undefined ? time : TWEEN.now();
|
||||
|
||||
while (i < _tweens.length) {
|
||||
|
||||
if (_tweens[i].update(time) || preserve) {
|
||||
i++;
|
||||
} else {
|
||||
_tweens.splice(i, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
|
||||
// Include a performance.now polyfill
|
||||
(function () {
|
||||
// In node.js, use process.hrtime.
|
||||
if (this.window === undefined && this.process !== undefined) {
|
||||
TWEEN.now = function () {
|
||||
var time = process.hrtime();
|
||||
|
||||
// Convert [seconds, microseconds] to milliseconds.
|
||||
return time[0] * 1000 + time[1] / 1000;
|
||||
};
|
||||
}
|
||||
// In a browser, use window.performance.now if it is available.
|
||||
else if (this.window !== undefined &&
|
||||
window.performance !== undefined &&
|
||||
window.performance.now !== undefined) {
|
||||
|
||||
// This must be bound, because directly assigning this function
|
||||
// leads to an invocation exception in Chrome.
|
||||
TWEEN.now = window.performance.now.bind(window.performance);
|
||||
}
|
||||
// Use Date.now if it is available.
|
||||
else if (Date.now !== undefined) {
|
||||
TWEEN.now = Date.now;
|
||||
}
|
||||
// Otherwise, use 'new Date().getTime()'.
|
||||
else {
|
||||
TWEEN.now = function () {
|
||||
return new Date().getTime();
|
||||
};
|
||||
}
|
||||
}).bind(this)();
|
||||
|
||||
|
||||
TWEEN.Tween = function (object) {
|
||||
|
||||
var _object = object;
|
||||
var _valuesStart = {};
|
||||
var _valuesEnd = {};
|
||||
var _valuesStartRepeat = {};
|
||||
var _duration = 1000;
|
||||
var _repeat = 0;
|
||||
var _repeatDelayTime;
|
||||
var _yoyo = false;
|
||||
var _isPlaying = false;
|
||||
var _reversed = false;
|
||||
var _delayTime = 0;
|
||||
var _startTime = null;
|
||||
var _easingFunction = TWEEN.Easing.Linear.None;
|
||||
var _interpolationFunction = TWEEN.Interpolation.Linear;
|
||||
var _chainedTweens = [];
|
||||
var _onStartCallback = null;
|
||||
var _onStartCallbackFired = false;
|
||||
var _onUpdateCallback = null;
|
||||
var _onCompleteCallback = null;
|
||||
var _onStopCallback = null;
|
||||
|
||||
// Set all starting values present on the target object
|
||||
for (var field in object) {
|
||||
_valuesStart[field] = parseFloat(object[field], 10);
|
||||
}
|
||||
|
||||
this.to = function (properties, duration) {
|
||||
|
||||
if (duration !== undefined) {
|
||||
_duration = duration;
|
||||
}
|
||||
|
||||
_valuesEnd = properties;
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.start = function (time) {
|
||||
|
||||
TWEEN.add(this);
|
||||
|
||||
_isPlaying = true;
|
||||
|
||||
_onStartCallbackFired = false;
|
||||
|
||||
_startTime = time !== undefined ? time : TWEEN.now();
|
||||
_startTime += _delayTime;
|
||||
|
||||
for (var property in _valuesEnd) {
|
||||
|
||||
// Check if an Array was provided as property value
|
||||
if (_valuesEnd[property] instanceof Array) {
|
||||
|
||||
if (_valuesEnd[property].length === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Create a local copy of the Array with the start value at the front
|
||||
_valuesEnd[property] = [_object[property]].concat(_valuesEnd[property]);
|
||||
|
||||
}
|
||||
|
||||
// If `to()` specifies a property that doesn't exist in the source object,
|
||||
// we should not set that property in the object
|
||||
if (_valuesStart[property] === undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
_valuesStart[property] = _object[property];
|
||||
|
||||
if ((_valuesStart[property] instanceof Array) === false) {
|
||||
_valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings
|
||||
}
|
||||
|
||||
_valuesStartRepeat[property] = _valuesStart[property] || 0;
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.stop = function () {
|
||||
|
||||
if (!_isPlaying) {
|
||||
return this;
|
||||
}
|
||||
|
||||
TWEEN.remove(this);
|
||||
_isPlaying = false;
|
||||
|
||||
if (_onStopCallback !== null) {
|
||||
_onStopCallback.call(_object);
|
||||
}
|
||||
|
||||
this.stopChainedTweens();
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.end = function () {
|
||||
|
||||
this.update(_startTime + _duration);
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.stopChainedTweens = function () {
|
||||
|
||||
for (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {
|
||||
_chainedTweens[i].stop();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.delay = function (amount) {
|
||||
|
||||
_delayTime = amount;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.repeat = function (times) {
|
||||
|
||||
_repeat = times;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.repeatDelay = function (amount) {
|
||||
|
||||
_repeatDelayTime = amount;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.yoyo = function (yoyo) {
|
||||
|
||||
_yoyo = yoyo;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
|
||||
this.easing = function (easing) {
|
||||
|
||||
_easingFunction = easing;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.interpolation = function (interpolation) {
|
||||
|
||||
_interpolationFunction = interpolation;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.chain = function () {
|
||||
|
||||
_chainedTweens = arguments;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.onStart = function (callback) {
|
||||
|
||||
_onStartCallback = callback;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.onUpdate = function (callback) {
|
||||
|
||||
_onUpdateCallback = callback;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.onComplete = function (callback) {
|
||||
|
||||
_onCompleteCallback = callback;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.onStop = function (callback) {
|
||||
|
||||
_onStopCallback = callback;
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
this.update = function (time) {
|
||||
|
||||
var property;
|
||||
var elapsed;
|
||||
var value;
|
||||
|
||||
if (time < _startTime) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_onStartCallbackFired === false) {
|
||||
|
||||
if (_onStartCallback !== null) {
|
||||
_onStartCallback.call(_object);
|
||||
}
|
||||
|
||||
_onStartCallbackFired = true;
|
||||
|
||||
}
|
||||
|
||||
elapsed = (time - _startTime) / _duration;
|
||||
elapsed = elapsed > 1 ? 1 : elapsed;
|
||||
|
||||
value = _easingFunction(elapsed);
|
||||
|
||||
for (property in _valuesEnd) {
|
||||
|
||||
// Don't update properties that do not exist in the source object
|
||||
if (_valuesStart[property] === undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var start = _valuesStart[property] || 0;
|
||||
var end = _valuesEnd[property];
|
||||
|
||||
if (end instanceof Array) {
|
||||
|
||||
_object[property] = _interpolationFunction(end, value);
|
||||
|
||||
} else {
|
||||
|
||||
// Parses relative end values with start as base (e.g.: +10, -3)
|
||||
if (typeof (end) === 'string') {
|
||||
|
||||
if (end.charAt(0) === '+' || end.charAt(0) === '-') {
|
||||
end = start + parseFloat(end, 10);
|
||||
} else {
|
||||
end = parseFloat(end, 10);
|
||||
}
|
||||
}
|
||||
|
||||
// Protect against non numeric properties.
|
||||
if (typeof (end) === 'number') {
|
||||
_object[property] = start + (end - start) * value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (_onUpdateCallback !== null) {
|
||||
_onUpdateCallback.call(_object, value);
|
||||
}
|
||||
|
||||
if (elapsed === 1) {
|
||||
|
||||
if (_repeat > 0) {
|
||||
|
||||
if (isFinite(_repeat)) {
|
||||
_repeat--;
|
||||
}
|
||||
|
||||
// Reassign starting values, restart by making startTime = now
|
||||
for (property in _valuesStartRepeat) {
|
||||
|
||||
if (typeof (_valuesEnd[property]) === 'string') {
|
||||
_valuesStartRepeat[property] = _valuesStartRepeat[property] + parseFloat(_valuesEnd[property], 10);
|
||||
}
|
||||
|
||||
if (_yoyo) {
|
||||
var tmp = _valuesStartRepeat[property];
|
||||
|
||||
_valuesStartRepeat[property] = _valuesEnd[property];
|
||||
_valuesEnd[property] = tmp;
|
||||
}
|
||||
|
||||
_valuesStart[property] = _valuesStartRepeat[property];
|
||||
|
||||
}
|
||||
|
||||
if (_yoyo) {
|
||||
_reversed = !_reversed;
|
||||
}
|
||||
|
||||
if (_repeatDelayTime !== undefined) {
|
||||
_startTime = time + _repeatDelayTime;
|
||||
} else {
|
||||
_startTime = time + _delayTime;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
} else {
|
||||
|
||||
if (_onCompleteCallback !== null) {
|
||||
_onCompleteCallback.call(_object);
|
||||
}
|
||||
|
||||
for (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {
|
||||
// Make the chained tweens start exactly at the time they should,
|
||||
// even if the `update()` method was called way past the duration of the tween
|
||||
_chainedTweens[i].start(_startTime + _duration);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
TWEEN.Easing = {
|
||||
|
||||
Linear: {
|
||||
|
||||
None: function (k) {
|
||||
|
||||
return k;
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Quadratic: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return k * k;
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return k * (2 - k);
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * k * k;
|
||||
}
|
||||
|
||||
return - 0.5 * (--k * (k - 2) - 1);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Cubic: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return k * k * k;
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return --k * k * k + 1;
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * k * k * k;
|
||||
}
|
||||
|
||||
return 0.5 * ((k -= 2) * k * k + 2);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Quartic: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return k * k * k * k;
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return 1 - (--k * k * k * k);
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * k * k * k * k;
|
||||
}
|
||||
|
||||
return - 0.5 * ((k -= 2) * k * k * k - 2);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Quintic: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return k * k * k * k * k;
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return --k * k * k * k * k + 1;
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * k * k * k * k * k;
|
||||
}
|
||||
|
||||
return 0.5 * ((k -= 2) * k * k * k * k + 2);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Sinusoidal: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return 1 - Math.cos(k * Math.PI / 2);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return Math.sin(k * Math.PI / 2);
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
return 0.5 * (1 - Math.cos(Math.PI * k));
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Exponential: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return k === 0 ? 0 : Math.pow(1024, k - 1);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if (k === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (k === 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * Math.pow(1024, k - 1);
|
||||
}
|
||||
|
||||
return 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Circular: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return 1 - Math.sqrt(1 - k * k);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
return Math.sqrt(1 - (--k * k));
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return - 0.5 * (Math.sqrt(1 - k * k) - 1);
|
||||
}
|
||||
|
||||
return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Elastic: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
if (k === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (k === 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
if (k === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (k === 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1;
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if (k === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (k === 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
k *= 2;
|
||||
|
||||
if (k < 1) {
|
||||
return -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
|
||||
}
|
||||
|
||||
return 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1;
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Back: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
var s = 1.70158;
|
||||
|
||||
return k * k * ((s + 1) * k - s);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
var s = 1.70158;
|
||||
|
||||
return --k * k * ((s + 1) * k + s) + 1;
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
var s = 1.70158 * 1.525;
|
||||
|
||||
if ((k *= 2) < 1) {
|
||||
return 0.5 * (k * k * ((s + 1) * k - s));
|
||||
}
|
||||
|
||||
return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Bounce: {
|
||||
|
||||
In: function (k) {
|
||||
|
||||
return 1 - TWEEN.Easing.Bounce.Out(1 - k);
|
||||
|
||||
},
|
||||
|
||||
Out: function (k) {
|
||||
|
||||
if (k < (1 / 2.75)) {
|
||||
return 7.5625 * k * k;
|
||||
} else if (k < (2 / 2.75)) {
|
||||
return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;
|
||||
} else if (k < (2.5 / 2.75)) {
|
||||
return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;
|
||||
} else {
|
||||
return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
InOut: function (k) {
|
||||
|
||||
if (k < 0.5) {
|
||||
return TWEEN.Easing.Bounce.In(k * 2) * 0.5;
|
||||
}
|
||||
|
||||
return TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
TWEEN.Interpolation = {
|
||||
|
||||
Linear: function (v, k) {
|
||||
|
||||
var m = v.length - 1;
|
||||
var f = m * k;
|
||||
var i = Math.floor(f);
|
||||
var fn = TWEEN.Interpolation.Utils.Linear;
|
||||
|
||||
if (k < 0) {
|
||||
return fn(v[0], v[1], f);
|
||||
}
|
||||
|
||||
if (k > 1) {
|
||||
return fn(v[m], v[m - 1], m - f);
|
||||
}
|
||||
|
||||
return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);
|
||||
|
||||
},
|
||||
|
||||
Bezier: function (v, k) {
|
||||
|
||||
var b = 0;
|
||||
var n = v.length - 1;
|
||||
var pw = Math.pow;
|
||||
var bn = TWEEN.Interpolation.Utils.Bernstein;
|
||||
|
||||
for (var i = 0; i <= n; i++) {
|
||||
b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);
|
||||
}
|
||||
|
||||
return b;
|
||||
|
||||
},
|
||||
|
||||
CatmullRom: function (v, k) {
|
||||
|
||||
var m = v.length - 1;
|
||||
var f = m * k;
|
||||
var i = Math.floor(f);
|
||||
var fn = TWEEN.Interpolation.Utils.CatmullRom;
|
||||
|
||||
if (v[0] === v[m]) {
|
||||
|
||||
if (k < 0) {
|
||||
i = Math.floor(f = m * (1 + k));
|
||||
}
|
||||
|
||||
return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);
|
||||
|
||||
} else {
|
||||
|
||||
if (k < 0) {
|
||||
return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);
|
||||
}
|
||||
|
||||
if (k > 1) {
|
||||
return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);
|
||||
}
|
||||
|
||||
return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Utils: {
|
||||
|
||||
Linear: function (p0, p1, t) {
|
||||
|
||||
return (p1 - p0) * t + p0;
|
||||
|
||||
},
|
||||
|
||||
Bernstein: function (n, i) {
|
||||
|
||||
var fc = TWEEN.Interpolation.Utils.Factorial;
|
||||
|
||||
return fc(n) / fc(i) / fc(n - i);
|
||||
|
||||
},
|
||||
|
||||
Factorial: (function () {
|
||||
|
||||
var a = [1];
|
||||
|
||||
return function (n) {
|
||||
|
||||
var s = 1;
|
||||
|
||||
if (a[n]) {
|
||||
return a[n];
|
||||
}
|
||||
|
||||
for (var i = n; i > 1; i--) {
|
||||
s *= i;
|
||||
}
|
||||
|
||||
a[n] = s;
|
||||
return s;
|
||||
|
||||
};
|
||||
|
||||
})(),
|
||||
|
||||
CatmullRom: function (p0, p1, p2, p3, t) {
|
||||
|
||||
var v0 = (p2 - p0) * 0.5;
|
||||
var v1 = (p3 - p1) * 0.5;
|
||||
var t2 = t * t;
|
||||
var t3 = t * t2;
|
||||
|
||||
return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// UMD (Universal Module Definition)
|
||||
(function (root) {
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
|
||||
// AMD
|
||||
define([], function () {
|
||||
return TWEEN;
|
||||
});
|
||||
|
||||
} else if (typeof module !== 'undefined' && typeof exports === 'object') {
|
||||
|
||||
// Node.js
|
||||
module.exports = TWEEN;
|
||||
|
||||
} else if (root !== undefined) {
|
||||
|
||||
// Global variable
|
||||
root.TWEEN = TWEEN;
|
||||
|
||||
}
|
||||
|
||||
})(this);
|
|
@ -0,0 +1,250 @@
|
|||
/**
|
||||
* @author zz85 / https://github.com/zz85
|
||||
* @author mrdoob / http://mrdoob.com
|
||||
* Running this will allow you to drag three.js objects around the screen.
|
||||
*/
|
||||
|
||||
THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
|
||||
var _plane = new THREE.Plane();
|
||||
var _raycaster = new THREE.Raycaster();
|
||||
|
||||
var _mouse = new THREE.Vector2();
|
||||
var _offset = new THREE.Vector3();
|
||||
var _intersection = new THREE.Vector3();
|
||||
var _worldPosition = new THREE.Vector3();
|
||||
var _inverseMatrix = new THREE.Matrix4();
|
||||
|
||||
var _selected = null, _hovered = null;
|
||||
|
||||
//
|
||||
|
||||
var scope = this;
|
||||
|
||||
function activate() {
|
||||
|
||||
_domElement.addEventListener( 'mousemove', onDocumentMouseMove, false );
|
||||
_domElement.addEventListener( 'mousedown', onDocumentMouseDown, false );
|
||||
_domElement.addEventListener( 'mouseup', onDocumentMouseCancel, false );
|
||||
_domElement.addEventListener( 'mouseleave', onDocumentMouseCancel, false );
|
||||
_domElement.addEventListener( 'touchmove', onDocumentTouchMove, false );
|
||||
_domElement.addEventListener( 'touchstart', onDocumentTouchStart, false );
|
||||
_domElement.addEventListener( 'touchend', onDocumentTouchEnd, false );
|
||||
|
||||
}
|
||||
|
||||
function deactivate() {
|
||||
|
||||
_domElement.removeEventListener( 'mousemove', onDocumentMouseMove, false );
|
||||
_domElement.removeEventListener( 'mousedown', onDocumentMouseDown, false );
|
||||
_domElement.removeEventListener( 'mouseup', onDocumentMouseCancel, false );
|
||||
_domElement.removeEventListener( 'mouseleave', onDocumentMouseCancel, false );
|
||||
_domElement.removeEventListener( 'touchmove', onDocumentTouchMove, false );
|
||||
_domElement.removeEventListener( 'touchstart', onDocumentTouchStart, false );
|
||||
_domElement.removeEventListener( 'touchend', onDocumentTouchEnd, false );
|
||||
|
||||
}
|
||||
|
||||
function dispose() {
|
||||
|
||||
deactivate();
|
||||
|
||||
}
|
||||
|
||||
function onDocumentMouseMove( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
var rect = _domElement.getBoundingClientRect();
|
||||
|
||||
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
||||
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
|
||||
if ( _selected && scope.enabled ) {
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
_selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) );
|
||||
|
||||
}
|
||||
|
||||
scope.dispatchEvent( { type: 'drag', object: _selected } );
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects, true );
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
var object = intersects[ 0 ].object;
|
||||
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );
|
||||
|
||||
if ( _hovered !== object ) {
|
||||
|
||||
scope.dispatchEvent( { type: 'hoveron', object: object } );
|
||||
|
||||
_domElement.style.cursor = 'pointer';
|
||||
_hovered = object;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if ( _hovered !== null ) {
|
||||
|
||||
scope.dispatchEvent( { type: 'hoveroff', object: _hovered } );
|
||||
|
||||
_domElement.style.cursor = 'auto';
|
||||
_hovered = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function onDocumentMouseDown( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects, true );
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
_selected = intersects[ 0 ].object;
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function onDocumentMouseCancel( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
if ( _selected ) {
|
||||
|
||||
scope.dispatchEvent( { type: 'dragend', object: _selected } );
|
||||
|
||||
_selected = null;
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = _hovered ? 'pointer' : 'auto';
|
||||
|
||||
}
|
||||
|
||||
function onDocumentTouchMove( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
event = event.changedTouches[ 0 ];
|
||||
|
||||
var rect = _domElement.getBoundingClientRect();
|
||||
|
||||
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
||||
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
|
||||
if ( _selected && scope.enabled ) {
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
_selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) );
|
||||
|
||||
}
|
||||
|
||||
scope.dispatchEvent( { type: 'drag', object: _selected } );
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function onDocumentTouchStart( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
event = event.changedTouches[ 0 ];
|
||||
|
||||
var rect = _domElement.getBoundingClientRect();
|
||||
|
||||
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
||||
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects, true );
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
_selected = intersects[ 0 ].object;
|
||||
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function onDocumentTouchEnd( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
if ( _selected ) {
|
||||
|
||||
scope.dispatchEvent( { type: 'dragend', object: _selected } );
|
||||
|
||||
_selected = null;
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'auto';
|
||||
|
||||
}
|
||||
|
||||
activate();
|
||||
|
||||
// API
|
||||
|
||||
this.enabled = true;
|
||||
|
||||
this.activate = activate;
|
||||
this.deactivate = deactivate;
|
||||
this.dispose = dispose;
|
||||
|
||||
};
|
||||
|
||||
THREE.DragControls.prototype = Object.create( THREE.EventDispatcher.prototype );
|
||||
THREE.DragControls.prototype.constructor = THREE.DragControls;
|
|
@ -0,0 +1,5 @@
|
|||
// stats.js - http://github.com/mrdoob/stats.js
|
||||
var Stats=function(){function h(a){c.appendChild(a.dom);return a}function k(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?"block":"none";l=a}var l=0,c=document.createElement("div");c.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";c.addEventListener("click",function(a){a.preventDefault();k(++l%c.children.length)},!1);var g=(performance||Date).now(),e=g,a=0,r=h(new Stats.Panel("FPS","#0ff","#002")),f=h(new Stats.Panel("MS","#0f0","#020"));
|
||||
if(self.performance&&self.performance.memory)var t=h(new Stats.Panel("MB","#f08","#201"));k(0);return{REVISION:16,dom:c,addPanel:h,showPanel:k,begin:function(){g=(performance||Date).now()},end:function(){a++;var c=(performance||Date).now();f.update(c-g,200);if(c>e+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}};
|
||||
Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f,
|
||||
v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats);
|
|
@ -0,0 +1,547 @@
|
|||
//--------------------------------------------------------------------------------------------
|
||||
// Copyright(c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot = function (app)
|
||||
{
|
||||
this.app = app;
|
||||
this.objBase = null;
|
||||
this.objects = [];
|
||||
this.path = null;
|
||||
this.animations = [];
|
||||
|
||||
this.staticElbow = true;
|
||||
this.staticElbowAngleLeft = -(Math.PI/2) - 0.25;
|
||||
this.staticElbowAngleRight = -(Math.PI/2) + 0.25;
|
||||
|
||||
this.groupElbowLeft = null;
|
||||
this.groupElbowRight = null;
|
||||
|
||||
this.meshHelperLeft = null;
|
||||
this.meshHelperRight = null;
|
||||
this.helperMaterial = new THREE.MeshLambertMaterial({ color: 0xffff00, side: THREE.DoubleSide });
|
||||
|
||||
this.doneInitializing = false;
|
||||
}
|
||||
|
||||
MSRAbot.prototype.constructor = MSRAbot;
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.initialize = function initMSRAbot(vReference)
|
||||
{
|
||||
//
|
||||
// see https://threejs.org/docs/index.html#examples/en/loaders/GLTFLoader
|
||||
//
|
||||
var scope = this;
|
||||
|
||||
this.materials = [
|
||||
new THREE.MeshPhongMaterial({ color: 0xEBEAE2, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0x87B5C9, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0x404040, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0xff0000, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0x00ff00, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0x0000ff, opacity: 0.6, transparent: true, flatShading: true }),
|
||||
new THREE.MeshPhongMaterial({ color: 0xfff0f0, opacity: 0.6, transparent: true, flatShading: true })
|
||||
];
|
||||
|
||||
var loader = new THREE.GLTFLoader().setPath('./models/');
|
||||
|
||||
loader.load('MSRAbot.v0.7.glb', function (gltf) {
|
||||
gltf.scene.traverse(function (child) {
|
||||
var pn = child.parent ? (child.parent.name) : "";
|
||||
|
||||
scope.objects[child.name] = child;
|
||||
|
||||
if (child.name == 'Base') {
|
||||
scope.objBase = child;
|
||||
child.position.set(0, vReference.y, 0);
|
||||
}
|
||||
|
||||
if (child.name == 'Hood')
|
||||
child.material = scope.materials[1];
|
||||
else if (child.name == 'Eye')
|
||||
child.material = scope.materials[2];
|
||||
else if (child.name == 'SensorPlate')
|
||||
child.material = scope.materials[1];
|
||||
else if (child.name == 'MicrophonePlate')
|
||||
child.material = scope.materials[2];
|
||||
else
|
||||
child.material = scope.materials[0];
|
||||
|
||||
if (child.isMesh) {
|
||||
child.castShadow = true;
|
||||
child.receiveShadow = true;
|
||||
}
|
||||
});
|
||||
|
||||
scope.initializeModelObjects();
|
||||
|
||||
scope.setShowHelpers(scope.app.params.showHelpers);
|
||||
|
||||
//
|
||||
// done. fire init complete event
|
||||
scope.doneInitializing = true;
|
||||
|
||||
if (scope.app.eventDoneInit != null)
|
||||
document.dispatchEvent(scope.app.eventDoneInit);
|
||||
});
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.initializeModelObjects = function ()
|
||||
{
|
||||
if (this.objBase) {
|
||||
this.objBase.updateMatrix();
|
||||
this.objBase.updateMatrixWorld(true);
|
||||
|
||||
this.app.scene.add(this.objBase);
|
||||
}
|
||||
|
||||
var strExpectedObjects = [ 'Shoulder_Left', 'Upper_Arm_Left', 'Elbow_Left', 'Shoulder_Right', 'Upper_Arm_Right', 'Elbow_Right' ];
|
||||
|
||||
for (var i = 0; i < strExpectedObjects.length; i++) {
|
||||
var name = strExpectedObjects[i];
|
||||
var obj = this.objects[name];
|
||||
if (!isObject(obj)) {
|
||||
console.error("The MSRAbot 3D model does not contain required object of name '" + name + "'!");
|
||||
window.alert("The MSRAbot 3D model does not contain required object of name '" + name + "'!");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// calculate arm segement lengths
|
||||
{
|
||||
var pos1, pos2;
|
||||
var arm_length = 50;
|
||||
|
||||
//
|
||||
// left arm
|
||||
pos1 = this.getWorldPosition("Upper_Arm_Left");
|
||||
pos2 = this.getWorldPosition("Hand_Left"); // "Elbow_Left");
|
||||
|
||||
this.seg1_left_len = pos2.sub(pos1).length();
|
||||
this.seg2_left_len = arm_length;
|
||||
|
||||
//
|
||||
// right arm
|
||||
pos1 = this.getWorldPosition("Upper_Arm_Right");
|
||||
pos2 = this.getWorldPosition("Hand_Right"); // "Elbow_Right");
|
||||
|
||||
this.seg1_right_len = pos2.sub(pos1).length();
|
||||
this.seg2_right_len = arm_length;
|
||||
}
|
||||
|
||||
this.initializeHelpers();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.initializeHelpers = function ()
|
||||
{
|
||||
//
|
||||
// elbow helpers
|
||||
this.groupElbowLeft = new THREE.Group();
|
||||
this.app.scene.add(this.groupElbowLeft);
|
||||
this.groupElbowLeft.parent = this.objects['Upper_Arm_Left'];
|
||||
this.groupElbowLeft.position.x = 0.0;
|
||||
this.groupElbowLeft.position.y = 0.0;
|
||||
this.groupElbowLeft.position.z = this.seg1_left_len;
|
||||
|
||||
this.groupElbowRight = new THREE.Group();
|
||||
this.app.scene.add(this.groupElbowRight);
|
||||
this.groupElbowRight.parent = this.objects['Upper_Arm_Right'];
|
||||
this.groupElbowRight.position.x = 0.0;
|
||||
this.groupElbowRight.position.y = 0.0;
|
||||
this.groupElbowRight.position.z = this.seg1_right_len;
|
||||
|
||||
//
|
||||
// spheres
|
||||
var sphereGeometry = new THREE.SphereBufferGeometry(8, 16, 16);
|
||||
var sphereMaterial1 = new THREE.MeshPhongMaterial({ specular: 0x333333, shininess: 5, color: 0x0000ff });
|
||||
this.helperSphereL1 = new THREE.Mesh(sphereGeometry, sphereMaterial1);
|
||||
this.app.scene.add(this.helperSphereL1);
|
||||
this.helperSphereL1.parent = this.groupElbowLeft;
|
||||
this.helperSphereL1.position.x = 0.0;
|
||||
this.helperSphereL1.position.y = 0.0;
|
||||
this.helperSphereL1.position.z = 0.0;
|
||||
|
||||
this.helperSphereR1 = new THREE.Mesh(sphereGeometry, sphereMaterial1);
|
||||
this.app.scene.add(this.helperSphereR1);
|
||||
this.helperSphereR1.parent = this.groupElbowRight;
|
||||
this.helperSphereR1.position.x = 0.0;
|
||||
this.helperSphereR1.position.y = 0.0;
|
||||
this.helperSphereR1.position.z = 0.0;
|
||||
|
||||
|
||||
var sphereMaterial2 = new THREE.MeshPhongMaterial({ specular: 0x333333, shininess: 5, color: 0x00ff00 });
|
||||
this.helperSphereL2 = new THREE.Mesh(sphereGeometry, sphereMaterial2);
|
||||
this.app.scene.add(this.helperSphereL2);
|
||||
|
||||
this.helperSphereR2 = new THREE.Mesh(sphereGeometry, sphereMaterial2);
|
||||
this.app.scene.add(this.helperSphereR2);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.setStaticElbow = function (static)
|
||||
{
|
||||
this.staticElbow = static;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.setShowHelpers = function (show)
|
||||
{
|
||||
if (this.helperSphereL1)
|
||||
this.helperSphereL1.visible = show;
|
||||
|
||||
if (this.helperSphereR1)
|
||||
this.helperSphereR1.visible = show;
|
||||
|
||||
if (this.helperSphereL2)
|
||||
this.helperSphereL2.visible = show;
|
||||
|
||||
if (this.helperSphereR2)
|
||||
this.helperSphereR2.visible = show;
|
||||
|
||||
if (!show && this.meshHelperLeft) {
|
||||
this.app.scene.remove(this.meshHelperLeft);
|
||||
disposeObject(this.meshHelperLeft, false);
|
||||
this.meshHelperLeft = undefined;
|
||||
}
|
||||
|
||||
if (!show && this.meshHelperRight) {
|
||||
this.app.scene.remove(this.meshHelperRight);
|
||||
disposeObject(this.meshHelperRight, false);
|
||||
this.meshHelperRight = undefined;
|
||||
}
|
||||
|
||||
for (var i = 0; i < this.materials.length; i++) {
|
||||
if (this.materials && this.materials[i]) {
|
||||
this.materials[i].transparent = show;
|
||||
this.materials[i].needsUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
this.setObjectMaterial('Shoulder_Cover_Right_A', this.materials[show ? 3 : 0]);
|
||||
this.setObjectMaterial('Shoulder_Cover_Right_B', this.materials[show ? 4 : 0]);
|
||||
|
||||
this.setObjectMaterial('Elbow_Cover_Right_A', this.materials[show ? 3 : 0]);
|
||||
this.setObjectMaterial('Elbow_Cover_Right_B', this.materials[show ? 4 : 0]);
|
||||
|
||||
this.setObjectMaterial('Shoulder_Cover_Left_A', this.materials[show ? 3 : 0]);
|
||||
this.setObjectMaterial('Shoulder_Cover_Left_B', this.materials[show ? 4 : 0]);
|
||||
|
||||
this.setObjectMaterial('Elbow_Cover_Left_A', this.materials[show ? 3 : 0]);
|
||||
this.setObjectMaterial('Elbow_Cover_Left_B', this.materials[show ? 4 : 0]);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.setObjectMaterial = function(name, material)
|
||||
{
|
||||
var obj = this.objects[name];
|
||||
if (isObject(obj))
|
||||
obj.material = material;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.changeOpacity = function (opacity)
|
||||
{
|
||||
for (var i = 0; i < this.materials.length; i++) {
|
||||
if (this.materials && this.materials[i]) {
|
||||
this.materials[i].opacity = opacity;
|
||||
this.materials[i].needsUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.getWorldPosition = function (name)
|
||||
{
|
||||
var obj = this.objects[name];
|
||||
|
||||
if (obj == undefined)
|
||||
return null;
|
||||
|
||||
var mat = obj.matrixWorld;
|
||||
var pos = new THREE.Vector3();
|
||||
|
||||
pos.setFromMatrixPosition(mat);
|
||||
|
||||
return pos;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.createHelperTubes = function (re, rw, le, lw)
|
||||
{
|
||||
if (!this.doneInitializing)
|
||||
return;
|
||||
|
||||
if (this.meshHelperLeft) {
|
||||
this.app.scene.remove(this.meshHelperLeft);
|
||||
disposeObject(this.meshHelperLeft, false);
|
||||
this.meshHelperLeft = undefined;
|
||||
}
|
||||
|
||||
if (this.meshHelperRight) {
|
||||
this.app.scene.remove(this.meshHelperRight);
|
||||
disposeObject(this.meshHelperRight, false);
|
||||
this.meshHelperRight = undefined;
|
||||
}
|
||||
|
||||
var vec_le = le["vector"].clone().normalize().multiplyScalar(this.seg1_left_len);
|
||||
var vec_lw = lw["vector"].clone().normalize().multiplyScalar(this.seg2_left_len);
|
||||
var vec_re = re["vector"].clone().normalize().multiplyScalar(this.seg1_right_len);
|
||||
var vec_rw = rw["vector"].clone().normalize().multiplyScalar(this.seg2_right_len);
|
||||
|
||||
var positions;
|
||||
var pos;
|
||||
|
||||
//
|
||||
// left arm
|
||||
positions = [];
|
||||
pos = this.getWorldPosition("Upper_Arm_Left");
|
||||
positions.push(pos);
|
||||
pos = pos.clone().add(vec_le);
|
||||
positions.push(pos);
|
||||
pos = pos.clone().add(vec_lw);
|
||||
positions.push(pos);
|
||||
|
||||
this.meshHelperLeft = this.createHelperTube(positions);
|
||||
this.app.scene.add(this.meshHelperLeft);
|
||||
|
||||
//
|
||||
// right arm
|
||||
positions = [];
|
||||
pos = this.getWorldPosition("Upper_Arm_Right");
|
||||
positions.push(pos);
|
||||
pos = pos.clone().add(vec_re);
|
||||
positions.push(pos);
|
||||
pos = pos.clone().add(vec_rw);
|
||||
positions.push(pos);
|
||||
|
||||
this.meshHelperRight = this.createHelperTube(positions);
|
||||
this.app.scene.add(this.meshHelperRight);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.createHelperTube = function (positions)
|
||||
{
|
||||
var curve = new THREE.CurvePath();
|
||||
|
||||
for (var i = 0; i < (positions.length-1); i++) {
|
||||
var lineCurve = new THREE.LineCurve3(positions[i], positions[i + 1]);
|
||||
|
||||
curve.add(lineCurve);
|
||||
}
|
||||
|
||||
var extrudePath = curve;
|
||||
var extrusionSegments = 100;
|
||||
var radius = 6;
|
||||
var radiusSegments = 14;
|
||||
var closed = false;
|
||||
|
||||
var tubeGeometry = new THREE.TubeBufferGeometry(extrudePath, extrusionSegments, radius, radiusSegments, closed);
|
||||
|
||||
curve = undefined;
|
||||
|
||||
var mesh = new THREE.Mesh(tubeGeometry, this.helperMaterial);
|
||||
|
||||
return mesh;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.to_sphere = function (v)
|
||||
{
|
||||
var radius = v.length();
|
||||
var theta, phi;
|
||||
|
||||
if (radius == 0)
|
||||
return [0.0, 0.0, 0.0];
|
||||
|
||||
theta = Math.acos(v.z / radius);
|
||||
|
||||
// phi is from - 180~+180
|
||||
if (v.x != 0.0)
|
||||
phi = Math.atan(v.y / v.x);
|
||||
else {
|
||||
if (v.y > 0)
|
||||
phi = THREE.MathUtils.degToRad(90);
|
||||
else
|
||||
phi = THREE.MathUtils.degToRad(-90);
|
||||
}
|
||||
|
||||
if ((v.x < 0) && (v.y > 0))
|
||||
phi = THREE.MathUtils.degToRad(180) + phi;
|
||||
else if ((v.x < 0) && (v.y < 0))
|
||||
phi = THREE.MathUtils.degToRad(-180) + phi;
|
||||
else
|
||||
phi = phi;
|
||||
|
||||
return [radius, theta, phi];
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.getFromShoulderSphericalCoords = function (radius, phi, theta)
|
||||
{
|
||||
//
|
||||
// zyx shoulder coordinate space
|
||||
var z = radius * Math.cos(theta);
|
||||
var y = radius * Math.sin(theta) * Math.sin(phi);
|
||||
var x = radius * Math.sin(theta) * Math.cos(phi);
|
||||
|
||||
return new THREE.Vector3(x, y, z);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.getFromElbowSphericalCoords = function (radius, phi, theta)
|
||||
{
|
||||
//
|
||||
// yxz elbow coordinate space
|
||||
var y = radius * Math.cos(theta);
|
||||
var x = radius * Math.sin(theta) * Math.sin(phi);
|
||||
var z = radius * Math.sin(theta) * Math.cos(phi);
|
||||
|
||||
return new THREE.Vector3(x, y, z);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.getFromCartesianCoords = function (v)
|
||||
{
|
||||
var radius = Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
|
||||
var theta, phi;
|
||||
|
||||
if (radius === 0) {
|
||||
theta = 0;
|
||||
phi = 0;
|
||||
} else {
|
||||
theta = Math.atan2(v.x, v.z);
|
||||
phi = Math.acos(THREE.MathUtils.clamp(v.y / radius, - 1, 1));
|
||||
}
|
||||
|
||||
return [radius, theta, phi];
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.updateBody = function (re, rw, le, lw)
|
||||
{
|
||||
if (!this.doneInitializing)
|
||||
return;
|
||||
|
||||
var obj, theta, phi;
|
||||
|
||||
if (this.app.params.showHelpers) {
|
||||
this.createHelperTubes(re, rw, le, lw);
|
||||
}
|
||||
|
||||
{
|
||||
//
|
||||
// convert theta and phi world to local
|
||||
var v = this.getFromShoulderSphericalCoords(this.seg1_left_len, le["phi"], le["theta"]);
|
||||
var k = this.getFromCartesianCoords(v);
|
||||
|
||||
theta = Math.PI - k[1];
|
||||
phi = k[2];
|
||||
|
||||
obj = this.objects['Shoulder_Left'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.z = theta;
|
||||
}
|
||||
|
||||
obj = this.objects['Upper_Arm_Left'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.y = phi;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
//
|
||||
// convert theta and phi world to local
|
||||
this.groupElbowLeft.updateWorldMatrix(true, false);
|
||||
this.groupElbowLeft.updateMatrixWorld(true);
|
||||
var vElbowWorld = new THREE.Vector3().setFromMatrixPosition(this.groupElbowLeft.matrixWorld);
|
||||
|
||||
var v = this.getFromElbowSphericalCoords(this.seg2_left_len, lw["phi"], lw["theta"]);
|
||||
var worldPos = vElbowWorld.clone().add(v);
|
||||
var vLocal = this.groupElbowLeft.worldToLocal(worldPos.clone());
|
||||
|
||||
if ((this.app.params.showHelpers) && (this.helperSphereL2)) {
|
||||
this.helperSphereL2.parent = this.groupElbowLeft;
|
||||
this.helperSphereL2.position.x = vLocal.x;
|
||||
this.helperSphereL2.position.y = vLocal.y;
|
||||
this.helperSphereL2.position.z = vLocal.z;
|
||||
}
|
||||
|
||||
var v = new THREE.Vector3(vLocal.x, vLocal.z, vLocal.y); // re-map to xzy coordinate space
|
||||
var k = this.getFromCartesianCoords(v);
|
||||
|
||||
theta = Math.PI / 2 + k[1];
|
||||
phi = - k[2];
|
||||
|
||||
obj = this.objects['Elbow_Left'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.y = (this.staticElbow) ? this.staticElbowAngleLeft : theta;
|
||||
}
|
||||
|
||||
obj = this.objects['Hand_Left'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'ZXY';
|
||||
obj.rotation.z = phi;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
//
|
||||
// convert theta and phi world to local
|
||||
var v = this.getFromShoulderSphericalCoords(this.seg1_right_len, re["phi"], re["theta"]);
|
||||
var k = this.getFromCartesianCoords(v);
|
||||
|
||||
theta = Math.PI + k[1];
|
||||
phi = Math.PI - k[2];
|
||||
|
||||
var quaternion = new THREE.Quaternion();
|
||||
quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, 0), v);
|
||||
|
||||
obj = this.objects['Shoulder_Right'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.z = theta;
|
||||
}
|
||||
|
||||
obj = this.objects['Upper_Arm_Right'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.y = phi;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
//
|
||||
// convert theta and phi world to local
|
||||
this.groupElbowRight.updateWorldMatrix(true, false);
|
||||
this.groupElbowRight.updateMatrixWorld(true);
|
||||
var vElbowWorld = new THREE.Vector3().setFromMatrixPosition(this.groupElbowRight.matrixWorld);
|
||||
|
||||
var v = this.getFromElbowSphericalCoords(this.seg2_right_len, rw["phi"], rw["theta"]);
|
||||
var worldPos = vElbowWorld.clone().add(v);
|
||||
var vLocal = this.groupElbowRight.worldToLocal(worldPos.clone());
|
||||
|
||||
if ((this.app.params.showHelpers) && (this.helperSphereR2)) {
|
||||
this.helperSphereR2.parent = this.groupElbowRight;
|
||||
this.helperSphereR2.position.x = vLocal.x;
|
||||
this.helperSphereR2.position.y = vLocal.y;
|
||||
this.helperSphereR2.position.z = vLocal.z;
|
||||
}
|
||||
|
||||
var v = new THREE.Vector3(vLocal.x, vLocal.z, vLocal.y);
|
||||
var k = this.getFromCartesianCoords(v);
|
||||
|
||||
theta = Math.PI / 2 + k[1];
|
||||
phi = - k[2];
|
||||
|
||||
obj = this.objects['Elbow_Right'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'XYZ';
|
||||
obj.rotation.y = (this.staticElbow) ? this.staticElbowAngleRight : theta;
|
||||
}
|
||||
|
||||
obj = this.objects['Hand_Right'];
|
||||
if (isObject(obj)) {
|
||||
obj.rotation.order = 'ZXY';
|
||||
obj.rotation.z = phi;
|
||||
}
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
MSRAbot.prototype.update = function (clock)
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
//--------------------------------------------------------------------------------------------
|
||||
// Copyright(c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
(function ()
|
||||
{
|
||||
if (typeof window.CustomEvent === "function") return false;
|
||||
|
||||
function CustomEvent(event, params) {
|
||||
params = params || { bubbles: false, cancelable: false, detail: undefined };
|
||||
var evt = document.createEvent('CustomEvent');
|
||||
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
|
||||
return evt;
|
||||
}
|
||||
|
||||
CustomEvent.prototype = window.Event.prototype;
|
||||
|
||||
window.CustomEvent = CustomEvent;
|
||||
})();
|
||||
//--------------------------------------------------------------------------------------------
|
||||
function isObject(val)
|
||||
{
|
||||
if (val === null) { return false; }
|
||||
return ((typeof val === 'function') || (typeof val === 'object'));
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
function disposeMaterial(mat)
|
||||
{
|
||||
if (!mat)
|
||||
return;
|
||||
|
||||
if (mat.map) {
|
||||
mat.map.dispose();
|
||||
mat.map = undefined;
|
||||
}
|
||||
|
||||
if (mat.materials) {
|
||||
for (i = 0; i < mat.materials.length; i++) {
|
||||
if (mat.materials[i].map) {
|
||||
mat.materials[i].map.dispose();
|
||||
mat.materials[i].map = undefined;
|
||||
}
|
||||
|
||||
mat.materials[i].dispose();
|
||||
}
|
||||
} else {
|
||||
mat.dispose();
|
||||
}
|
||||
|
||||
mat = undefined;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
function disposeObject(obj, disposeMaterial)
|
||||
{
|
||||
if (obj !== null) {
|
||||
for (var i = 0; i < obj.children.length; i++) {
|
||||
disposeObject(obj.children[i]);
|
||||
}
|
||||
|
||||
if (obj.geometry) {
|
||||
obj.geometry.dispose();
|
||||
obj.geometry = undefined;
|
||||
}
|
||||
|
||||
if (disposeMaterial && obj.material) {
|
||||
disposeMaterial(obj.material, disposeMaterial);
|
||||
obj.material = undefined;
|
||||
}
|
||||
|
||||
if (obj.texture) {
|
||||
obj.texture.dispose();
|
||||
obj.texture = undefined;
|
||||
}
|
||||
}
|
||||
obj = undefined;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,356 @@
|
|||
{
|
||||
"Ges01_wavehand": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"232"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"826"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1420"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1882"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2641"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3334"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3598"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"3862"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"4555"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"4984"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position155": {
|
||||
"start time": [
|
||||
"5116"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,292 @@
|
|||
{
|
||||
"Ges01_wavehand": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"67"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"826"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1387"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2641"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3532"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"4357"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"5083"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position155": {
|
||||
"start time": [
|
||||
"5116"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,356 @@
|
|||
{
|
||||
"Ges02_balancinghands": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"298"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"760"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1552"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2113"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2410"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"2872"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3400"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"3928"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"4885"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"5248"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position162": {
|
||||
"start time": [
|
||||
"5347"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,324 @@
|
|||
{
|
||||
"Ges02_balancinghands": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"166"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"859"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1585"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2278"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2905"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3433"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3994"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4786"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5314"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position162": {
|
||||
"start time": [
|
||||
"5347"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,420 @@
|
|||
{
|
||||
"Ges03_drawlines": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"265"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"958"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1288"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2707"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3466"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3829"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4357"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5314"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"6337"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"6667"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position11": {
|
||||
"start time": [
|
||||
"7063"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position217": {
|
||||
"start time": [
|
||||
"7162"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,420 @@
|
|||
{
|
||||
"Ges03_drawlines": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"496"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"1354"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"2014"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2773"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"3565"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"4258"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"4456"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4819"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5281"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"5611"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"6205"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position11": {
|
||||
"start time": [
|
||||
"6733"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position217": {
|
||||
"start time": [
|
||||
"7162"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,388 @@
|
|||
{
|
||||
"Ges04_comehere": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"100"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"463"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1519"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1717"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2278"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"2839"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3400"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4159"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"4522"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"5281"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"5644"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position176": {
|
||||
"start time": [
|
||||
"5809"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,388 @@
|
|||
{
|
||||
"Ges04_comehere": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"562"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"1255"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1618"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2245"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2839"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3532"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"4126"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4423"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5050"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"5479"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"5578"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position176": {
|
||||
"start time": [
|
||||
"5809"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,420 @@
|
|||
{
|
||||
"Ges05_demopoint": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"199"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"958"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1387"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2476"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3070"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3862"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4324"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"4357"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"4687"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"5512"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position11": {
|
||||
"start time": [
|
||||
"6040"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position191": {
|
||||
"start time": [
|
||||
"6304"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,324 @@
|
|||
{
|
||||
"Ges05_demopoint": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"364"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"958"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1420"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1948"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2542"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3763"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"4456"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"5413"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"6040"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position191": {
|
||||
"start time": [
|
||||
"6304"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,324 @@
|
|||
{
|
||||
"Ges06_chickenwing": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"628"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"1387"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2509"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"3037"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3499"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3994"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4852"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5149"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position160": {
|
||||
"start time": [
|
||||
"5281"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,324 @@
|
|||
{
|
||||
"Ges06_chickenwing": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"628"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"1387"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2509"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"3037"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3499"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"3994"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"4852"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5149"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position160": {
|
||||
"start time": [
|
||||
"5281"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,452 @@
|
|||
{
|
||||
"joints - Arms halfcircle motion": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"67"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Backward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"397"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1057"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Backward",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Backward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Backward",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Backward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1915"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2311"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"2377"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"2971"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"3367"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"3499"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"4192"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right Forward",
|
||||
"High"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"4951"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position11": {
|
||||
"start time": [
|
||||
"5050"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position12": {
|
||||
"start time": [
|
||||
"5809"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position181": {
|
||||
"start time": [
|
||||
"5974"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,420 @@
|
|||
{
|
||||
"joints - Arms tri motion": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"364"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"1090"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1684"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Right",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"2476"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2938"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position5": {
|
||||
"start time": [
|
||||
"3763"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position6": {
|
||||
"start time": [
|
||||
"4291"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position7": {
|
||||
"start time": [
|
||||
"5017"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position8": {
|
||||
"start time": [
|
||||
"5413"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Left",
|
||||
"Normal"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position9": {
|
||||
"start time": [
|
||||
"6337"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position10": {
|
||||
"start time": [
|
||||
"6733"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position11": {
|
||||
"start time": [
|
||||
"7525"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position235": {
|
||||
"start time": [
|
||||
"7756"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,196 @@
|
|||
{
|
||||
"joints -Left Arm Up&Down": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"67"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"364"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"991"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1552"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Left Forward",
|
||||
"High"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"2113"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position70": {
|
||||
"start time": [
|
||||
"2311"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,196 @@
|
|||
{
|
||||
"joints -Right Arm Up&Down": {
|
||||
"Position0": {
|
||||
"start time": [
|
||||
"67"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position1": {
|
||||
"start time": [
|
||||
"364"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position2": {
|
||||
"start time": [
|
||||
"1024"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position3": {
|
||||
"start time": [
|
||||
"1255"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position4": {
|
||||
"start time": [
|
||||
"1585"
|
||||
],
|
||||
"duration": [
|
||||
"1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right wrist": [
|
||||
"Forward",
|
||||
"High"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"Position72": {
|
||||
"start time": [
|
||||
"2377"
|
||||
],
|
||||
"duration": [
|
||||
"-1"
|
||||
],
|
||||
"head": [
|
||||
"Forward",
|
||||
"Normal"
|
||||
],
|
||||
"right elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"right wrist": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left elbow": [
|
||||
"Place",
|
||||
"Low"
|
||||
],
|
||||
"left wrist": [
|
||||
"Forward",
|
||||
"Low"
|
||||
],
|
||||
"rotation": [
|
||||
"ToLeft",
|
||||
"0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
Двоичные данные
docs/LabanSuite_BlockDiagram.jpg
До Ширина: | Высота: | Размер: 465 KiB После Ширина: | Высота: | Размер: 417 KiB |
Двоичные данные
docs/LabanSuite_Modules.jpg
До Ширина: | Высота: | Размер: 114 KiB После Ширина: | Высота: | Размер: 106 KiB |