Michael Herzog 1 год назад
Родитель
Сommit
7d1859d6c2
57 измененных файлов с 8 добавлено и 24216 удалено
  1. 2 5
      docs/examples/en/animations/CCDIKSolver.html
  2. 0 183
      docs/examples/en/animations/MMDAnimationHelper.html
  3. 0 125
      docs/examples/en/animations/MMDPhysics.html
  4. 0 134
      docs/examples/en/loaders/MMDLoader.html
  5. 2 5
      docs/examples/zh/animations/CCDIKSolver.html
  6. 0 185
      docs/examples/zh/animations/MMDAnimationHelper.html
  7. 0 129
      docs/examples/zh/animations/MMDPhysics.html
  8. 0 134
      docs/examples/zh/loaders/MMDLoader.html
  9. 3 12
      docs/list.json
  10. 0 1
      docs/manual/ar/introduction/Animation-system.html
  11. 0 1
      docs/manual/en/introduction/Animation-system.html
  12. 0 1
      docs/manual/fr/introduction/Animation-system.html
  13. 0 1
      docs/manual/it/introduction/Animation-system.html
  14. 0 1
      docs/manual/ja/introduction/Animation-system.html
  15. 0 1
      docs/manual/ko/introduction/Animation-system.html
  16. 0 1
      docs/manual/pt-br/introduction/Animation-system.html
  17. 0 1
      docs/manual/zh/introduction/Animation-system.html
  18. 0 3
      examples/files.json
  19. 0 5
      examples/jsm/Addons.js
  20. 1 2
      examples/jsm/animation/CCDIKSolver.js
  21. 0 1209
      examples/jsm/animation/MMDAnimationHelper.js
  22. 0 1408
      examples/jsm/animation/MMDPhysics.js
  23. 0 223
      examples/jsm/exporters/MMDExporter.js
  24. 0 11530
      examples/jsm/libs/mmdparser.module.js
  25. 0 2298
      examples/jsm/loaders/MMDLoader.js
  26. 0 134
      examples/jsm/shaders/MMDToonShader.js
  27. 0 3
      examples/models/mmd/LICENSE
  28. 0 36
      examples/models/mmd/Readme.txt
  29. 0 38
      examples/models/mmd/audios/readme.txt
  30. BIN
      examples/models/mmd/audios/wavefile_short.mp3
  31. BIN
      examples/models/mmd/miku/eyeM2.bmp
  32. BIN
      examples/models/mmd/miku/miku_v2.pmd
  33. 0 5
      examples/models/mmd/miku/readme.txt
  34. 0 389
      examples/models/mmd/miku/readme_miku_v2.txt
  35. 0 16
      examples/models/mmd/vmds/readme.txt
  36. 0 43
      examples/models/mmd/vmds/readme_wavefile.txt
  37. 0 41
      examples/models/mmd/vmds/readme_wavefile_camera.txt
  38. BIN
      examples/models/mmd/vmds/wavefile_camera.vmd
  39. BIN
      examples/models/mmd/vmds/wavefile_v2.vmd
  40. 0 470
      examples/models/mmd/vpds/01.vpd
  41. 0 470
      examples/models/mmd/vpds/02.vpd
  42. 0 470
      examples/models/mmd/vpds/03.vpd
  43. 0 470
      examples/models/mmd/vpds/04.vpd
  44. 0 470
      examples/models/mmd/vpds/05.vpd
  45. 0 470
      examples/models/mmd/vpds/06.vpd
  46. 0 470
      examples/models/mmd/vpds/07.vpd
  47. 0 470
      examples/models/mmd/vpds/08.vpd
  48. 0 470
      examples/models/mmd/vpds/09.vpd
  49. 0 470
      examples/models/mmd/vpds/10.vpd
  50. 0 470
      examples/models/mmd/vpds/11.vpd
  51. 0 12
      examples/models/mmd/vpds/readme.txt
  52. BIN
      examples/screenshots/webgl_loader_mmd.jpg
  53. BIN
      examples/screenshots/webgl_loader_mmd_audio.jpg
  54. BIN
      examples/screenshots/webgl_loader_mmd_pose.jpg
  55. 0 240
      examples/webgl_loader_mmd.html
  56. 0 193
      examples/webgl_loader_mmd_audio.html
  57. 0 298
      examples/webgl_loader_mmd_pose.html

+ 2 - 5
docs/examples/en/animations/CCDIKSolver.html

@@ -11,7 +11,7 @@
 
 		<p class="desc"> A solver for IK with <a href="https://sites.google.com/site/auraliusproject/ccd-algorithm">`CCD Algorithm`</a>. <br /><br />
 		[name] solves Inverse Kinematics Problem with CCD Algorithm.
-		[name] is designed to work with [page:SkinnedMesh] but also can be used with [page:MMDLoader] or [page:GLTFLoader] skeleton.
+		[name] is designed to work with [page:SkinnedMesh] but also can be used with [page:GLTFLoader] skeleton.
 		</p>
 
 		<iframe id="scene" src="scenes/ccdiksolver-browser.html"></iframe>
@@ -116,10 +116,7 @@
 		<h2>Examples</h2>
 
 		<p>
-			[example:webgl_animation_skinning_ik]<br />
-			[example:webgl_loader_mmd]<br />
-			[example:webgl_loader_mmd_pose]<br />
-			[example:webgl_loader_mmd_audio]
+			[example:webgl_animation_skinning_ik]
 		</p>
 
 		<h2>Constructor</h2>

+ 0 - 183
docs/examples/en/animations/MMDAnimationHelper.html

@@ -1,183 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<p class="desc"> A animation helper for <a href="https://sites.google.com/view/evpvp/">`MMD`</a> resources. <br /><br />
-		[name] handles animation of MMD assets loaded by [page:MMDLoader] with MMD special features as IK, Grant, and Physics.
-		It uses [page:CCDIKSolver] and [page:MMDPhysics] inside.
-		</p>
-
-		<h2>Import</h2>
-
-		<p>
-			[name] is an add-on, and must be imported explicitly.
-			See [link:#manual/introduction/Installation Installation / Addons].
-		</p>
-
-		<code>
-			import { MMDAnimationHelper } from 'three/addons/animation/MMDAnimationHelper.js';
-		</code>
-
-		<h2>Code Example</h2>
-
-		<code>
-		// Instantiate a helper
-		const helper = new MMDAnimationHelper();
-
-		// Load MMD resources and add to helper
-		new MMDLoader().loadWithAnimation(
-			'models/mmd/miku.pmd',
-			'models/mmd/dance.vmd',
-			function ( mmd ) {
-
-				helper.add( mmd.mesh, {
-					animation: mmd.animation,
-					physics: true
-				} );
-
-				scene.add( mmd.mesh );
-
-				new THREE.AudioLoader().load(
-					'audios/mmd/song.mp3',
-					function ( buffer ) {
-
-						const listener = new THREE.AudioListener();
-						const audio = new THREE.Audio( listener ).setBuffer( buffer );
-
-						listener.position.z = 1;
-
-						scene.add( audio );
-						scene.add( listener );
-
-					}
-
-				);
-
-			}
-		);
-
-		function render() {
-
-			helper.update( clock.getDelta() );
-			renderer.render( scene, camera );
-
-		}
-		</code>
-
-		<h2>Examples</h2>
-
-		<p>
-			[example:webgl_loader_mmd]<br />
-			[example:webgl_loader_mmd_pose]<br />
-			[example:webgl_loader_mmd_audio]
-		</p>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [param:Object params] )</h3>
-		<p>
-		[page:Object params] — (optional)<br />
-		</p>
-		<ul>
-			<li> [page:Boolean sync] - Whether animation durations of added objects are synched. Default is true.</li>
-			<li> [page:Number afterglow] - Default is 0.0.</li>
-			<li> [page:Boolean resetPhysicsOnLoop] - Default is true.</li>
-			<li> [page:Boolean pmxAnimation] - If it is set to true, the helper follows the complex and costly PMX animation system.
-			Try this option only if your PMX model animation doesn't work well. Default is false.</li>
-		</ul>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>Properties</h2>
-
-		<h3>[property:Audio audio]</h3>
-		<p>An [page:Audio] added to helper.</p>
-
-		<h3>[property:Camera camera]</h3>
-		<p>An [page:Camera] added to helper.</p>
-
-		<h3>[property:Array meshes]</h3>
-		<p>An array of [page:SkinnedMesh] added to helper.</p>
-
-		<h3>[property:WeakMap objects]</h3>
-		<p>A [page:WeakMap] which holds animation stuffs used in helper for objects added to helper. For example, you can access [page:AnimationMixer] for an added [page:SkinnedMesh] with "helper.objects.get( mesh ).mixer"</p>
-
-		<h3>[property:Function onBeforePhysics]</h3>
-		<p>An optional callback that is executed immediately before the physics calculation for an [page:SkinnedMesh]. This function is called with the [page:SkinnedMesh].</p>
-
-		<h2>Methods</h2>
-
-		<h3>[method:MMDAnimationHelper add]( [param:Object3D object], [param:Object params] )</h3>
-		<p>
-		[page:Object3D object] — [page:SkinnedMesh], [page:Camera], or [page:Audio]<br />
-		[page:Object params] — (optional)<br />
-		</p>
-		<ul>
-			<li>[page:AnimationClip animation] - an [page:AnimationClip] or an array of [page:AnimationClip] set to object. Only for [page:SkinnedMesh] and [page:Camera]. Default is undefined.</li>
-			<li>[page:Boolean physics] - Only for [page:SkinnedMesh]. A flag whether turn on physics. Default is true.</li>
-			<li>[page:Integer warmup] - Only for [page:SkinnedMesh] and physics is true. Physics parameter. Default is 60.</li>
-			<li>[page:Number unitStep] - Only for [page:SkinnedMesh] and physics is true. Physics parameter. Default is 1 / 65.</li>
-			<li>[page:Integer maxStepNum] - Only for [page:SkinnedMesh] and physics is true. Physics parameter. Default is 3.</li>
-			<li>[page:Vector3 gravity] - Only for [page:SkinnedMesh] and physics is true. Physics parameter. Default is ( 0, - 9.8 * 10, 0 ).</li>
-			<li>[page:Number delayTime] - Only for [page:Audio]. Default is 0.0.</li>
-		</ul>
-		<p>
-		Add an [page:SkinnedMesh], [page:Camera], or [page:Audio] to helper and setup animation. The animation durations of added objects are synched.
-		If camera/audio has already been added, it'll be replaced with a new one.
-		</p>
-
-		<h3>[method:MMDAnimationHelper enable]( [param:String key], [param:Boolean enabled] )</h3>
-		<p>
-		[page:String key] — Allowed strings are 'animation', 'ik', 'grant', 'physics', and 'cameraAnimation'.<br />
-		[page:Boolean enabled] — true is enable, false is disable<br />
-		</p>
-		<p>
-		Enable/Disable an animation feature
-		</p>
-
-		<h3>[method:MMDAnimationHelper pose]( [param:SkinnedMesh mesh], [param:Object vpd], [param:Object params] )</h3>
-		<p>
-		[page:SkinnedMesh mesh] — [page:SkinnedMesh] which changes the posing. It doesn't need to be added to helper.<br />
-		[page:Object vpd] — VPD content obtained by [page:MMDLoader].loadVPD<br />
-		[page:Object params] — (optional)<br />
-		</p>
-		<ul>
-			<li>[page:Boolean resetPose] - Default is true.</li>
-			<li>[page:Boolean ik] - Default is true.</li>
-			<li>[page:Boolean grant] - Default is true.</li>
-		</ul>
-		<p>
-		Changes the posing of [page:SkinnedMesh] as VPD content specifies.
-		</p>
-
-		<h3>[method:MMDAnimationHelper remove]( [param:Object3D object] )</h3>
-		<p>
-		[page:Object3D object] — [page:SkinnedMesh], [page:Camera], or [page:Audio]<br />
-		</p>
-		<p>
-		Remove an [page:SkinnedMesh], [page:Camera], or [page:Audio] from helper.
-		</p>
-
-		<h3>[method:MMDAnimationHelper update]( [param:Number delta] )</h3>
-		<p>
-		[page:Number delta] — number in second<br />
-		</p>
-		<p>
-		Advance mixer time and update the animations of objects added to helper
-		</p>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/MMDAnimationHelper.js examples/jsm/animation/MMDAnimationHelper.js]
-		</p>
-	</body>
-</html>

+ 0 - 125
docs/examples/en/animations/MMDPhysics.html

@@ -1,125 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<p class="desc"> A Physics handler for <a href="https://sites.google.com/view/evpvp/">`MMD`</a> resources. <br /><br />
-		[name] calculates Physics for model loaded by [page:MMDLoader] with [link:https://github.com/kripken/ammo.js/ ammo.js] (Bullet-based JavaScript Physics engine).
-		</p>
-
-		<h2>Import</h2>
-
-		<p>
-			[name] is an add-on, and must be imported explicitly.
-			See [link:#manual/introduction/Installation Installation / Addons].
-		</p>
-
-		<code>
-			import { MMDPhysics } from 'three/addons/animation/MMDPhysics.js';
-		</code>
-
-		<h2>Code Example</h2>
-
-		<code>
-		let physics;
-
-		// Load MMD resources and instantiate MMDPhysics
-		new MMDLoader().load(
-			'models/mmd/miku.pmd',
-			function ( mesh ) {
-
-				physics = new MMDPhysics( mesh )
-				scene.add( mesh );
-
-			}
-		);
-
-		function render() {
-
-			const delta = clock.getDelta();
-			animate( delta );  // update bones
-			if ( physics !== undefined ) physics.update( delta );
-			renderer.render( scene, camera );
-
-		}
-		</code>
-
-		<h2>Examples</h2>
-
-		<p>
-			[example:webgl_loader_mmd]<br />
-			[example:webgl_loader_mmd_audio]
-		</p>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [param:SkinnedMesh mesh], [param:Array rigidBodyParams], [param:Array constraintParams], [param:Object params] )</h3>
-		<p>
-		[page:SkinnedMesh mesh] — [page:SkinnedMesh] for which [name] calculates Physics.<br />
-		[page:Array rigidBodyParams] — An array of [page:Object] specifying Rigid Body parameters.<br />
-		[page:Array constraintParams] — (optional) An array of [page:Object] specifying Constraint parameters.<br />
-		[page:Object params] — (optional)<br />
-		</p>
-		<ul>
-			<li>[page:Number unitStep] - Default is 1 / 65.</li>
-			<li>[page:Integer maxStepNum] - Default is 3.</li>
-			<li>[page:Vector3 gravity] - Default is ( 0, - 9.8 * 10, 0 )</li>
-		</ul>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>Properties</h2>
-
-		<h3>[property:Array mesh]</h3>
-		<p>[page:SkinnedMesh] passed to the constructor.</p>
-
-		<h2>Methods</h2>
-
-		<h3>[method:MMDPhysicsHelper createHelper]()</h3>
-		<p>
-		Return [page:MMDPhysicsHelper]. You can visualize Rigid bodies by adding the helper to scene.
-		</p>
-
-		<h3>[method:this reset]()</h3>
-		<p>
-		Resets Rigid bodies transform to current bone's.
-		</p>
-
-		<h3>[method:this setGravity]( [param:Vector3 gravity] )</h3>
-		<p>
-		[page:Vector3 gravity] — Direction and volume of gravity.
-		</p>
-		<p>
-		Set gravity.
-		</p>
-
-		<h3>[method:this update]( [param:Number delta] )</h3>
-		<p>
-		[page:Number delta] — Time in second.
-		</p>
-		<p>
-		Advance Physics calculation and updates bones.
-		</p>
-
-		<h3>[method:this warmup]( [param:Integer cycles] )</h3>
-		<p>
-		[page:Number delta] — Time in second.
-		</p>
-		<p>
-		Warm up Rigid bodies. Calculates cycles steps.
-		</p>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/MMDPhysics.js examples/jsm/animation/MMDPhysics.js]
-		</p>
-	</body>
-</html>

+ 0 - 134
docs/examples/en/loaders/MMDLoader.html

@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Loader] &rarr;
-
-		<h1>[name]</h1>
-
-		<p class="desc"> A loader for <a href="https://sites.google.com/view/evpvp/">`MMD`</a> resources. <br /><br />
-		[name] creates Three.js Objects from MMD resources as PMD, PMX, VMD, and VPD files.
-		See [page:MMDAnimationHelper] for MMD animation handling as IK, Grant, and Physics.<br /><br />
-
-		If you want raw content of MMD resources, use .loadPMD/PMX/VMD/VPD methods.</p>
-
-		<h2>Import</h2>
-
-		<p>
-			[name] is an add-on, and must be imported explicitly.
-			See [link:#manual/introduction/Installation Installation / Addons].
-		</p>
-
-		<code>
-			import { MMDLoader } from 'three/addons/loaders/MMDLoader.js';
-		</code>
-
-		<h2>Code Example</h2>
-
-		<code>
-		// Instantiate a loader
-		const loader = new MMDLoader();
-
-		// Load a MMD model
-		loader.load(
-			// path to PMD/PMX file
-			'models/mmd/miku.pmd',
-			// called when the resource is loaded
-			function ( mesh ) {
-
-				scene.add( mesh );
-
-			},
-			// called when loading is in progress
-			function ( xhr ) {
-
-				console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
-
-			},
-			// called when loading has errors
-			function ( error ) {
-
-				console.log( 'An error happened' );
-
-			}
-		);
-		</code>
-
-		<h2>Examples</h2>
-		<p>
-		[example:webgl_loader_mmd]<br />
-		[example:webgl_loader_mmd_pose]<br />
-		[example:webgl_loader_mmd_audio]
-		</p>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
-		</p>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>Properties</h2>
-		<p>See the base [page:Loader] class for common properties.</p>
-
-		<h2>Methods</h2>
-		<p>See the base [page:Loader] class for common methods.</p>
-
-		<h3>[method:undefined load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — A string containing the path/URL of the `.pmd` or `.pmx` file.<br />
-		[page:Function onLoad] — A function to be called after the loading is successfully completed.<br />
-		[page:Function onProgress] — (optional) A function to be called while the loading is in progress. The argument will be the XMLHttpRequest instance, that contains .[page:Integer total] and .[page:Integer loaded] bytes. If the server does not set the Content-Length header; .[page:Integer total] will be 0.<br />
-		[page:Function onError] — (optional) A function to be called if an error occurs during loading. The function receives error as an argument.<br />
-		</p>
-		<p>
-		Begin loading PMD/PMX model file from url and fire the callback function with the parsed [page:SkinnedMesh] containing [page:BufferGeometry] and an array of [page:MeshToonMaterial].
-		</p>
-
-		<h3>[method:undefined loadAnimation]( [param:String url], [param:Object3D object], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — A string or an array of string containing the path/URL of the `.vmd` file(s).If two or more files are specified, they'll be merged.<br />
-		[page:Object3D object] — [page:SkinnedMesh] or [page:Camera]. Clip and its tracks will be fitting to this object.<br />
-		[page:Function onLoad] — A function to be called after the loading is successfully completed.<br />
-		[page:Function onProgress] — (optional) A function to be called while the loading is in progress. The argument will be the XMLHttpRequest instance, that contains .[page:Integer total] and .[page:Integer loaded] bytes.<br />
-		[page:Function onError] — (optional) A function to be called if an error occurs during loading. The function receives error as an argument.<br />
-		</p>
-		<p>
-		Begin loading VMD motion file(s) from url(s) and fire the callback function with the parsed [page:AnimationClip].
-		</p>
-
-		<h3>[method:undefined loadWithAnimation]( [param:String modelUrl], [param:String vmdUrl], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String modelUrl] — A string containing the path/URL of the `.pmd` or `.pmx` file.<br />
-		[page:String vmdUrl] — A string or an array of string containing the path/URL of the `.vmd` file(s).<br />
-		[page:Function onLoad] — A function to be called after the loading is successfully completed.<br />
-		[page:Function onProgress] — (optional) A function to be called while the loading is in progress. The argument will be the XMLHttpRequest instance, that contains .[page:Integer total] and .[page:Integer loaded] bytes.<br />
-		[page:Function onError] — (optional) A function to be called if an error occurs during loading. The function receives error as an argument.<br />
-		</p>
-		<p>
-		Begin loading PMD/PMX model file and VMD motion file(s) from urls and fire the callback function with an [page:Object] containing parsed [page:SkinnedMesh] and [page:AnimationClip] fitting to the [page:SkinnedMesh].
-		</p>
-
-		<h3>[method:this setAnimationPath]( [param:String animationPath] )</h3>
-		<p>
-		[page:String animationPath] — Base path for loading animation data (VMD/VPD files).
-		</p>
-		<p>
-		Set the base path for additional resources like textures.
-		</p>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/MMDLoader.js examples/jsm/loaders/MMDLoader.js]
-		</p>
-	</body>
-</html>

+ 2 - 5
docs/examples/zh/animations/CCDIKSolver.html

@@ -14,7 +14,7 @@
 	<p class="desc"> 一种基于 <a href="https://sites.google.com/site/auraliusproject/ccd-algorithm">`CCD Algorithm`</a> 的 IK
 		解算器。<br /><br />
 		[name] 用 CCD 算法解决逆运动学问题。
-		[name] 设计用于与 [page:SkinnedMesh] 配合使用,但也可与 [page:MMDLoader] 或 [page:GLTFLoader] 配合使用。
+		[name] 设计用于与 [page:SkinnedMesh] 配合使用,但也可与 [page:GLTFLoader] 配合使用。
 	</p>
 
 	<iframe id="scene" src="scenes/ccdiksolver-browser.html"></iframe>
@@ -118,10 +118,7 @@
 	<h2>例子</h2>
 
 	<p>
-		[example:webgl_animation_skinning_ik]<br />
-		[example:webgl_loader_mmd]<br />
-		[example:webgl_loader_mmd_pose]<br />
-		[example:webgl_loader_mmd_audio]
+		[example:webgl_animation_skinning_ik]
 	</p>
 
 	<h2>构造函数</h2>

+ 0 - 185
docs/examples/zh/animations/MMDAnimationHelper.html

@@ -1,185 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-
-<head>
-	<meta charset="utf-8" />
-	<base href="../../../" />
-	<script src="page.js"></script>
-	<link type="text/css" rel="stylesheet" href="page.css" />
-</head>
-
-<body>
-	<h1>MMD动画辅助对象([name])</h1>
-
-	<p class="desc"> <a href="https://sites.google.com/view/evpvp/">`MMD`</a> 资源的动画辅助对象。<br /><br />
-		[name] 处理由 [page:MMDLoader] 加载的 MMD 资源的动画,具有 IK、Grant 和Physics 等 MMD 特殊功能。它内部使用 [page:CCDIKSolver] 和
-		[page:MMDPhysics]。
-	</p>
-
-	<h2>导入</h2>
-
-	<p>
-		[name] 是一个附加组件,必须显式导入。请参阅 [link:#manual/introduction/Installation Installation / Addons]。
-	</p>
-
-	<code>
-			import { MMDAnimationHelper } from 'three/addons/animation/MMDAnimationHelper.js';
-		</code>
-
-	<h2>代码示例</h2>
-
-	<code>
-		// Instantiate a helper
-		const helper = new MMDAnimationHelper();
-
-		// Load MMD resources and add to helper
-		new MMDLoader().loadWithAnimation(
-			'models/mmd/miku.pmd',
-			'models/mmd/dance.vmd',
-			function ( mmd ) {
-
-				helper.add( mmd.mesh, {
-					animation: mmd.animation,
-					physics: true
-				} );
-
-				scene.add( mmd.mesh );
-
-				new THREE.AudioLoader().load(
-					'audios/mmd/song.mp3',
-					function ( buffer ) {
-
-						const listener = new THREE.AudioListener();
-						const audio = new THREE.Audio( listener ).setBuffer( buffer );
-
-						listener.position.z = 1;
-
-						scene.add( audio );
-						scene.add( listener );
-
-					}
-
-				);
-
-			}
-		);
-
-		function render() {
-
-			helper.update( clock.getDelta() );
-			renderer.render( scene, camera );
-
-		}
-		</code>
-
-	<h2>例子</h2>
-
-	<p>
-		[example:webgl_loader_mmd]<br />
-		[example:webgl_loader_mmd_pose]<br />
-		[example:webgl_loader_mmd_audio]
-	</p>
-
-	<h2>构造函数</h2>
-
-	<h3>[name]( [param:Object params] )</h3>
-	<p>
-		[page:Object params] — (可选)<br />
-	</p>
-	<ul>
-		<li> [page:Boolean sync] - 添加对象的动画持续时间是否同步。默认为 true</li>
-		<li> [page:Number afterglow] - 默认值为 0.0。</li>
-		<li> [page:Boolean resetPhysicsOnLoop] - 默认值为 true</li>
-		<li> [page:Boolean pmxAnimation] - 如果设置为 true,则帮助程序遵循复杂且昂贵的 PMX 动画系统。仅当您的 PMX 模型动画效果不佳时才尝试此选项。默认为 false。</li>
-	</ul>
-	<p>
-		创建一个新的 [name]。
-	</p>
-
-	<h2>属性</h2>
-
-	<h3>[property:Audio audio]</h3>
-	<p>添加的 [page:Audio] 音频</p>
-
-	<h3>[property:Camera camera]</h3>
-	<p>添加的 [page:Camera] 相机</p>
-
-	<h3>[property:Array meshes]</h3>
-	<p>添加的 [page:SkinnedMesh] 数组</p>
-
-	<h3>[property:WeakMap objects]</h3>
-	<p>一个 [page:WeakMap] ,它保存添加到 helper 的对象的 helper 中使用的动画内容。例如,您可以使用“helper.objects.get(mesh).mixer”访问添加的
-		[page:AnimationMixer] 的 [page:SkinnedMesh]。</p>
-
-	<h3>[property:Function onBeforePhysics]</h3>
-	<p> 在 [page:SkinnedMesh] 的物理计算之前立即执行的可选回调。该函数通过 [page:SkinnedMesh] 调用。</p>
-
-	<h2>方法</h2>
-
-	<h3>[method:MMDAnimationHelper add]( [param:Object3D object], [param:Object params] )</h3>
-	<p>
-		[page:Object3D object] — [page:SkinnedMesh], [page:Camera] 或 [page:Audio]<br />
-		[page:Object params] — (可选)<br />
-	</p>
-	<ul>
-		<li>[page:AnimationClip animation] - 一个 [page:AnimationClip] 或设置为对象的 [page:AnimationClip] 数组。仅适用于 [page:SkinnedMesh]
-			和 [page:Camera]。默认值 undefined。</li>
-		<li>[page:Boolean physics] - 仅适用于 [page:SkinnedMesh]。是否开启物理标志。默认为 true。</li>
-		<li>[page:Integer warmup] - 仅适用于 [page:SkinnedMesh] 并且 physics 为 true。物理参数。默认值为 60。</li>
-		<li>[page:Number unitStep] - 仅适用于 [page:SkinnedMesh] 并且 physics 为 true。物理参数。默认值为 1 / 65。</li>
-		<li>[page:Integer maxStepNum] - 仅适用于 [page:SkinnedMesh] 并且 physics 为 true。物理参数。默认值为 3。</li>
-		<li>[page:Vector3 gravity] - 仅适用于 [page:SkinnedMesh] 并且 physics 为 true。物理参数。默认值为 ( 0, - 9.8 * 10, 0 )。</li>
-		<li>[page:Number delayTime] - 仅适用于 [page:Audio]。默认值为 0.0。</li>
-	</ul>
-	<p>
-		添加 [page:SkinnedMesh]、[page:Camera] 或 [page:Audio] 到辅助对象并设置动画。 添加的对象的动画持续时间是同步的。如果已经添加了摄像头/音频,它将被替换为新的。
-	</p>
-
-	<h3>[method:MMDAnimationHelper enable]( [param:String key], [param:Boolean enabled] )</h3>
-	<p>
-		[page:String key] — 允许的字符串为 'animation'、'ik'、'grant'、'physicals' 和 'cameraAnimation'。<br />
-		[page:Boolean enabled] — true 表示启用,false 表示禁用。<br />
-	</p>
-	<p>
-		启用/禁用动画功能
-	</p>
-
-	<h3>[method:MMDAnimationHelper pose]( [param:SkinnedMesh mesh], [param:Object vpd], [param:Object params] )</h3>
-	<p>
-		[page:SkinnedMesh mesh] — [page:SkinnedMesh] 改变姿势。不需要将其添加到 helper 中。<br />
-		[page:Object vpd] — 获取由 [page:MMDLoader].loadVPD 加载的 VPD 内容<br />
-		[page:Object params] — (可选)<br />
-	</p>
-	<ul>
-		<li>[page:Boolean resetPose] - 默认为 true</li>
-		<li>[page:Boolean ik] - 默认为 true</li>
-		<li>[page:Boolean grant] - 默认为 true</li>
-	</ul>
-	<p>
-		根据 VPD 内容指定 更改 [page:SkinnedMesh] 的姿势。
-	</p>
-
-	<h3>[method:MMDAnimationHelper remove]( [param:Object3D object] )</h3>
-	<p>
-		[page:Object3D object] — [page:SkinnedMesh]、[page:Camera] 或 [page:Audio]<br />
-	</p>
-	<p>
-		从助手中删除 [page:SkinnedMesh]、[page:Camera] 或 [page:Audio]。
-	</p>
-
-	<h3>[method:MMDAnimationHelper update]( [param:Number delta] )</h3>
-	<p>
-		[page:Number delta] — 秒数<br />
-	</p>
-	<p>
-		提前混合器时间并更新添加到助手的对象的动画。
-	</p>
-
-	<h2>源代码</h2>
-
-	<p>
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/MMDAnimationHelper.js examples/jsm/animation/MMDAnimationHelper.js]
-	</p>
-</body>
-
-</html>

+ 0 - 129
docs/examples/zh/animations/MMDPhysics.html

@@ -1,129 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-
-<head>
-	<meta charset="utf-8" />
-	<base href="../../../" />
-	<script src="page.js"></script>
-	<link type="text/css" rel="stylesheet" href="page.css" />
-</head>
-
-<body>
-	<h1>MMD物理([name])</h1>
-
-	<p class="desc"> 资源的物理处理程序 <a href="https://sites.google.com/view/evpvp/">`MMD`</a>。 <br /><br />
-		[name] 使用 [link:https://github.com/kripken/ammo.js/ ammo.js] (基于 Bullet 的 JavaScript 物理引擎)为 [page:MMDLoader]
-		计算加载模型的物理量。
-	</p>
-
-	<h2>导入</h2>
-
-	<p>
-		[name] 是一个附加组件,必须显式导入。请参阅 [link:#manual/introduction/Installation Installation / Addons]。
-	</p>
-
-	<code>
-			import { MMDPhysics } from 'three/addons/animation/MMDPhysics.js';
-		</code>
-
-	<h2>代码示例</h2>
-
-	<code>
-		let physics;
-
-		// Load MMD resources and instantiate MMDPhysics
-		new MMDLoader().load(
-			'models/mmd/miku.pmd',
-			function ( mesh ) {
-
-				physics = new MMDPhysics( mesh )
-				scene.add( mesh );
-
-			}
-		);
-
-		function render() {
-
-			const delta = clock.getDelta();
-			animate( delta );  // update bones
-			if ( physics !== undefined ) physics.update( delta );
-			renderer.render( scene, camera );
-
-		}
-		</code>
-
-	<h2>例子</h2>
-
-	<p>
-		[example:webgl_loader_mmd]<br />
-		[example:webgl_loader_mmd_audio]
-	</p>
-
-	<h2>构造函数</h2>
-
-	<h3>[name]( [param:SkinnedMesh mesh], [param:Array rigidBodyParams], [param:Array constraintParams], [param:Object
-		params] )</h3>
-	<p>
-		[page:SkinnedMesh mesh] — [page:SkinnedMesh], [name] 为其计算物理。<br />
-		[page:Array rigidBodyParams] — 指定刚体参数的 [page:Object] 数组。<br />
-		[page:Array constraintParams] — 可选)指定约束参数的 [page:Object] 数组。<br />
-		[page:Object params] — (可选)<br />
-	</p>
-	<ul>
-		<li>[page:Number unitStep] - 默认为 1 / 65</li>
-		<li>[page:Integer maxStepNum] - 默认为 3</li>
-		<li>[page:Vector3 gravity] - 默认为 ( 0, - 9.8 * 10, 0 )</li>
-	</ul>
-	<p>
-		创建一个新的 [name]。
-	</p>
-
-	<h2>属性</h2>
-
-	<h3>[property:Array mesh]</h3>
-	<p>[page:SkinnedMesh] 传递给构造函数。</p>
-
-	<h2>方法</h2>
-
-	<h3>[method:MMDPhysicsHelper createHelper]()</h3>
-	<p>
-		返回 [page:MMDPhysicsHelper]。您可以通过将辅助对象添加到场景来可视化刚体。
-	</p>
-
-	<h3>[method:this reset]()</h3>
-	<p>
-		重置刚体变换为当前骨骼的刚体。
-	</p>
-
-	<h3>[method:this setGravity]( [param:Vector3 gravity] )</h3>
-	<p>
-		[page:Vector3 gravity] — 重力的方向和体积。
-	</p>
-	<p>
-		设置重力。
-	</p>
-
-	<h3>[method:this update]( [param:Number delta] )</h3>
-	<p>
-		[page:Number delta] — 时间(以秒为单位)
-	</p>
-	<p>
-		高级物理计算和更新骨骼。
-	</p>
-
-	<h3>[method:this warmup]( [param:Integer cycles] )</h3>
-	<p>
-		[page:Number delta] — 时间(以秒为单位)
-	</p>
-	<p>
-		热身刚体。计算循环步数。
-	</p>
-
-	<h2>源代码</h2>
-
-	<p>
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/MMDPhysics.js examples/jsm/animation/MMDPhysics.js]
-	</p>
-</body>
-
-</html>

+ 0 - 134
docs/examples/zh/loaders/MMDLoader.html

@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Loader] &rarr;
-
-		<h1>MMD加载器([name])</h1>
-
-		<p class="desc">一个用于加载<a href="https://sites.google.com/view/evpvp/"><em>MMD</em></a>资源的加载器。<br /><br />
-		[name]从MMD资源(例如PMD、PMX、VMD和VPD文件)中创建Three.js物体(对象)。
-		请参阅[page:MMDAnimationHelper]来了解MMD动画的处理,例如IK、Grant和Physics。<br /><br />
-
-		如果你想要MMD资源的原始内容,请使用.loadPMD/PMX/VMD/VPD方法。</p>
-
-		<h2>导入</h2>
-
-		<p>
-			[name] 是一个附加组件,必须显式导入。
-			See [link:#manual/introduction/Installation Installation / Addons].
-		</p>
-
-		<code>
-			import { MMDLoader } from 'three/addons/loaders/MMDLoader.js';
-		</code>
-
-		<h2>代码示例</h2>
-
-		<code>
-		// Instantiate a loader
-		const loader = new MMDLoader();
-
-		// Load a MMD model
-		loader.load(
-			// path to PMD/PMX file
-			'models/mmd/miku.pmd',
-			// called when the resource is loaded
-			function ( mesh ) {
-
-				scene.add( mesh );
-
-			},
-			// called when loading is in progress
-			function ( xhr ) {
-
-				console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
-
-			},
-			// called when loading has errors
-			function ( error ) {
-
-				console.log( 'An error happened' );
-
-			}
-		);
-		</code>
-
-		<h2>例子</h2>
-		<p>
-		[example:webgl_loader_mmd]<br />
-		[example:webgl_loader_mmd_pose]<br />
-		[example:webgl_loader_mmd_audio]
-		</p>
-
- 		<h2>构造函数</h2>
-
- 		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — 加载器使用的[page:LoadingManager loadingManager](加载管理器),默认值是[page:LoadingManager THREE.DefaultLoadingManager]。
-		</p>
-		<p>
-		创建一个新的[name]。
-		</p>
-
-		<h2>属性</h2>
-		<p>共有属性请参见其基类[page:Loader]。</p>
-
-		<h2>方法</h2>
-		<p>共有方法请参见其基类[page:Loader]。</p>
-
-		<h3>[method:undefined load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — 一个包含有<em>.pmd</em>或<em>.pmx</em>文件的路径或URL的字符串。<br />
-		[page:Function onLoad] — 当加载过程成功完成以后将被调用的函数。<br />
-		[page:Function onProgress] — (可选)加载过程正在进行的时候被调用的函数。其参数是一个XMLHttpRequest实例,其包含了[page:Integer total] bytes(总的字节数)和[page:Integer loaded] bytes(已经载入的字节数)。<br />
-		[page:Function onError] — (可选) 加载过程中若发生了错误将被调用的函数。这一函数接收错误作为参数。<br />
-		</p>
-		<p>
-		开始从URL中加载PMD/PMX模型文件,并使用包含有已被解析的[page:SkinnedMesh]和[page:MeshToonMaterial]数组的[page:BufferGeometry]对象来触发回调函数。
-		</p>
-
-		<h3>[method:undefined loadAnimation]( [param:String url], [param:Object3D object], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — 一个包含有<em>.vmd</em>文件的路径或URL的字符串或字符串数组。如果两个及以上文件被指定,它们将会合并。<br />
-		[page:Object3D object] — [page:SkinnedMesh] 或 [page:Camera]。 剪辑及其轨道将会适应到该对象。<br />
-		[page:Function onLoad] — 成功加载完成后被调用的函数。<br />
-		[page:Function onProgress] — (可选)当加载正在进行时被调用的函数,参数将是XMLHttpRequest实例,其包含了 .[page:Integer total] (总的)和 .[page:Integer loaded] (已加载的)字节数。<br />
-		[page:Function onError] — (可选)如果加载过程中发生错误时被调用的函数,该函数接受一个错误来作为参数。<br />
-		</p>
-		<p>
-		开始从url(s)加载VMD动画文件(可能有多个文件),并使用已解析的[page:AnimatioinClip]触发回调函数。
-		</p>
-
-		<h3>[method:undefined loadWithAnimation]( [param:String modelUrl], [param:String vmdUrl], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String modelUrl] — 一个包含有<em>.pmd</em>或<em>.pmx</em>文件的路径或URL的字符串。<br />
-		[page:String vmdUrl] — 一个包含有<em>.vmd</em>文件的路径或URL的字符串或字符串数组。<br />
-		[page:Function onLoad] — 成功加载完成后被调用的函数。<br />
-		[page:Function onProgress] — (可选)当加载正在进行时被调用的函数,参数将是XMLHttpRequest实例,其包含了 .[page:Integer total] (总的)和 .[page:Integer loaded] (已加载的)字节数。<br />
-		[page:Function onError] — (可选)如果加载过程中发生错误时被调用的函数,该函数接受一个错误来作为参数。<br />
-		</p>
-		<p>
-		开始从URL中加载PMD/PMX模型文件和VMD动画文件(可能有多个文件),并使用一个[page:Object] —— 包含有已解析的[page:SkinnedMesh]和适应[page:SkinnedMesh]的[page:AnimationClip],来触发回调函数。
-		</p>
-
-		<h3>[method:this setAnimationPath]( [param:String animationPath] )</h3>
-		<p>
-		[page:String animationPath] — 用于加载动画数据(VMD/VPD 文件)的基础路径。 Base path for loading animation data (VMD/VPD files).
-		</p>
-		<p>
-		设置额外资源(例如贴图)的基础路径。
-		</p>
-
-		<h2>源代码</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/MMDLoader.js examples/jsm/loaders/MMDLoader.js]
-		</p>
-	</body>
-</html>

+ 3 - 12
docs/list.json

@@ -326,9 +326,7 @@
 		"Addons": {
 
 			"Animations": {
-				"CCDIKSolver": "examples/en/animations/CCDIKSolver",
-				"MMDAnimationHelper": "examples/en/animations/MMDAnimationHelper",
-				"MMDPhysics": "examples/en/animations/MMDPhysics"
+				"CCDIKSolver": "examples/en/animations/CCDIKSolver"
 			},
 
 			"Controls": {
@@ -380,7 +378,6 @@
 				"LDrawLoader": "examples/en/loaders/LDrawLoader",
 				"LUT3dlLoader": "examples/en/loaders/LUT3dlLoader",
 				"LUTCubeLoader": "examples/en/loaders/LUTCubeLoader",
-				"MMDLoader": "examples/en/loaders/MMDLoader",
 				"MTLLoader": "examples/en/loaders/MTLLoader",
 				"OBJLoader": "examples/en/loaders/OBJLoader",
 				"PCDLoader": "examples/en/loaders/PCDLoader",
@@ -1087,9 +1084,7 @@
 		"附加": {
 
 			"动画": {
-				"CCDIKSolver": "examples/zh/animations/CCDIKSolver",
-				"MMDAnimationHelper": "examples/zh/animations/MMDAnimationHelper",
-				"MMDPhysics": "examples/zh/animations/MMDPhysics"
+				"CCDIKSolver": "examples/zh/animations/CCDIKSolver"
 			},
 
 			"控制": {
@@ -1133,7 +1128,6 @@
 				"LDrawLoader": "examples/zh/loaders/LDrawLoader",
 				"LUT3dlLoader": "examples/zh/loaders/LUT3dlLoader",
 				"LUTCubeLoader": "examples/zh/loaders/LUTCubeLoader",
-				"MMDLoader": "examples/zh/loaders/MMDLoader",
 				"MTLLoader": "examples/zh/loaders/MTLLoader",
 				"OBJLoader": "examples/zh/loaders/OBJLoader",
 				"PCDLoader": "examples/zh/loaders/PCDLoader",
@@ -2262,9 +2256,7 @@
 		"Examples": {
 
 			"Animations": {
-				"CCDIKSolver": "examples/en/animations/CCDIKSolver",
-				"MMDAnimationHelper": "examples/en/animations/MMDAnimationHelper",
-				"MMDPhysics": "examples/en/animations/MMDPhysics"
+				"CCDIKSolver": "examples/en/animations/CCDIKSolver"
 			},
 
 			"Controls": {
@@ -2304,7 +2296,6 @@
 				"GLTFLoader": "examples/en/loaders/GLTFLoader",
 				"KTX2Loader": "examples/en/loaders/KTX2Loader",
 				"LDrawLoader": "examples/en/loaders/LDrawLoader",
-				"MMDLoader": "examples/en/loaders/MMDLoader",
 				"MTLLoader": "examples/en/loaders/MTLLoader",
 				"OBJLoader": "examples/en/loaders/OBJLoader",
 				"PCDLoader": "examples/en/loaders/PCDLoader",

+ 0 - 1
docs/manual/ar/introduction/Animation-system.html

@@ -77,7 +77,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/en/introduction/Animation-system.html

@@ -110,7 +110,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/fr/introduction/Animation-system.html

@@ -110,7 +110,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/it/introduction/Animation-system.html

@@ -85,7 +85,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/ja/introduction/Animation-system.html

@@ -80,7 +80,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/ko/introduction/Animation-system.html

@@ -94,7 +94,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/pt-br/introduction/Animation-system.html

@@ -112,7 +112,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 1
docs/manual/zh/introduction/Animation-system.html

@@ -88,7 +88,6 @@
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.FBXLoader</li>
 				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
-				<li>THREE.MMDLoader</li>
 			</ul>
 
 		<p class="desc">

+ 0 - 3
examples/files.json

@@ -101,9 +101,6 @@
 		"webgl_loader_md2",
 		"webgl_loader_md2_control",
 		"webgl_loader_mdd",
-		"webgl_loader_mmd",
-		"webgl_loader_mmd_pose",
-		"webgl_loader_mmd_audio",
 		"webgl_loader_nrrd",
 		"webgl_loader_obj",
 		"webgl_loader_obj_mtl",

+ 0 - 5
examples/jsm/Addons.js

@@ -1,7 +1,5 @@
 export * from './animation/AnimationClipCreator.js';
 export * from './animation/CCDIKSolver.js';
-export * from './animation/MMDAnimationHelper.js';
-export * from './animation/MMDPhysics.js';
 
 export { default as WebGL } from './capabilities/WebGL.js';
 
@@ -40,7 +38,6 @@ export * from './exporters/DRACOExporter.js';
 export * from './exporters/EXRExporter.js';
 export * from './exporters/GLTFExporter.js';
 export * from './exporters/KTX2Exporter.js';
-export * from './exporters/MMDExporter.js';
 export * from './exporters/OBJExporter.js';
 export * from './exporters/PLYExporter.js';
 export * from './exporters/STLExporter.js';
@@ -105,7 +102,6 @@ export * from './loaders/LWOLoader.js';
 export * from './loaders/LottieLoader.js';
 export * from './loaders/MD2Loader.js';
 export * from './loaders/MDDLoader.js';
-export * from './loaders/MMDLoader.js';
 export * from './loaders/MTLLoader.js';
 export * from './loaders/NRRDLoader.js';
 export * from './loaders/OBJLoader.js';
@@ -240,7 +236,6 @@ export * from './shaders/HueSaturationShader.js';
 export * from './shaders/KaleidoShader.js';
 export * from './shaders/LuminosityHighPassShader.js';
 export * from './shaders/LuminosityShader.js';
-export * from './shaders/MMDToonShader.js';
 export * from './shaders/MirrorShader.js';
 export * from './shaders/NormalMapShader.js';
 export * from './shaders/OutputShader.js';

+ 1 - 2
examples/jsm/animation/CCDIKSolver.js

@@ -111,8 +111,7 @@ class CCDIKSolver {
 
 				const link = bones[ links[ j ].index ];
 
-				// skip this link and following links.
-				// this skip is used for MMD performance optimization.
+				// skip this link and following links
 				if ( links[ j ].enabled === false ) break;
 
 				const limitation = links[ j ].limitation;

+ 0 - 1209
examples/jsm/animation/MMDAnimationHelper.js

@@ -1,1209 +0,0 @@
-import {
-	AnimationMixer,
-	Object3D,
-	Quaternion,
-	Vector3
-} from 'three';
-import { CCDIKSolver } from '../animation/CCDIKSolver.js';
-import { MMDPhysics } from '../animation/MMDPhysics.js';
-
-/**
- * MMDAnimationHelper handles animation of MMD assets loaded by MMDLoader
- * with MMD special features as IK, Grant, and Physics.
- *
- * Dependencies
- *  - ammo.js https://github.com/kripken/ammo.js
- *  - MMDPhysics
- *  - CCDIKSolver
- *
- * TODO
- *  - more precise grant skinning support.
- */
-class MMDAnimationHelper {
-
-	/**
-	 * @param {Object} params - (optional)
-	 * @param {boolean} params.sync - Whether animation durations of added objects are synched. Default is true.
-	 * @param {Number} params.afterglow - Default is 0.0.
-	 * @param {boolean} params.resetPhysicsOnLoop - Default is true.
-	 */
-	constructor( params = {} ) {
-
-		this.meshes = [];
-
-		this.camera = null;
-		this.cameraTarget = new Object3D();
-		this.cameraTarget.name = 'target';
-
-		this.audio = null;
-		this.audioManager = null;
-
-		this.objects = new WeakMap();
-
-		this.configuration = {
-			sync: params.sync !== undefined ? params.sync : true,
-			afterglow: params.afterglow !== undefined ? params.afterglow : 0.0,
-			resetPhysicsOnLoop: params.resetPhysicsOnLoop !== undefined ? params.resetPhysicsOnLoop : true,
-			pmxAnimation: params.pmxAnimation !== undefined ? params.pmxAnimation : false
-		};
-
-		this.enabled = {
-			animation: true,
-			ik: true,
-			grant: true,
-			physics: true,
-			cameraAnimation: true
-		};
-
-		this.onBeforePhysics = function ( /* mesh */ ) {};
-
-		// experimental
-		this.sharedPhysics = false;
-		this.masterPhysics = null;
-
-		console.warn( 'THREE.MMDAnimationHelper: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
-
-	}
-
-	/**
-	 * Adds an Three.js Object to helper and setups animation.
-	 * The anmation durations of added objects are synched
-	 * if this.configuration.sync is true.
-	 *
-	 * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object
-	 * @param {Object} params - (optional)
-	 * @param {THREE.AnimationClip|Array<THREE.AnimationClip>} params.animation - Only for THREE.SkinnedMesh and THREE.Camera. Default is undefined.
-	 * @param {boolean} params.physics - Only for THREE.SkinnedMesh. Default is true.
-	 * @param {Integer} params.warmup - Only for THREE.SkinnedMesh and physics is true. Default is 60.
-	 * @param {Number} params.unitStep - Only for THREE.SkinnedMesh and physics is true. Default is 1 / 65.
-	 * @param {Integer} params.maxStepNum - Only for THREE.SkinnedMesh and physics is true. Default is 3.
-	 * @param {Vector3} params.gravity - Only for THREE.SkinnedMesh and physics is true. Default ( 0, - 9.8 * 10, 0 ).
-	 * @param {Number} params.delayTime - Only for THREE.Audio. Default is 0.0.
-	 * @return {MMDAnimationHelper}
-	 */
-	add( object, params = {} ) {
-
-		if ( object.isSkinnedMesh ) {
-
-			this._addMesh( object, params );
-
-		} else if ( object.isCamera ) {
-
-			this._setupCamera( object, params );
-
-		} else if ( object.type === 'Audio' ) {
-
-			this._setupAudio( object, params );
-
-		} else {
-
-			throw new Error( 'THREE.MMDAnimationHelper.add: '
-				+ 'accepts only '
-				+ 'THREE.SkinnedMesh or '
-				+ 'THREE.Camera or '
-				+ 'THREE.Audio instance.' );
-
-		}
-
-		if ( this.configuration.sync ) this._syncDuration();
-
-		return this;
-
-	}
-
-	/**
-	 * Removes an Three.js Object from helper.
-	 *
-	 * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object
-	 * @return {MMDAnimationHelper}
-	 */
-	remove( object ) {
-
-		if ( object.isSkinnedMesh ) {
-
-			this._removeMesh( object );
-
-		} else if ( object.isCamera ) {
-
-			this._clearCamera( object );
-
-		} else if ( object.type === 'Audio' ) {
-
-			this._clearAudio( object );
-
-		} else {
-
-			throw new Error( 'THREE.MMDAnimationHelper.remove: '
-				+ 'accepts only '
-				+ 'THREE.SkinnedMesh or '
-				+ 'THREE.Camera or '
-				+ 'THREE.Audio instance.' );
-
-		}
-
-		if ( this.configuration.sync ) this._syncDuration();
-
-		return this;
-
-	}
-
-	/**
-	 * Updates the animation.
-	 *
-	 * @param {Number} delta
-	 * @return {MMDAnimationHelper}
-	 */
-	update( delta ) {
-
-		if ( this.audioManager !== null ) this.audioManager.control( delta );
-
-		for ( let i = 0; i < this.meshes.length; i ++ ) {
-
-			this._animateMesh( this.meshes[ i ], delta );
-
-		}
-
-		if ( this.sharedPhysics ) this._updateSharedPhysics( delta );
-
-		if ( this.camera !== null ) this._animateCamera( this.camera, delta );
-
-		return this;
-
-	}
-
-	/**
-	 * Changes the pose of SkinnedMesh as VPD specifies.
-	 *
-	 * @param {THREE.SkinnedMesh} mesh
-	 * @param {Object} vpd - VPD content parsed MMDParser
-	 * @param {Object} params - (optional)
-	 * @param {boolean} params.resetPose - Default is true.
-	 * @param {boolean} params.ik - Default is true.
-	 * @param {boolean} params.grant - Default is true.
-	 * @return {MMDAnimationHelper}
-	 */
-	pose( mesh, vpd, params = {} ) {
-
-		if ( params.resetPose !== false ) mesh.pose();
-
-		const bones = mesh.skeleton.bones;
-		const boneParams = vpd.bones;
-
-		const boneNameDictionary = {};
-
-		for ( let i = 0, il = bones.length; i < il; i ++ ) {
-
-			boneNameDictionary[ bones[ i ].name ] = i;
-
-		}
-
-		const vector = new Vector3();
-		const quaternion = new Quaternion();
-
-		for ( let i = 0, il = boneParams.length; i < il; i ++ ) {
-
-			const boneParam = boneParams[ i ];
-			const boneIndex = boneNameDictionary[ boneParam.name ];
-
-			if ( boneIndex === undefined ) continue;
-
-			const bone = bones[ boneIndex ];
-			bone.position.add( vector.fromArray( boneParam.translation ) );
-			bone.quaternion.multiply( quaternion.fromArray( boneParam.quaternion ) );
-
-		}
-
-		mesh.updateMatrixWorld( true );
-
-		// PMX animation system special path
-		if ( this.configuration.pmxAnimation &&
-			mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) {
-
-			const sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() );
-			const ikSolver = params.ik !== false ? this._createCCDIKSolver( mesh ) : null;
-			const grantSolver = params.grant !== false ? this.createGrantSolver( mesh ) : null;
-			this._animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver );
-
-		} else {
-
-			if ( params.ik !== false ) {
-
-				this._createCCDIKSolver( mesh ).update();
-
-			}
-
-			if ( params.grant !== false ) {
-
-				this.createGrantSolver( mesh ).update();
-
-			}
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Enabes/Disables an animation feature.
-	 *
-	 * @param {string} key
-	 * @param {boolean} enabled
-	 * @return {MMDAnimationHelper}
-	 */
-	enable( key, enabled ) {
-
-		if ( this.enabled[ key ] === undefined ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper.enable: '
-				+ 'unknown key ' + key );
-
-		}
-
-		this.enabled[ key ] = enabled;
-
-		if ( key === 'physics' ) {
-
-			for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-				this._optimizeIK( this.meshes[ i ], enabled );
-
-			}
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Creates an GrantSolver instance.
-	 *
-	 * @param {THREE.SkinnedMesh} mesh
-	 * @return {GrantSolver}
-	 */
-	createGrantSolver( mesh ) {
-
-		return new GrantSolver( mesh, mesh.geometry.userData.MMD.grants );
-
-	}
-
-	// private methods
-
-	_addMesh( mesh, params ) {
-
-		if ( this.meshes.indexOf( mesh ) >= 0 ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._addMesh: '
-				+ 'SkinnedMesh \'' + mesh.name + '\' has already been added.' );
-
-		}
-
-		this.meshes.push( mesh );
-		this.objects.set( mesh, { looped: false } );
-
-		this._setupMeshAnimation( mesh, params.animation );
-
-		if ( params.physics !== false ) {
-
-			this._setupMeshPhysics( mesh, params );
-
-		}
-
-		return this;
-
-	}
-
-	_setupCamera( camera, params ) {
-
-		if ( this.camera === camera ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._setupCamera: '
-				+ 'Camera \'' + camera.name + '\' has already been set.' );
-
-		}
-
-		if ( this.camera ) this.clearCamera( this.camera );
-
-		this.camera = camera;
-
-		camera.add( this.cameraTarget );
-
-		this.objects.set( camera, {} );
-
-		if ( params.animation !== undefined ) {
-
-			this._setupCameraAnimation( camera, params.animation );
-
-		}
-
-		return this;
-
-	}
-
-	_setupAudio( audio, params ) {
-
-		if ( this.audio === audio ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._setupAudio: '
-				+ 'Audio \'' + audio.name + '\' has already been set.' );
-
-		}
-
-		if ( this.audio ) this.clearAudio( this.audio );
-
-		this.audio = audio;
-		this.audioManager = new AudioManager( audio, params );
-
-		this.objects.set( this.audioManager, {
-			duration: this.audioManager.duration
-		} );
-
-		return this;
-
-	}
-
-	_removeMesh( mesh ) {
-
-		let found = false;
-		let writeIndex = 0;
-
-		for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-			if ( this.meshes[ i ] === mesh ) {
-
-				this.objects.delete( mesh );
-				found = true;
-
-				continue;
-
-			}
-
-			this.meshes[ writeIndex ++ ] = this.meshes[ i ];
-
-		}
-
-		if ( ! found ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._removeMesh: '
-				+ 'SkinnedMesh \'' + mesh.name + '\' has not been added yet.' );
-
-		}
-
-		this.meshes.length = writeIndex;
-
-		return this;
-
-	}
-
-	_clearCamera( camera ) {
-
-		if ( camera !== this.camera ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._clearCamera: '
-				+ 'Camera \'' + camera.name + '\' has not been set yet.' );
-
-		}
-
-		this.camera.remove( this.cameraTarget );
-
-		this.objects.delete( this.camera );
-		this.camera = null;
-
-		return this;
-
-	}
-
-	_clearAudio( audio ) {
-
-		if ( audio !== this.audio ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper._clearAudio: '
-				+ 'Audio \'' + audio.name + '\' has not been set yet.' );
-
-		}
-
-		this.objects.delete( this.audioManager );
-
-		this.audio = null;
-		this.audioManager = null;
-
-		return this;
-
-	}
-
-	_setupMeshAnimation( mesh, animation ) {
-
-		const objects = this.objects.get( mesh );
-
-		if ( animation !== undefined ) {
-
-			const animations = Array.isArray( animation )
-				? animation : [ animation ];
-
-			objects.mixer = new AnimationMixer( mesh );
-
-			for ( let i = 0, il = animations.length; i < il; i ++ ) {
-
-				objects.mixer.clipAction( animations[ i ] ).play();
-
-			}
-
-			// TODO: find a workaround not to access ._clip looking like a private property
-			objects.mixer.addEventListener( 'loop', function ( event ) {
-
-				const tracks = event.action._clip.tracks;
-
-				if ( tracks.length > 0 && tracks[ 0 ].name.slice( 0, 6 ) !== '.bones' ) return;
-
-				objects.looped = true;
-
-			} );
-
-		}
-
-		objects.ikSolver = this._createCCDIKSolver( mesh );
-		objects.grantSolver = this.createGrantSolver( mesh );
-
-		return this;
-
-	}
-
-	_setupCameraAnimation( camera, animation ) {
-
-		const animations = Array.isArray( animation )
-			? animation : [ animation ];
-
-		const objects = this.objects.get( camera );
-
-		objects.mixer = new AnimationMixer( camera );
-
-		for ( let i = 0, il = animations.length; i < il; i ++ ) {
-
-			objects.mixer.clipAction( animations[ i ] ).play();
-
-		}
-
-	}
-
-	_setupMeshPhysics( mesh, params ) {
-
-		const objects = this.objects.get( mesh );
-
-		// shared physics is experimental
-
-		if ( params.world === undefined && this.sharedPhysics ) {
-
-			const masterPhysics = this._getMasterPhysics();
-
-			if ( masterPhysics !== null ) world = masterPhysics.world; // eslint-disable-line no-undef
-
-		}
-
-		objects.physics = this._createMMDPhysics( mesh, params );
-
-		if ( objects.mixer && params.animationWarmup !== false ) {
-
-			this._animateMesh( mesh, 0 );
-			objects.physics.reset();
-
-		}
-
-		objects.physics.warmup( params.warmup !== undefined ? params.warmup : 60 );
-
-		this._optimizeIK( mesh, true );
-
-	}
-
-	_animateMesh( mesh, delta ) {
-
-		const objects = this.objects.get( mesh );
-
-		const mixer = objects.mixer;
-		const ikSolver = objects.ikSolver;
-		const grantSolver = objects.grantSolver;
-		const physics = objects.physics;
-		const looped = objects.looped;
-
-		if ( mixer && this.enabled.animation ) {
-
-			// alternate solution to save/restore bones but less performant?
-			//mesh.pose();
-			//this._updatePropertyMixersBuffer( mesh );
-
-			this._restoreBones( mesh );
-
-			mixer.update( delta );
-
-			this._saveBones( mesh );
-
-			// PMX animation system special path
-			if ( this.configuration.pmxAnimation &&
-				mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) {
-
-				if ( ! objects.sortedBonesData ) objects.sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() );
-
-				this._animatePMXMesh(
-					mesh,
-					objects.sortedBonesData,
-					ikSolver && this.enabled.ik ? ikSolver : null,
-					grantSolver && this.enabled.grant ? grantSolver : null
-				);
-
-			} else {
-
-				if ( ikSolver && this.enabled.ik ) {
-
-					mesh.updateMatrixWorld( true );
-					ikSolver.update();
-
-				}
-
-				if ( grantSolver && this.enabled.grant ) {
-
-					grantSolver.update();
-
-				}
-
-			}
-
-		}
-
-		if ( looped === true && this.enabled.physics ) {
-
-			if ( physics && this.configuration.resetPhysicsOnLoop ) physics.reset();
-
-			objects.looped = false;
-
-		}
-
-		if ( physics && this.enabled.physics && ! this.sharedPhysics ) {
-
-			this.onBeforePhysics( mesh );
-			physics.update( delta );
-
-		}
-
-	}
-
-	// Sort bones in order by 1. transformationClass and 2. bone index.
-	// In PMX animation system, bone transformations should be processed
-	// in this order.
-	_sortBoneDataArray( boneDataArray ) {
-
-		return boneDataArray.sort( function ( a, b ) {
-
-			if ( a.transformationClass !== b.transformationClass ) {
-
-				return a.transformationClass - b.transformationClass;
-
-			} else {
-
-				return a.index - b.index;
-
-			}
-
-		} );
-
-	}
-
-	// PMX Animation system is a bit too complex and doesn't great match to
-	// Three.js Animation system. This method attempts to simulate it as much as
-	// possible but doesn't perfectly simulate.
-	// This method is more costly than the regular one so
-	// you are recommended to set constructor parameter "pmxAnimation: true"
-	// only if your PMX model animation doesn't work well.
-	// If you need better method you would be required to write your own.
-	_animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver ) {
-
-		_quaternionIndex = 0;
-		_grantResultMap.clear();
-
-		for ( let i = 0, il = sortedBonesData.length; i < il; i ++ ) {
-
-			updateOne( mesh, sortedBonesData[ i ].index, ikSolver, grantSolver );
-
-		}
-
-		mesh.updateMatrixWorld( true );
-		return this;
-
-	}
-
-	_animateCamera( camera, delta ) {
-
-		const mixer = this.objects.get( camera ).mixer;
-
-		if ( mixer && this.enabled.cameraAnimation ) {
-
-			mixer.update( delta );
-
-			camera.updateProjectionMatrix();
-
-			camera.up.set( 0, 1, 0 );
-			camera.up.applyQuaternion( camera.quaternion );
-			camera.lookAt( this.cameraTarget.position );
-
-		}
-
-	}
-
-	_optimizeIK( mesh, physicsEnabled ) {
-
-		const iks = mesh.geometry.userData.MMD.iks;
-		const bones = mesh.geometry.userData.MMD.bones;
-
-		for ( let i = 0, il = iks.length; i < il; i ++ ) {
-
-			const ik = iks[ i ];
-			const links = ik.links;
-
-			for ( let j = 0, jl = links.length; j < jl; j ++ ) {
-
-				const link = links[ j ];
-
-				if ( physicsEnabled === true ) {
-
-					// disable IK of the bone the corresponding rigidBody type of which is 1 or 2
-					// because its rotation will be overriden by physics
-					link.enabled = bones[ link.index ].rigidBodyType > 0 ? false : true;
-
-				} else {
-
-					link.enabled = true;
-
-				}
-
-			}
-
-		}
-
-	}
-
-	_createCCDIKSolver( mesh ) {
-
-		if ( CCDIKSolver === undefined ) {
-
-			throw new Error( 'THREE.MMDAnimationHelper: Import CCDIKSolver.' );
-
-		}
-
-		return new CCDIKSolver( mesh, mesh.geometry.userData.MMD.iks );
-
-	}
-
-	_createMMDPhysics( mesh, params ) {
-
-		if ( MMDPhysics === undefined ) {
-
-			throw new Error( 'THREE.MMDPhysics: Import MMDPhysics.' );
-
-		}
-
-		return new MMDPhysics(
-			mesh,
-			mesh.geometry.userData.MMD.rigidBodies,
-			mesh.geometry.userData.MMD.constraints,
-			params );
-
-	}
-
-	/*
-	 * Detects the longest duration and then sets it to them to sync.
-	 * TODO: Not to access private properties ( ._actions and ._clip )
-	 */
-	_syncDuration() {
-
-		let max = 0.0;
-
-		const objects = this.objects;
-		const meshes = this.meshes;
-		const camera = this.camera;
-		const audioManager = this.audioManager;
-
-		// get the longest duration
-
-		for ( let i = 0, il = meshes.length; i < il; i ++ ) {
-
-			const mixer = this.objects.get( meshes[ i ] ).mixer;
-
-			if ( mixer === undefined ) continue;
-
-			for ( let j = 0; j < mixer._actions.length; j ++ ) {
-
-				const clip = mixer._actions[ j ]._clip;
-
-				if ( ! objects.has( clip ) ) {
-
-					objects.set( clip, {
-						duration: clip.duration
-					} );
-
-				}
-
-				max = Math.max( max, objects.get( clip ).duration );
-
-			}
-
-		}
-
-		if ( camera !== null ) {
-
-			const mixer = this.objects.get( camera ).mixer;
-
-			if ( mixer !== undefined ) {
-
-				for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) {
-
-					const clip = mixer._actions[ i ]._clip;
-
-					if ( ! objects.has( clip ) ) {
-
-						objects.set( clip, {
-							duration: clip.duration
-						} );
-
-					}
-
-					max = Math.max( max, objects.get( clip ).duration );
-
-				}
-
-			}
-
-		}
-
-		if ( audioManager !== null ) {
-
-			max = Math.max( max, objects.get( audioManager ).duration );
-
-		}
-
-		max += this.configuration.afterglow;
-
-		// update the duration
-
-		for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-			const mixer = this.objects.get( this.meshes[ i ] ).mixer;
-
-			if ( mixer === undefined ) continue;
-
-			for ( let j = 0, jl = mixer._actions.length; j < jl; j ++ ) {
-
-				mixer._actions[ j ]._clip.duration = max;
-
-			}
-
-		}
-
-		if ( camera !== null ) {
-
-			const mixer = this.objects.get( camera ).mixer;
-
-			if ( mixer !== undefined ) {
-
-				for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) {
-
-					mixer._actions[ i ]._clip.duration = max;
-
-				}
-
-			}
-
-		}
-
-		if ( audioManager !== null ) {
-
-			audioManager.duration = max;
-
-		}
-
-	}
-
-	// workaround
-
-	_updatePropertyMixersBuffer( mesh ) {
-
-		const mixer = this.objects.get( mesh ).mixer;
-
-		const propertyMixers = mixer._bindings;
-		const accuIndex = mixer._accuIndex;
-
-		for ( let i = 0, il = propertyMixers.length; i < il; i ++ ) {
-
-			const propertyMixer = propertyMixers[ i ];
-			const buffer = propertyMixer.buffer;
-			const stride = propertyMixer.valueSize;
-			const offset = ( accuIndex + 1 ) * stride;
-
-			propertyMixer.binding.getValue( buffer, offset );
-
-		}
-
-	}
-
-	/*
-	 * Avoiding these two issues by restore/save bones before/after mixer animation.
-	 *
-	 * 1. PropertyMixer used by AnimationMixer holds cache value in .buffer.
-	 *    Calculating IK, Grant, and Physics after mixer animation can break
-	 *    the cache coherency.
-	 *
-	 * 2. Applying Grant two or more times without reset the posing breaks model.
-	 */
-	_saveBones( mesh ) {
-
-		const objects = this.objects.get( mesh );
-
-		const bones = mesh.skeleton.bones;
-
-		let backupBones = objects.backupBones;
-
-		if ( backupBones === undefined ) {
-
-			backupBones = new Float32Array( bones.length * 7 );
-			objects.backupBones = backupBones;
-
-		}
-
-		for ( let i = 0, il = bones.length; i < il; i ++ ) {
-
-			const bone = bones[ i ];
-			bone.position.toArray( backupBones, i * 7 );
-			bone.quaternion.toArray( backupBones, i * 7 + 3 );
-
-		}
-
-	}
-
-	_restoreBones( mesh ) {
-
-		const objects = this.objects.get( mesh );
-
-		const backupBones = objects.backupBones;
-
-		if ( backupBones === undefined ) return;
-
-		const bones = mesh.skeleton.bones;
-
-		for ( let i = 0, il = bones.length; i < il; i ++ ) {
-
-			const bone = bones[ i ];
-			bone.position.fromArray( backupBones, i * 7 );
-			bone.quaternion.fromArray( backupBones, i * 7 + 3 );
-
-		}
-
-	}
-
-	// experimental
-
-	_getMasterPhysics() {
-
-		if ( this.masterPhysics !== null ) return this.masterPhysics;
-
-		for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-			const physics = this.meshes[ i ].physics;
-
-			if ( physics !== undefined && physics !== null ) {
-
-				this.masterPhysics = physics;
-				return this.masterPhysics;
-
-			}
-
-		}
-
-		return null;
-
-	}
-
-	_updateSharedPhysics( delta ) {
-
-		if ( this.meshes.length === 0 || ! this.enabled.physics || ! this.sharedPhysics ) return;
-
-		const physics = this._getMasterPhysics();
-
-		if ( physics === null ) return;
-
-		for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-			const p = this.meshes[ i ].physics;
-
-			if ( p !== null && p !== undefined ) {
-
-				p.updateRigidBodies();
-
-			}
-
-		}
-
-		physics.stepSimulation( delta );
-
-		for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
-
-			const p = this.meshes[ i ].physics;
-
-			if ( p !== null && p !== undefined ) {
-
-				p.updateBones();
-
-			}
-
-		}
-
-	}
-
-}
-
-// Keep working quaternions for less GC
-const _quaternions = [];
-let _quaternionIndex = 0;
-
-function getQuaternion() {
-
-	if ( _quaternionIndex >= _quaternions.length ) {
-
-		_quaternions.push( new Quaternion() );
-
-	}
-
-	return _quaternions[ _quaternionIndex ++ ];
-
-}
-
-// Save rotation whose grant and IK are already applied
-// used by grant children
-const _grantResultMap = new Map();
-
-function updateOne( mesh, boneIndex, ikSolver, grantSolver ) {
-
-	const bones = mesh.skeleton.bones;
-	const bonesData = mesh.geometry.userData.MMD.bones;
-	const boneData = bonesData[ boneIndex ];
-	const bone = bones[ boneIndex ];
-
-	// Return if already updated by being referred as a grant parent.
-	if ( _grantResultMap.has( boneIndex ) ) return;
-
-	const quaternion = getQuaternion();
-
-	// Initialize grant result here to prevent infinite loop.
-	// If it's referred before updating with actual result later
-	// result without applyting IK or grant is gotten
-	// but better than composing of infinite loop.
-	_grantResultMap.set( boneIndex, quaternion.copy( bone.quaternion ) );
-
-	// @TODO: Support global grant and grant position
-	if ( grantSolver && boneData.grant &&
-		! boneData.grant.isLocal && boneData.grant.affectRotation ) {
-
-		const parentIndex = boneData.grant.parentIndex;
-		const ratio = boneData.grant.ratio;
-
-		if ( ! _grantResultMap.has( parentIndex ) ) {
-
-			updateOne( mesh, parentIndex, ikSolver, grantSolver );
-
-		}
-
-		grantSolver.addGrantRotation( bone, _grantResultMap.get( parentIndex ), ratio );
-
-	}
-
-	if ( ikSolver && boneData.ik ) {
-
-		// @TODO: Updating world matrices every time solving an IK bone is
-		// costly. Optimize if possible.
-		mesh.updateMatrixWorld( true );
-		ikSolver.updateOne( boneData.ik );
-
-		// No confident, but it seems the grant results with ik links should be updated?
-		const links = boneData.ik.links;
-
-		for ( let i = 0, il = links.length; i < il; i ++ ) {
-
-			const link = links[ i ];
-
-			if ( link.enabled === false ) continue;
-
-			const linkIndex = link.index;
-
-			if ( _grantResultMap.has( linkIndex ) ) {
-
-				_grantResultMap.set( linkIndex, _grantResultMap.get( linkIndex ).copy( bones[ linkIndex ].quaternion ) );
-
-			}
-
-		}
-
-	}
-
-	// Update with the actual result here
-	quaternion.copy( bone.quaternion );
-
-}
-
-//
-
-class AudioManager {
-
-	/**
-	 * @param {THREE.Audio} audio
-	 * @param {Object} params - (optional)
-	 * @param {Nuumber} params.delayTime
-	 */
-	constructor( audio, params = {} ) {
-
-		this.audio = audio;
-
-		this.elapsedTime = 0.0;
-		this.currentTime = 0.0;
-		this.delayTime = params.delayTime !== undefined
-			? params.delayTime : 0.0;
-
-		this.audioDuration = this.audio.buffer.duration;
-		this.duration = this.audioDuration + this.delayTime;
-
-	}
-
-	/**
-	 * @param {Number} delta
-	 * @return {AudioManager}
-	 */
-	control( delta ) {
-
-		this.elapsed += delta;
-		this.currentTime += delta;
-
-		if ( this._shouldStopAudio() ) this.audio.stop();
-		if ( this._shouldStartAudio() ) this.audio.play();
-
-		return this;
-
-	}
-
-	// private methods
-
-	_shouldStartAudio() {
-
-		if ( this.audio.isPlaying ) return false;
-
-		while ( this.currentTime >= this.duration ) {
-
-			this.currentTime -= this.duration;
-
-		}
-
-		if ( this.currentTime < this.delayTime ) return false;
-
-		// 'duration' can be bigger than 'audioDuration + delayTime' because of sync configuration
-		if ( ( this.currentTime - this.delayTime ) > this.audioDuration ) return false;
-
-		return true;
-
-	}
-
-	_shouldStopAudio() {
-
-		return this.audio.isPlaying &&
-			this.currentTime >= this.duration;
-
-	}
-
-}
-
-const _q = new Quaternion();
-
-/**
- * Solver for Grant (Fuyo in Japanese. I just google translated because
- * Fuyo may be MMD specific term and may not be common word in 3D CG terms.)
- * Grant propagates a bone's transform to other bones transforms even if
- * they are not children.
- * @param {THREE.SkinnedMesh} mesh
- * @param {Array<Object>} grants
- */
-class GrantSolver {
-
-	constructor( mesh, grants = [] ) {
-
-		this.mesh = mesh;
-		this.grants = grants;
-
-	}
-
-	/**
-	 * Solve all the grant bones
-	 * @return {GrantSolver}
-	 */
-	update() {
-
-		const grants = this.grants;
-
-		for ( let i = 0, il = grants.length; i < il; i ++ ) {
-
-			this.updateOne( grants[ i ] );
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Solve a grant bone
-	 * @param {Object} grant - grant parameter
-	 * @return {GrantSolver}
-	 */
-	updateOne( grant ) {
-
-		const bones = this.mesh.skeleton.bones;
-		const bone = bones[ grant.index ];
-		const parentBone = bones[ grant.parentIndex ];
-
-		if ( grant.isLocal ) {
-
-			// TODO: implement
-			if ( grant.affectPosition ) {
-
-			}
-
-			// TODO: implement
-			if ( grant.affectRotation ) {
-
-			}
-
-		} else {
-
-			// TODO: implement
-			if ( grant.affectPosition ) {
-
-			}
-
-			if ( grant.affectRotation ) {
-
-				this.addGrantRotation( bone, parentBone.quaternion, grant.ratio );
-
-			}
-
-		}
-
-		return this;
-
-	}
-
-	addGrantRotation( bone, q, ratio ) {
-
-		_q.set( 0, 0, 0, 1 );
-		_q.slerp( q, ratio );
-		bone.quaternion.multiply( _q );
-
-		return this;
-
-	}
-
-}
-
-export { MMDAnimationHelper };

+ 0 - 1408
examples/jsm/animation/MMDPhysics.js

@@ -1,1408 +0,0 @@
-import {
-	Bone,
-	BoxGeometry,
-	CapsuleGeometry,
-	Color,
-	Euler,
-	Matrix4,
-	Mesh,
-	MeshBasicMaterial,
-	Object3D,
-	Quaternion,
-	SphereGeometry,
-	Vector3
-} from 'three';
-
-/**
- * Dependencies
- *  - Ammo.js https://github.com/kripken/ammo.js
- *
- * MMDPhysics calculates physics with Ammo(Bullet based JavaScript Physics engine)
- * for MMD model loaded by MMDLoader.
- *
- * TODO
- *  - Physics in Worker
- */
-
-/* global Ammo */
-
-class MMDPhysics {
-
-	/**
-	 * @param {THREE.SkinnedMesh} mesh
-	 * @param {Array<Object>} rigidBodyParams
-	 * @param {Array<Object>} (optional) constraintParams
-	 * @param {Object} params - (optional)
-	 * @param {Number} params.unitStep - Default is 1 / 65.
-	 * @param {Integer} params.maxStepNum - Default is 3.
-	 * @param {Vector3} params.gravity - Default is ( 0, - 9.8 * 10, 0 )
-	 */
-	constructor( mesh, rigidBodyParams, constraintParams = [], params = {} ) {
-
-		if ( typeof Ammo === 'undefined' ) {
-
-			throw new Error( 'THREE.MMDPhysics: Import ammo.js https://github.com/kripken/ammo.js' );
-
-		}
-
-		this.manager = new ResourceManager();
-
-		this.mesh = mesh;
-
-		/*
-		 * I don't know why but 1/60 unitStep easily breaks models
-		 * so I set it 1/65 so far.
-		 * Don't set too small unitStep because
-		 * the smaller unitStep can make the performance worse.
-		 */
-		this.unitStep = ( params.unitStep !== undefined ) ? params.unitStep : 1 / 65;
-		this.maxStepNum = ( params.maxStepNum !== undefined ) ? params.maxStepNum : 3;
-		this.gravity = new Vector3( 0, - 9.8 * 10, 0 );
-
-		if ( params.gravity !== undefined ) this.gravity.copy( params.gravity );
-
-		this.world = params.world !== undefined ? params.world : null; // experimental
-
-		this.bodies = [];
-		this.constraints = [];
-
-		this._init( mesh, rigidBodyParams, constraintParams );
-
-		console.warn( 'THREE.MMDPhysics: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
-
-	}
-
-	/**
-	 * Advances Physics calculation and updates bones.
-	 *
-	 * @param {Number} delta - time in second
-	 * @return {MMDPhysics}
-	 */
-	update( delta ) {
-
-		const manager = this.manager;
-		const mesh = this.mesh;
-
-		// rigid bodies and constrains are for
-		// mesh's world scale (1, 1, 1).
-		// Convert to (1, 1, 1) if it isn't.
-
-		let isNonDefaultScale = false;
-
-		const position = manager.allocThreeVector3();
-		const quaternion = manager.allocThreeQuaternion();
-		const scale = manager.allocThreeVector3();
-
-		mesh.matrixWorld.decompose( position, quaternion, scale );
-
-		if ( scale.x !== 1 || scale.y !== 1 || scale.z !== 1 ) {
-
-			isNonDefaultScale = true;
-
-		}
-
-		let parent;
-
-		if ( isNonDefaultScale ) {
-
-			parent = mesh.parent;
-
-			if ( parent !== null ) mesh.parent = null;
-
-			scale.copy( this.mesh.scale );
-
-			mesh.scale.set( 1, 1, 1 );
-			mesh.updateMatrixWorld( true );
-
-		}
-
-		// calculate physics and update bones
-
-		this._updateRigidBodies();
-		this._stepSimulation( delta );
-		this._updateBones();
-
-		// restore mesh if converted above
-
-		if ( isNonDefaultScale ) {
-
-			if ( parent !== null ) mesh.parent = parent;
-
-			mesh.scale.copy( scale );
-
-		}
-
-		manager.freeThreeVector3( scale );
-		manager.freeThreeQuaternion( quaternion );
-		manager.freeThreeVector3( position );
-
-		return this;
-
-	}
-
-	/**
-	 * Resets rigid bodies transorm to current bone's.
-	 *
-	 * @return {MMDPhysics}
-	 */
-	reset() {
-
-		for ( let i = 0, il = this.bodies.length; i < il; i ++ ) {
-
-			this.bodies[ i ].reset();
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Warm ups Rigid bodies. Calculates cycles steps.
-	 *
-	 * @param {Integer} cycles
-	 * @return {MMDPhysics}
-	 */
-	warmup( cycles ) {
-
-		for ( let i = 0; i < cycles; i ++ ) {
-
-			this.update( 1 / 60 );
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Sets gravity.
-	 *
-	 * @param {Vector3} gravity
-	 * @return {MMDPhysicsHelper}
-	 */
-	setGravity( gravity ) {
-
-		this.world.setGravity( new Ammo.btVector3( gravity.x, gravity.y, gravity.z ) );
-		this.gravity.copy( gravity );
-
-		return this;
-
-	}
-
-	/**
-	 * Creates MMDPhysicsHelper
-	 *
-	 * @return {MMDPhysicsHelper}
-	 */
-	createHelper() {
-
-		return new MMDPhysicsHelper( this.mesh, this );
-
-	}
-
-	// private methods
-
-	_init( mesh, rigidBodyParams, constraintParams ) {
-
-		const manager = this.manager;
-
-		// rigid body/constraint parameters are for
-		// mesh's default world transform as position(0, 0, 0),
-		// quaternion(0, 0, 0, 1) and scale(0, 0, 0)
-
-		const parent = mesh.parent;
-
-		if ( parent !== null ) mesh.parent = null;
-
-		const currentPosition = manager.allocThreeVector3();
-		const currentQuaternion = manager.allocThreeQuaternion();
-		const currentScale = manager.allocThreeVector3();
-
-		currentPosition.copy( mesh.position );
-		currentQuaternion.copy( mesh.quaternion );
-		currentScale.copy( mesh.scale );
-
-		mesh.position.set( 0, 0, 0 );
-		mesh.quaternion.set( 0, 0, 0, 1 );
-		mesh.scale.set( 1, 1, 1 );
-
-		mesh.updateMatrixWorld( true );
-
-		if ( this.world === null ) {
-
-			this.world = this._createWorld();
-			this.setGravity( this.gravity );
-
-		}
-
-		this._initRigidBodies( rigidBodyParams );
-		this._initConstraints( constraintParams );
-
-		if ( parent !== null ) mesh.parent = parent;
-
-		mesh.position.copy( currentPosition );
-		mesh.quaternion.copy( currentQuaternion );
-		mesh.scale.copy( currentScale );
-
-		mesh.updateMatrixWorld( true );
-
-		this.reset();
-
-		manager.freeThreeVector3( currentPosition );
-		manager.freeThreeQuaternion( currentQuaternion );
-		manager.freeThreeVector3( currentScale );
-
-	}
-
-	_createWorld() {
-
-		const config = new Ammo.btDefaultCollisionConfiguration();
-		const dispatcher = new Ammo.btCollisionDispatcher( config );
-		const cache = new Ammo.btDbvtBroadphase();
-		const solver = new Ammo.btSequentialImpulseConstraintSolver();
-		const world = new Ammo.btDiscreteDynamicsWorld( dispatcher, cache, solver, config );
-		return world;
-
-	}
-
-	_initRigidBodies( rigidBodies ) {
-
-		for ( let i = 0, il = rigidBodies.length; i < il; i ++ ) {
-
-			this.bodies.push( new RigidBody(
-				this.mesh, this.world, rigidBodies[ i ], this.manager ) );
-
-		}
-
-	}
-
-	_initConstraints( constraints ) {
-
-		for ( let i = 0, il = constraints.length; i < il; i ++ ) {
-
-			const params = constraints[ i ];
-			const bodyA = this.bodies[ params.rigidBodyIndex1 ];
-			const bodyB = this.bodies[ params.rigidBodyIndex2 ];
-			this.constraints.push( new Constraint( this.mesh, this.world, bodyA, bodyB, params, this.manager ) );
-
-		}
-
-	}
-
-	_stepSimulation( delta ) {
-
-		const unitStep = this.unitStep;
-		let stepTime = delta;
-		let maxStepNum = ( ( delta / unitStep ) | 0 ) + 1;
-
-		if ( stepTime < unitStep ) {
-
-			stepTime = unitStep;
-			maxStepNum = 1;
-
-		}
-
-		if ( maxStepNum > this.maxStepNum ) {
-
-			maxStepNum = this.maxStepNum;
-
-		}
-
-		this.world.stepSimulation( stepTime, maxStepNum, unitStep );
-
-	}
-
-	_updateRigidBodies() {
-
-		for ( let i = 0, il = this.bodies.length; i < il; i ++ ) {
-
-			this.bodies[ i ].updateFromBone();
-
-		}
-
-	}
-
-	_updateBones() {
-
-		for ( let i = 0, il = this.bodies.length; i < il; i ++ ) {
-
-			this.bodies[ i ].updateBone();
-
-		}
-
-	}
-
-}
-
-/**
- * This manager's responsibilies are
- *
- * 1. manage Ammo.js and Three.js object resources and
- *    improve the performance and the memory consumption by
- *    reusing objects.
- *
- * 2. provide simple Ammo object operations.
- */
-class ResourceManager {
-
-	constructor() {
-
-		// for Three.js
-		this.threeVector3s = [];
-		this.threeMatrix4s = [];
-		this.threeQuaternions = [];
-		this.threeEulers = [];
-
-		// for Ammo.js
-		this.transforms = [];
-		this.quaternions = [];
-		this.vector3s = [];
-
-	}
-
-	allocThreeVector3() {
-
-		return ( this.threeVector3s.length > 0 )
-			? this.threeVector3s.pop()
-			: new Vector3();
-
-	}
-
-	freeThreeVector3( v ) {
-
-		this.threeVector3s.push( v );
-
-	}
-
-	allocThreeMatrix4() {
-
-		return ( this.threeMatrix4s.length > 0 )
-			? this.threeMatrix4s.pop()
-			: new Matrix4();
-
-	}
-
-	freeThreeMatrix4( m ) {
-
-		this.threeMatrix4s.push( m );
-
-	}
-
-	allocThreeQuaternion() {
-
-		return ( this.threeQuaternions.length > 0 )
-			? this.threeQuaternions.pop()
-			: new Quaternion();
-
-	}
-
-	freeThreeQuaternion( q ) {
-
-		this.threeQuaternions.push( q );
-
-	}
-
-	allocThreeEuler() {
-
-		return ( this.threeEulers.length > 0 )
-			? this.threeEulers.pop()
-			: new Euler();
-
-	}
-
-	freeThreeEuler( e ) {
-
-		this.threeEulers.push( e );
-
-	}
-
-	allocTransform() {
-
-		return ( this.transforms.length > 0 )
-			? this.transforms.pop()
-			: new Ammo.btTransform();
-
-	}
-
-	freeTransform( t ) {
-
-		this.transforms.push( t );
-
-	}
-
-	allocQuaternion() {
-
-		return ( this.quaternions.length > 0 )
-			? this.quaternions.pop()
-			: new Ammo.btQuaternion();
-
-	}
-
-	freeQuaternion( q ) {
-
-		this.quaternions.push( q );
-
-	}
-
-	allocVector3() {
-
-		return ( this.vector3s.length > 0 )
-			? this.vector3s.pop()
-			: new Ammo.btVector3();
-
-	}
-
-	freeVector3( v ) {
-
-		this.vector3s.push( v );
-
-	}
-
-	setIdentity( t ) {
-
-		t.setIdentity();
-
-	}
-
-	getBasis( t ) {
-
-		var q = this.allocQuaternion();
-		t.getBasis().getRotation( q );
-		return q;
-
-	}
-
-	getBasisAsMatrix3( t ) {
-
-		var q = this.getBasis( t );
-		var m = this.quaternionToMatrix3( q );
-		this.freeQuaternion( q );
-		return m;
-
-	}
-
-	getOrigin( t ) {
-
-		return t.getOrigin();
-
-	}
-
-	setOrigin( t, v ) {
-
-		t.getOrigin().setValue( v.x(), v.y(), v.z() );
-
-	}
-
-	copyOrigin( t1, t2 ) {
-
-		var o = t2.getOrigin();
-		this.setOrigin( t1, o );
-
-	}
-
-	setBasis( t, q ) {
-
-		t.setRotation( q );
-
-	}
-
-	setBasisFromMatrix3( t, m ) {
-
-		var q = this.matrix3ToQuaternion( m );
-		this.setBasis( t, q );
-		this.freeQuaternion( q );
-
-	}
-
-	setOriginFromArray3( t, a ) {
-
-		t.getOrigin().setValue( a[ 0 ], a[ 1 ], a[ 2 ] );
-
-	}
-
-	setOriginFromThreeVector3( t, v ) {
-
-		t.getOrigin().setValue( v.x, v.y, v.z );
-
-	}
-
-	setBasisFromArray3( t, a ) {
-
-		var thQ = this.allocThreeQuaternion();
-		var thE = this.allocThreeEuler();
-		thE.set( a[ 0 ], a[ 1 ], a[ 2 ] );
-		this.setBasisFromThreeQuaternion( t, thQ.setFromEuler( thE ) );
-
-		this.freeThreeEuler( thE );
-		this.freeThreeQuaternion( thQ );
-
-	}
-
-	setBasisFromThreeQuaternion( t, a ) {
-
-		var q = this.allocQuaternion();
-
-		q.setX( a.x );
-		q.setY( a.y );
-		q.setZ( a.z );
-		q.setW( a.w );
-		this.setBasis( t, q );
-
-		this.freeQuaternion( q );
-
-	}
-
-	multiplyTransforms( t1, t2 ) {
-
-		var t = this.allocTransform();
-		this.setIdentity( t );
-
-		var m1 = this.getBasisAsMatrix3( t1 );
-		var m2 = this.getBasisAsMatrix3( t2 );
-
-		var o1 = this.getOrigin( t1 );
-		var o2 = this.getOrigin( t2 );
-
-		var v1 = this.multiplyMatrix3ByVector3( m1, o2 );
-		var v2 = this.addVector3( v1, o1 );
-		this.setOrigin( t, v2 );
-
-		var m3 = this.multiplyMatrices3( m1, m2 );
-		this.setBasisFromMatrix3( t, m3 );
-
-		this.freeVector3( v1 );
-		this.freeVector3( v2 );
-
-		return t;
-
-	}
-
-	inverseTransform( t ) {
-
-		var t2 = this.allocTransform();
-
-		var m1 = this.getBasisAsMatrix3( t );
-		var o = this.getOrigin( t );
-
-		var m2 = this.transposeMatrix3( m1 );
-		var v1 = this.negativeVector3( o );
-		var v2 = this.multiplyMatrix3ByVector3( m2, v1 );
-
-		this.setOrigin( t2, v2 );
-		this.setBasisFromMatrix3( t2, m2 );
-
-		this.freeVector3( v1 );
-		this.freeVector3( v2 );
-
-		return t2;
-
-	}
-
-	multiplyMatrices3( m1, m2 ) {
-
-		var m3 = [];
-
-		var v10 = this.rowOfMatrix3( m1, 0 );
-		var v11 = this.rowOfMatrix3( m1, 1 );
-		var v12 = this.rowOfMatrix3( m1, 2 );
-
-		var v20 = this.columnOfMatrix3( m2, 0 );
-		var v21 = this.columnOfMatrix3( m2, 1 );
-		var v22 = this.columnOfMatrix3( m2, 2 );
-
-		m3[ 0 ] = this.dotVectors3( v10, v20 );
-		m3[ 1 ] = this.dotVectors3( v10, v21 );
-		m3[ 2 ] = this.dotVectors3( v10, v22 );
-		m3[ 3 ] = this.dotVectors3( v11, v20 );
-		m3[ 4 ] = this.dotVectors3( v11, v21 );
-		m3[ 5 ] = this.dotVectors3( v11, v22 );
-		m3[ 6 ] = this.dotVectors3( v12, v20 );
-		m3[ 7 ] = this.dotVectors3( v12, v21 );
-		m3[ 8 ] = this.dotVectors3( v12, v22 );
-
-		this.freeVector3( v10 );
-		this.freeVector3( v11 );
-		this.freeVector3( v12 );
-		this.freeVector3( v20 );
-		this.freeVector3( v21 );
-		this.freeVector3( v22 );
-
-		return m3;
-
-	}
-
-	addVector3( v1, v2 ) {
-
-		var v = this.allocVector3();
-		v.setValue( v1.x() + v2.x(), v1.y() + v2.y(), v1.z() + v2.z() );
-		return v;
-
-	}
-
-	dotVectors3( v1, v2 ) {
-
-		return v1.x() * v2.x() + v1.y() * v2.y() + v1.z() * v2.z();
-
-	}
-
-	rowOfMatrix3( m, i ) {
-
-		var v = this.allocVector3();
-		v.setValue( m[ i * 3 + 0 ], m[ i * 3 + 1 ], m[ i * 3 + 2 ] );
-		return v;
-
-	}
-
-	columnOfMatrix3( m, i ) {
-
-		var v = this.allocVector3();
-		v.setValue( m[ i + 0 ], m[ i + 3 ], m[ i + 6 ] );
-		return v;
-
-	}
-
-	negativeVector3( v ) {
-
-		var v2 = this.allocVector3();
-		v2.setValue( - v.x(), - v.y(), - v.z() );
-		return v2;
-
-	}
-
-	multiplyMatrix3ByVector3( m, v ) {
-
-		var v4 = this.allocVector3();
-
-		var v0 = this.rowOfMatrix3( m, 0 );
-		var v1 = this.rowOfMatrix3( m, 1 );
-		var v2 = this.rowOfMatrix3( m, 2 );
-		var x = this.dotVectors3( v0, v );
-		var y = this.dotVectors3( v1, v );
-		var z = this.dotVectors3( v2, v );
-
-		v4.setValue( x, y, z );
-
-		this.freeVector3( v0 );
-		this.freeVector3( v1 );
-		this.freeVector3( v2 );
-
-		return v4;
-
-	}
-
-	transposeMatrix3( m ) {
-
-		var m2 = [];
-		m2[ 0 ] = m[ 0 ];
-		m2[ 1 ] = m[ 3 ];
-		m2[ 2 ] = m[ 6 ];
-		m2[ 3 ] = m[ 1 ];
-		m2[ 4 ] = m[ 4 ];
-		m2[ 5 ] = m[ 7 ];
-		m2[ 6 ] = m[ 2 ];
-		m2[ 7 ] = m[ 5 ];
-		m2[ 8 ] = m[ 8 ];
-		return m2;
-
-	}
-
-	quaternionToMatrix3( q ) {
-
-		var m = [];
-
-		var x = q.x();
-		var y = q.y();
-		var z = q.z();
-		var w = q.w();
-
-		var xx = x * x;
-		var yy = y * y;
-		var zz = z * z;
-
-		var xy = x * y;
-		var yz = y * z;
-		var zx = z * x;
-
-		var xw = x * w;
-		var yw = y * w;
-		var zw = z * w;
-
-		m[ 0 ] = 1 - 2 * ( yy + zz );
-		m[ 1 ] = 2 * ( xy - zw );
-		m[ 2 ] = 2 * ( zx + yw );
-		m[ 3 ] = 2 * ( xy + zw );
-		m[ 4 ] = 1 - 2 * ( zz + xx );
-		m[ 5 ] = 2 * ( yz - xw );
-		m[ 6 ] = 2 * ( zx - yw );
-		m[ 7 ] = 2 * ( yz + xw );
-		m[ 8 ] = 1 - 2 * ( xx + yy );
-
-		return m;
-
-	}
-
-	matrix3ToQuaternion( m ) {
-
-		var t = m[ 0 ] + m[ 4 ] + m[ 8 ];
-		var s, x, y, z, w;
-
-		if ( t > 0 ) {
-
-			s = Math.sqrt( t + 1.0 ) * 2;
-			w = 0.25 * s;
-			x = ( m[ 7 ] - m[ 5 ] ) / s;
-			y = ( m[ 2 ] - m[ 6 ] ) / s;
-			z = ( m[ 3 ] - m[ 1 ] ) / s;
-
-		} else if ( ( m[ 0 ] > m[ 4 ] ) && ( m[ 0 ] > m[ 8 ] ) ) {
-
-			s = Math.sqrt( 1.0 + m[ 0 ] - m[ 4 ] - m[ 8 ] ) * 2;
-			w = ( m[ 7 ] - m[ 5 ] ) / s;
-			x = 0.25 * s;
-			y = ( m[ 1 ] + m[ 3 ] ) / s;
-			z = ( m[ 2 ] + m[ 6 ] ) / s;
-
-		} else if ( m[ 4 ] > m[ 8 ] ) {
-
-			s = Math.sqrt( 1.0 + m[ 4 ] - m[ 0 ] - m[ 8 ] ) * 2;
-			w = ( m[ 2 ] - m[ 6 ] ) / s;
-			x = ( m[ 1 ] + m[ 3 ] ) / s;
-			y = 0.25 * s;
-			z = ( m[ 5 ] + m[ 7 ] ) / s;
-
-		} else {
-
-			s = Math.sqrt( 1.0 + m[ 8 ] - m[ 0 ] - m[ 4 ] ) * 2;
-			w = ( m[ 3 ] - m[ 1 ] ) / s;
-			x = ( m[ 2 ] + m[ 6 ] ) / s;
-			y = ( m[ 5 ] + m[ 7 ] ) / s;
-			z = 0.25 * s;
-
-		}
-
-		var q = this.allocQuaternion();
-		q.setX( x );
-		q.setY( y );
-		q.setZ( z );
-		q.setW( w );
-		return q;
-
-	}
-
-}
-
-/**
- * @param {THREE.SkinnedMesh} mesh
- * @param {Ammo.btDiscreteDynamicsWorld} world
- * @param {Object} params
- * @param {ResourceManager} manager
- */
-class RigidBody {
-
-	constructor( mesh, world, params, manager ) {
-
-		this.mesh = mesh;
-		this.world = world;
-		this.params = params;
-		this.manager = manager;
-
-		this.body = null;
-		this.bone = null;
-		this.boneOffsetForm = null;
-		this.boneOffsetFormInverse = null;
-
-		this._init();
-
-	}
-
-	/**
-	 * Resets rigid body transform to the current bone's.
-	 *
-	 * @return {RigidBody}
-	 */
-	reset() {
-
-		this._setTransformFromBone();
-		return this;
-
-	}
-
-	/**
-	 * Updates rigid body's transform from the current bone.
-	 *
-	 * @return {RidigBody}
-	 */
-	updateFromBone() {
-
-		if ( this.params.boneIndex !== - 1 && this.params.type === 0 ) {
-
-			this._setTransformFromBone();
-
-		}
-
-		return this;
-
-	}
-
-	/**
-	 * Updates bone from the current ridid body's transform.
-	 *
-	 * @return {RidigBody}
-	 */
-	updateBone() {
-
-		if ( this.params.type === 0 || this.params.boneIndex === - 1 ) {
-
-			return this;
-
-		}
-
-		this._updateBoneRotation();
-
-		if ( this.params.type === 1 ) {
-
-			this._updateBonePosition();
-
-		}
-
-		this.bone.updateMatrixWorld( true );
-
-		if ( this.params.type === 2 ) {
-
-			this._setPositionFromBone();
-
-		}
-
-		return this;
-
-	}
-
-	// private methods
-
-	_init() {
-
-		function generateShape( p ) {
-
-			switch ( p.shapeType ) {
-
-				case 0:
-					return new Ammo.btSphereShape( p.width );
-
-				case 1:
-					return new Ammo.btBoxShape( new Ammo.btVector3( p.width, p.height, p.depth ) );
-
-				case 2:
-					return new Ammo.btCapsuleShape( p.width, p.height );
-
-				default:
-					throw new Error( 'unknown shape type ' + p.shapeType );
-
-			}
-
-		}
-
-		const manager = this.manager;
-		const params = this.params;
-		const bones = this.mesh.skeleton.bones;
-		const bone = ( params.boneIndex === - 1 )
-			? new Bone()
-			: bones[ params.boneIndex ];
-
-		const shape = generateShape( params );
-		const weight = ( params.type === 0 ) ? 0 : params.weight;
-		const localInertia = manager.allocVector3();
-		localInertia.setValue( 0, 0, 0 );
-
-		if ( weight !== 0 ) {
-
-			shape.calculateLocalInertia( weight, localInertia );
-
-		}
-
-		const boneOffsetForm = manager.allocTransform();
-		manager.setIdentity( boneOffsetForm );
-		manager.setOriginFromArray3( boneOffsetForm, params.position );
-		manager.setBasisFromArray3( boneOffsetForm, params.rotation );
-
-		const vector = manager.allocThreeVector3();
-		const boneForm = manager.allocTransform();
-		manager.setIdentity( boneForm );
-		manager.setOriginFromThreeVector3( boneForm, bone.getWorldPosition( vector ) );
-
-		const form = manager.multiplyTransforms( boneForm, boneOffsetForm );
-		const state = new Ammo.btDefaultMotionState( form );
-
-		const info = new Ammo.btRigidBodyConstructionInfo( weight, state, shape, localInertia );
-		info.set_m_friction( params.friction );
-		info.set_m_restitution( params.restitution );
-
-		const body = new Ammo.btRigidBody( info );
-
-		if ( params.type === 0 ) {
-
-			body.setCollisionFlags( body.getCollisionFlags() | 2 );
-
-			/*
-			 * It'd be better to comment out this line though in general I should call this method
-			 * because I'm not sure why but physics will be more like MMD's
-			 * if I comment out.
-			 */
-			body.setActivationState( 4 );
-
-		}
-
-		body.setDamping( params.positionDamping, params.rotationDamping );
-		body.setSleepingThresholds( 0, 0 );
-
-		this.world.addRigidBody( body, 1 << params.groupIndex, params.groupTarget );
-
-		this.body = body;
-		this.bone = bone;
-		this.boneOffsetForm = boneOffsetForm;
-		this.boneOffsetFormInverse = manager.inverseTransform( boneOffsetForm );
-
-		manager.freeVector3( localInertia );
-		manager.freeTransform( form );
-		manager.freeTransform( boneForm );
-		manager.freeThreeVector3( vector );
-
-	}
-
-	_getBoneTransform() {
-
-		const manager = this.manager;
-		const p = manager.allocThreeVector3();
-		const q = manager.allocThreeQuaternion();
-		const s = manager.allocThreeVector3();
-
-		this.bone.matrixWorld.decompose( p, q, s );
-
-		const tr = manager.allocTransform();
-		manager.setOriginFromThreeVector3( tr, p );
-		manager.setBasisFromThreeQuaternion( tr, q );
-
-		const form = manager.multiplyTransforms( tr, this.boneOffsetForm );
-
-		manager.freeTransform( tr );
-		manager.freeThreeVector3( s );
-		manager.freeThreeQuaternion( q );
-		manager.freeThreeVector3( p );
-
-		return form;
-
-	}
-
-	_getWorldTransformForBone() {
-
-		const manager = this.manager;
-		const tr = this.body.getCenterOfMassTransform();
-		return manager.multiplyTransforms( tr, this.boneOffsetFormInverse );
-
-	}
-
-	_setTransformFromBone() {
-
-		const manager = this.manager;
-		const form = this._getBoneTransform();
-
-		// TODO: check the most appropriate way to set
-		//this.body.setWorldTransform( form );
-		this.body.setCenterOfMassTransform( form );
-		this.body.getMotionState().setWorldTransform( form );
-
-		manager.freeTransform( form );
-
-	}
-
-	_setPositionFromBone() {
-
-		const manager = this.manager;
-		const form = this._getBoneTransform();
-
-		const tr = manager.allocTransform();
-		this.body.getMotionState().getWorldTransform( tr );
-		manager.copyOrigin( tr, form );
-
-		// TODO: check the most appropriate way to set
-		//this.body.setWorldTransform( tr );
-		this.body.setCenterOfMassTransform( tr );
-		this.body.getMotionState().setWorldTransform( tr );
-
-		manager.freeTransform( tr );
-		manager.freeTransform( form );
-
-	}
-
-	_updateBoneRotation() {
-
-		const manager = this.manager;
-
-		const tr = this._getWorldTransformForBone();
-		const q = manager.getBasis( tr );
-
-		const thQ = manager.allocThreeQuaternion();
-		const thQ2 = manager.allocThreeQuaternion();
-		const thQ3 = manager.allocThreeQuaternion();
-
-		thQ.set( q.x(), q.y(), q.z(), q.w() );
-		thQ2.setFromRotationMatrix( this.bone.matrixWorld );
-		thQ2.conjugate();
-		thQ2.multiply( thQ );
-
-		//this.bone.quaternion.multiply( thQ2 );
-
-		thQ3.setFromRotationMatrix( this.bone.matrix );
-
-		// Renormalizing quaternion here because repeatedly transforming
-		// quaternion continuously accumulates floating point error and
-		// can end up being overflow. See #15335
-		this.bone.quaternion.copy( thQ2.multiply( thQ3 ).normalize() );
-
-		manager.freeThreeQuaternion( thQ );
-		manager.freeThreeQuaternion( thQ2 );
-		manager.freeThreeQuaternion( thQ3 );
-
-		manager.freeQuaternion( q );
-		manager.freeTransform( tr );
-
-	}
-
-	_updateBonePosition() {
-
-		const manager = this.manager;
-
-		const tr = this._getWorldTransformForBone();
-
-		const thV = manager.allocThreeVector3();
-
-		const o = manager.getOrigin( tr );
-		thV.set( o.x(), o.y(), o.z() );
-
-		if ( this.bone.parent ) {
-
-			this.bone.parent.worldToLocal( thV );
-
-		}
-
-		this.bone.position.copy( thV );
-
-		manager.freeThreeVector3( thV );
-
-		manager.freeTransform( tr );
-
-	}
-
-}
-
-//
-
-class Constraint {
-
-	/**
-	 * @param {THREE.SkinnedMesh} mesh
-	 * @param {Ammo.btDiscreteDynamicsWorld} world
-	 * @param {RigidBody} bodyA
-	 * @param {RigidBody} bodyB
-	 * @param {Object} params
-	 * @param {ResourceManager} manager
-	 */
-	constructor( mesh, world, bodyA, bodyB, params, manager ) {
-
-		this.mesh = mesh;
-		this.world = world;
-		this.bodyA = bodyA;
-		this.bodyB = bodyB;
-		this.params = params;
-		this.manager = manager;
-
-		this.constraint = null;
-
-		this._init();
-
-	}
-
-	// private method
-
-	_init() {
-
-		const manager = this.manager;
-		const params = this.params;
-		const bodyA = this.bodyA;
-		const bodyB = this.bodyB;
-
-		const form = manager.allocTransform();
-		manager.setIdentity( form );
-		manager.setOriginFromArray3( form, params.position );
-		manager.setBasisFromArray3( form, params.rotation );
-
-		const formA = manager.allocTransform();
-		const formB = manager.allocTransform();
-
-		bodyA.body.getMotionState().getWorldTransform( formA );
-		bodyB.body.getMotionState().getWorldTransform( formB );
-
-		const formInverseA = manager.inverseTransform( formA );
-		const formInverseB = manager.inverseTransform( formB );
-
-		const formA2 = manager.multiplyTransforms( formInverseA, form );
-		const formB2 = manager.multiplyTransforms( formInverseB, form );
-
-		const constraint = new Ammo.btGeneric6DofSpringConstraint( bodyA.body, bodyB.body, formA2, formB2, true );
-
-		const lll = manager.allocVector3();
-		const lul = manager.allocVector3();
-		const all = manager.allocVector3();
-		const aul = manager.allocVector3();
-
-		lll.setValue( params.translationLimitation1[ 0 ],
-		              params.translationLimitation1[ 1 ],
-		              params.translationLimitation1[ 2 ] );
-		lul.setValue( params.translationLimitation2[ 0 ],
-		              params.translationLimitation2[ 1 ],
-		              params.translationLimitation2[ 2 ] );
-		all.setValue( params.rotationLimitation1[ 0 ],
-		              params.rotationLimitation1[ 1 ],
-		              params.rotationLimitation1[ 2 ] );
-		aul.setValue( params.rotationLimitation2[ 0 ],
-		              params.rotationLimitation2[ 1 ],
-		              params.rotationLimitation2[ 2 ] );
-
-		constraint.setLinearLowerLimit( lll );
-		constraint.setLinearUpperLimit( lul );
-		constraint.setAngularLowerLimit( all );
-		constraint.setAngularUpperLimit( aul );
-
-		for ( let i = 0; i < 3; i ++ ) {
-
-			if ( params.springPosition[ i ] !== 0 ) {
-
-				constraint.enableSpring( i, true );
-				constraint.setStiffness( i, params.springPosition[ i ] );
-
-			}
-
-		}
-
-		for ( let i = 0; i < 3; i ++ ) {
-
-			if ( params.springRotation[ i ] !== 0 ) {
-
-				constraint.enableSpring( i + 3, true );
-				constraint.setStiffness( i + 3, params.springRotation[ i ] );
-
-			}
-
-		}
-
-		/*
-		 * Currently(10/31/2016) official ammo.js doesn't support
-		 * btGeneric6DofSpringConstraint.setParam method.
-		 * You need custom ammo.js (add the method into idl) if you wanna use.
-		 * By setting this parameter, physics will be more like MMD's
-		 */
-		if ( constraint.setParam !== undefined ) {
-
-			for ( let i = 0; i < 6; i ++ ) {
-
-				constraint.setParam( 2, 0.475, i );
-
-			}
-
-		}
-
-		this.world.addConstraint( constraint, true );
-		this.constraint = constraint;
-
-		manager.freeTransform( form );
-		manager.freeTransform( formA );
-		manager.freeTransform( formB );
-		manager.freeTransform( formInverseA );
-		manager.freeTransform( formInverseB );
-		manager.freeTransform( formA2 );
-		manager.freeTransform( formB2 );
-		manager.freeVector3( lll );
-		manager.freeVector3( lul );
-		manager.freeVector3( all );
-		manager.freeVector3( aul );
-
-	}
-
-}
-
-//
-
-const _position = new Vector3();
-const _quaternion = new Quaternion();
-const _scale = new Vector3();
-const _matrixWorldInv = new Matrix4();
-
-class MMDPhysicsHelper extends Object3D {
-
-	/**
-	 * Visualize Rigid bodies
-	 *
-	 * @param {THREE.SkinnedMesh} mesh
-	 * @param {Physics} physics
-	 */
-	constructor( mesh, physics ) {
-
-		super();
-
-		this.root = mesh;
-		this.physics = physics;
-
-		this.matrix.copy( mesh.matrixWorld );
-		this.matrixAutoUpdate = false;
-
-		this.materials = [];
-
-		this.materials.push(
-			new MeshBasicMaterial( {
-				color: new Color( 0xff8888 ),
-				wireframe: true,
-				depthTest: false,
-				depthWrite: false,
-				opacity: 0.25,
-				transparent: true
-			} )
-		);
-
-		this.materials.push(
-			new MeshBasicMaterial( {
-				color: new Color( 0x88ff88 ),
-				wireframe: true,
-				depthTest: false,
-				depthWrite: false,
-				opacity: 0.25,
-				transparent: true
-			} )
-		);
-
-		this.materials.push(
-			new MeshBasicMaterial( {
-				color: new Color( 0x8888ff ),
-				wireframe: true,
-				depthTest: false,
-				depthWrite: false,
-				opacity: 0.25,
-				transparent: true
-			} )
-		);
-
-		this._init();
-
-	}
-
-
-	/**
-	 * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
-	 */
-	dispose() {
-
-		const materials = this.materials;
-		const children = this.children;
-
-		for ( let i = 0; i < materials.length; i ++ ) {
-
-			materials[ i ].dispose();
-
-		}
-
-		for ( let i = 0; i < children.length; i ++ ) {
-
-			const child = children[ i ];
-
-			if ( child.isMesh ) child.geometry.dispose();
-
-		}
-
-	}
-
-	/**
-	 * Updates Rigid Bodies visualization.
-	 */
-	updateMatrixWorld( force ) {
-
-		var mesh = this.root;
-
-		if ( this.visible ) {
-
-			var bodies = this.physics.bodies;
-
-			_matrixWorldInv
-				.copy( mesh.matrixWorld )
-				.decompose( _position, _quaternion, _scale )
-				.compose( _position, _quaternion, _scale.set( 1, 1, 1 ) )
-				.invert();
-
-			for ( var i = 0, il = bodies.length; i < il; i ++ ) {
-
-				var body = bodies[ i ].body;
-				var child = this.children[ i ];
-
-				var tr = body.getCenterOfMassTransform();
-				var origin = tr.getOrigin();
-				var rotation = tr.getRotation();
-
-				child.position
-					.set( origin.x(), origin.y(), origin.z() )
-					.applyMatrix4( _matrixWorldInv );
-
-				child.quaternion
-					.setFromRotationMatrix( _matrixWorldInv )
-					.multiply(
-						_quaternion.set( rotation.x(), rotation.y(), rotation.z(), rotation.w() )
-					);
-
-			}
-
-		}
-
-		this.matrix
-			.copy( mesh.matrixWorld )
-			.decompose( _position, _quaternion, _scale )
-			.compose( _position, _quaternion, _scale.set( 1, 1, 1 ) );
-
-		super.updateMatrixWorld( force );
-
-	}
-
-	// private method
-
-	_init() {
-
-		var bodies = this.physics.bodies;
-
-		function createGeometry( param ) {
-
-			switch ( param.shapeType ) {
-
-				case 0:
-					return new SphereGeometry( param.width, 16, 8 );
-
-				case 1:
-					return new BoxGeometry( param.width * 2, param.height * 2, param.depth * 2, 8, 8, 8 );
-
-				case 2:
-					return new CapsuleGeometry( param.width, param.height, 8, 16 );
-
-				default:
-					return null;
-
-			}
-
-		}
-
-		for ( var i = 0, il = bodies.length; i < il; i ++ ) {
-
-			var param = bodies[ i ].params;
-			this.add( new Mesh( createGeometry( param ), this.materials[ param.type ] ) );
-
-		}
-
-	}
-
-}
-
-export { MMDPhysics };

+ 0 - 223
examples/jsm/exporters/MMDExporter.js

@@ -1,223 +0,0 @@
-import {
-	Matrix4,
-	Quaternion,
-	Vector3
-} from 'three';
-import { MMDParser } from '../libs/mmdparser.module.js';
-
-/**
- * Dependencies
- *  - mmd-parser https://github.com/takahirox/mmd-parser
- */
-
-class MMDExporter {
-
-	constructor() {
-
-		console.warn( 'THREE.MMDExporter: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
-
-	}
-
-	/* TODO: implement
-	// mesh -> pmd
-	this.parsePmd = function ( object ) {
-
-	};
-	*/
-
-	/* TODO: implement
-	// mesh -> pmx
-	this.parsePmx = function ( object ) {
-
-	};
-	*/
-
-	/* TODO: implement
-	// animation + skeleton -> vmd
-	this.parseVmd = function ( object ) {
-
-	};
-	*/
-
-	/*
-	 * skeleton -> vpd
-	 * Returns Shift_JIS encoded Uint8Array. Otherwise return strings.
-	 */
-	parseVpd( skin, outputShiftJis, useOriginalBones ) {
-
-		if ( skin.isSkinnedMesh !== true ) {
-
-			console.warn( 'THREE.MMDExporter: parseVpd() requires SkinnedMesh instance.' );
-			return null;
-
-		}
-
-		function toStringsFromNumber( num ) {
-
-			if ( Math.abs( num ) < 1e-6 ) num = 0;
-
-			let a = num.toString();
-
-			if ( a.indexOf( '.' ) === - 1 ) {
-
-				a += '.';
-
-			}
-
-			a += '000000';
-
-			const index = a.indexOf( '.' );
-
-			const d = a.slice( 0, index );
-			const p = a.slice( index + 1, index + 7 );
-
-			return d + '.' + p;
-
-		}
-
-		function toStringsFromArray( array ) {
-
-			const a = [];
-
-			for ( let i = 0, il = array.length; i < il; i ++ ) {
-
-				a.push( toStringsFromNumber( array[ i ] ) );
-
-			}
-
-			return a.join( ',' );
-
-		}
-
-		skin.updateMatrixWorld( true );
-
-		const bones = skin.skeleton.bones;
-		const bones2 = getBindBones( skin );
-
-		const position = new Vector3();
-		const quaternion = new Quaternion();
-		const quaternion2 = new Quaternion();
-		const matrix = new Matrix4();
-
-		const array = [];
-		array.push( 'Vocaloid Pose Data file' );
-		array.push( '' );
-		array.push( ( skin.name !== '' ? skin.name.replace( /\s/g, '_' ) : 'skin' ) + '.osm;' );
-		array.push( bones.length + ';' );
-		array.push( '' );
-
-		for ( let i = 0, il = bones.length; i < il; i ++ ) {
-
-			const bone = bones[ i ];
-			const bone2 = bones2[ i ];
-
-			/*
-			 * use the bone matrix saved before solving IK.
-			 * see CCDIKSolver for the detail.
-			 */
-			if ( useOriginalBones === true &&
-				bone.userData.ik !== undefined &&
-				bone.userData.ik.originalMatrix !== undefined ) {
-
-				matrix.fromArray( bone.userData.ik.originalMatrix );
-
-			} else {
-
-				matrix.copy( bone.matrix );
-
-			}
-
-			position.setFromMatrixPosition( matrix );
-			quaternion.setFromRotationMatrix( matrix );
-
-			const pArray = position.sub( bone2.position ).toArray();
-			const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray();
-
-			// right to left
-			pArray[ 2 ] = - pArray[ 2 ];
-			qArray[ 0 ] = - qArray[ 0 ];
-			qArray[ 1 ] = - qArray[ 1 ];
-
-			array.push( 'Bone' + i + '{' + bone.name );
-			array.push( '  ' + toStringsFromArray( pArray ) + ';' );
-			array.push( '  ' + toStringsFromArray( qArray ) + ';' );
-			array.push( '}' );
-			array.push( '' );
-
-		}
-
-		array.push( '' );
-
-		const lines = array.join( '\n' );
-
-		return ( outputShiftJis === true ) ? unicodeToShiftjis( lines ) : lines;
-
-	}
-
-}
-
-// Unicode to Shift_JIS table
-let u2sTable;
-
-function unicodeToShiftjis( str ) {
-
-	if ( u2sTable === undefined ) {
-
-		const encoder = new MMDParser.CharsetEncoder();
-		const table = encoder.s2uTable;
-		u2sTable = {};
-
-		const keys = Object.keys( table );
-
-		for ( let i = 0, il = keys.length; i < il; i ++ ) {
-
-			let key = keys[ i ];
-
-			const value = table[ key ];
-			key = parseInt( key );
-
-			u2sTable[ value ] = key;
-
-		}
-
-	}
-
-	const array = [];
-
-	for ( let i = 0, il = str.length; i < il; i ++ ) {
-
-		const code = str.charCodeAt( i );
-
-		const value = u2sTable[ code ];
-
-		if ( value === undefined ) {
-
-			throw new Error( 'cannot convert charcode 0x' + code.toString( 16 ) );
-
-		} else if ( value > 0xff ) {
-
-			array.push( ( value >> 8 ) & 0xff );
-			array.push( value & 0xff );
-
-		} else {
-
-			array.push( value & 0xff );
-
-		}
-
-	}
-
-	return new Uint8Array( array );
-
-}
-
-function getBindBones( skin ) {
-
-	// any more efficient ways?
-	const poseSkin = skin.clone();
-	poseSkin.pose();
-	return poseSkin.skeleton.bones;
-
-}
-
-export { MMDExporter };

+ 0 - 11530
examples/jsm/libs/mmdparser.module.js

@@ -1,11530 +0,0 @@
-/**
- * @author Takahiro / https://github.com/takahirox
- *
- * Simple CharsetEncoder.
- */
-
-function CharsetEncoder() {
-}
-
-/*
- * Converts from Shift_JIS Uint8Array data to Unicode strings.
- */
-CharsetEncoder.prototype.s2u = function(uint8Array) {
-  var t = this.s2uTable;
-  var str = '';
-  var p = 0;
-
-  while(p < uint8Array.length) {
-    var key = uint8Array[p++];
-
-    if(! ((key >= 0x00 && key <= 0x7e) ||
-          (key >= 0xa1 && key <= 0xdf)) &&
-       p < uint8Array.length) {
-      key = (key << 8) | uint8Array[p++];
-    }
-
-    if(t[key] === undefined) {
-      console.error('unknown char code ' + key + '.');
-      return str;
-    }
-
-    str += String.fromCharCode(t[key]);
-  }
-
-  return str;
-};
-
-CharsetEncoder.prototype.s2uTable = {
-0:0,
-1:1,
-2:2,
-3:3,
-4:4,
-5:5,
-6:6,
-7:7,
-8:8,
-9:9,
-10:10,
-11:11,
-12:12,
-13:13,
-14:14,
-15:15,
-16:16,
-17:17,
-18:18,
-19:19,
-20:20,
-21:21,
-22:22,
-23:23,
-24:24,
-25:25,
-26:26,
-27:27,
-28:28,
-29:29,
-30:30,
-31:31,
-32:32,
-33:33,
-34:34,
-35:35,
-36:36,
-37:37,
-38:38,
-39:39,
-40:40,
-41:41,
-42:42,
-43:43,
-44:44,
-45:45,
-46:46,
-47:47,
-48:48,
-49:49,
-50:50,
-51:51,
-52:52,
-53:53,
-54:54,
-55:55,
-56:56,
-57:57,
-58:58,
-59:59,
-60:60,
-61:61,
-62:62,
-63:63,
-64:64,
-65:65,
-66:66,
-67:67,
-68:68,
-69:69,
-70:70,
-71:71,
-72:72,
-73:73,
-74:74,
-75:75,
-76:76,
-77:77,
-78:78,
-79:79,
-80:80,
-81:81,
-82:82,
-83:83,
-84:84,
-85:85,
-86:86,
-87:87,
-88:88,
-89:89,
-90:90,
-91:91,
-92:92,
-93:93,
-94:94,
-95:95,
-96:96,
-97:97,
-98:98,
-99:99,
-100:100,
-101:101,
-102:102,
-103:103,
-104:104,
-105:105,
-106:106,
-107:107,
-108:108,
-109:109,
-110:110,
-111:111,
-112:112,
-113:113,
-114:114,
-115:115,
-116:116,
-117:117,
-118:118,
-119:119,
-120:120,
-121:121,
-122:122,
-123:123,
-124:124,
-125:125,
-126:126,
-161:65377,
-162:65378,
-163:65379,
-164:65380,
-165:65381,
-166:65382,
-167:65383,
-168:65384,
-169:65385,
-170:65386,
-171:65387,
-172:65388,
-173:65389,
-174:65390,
-175:65391,
-176:65392,
-177:65393,
-178:65394,
-179:65395,
-180:65396,
-181:65397,
-182:65398,
-183:65399,
-184:65400,
-185:65401,
-186:65402,
-187:65403,
-188:65404,
-189:65405,
-190:65406,
-191:65407,
-192:65408,
-193:65409,
-194:65410,
-195:65411,
-196:65412,
-197:65413,
-198:65414,
-199:65415,
-200:65416,
-201:65417,
-202:65418,
-203:65419,
-204:65420,
-205:65421,
-206:65422,
-207:65423,
-208:65424,
-209:65425,
-210:65426,
-211:65427,
-212:65428,
-213:65429,
-214:65430,
-215:65431,
-216:65432,
-217:65433,
-218:65434,
-219:65435,
-220:65436,
-221:65437,
-222:65438,
-223:65439,
-33088:12288,
-33089:12289,
-33090:12290,
-33091:65292,
-33092:65294,
-33093:12539,
-33094:65306,
-33095:65307,
-33096:65311,
-33097:65281,
-33098:12443,
-33099:12444,
-33100:180,
-33101:65344,
-33102:168,
-33103:65342,
-33104:65507,
-33105:65343,
-33106:12541,
-33107:12542,
-33108:12445,
-33109:12446,
-33110:12291,
-33111:20189,
-33112:12293,
-33113:12294,
-33114:12295,
-33115:12540,
-33116:8213,
-33117:8208,
-33118:65295,
-33119:65340,
-33120:65374,
-33121:8741,
-33122:65372,
-33123:8230,
-33124:8229,
-33125:8216,
-33126:8217,
-33127:8220,
-33128:8221,
-33129:65288,
-33130:65289,
-33131:12308,
-33132:12309,
-33133:65339,
-33134:65341,
-33135:65371,
-33136:65373,
-33137:12296,
-33138:12297,
-33139:12298,
-33140:12299,
-33141:12300,
-33142:12301,
-33143:12302,
-33144:12303,
-33145:12304,
-33146:12305,
-33147:65291,
-33148:65293,
-33149:177,
-33150:215,
-33152:247,
-33153:65309,
-33154:8800,
-33155:65308,
-33156:65310,
-33157:8806,
-33158:8807,
-33159:8734,
-33160:8756,
-33161:9794,
-33162:9792,
-33163:176,
-33164:8242,
-33165:8243,
-33166:8451,
-33167:65509,
-33168:65284,
-33169:65504,
-33170:65505,
-33171:65285,
-33172:65283,
-33173:65286,
-33174:65290,
-33175:65312,
-33176:167,
-33177:9734,
-33178:9733,
-33179:9675,
-33180:9679,
-33181:9678,
-33182:9671,
-33183:9670,
-33184:9633,
-33185:9632,
-33186:9651,
-33187:9650,
-33188:9661,
-33189:9660,
-33190:8251,
-33191:12306,
-33192:8594,
-33193:8592,
-33194:8593,
-33195:8595,
-33196:12307,
-33208:8712,
-33209:8715,
-33210:8838,
-33211:8839,
-33212:8834,
-33213:8835,
-33214:8746,
-33215:8745,
-33224:8743,
-33225:8744,
-33226:65506,
-33227:8658,
-33228:8660,
-33229:8704,
-33230:8707,
-33242:8736,
-33243:8869,
-33244:8978,
-33245:8706,
-33246:8711,
-33247:8801,
-33248:8786,
-33249:8810,
-33250:8811,
-33251:8730,
-33252:8765,
-33253:8733,
-33254:8757,
-33255:8747,
-33256:8748,
-33264:8491,
-33265:8240,
-33266:9839,
-33267:9837,
-33268:9834,
-33269:8224,
-33270:8225,
-33271:182,
-33276:9711,
-33359:65296,
-33360:65297,
-33361:65298,
-33362:65299,
-33363:65300,
-33364:65301,
-33365:65302,
-33366:65303,
-33367:65304,
-33368:65305,
-33376:65313,
-33377:65314,
-33378:65315,
-33379:65316,
-33380:65317,
-33381:65318,
-33382:65319,
-33383:65320,
-33384:65321,
-33385:65322,
-33386:65323,
-33387:65324,
-33388:65325,
-33389:65326,
-33390:65327,
-33391:65328,
-33392:65329,
-33393:65330,
-33394:65331,
-33395:65332,
-33396:65333,
-33397:65334,
-33398:65335,
-33399:65336,
-33400:65337,
-33401:65338,
-33409:65345,
-33410:65346,
-33411:65347,
-33412:65348,
-33413:65349,
-33414:65350,
-33415:65351,
-33416:65352,
-33417:65353,
-33418:65354,
-33419:65355,
-33420:65356,
-33421:65357,
-33422:65358,
-33423:65359,
-33424:65360,
-33425:65361,
-33426:65362,
-33427:65363,
-33428:65364,
-33429:65365,
-33430:65366,
-33431:65367,
-33432:65368,
-33433:65369,
-33434:65370,
-33439:12353,
-33440:12354,
-33441:12355,
-33442:12356,
-33443:12357,
-33444:12358,
-33445:12359,
-33446:12360,
-33447:12361,
-33448:12362,
-33449:12363,
-33450:12364,
-33451:12365,
-33452:12366,
-33453:12367,
-33454:12368,
-33455:12369,
-33456:12370,
-33457:12371,
-33458:12372,
-33459:12373,
-33460:12374,
-33461:12375,
-33462:12376,
-33463:12377,
-33464:12378,
-33465:12379,
-33466:12380,
-33467:12381,
-33468:12382,
-33469:12383,
-33470:12384,
-33471:12385,
-33472:12386,
-33473:12387,
-33474:12388,
-33475:12389,
-33476:12390,
-33477:12391,
-33478:12392,
-33479:12393,
-33480:12394,
-33481:12395,
-33482:12396,
-33483:12397,
-33484:12398,
-33485:12399,
-33486:12400,
-33487:12401,
-33488:12402,
-33489:12403,
-33490:12404,
-33491:12405,
-33492:12406,
-33493:12407,
-33494:12408,
-33495:12409,
-33496:12410,
-33497:12411,
-33498:12412,
-33499:12413,
-33500:12414,
-33501:12415,
-33502:12416,
-33503:12417,
-33504:12418,
-33505:12419,
-33506:12420,
-33507:12421,
-33508:12422,
-33509:12423,
-33510:12424,
-33511:12425,
-33512:12426,
-33513:12427,
-33514:12428,
-33515:12429,
-33516:12430,
-33517:12431,
-33518:12432,
-33519:12433,
-33520:12434,
-33521:12435,
-33600:12449,
-33601:12450,
-33602:12451,
-33603:12452,
-33604:12453,
-33605:12454,
-33606:12455,
-33607:12456,
-33608:12457,
-33609:12458,
-33610:12459,
-33611:12460,
-33612:12461,
-33613:12462,
-33614:12463,
-33615:12464,
-33616:12465,
-33617:12466,
-33618:12467,
-33619:12468,
-33620:12469,
-33621:12470,
-33622:12471,
-33623:12472,
-33624:12473,
-33625:12474,
-33626:12475,
-33627:12476,
-33628:12477,
-33629:12478,
-33630:12479,
-33631:12480,
-33632:12481,
-33633:12482,
-33634:12483,
-33635:12484,
-33636:12485,
-33637:12486,
-33638:12487,
-33639:12488,
-33640:12489,
-33641:12490,
-33642:12491,
-33643:12492,
-33644:12493,
-33645:12494,
-33646:12495,
-33647:12496,
-33648:12497,
-33649:12498,
-33650:12499,
-33651:12500,
-33652:12501,
-33653:12502,
-33654:12503,
-33655:12504,
-33656:12505,
-33657:12506,
-33658:12507,
-33659:12508,
-33660:12509,
-33661:12510,
-33662:12511,
-33664:12512,
-33665:12513,
-33666:12514,
-33667:12515,
-33668:12516,
-33669:12517,
-33670:12518,
-33671:12519,
-33672:12520,
-33673:12521,
-33674:12522,
-33675:12523,
-33676:12524,
-33677:12525,
-33678:12526,
-33679:12527,
-33680:12528,
-33681:12529,
-33682:12530,
-33683:12531,
-33684:12532,
-33685:12533,
-33686:12534,
-33695:913,
-33696:914,
-33697:915,
-33698:916,
-33699:917,
-33700:918,
-33701:919,
-33702:920,
-33703:921,
-33704:922,
-33705:923,
-33706:924,
-33707:925,
-33708:926,
-33709:927,
-33710:928,
-33711:929,
-33712:931,
-33713:932,
-33714:933,
-33715:934,
-33716:935,
-33717:936,
-33718:937,
-33727:945,
-33728:946,
-33729:947,
-33730:948,
-33731:949,
-33732:950,
-33733:951,
-33734:952,
-33735:953,
-33736:954,
-33737:955,
-33738:956,
-33739:957,
-33740:958,
-33741:959,
-33742:960,
-33743:961,
-33744:963,
-33745:964,
-33746:965,
-33747:966,
-33748:967,
-33749:968,
-33750:969,
-33856:1040,
-33857:1041,
-33858:1042,
-33859:1043,
-33860:1044,
-33861:1045,
-33862:1025,
-33863:1046,
-33864:1047,
-33865:1048,
-33866:1049,
-33867:1050,
-33868:1051,
-33869:1052,
-33870:1053,
-33871:1054,
-33872:1055,
-33873:1056,
-33874:1057,
-33875:1058,
-33876:1059,
-33877:1060,
-33878:1061,
-33879:1062,
-33880:1063,
-33881:1064,
-33882:1065,
-33883:1066,
-33884:1067,
-33885:1068,
-33886:1069,
-33887:1070,
-33888:1071,
-33904:1072,
-33905:1073,
-33906:1074,
-33907:1075,
-33908:1076,
-33909:1077,
-33910:1105,
-33911:1078,
-33912:1079,
-33913:1080,
-33914:1081,
-33915:1082,
-33916:1083,
-33917:1084,
-33918:1085,
-33920:1086,
-33921:1087,
-33922:1088,
-33923:1089,
-33924:1090,
-33925:1091,
-33926:1092,
-33927:1093,
-33928:1094,
-33929:1095,
-33930:1096,
-33931:1097,
-33932:1098,
-33933:1099,
-33934:1100,
-33935:1101,
-33936:1102,
-33937:1103,
-33951:9472,
-33952:9474,
-33953:9484,
-33954:9488,
-33955:9496,
-33956:9492,
-33957:9500,
-33958:9516,
-33959:9508,
-33960:9524,
-33961:9532,
-33962:9473,
-33963:9475,
-33964:9487,
-33965:9491,
-33966:9499,
-33967:9495,
-33968:9507,
-33969:9523,
-33970:9515,
-33971:9531,
-33972:9547,
-33973:9504,
-33974:9519,
-33975:9512,
-33976:9527,
-33977:9535,
-33978:9501,
-33979:9520,
-33980:9509,
-33981:9528,
-33982:9538,
-34624:9312,
-34625:9313,
-34626:9314,
-34627:9315,
-34628:9316,
-34629:9317,
-34630:9318,
-34631:9319,
-34632:9320,
-34633:9321,
-34634:9322,
-34635:9323,
-34636:9324,
-34637:9325,
-34638:9326,
-34639:9327,
-34640:9328,
-34641:9329,
-34642:9330,
-34643:9331,
-34644:8544,
-34645:8545,
-34646:8546,
-34647:8547,
-34648:8548,
-34649:8549,
-34650:8550,
-34651:8551,
-34652:8552,
-34653:8553,
-34655:13129,
-34656:13076,
-34657:13090,
-34658:13133,
-34659:13080,
-34660:13095,
-34661:13059,
-34662:13110,
-34663:13137,
-34664:13143,
-34665:13069,
-34666:13094,
-34667:13091,
-34668:13099,
-34669:13130,
-34670:13115,
-34671:13212,
-34672:13213,
-34673:13214,
-34674:13198,
-34675:13199,
-34676:13252,
-34677:13217,
-34686:13179,
-34688:12317,
-34689:12319,
-34690:8470,
-34691:13261,
-34692:8481,
-34693:12964,
-34694:12965,
-34695:12966,
-34696:12967,
-34697:12968,
-34698:12849,
-34699:12850,
-34700:12857,
-34701:13182,
-34702:13181,
-34703:13180,
-34704:8786,
-34705:8801,
-34706:8747,
-34707:8750,
-34708:8721,
-34709:8730,
-34710:8869,
-34711:8736,
-34712:8735,
-34713:8895,
-34714:8757,
-34715:8745,
-34716:8746,
-34975:20124,
-34976:21782,
-34977:23043,
-34978:38463,
-34979:21696,
-34980:24859,
-34981:25384,
-34982:23030,
-34983:36898,
-34984:33909,
-34985:33564,
-34986:31312,
-34987:24746,
-34988:25569,
-34989:28197,
-34990:26093,
-34991:33894,
-34992:33446,
-34993:39925,
-34994:26771,
-34995:22311,
-34996:26017,
-34997:25201,
-34998:23451,
-34999:22992,
-35000:34427,
-35001:39156,
-35002:32098,
-35003:32190,
-35004:39822,
-35005:25110,
-35006:31903,
-35007:34999,
-35008:23433,
-35009:24245,
-35010:25353,
-35011:26263,
-35012:26696,
-35013:38343,
-35014:38797,
-35015:26447,
-35016:20197,
-35017:20234,
-35018:20301,
-35019:20381,
-35020:20553,
-35021:22258,
-35022:22839,
-35023:22996,
-35024:23041,
-35025:23561,
-35026:24799,
-35027:24847,
-35028:24944,
-35029:26131,
-35030:26885,
-35031:28858,
-35032:30031,
-35033:30064,
-35034:31227,
-35035:32173,
-35036:32239,
-35037:32963,
-35038:33806,
-35039:34915,
-35040:35586,
-35041:36949,
-35042:36986,
-35043:21307,
-35044:20117,
-35045:20133,
-35046:22495,
-35047:32946,
-35048:37057,
-35049:30959,
-35050:19968,
-35051:22769,
-35052:28322,
-35053:36920,
-35054:31282,
-35055:33576,
-35056:33419,
-35057:39983,
-35058:20801,
-35059:21360,
-35060:21693,
-35061:21729,
-35062:22240,
-35063:23035,
-35064:24341,
-35065:39154,
-35066:28139,
-35067:32996,
-35068:34093,
-35136:38498,
-35137:38512,
-35138:38560,
-35139:38907,
-35140:21515,
-35141:21491,
-35142:23431,
-35143:28879,
-35144:32701,
-35145:36802,
-35146:38632,
-35147:21359,
-35148:40284,
-35149:31418,
-35150:19985,
-35151:30867,
-35152:33276,
-35153:28198,
-35154:22040,
-35155:21764,
-35156:27421,
-35157:34074,
-35158:39995,
-35159:23013,
-35160:21417,
-35161:28006,
-35162:29916,
-35163:38287,
-35164:22082,
-35165:20113,
-35166:36939,
-35167:38642,
-35168:33615,
-35169:39180,
-35170:21473,
-35171:21942,
-35172:23344,
-35173:24433,
-35174:26144,
-35175:26355,
-35176:26628,
-35177:27704,
-35178:27891,
-35179:27945,
-35180:29787,
-35181:30408,
-35182:31310,
-35183:38964,
-35184:33521,
-35185:34907,
-35186:35424,
-35187:37613,
-35188:28082,
-35189:30123,
-35190:30410,
-35191:39365,
-35192:24742,
-35193:35585,
-35194:36234,
-35195:38322,
-35196:27022,
-35197:21421,
-35198:20870,
-35200:22290,
-35201:22576,
-35202:22852,
-35203:23476,
-35204:24310,
-35205:24616,
-35206:25513,
-35207:25588,
-35208:27839,
-35209:28436,
-35210:28814,
-35211:28948,
-35212:29017,
-35213:29141,
-35214:29503,
-35215:32257,
-35216:33398,
-35217:33489,
-35218:34199,
-35219:36960,
-35220:37467,
-35221:40219,
-35222:22633,
-35223:26044,
-35224:27738,
-35225:29989,
-35226:20985,
-35227:22830,
-35228:22885,
-35229:24448,
-35230:24540,
-35231:25276,
-35232:26106,
-35233:27178,
-35234:27431,
-35235:27572,
-35236:29579,
-35237:32705,
-35238:35158,
-35239:40236,
-35240:40206,
-35241:40644,
-35242:23713,
-35243:27798,
-35244:33659,
-35245:20740,
-35246:23627,
-35247:25014,
-35248:33222,
-35249:26742,
-35250:29281,
-35251:20057,
-35252:20474,
-35253:21368,
-35254:24681,
-35255:28201,
-35256:31311,
-35257:38899,
-35258:19979,
-35259:21270,
-35260:20206,
-35261:20309,
-35262:20285,
-35263:20385,
-35264:20339,
-35265:21152,
-35266:21487,
-35267:22025,
-35268:22799,
-35269:23233,
-35270:23478,
-35271:23521,
-35272:31185,
-35273:26247,
-35274:26524,
-35275:26550,
-35276:27468,
-35277:27827,
-35278:28779,
-35279:29634,
-35280:31117,
-35281:31166,
-35282:31292,
-35283:31623,
-35284:33457,
-35285:33499,
-35286:33540,
-35287:33655,
-35288:33775,
-35289:33747,
-35290:34662,
-35291:35506,
-35292:22057,
-35293:36008,
-35294:36838,
-35295:36942,
-35296:38686,
-35297:34442,
-35298:20420,
-35299:23784,
-35300:25105,
-35301:29273,
-35302:30011,
-35303:33253,
-35304:33469,
-35305:34558,
-35306:36032,
-35307:38597,
-35308:39187,
-35309:39381,
-35310:20171,
-35311:20250,
-35312:35299,
-35313:22238,
-35314:22602,
-35315:22730,
-35316:24315,
-35317:24555,
-35318:24618,
-35319:24724,
-35320:24674,
-35321:25040,
-35322:25106,
-35323:25296,
-35324:25913,
-35392:39745,
-35393:26214,
-35394:26800,
-35395:28023,
-35396:28784,
-35397:30028,
-35398:30342,
-35399:32117,
-35400:33445,
-35401:34809,
-35402:38283,
-35403:38542,
-35404:35997,
-35405:20977,
-35406:21182,
-35407:22806,
-35408:21683,
-35409:23475,
-35410:23830,
-35411:24936,
-35412:27010,
-35413:28079,
-35414:30861,
-35415:33995,
-35416:34903,
-35417:35442,
-35418:37799,
-35419:39608,
-35420:28012,
-35421:39336,
-35422:34521,
-35423:22435,
-35424:26623,
-35425:34510,
-35426:37390,
-35427:21123,
-35428:22151,
-35429:21508,
-35430:24275,
-35431:25313,
-35432:25785,
-35433:26684,
-35434:26680,
-35435:27579,
-35436:29554,
-35437:30906,
-35438:31339,
-35439:35226,
-35440:35282,
-35441:36203,
-35442:36611,
-35443:37101,
-35444:38307,
-35445:38548,
-35446:38761,
-35447:23398,
-35448:23731,
-35449:27005,
-35450:38989,
-35451:38990,
-35452:25499,
-35453:31520,
-35454:27179,
-35456:27263,
-35457:26806,
-35458:39949,
-35459:28511,
-35460:21106,
-35461:21917,
-35462:24688,
-35463:25324,
-35464:27963,
-35465:28167,
-35466:28369,
-35467:33883,
-35468:35088,
-35469:36676,
-35470:19988,
-35471:39993,
-35472:21494,
-35473:26907,
-35474:27194,
-35475:38788,
-35476:26666,
-35477:20828,
-35478:31427,
-35479:33970,
-35480:37340,
-35481:37772,
-35482:22107,
-35483:40232,
-35484:26658,
-35485:33541,
-35486:33841,
-35487:31909,
-35488:21000,
-35489:33477,
-35490:29926,
-35491:20094,
-35492:20355,
-35493:20896,
-35494:23506,
-35495:21002,
-35496:21208,
-35497:21223,
-35498:24059,
-35499:21914,
-35500:22570,
-35501:23014,
-35502:23436,
-35503:23448,
-35504:23515,
-35505:24178,
-35506:24185,
-35507:24739,
-35508:24863,
-35509:24931,
-35510:25022,
-35511:25563,
-35512:25954,
-35513:26577,
-35514:26707,
-35515:26874,
-35516:27454,
-35517:27475,
-35518:27735,
-35519:28450,
-35520:28567,
-35521:28485,
-35522:29872,
-35523:29976,
-35524:30435,
-35525:30475,
-35526:31487,
-35527:31649,
-35528:31777,
-35529:32233,
-35530:32566,
-35531:32752,
-35532:32925,
-35533:33382,
-35534:33694,
-35535:35251,
-35536:35532,
-35537:36011,
-35538:36996,
-35539:37969,
-35540:38291,
-35541:38289,
-35542:38306,
-35543:38501,
-35544:38867,
-35545:39208,
-35546:33304,
-35547:20024,
-35548:21547,
-35549:23736,
-35550:24012,
-35551:29609,
-35552:30284,
-35553:30524,
-35554:23721,
-35555:32747,
-35556:36107,
-35557:38593,
-35558:38929,
-35559:38996,
-35560:39000,
-35561:20225,
-35562:20238,
-35563:21361,
-35564:21916,
-35565:22120,
-35566:22522,
-35567:22855,
-35568:23305,
-35569:23492,
-35570:23696,
-35571:24076,
-35572:24190,
-35573:24524,
-35574:25582,
-35575:26426,
-35576:26071,
-35577:26082,
-35578:26399,
-35579:26827,
-35580:26820,
-35648:27231,
-35649:24112,
-35650:27589,
-35651:27671,
-35652:27773,
-35653:30079,
-35654:31048,
-35655:23395,
-35656:31232,
-35657:32000,
-35658:24509,
-35659:35215,
-35660:35352,
-35661:36020,
-35662:36215,
-35663:36556,
-35664:36637,
-35665:39138,
-35666:39438,
-35667:39740,
-35668:20096,
-35669:20605,
-35670:20736,
-35671:22931,
-35672:23452,
-35673:25135,
-35674:25216,
-35675:25836,
-35676:27450,
-35677:29344,
-35678:30097,
-35679:31047,
-35680:32681,
-35681:34811,
-35682:35516,
-35683:35696,
-35684:25516,
-35685:33738,
-35686:38816,
-35687:21513,
-35688:21507,
-35689:21931,
-35690:26708,
-35691:27224,
-35692:35440,
-35693:30759,
-35694:26485,
-35695:40653,
-35696:21364,
-35697:23458,
-35698:33050,
-35699:34384,
-35700:36870,
-35701:19992,
-35702:20037,
-35703:20167,
-35704:20241,
-35705:21450,
-35706:21560,
-35707:23470,
-35708:24339,
-35709:24613,
-35710:25937,
-35712:26429,
-35713:27714,
-35714:27762,
-35715:27875,
-35716:28792,
-35717:29699,
-35718:31350,
-35719:31406,
-35720:31496,
-35721:32026,
-35722:31998,
-35723:32102,
-35724:26087,
-35725:29275,
-35726:21435,
-35727:23621,
-35728:24040,
-35729:25298,
-35730:25312,
-35731:25369,
-35732:28192,
-35733:34394,
-35734:35377,
-35735:36317,
-35736:37624,
-35737:28417,
-35738:31142,
-35739:39770,
-35740:20136,
-35741:20139,
-35742:20140,
-35743:20379,
-35744:20384,
-35745:20689,
-35746:20807,
-35747:31478,
-35748:20849,
-35749:20982,
-35750:21332,
-35751:21281,
-35752:21375,
-35753:21483,
-35754:21932,
-35755:22659,
-35756:23777,
-35757:24375,
-35758:24394,
-35759:24623,
-35760:24656,
-35761:24685,
-35762:25375,
-35763:25945,
-35764:27211,
-35765:27841,
-35766:29378,
-35767:29421,
-35768:30703,
-35769:33016,
-35770:33029,
-35771:33288,
-35772:34126,
-35773:37111,
-35774:37857,
-35775:38911,
-35776:39255,
-35777:39514,
-35778:20208,
-35779:20957,
-35780:23597,
-35781:26241,
-35782:26989,
-35783:23616,
-35784:26354,
-35785:26997,
-35786:29577,
-35787:26704,
-35788:31873,
-35789:20677,
-35790:21220,
-35791:22343,
-35792:24062,
-35793:37670,
-35794:26020,
-35795:27427,
-35796:27453,
-35797:29748,
-35798:31105,
-35799:31165,
-35800:31563,
-35801:32202,
-35802:33465,
-35803:33740,
-35804:34943,
-35805:35167,
-35806:35641,
-35807:36817,
-35808:37329,
-35809:21535,
-35810:37504,
-35811:20061,
-35812:20534,
-35813:21477,
-35814:21306,
-35815:29399,
-35816:29590,
-35817:30697,
-35818:33510,
-35819:36527,
-35820:39366,
-35821:39368,
-35822:39378,
-35823:20855,
-35824:24858,
-35825:34398,
-35826:21936,
-35827:31354,
-35828:20598,
-35829:23507,
-35830:36935,
-35831:38533,
-35832:20018,
-35833:27355,
-35834:37351,
-35835:23633,
-35836:23624,
-35904:25496,
-35905:31391,
-35906:27795,
-35907:38772,
-35908:36705,
-35909:31402,
-35910:29066,
-35911:38536,
-35912:31874,
-35913:26647,
-35914:32368,
-35915:26705,
-35916:37740,
-35917:21234,
-35918:21531,
-35919:34219,
-35920:35347,
-35921:32676,
-35922:36557,
-35923:37089,
-35924:21350,
-35925:34952,
-35926:31041,
-35927:20418,
-35928:20670,
-35929:21009,
-35930:20804,
-35931:21843,
-35932:22317,
-35933:29674,
-35934:22411,
-35935:22865,
-35936:24418,
-35937:24452,
-35938:24693,
-35939:24950,
-35940:24935,
-35941:25001,
-35942:25522,
-35943:25658,
-35944:25964,
-35945:26223,
-35946:26690,
-35947:28179,
-35948:30054,
-35949:31293,
-35950:31995,
-35951:32076,
-35952:32153,
-35953:32331,
-35954:32619,
-35955:33550,
-35956:33610,
-35957:34509,
-35958:35336,
-35959:35427,
-35960:35686,
-35961:36605,
-35962:38938,
-35963:40335,
-35964:33464,
-35965:36814,
-35966:39912,
-35968:21127,
-35969:25119,
-35970:25731,
-35971:28608,
-35972:38553,
-35973:26689,
-35974:20625,
-35975:27424,
-35976:27770,
-35977:28500,
-35978:31348,
-35979:32080,
-35980:34880,
-35981:35363,
-35982:26376,
-35983:20214,
-35984:20537,
-35985:20518,
-35986:20581,
-35987:20860,
-35988:21048,
-35989:21091,
-35990:21927,
-35991:22287,
-35992:22533,
-35993:23244,
-35994:24314,
-35995:25010,
-35996:25080,
-35997:25331,
-35998:25458,
-35999:26908,
-36000:27177,
-36001:29309,
-36002:29356,
-36003:29486,
-36004:30740,
-36005:30831,
-36006:32121,
-36007:30476,
-36008:32937,
-36009:35211,
-36010:35609,
-36011:36066,
-36012:36562,
-36013:36963,
-36014:37749,
-36015:38522,
-36016:38997,
-36017:39443,
-36018:40568,
-36019:20803,
-36020:21407,
-36021:21427,
-36022:24187,
-36023:24358,
-36024:28187,
-36025:28304,
-36026:29572,
-36027:29694,
-36028:32067,
-36029:33335,
-36030:35328,
-36031:35578,
-36032:38480,
-36033:20046,
-36034:20491,
-36035:21476,
-36036:21628,
-36037:22266,
-36038:22993,
-36039:23396,
-36040:24049,
-36041:24235,
-36042:24359,
-36043:25144,
-36044:25925,
-36045:26543,
-36046:28246,
-36047:29392,
-36048:31946,
-36049:34996,
-36050:32929,
-36051:32993,
-36052:33776,
-36053:34382,
-36054:35463,
-36055:36328,
-36056:37431,
-36057:38599,
-36058:39015,
-36059:40723,
-36060:20116,
-36061:20114,
-36062:20237,
-36063:21320,
-36064:21577,
-36065:21566,
-36066:23087,
-36067:24460,
-36068:24481,
-36069:24735,
-36070:26791,
-36071:27278,
-36072:29786,
-36073:30849,
-36074:35486,
-36075:35492,
-36076:35703,
-36077:37264,
-36078:20062,
-36079:39881,
-36080:20132,
-36081:20348,
-36082:20399,
-36083:20505,
-36084:20502,
-36085:20809,
-36086:20844,
-36087:21151,
-36088:21177,
-36089:21246,
-36090:21402,
-36091:21475,
-36092:21521,
-36160:21518,
-36161:21897,
-36162:22353,
-36163:22434,
-36164:22909,
-36165:23380,
-36166:23389,
-36167:23439,
-36168:24037,
-36169:24039,
-36170:24055,
-36171:24184,
-36172:24195,
-36173:24218,
-36174:24247,
-36175:24344,
-36176:24658,
-36177:24908,
-36178:25239,
-36179:25304,
-36180:25511,
-36181:25915,
-36182:26114,
-36183:26179,
-36184:26356,
-36185:26477,
-36186:26657,
-36187:26775,
-36188:27083,
-36189:27743,
-36190:27946,
-36191:28009,
-36192:28207,
-36193:28317,
-36194:30002,
-36195:30343,
-36196:30828,
-36197:31295,
-36198:31968,
-36199:32005,
-36200:32024,
-36201:32094,
-36202:32177,
-36203:32789,
-36204:32771,
-36205:32943,
-36206:32945,
-36207:33108,
-36208:33167,
-36209:33322,
-36210:33618,
-36211:34892,
-36212:34913,
-36213:35611,
-36214:36002,
-36215:36092,
-36216:37066,
-36217:37237,
-36218:37489,
-36219:30783,
-36220:37628,
-36221:38308,
-36222:38477,
-36224:38917,
-36225:39321,
-36226:39640,
-36227:40251,
-36228:21083,
-36229:21163,
-36230:21495,
-36231:21512,
-36232:22741,
-36233:25335,
-36234:28640,
-36235:35946,
-36236:36703,
-36237:40633,
-36238:20811,
-36239:21051,
-36240:21578,
-36241:22269,
-36242:31296,
-36243:37239,
-36244:40288,
-36245:40658,
-36246:29508,
-36247:28425,
-36248:33136,
-36249:29969,
-36250:24573,
-36251:24794,
-36252:39592,
-36253:29403,
-36254:36796,
-36255:27492,
-36256:38915,
-36257:20170,
-36258:22256,
-36259:22372,
-36260:22718,
-36261:23130,
-36262:24680,
-36263:25031,
-36264:26127,
-36265:26118,
-36266:26681,
-36267:26801,
-36268:28151,
-36269:30165,
-36270:32058,
-36271:33390,
-36272:39746,
-36273:20123,
-36274:20304,
-36275:21449,
-36276:21766,
-36277:23919,
-36278:24038,
-36279:24046,
-36280:26619,
-36281:27801,
-36282:29811,
-36283:30722,
-36284:35408,
-36285:37782,
-36286:35039,
-36287:22352,
-36288:24231,
-36289:25387,
-36290:20661,
-36291:20652,
-36292:20877,
-36293:26368,
-36294:21705,
-36295:22622,
-36296:22971,
-36297:23472,
-36298:24425,
-36299:25165,
-36300:25505,
-36301:26685,
-36302:27507,
-36303:28168,
-36304:28797,
-36305:37319,
-36306:29312,
-36307:30741,
-36308:30758,
-36309:31085,
-36310:25998,
-36311:32048,
-36312:33756,
-36313:35009,
-36314:36617,
-36315:38555,
-36316:21092,
-36317:22312,
-36318:26448,
-36319:32618,
-36320:36001,
-36321:20916,
-36322:22338,
-36323:38442,
-36324:22586,
-36325:27018,
-36326:32948,
-36327:21682,
-36328:23822,
-36329:22524,
-36330:30869,
-36331:40442,
-36332:20316,
-36333:21066,
-36334:21643,
-36335:25662,
-36336:26152,
-36337:26388,
-36338:26613,
-36339:31364,
-36340:31574,
-36341:32034,
-36342:37679,
-36343:26716,
-36344:39853,
-36345:31545,
-36346:21273,
-36347:20874,
-36348:21047,
-36416:23519,
-36417:25334,
-36418:25774,
-36419:25830,
-36420:26413,
-36421:27578,
-36422:34217,
-36423:38609,
-36424:30352,
-36425:39894,
-36426:25420,
-36427:37638,
-36428:39851,
-36429:30399,
-36430:26194,
-36431:19977,
-36432:20632,
-36433:21442,
-36434:23665,
-36435:24808,
-36436:25746,
-36437:25955,
-36438:26719,
-36439:29158,
-36440:29642,
-36441:29987,
-36442:31639,
-36443:32386,
-36444:34453,
-36445:35715,
-36446:36059,
-36447:37240,
-36448:39184,
-36449:26028,
-36450:26283,
-36451:27531,
-36452:20181,
-36453:20180,
-36454:20282,
-36455:20351,
-36456:21050,
-36457:21496,
-36458:21490,
-36459:21987,
-36460:22235,
-36461:22763,
-36462:22987,
-36463:22985,
-36464:23039,
-36465:23376,
-36466:23629,
-36467:24066,
-36468:24107,
-36469:24535,
-36470:24605,
-36471:25351,
-36472:25903,
-36473:23388,
-36474:26031,
-36475:26045,
-36476:26088,
-36477:26525,
-36478:27490,
-36480:27515,
-36481:27663,
-36482:29509,
-36483:31049,
-36484:31169,
-36485:31992,
-36486:32025,
-36487:32043,
-36488:32930,
-36489:33026,
-36490:33267,
-36491:35222,
-36492:35422,
-36493:35433,
-36494:35430,
-36495:35468,
-36496:35566,
-36497:36039,
-36498:36060,
-36499:38604,
-36500:39164,
-36501:27503,
-36502:20107,
-36503:20284,
-36504:20365,
-36505:20816,
-36506:23383,
-36507:23546,
-36508:24904,
-36509:25345,
-36510:26178,
-36511:27425,
-36512:28363,
-36513:27835,
-36514:29246,
-36515:29885,
-36516:30164,
-36517:30913,
-36518:31034,
-36519:32780,
-36520:32819,
-36521:33258,
-36522:33940,
-36523:36766,
-36524:27728,
-36525:40575,
-36526:24335,
-36527:35672,
-36528:40235,
-36529:31482,
-36530:36600,
-36531:23437,
-36532:38635,
-36533:19971,
-36534:21489,
-36535:22519,
-36536:22833,
-36537:23241,
-36538:23460,
-36539:24713,
-36540:28287,
-36541:28422,
-36542:30142,
-36543:36074,
-36544:23455,
-36545:34048,
-36546:31712,
-36547:20594,
-36548:26612,
-36549:33437,
-36550:23649,
-36551:34122,
-36552:32286,
-36553:33294,
-36554:20889,
-36555:23556,
-36556:25448,
-36557:36198,
-36558:26012,
-36559:29038,
-36560:31038,
-36561:32023,
-36562:32773,
-36563:35613,
-36564:36554,
-36565:36974,
-36566:34503,
-36567:37034,
-36568:20511,
-36569:21242,
-36570:23610,
-36571:26451,
-36572:28796,
-36573:29237,
-36574:37196,
-36575:37320,
-36576:37675,
-36577:33509,
-36578:23490,
-36579:24369,
-36580:24825,
-36581:20027,
-36582:21462,
-36583:23432,
-36584:25163,
-36585:26417,
-36586:27530,
-36587:29417,
-36588:29664,
-36589:31278,
-36590:33131,
-36591:36259,
-36592:37202,
-36593:39318,
-36594:20754,
-36595:21463,
-36596:21610,
-36597:23551,
-36598:25480,
-36599:27193,
-36600:32172,
-36601:38656,
-36602:22234,
-36603:21454,
-36604:21608,
-36672:23447,
-36673:23601,
-36674:24030,
-36675:20462,
-36676:24833,
-36677:25342,
-36678:27954,
-36679:31168,
-36680:31179,
-36681:32066,
-36682:32333,
-36683:32722,
-36684:33261,
-36685:33311,
-36686:33936,
-36687:34886,
-36688:35186,
-36689:35728,
-36690:36468,
-36691:36655,
-36692:36913,
-36693:37195,
-36694:37228,
-36695:38598,
-36696:37276,
-36697:20160,
-36698:20303,
-36699:20805,
-36700:21313,
-36701:24467,
-36702:25102,
-36703:26580,
-36704:27713,
-36705:28171,
-36706:29539,
-36707:32294,
-36708:37325,
-36709:37507,
-36710:21460,
-36711:22809,
-36712:23487,
-36713:28113,
-36714:31069,
-36715:32302,
-36716:31899,
-36717:22654,
-36718:29087,
-36719:20986,
-36720:34899,
-36721:36848,
-36722:20426,
-36723:23803,
-36724:26149,
-36725:30636,
-36726:31459,
-36727:33308,
-36728:39423,
-36729:20934,
-36730:24490,
-36731:26092,
-36732:26991,
-36733:27529,
-36734:28147,
-36736:28310,
-36737:28516,
-36738:30462,
-36739:32020,
-36740:24033,
-36741:36981,
-36742:37255,
-36743:38918,
-36744:20966,
-36745:21021,
-36746:25152,
-36747:26257,
-36748:26329,
-36749:28186,
-36750:24246,
-36751:32210,
-36752:32626,
-36753:26360,
-36754:34223,
-36755:34295,
-36756:35576,
-36757:21161,
-36758:21465,
-36759:22899,
-36760:24207,
-36761:24464,
-36762:24661,
-36763:37604,
-36764:38500,
-36765:20663,
-36766:20767,
-36767:21213,
-36768:21280,
-36769:21319,
-36770:21484,
-36771:21736,
-36772:21830,
-36773:21809,
-36774:22039,
-36775:22888,
-36776:22974,
-36777:23100,
-36778:23477,
-36779:23558,
-36780:23567,
-36781:23569,
-36782:23578,
-36783:24196,
-36784:24202,
-36785:24288,
-36786:24432,
-36787:25215,
-36788:25220,
-36789:25307,
-36790:25484,
-36791:25463,
-36792:26119,
-36793:26124,
-36794:26157,
-36795:26230,
-36796:26494,
-36797:26786,
-36798:27167,
-36799:27189,
-36800:27836,
-36801:28040,
-36802:28169,
-36803:28248,
-36804:28988,
-36805:28966,
-36806:29031,
-36807:30151,
-36808:30465,
-36809:30813,
-36810:30977,
-36811:31077,
-36812:31216,
-36813:31456,
-36814:31505,
-36815:31911,
-36816:32057,
-36817:32918,
-36818:33750,
-36819:33931,
-36820:34121,
-36821:34909,
-36822:35059,
-36823:35359,
-36824:35388,
-36825:35412,
-36826:35443,
-36827:35937,
-36828:36062,
-36829:37284,
-36830:37478,
-36831:37758,
-36832:37912,
-36833:38556,
-36834:38808,
-36835:19978,
-36836:19976,
-36837:19998,
-36838:20055,
-36839:20887,
-36840:21104,
-36841:22478,
-36842:22580,
-36843:22732,
-36844:23330,
-36845:24120,
-36846:24773,
-36847:25854,
-36848:26465,
-36849:26454,
-36850:27972,
-36851:29366,
-36852:30067,
-36853:31331,
-36854:33976,
-36855:35698,
-36856:37304,
-36857:37664,
-36858:22065,
-36859:22516,
-36860:39166,
-36928:25325,
-36929:26893,
-36930:27542,
-36931:29165,
-36932:32340,
-36933:32887,
-36934:33394,
-36935:35302,
-36936:39135,
-36937:34645,
-36938:36785,
-36939:23611,
-36940:20280,
-36941:20449,
-36942:20405,
-36943:21767,
-36944:23072,
-36945:23517,
-36946:23529,
-36947:24515,
-36948:24910,
-36949:25391,
-36950:26032,
-36951:26187,
-36952:26862,
-36953:27035,
-36954:28024,
-36955:28145,
-36956:30003,
-36957:30137,
-36958:30495,
-36959:31070,
-36960:31206,
-36961:32051,
-36962:33251,
-36963:33455,
-36964:34218,
-36965:35242,
-36966:35386,
-36967:36523,
-36968:36763,
-36969:36914,
-36970:37341,
-36971:38663,
-36972:20154,
-36973:20161,
-36974:20995,
-36975:22645,
-36976:22764,
-36977:23563,
-36978:29978,
-36979:23613,
-36980:33102,
-36981:35338,
-36982:36805,
-36983:38499,
-36984:38765,
-36985:31525,
-36986:35535,
-36987:38920,
-36988:37218,
-36989:22259,
-36990:21416,
-36992:36887,
-36993:21561,
-36994:22402,
-36995:24101,
-36996:25512,
-36997:27700,
-36998:28810,
-36999:30561,
-37000:31883,
-37001:32736,
-37002:34928,
-37003:36930,
-37004:37204,
-37005:37648,
-37006:37656,
-37007:38543,
-37008:29790,
-37009:39620,
-37010:23815,
-37011:23913,
-37012:25968,
-37013:26530,
-37014:36264,
-37015:38619,
-37016:25454,
-37017:26441,
-37018:26905,
-37019:33733,
-37020:38935,
-37021:38592,
-37022:35070,
-37023:28548,
-37024:25722,
-37025:23544,
-37026:19990,
-37027:28716,
-37028:30045,
-37029:26159,
-37030:20932,
-37031:21046,
-37032:21218,
-37033:22995,
-37034:24449,
-37035:24615,
-37036:25104,
-37037:25919,
-37038:25972,
-37039:26143,
-37040:26228,
-37041:26866,
-37042:26646,
-37043:27491,
-37044:28165,
-37045:29298,
-37046:29983,
-37047:30427,
-37048:31934,
-37049:32854,
-37050:22768,
-37051:35069,
-37052:35199,
-37053:35488,
-37054:35475,
-37055:35531,
-37056:36893,
-37057:37266,
-37058:38738,
-37059:38745,
-37060:25993,
-37061:31246,
-37062:33030,
-37063:38587,
-37064:24109,
-37065:24796,
-37066:25114,
-37067:26021,
-37068:26132,
-37069:26512,
-37070:30707,
-37071:31309,
-37072:31821,
-37073:32318,
-37074:33034,
-37075:36012,
-37076:36196,
-37077:36321,
-37078:36447,
-37079:30889,
-37080:20999,
-37081:25305,
-37082:25509,
-37083:25666,
-37084:25240,
-37085:35373,
-37086:31363,
-37087:31680,
-37088:35500,
-37089:38634,
-37090:32118,
-37091:33292,
-37092:34633,
-37093:20185,
-37094:20808,
-37095:21315,
-37096:21344,
-37097:23459,
-37098:23554,
-37099:23574,
-37100:24029,
-37101:25126,
-37102:25159,
-37103:25776,
-37104:26643,
-37105:26676,
-37106:27849,
-37107:27973,
-37108:27927,
-37109:26579,
-37110:28508,
-37111:29006,
-37112:29053,
-37113:26059,
-37114:31359,
-37115:31661,
-37116:32218,
-37184:32330,
-37185:32680,
-37186:33146,
-37187:33307,
-37188:33337,
-37189:34214,
-37190:35438,
-37191:36046,
-37192:36341,
-37193:36984,
-37194:36983,
-37195:37549,
-37196:37521,
-37197:38275,
-37198:39854,
-37199:21069,
-37200:21892,
-37201:28472,
-37202:28982,
-37203:20840,
-37204:31109,
-37205:32341,
-37206:33203,
-37207:31950,
-37208:22092,
-37209:22609,
-37210:23720,
-37211:25514,
-37212:26366,
-37213:26365,
-37214:26970,
-37215:29401,
-37216:30095,
-37217:30094,
-37218:30990,
-37219:31062,
-37220:31199,
-37221:31895,
-37222:32032,
-37223:32068,
-37224:34311,
-37225:35380,
-37226:38459,
-37227:36961,
-37228:40736,
-37229:20711,
-37230:21109,
-37231:21452,
-37232:21474,
-37233:20489,
-37234:21930,
-37235:22766,
-37236:22863,
-37237:29245,
-37238:23435,
-37239:23652,
-37240:21277,
-37241:24803,
-37242:24819,
-37243:25436,
-37244:25475,
-37245:25407,
-37246:25531,
-37248:25805,
-37249:26089,
-37250:26361,
-37251:24035,
-37252:27085,
-37253:27133,
-37254:28437,
-37255:29157,
-37256:20105,
-37257:30185,
-37258:30456,
-37259:31379,
-37260:31967,
-37261:32207,
-37262:32156,
-37263:32865,
-37264:33609,
-37265:33624,
-37266:33900,
-37267:33980,
-37268:34299,
-37269:35013,
-37270:36208,
-37271:36865,
-37272:36973,
-37273:37783,
-37274:38684,
-37275:39442,
-37276:20687,
-37277:22679,
-37278:24974,
-37279:33235,
-37280:34101,
-37281:36104,
-37282:36896,
-37283:20419,
-37284:20596,
-37285:21063,
-37286:21363,
-37287:24687,
-37288:25417,
-37289:26463,
-37290:28204,
-37291:36275,
-37292:36895,
-37293:20439,
-37294:23646,
-37295:36042,
-37296:26063,
-37297:32154,
-37298:21330,
-37299:34966,
-37300:20854,
-37301:25539,
-37302:23384,
-37303:23403,
-37304:23562,
-37305:25613,
-37306:26449,
-37307:36956,
-37308:20182,
-37309:22810,
-37310:22826,
-37311:27760,
-37312:35409,
-37313:21822,
-37314:22549,
-37315:22949,
-37316:24816,
-37317:25171,
-37318:26561,
-37319:33333,
-37320:26965,
-37321:38464,
-37322:39364,
-37323:39464,
-37324:20307,
-37325:22534,
-37326:23550,
-37327:32784,
-37328:23729,
-37329:24111,
-37330:24453,
-37331:24608,
-37332:24907,
-37333:25140,
-37334:26367,
-37335:27888,
-37336:28382,
-37337:32974,
-37338:33151,
-37339:33492,
-37340:34955,
-37341:36024,
-37342:36864,
-37343:36910,
-37344:38538,
-37345:40667,
-37346:39899,
-37347:20195,
-37348:21488,
-37349:22823,
-37350:31532,
-37351:37261,
-37352:38988,
-37353:40441,
-37354:28381,
-37355:28711,
-37356:21331,
-37357:21828,
-37358:23429,
-37359:25176,
-37360:25246,
-37361:25299,
-37362:27810,
-37363:28655,
-37364:29730,
-37365:35351,
-37366:37944,
-37367:28609,
-37368:35582,
-37369:33592,
-37370:20967,
-37371:34552,
-37372:21482,
-37440:21481,
-37441:20294,
-37442:36948,
-37443:36784,
-37444:22890,
-37445:33073,
-37446:24061,
-37447:31466,
-37448:36799,
-37449:26842,
-37450:35895,
-37451:29432,
-37452:40008,
-37453:27197,
-37454:35504,
-37455:20025,
-37456:21336,
-37457:22022,
-37458:22374,
-37459:25285,
-37460:25506,
-37461:26086,
-37462:27470,
-37463:28129,
-37464:28251,
-37465:28845,
-37466:30701,
-37467:31471,
-37468:31658,
-37469:32187,
-37470:32829,
-37471:32966,
-37472:34507,
-37473:35477,
-37474:37723,
-37475:22243,
-37476:22727,
-37477:24382,
-37478:26029,
-37479:26262,
-37480:27264,
-37481:27573,
-37482:30007,
-37483:35527,
-37484:20516,
-37485:30693,
-37486:22320,
-37487:24347,
-37488:24677,
-37489:26234,
-37490:27744,
-37491:30196,
-37492:31258,
-37493:32622,
-37494:33268,
-37495:34584,
-37496:36933,
-37497:39347,
-37498:31689,
-37499:30044,
-37500:31481,
-37501:31569,
-37502:33988,
-37504:36880,
-37505:31209,
-37506:31378,
-37507:33590,
-37508:23265,
-37509:30528,
-37510:20013,
-37511:20210,
-37512:23449,
-37513:24544,
-37514:25277,
-37515:26172,
-37516:26609,
-37517:27880,
-37518:34411,
-37519:34935,
-37520:35387,
-37521:37198,
-37522:37619,
-37523:39376,
-37524:27159,
-37525:28710,
-37526:29482,
-37527:33511,
-37528:33879,
-37529:36015,
-37530:19969,
-37531:20806,
-37532:20939,
-37533:21899,
-37534:23541,
-37535:24086,
-37536:24115,
-37537:24193,
-37538:24340,
-37539:24373,
-37540:24427,
-37541:24500,
-37542:25074,
-37543:25361,
-37544:26274,
-37545:26397,
-37546:28526,
-37547:29266,
-37548:30010,
-37549:30522,
-37550:32884,
-37551:33081,
-37552:33144,
-37553:34678,
-37554:35519,
-37555:35548,
-37556:36229,
-37557:36339,
-37558:37530,
-37559:38263,
-37560:38914,
-37561:40165,
-37562:21189,
-37563:25431,
-37564:30452,
-37565:26389,
-37566:27784,
-37567:29645,
-37568:36035,
-37569:37806,
-37570:38515,
-37571:27941,
-37572:22684,
-37573:26894,
-37574:27084,
-37575:36861,
-37576:37786,
-37577:30171,
-37578:36890,
-37579:22618,
-37580:26626,
-37581:25524,
-37582:27131,
-37583:20291,
-37584:28460,
-37585:26584,
-37586:36795,
-37587:34086,
-37588:32180,
-37589:37716,
-37590:26943,
-37591:28528,
-37592:22378,
-37593:22775,
-37594:23340,
-37595:32044,
-37596:29226,
-37597:21514,
-37598:37347,
-37599:40372,
-37600:20141,
-37601:20302,
-37602:20572,
-37603:20597,
-37604:21059,
-37605:35998,
-37606:21576,
-37607:22564,
-37608:23450,
-37609:24093,
-37610:24213,
-37611:24237,
-37612:24311,
-37613:24351,
-37614:24716,
-37615:25269,
-37616:25402,
-37617:25552,
-37618:26799,
-37619:27712,
-37620:30855,
-37621:31118,
-37622:31243,
-37623:32224,
-37624:33351,
-37625:35330,
-37626:35558,
-37627:36420,
-37628:36883,
-37696:37048,
-37697:37165,
-37698:37336,
-37699:40718,
-37700:27877,
-37701:25688,
-37702:25826,
-37703:25973,
-37704:28404,
-37705:30340,
-37706:31515,
-37707:36969,
-37708:37841,
-37709:28346,
-37710:21746,
-37711:24505,
-37712:25764,
-37713:36685,
-37714:36845,
-37715:37444,
-37716:20856,
-37717:22635,
-37718:22825,
-37719:23637,
-37720:24215,
-37721:28155,
-37722:32399,
-37723:29980,
-37724:36028,
-37725:36578,
-37726:39003,
-37727:28857,
-37728:20253,
-37729:27583,
-37730:28593,
-37731:30000,
-37732:38651,
-37733:20814,
-37734:21520,
-37735:22581,
-37736:22615,
-37737:22956,
-37738:23648,
-37739:24466,
-37740:26007,
-37741:26460,
-37742:28193,
-37743:30331,
-37744:33759,
-37745:36077,
-37746:36884,
-37747:37117,
-37748:37709,
-37749:30757,
-37750:30778,
-37751:21162,
-37752:24230,
-37753:22303,
-37754:22900,
-37755:24594,
-37756:20498,
-37757:20826,
-37758:20908,
-37760:20941,
-37761:20992,
-37762:21776,
-37763:22612,
-37764:22616,
-37765:22871,
-37766:23445,
-37767:23798,
-37768:23947,
-37769:24764,
-37770:25237,
-37771:25645,
-37772:26481,
-37773:26691,
-37774:26812,
-37775:26847,
-37776:30423,
-37777:28120,
-37778:28271,
-37779:28059,
-37780:28783,
-37781:29128,
-37782:24403,
-37783:30168,
-37784:31095,
-37785:31561,
-37786:31572,
-37787:31570,
-37788:31958,
-37789:32113,
-37790:21040,
-37791:33891,
-37792:34153,
-37793:34276,
-37794:35342,
-37795:35588,
-37796:35910,
-37797:36367,
-37798:36867,
-37799:36879,
-37800:37913,
-37801:38518,
-37802:38957,
-37803:39472,
-37804:38360,
-37805:20685,
-37806:21205,
-37807:21516,
-37808:22530,
-37809:23566,
-37810:24999,
-37811:25758,
-37812:27934,
-37813:30643,
-37814:31461,
-37815:33012,
-37816:33796,
-37817:36947,
-37818:37509,
-37819:23776,
-37820:40199,
-37821:21311,
-37822:24471,
-37823:24499,
-37824:28060,
-37825:29305,
-37826:30563,
-37827:31167,
-37828:31716,
-37829:27602,
-37830:29420,
-37831:35501,
-37832:26627,
-37833:27233,
-37834:20984,
-37835:31361,
-37836:26932,
-37837:23626,
-37838:40182,
-37839:33515,
-37840:23493,
-37841:37193,
-37842:28702,
-37843:22136,
-37844:23663,
-37845:24775,
-37846:25958,
-37847:27788,
-37848:35930,
-37849:36929,
-37850:38931,
-37851:21585,
-37852:26311,
-37853:37389,
-37854:22856,
-37855:37027,
-37856:20869,
-37857:20045,
-37858:20970,
-37859:34201,
-37860:35598,
-37861:28760,
-37862:25466,
-37863:37707,
-37864:26978,
-37865:39348,
-37866:32260,
-37867:30071,
-37868:21335,
-37869:26976,
-37870:36575,
-37871:38627,
-37872:27741,
-37873:20108,
-37874:23612,
-37875:24336,
-37876:36841,
-37877:21250,
-37878:36049,
-37879:32905,
-37880:34425,
-37881:24319,
-37882:26085,
-37883:20083,
-37884:20837,
-37952:22914,
-37953:23615,
-37954:38894,
-37955:20219,
-37956:22922,
-37957:24525,
-37958:35469,
-37959:28641,
-37960:31152,
-37961:31074,
-37962:23527,
-37963:33905,
-37964:29483,
-37965:29105,
-37966:24180,
-37967:24565,
-37968:25467,
-37969:25754,
-37970:29123,
-37971:31896,
-37972:20035,
-37973:24316,
-37974:20043,
-37975:22492,
-37976:22178,
-37977:24745,
-37978:28611,
-37979:32013,
-37980:33021,
-37981:33075,
-37982:33215,
-37983:36786,
-37984:35223,
-37985:34468,
-37986:24052,
-37987:25226,
-37988:25773,
-37989:35207,
-37990:26487,
-37991:27874,
-37992:27966,
-37993:29750,
-37994:30772,
-37995:23110,
-37996:32629,
-37997:33453,
-37998:39340,
-37999:20467,
-38000:24259,
-38001:25309,
-38002:25490,
-38003:25943,
-38004:26479,
-38005:30403,
-38006:29260,
-38007:32972,
-38008:32954,
-38009:36649,
-38010:37197,
-38011:20493,
-38012:22521,
-38013:23186,
-38014:26757,
-38016:26995,
-38017:29028,
-38018:29437,
-38019:36023,
-38020:22770,
-38021:36064,
-38022:38506,
-38023:36889,
-38024:34687,
-38025:31204,
-38026:30695,
-38027:33833,
-38028:20271,
-38029:21093,
-38030:21338,
-38031:25293,
-38032:26575,
-38033:27850,
-38034:30333,
-38035:31636,
-38036:31893,
-38037:33334,
-38038:34180,
-38039:36843,
-38040:26333,
-38041:28448,
-38042:29190,
-38043:32283,
-38044:33707,
-38045:39361,
-38046:40614,
-38047:20989,
-38048:31665,
-38049:30834,
-38050:31672,
-38051:32903,
-38052:31560,
-38053:27368,
-38054:24161,
-38055:32908,
-38056:30033,
-38057:30048,
-38058:20843,
-38059:37474,
-38060:28300,
-38061:30330,
-38062:37271,
-38063:39658,
-38064:20240,
-38065:32624,
-38066:25244,
-38067:31567,
-38068:38309,
-38069:40169,
-38070:22138,
-38071:22617,
-38072:34532,
-38073:38588,
-38074:20276,
-38075:21028,
-38076:21322,
-38077:21453,
-38078:21467,
-38079:24070,
-38080:25644,
-38081:26001,
-38082:26495,
-38083:27710,
-38084:27726,
-38085:29256,
-38086:29359,
-38087:29677,
-38088:30036,
-38089:32321,
-38090:33324,
-38091:34281,
-38092:36009,
-38093:31684,
-38094:37318,
-38095:29033,
-38096:38930,
-38097:39151,
-38098:25405,
-38099:26217,
-38100:30058,
-38101:30436,
-38102:30928,
-38103:34115,
-38104:34542,
-38105:21290,
-38106:21329,
-38107:21542,
-38108:22915,
-38109:24199,
-38110:24444,
-38111:24754,
-38112:25161,
-38113:25209,
-38114:25259,
-38115:26000,
-38116:27604,
-38117:27852,
-38118:30130,
-38119:30382,
-38120:30865,
-38121:31192,
-38122:32203,
-38123:32631,
-38124:32933,
-38125:34987,
-38126:35513,
-38127:36027,
-38128:36991,
-38129:38750,
-38130:39131,
-38131:27147,
-38132:31800,
-38133:20633,
-38134:23614,
-38135:24494,
-38136:26503,
-38137:27608,
-38138:29749,
-38139:30473,
-38140:32654,
-38208:40763,
-38209:26570,
-38210:31255,
-38211:21305,
-38212:30091,
-38213:39661,
-38214:24422,
-38215:33181,
-38216:33777,
-38217:32920,
-38218:24380,
-38219:24517,
-38220:30050,
-38221:31558,
-38222:36924,
-38223:26727,
-38224:23019,
-38225:23195,
-38226:32016,
-38227:30334,
-38228:35628,
-38229:20469,
-38230:24426,
-38231:27161,
-38232:27703,
-38233:28418,
-38234:29922,
-38235:31080,
-38236:34920,
-38237:35413,
-38238:35961,
-38239:24287,
-38240:25551,
-38241:30149,
-38242:31186,
-38243:33495,
-38244:37672,
-38245:37618,
-38246:33948,
-38247:34541,
-38248:39981,
-38249:21697,
-38250:24428,
-38251:25996,
-38252:27996,
-38253:28693,
-38254:36007,
-38255:36051,
-38256:38971,
-38257:25935,
-38258:29942,
-38259:19981,
-38260:20184,
-38261:22496,
-38262:22827,
-38263:23142,
-38264:23500,
-38265:20904,
-38266:24067,
-38267:24220,
-38268:24598,
-38269:25206,
-38270:25975,
-38272:26023,
-38273:26222,
-38274:28014,
-38275:29238,
-38276:31526,
-38277:33104,
-38278:33178,
-38279:33433,
-38280:35676,
-38281:36000,
-38282:36070,
-38283:36212,
-38284:38428,
-38285:38468,
-38286:20398,
-38287:25771,
-38288:27494,
-38289:33310,
-38290:33889,
-38291:34154,
-38292:37096,
-38293:23553,
-38294:26963,
-38295:39080,
-38296:33914,
-38297:34135,
-38298:20239,
-38299:21103,
-38300:24489,
-38301:24133,
-38302:26381,
-38303:31119,
-38304:33145,
-38305:35079,
-38306:35206,
-38307:28149,
-38308:24343,
-38309:25173,
-38310:27832,
-38311:20175,
-38312:29289,
-38313:39826,
-38314:20998,
-38315:21563,
-38316:22132,
-38317:22707,
-38318:24996,
-38319:25198,
-38320:28954,
-38321:22894,
-38322:31881,
-38323:31966,
-38324:32027,
-38325:38640,
-38326:25991,
-38327:32862,
-38328:19993,
-38329:20341,
-38330:20853,
-38331:22592,
-38332:24163,
-38333:24179,
-38334:24330,
-38335:26564,
-38336:20006,
-38337:34109,
-38338:38281,
-38339:38491,
-38340:31859,
-38341:38913,
-38342:20731,
-38343:22721,
-38344:30294,
-38345:30887,
-38346:21029,
-38347:30629,
-38348:34065,
-38349:31622,
-38350:20559,
-38351:22793,
-38352:29255,
-38353:31687,
-38354:32232,
-38355:36794,
-38356:36820,
-38357:36941,
-38358:20415,
-38359:21193,
-38360:23081,
-38361:24321,
-38362:38829,
-38363:20445,
-38364:33303,
-38365:37610,
-38366:22275,
-38367:25429,
-38368:27497,
-38369:29995,
-38370:35036,
-38371:36628,
-38372:31298,
-38373:21215,
-38374:22675,
-38375:24917,
-38376:25098,
-38377:26286,
-38378:27597,
-38379:31807,
-38380:33769,
-38381:20515,
-38382:20472,
-38383:21253,
-38384:21574,
-38385:22577,
-38386:22857,
-38387:23453,
-38388:23792,
-38389:23791,
-38390:23849,
-38391:24214,
-38392:25265,
-38393:25447,
-38394:25918,
-38395:26041,
-38396:26379,
-38464:27861,
-38465:27873,
-38466:28921,
-38467:30770,
-38468:32299,
-38469:32990,
-38470:33459,
-38471:33804,
-38472:34028,
-38473:34562,
-38474:35090,
-38475:35370,
-38476:35914,
-38477:37030,
-38478:37586,
-38479:39165,
-38480:40179,
-38481:40300,
-38482:20047,
-38483:20129,
-38484:20621,
-38485:21078,
-38486:22346,
-38487:22952,
-38488:24125,
-38489:24536,
-38490:24537,
-38491:25151,
-38492:26292,
-38493:26395,
-38494:26576,
-38495:26834,
-38496:20882,
-38497:32033,
-38498:32938,
-38499:33192,
-38500:35584,
-38501:35980,
-38502:36031,
-38503:37502,
-38504:38450,
-38505:21536,
-38506:38956,
-38507:21271,
-38508:20693,
-38509:21340,
-38510:22696,
-38511:25778,
-38512:26420,
-38513:29287,
-38514:30566,
-38515:31302,
-38516:37350,
-38517:21187,
-38518:27809,
-38519:27526,
-38520:22528,
-38521:24140,
-38522:22868,
-38523:26412,
-38524:32763,
-38525:20961,
-38526:30406,
-38528:25705,
-38529:30952,
-38530:39764,
-38531:40635,
-38532:22475,
-38533:22969,
-38534:26151,
-38535:26522,
-38536:27598,
-38537:21737,
-38538:27097,
-38539:24149,
-38540:33180,
-38541:26517,
-38542:39850,
-38543:26622,
-38544:40018,
-38545:26717,
-38546:20134,
-38547:20451,
-38548:21448,
-38549:25273,
-38550:26411,
-38551:27819,
-38552:36804,
-38553:20397,
-38554:32365,
-38555:40639,
-38556:19975,
-38557:24930,
-38558:28288,
-38559:28459,
-38560:34067,
-38561:21619,
-38562:26410,
-38563:39749,
-38564:24051,
-38565:31637,
-38566:23724,
-38567:23494,
-38568:34588,
-38569:28234,
-38570:34001,
-38571:31252,
-38572:33032,
-38573:22937,
-38574:31885,
-38575:27665,
-38576:30496,
-38577:21209,
-38578:22818,
-38579:28961,
-38580:29279,
-38581:30683,
-38582:38695,
-38583:40289,
-38584:26891,
-38585:23167,
-38586:23064,
-38587:20901,
-38588:21517,
-38589:21629,
-38590:26126,
-38591:30431,
-38592:36855,
-38593:37528,
-38594:40180,
-38595:23018,
-38596:29277,
-38597:28357,
-38598:20813,
-38599:26825,
-38600:32191,
-38601:32236,
-38602:38754,
-38603:40634,
-38604:25720,
-38605:27169,
-38606:33538,
-38607:22916,
-38608:23391,
-38609:27611,
-38610:29467,
-38611:30450,
-38612:32178,
-38613:32791,
-38614:33945,
-38615:20786,
-38616:26408,
-38617:40665,
-38618:30446,
-38619:26466,
-38620:21247,
-38621:39173,
-38622:23588,
-38623:25147,
-38624:31870,
-38625:36016,
-38626:21839,
-38627:24758,
-38628:32011,
-38629:38272,
-38630:21249,
-38631:20063,
-38632:20918,
-38633:22812,
-38634:29242,
-38635:32822,
-38636:37326,
-38637:24357,
-38638:30690,
-38639:21380,
-38640:24441,
-38641:32004,
-38642:34220,
-38643:35379,
-38644:36493,
-38645:38742,
-38646:26611,
-38647:34222,
-38648:37971,
-38649:24841,
-38650:24840,
-38651:27833,
-38652:30290,
-38720:35565,
-38721:36664,
-38722:21807,
-38723:20305,
-38724:20778,
-38725:21191,
-38726:21451,
-38727:23461,
-38728:24189,
-38729:24736,
-38730:24962,
-38731:25558,
-38732:26377,
-38733:26586,
-38734:28263,
-38735:28044,
-38736:29494,
-38737:29495,
-38738:30001,
-38739:31056,
-38740:35029,
-38741:35480,
-38742:36938,
-38743:37009,
-38744:37109,
-38745:38596,
-38746:34701,
-38747:22805,
-38748:20104,
-38749:20313,
-38750:19982,
-38751:35465,
-38752:36671,
-38753:38928,
-38754:20653,
-38755:24188,
-38756:22934,
-38757:23481,
-38758:24248,
-38759:25562,
-38760:25594,
-38761:25793,
-38762:26332,
-38763:26954,
-38764:27096,
-38765:27915,
-38766:28342,
-38767:29076,
-38768:29992,
-38769:31407,
-38770:32650,
-38771:32768,
-38772:33865,
-38773:33993,
-38774:35201,
-38775:35617,
-38776:36362,
-38777:36965,
-38778:38525,
-38779:39178,
-38780:24958,
-38781:25233,
-38782:27442,
-38784:27779,
-38785:28020,
-38786:32716,
-38787:32764,
-38788:28096,
-38789:32645,
-38790:34746,
-38791:35064,
-38792:26469,
-38793:33713,
-38794:38972,
-38795:38647,
-38796:27931,
-38797:32097,
-38798:33853,
-38799:37226,
-38800:20081,
-38801:21365,
-38802:23888,
-38803:27396,
-38804:28651,
-38805:34253,
-38806:34349,
-38807:35239,
-38808:21033,
-38809:21519,
-38810:23653,
-38811:26446,
-38812:26792,
-38813:29702,
-38814:29827,
-38815:30178,
-38816:35023,
-38817:35041,
-38818:37324,
-38819:38626,
-38820:38520,
-38821:24459,
-38822:29575,
-38823:31435,
-38824:33870,
-38825:25504,
-38826:30053,
-38827:21129,
-38828:27969,
-38829:28316,
-38830:29705,
-38831:30041,
-38832:30827,
-38833:31890,
-38834:38534,
-38835:31452,
-38836:40845,
-38837:20406,
-38838:24942,
-38839:26053,
-38840:34396,
-38841:20102,
-38842:20142,
-38843:20698,
-38844:20001,
-38845:20940,
-38846:23534,
-38847:26009,
-38848:26753,
-38849:28092,
-38850:29471,
-38851:30274,
-38852:30637,
-38853:31260,
-38854:31975,
-38855:33391,
-38856:35538,
-38857:36988,
-38858:37327,
-38859:38517,
-38860:38936,
-38861:21147,
-38862:32209,
-38863:20523,
-38864:21400,
-38865:26519,
-38866:28107,
-38867:29136,
-38868:29747,
-38869:33256,
-38870:36650,
-38871:38563,
-38872:40023,
-38873:40607,
-38874:29792,
-38875:22593,
-38876:28057,
-38877:32047,
-38878:39006,
-38879:20196,
-38880:20278,
-38881:20363,
-38882:20919,
-38883:21169,
-38884:23994,
-38885:24604,
-38886:29618,
-38887:31036,
-38888:33491,
-38889:37428,
-38890:38583,
-38891:38646,
-38892:38666,
-38893:40599,
-38894:40802,
-38895:26278,
-38896:27508,
-38897:21015,
-38898:21155,
-38899:28872,
-38900:35010,
-38901:24265,
-38902:24651,
-38903:24976,
-38904:28451,
-38905:29001,
-38906:31806,
-38907:32244,
-38908:32879,
-38976:34030,
-38977:36899,
-38978:37676,
-38979:21570,
-38980:39791,
-38981:27347,
-38982:28809,
-38983:36034,
-38984:36335,
-38985:38706,
-38986:21172,
-38987:23105,
-38988:24266,
-38989:24324,
-38990:26391,
-38991:27004,
-38992:27028,
-38993:28010,
-38994:28431,
-38995:29282,
-38996:29436,
-38997:31725,
-38998:32769,
-38999:32894,
-39000:34635,
-39001:37070,
-39002:20845,
-39003:40595,
-39004:31108,
-39005:32907,
-39006:37682,
-39007:35542,
-39008:20525,
-39009:21644,
-39010:35441,
-39011:27498,
-39012:36036,
-39013:33031,
-39014:24785,
-39015:26528,
-39016:40434,
-39017:20121,
-39018:20120,
-39019:39952,
-39020:35435,
-39021:34241,
-39022:34152,
-39023:26880,
-39024:28286,
-39025:30871,
-39026:33109,
-39071:24332,
-39072:19984,
-39073:19989,
-39074:20010,
-39075:20017,
-39076:20022,
-39077:20028,
-39078:20031,
-39079:20034,
-39080:20054,
-39081:20056,
-39082:20098,
-39083:20101,
-39084:35947,
-39085:20106,
-39086:33298,
-39087:24333,
-39088:20110,
-39089:20126,
-39090:20127,
-39091:20128,
-39092:20130,
-39093:20144,
-39094:20147,
-39095:20150,
-39096:20174,
-39097:20173,
-39098:20164,
-39099:20166,
-39100:20162,
-39101:20183,
-39102:20190,
-39103:20205,
-39104:20191,
-39105:20215,
-39106:20233,
-39107:20314,
-39108:20272,
-39109:20315,
-39110:20317,
-39111:20311,
-39112:20295,
-39113:20342,
-39114:20360,
-39115:20367,
-39116:20376,
-39117:20347,
-39118:20329,
-39119:20336,
-39120:20369,
-39121:20335,
-39122:20358,
-39123:20374,
-39124:20760,
-39125:20436,
-39126:20447,
-39127:20430,
-39128:20440,
-39129:20443,
-39130:20433,
-39131:20442,
-39132:20432,
-39133:20452,
-39134:20453,
-39135:20506,
-39136:20520,
-39137:20500,
-39138:20522,
-39139:20517,
-39140:20485,
-39141:20252,
-39142:20470,
-39143:20513,
-39144:20521,
-39145:20524,
-39146:20478,
-39147:20463,
-39148:20497,
-39149:20486,
-39150:20547,
-39151:20551,
-39152:26371,
-39153:20565,
-39154:20560,
-39155:20552,
-39156:20570,
-39157:20566,
-39158:20588,
-39159:20600,
-39160:20608,
-39161:20634,
-39162:20613,
-39163:20660,
-39164:20658,
-39232:20681,
-39233:20682,
-39234:20659,
-39235:20674,
-39236:20694,
-39237:20702,
-39238:20709,
-39239:20717,
-39240:20707,
-39241:20718,
-39242:20729,
-39243:20725,
-39244:20745,
-39245:20737,
-39246:20738,
-39247:20758,
-39248:20757,
-39249:20756,
-39250:20762,
-39251:20769,
-39252:20794,
-39253:20791,
-39254:20796,
-39255:20795,
-39256:20799,
-39257:20800,
-39258:20818,
-39259:20812,
-39260:20820,
-39261:20834,
-39262:31480,
-39263:20841,
-39264:20842,
-39265:20846,
-39266:20864,
-39267:20866,
-39268:22232,
-39269:20876,
-39270:20873,
-39271:20879,
-39272:20881,
-39273:20883,
-39274:20885,
-39275:20886,
-39276:20900,
-39277:20902,
-39278:20898,
-39279:20905,
-39280:20906,
-39281:20907,
-39282:20915,
-39283:20913,
-39284:20914,
-39285:20912,
-39286:20917,
-39287:20925,
-39288:20933,
-39289:20937,
-39290:20955,
-39291:20960,
-39292:34389,
-39293:20969,
-39294:20973,
-39296:20976,
-39297:20981,
-39298:20990,
-39299:20996,
-39300:21003,
-39301:21012,
-39302:21006,
-39303:21031,
-39304:21034,
-39305:21038,
-39306:21043,
-39307:21049,
-39308:21071,
-39309:21060,
-39310:21067,
-39311:21068,
-39312:21086,
-39313:21076,
-39314:21098,
-39315:21108,
-39316:21097,
-39317:21107,
-39318:21119,
-39319:21117,
-39320:21133,
-39321:21140,
-39322:21138,
-39323:21105,
-39324:21128,
-39325:21137,
-39326:36776,
-39327:36775,
-39328:21164,
-39329:21165,
-39330:21180,
-39331:21173,
-39332:21185,
-39333:21197,
-39334:21207,
-39335:21214,
-39336:21219,
-39337:21222,
-39338:39149,
-39339:21216,
-39340:21235,
-39341:21237,
-39342:21240,
-39343:21241,
-39344:21254,
-39345:21256,
-39346:30008,
-39347:21261,
-39348:21264,
-39349:21263,
-39350:21269,
-39351:21274,
-39352:21283,
-39353:21295,
-39354:21297,
-39355:21299,
-39356:21304,
-39357:21312,
-39358:21318,
-39359:21317,
-39360:19991,
-39361:21321,
-39362:21325,
-39363:20950,
-39364:21342,
-39365:21353,
-39366:21358,
-39367:22808,
-39368:21371,
-39369:21367,
-39370:21378,
-39371:21398,
-39372:21408,
-39373:21414,
-39374:21413,
-39375:21422,
-39376:21424,
-39377:21430,
-39378:21443,
-39379:31762,
-39380:38617,
-39381:21471,
-39382:26364,
-39383:29166,
-39384:21486,
-39385:21480,
-39386:21485,
-39387:21498,
-39388:21505,
-39389:21565,
-39390:21568,
-39391:21548,
-39392:21549,
-39393:21564,
-39394:21550,
-39395:21558,
-39396:21545,
-39397:21533,
-39398:21582,
-39399:21647,
-39400:21621,
-39401:21646,
-39402:21599,
-39403:21617,
-39404:21623,
-39405:21616,
-39406:21650,
-39407:21627,
-39408:21632,
-39409:21622,
-39410:21636,
-39411:21648,
-39412:21638,
-39413:21703,
-39414:21666,
-39415:21688,
-39416:21669,
-39417:21676,
-39418:21700,
-39419:21704,
-39420:21672,
-39488:21675,
-39489:21698,
-39490:21668,
-39491:21694,
-39492:21692,
-39493:21720,
-39494:21733,
-39495:21734,
-39496:21775,
-39497:21780,
-39498:21757,
-39499:21742,
-39500:21741,
-39501:21754,
-39502:21730,
-39503:21817,
-39504:21824,
-39505:21859,
-39506:21836,
-39507:21806,
-39508:21852,
-39509:21829,
-39510:21846,
-39511:21847,
-39512:21816,
-39513:21811,
-39514:21853,
-39515:21913,
-39516:21888,
-39517:21679,
-39518:21898,
-39519:21919,
-39520:21883,
-39521:21886,
-39522:21912,
-39523:21918,
-39524:21934,
-39525:21884,
-39526:21891,
-39527:21929,
-39528:21895,
-39529:21928,
-39530:21978,
-39531:21957,
-39532:21983,
-39533:21956,
-39534:21980,
-39535:21988,
-39536:21972,
-39537:22036,
-39538:22007,
-39539:22038,
-39540:22014,
-39541:22013,
-39542:22043,
-39543:22009,
-39544:22094,
-39545:22096,
-39546:29151,
-39547:22068,
-39548:22070,
-39549:22066,
-39550:22072,
-39552:22123,
-39553:22116,
-39554:22063,
-39555:22124,
-39556:22122,
-39557:22150,
-39558:22144,
-39559:22154,
-39560:22176,
-39561:22164,
-39562:22159,
-39563:22181,
-39564:22190,
-39565:22198,
-39566:22196,
-39567:22210,
-39568:22204,
-39569:22209,
-39570:22211,
-39571:22208,
-39572:22216,
-39573:22222,
-39574:22225,
-39575:22227,
-39576:22231,
-39577:22254,
-39578:22265,
-39579:22272,
-39580:22271,
-39581:22276,
-39582:22281,
-39583:22280,
-39584:22283,
-39585:22285,
-39586:22291,
-39587:22296,
-39588:22294,
-39589:21959,
-39590:22300,
-39591:22310,
-39592:22327,
-39593:22328,
-39594:22350,
-39595:22331,
-39596:22336,
-39597:22351,
-39598:22377,
-39599:22464,
-39600:22408,
-39601:22369,
-39602:22399,
-39603:22409,
-39604:22419,
-39605:22432,
-39606:22451,
-39607:22436,
-39608:22442,
-39609:22448,
-39610:22467,
-39611:22470,
-39612:22484,
-39613:22482,
-39614:22483,
-39615:22538,
-39616:22486,
-39617:22499,
-39618:22539,
-39619:22553,
-39620:22557,
-39621:22642,
-39622:22561,
-39623:22626,
-39624:22603,
-39625:22640,
-39626:27584,
-39627:22610,
-39628:22589,
-39629:22649,
-39630:22661,
-39631:22713,
-39632:22687,
-39633:22699,
-39634:22714,
-39635:22750,
-39636:22715,
-39637:22712,
-39638:22702,
-39639:22725,
-39640:22739,
-39641:22737,
-39642:22743,
-39643:22745,
-39644:22744,
-39645:22757,
-39646:22748,
-39647:22756,
-39648:22751,
-39649:22767,
-39650:22778,
-39651:22777,
-39652:22779,
-39653:22780,
-39654:22781,
-39655:22786,
-39656:22794,
-39657:22800,
-39658:22811,
-39659:26790,
-39660:22821,
-39661:22828,
-39662:22829,
-39663:22834,
-39664:22840,
-39665:22846,
-39666:31442,
-39667:22869,
-39668:22864,
-39669:22862,
-39670:22874,
-39671:22872,
-39672:22882,
-39673:22880,
-39674:22887,
-39675:22892,
-39676:22889,
-39744:22904,
-39745:22913,
-39746:22941,
-39747:20318,
-39748:20395,
-39749:22947,
-39750:22962,
-39751:22982,
-39752:23016,
-39753:23004,
-39754:22925,
-39755:23001,
-39756:23002,
-39757:23077,
-39758:23071,
-39759:23057,
-39760:23068,
-39761:23049,
-39762:23066,
-39763:23104,
-39764:23148,
-39765:23113,
-39766:23093,
-39767:23094,
-39768:23138,
-39769:23146,
-39770:23194,
-39771:23228,
-39772:23230,
-39773:23243,
-39774:23234,
-39775:23229,
-39776:23267,
-39777:23255,
-39778:23270,
-39779:23273,
-39780:23254,
-39781:23290,
-39782:23291,
-39783:23308,
-39784:23307,
-39785:23318,
-39786:23346,
-39787:23248,
-39788:23338,
-39789:23350,
-39790:23358,
-39791:23363,
-39792:23365,
-39793:23360,
-39794:23377,
-39795:23381,
-39796:23386,
-39797:23387,
-39798:23397,
-39799:23401,
-39800:23408,
-39801:23411,
-39802:23413,
-39803:23416,
-39804:25992,
-39805:23418,
-39806:23424,
-39808:23427,
-39809:23462,
-39810:23480,
-39811:23491,
-39812:23495,
-39813:23497,
-39814:23508,
-39815:23504,
-39816:23524,
-39817:23526,
-39818:23522,
-39819:23518,
-39820:23525,
-39821:23531,
-39822:23536,
-39823:23542,
-39824:23539,
-39825:23557,
-39826:23559,
-39827:23560,
-39828:23565,
-39829:23571,
-39830:23584,
-39831:23586,
-39832:23592,
-39833:23608,
-39834:23609,
-39835:23617,
-39836:23622,
-39837:23630,
-39838:23635,
-39839:23632,
-39840:23631,
-39841:23409,
-39842:23660,
-39843:23662,
-39844:20066,
-39845:23670,
-39846:23673,
-39847:23692,
-39848:23697,
-39849:23700,
-39850:22939,
-39851:23723,
-39852:23739,
-39853:23734,
-39854:23740,
-39855:23735,
-39856:23749,
-39857:23742,
-39858:23751,
-39859:23769,
-39860:23785,
-39861:23805,
-39862:23802,
-39863:23789,
-39864:23948,
-39865:23786,
-39866:23819,
-39867:23829,
-39868:23831,
-39869:23900,
-39870:23839,
-39871:23835,
-39872:23825,
-39873:23828,
-39874:23842,
-39875:23834,
-39876:23833,
-39877:23832,
-39878:23884,
-39879:23890,
-39880:23886,
-39881:23883,
-39882:23916,
-39883:23923,
-39884:23926,
-39885:23943,
-39886:23940,
-39887:23938,
-39888:23970,
-39889:23965,
-39890:23980,
-39891:23982,
-39892:23997,
-39893:23952,
-39894:23991,
-39895:23996,
-39896:24009,
-39897:24013,
-39898:24019,
-39899:24018,
-39900:24022,
-39901:24027,
-39902:24043,
-39903:24050,
-39904:24053,
-39905:24075,
-39906:24090,
-39907:24089,
-39908:24081,
-39909:24091,
-39910:24118,
-39911:24119,
-39912:24132,
-39913:24131,
-39914:24128,
-39915:24142,
-39916:24151,
-39917:24148,
-39918:24159,
-39919:24162,
-39920:24164,
-39921:24135,
-39922:24181,
-39923:24182,
-39924:24186,
-39925:40636,
-39926:24191,
-39927:24224,
-39928:24257,
-39929:24258,
-39930:24264,
-39931:24272,
-39932:24271,
-40000:24278,
-40001:24291,
-40002:24285,
-40003:24282,
-40004:24283,
-40005:24290,
-40006:24289,
-40007:24296,
-40008:24297,
-40009:24300,
-40010:24305,
-40011:24307,
-40012:24304,
-40013:24308,
-40014:24312,
-40015:24318,
-40016:24323,
-40017:24329,
-40018:24413,
-40019:24412,
-40020:24331,
-40021:24337,
-40022:24342,
-40023:24361,
-40024:24365,
-40025:24376,
-40026:24385,
-40027:24392,
-40028:24396,
-40029:24398,
-40030:24367,
-40031:24401,
-40032:24406,
-40033:24407,
-40034:24409,
-40035:24417,
-40036:24429,
-40037:24435,
-40038:24439,
-40039:24451,
-40040:24450,
-40041:24447,
-40042:24458,
-40043:24456,
-40044:24465,
-40045:24455,
-40046:24478,
-40047:24473,
-40048:24472,
-40049:24480,
-40050:24488,
-40051:24493,
-40052:24508,
-40053:24534,
-40054:24571,
-40055:24548,
-40056:24568,
-40057:24561,
-40058:24541,
-40059:24755,
-40060:24575,
-40061:24609,
-40062:24672,
-40064:24601,
-40065:24592,
-40066:24617,
-40067:24590,
-40068:24625,
-40069:24603,
-40070:24597,
-40071:24619,
-40072:24614,
-40073:24591,
-40074:24634,
-40075:24666,
-40076:24641,
-40077:24682,
-40078:24695,
-40079:24671,
-40080:24650,
-40081:24646,
-40082:24653,
-40083:24675,
-40084:24643,
-40085:24676,
-40086:24642,
-40087:24684,
-40088:24683,
-40089:24665,
-40090:24705,
-40091:24717,
-40092:24807,
-40093:24707,
-40094:24730,
-40095:24708,
-40096:24731,
-40097:24726,
-40098:24727,
-40099:24722,
-40100:24743,
-40101:24715,
-40102:24801,
-40103:24760,
-40104:24800,
-40105:24787,
-40106:24756,
-40107:24560,
-40108:24765,
-40109:24774,
-40110:24757,
-40111:24792,
-40112:24909,
-40113:24853,
-40114:24838,
-40115:24822,
-40116:24823,
-40117:24832,
-40118:24820,
-40119:24826,
-40120:24835,
-40121:24865,
-40122:24827,
-40123:24817,
-40124:24845,
-40125:24846,
-40126:24903,
-40127:24894,
-40128:24872,
-40129:24871,
-40130:24906,
-40131:24895,
-40132:24892,
-40133:24876,
-40134:24884,
-40135:24893,
-40136:24898,
-40137:24900,
-40138:24947,
-40139:24951,
-40140:24920,
-40141:24921,
-40142:24922,
-40143:24939,
-40144:24948,
-40145:24943,
-40146:24933,
-40147:24945,
-40148:24927,
-40149:24925,
-40150:24915,
-40151:24949,
-40152:24985,
-40153:24982,
-40154:24967,
-40155:25004,
-40156:24980,
-40157:24986,
-40158:24970,
-40159:24977,
-40160:25003,
-40161:25006,
-40162:25036,
-40163:25034,
-40164:25033,
-40165:25079,
-40166:25032,
-40167:25027,
-40168:25030,
-40169:25018,
-40170:25035,
-40171:32633,
-40172:25037,
-40173:25062,
-40174:25059,
-40175:25078,
-40176:25082,
-40177:25076,
-40178:25087,
-40179:25085,
-40180:25084,
-40181:25086,
-40182:25088,
-40183:25096,
-40184:25097,
-40185:25101,
-40186:25100,
-40187:25108,
-40188:25115,
-40256:25118,
-40257:25121,
-40258:25130,
-40259:25134,
-40260:25136,
-40261:25138,
-40262:25139,
-40263:25153,
-40264:25166,
-40265:25182,
-40266:25187,
-40267:25179,
-40268:25184,
-40269:25192,
-40270:25212,
-40271:25218,
-40272:25225,
-40273:25214,
-40274:25234,
-40275:25235,
-40276:25238,
-40277:25300,
-40278:25219,
-40279:25236,
-40280:25303,
-40281:25297,
-40282:25275,
-40283:25295,
-40284:25343,
-40285:25286,
-40286:25812,
-40287:25288,
-40288:25308,
-40289:25292,
-40290:25290,
-40291:25282,
-40292:25287,
-40293:25243,
-40294:25289,
-40295:25356,
-40296:25326,
-40297:25329,
-40298:25383,
-40299:25346,
-40300:25352,
-40301:25327,
-40302:25333,
-40303:25424,
-40304:25406,
-40305:25421,
-40306:25628,
-40307:25423,
-40308:25494,
-40309:25486,
-40310:25472,
-40311:25515,
-40312:25462,
-40313:25507,
-40314:25487,
-40315:25481,
-40316:25503,
-40317:25525,
-40318:25451,
-40320:25449,
-40321:25534,
-40322:25577,
-40323:25536,
-40324:25542,
-40325:25571,
-40326:25545,
-40327:25554,
-40328:25590,
-40329:25540,
-40330:25622,
-40331:25652,
-40332:25606,
-40333:25619,
-40334:25638,
-40335:25654,
-40336:25885,
-40337:25623,
-40338:25640,
-40339:25615,
-40340:25703,
-40341:25711,
-40342:25718,
-40343:25678,
-40344:25898,
-40345:25749,
-40346:25747,
-40347:25765,
-40348:25769,
-40349:25736,
-40350:25788,
-40351:25818,
-40352:25810,
-40353:25797,
-40354:25799,
-40355:25787,
-40356:25816,
-40357:25794,
-40358:25841,
-40359:25831,
-40360:33289,
-40361:25824,
-40362:25825,
-40363:25260,
-40364:25827,
-40365:25839,
-40366:25900,
-40367:25846,
-40368:25844,
-40369:25842,
-40370:25850,
-40371:25856,
-40372:25853,
-40373:25880,
-40374:25884,
-40375:25861,
-40376:25892,
-40377:25891,
-40378:25899,
-40379:25908,
-40380:25909,
-40381:25911,
-40382:25910,
-40383:25912,
-40384:30027,
-40385:25928,
-40386:25942,
-40387:25941,
-40388:25933,
-40389:25944,
-40390:25950,
-40391:25949,
-40392:25970,
-40393:25976,
-40394:25986,
-40395:25987,
-40396:35722,
-40397:26011,
-40398:26015,
-40399:26027,
-40400:26039,
-40401:26051,
-40402:26054,
-40403:26049,
-40404:26052,
-40405:26060,
-40406:26066,
-40407:26075,
-40408:26073,
-40409:26080,
-40410:26081,
-40411:26097,
-40412:26482,
-40413:26122,
-40414:26115,
-40415:26107,
-40416:26483,
-40417:26165,
-40418:26166,
-40419:26164,
-40420:26140,
-40421:26191,
-40422:26180,
-40423:26185,
-40424:26177,
-40425:26206,
-40426:26205,
-40427:26212,
-40428:26215,
-40429:26216,
-40430:26207,
-40431:26210,
-40432:26224,
-40433:26243,
-40434:26248,
-40435:26254,
-40436:26249,
-40437:26244,
-40438:26264,
-40439:26269,
-40440:26305,
-40441:26297,
-40442:26313,
-40443:26302,
-40444:26300,
-40512:26308,
-40513:26296,
-40514:26326,
-40515:26330,
-40516:26336,
-40517:26175,
-40518:26342,
-40519:26345,
-40520:26352,
-40521:26357,
-40522:26359,
-40523:26383,
-40524:26390,
-40525:26398,
-40526:26406,
-40527:26407,
-40528:38712,
-40529:26414,
-40530:26431,
-40531:26422,
-40532:26433,
-40533:26424,
-40534:26423,
-40535:26438,
-40536:26462,
-40537:26464,
-40538:26457,
-40539:26467,
-40540:26468,
-40541:26505,
-40542:26480,
-40543:26537,
-40544:26492,
-40545:26474,
-40546:26508,
-40547:26507,
-40548:26534,
-40549:26529,
-40550:26501,
-40551:26551,
-40552:26607,
-40553:26548,
-40554:26604,
-40555:26547,
-40556:26601,
-40557:26552,
-40558:26596,
-40559:26590,
-40560:26589,
-40561:26594,
-40562:26606,
-40563:26553,
-40564:26574,
-40565:26566,
-40566:26599,
-40567:27292,
-40568:26654,
-40569:26694,
-40570:26665,
-40571:26688,
-40572:26701,
-40573:26674,
-40574:26702,
-40576:26803,
-40577:26667,
-40578:26713,
-40579:26723,
-40580:26743,
-40581:26751,
-40582:26783,
-40583:26767,
-40584:26797,
-40585:26772,
-40586:26781,
-40587:26779,
-40588:26755,
-40589:27310,
-40590:26809,
-40591:26740,
-40592:26805,
-40593:26784,
-40594:26810,
-40595:26895,
-40596:26765,
-40597:26750,
-40598:26881,
-40599:26826,
-40600:26888,
-40601:26840,
-40602:26914,
-40603:26918,
-40604:26849,
-40605:26892,
-40606:26829,
-40607:26836,
-40608:26855,
-40609:26837,
-40610:26934,
-40611:26898,
-40612:26884,
-40613:26839,
-40614:26851,
-40615:26917,
-40616:26873,
-40617:26848,
-40618:26863,
-40619:26920,
-40620:26922,
-40621:26906,
-40622:26915,
-40623:26913,
-40624:26822,
-40625:27001,
-40626:26999,
-40627:26972,
-40628:27000,
-40629:26987,
-40630:26964,
-40631:27006,
-40632:26990,
-40633:26937,
-40634:26996,
-40635:26941,
-40636:26969,
-40637:26928,
-40638:26977,
-40639:26974,
-40640:26973,
-40641:27009,
-40642:26986,
-40643:27058,
-40644:27054,
-40645:27088,
-40646:27071,
-40647:27073,
-40648:27091,
-40649:27070,
-40650:27086,
-40651:23528,
-40652:27082,
-40653:27101,
-40654:27067,
-40655:27075,
-40656:27047,
-40657:27182,
-40658:27025,
-40659:27040,
-40660:27036,
-40661:27029,
-40662:27060,
-40663:27102,
-40664:27112,
-40665:27138,
-40666:27163,
-40667:27135,
-40668:27402,
-40669:27129,
-40670:27122,
-40671:27111,
-40672:27141,
-40673:27057,
-40674:27166,
-40675:27117,
-40676:27156,
-40677:27115,
-40678:27146,
-40679:27154,
-40680:27329,
-40681:27171,
-40682:27155,
-40683:27204,
-40684:27148,
-40685:27250,
-40686:27190,
-40687:27256,
-40688:27207,
-40689:27234,
-40690:27225,
-40691:27238,
-40692:27208,
-40693:27192,
-40694:27170,
-40695:27280,
-40696:27277,
-40697:27296,
-40698:27268,
-40699:27298,
-40700:27299,
-40768:27287,
-40769:34327,
-40770:27323,
-40771:27331,
-40772:27330,
-40773:27320,
-40774:27315,
-40775:27308,
-40776:27358,
-40777:27345,
-40778:27359,
-40779:27306,
-40780:27354,
-40781:27370,
-40782:27387,
-40783:27397,
-40784:34326,
-40785:27386,
-40786:27410,
-40787:27414,
-40788:39729,
-40789:27423,
-40790:27448,
-40791:27447,
-40792:30428,
-40793:27449,
-40794:39150,
-40795:27463,
-40796:27459,
-40797:27465,
-40798:27472,
-40799:27481,
-40800:27476,
-40801:27483,
-40802:27487,
-40803:27489,
-40804:27512,
-40805:27513,
-40806:27519,
-40807:27520,
-40808:27524,
-40809:27523,
-40810:27533,
-40811:27544,
-40812:27541,
-40813:27550,
-40814:27556,
-40815:27562,
-40816:27563,
-40817:27567,
-40818:27570,
-40819:27569,
-40820:27571,
-40821:27575,
-40822:27580,
-40823:27590,
-40824:27595,
-40825:27603,
-40826:27615,
-40827:27628,
-40828:27627,
-40829:27635,
-40830:27631,
-40832:40638,
-40833:27656,
-40834:27667,
-40835:27668,
-40836:27675,
-40837:27684,
-40838:27683,
-40839:27742,
-40840:27733,
-40841:27746,
-40842:27754,
-40843:27778,
-40844:27789,
-40845:27802,
-40846:27777,
-40847:27803,
-40848:27774,
-40849:27752,
-40850:27763,
-40851:27794,
-40852:27792,
-40853:27844,
-40854:27889,
-40855:27859,
-40856:27837,
-40857:27863,
-40858:27845,
-40859:27869,
-40860:27822,
-40861:27825,
-40862:27838,
-40863:27834,
-40864:27867,
-40865:27887,
-40866:27865,
-40867:27882,
-40868:27935,
-40869:34893,
-40870:27958,
-40871:27947,
-40872:27965,
-40873:27960,
-40874:27929,
-40875:27957,
-40876:27955,
-40877:27922,
-40878:27916,
-40879:28003,
-40880:28051,
-40881:28004,
-40882:27994,
-40883:28025,
-40884:27993,
-40885:28046,
-40886:28053,
-40887:28644,
-40888:28037,
-40889:28153,
-40890:28181,
-40891:28170,
-40892:28085,
-40893:28103,
-40894:28134,
-40895:28088,
-40896:28102,
-40897:28140,
-40898:28126,
-40899:28108,
-40900:28136,
-40901:28114,
-40902:28101,
-40903:28154,
-40904:28121,
-40905:28132,
-40906:28117,
-40907:28138,
-40908:28142,
-40909:28205,
-40910:28270,
-40911:28206,
-40912:28185,
-40913:28274,
-40914:28255,
-40915:28222,
-40916:28195,
-40917:28267,
-40918:28203,
-40919:28278,
-40920:28237,
-40921:28191,
-40922:28227,
-40923:28218,
-40924:28238,
-40925:28196,
-40926:28415,
-40927:28189,
-40928:28216,
-40929:28290,
-40930:28330,
-40931:28312,
-40932:28361,
-40933:28343,
-40934:28371,
-40935:28349,
-40936:28335,
-40937:28356,
-40938:28338,
-40939:28372,
-40940:28373,
-40941:28303,
-40942:28325,
-40943:28354,
-40944:28319,
-40945:28481,
-40946:28433,
-40947:28748,
-40948:28396,
-40949:28408,
-40950:28414,
-40951:28479,
-40952:28402,
-40953:28465,
-40954:28399,
-40955:28466,
-40956:28364,
-57408:28478,
-57409:28435,
-57410:28407,
-57411:28550,
-57412:28538,
-57413:28536,
-57414:28545,
-57415:28544,
-57416:28527,
-57417:28507,
-57418:28659,
-57419:28525,
-57420:28546,
-57421:28540,
-57422:28504,
-57423:28558,
-57424:28561,
-57425:28610,
-57426:28518,
-57427:28595,
-57428:28579,
-57429:28577,
-57430:28580,
-57431:28601,
-57432:28614,
-57433:28586,
-57434:28639,
-57435:28629,
-57436:28652,
-57437:28628,
-57438:28632,
-57439:28657,
-57440:28654,
-57441:28635,
-57442:28681,
-57443:28683,
-57444:28666,
-57445:28689,
-57446:28673,
-57447:28687,
-57448:28670,
-57449:28699,
-57450:28698,
-57451:28532,
-57452:28701,
-57453:28696,
-57454:28703,
-57455:28720,
-57456:28734,
-57457:28722,
-57458:28753,
-57459:28771,
-57460:28825,
-57461:28818,
-57462:28847,
-57463:28913,
-57464:28844,
-57465:28856,
-57466:28851,
-57467:28846,
-57468:28895,
-57469:28875,
-57470:28893,
-57472:28889,
-57473:28937,
-57474:28925,
-57475:28956,
-57476:28953,
-57477:29029,
-57478:29013,
-57479:29064,
-57480:29030,
-57481:29026,
-57482:29004,
-57483:29014,
-57484:29036,
-57485:29071,
-57486:29179,
-57487:29060,
-57488:29077,
-57489:29096,
-57490:29100,
-57491:29143,
-57492:29113,
-57493:29118,
-57494:29138,
-57495:29129,
-57496:29140,
-57497:29134,
-57498:29152,
-57499:29164,
-57500:29159,
-57501:29173,
-57502:29180,
-57503:29177,
-57504:29183,
-57505:29197,
-57506:29200,
-57507:29211,
-57508:29224,
-57509:29229,
-57510:29228,
-57511:29232,
-57512:29234,
-57513:29243,
-57514:29244,
-57515:29247,
-57516:29248,
-57517:29254,
-57518:29259,
-57519:29272,
-57520:29300,
-57521:29310,
-57522:29314,
-57523:29313,
-57524:29319,
-57525:29330,
-57526:29334,
-57527:29346,
-57528:29351,
-57529:29369,
-57530:29362,
-57531:29379,
-57532:29382,
-57533:29380,
-57534:29390,
-57535:29394,
-57536:29410,
-57537:29408,
-57538:29409,
-57539:29433,
-57540:29431,
-57541:20495,
-57542:29463,
-57543:29450,
-57544:29468,
-57545:29462,
-57546:29469,
-57547:29492,
-57548:29487,
-57549:29481,
-57550:29477,
-57551:29502,
-57552:29518,
-57553:29519,
-57554:40664,
-57555:29527,
-57556:29546,
-57557:29544,
-57558:29552,
-57559:29560,
-57560:29557,
-57561:29563,
-57562:29562,
-57563:29640,
-57564:29619,
-57565:29646,
-57566:29627,
-57567:29632,
-57568:29669,
-57569:29678,
-57570:29662,
-57571:29858,
-57572:29701,
-57573:29807,
-57574:29733,
-57575:29688,
-57576:29746,
-57577:29754,
-57578:29781,
-57579:29759,
-57580:29791,
-57581:29785,
-57582:29761,
-57583:29788,
-57584:29801,
-57585:29808,
-57586:29795,
-57587:29802,
-57588:29814,
-57589:29822,
-57590:29835,
-57591:29854,
-57592:29863,
-57593:29898,
-57594:29903,
-57595:29908,
-57596:29681,
-57664:29920,
-57665:29923,
-57666:29927,
-57667:29929,
-57668:29934,
-57669:29938,
-57670:29936,
-57671:29937,
-57672:29944,
-57673:29943,
-57674:29956,
-57675:29955,
-57676:29957,
-57677:29964,
-57678:29966,
-57679:29965,
-57680:29973,
-57681:29971,
-57682:29982,
-57683:29990,
-57684:29996,
-57685:30012,
-57686:30020,
-57687:30029,
-57688:30026,
-57689:30025,
-57690:30043,
-57691:30022,
-57692:30042,
-57693:30057,
-57694:30052,
-57695:30055,
-57696:30059,
-57697:30061,
-57698:30072,
-57699:30070,
-57700:30086,
-57701:30087,
-57702:30068,
-57703:30090,
-57704:30089,
-57705:30082,
-57706:30100,
-57707:30106,
-57708:30109,
-57709:30117,
-57710:30115,
-57711:30146,
-57712:30131,
-57713:30147,
-57714:30133,
-57715:30141,
-57716:30136,
-57717:30140,
-57718:30129,
-57719:30157,
-57720:30154,
-57721:30162,
-57722:30169,
-57723:30179,
-57724:30174,
-57725:30206,
-57726:30207,
-57728:30204,
-57729:30209,
-57730:30192,
-57731:30202,
-57732:30194,
-57733:30195,
-57734:30219,
-57735:30221,
-57736:30217,
-57737:30239,
-57738:30247,
-57739:30240,
-57740:30241,
-57741:30242,
-57742:30244,
-57743:30260,
-57744:30256,
-57745:30267,
-57746:30279,
-57747:30280,
-57748:30278,
-57749:30300,
-57750:30296,
-57751:30305,
-57752:30306,
-57753:30312,
-57754:30313,
-57755:30314,
-57756:30311,
-57757:30316,
-57758:30320,
-57759:30322,
-57760:30326,
-57761:30328,
-57762:30332,
-57763:30336,
-57764:30339,
-57765:30344,
-57766:30347,
-57767:30350,
-57768:30358,
-57769:30355,
-57770:30361,
-57771:30362,
-57772:30384,
-57773:30388,
-57774:30392,
-57775:30393,
-57776:30394,
-57777:30402,
-57778:30413,
-57779:30422,
-57780:30418,
-57781:30430,
-57782:30433,
-57783:30437,
-57784:30439,
-57785:30442,
-57786:34351,
-57787:30459,
-57788:30472,
-57789:30471,
-57790:30468,
-57791:30505,
-57792:30500,
-57793:30494,
-57794:30501,
-57795:30502,
-57796:30491,
-57797:30519,
-57798:30520,
-57799:30535,
-57800:30554,
-57801:30568,
-57802:30571,
-57803:30555,
-57804:30565,
-57805:30591,
-57806:30590,
-57807:30585,
-57808:30606,
-57809:30603,
-57810:30609,
-57811:30624,
-57812:30622,
-57813:30640,
-57814:30646,
-57815:30649,
-57816:30655,
-57817:30652,
-57818:30653,
-57819:30651,
-57820:30663,
-57821:30669,
-57822:30679,
-57823:30682,
-57824:30684,
-57825:30691,
-57826:30702,
-57827:30716,
-57828:30732,
-57829:30738,
-57830:31014,
-57831:30752,
-57832:31018,
-57833:30789,
-57834:30862,
-57835:30836,
-57836:30854,
-57837:30844,
-57838:30874,
-57839:30860,
-57840:30883,
-57841:30901,
-57842:30890,
-57843:30895,
-57844:30929,
-57845:30918,
-57846:30923,
-57847:30932,
-57848:30910,
-57849:30908,
-57850:30917,
-57851:30922,
-57852:30956,
-57920:30951,
-57921:30938,
-57922:30973,
-57923:30964,
-57924:30983,
-57925:30994,
-57926:30993,
-57927:31001,
-57928:31020,
-57929:31019,
-57930:31040,
-57931:31072,
-57932:31063,
-57933:31071,
-57934:31066,
-57935:31061,
-57936:31059,
-57937:31098,
-57938:31103,
-57939:31114,
-57940:31133,
-57941:31143,
-57942:40779,
-57943:31146,
-57944:31150,
-57945:31155,
-57946:31161,
-57947:31162,
-57948:31177,
-57949:31189,
-57950:31207,
-57951:31212,
-57952:31201,
-57953:31203,
-57954:31240,
-57955:31245,
-57956:31256,
-57957:31257,
-57958:31264,
-57959:31263,
-57960:31104,
-57961:31281,
-57962:31291,
-57963:31294,
-57964:31287,
-57965:31299,
-57966:31319,
-57967:31305,
-57968:31329,
-57969:31330,
-57970:31337,
-57971:40861,
-57972:31344,
-57973:31353,
-57974:31357,
-57975:31368,
-57976:31383,
-57977:31381,
-57978:31384,
-57979:31382,
-57980:31401,
-57981:31432,
-57982:31408,
-57984:31414,
-57985:31429,
-57986:31428,
-57987:31423,
-57988:36995,
-57989:31431,
-57990:31434,
-57991:31437,
-57992:31439,
-57993:31445,
-57994:31443,
-57995:31449,
-57996:31450,
-57997:31453,
-57998:31457,
-57999:31458,
-58000:31462,
-58001:31469,
-58002:31472,
-58003:31490,
-58004:31503,
-58005:31498,
-58006:31494,
-58007:31539,
-58008:31512,
-58009:31513,
-58010:31518,
-58011:31541,
-58012:31528,
-58013:31542,
-58014:31568,
-58015:31610,
-58016:31492,
-58017:31565,
-58018:31499,
-58019:31564,
-58020:31557,
-58021:31605,
-58022:31589,
-58023:31604,
-58024:31591,
-58025:31600,
-58026:31601,
-58027:31596,
-58028:31598,
-58029:31645,
-58030:31640,
-58031:31647,
-58032:31629,
-58033:31644,
-58034:31642,
-58035:31627,
-58036:31634,
-58037:31631,
-58038:31581,
-58039:31641,
-58040:31691,
-58041:31681,
-58042:31692,
-58043:31695,
-58044:31668,
-58045:31686,
-58046:31709,
-58047:31721,
-58048:31761,
-58049:31764,
-58050:31718,
-58051:31717,
-58052:31840,
-58053:31744,
-58054:31751,
-58055:31763,
-58056:31731,
-58057:31735,
-58058:31767,
-58059:31757,
-58060:31734,
-58061:31779,
-58062:31783,
-58063:31786,
-58064:31775,
-58065:31799,
-58066:31787,
-58067:31805,
-58068:31820,
-58069:31811,
-58070:31828,
-58071:31823,
-58072:31808,
-58073:31824,
-58074:31832,
-58075:31839,
-58076:31844,
-58077:31830,
-58078:31845,
-58079:31852,
-58080:31861,
-58081:31875,
-58082:31888,
-58083:31908,
-58084:31917,
-58085:31906,
-58086:31915,
-58087:31905,
-58088:31912,
-58089:31923,
-58090:31922,
-58091:31921,
-58092:31918,
-58093:31929,
-58094:31933,
-58095:31936,
-58096:31941,
-58097:31938,
-58098:31960,
-58099:31954,
-58100:31964,
-58101:31970,
-58102:39739,
-58103:31983,
-58104:31986,
-58105:31988,
-58106:31990,
-58107:31994,
-58108:32006,
-58176:32002,
-58177:32028,
-58178:32021,
-58179:32010,
-58180:32069,
-58181:32075,
-58182:32046,
-58183:32050,
-58184:32063,
-58185:32053,
-58186:32070,
-58187:32115,
-58188:32086,
-58189:32078,
-58190:32114,
-58191:32104,
-58192:32110,
-58193:32079,
-58194:32099,
-58195:32147,
-58196:32137,
-58197:32091,
-58198:32143,
-58199:32125,
-58200:32155,
-58201:32186,
-58202:32174,
-58203:32163,
-58204:32181,
-58205:32199,
-58206:32189,
-58207:32171,
-58208:32317,
-58209:32162,
-58210:32175,
-58211:32220,
-58212:32184,
-58213:32159,
-58214:32176,
-58215:32216,
-58216:32221,
-58217:32228,
-58218:32222,
-58219:32251,
-58220:32242,
-58221:32225,
-58222:32261,
-58223:32266,
-58224:32291,
-58225:32289,
-58226:32274,
-58227:32305,
-58228:32287,
-58229:32265,
-58230:32267,
-58231:32290,
-58232:32326,
-58233:32358,
-58234:32315,
-58235:32309,
-58236:32313,
-58237:32323,
-58238:32311,
-58240:32306,
-58241:32314,
-58242:32359,
-58243:32349,
-58244:32342,
-58245:32350,
-58246:32345,
-58247:32346,
-58248:32377,
-58249:32362,
-58250:32361,
-58251:32380,
-58252:32379,
-58253:32387,
-58254:32213,
-58255:32381,
-58256:36782,
-58257:32383,
-58258:32392,
-58259:32393,
-58260:32396,
-58261:32402,
-58262:32400,
-58263:32403,
-58264:32404,
-58265:32406,
-58266:32398,
-58267:32411,
-58268:32412,
-58269:32568,
-58270:32570,
-58271:32581,
-58272:32588,
-58273:32589,
-58274:32590,
-58275:32592,
-58276:32593,
-58277:32597,
-58278:32596,
-58279:32600,
-58280:32607,
-58281:32608,
-58282:32616,
-58283:32617,
-58284:32615,
-58285:32632,
-58286:32642,
-58287:32646,
-58288:32643,
-58289:32648,
-58290:32647,
-58291:32652,
-58292:32660,
-58293:32670,
-58294:32669,
-58295:32666,
-58296:32675,
-58297:32687,
-58298:32690,
-58299:32697,
-58300:32686,
-58301:32694,
-58302:32696,
-58303:35697,
-58304:32709,
-58305:32710,
-58306:32714,
-58307:32725,
-58308:32724,
-58309:32737,
-58310:32742,
-58311:32745,
-58312:32755,
-58313:32761,
-58314:39132,
-58315:32774,
-58316:32772,
-58317:32779,
-58318:32786,
-58319:32792,
-58320:32793,
-58321:32796,
-58322:32801,
-58323:32808,
-58324:32831,
-58325:32827,
-58326:32842,
-58327:32838,
-58328:32850,
-58329:32856,
-58330:32858,
-58331:32863,
-58332:32866,
-58333:32872,
-58334:32883,
-58335:32882,
-58336:32880,
-58337:32886,
-58338:32889,
-58339:32893,
-58340:32895,
-58341:32900,
-58342:32902,
-58343:32901,
-58344:32923,
-58345:32915,
-58346:32922,
-58347:32941,
-58348:20880,
-58349:32940,
-58350:32987,
-58351:32997,
-58352:32985,
-58353:32989,
-58354:32964,
-58355:32986,
-58356:32982,
-58357:33033,
-58358:33007,
-58359:33009,
-58360:33051,
-58361:33065,
-58362:33059,
-58363:33071,
-58364:33099,
-58432:38539,
-58433:33094,
-58434:33086,
-58435:33107,
-58436:33105,
-58437:33020,
-58438:33137,
-58439:33134,
-58440:33125,
-58441:33126,
-58442:33140,
-58443:33155,
-58444:33160,
-58445:33162,
-58446:33152,
-58447:33154,
-58448:33184,
-58449:33173,
-58450:33188,
-58451:33187,
-58452:33119,
-58453:33171,
-58454:33193,
-58455:33200,
-58456:33205,
-58457:33214,
-58458:33208,
-58459:33213,
-58460:33216,
-58461:33218,
-58462:33210,
-58463:33225,
-58464:33229,
-58465:33233,
-58466:33241,
-58467:33240,
-58468:33224,
-58469:33242,
-58470:33247,
-58471:33248,
-58472:33255,
-58473:33274,
-58474:33275,
-58475:33278,
-58476:33281,
-58477:33282,
-58478:33285,
-58479:33287,
-58480:33290,
-58481:33293,
-58482:33296,
-58483:33302,
-58484:33321,
-58485:33323,
-58486:33336,
-58487:33331,
-58488:33344,
-58489:33369,
-58490:33368,
-58491:33373,
-58492:33370,
-58493:33375,
-58494:33380,
-58496:33378,
-58497:33384,
-58498:33386,
-58499:33387,
-58500:33326,
-58501:33393,
-58502:33399,
-58503:33400,
-58504:33406,
-58505:33421,
-58506:33426,
-58507:33451,
-58508:33439,
-58509:33467,
-58510:33452,
-58511:33505,
-58512:33507,
-58513:33503,
-58514:33490,
-58515:33524,
-58516:33523,
-58517:33530,
-58518:33683,
-58519:33539,
-58520:33531,
-58521:33529,
-58522:33502,
-58523:33542,
-58524:33500,
-58525:33545,
-58526:33497,
-58527:33589,
-58528:33588,
-58529:33558,
-58530:33586,
-58531:33585,
-58532:33600,
-58533:33593,
-58534:33616,
-58535:33605,
-58536:33583,
-58537:33579,
-58538:33559,
-58539:33560,
-58540:33669,
-58541:33690,
-58542:33706,
-58543:33695,
-58544:33698,
-58545:33686,
-58546:33571,
-58547:33678,
-58548:33671,
-58549:33674,
-58550:33660,
-58551:33717,
-58552:33651,
-58553:33653,
-58554:33696,
-58555:33673,
-58556:33704,
-58557:33780,
-58558:33811,
-58559:33771,
-58560:33742,
-58561:33789,
-58562:33795,
-58563:33752,
-58564:33803,
-58565:33729,
-58566:33783,
-58567:33799,
-58568:33760,
-58569:33778,
-58570:33805,
-58571:33826,
-58572:33824,
-58573:33725,
-58574:33848,
-58575:34054,
-58576:33787,
-58577:33901,
-58578:33834,
-58579:33852,
-58580:34138,
-58581:33924,
-58582:33911,
-58583:33899,
-58584:33965,
-58585:33902,
-58586:33922,
-58587:33897,
-58588:33862,
-58589:33836,
-58590:33903,
-58591:33913,
-58592:33845,
-58593:33994,
-58594:33890,
-58595:33977,
-58596:33983,
-58597:33951,
-58598:34009,
-58599:33997,
-58600:33979,
-58601:34010,
-58602:34000,
-58603:33985,
-58604:33990,
-58605:34006,
-58606:33953,
-58607:34081,
-58608:34047,
-58609:34036,
-58610:34071,
-58611:34072,
-58612:34092,
-58613:34079,
-58614:34069,
-58615:34068,
-58616:34044,
-58617:34112,
-58618:34147,
-58619:34136,
-58620:34120,
-58688:34113,
-58689:34306,
-58690:34123,
-58691:34133,
-58692:34176,
-58693:34212,
-58694:34184,
-58695:34193,
-58696:34186,
-58697:34216,
-58698:34157,
-58699:34196,
-58700:34203,
-58701:34282,
-58702:34183,
-58703:34204,
-58704:34167,
-58705:34174,
-58706:34192,
-58707:34249,
-58708:34234,
-58709:34255,
-58710:34233,
-58711:34256,
-58712:34261,
-58713:34269,
-58714:34277,
-58715:34268,
-58716:34297,
-58717:34314,
-58718:34323,
-58719:34315,
-58720:34302,
-58721:34298,
-58722:34310,
-58723:34338,
-58724:34330,
-58725:34352,
-58726:34367,
-58727:34381,
-58728:20053,
-58729:34388,
-58730:34399,
-58731:34407,
-58732:34417,
-58733:34451,
-58734:34467,
-58735:34473,
-58736:34474,
-58737:34443,
-58738:34444,
-58739:34486,
-58740:34479,
-58741:34500,
-58742:34502,
-58743:34480,
-58744:34505,
-58745:34851,
-58746:34475,
-58747:34516,
-58748:34526,
-58749:34537,
-58750:34540,
-58752:34527,
-58753:34523,
-58754:34543,
-58755:34578,
-58756:34566,
-58757:34568,
-58758:34560,
-58759:34563,
-58760:34555,
-58761:34577,
-58762:34569,
-58763:34573,
-58764:34553,
-58765:34570,
-58766:34612,
-58767:34623,
-58768:34615,
-58769:34619,
-58770:34597,
-58771:34601,
-58772:34586,
-58773:34656,
-58774:34655,
-58775:34680,
-58776:34636,
-58777:34638,
-58778:34676,
-58779:34647,
-58780:34664,
-58781:34670,
-58782:34649,
-58783:34643,
-58784:34659,
-58785:34666,
-58786:34821,
-58787:34722,
-58788:34719,
-58789:34690,
-58790:34735,
-58791:34763,
-58792:34749,
-58793:34752,
-58794:34768,
-58795:38614,
-58796:34731,
-58797:34756,
-58798:34739,
-58799:34759,
-58800:34758,
-58801:34747,
-58802:34799,
-58803:34802,
-58804:34784,
-58805:34831,
-58806:34829,
-58807:34814,
-58808:34806,
-58809:34807,
-58810:34830,
-58811:34770,
-58812:34833,
-58813:34838,
-58814:34837,
-58815:34850,
-58816:34849,
-58817:34865,
-58818:34870,
-58819:34873,
-58820:34855,
-58821:34875,
-58822:34884,
-58823:34882,
-58824:34898,
-58825:34905,
-58826:34910,
-58827:34914,
-58828:34923,
-58829:34945,
-58830:34942,
-58831:34974,
-58832:34933,
-58833:34941,
-58834:34997,
-58835:34930,
-58836:34946,
-58837:34967,
-58838:34962,
-58839:34990,
-58840:34969,
-58841:34978,
-58842:34957,
-58843:34980,
-58844:34992,
-58845:35007,
-58846:34993,
-58847:35011,
-58848:35012,
-58849:35028,
-58850:35032,
-58851:35033,
-58852:35037,
-58853:35065,
-58854:35074,
-58855:35068,
-58856:35060,
-58857:35048,
-58858:35058,
-58859:35076,
-58860:35084,
-58861:35082,
-58862:35091,
-58863:35139,
-58864:35102,
-58865:35109,
-58866:35114,
-58867:35115,
-58868:35137,
-58869:35140,
-58870:35131,
-58871:35126,
-58872:35128,
-58873:35148,
-58874:35101,
-58875:35168,
-58876:35166,
-58944:35174,
-58945:35172,
-58946:35181,
-58947:35178,
-58948:35183,
-58949:35188,
-58950:35191,
-58951:35198,
-58952:35203,
-58953:35208,
-58954:35210,
-58955:35219,
-58956:35224,
-58957:35233,
-58958:35241,
-58959:35238,
-58960:35244,
-58961:35247,
-58962:35250,
-58963:35258,
-58964:35261,
-58965:35263,
-58966:35264,
-58967:35290,
-58968:35292,
-58969:35293,
-58970:35303,
-58971:35316,
-58972:35320,
-58973:35331,
-58974:35350,
-58975:35344,
-58976:35340,
-58977:35355,
-58978:35357,
-58979:35365,
-58980:35382,
-58981:35393,
-58982:35419,
-58983:35410,
-58984:35398,
-58985:35400,
-58986:35452,
-58987:35437,
-58988:35436,
-58989:35426,
-58990:35461,
-58991:35458,
-58992:35460,
-58993:35496,
-58994:35489,
-58995:35473,
-58996:35493,
-58997:35494,
-58998:35482,
-58999:35491,
-59000:35524,
-59001:35533,
-59002:35522,
-59003:35546,
-59004:35563,
-59005:35571,
-59006:35559,
-59008:35556,
-59009:35569,
-59010:35604,
-59011:35552,
-59012:35554,
-59013:35575,
-59014:35550,
-59015:35547,
-59016:35596,
-59017:35591,
-59018:35610,
-59019:35553,
-59020:35606,
-59021:35600,
-59022:35607,
-59023:35616,
-59024:35635,
-59025:38827,
-59026:35622,
-59027:35627,
-59028:35646,
-59029:35624,
-59030:35649,
-59031:35660,
-59032:35663,
-59033:35662,
-59034:35657,
-59035:35670,
-59036:35675,
-59037:35674,
-59038:35691,
-59039:35679,
-59040:35692,
-59041:35695,
-59042:35700,
-59043:35709,
-59044:35712,
-59045:35724,
-59046:35726,
-59047:35730,
-59048:35731,
-59049:35734,
-59050:35737,
-59051:35738,
-59052:35898,
-59053:35905,
-59054:35903,
-59055:35912,
-59056:35916,
-59057:35918,
-59058:35920,
-59059:35925,
-59060:35938,
-59061:35948,
-59062:35960,
-59063:35962,
-59064:35970,
-59065:35977,
-59066:35973,
-59067:35978,
-59068:35981,
-59069:35982,
-59070:35988,
-59071:35964,
-59072:35992,
-59073:25117,
-59074:36013,
-59075:36010,
-59076:36029,
-59077:36018,
-59078:36019,
-59079:36014,
-59080:36022,
-59081:36040,
-59082:36033,
-59083:36068,
-59084:36067,
-59085:36058,
-59086:36093,
-59087:36090,
-59088:36091,
-59089:36100,
-59090:36101,
-59091:36106,
-59092:36103,
-59093:36111,
-59094:36109,
-59095:36112,
-59096:40782,
-59097:36115,
-59098:36045,
-59099:36116,
-59100:36118,
-59101:36199,
-59102:36205,
-59103:36209,
-59104:36211,
-59105:36225,
-59106:36249,
-59107:36290,
-59108:36286,
-59109:36282,
-59110:36303,
-59111:36314,
-59112:36310,
-59113:36300,
-59114:36315,
-59115:36299,
-59116:36330,
-59117:36331,
-59118:36319,
-59119:36323,
-59120:36348,
-59121:36360,
-59122:36361,
-59123:36351,
-59124:36381,
-59125:36382,
-59126:36368,
-59127:36383,
-59128:36418,
-59129:36405,
-59130:36400,
-59131:36404,
-59132:36426,
-59200:36423,
-59201:36425,
-59202:36428,
-59203:36432,
-59204:36424,
-59205:36441,
-59206:36452,
-59207:36448,
-59208:36394,
-59209:36451,
-59210:36437,
-59211:36470,
-59212:36466,
-59213:36476,
-59214:36481,
-59215:36487,
-59216:36485,
-59217:36484,
-59218:36491,
-59219:36490,
-59220:36499,
-59221:36497,
-59222:36500,
-59223:36505,
-59224:36522,
-59225:36513,
-59226:36524,
-59227:36528,
-59228:36550,
-59229:36529,
-59230:36542,
-59231:36549,
-59232:36552,
-59233:36555,
-59234:36571,
-59235:36579,
-59236:36604,
-59237:36603,
-59238:36587,
-59239:36606,
-59240:36618,
-59241:36613,
-59242:36629,
-59243:36626,
-59244:36633,
-59245:36627,
-59246:36636,
-59247:36639,
-59248:36635,
-59249:36620,
-59250:36646,
-59251:36659,
-59252:36667,
-59253:36665,
-59254:36677,
-59255:36674,
-59256:36670,
-59257:36684,
-59258:36681,
-59259:36678,
-59260:36686,
-59261:36695,
-59262:36700,
-59264:36706,
-59265:36707,
-59266:36708,
-59267:36764,
-59268:36767,
-59269:36771,
-59270:36781,
-59271:36783,
-59272:36791,
-59273:36826,
-59274:36837,
-59275:36834,
-59276:36842,
-59277:36847,
-59278:36999,
-59279:36852,
-59280:36869,
-59281:36857,
-59282:36858,
-59283:36881,
-59284:36885,
-59285:36897,
-59286:36877,
-59287:36894,
-59288:36886,
-59289:36875,
-59290:36903,
-59291:36918,
-59292:36917,
-59293:36921,
-59294:36856,
-59295:36943,
-59296:36944,
-59297:36945,
-59298:36946,
-59299:36878,
-59300:36937,
-59301:36926,
-59302:36950,
-59303:36952,
-59304:36958,
-59305:36968,
-59306:36975,
-59307:36982,
-59308:38568,
-59309:36978,
-59310:36994,
-59311:36989,
-59312:36993,
-59313:36992,
-59314:37002,
-59315:37001,
-59316:37007,
-59317:37032,
-59318:37039,
-59319:37041,
-59320:37045,
-59321:37090,
-59322:37092,
-59323:25160,
-59324:37083,
-59325:37122,
-59326:37138,
-59327:37145,
-59328:37170,
-59329:37168,
-59330:37194,
-59331:37206,
-59332:37208,
-59333:37219,
-59334:37221,
-59335:37225,
-59336:37235,
-59337:37234,
-59338:37259,
-59339:37257,
-59340:37250,
-59341:37282,
-59342:37291,
-59343:37295,
-59344:37290,
-59345:37301,
-59346:37300,
-59347:37306,
-59348:37312,
-59349:37313,
-59350:37321,
-59351:37323,
-59352:37328,
-59353:37334,
-59354:37343,
-59355:37345,
-59356:37339,
-59357:37372,
-59358:37365,
-59359:37366,
-59360:37406,
-59361:37375,
-59362:37396,
-59363:37420,
-59364:37397,
-59365:37393,
-59366:37470,
-59367:37463,
-59368:37445,
-59369:37449,
-59370:37476,
-59371:37448,
-59372:37525,
-59373:37439,
-59374:37451,
-59375:37456,
-59376:37532,
-59377:37526,
-59378:37523,
-59379:37531,
-59380:37466,
-59381:37583,
-59382:37561,
-59383:37559,
-59384:37609,
-59385:37647,
-59386:37626,
-59387:37700,
-59388:37678,
-59456:37657,
-59457:37666,
-59458:37658,
-59459:37667,
-59460:37690,
-59461:37685,
-59462:37691,
-59463:37724,
-59464:37728,
-59465:37756,
-59466:37742,
-59467:37718,
-59468:37808,
-59469:37804,
-59470:37805,
-59471:37780,
-59472:37817,
-59473:37846,
-59474:37847,
-59475:37864,
-59476:37861,
-59477:37848,
-59478:37827,
-59479:37853,
-59480:37840,
-59481:37832,
-59482:37860,
-59483:37914,
-59484:37908,
-59485:37907,
-59486:37891,
-59487:37895,
-59488:37904,
-59489:37942,
-59490:37931,
-59491:37941,
-59492:37921,
-59493:37946,
-59494:37953,
-59495:37970,
-59496:37956,
-59497:37979,
-59498:37984,
-59499:37986,
-59500:37982,
-59501:37994,
-59502:37417,
-59503:38000,
-59504:38005,
-59505:38007,
-59506:38013,
-59507:37978,
-59508:38012,
-59509:38014,
-59510:38017,
-59511:38015,
-59512:38274,
-59513:38279,
-59514:38282,
-59515:38292,
-59516:38294,
-59517:38296,
-59518:38297,
-59520:38304,
-59521:38312,
-59522:38311,
-59523:38317,
-59524:38332,
-59525:38331,
-59526:38329,
-59527:38334,
-59528:38346,
-59529:28662,
-59530:38339,
-59531:38349,
-59532:38348,
-59533:38357,
-59534:38356,
-59535:38358,
-59536:38364,
-59537:38369,
-59538:38373,
-59539:38370,
-59540:38433,
-59541:38440,
-59542:38446,
-59543:38447,
-59544:38466,
-59545:38476,
-59546:38479,
-59547:38475,
-59548:38519,
-59549:38492,
-59550:38494,
-59551:38493,
-59552:38495,
-59553:38502,
-59554:38514,
-59555:38508,
-59556:38541,
-59557:38552,
-59558:38549,
-59559:38551,
-59560:38570,
-59561:38567,
-59562:38577,
-59563:38578,
-59564:38576,
-59565:38580,
-59566:38582,
-59567:38584,
-59568:38585,
-59569:38606,
-59570:38603,
-59571:38601,
-59572:38605,
-59573:35149,
-59574:38620,
-59575:38669,
-59576:38613,
-59577:38649,
-59578:38660,
-59579:38662,
-59580:38664,
-59581:38675,
-59582:38670,
-59583:38673,
-59584:38671,
-59585:38678,
-59586:38681,
-59587:38692,
-59588:38698,
-59589:38704,
-59590:38713,
-59591:38717,
-59592:38718,
-59593:38724,
-59594:38726,
-59595:38728,
-59596:38722,
-59597:38729,
-59598:38748,
-59599:38752,
-59600:38756,
-59601:38758,
-59602:38760,
-59603:21202,
-59604:38763,
-59605:38769,
-59606:38777,
-59607:38789,
-59608:38780,
-59609:38785,
-59610:38778,
-59611:38790,
-59612:38795,
-59613:38799,
-59614:38800,
-59615:38812,
-59616:38824,
-59617:38822,
-59618:38819,
-59619:38835,
-59620:38836,
-59621:38851,
-59622:38854,
-59623:38856,
-59624:38859,
-59625:38876,
-59626:38893,
-59627:40783,
-59628:38898,
-59629:31455,
-59630:38902,
-59631:38901,
-59632:38927,
-59633:38924,
-59634:38968,
-59635:38948,
-59636:38945,
-59637:38967,
-59638:38973,
-59639:38982,
-59640:38991,
-59641:38987,
-59642:39019,
-59643:39023,
-59644:39024,
-59712:39025,
-59713:39028,
-59714:39027,
-59715:39082,
-59716:39087,
-59717:39089,
-59718:39094,
-59719:39108,
-59720:39107,
-59721:39110,
-59722:39145,
-59723:39147,
-59724:39171,
-59725:39177,
-59726:39186,
-59727:39188,
-59728:39192,
-59729:39201,
-59730:39197,
-59731:39198,
-59732:39204,
-59733:39200,
-59734:39212,
-59735:39214,
-59736:39229,
-59737:39230,
-59738:39234,
-59739:39241,
-59740:39237,
-59741:39248,
-59742:39243,
-59743:39249,
-59744:39250,
-59745:39244,
-59746:39253,
-59747:39319,
-59748:39320,
-59749:39333,
-59750:39341,
-59751:39342,
-59752:39356,
-59753:39391,
-59754:39387,
-59755:39389,
-59756:39384,
-59757:39377,
-59758:39405,
-59759:39406,
-59760:39409,
-59761:39410,
-59762:39419,
-59763:39416,
-59764:39425,
-59765:39439,
-59766:39429,
-59767:39394,
-59768:39449,
-59769:39467,
-59770:39479,
-59771:39493,
-59772:39490,
-59773:39488,
-59774:39491,
-59776:39486,
-59777:39509,
-59778:39501,
-59779:39515,
-59780:39511,
-59781:39519,
-59782:39522,
-59783:39525,
-59784:39524,
-59785:39529,
-59786:39531,
-59787:39530,
-59788:39597,
-59789:39600,
-59790:39612,
-59791:39616,
-59792:39631,
-59793:39633,
-59794:39635,
-59795:39636,
-59796:39646,
-59797:39647,
-59798:39650,
-59799:39651,
-59800:39654,
-59801:39663,
-59802:39659,
-59803:39662,
-59804:39668,
-59805:39665,
-59806:39671,
-59807:39675,
-59808:39686,
-59809:39704,
-59810:39706,
-59811:39711,
-59812:39714,
-59813:39715,
-59814:39717,
-59815:39719,
-59816:39720,
-59817:39721,
-59818:39722,
-59819:39726,
-59820:39727,
-59821:39730,
-59822:39748,
-59823:39747,
-59824:39759,
-59825:39757,
-59826:39758,
-59827:39761,
-59828:39768,
-59829:39796,
-59830:39827,
-59831:39811,
-59832:39825,
-59833:39830,
-59834:39831,
-59835:39839,
-59836:39840,
-59837:39848,
-59838:39860,
-59839:39872,
-59840:39882,
-59841:39865,
-59842:39878,
-59843:39887,
-59844:39889,
-59845:39890,
-59846:39907,
-59847:39906,
-59848:39908,
-59849:39892,
-59850:39905,
-59851:39994,
-59852:39922,
-59853:39921,
-59854:39920,
-59855:39957,
-59856:39956,
-59857:39945,
-59858:39955,
-59859:39948,
-59860:39942,
-59861:39944,
-59862:39954,
-59863:39946,
-59864:39940,
-59865:39982,
-59866:39963,
-59867:39973,
-59868:39972,
-59869:39969,
-59870:39984,
-59871:40007,
-59872:39986,
-59873:40006,
-59874:39998,
-59875:40026,
-59876:40032,
-59877:40039,
-59878:40054,
-59879:40056,
-59880:40167,
-59881:40172,
-59882:40176,
-59883:40201,
-59884:40200,
-59885:40171,
-59886:40195,
-59887:40198,
-59888:40234,
-59889:40230,
-59890:40367,
-59891:40227,
-59892:40223,
-59893:40260,
-59894:40213,
-59895:40210,
-59896:40257,
-59897:40255,
-59898:40254,
-59899:40262,
-59900:40264,
-59968:40285,
-59969:40286,
-59970:40292,
-59971:40273,
-59972:40272,
-59973:40281,
-59974:40306,
-59975:40329,
-59976:40327,
-59977:40363,
-59978:40303,
-59979:40314,
-59980:40346,
-59981:40356,
-59982:40361,
-59983:40370,
-59984:40388,
-59985:40385,
-59986:40379,
-59987:40376,
-59988:40378,
-59989:40390,
-59990:40399,
-59991:40386,
-59992:40409,
-59993:40403,
-59994:40440,
-59995:40422,
-59996:40429,
-59997:40431,
-59998:40445,
-59999:40474,
-60000:40475,
-60001:40478,
-60002:40565,
-60003:40569,
-60004:40573,
-60005:40577,
-60006:40584,
-60007:40587,
-60008:40588,
-60009:40594,
-60010:40597,
-60011:40593,
-60012:40605,
-60013:40613,
-60014:40617,
-60015:40632,
-60016:40618,
-60017:40621,
-60018:38753,
-60019:40652,
-60020:40654,
-60021:40655,
-60022:40656,
-60023:40660,
-60024:40668,
-60025:40670,
-60026:40669,
-60027:40672,
-60028:40677,
-60029:40680,
-60030:40687,
-60032:40692,
-60033:40694,
-60034:40695,
-60035:40697,
-60036:40699,
-60037:40700,
-60038:40701,
-60039:40711,
-60040:40712,
-60041:30391,
-60042:40725,
-60043:40737,
-60044:40748,
-60045:40766,
-60046:40778,
-60047:40786,
-60048:40788,
-60049:40803,
-60050:40799,
-60051:40800,
-60052:40801,
-60053:40806,
-60054:40807,
-60055:40812,
-60056:40810,
-60057:40823,
-60058:40818,
-60059:40822,
-60060:40853,
-60061:40860,
-60062:40864,
-60063:22575,
-60064:27079,
-60065:36953,
-60066:29796,
-60067:20956,
-60068:29081,
-60736:32394,
-60737:35100,
-60738:37704,
-60739:37512,
-60740:34012,
-60741:20425,
-60742:28859,
-60743:26161,
-60744:26824,
-60745:37625,
-60746:26363,
-60747:24389,
-60748:20008,
-60749:20193,
-60750:20220,
-60751:20224,
-60752:20227,
-60753:20281,
-60754:20310,
-60755:20370,
-60756:20362,
-60757:20378,
-60758:20372,
-60759:20429,
-60760:20544,
-60761:20514,
-60762:20479,
-60763:20510,
-60764:20550,
-60765:20592,
-60766:20546,
-60767:20628,
-60768:20724,
-60769:20696,
-60770:20810,
-60771:20836,
-60772:20893,
-60773:20926,
-60774:20972,
-60775:21013,
-60776:21148,
-60777:21158,
-60778:21184,
-60779:21211,
-60780:21248,
-60781:21255,
-60782:21284,
-60783:21362,
-60784:21395,
-60785:21426,
-60786:21469,
-60787:64014,
-60788:21660,
-60789:21642,
-60790:21673,
-60791:21759,
-60792:21894,
-60793:22361,
-60794:22373,
-60795:22444,
-60796:22472,
-60797:22471,
-60798:64015,
-60800:64016,
-60801:22686,
-60802:22706,
-60803:22795,
-60804:22867,
-60805:22875,
-60806:22877,
-60807:22883,
-60808:22948,
-60809:22970,
-60810:23382,
-60811:23488,
-60812:29999,
-60813:23512,
-60814:23532,
-60815:23582,
-60816:23718,
-60817:23738,
-60818:23797,
-60819:23847,
-60820:23891,
-60821:64017,
-60822:23874,
-60823:23917,
-60824:23992,
-60825:23993,
-60826:24016,
-60827:24353,
-60828:24372,
-60829:24423,
-60830:24503,
-60831:24542,
-60832:24669,
-60833:24709,
-60834:24714,
-60835:24798,
-60836:24789,
-60837:24864,
-60838:24818,
-60839:24849,
-60840:24887,
-60841:24880,
-60842:24984,
-60843:25107,
-60844:25254,
-60845:25589,
-60846:25696,
-60847:25757,
-60848:25806,
-60849:25934,
-60850:26112,
-60851:26133,
-60852:26171,
-60853:26121,
-60854:26158,
-60855:26142,
-60856:26148,
-60857:26213,
-60858:26199,
-60859:26201,
-60860:64018,
-60861:26227,
-60862:26265,
-60863:26272,
-60864:26290,
-60865:26303,
-60866:26362,
-60867:26382,
-60868:63785,
-60869:26470,
-60870:26555,
-60871:26706,
-60872:26560,
-60873:26625,
-60874:26692,
-60875:26831,
-60876:64019,
-60877:26984,
-60878:64020,
-60879:27032,
-60880:27106,
-60881:27184,
-60882:27243,
-60883:27206,
-60884:27251,
-60885:27262,
-60886:27362,
-60887:27364,
-60888:27606,
-60889:27711,
-60890:27740,
-60891:27782,
-60892:27759,
-60893:27866,
-60894:27908,
-60895:28039,
-60896:28015,
-60897:28054,
-60898:28076,
-60899:28111,
-60900:28152,
-60901:28146,
-60902:28156,
-60903:28217,
-60904:28252,
-60905:28199,
-60906:28220,
-60907:28351,
-60908:28552,
-60909:28597,
-60910:28661,
-60911:28677,
-60912:28679,
-60913:28712,
-60914:28805,
-60915:28843,
-60916:28943,
-60917:28932,
-60918:29020,
-60919:28998,
-60920:28999,
-60921:64021,
-60922:29121,
-60923:29182,
-60924:29361,
-60992:29374,
-60993:29476,
-60994:64022,
-60995:29559,
-60996:29629,
-60997:29641,
-60998:29654,
-60999:29667,
-61000:29650,
-61001:29703,
-61002:29685,
-61003:29734,
-61004:29738,
-61005:29737,
-61006:29742,
-61007:29794,
-61008:29833,
-61009:29855,
-61010:29953,
-61011:30063,
-61012:30338,
-61013:30364,
-61014:30366,
-61015:30363,
-61016:30374,
-61017:64023,
-61018:30534,
-61019:21167,
-61020:30753,
-61021:30798,
-61022:30820,
-61023:30842,
-61024:31024,
-61025:64024,
-61026:64025,
-61027:64026,
-61028:31124,
-61029:64027,
-61030:31131,
-61031:31441,
-61032:31463,
-61033:64028,
-61034:31467,
-61035:31646,
-61036:64029,
-61037:32072,
-61038:32092,
-61039:32183,
-61040:32160,
-61041:32214,
-61042:32338,
-61043:32583,
-61044:32673,
-61045:64030,
-61046:33537,
-61047:33634,
-61048:33663,
-61049:33735,
-61050:33782,
-61051:33864,
-61052:33972,
-61053:34131,
-61054:34137,
-61056:34155,
-61057:64031,
-61058:34224,
-61059:64032,
-61060:64033,
-61061:34823,
-61062:35061,
-61063:35346,
-61064:35383,
-61065:35449,
-61066:35495,
-61067:35518,
-61068:35551,
-61069:64034,
-61070:35574,
-61071:35667,
-61072:35711,
-61073:36080,
-61074:36084,
-61075:36114,
-61076:36214,
-61077:64035,
-61078:36559,
-61079:64036,
-61080:64037,
-61081:36967,
-61082:37086,
-61083:64038,
-61084:37141,
-61085:37159,
-61086:37338,
-61087:37335,
-61088:37342,
-61089:37357,
-61090:37358,
-61091:37348,
-61092:37349,
-61093:37382,
-61094:37392,
-61095:37386,
-61096:37434,
-61097:37440,
-61098:37436,
-61099:37454,
-61100:37465,
-61101:37457,
-61102:37433,
-61103:37479,
-61104:37543,
-61105:37495,
-61106:37496,
-61107:37607,
-61108:37591,
-61109:37593,
-61110:37584,
-61111:64039,
-61112:37589,
-61113:37600,
-61114:37587,
-61115:37669,
-61116:37665,
-61117:37627,
-61118:64040,
-61119:37662,
-61120:37631,
-61121:37661,
-61122:37634,
-61123:37744,
-61124:37719,
-61125:37796,
-61126:37830,
-61127:37854,
-61128:37880,
-61129:37937,
-61130:37957,
-61131:37960,
-61132:38290,
-61133:63964,
-61134:64041,
-61135:38557,
-61136:38575,
-61137:38707,
-61138:38715,
-61139:38723,
-61140:38733,
-61141:38735,
-61142:38737,
-61143:38741,
-61144:38999,
-61145:39013,
-61146:64042,
-61147:64043,
-61148:39207,
-61149:64044,
-61150:39326,
-61151:39502,
-61152:39641,
-61153:39644,
-61154:39797,
-61155:39794,
-61156:39823,
-61157:39857,
-61158:39867,
-61159:39936,
-61160:40304,
-61161:40299,
-61162:64045,
-61163:40473,
-61164:40657,
-61167:8560,
-61168:8561,
-61169:8562,
-61170:8563,
-61171:8564,
-61172:8565,
-61173:8566,
-61174:8567,
-61175:8568,
-61176:8569,
-61177:65506,
-61178:65508,
-61179:65287,
-61180:65282,
-61504:57344,
-61505:57345,
-61506:57346,
-61507:57347,
-61508:57348,
-61509:57349,
-61510:57350,
-61511:57351,
-61512:57352,
-61513:57353,
-61514:57354,
-61515:57355,
-61516:57356,
-61517:57357,
-61518:57358,
-61519:57359,
-61520:57360,
-61521:57361,
-61522:57362,
-61523:57363,
-61524:57364,
-61525:57365,
-61526:57366,
-61527:57367,
-61528:57368,
-61529:57369,
-61530:57370,
-61531:57371,
-61532:57372,
-61533:57373,
-61534:57374,
-61535:57375,
-61536:57376,
-61537:57377,
-61538:57378,
-61539:57379,
-61540:57380,
-61541:57381,
-61542:57382,
-61543:57383,
-61544:57384,
-61545:57385,
-61546:57386,
-61547:57387,
-61548:57388,
-61549:57389,
-61550:57390,
-61551:57391,
-61552:57392,
-61553:57393,
-61554:57394,
-61555:57395,
-61556:57396,
-61557:57397,
-61558:57398,
-61559:57399,
-61560:57400,
-61561:57401,
-61562:57402,
-61563:57403,
-61564:57404,
-61565:57405,
-61566:57406,
-61568:57407,
-61569:57408,
-61570:57409,
-61571:57410,
-61572:57411,
-61573:57412,
-61574:57413,
-61575:57414,
-61576:57415,
-61577:57416,
-61578:57417,
-61579:57418,
-61580:57419,
-61581:57420,
-61582:57421,
-61583:57422,
-61584:57423,
-61585:57424,
-61586:57425,
-61587:57426,
-61588:57427,
-61589:57428,
-61590:57429,
-61591:57430,
-61592:57431,
-61593:57432,
-61594:57433,
-61595:57434,
-61596:57435,
-61597:57436,
-61598:57437,
-61599:57438,
-61600:57439,
-61601:57440,
-61602:57441,
-61603:57442,
-61604:57443,
-61605:57444,
-61606:57445,
-61607:57446,
-61608:57447,
-61609:57448,
-61610:57449,
-61611:57450,
-61612:57451,
-61613:57452,
-61614:57453,
-61615:57454,
-61616:57455,
-61617:57456,
-61618:57457,
-61619:57458,
-61620:57459,
-61621:57460,
-61622:57461,
-61623:57462,
-61624:57463,
-61625:57464,
-61626:57465,
-61627:57466,
-61628:57467,
-61629:57468,
-61630:57469,
-61631:57470,
-61632:57471,
-61633:57472,
-61634:57473,
-61635:57474,
-61636:57475,
-61637:57476,
-61638:57477,
-61639:57478,
-61640:57479,
-61641:57480,
-61642:57481,
-61643:57482,
-61644:57483,
-61645:57484,
-61646:57485,
-61647:57486,
-61648:57487,
-61649:57488,
-61650:57489,
-61651:57490,
-61652:57491,
-61653:57492,
-61654:57493,
-61655:57494,
-61656:57495,
-61657:57496,
-61658:57497,
-61659:57498,
-61660:57499,
-61661:57500,
-61662:57501,
-61663:57502,
-61664:57503,
-61665:57504,
-61666:57505,
-61667:57506,
-61668:57507,
-61669:57508,
-61670:57509,
-61671:57510,
-61672:57511,
-61673:57512,
-61674:57513,
-61675:57514,
-61676:57515,
-61677:57516,
-61678:57517,
-61679:57518,
-61680:57519,
-61681:57520,
-61682:57521,
-61683:57522,
-61684:57523,
-61685:57524,
-61686:57525,
-61687:57526,
-61688:57527,
-61689:57528,
-61690:57529,
-61691:57530,
-61692:57531,
-61760:57532,
-61761:57533,
-61762:57534,
-61763:57535,
-61764:57536,
-61765:57537,
-61766:57538,
-61767:57539,
-61768:57540,
-61769:57541,
-61770:57542,
-61771:57543,
-61772:57544,
-61773:57545,
-61774:57546,
-61775:57547,
-61776:57548,
-61777:57549,
-61778:57550,
-61779:57551,
-61780:57552,
-61781:57553,
-61782:57554,
-61783:57555,
-61784:57556,
-61785:57557,
-61786:57558,
-61787:57559,
-61788:57560,
-61789:57561,
-61790:57562,
-61791:57563,
-61792:57564,
-61793:57565,
-61794:57566,
-61795:57567,
-61796:57568,
-61797:57569,
-61798:57570,
-61799:57571,
-61800:57572,
-61801:57573,
-61802:57574,
-61803:57575,
-61804:57576,
-61805:57577,
-61806:57578,
-61807:57579,
-61808:57580,
-61809:57581,
-61810:57582,
-61811:57583,
-61812:57584,
-61813:57585,
-61814:57586,
-61815:57587,
-61816:57588,
-61817:57589,
-61818:57590,
-61819:57591,
-61820:57592,
-61821:57593,
-61822:57594,
-61824:57595,
-61825:57596,
-61826:57597,
-61827:57598,
-61828:57599,
-61829:57600,
-61830:57601,
-61831:57602,
-61832:57603,
-61833:57604,
-61834:57605,
-61835:57606,
-61836:57607,
-61837:57608,
-61838:57609,
-61839:57610,
-61840:57611,
-61841:57612,
-61842:57613,
-61843:57614,
-61844:57615,
-61845:57616,
-61846:57617,
-61847:57618,
-61848:57619,
-61849:57620,
-61850:57621,
-61851:57622,
-61852:57623,
-61853:57624,
-61854:57625,
-61855:57626,
-61856:57627,
-61857:57628,
-61858:57629,
-61859:57630,
-61860:57631,
-61861:57632,
-61862:57633,
-61863:57634,
-61864:57635,
-61865:57636,
-61866:57637,
-61867:57638,
-61868:57639,
-61869:57640,
-61870:57641,
-61871:57642,
-61872:57643,
-61873:57644,
-61874:57645,
-61875:57646,
-61876:57647,
-61877:57648,
-61878:57649,
-61879:57650,
-61880:57651,
-61881:57652,
-61882:57653,
-61883:57654,
-61884:57655,
-61885:57656,
-61886:57657,
-61887:57658,
-61888:57659,
-61889:57660,
-61890:57661,
-61891:57662,
-61892:57663,
-61893:57664,
-61894:57665,
-61895:57666,
-61896:57667,
-61897:57668,
-61898:57669,
-61899:57670,
-61900:57671,
-61901:57672,
-61902:57673,
-61903:57674,
-61904:57675,
-61905:57676,
-61906:57677,
-61907:57678,
-61908:57679,
-61909:57680,
-61910:57681,
-61911:57682,
-61912:57683,
-61913:57684,
-61914:57685,
-61915:57686,
-61916:57687,
-61917:57688,
-61918:57689,
-61919:57690,
-61920:57691,
-61921:57692,
-61922:57693,
-61923:57694,
-61924:57695,
-61925:57696,
-61926:57697,
-61927:57698,
-61928:57699,
-61929:57700,
-61930:57701,
-61931:57702,
-61932:57703,
-61933:57704,
-61934:57705,
-61935:57706,
-61936:57707,
-61937:57708,
-61938:57709,
-61939:57710,
-61940:57711,
-61941:57712,
-61942:57713,
-61943:57714,
-61944:57715,
-61945:57716,
-61946:57717,
-61947:57718,
-61948:57719,
-62016:57720,
-62017:57721,
-62018:57722,
-62019:57723,
-62020:57724,
-62021:57725,
-62022:57726,
-62023:57727,
-62024:57728,
-62025:57729,
-62026:57730,
-62027:57731,
-62028:57732,
-62029:57733,
-62030:57734,
-62031:57735,
-62032:57736,
-62033:57737,
-62034:57738,
-62035:57739,
-62036:57740,
-62037:57741,
-62038:57742,
-62039:57743,
-62040:57744,
-62041:57745,
-62042:57746,
-62043:57747,
-62044:57748,
-62045:57749,
-62046:57750,
-62047:57751,
-62048:57752,
-62049:57753,
-62050:57754,
-62051:57755,
-62052:57756,
-62053:57757,
-62054:57758,
-62055:57759,
-62056:57760,
-62057:57761,
-62058:57762,
-62059:57763,
-62060:57764,
-62061:57765,
-62062:57766,
-62063:57767,
-62064:57768,
-62065:57769,
-62066:57770,
-62067:57771,
-62068:57772,
-62069:57773,
-62070:57774,
-62071:57775,
-62072:57776,
-62073:57777,
-62074:57778,
-62075:57779,
-62076:57780,
-62077:57781,
-62078:57782,
-62080:57783,
-62081:57784,
-62082:57785,
-62083:57786,
-62084:57787,
-62085:57788,
-62086:57789,
-62087:57790,
-62088:57791,
-62089:57792,
-62090:57793,
-62091:57794,
-62092:57795,
-62093:57796,
-62094:57797,
-62095:57798,
-62096:57799,
-62097:57800,
-62098:57801,
-62099:57802,
-62100:57803,
-62101:57804,
-62102:57805,
-62103:57806,
-62104:57807,
-62105:57808,
-62106:57809,
-62107:57810,
-62108:57811,
-62109:57812,
-62110:57813,
-62111:57814,
-62112:57815,
-62113:57816,
-62114:57817,
-62115:57818,
-62116:57819,
-62117:57820,
-62118:57821,
-62119:57822,
-62120:57823,
-62121:57824,
-62122:57825,
-62123:57826,
-62124:57827,
-62125:57828,
-62126:57829,
-62127:57830,
-62128:57831,
-62129:57832,
-62130:57833,
-62131:57834,
-62132:57835,
-62133:57836,
-62134:57837,
-62135:57838,
-62136:57839,
-62137:57840,
-62138:57841,
-62139:57842,
-62140:57843,
-62141:57844,
-62142:57845,
-62143:57846,
-62144:57847,
-62145:57848,
-62146:57849,
-62147:57850,
-62148:57851,
-62149:57852,
-62150:57853,
-62151:57854,
-62152:57855,
-62153:57856,
-62154:57857,
-62155:57858,
-62156:57859,
-62157:57860,
-62158:57861,
-62159:57862,
-62160:57863,
-62161:57864,
-62162:57865,
-62163:57866,
-62164:57867,
-62165:57868,
-62166:57869,
-62167:57870,
-62168:57871,
-62169:57872,
-62170:57873,
-62171:57874,
-62172:57875,
-62173:57876,
-62174:57877,
-62175:57878,
-62176:57879,
-62177:57880,
-62178:57881,
-62179:57882,
-62180:57883,
-62181:57884,
-62182:57885,
-62183:57886,
-62184:57887,
-62185:57888,
-62186:57889,
-62187:57890,
-62188:57891,
-62189:57892,
-62190:57893,
-62191:57894,
-62192:57895,
-62193:57896,
-62194:57897,
-62195:57898,
-62196:57899,
-62197:57900,
-62198:57901,
-62199:57902,
-62200:57903,
-62201:57904,
-62202:57905,
-62203:57906,
-62204:57907,
-62272:57908,
-62273:57909,
-62274:57910,
-62275:57911,
-62276:57912,
-62277:57913,
-62278:57914,
-62279:57915,
-62280:57916,
-62281:57917,
-62282:57918,
-62283:57919,
-62284:57920,
-62285:57921,
-62286:57922,
-62287:57923,
-62288:57924,
-62289:57925,
-62290:57926,
-62291:57927,
-62292:57928,
-62293:57929,
-62294:57930,
-62295:57931,
-62296:57932,
-62297:57933,
-62298:57934,
-62299:57935,
-62300:57936,
-62301:57937,
-62302:57938,
-62303:57939,
-62304:57940,
-62305:57941,
-62306:57942,
-62307:57943,
-62308:57944,
-62309:57945,
-62310:57946,
-62311:57947,
-62312:57948,
-62313:57949,
-62314:57950,
-62315:57951,
-62316:57952,
-62317:57953,
-62318:57954,
-62319:57955,
-62320:57956,
-62321:57957,
-62322:57958,
-62323:57959,
-62324:57960,
-62325:57961,
-62326:57962,
-62327:57963,
-62328:57964,
-62329:57965,
-62330:57966,
-62331:57967,
-62332:57968,
-62333:57969,
-62334:57970,
-62336:57971,
-62337:57972,
-62338:57973,
-62339:57974,
-62340:57975,
-62341:57976,
-62342:57977,
-62343:57978,
-62344:57979,
-62345:57980,
-62346:57981,
-62347:57982,
-62348:57983,
-62349:57984,
-62350:57985,
-62351:57986,
-62352:57987,
-62353:57988,
-62354:57989,
-62355:57990,
-62356:57991,
-62357:57992,
-62358:57993,
-62359:57994,
-62360:57995,
-62361:57996,
-62362:57997,
-62363:57998,
-62364:57999,
-62365:58000,
-62366:58001,
-62367:58002,
-62368:58003,
-62369:58004,
-62370:58005,
-62371:58006,
-62372:58007,
-62373:58008,
-62374:58009,
-62375:58010,
-62376:58011,
-62377:58012,
-62378:58013,
-62379:58014,
-62380:58015,
-62381:58016,
-62382:58017,
-62383:58018,
-62384:58019,
-62385:58020,
-62386:58021,
-62387:58022,
-62388:58023,
-62389:58024,
-62390:58025,
-62391:58026,
-62392:58027,
-62393:58028,
-62394:58029,
-62395:58030,
-62396:58031,
-62397:58032,
-62398:58033,
-62399:58034,
-62400:58035,
-62401:58036,
-62402:58037,
-62403:58038,
-62404:58039,
-62405:58040,
-62406:58041,
-62407:58042,
-62408:58043,
-62409:58044,
-62410:58045,
-62411:58046,
-62412:58047,
-62413:58048,
-62414:58049,
-62415:58050,
-62416:58051,
-62417:58052,
-62418:58053,
-62419:58054,
-62420:58055,
-62421:58056,
-62422:58057,
-62423:58058,
-62424:58059,
-62425:58060,
-62426:58061,
-62427:58062,
-62428:58063,
-62429:58064,
-62430:58065,
-62431:58066,
-62432:58067,
-62433:58068,
-62434:58069,
-62435:58070,
-62436:58071,
-62437:58072,
-62438:58073,
-62439:58074,
-62440:58075,
-62441:58076,
-62442:58077,
-62443:58078,
-62444:58079,
-62445:58080,
-62446:58081,
-62447:58082,
-62448:58083,
-62449:58084,
-62450:58085,
-62451:58086,
-62452:58087,
-62453:58088,
-62454:58089,
-62455:58090,
-62456:58091,
-62457:58092,
-62458:58093,
-62459:58094,
-62460:58095,
-62528:58096,
-62529:58097,
-62530:58098,
-62531:58099,
-62532:58100,
-62533:58101,
-62534:58102,
-62535:58103,
-62536:58104,
-62537:58105,
-62538:58106,
-62539:58107,
-62540:58108,
-62541:58109,
-62542:58110,
-62543:58111,
-62544:58112,
-62545:58113,
-62546:58114,
-62547:58115,
-62548:58116,
-62549:58117,
-62550:58118,
-62551:58119,
-62552:58120,
-62553:58121,
-62554:58122,
-62555:58123,
-62556:58124,
-62557:58125,
-62558:58126,
-62559:58127,
-62560:58128,
-62561:58129,
-62562:58130,
-62563:58131,
-62564:58132,
-62565:58133,
-62566:58134,
-62567:58135,
-62568:58136,
-62569:58137,
-62570:58138,
-62571:58139,
-62572:58140,
-62573:58141,
-62574:58142,
-62575:58143,
-62576:58144,
-62577:58145,
-62578:58146,
-62579:58147,
-62580:58148,
-62581:58149,
-62582:58150,
-62583:58151,
-62584:58152,
-62585:58153,
-62586:58154,
-62587:58155,
-62588:58156,
-62589:58157,
-62590:58158,
-62592:58159,
-62593:58160,
-62594:58161,
-62595:58162,
-62596:58163,
-62597:58164,
-62598:58165,
-62599:58166,
-62600:58167,
-62601:58168,
-62602:58169,
-62603:58170,
-62604:58171,
-62605:58172,
-62606:58173,
-62607:58174,
-62608:58175,
-62609:58176,
-62610:58177,
-62611:58178,
-62612:58179,
-62613:58180,
-62614:58181,
-62615:58182,
-62616:58183,
-62617:58184,
-62618:58185,
-62619:58186,
-62620:58187,
-62621:58188,
-62622:58189,
-62623:58190,
-62624:58191,
-62625:58192,
-62626:58193,
-62627:58194,
-62628:58195,
-62629:58196,
-62630:58197,
-62631:58198,
-62632:58199,
-62633:58200,
-62634:58201,
-62635:58202,
-62636:58203,
-62637:58204,
-62638:58205,
-62639:58206,
-62640:58207,
-62641:58208,
-62642:58209,
-62643:58210,
-62644:58211,
-62645:58212,
-62646:58213,
-62647:58214,
-62648:58215,
-62649:58216,
-62650:58217,
-62651:58218,
-62652:58219,
-62653:58220,
-62654:58221,
-62655:58222,
-62656:58223,
-62657:58224,
-62658:58225,
-62659:58226,
-62660:58227,
-62661:58228,
-62662:58229,
-62663:58230,
-62664:58231,
-62665:58232,
-62666:58233,
-62667:58234,
-62668:58235,
-62669:58236,
-62670:58237,
-62671:58238,
-62672:58239,
-62673:58240,
-62674:58241,
-62675:58242,
-62676:58243,
-62677:58244,
-62678:58245,
-62679:58246,
-62680:58247,
-62681:58248,
-62682:58249,
-62683:58250,
-62684:58251,
-62685:58252,
-62686:58253,
-62687:58254,
-62688:58255,
-62689:58256,
-62690:58257,
-62691:58258,
-62692:58259,
-62693:58260,
-62694:58261,
-62695:58262,
-62696:58263,
-62697:58264,
-62698:58265,
-62699:58266,
-62700:58267,
-62701:58268,
-62702:58269,
-62703:58270,
-62704:58271,
-62705:58272,
-62706:58273,
-62707:58274,
-62708:58275,
-62709:58276,
-62710:58277,
-62711:58278,
-62712:58279,
-62713:58280,
-62714:58281,
-62715:58282,
-62716:58283,
-62784:58284,
-62785:58285,
-62786:58286,
-62787:58287,
-62788:58288,
-62789:58289,
-62790:58290,
-62791:58291,
-62792:58292,
-62793:58293,
-62794:58294,
-62795:58295,
-62796:58296,
-62797:58297,
-62798:58298,
-62799:58299,
-62800:58300,
-62801:58301,
-62802:58302,
-62803:58303,
-62804:58304,
-62805:58305,
-62806:58306,
-62807:58307,
-62808:58308,
-62809:58309,
-62810:58310,
-62811:58311,
-62812:58312,
-62813:58313,
-62814:58314,
-62815:58315,
-62816:58316,
-62817:58317,
-62818:58318,
-62819:58319,
-62820:58320,
-62821:58321,
-62822:58322,
-62823:58323,
-62824:58324,
-62825:58325,
-62826:58326,
-62827:58327,
-62828:58328,
-62829:58329,
-62830:58330,
-62831:58331,
-62832:58332,
-62833:58333,
-62834:58334,
-62835:58335,
-62836:58336,
-62837:58337,
-62838:58338,
-62839:58339,
-62840:58340,
-62841:58341,
-62842:58342,
-62843:58343,
-62844:58344,
-62845:58345,
-62846:58346,
-62848:58347,
-62849:58348,
-62850:58349,
-62851:58350,
-62852:58351,
-62853:58352,
-62854:58353,
-62855:58354,
-62856:58355,
-62857:58356,
-62858:58357,
-62859:58358,
-62860:58359,
-62861:58360,
-62862:58361,
-62863:58362,
-62864:58363,
-62865:58364,
-62866:58365,
-62867:58366,
-62868:58367,
-62869:58368,
-62870:58369,
-62871:58370,
-62872:58371,
-62873:58372,
-62874:58373,
-62875:58374,
-62876:58375,
-62877:58376,
-62878:58377,
-62879:58378,
-62880:58379,
-62881:58380,
-62882:58381,
-62883:58382,
-62884:58383,
-62885:58384,
-62886:58385,
-62887:58386,
-62888:58387,
-62889:58388,
-62890:58389,
-62891:58390,
-62892:58391,
-62893:58392,
-62894:58393,
-62895:58394,
-62896:58395,
-62897:58396,
-62898:58397,
-62899:58398,
-62900:58399,
-62901:58400,
-62902:58401,
-62903:58402,
-62904:58403,
-62905:58404,
-62906:58405,
-62907:58406,
-62908:58407,
-62909:58408,
-62910:58409,
-62911:58410,
-62912:58411,
-62913:58412,
-62914:58413,
-62915:58414,
-62916:58415,
-62917:58416,
-62918:58417,
-62919:58418,
-62920:58419,
-62921:58420,
-62922:58421,
-62923:58422,
-62924:58423,
-62925:58424,
-62926:58425,
-62927:58426,
-62928:58427,
-62929:58428,
-62930:58429,
-62931:58430,
-62932:58431,
-62933:58432,
-62934:58433,
-62935:58434,
-62936:58435,
-62937:58436,
-62938:58437,
-62939:58438,
-62940:58439,
-62941:58440,
-62942:58441,
-62943:58442,
-62944:58443,
-62945:58444,
-62946:58445,
-62947:58446,
-62948:58447,
-62949:58448,
-62950:58449,
-62951:58450,
-62952:58451,
-62953:58452,
-62954:58453,
-62955:58454,
-62956:58455,
-62957:58456,
-62958:58457,
-62959:58458,
-62960:58459,
-62961:58460,
-62962:58461,
-62963:58462,
-62964:58463,
-62965:58464,
-62966:58465,
-62967:58466,
-62968:58467,
-62969:58468,
-62970:58469,
-62971:58470,
-62972:58471,
-63040:58472,
-63041:58473,
-63042:58474,
-63043:58475,
-63044:58476,
-63045:58477,
-63046:58478,
-63047:58479,
-63048:58480,
-63049:58481,
-63050:58482,
-63051:58483,
-63052:58484,
-63053:58485,
-63054:58486,
-63055:58487,
-63056:58488,
-63057:58489,
-63058:58490,
-63059:58491,
-63060:58492,
-63061:58493,
-63062:58494,
-63063:58495,
-63064:58496,
-63065:58497,
-63066:58498,
-63067:58499,
-63068:58500,
-63069:58501,
-63070:58502,
-63071:58503,
-63072:58504,
-63073:58505,
-63074:58506,
-63075:58507,
-63076:58508,
-63077:58509,
-63078:58510,
-63079:58511,
-63080:58512,
-63081:58513,
-63082:58514,
-63083:58515,
-63084:58516,
-63085:58517,
-63086:58518,
-63087:58519,
-63088:58520,
-63089:58521,
-63090:58522,
-63091:58523,
-63092:58524,
-63093:58525,
-63094:58526,
-63095:58527,
-63096:58528,
-63097:58529,
-63098:58530,
-63099:58531,
-63100:58532,
-63101:58533,
-63102:58534,
-63104:58535,
-63105:58536,
-63106:58537,
-63107:58538,
-63108:58539,
-63109:58540,
-63110:58541,
-63111:58542,
-63112:58543,
-63113:58544,
-63114:58545,
-63115:58546,
-63116:58547,
-63117:58548,
-63118:58549,
-63119:58550,
-63120:58551,
-63121:58552,
-63122:58553,
-63123:58554,
-63124:58555,
-63125:58556,
-63126:58557,
-63127:58558,
-63128:58559,
-63129:58560,
-63130:58561,
-63131:58562,
-63132:58563,
-63133:58564,
-63134:58565,
-63135:58566,
-63136:58567,
-63137:58568,
-63138:58569,
-63139:58570,
-63140:58571,
-63141:58572,
-63142:58573,
-63143:58574,
-63144:58575,
-63145:58576,
-63146:58577,
-63147:58578,
-63148:58579,
-63149:58580,
-63150:58581,
-63151:58582,
-63152:58583,
-63153:58584,
-63154:58585,
-63155:58586,
-63156:58587,
-63157:58588,
-63158:58589,
-63159:58590,
-63160:58591,
-63161:58592,
-63162:58593,
-63163:58594,
-63164:58595,
-63165:58596,
-63166:58597,
-63167:58598,
-63168:58599,
-63169:58600,
-63170:58601,
-63171:58602,
-63172:58603,
-63173:58604,
-63174:58605,
-63175:58606,
-63176:58607,
-63177:58608,
-63178:58609,
-63179:58610,
-63180:58611,
-63181:58612,
-63182:58613,
-63183:58614,
-63184:58615,
-63185:58616,
-63186:58617,
-63187:58618,
-63188:58619,
-63189:58620,
-63190:58621,
-63191:58622,
-63192:58623,
-63193:58624,
-63194:58625,
-63195:58626,
-63196:58627,
-63197:58628,
-63198:58629,
-63199:58630,
-63200:58631,
-63201:58632,
-63202:58633,
-63203:58634,
-63204:58635,
-63205:58636,
-63206:58637,
-63207:58638,
-63208:58639,
-63209:58640,
-63210:58641,
-63211:58642,
-63212:58643,
-63213:58644,
-63214:58645,
-63215:58646,
-63216:58647,
-63217:58648,
-63218:58649,
-63219:58650,
-63220:58651,
-63221:58652,
-63222:58653,
-63223:58654,
-63224:58655,
-63225:58656,
-63226:58657,
-63227:58658,
-63228:58659,
-63296:58660,
-63297:58661,
-63298:58662,
-63299:58663,
-63300:58664,
-63301:58665,
-63302:58666,
-63303:58667,
-63304:58668,
-63305:58669,
-63306:58670,
-63307:58671,
-63308:58672,
-63309:58673,
-63310:58674,
-63311:58675,
-63312:58676,
-63313:58677,
-63314:58678,
-63315:58679,
-63316:58680,
-63317:58681,
-63318:58682,
-63319:58683,
-63320:58684,
-63321:58685,
-63322:58686,
-63323:58687,
-63324:58688,
-63325:58689,
-63326:58690,
-63327:58691,
-63328:58692,
-63329:58693,
-63330:58694,
-63331:58695,
-63332:58696,
-63333:58697,
-63334:58698,
-63335:58699,
-63336:58700,
-63337:58701,
-63338:58702,
-63339:58703,
-63340:58704,
-63341:58705,
-63342:58706,
-63343:58707,
-63344:58708,
-63345:58709,
-63346:58710,
-63347:58711,
-63348:58712,
-63349:58713,
-63350:58714,
-63351:58715,
-63352:58716,
-63353:58717,
-63354:58718,
-63355:58719,
-63356:58720,
-63357:58721,
-63358:58722,
-63360:58723,
-63361:58724,
-63362:58725,
-63363:58726,
-63364:58727,
-63365:58728,
-63366:58729,
-63367:58730,
-63368:58731,
-63369:58732,
-63370:58733,
-63371:58734,
-63372:58735,
-63373:58736,
-63374:58737,
-63375:58738,
-63376:58739,
-63377:58740,
-63378:58741,
-63379:58742,
-63380:58743,
-63381:58744,
-63382:58745,
-63383:58746,
-63384:58747,
-63385:58748,
-63386:58749,
-63387:58750,
-63388:58751,
-63389:58752,
-63390:58753,
-63391:58754,
-63392:58755,
-63393:58756,
-63394:58757,
-63395:58758,
-63396:58759,
-63397:58760,
-63398:58761,
-63399:58762,
-63400:58763,
-63401:58764,
-63402:58765,
-63403:58766,
-63404:58767,
-63405:58768,
-63406:58769,
-63407:58770,
-63408:58771,
-63409:58772,
-63410:58773,
-63411:58774,
-63412:58775,
-63413:58776,
-63414:58777,
-63415:58778,
-63416:58779,
-63417:58780,
-63418:58781,
-63419:58782,
-63420:58783,
-63421:58784,
-63422:58785,
-63423:58786,
-63424:58787,
-63425:58788,
-63426:58789,
-63427:58790,
-63428:58791,
-63429:58792,
-63430:58793,
-63431:58794,
-63432:58795,
-63433:58796,
-63434:58797,
-63435:58798,
-63436:58799,
-63437:58800,
-63438:58801,
-63439:58802,
-63440:58803,
-63441:58804,
-63442:58805,
-63443:58806,
-63444:58807,
-63445:58808,
-63446:58809,
-63447:58810,
-63448:58811,
-63449:58812,
-63450:58813,
-63451:58814,
-63452:58815,
-63453:58816,
-63454:58817,
-63455:58818,
-63456:58819,
-63457:58820,
-63458:58821,
-63459:58822,
-63460:58823,
-63461:58824,
-63462:58825,
-63463:58826,
-63464:58827,
-63465:58828,
-63466:58829,
-63467:58830,
-63468:58831,
-63469:58832,
-63470:58833,
-63471:58834,
-63472:58835,
-63473:58836,
-63474:58837,
-63475:58838,
-63476:58839,
-63477:58840,
-63478:58841,
-63479:58842,
-63480:58843,
-63481:58844,
-63482:58845,
-63483:58846,
-63484:58847,
-63552:58848,
-63553:58849,
-63554:58850,
-63555:58851,
-63556:58852,
-63557:58853,
-63558:58854,
-63559:58855,
-63560:58856,
-63561:58857,
-63562:58858,
-63563:58859,
-63564:58860,
-63565:58861,
-63566:58862,
-63567:58863,
-63568:58864,
-63569:58865,
-63570:58866,
-63571:58867,
-63572:58868,
-63573:58869,
-63574:58870,
-63575:58871,
-63576:58872,
-63577:58873,
-63578:58874,
-63579:58875,
-63580:58876,
-63581:58877,
-63582:58878,
-63583:58879,
-63584:58880,
-63585:58881,
-63586:58882,
-63587:58883,
-63588:58884,
-63589:58885,
-63590:58886,
-63591:58887,
-63592:58888,
-63593:58889,
-63594:58890,
-63595:58891,
-63596:58892,
-63597:58893,
-63598:58894,
-63599:58895,
-63600:58896,
-63601:58897,
-63602:58898,
-63603:58899,
-63604:58900,
-63605:58901,
-63606:58902,
-63607:58903,
-63608:58904,
-63609:58905,
-63610:58906,
-63611:58907,
-63612:58908,
-63613:58909,
-63614:58910,
-63616:58911,
-63617:58912,
-63618:58913,
-63619:58914,
-63620:58915,
-63621:58916,
-63622:58917,
-63623:58918,
-63624:58919,
-63625:58920,
-63626:58921,
-63627:58922,
-63628:58923,
-63629:58924,
-63630:58925,
-63631:58926,
-63632:58927,
-63633:58928,
-63634:58929,
-63635:58930,
-63636:58931,
-63637:58932,
-63638:58933,
-63639:58934,
-63640:58935,
-63641:58936,
-63642:58937,
-63643:58938,
-63644:58939,
-63645:58940,
-63646:58941,
-63647:58942,
-63648:58943,
-63649:58944,
-63650:58945,
-63651:58946,
-63652:58947,
-63653:58948,
-63654:58949,
-63655:58950,
-63656:58951,
-63657:58952,
-63658:58953,
-63659:58954,
-63660:58955,
-63661:58956,
-63662:58957,
-63663:58958,
-63664:58959,
-63665:58960,
-63666:58961,
-63667:58962,
-63668:58963,
-63669:58964,
-63670:58965,
-63671:58966,
-63672:58967,
-63673:58968,
-63674:58969,
-63675:58970,
-63676:58971,
-63677:58972,
-63678:58973,
-63679:58974,
-63680:58975,
-63681:58976,
-63682:58977,
-63683:58978,
-63684:58979,
-63685:58980,
-63686:58981,
-63687:58982,
-63688:58983,
-63689:58984,
-63690:58985,
-63691:58986,
-63692:58987,
-63693:58988,
-63694:58989,
-63695:58990,
-63696:58991,
-63697:58992,
-63698:58993,
-63699:58994,
-63700:58995,
-63701:58996,
-63702:58997,
-63703:58998,
-63704:58999,
-63705:59000,
-63706:59001,
-63707:59002,
-63708:59003,
-63709:59004,
-63710:59005,
-63711:59006,
-63712:59007,
-63713:59008,
-63714:59009,
-63715:59010,
-63716:59011,
-63717:59012,
-63718:59013,
-63719:59014,
-63720:59015,
-63721:59016,
-63722:59017,
-63723:59018,
-63724:59019,
-63725:59020,
-63726:59021,
-63727:59022,
-63728:59023,
-63729:59024,
-63730:59025,
-63731:59026,
-63732:59027,
-63733:59028,
-63734:59029,
-63735:59030,
-63736:59031,
-63737:59032,
-63738:59033,
-63739:59034,
-63740:59035,
-64064:8560,
-64065:8561,
-64066:8562,
-64067:8563,
-64068:8564,
-64069:8565,
-64070:8566,
-64071:8567,
-64072:8568,
-64073:8569,
-64074:8544,
-64075:8545,
-64076:8546,
-64077:8547,
-64078:8548,
-64079:8549,
-64080:8550,
-64081:8551,
-64082:8552,
-64083:8553,
-64084:65506,
-64085:65508,
-64086:65287,
-64087:65282,
-64088:12849,
-64089:8470,
-64090:8481,
-64091:8757,
-64092:32394,
-64093:35100,
-64094:37704,
-64095:37512,
-64096:34012,
-64097:20425,
-64098:28859,
-64099:26161,
-64100:26824,
-64101:37625,
-64102:26363,
-64103:24389,
-64104:20008,
-64105:20193,
-64106:20220,
-64107:20224,
-64108:20227,
-64109:20281,
-64110:20310,
-64111:20370,
-64112:20362,
-64113:20378,
-64114:20372,
-64115:20429,
-64116:20544,
-64117:20514,
-64118:20479,
-64119:20510,
-64120:20550,
-64121:20592,
-64122:20546,
-64123:20628,
-64124:20724,
-64125:20696,
-64126:20810,
-64128:20836,
-64129:20893,
-64130:20926,
-64131:20972,
-64132:21013,
-64133:21148,
-64134:21158,
-64135:21184,
-64136:21211,
-64137:21248,
-64138:21255,
-64139:21284,
-64140:21362,
-64141:21395,
-64142:21426,
-64143:21469,
-64144:64014,
-64145:21660,
-64146:21642,
-64147:21673,
-64148:21759,
-64149:21894,
-64150:22361,
-64151:22373,
-64152:22444,
-64153:22472,
-64154:22471,
-64155:64015,
-64156:64016,
-64157:22686,
-64158:22706,
-64159:22795,
-64160:22867,
-64161:22875,
-64162:22877,
-64163:22883,
-64164:22948,
-64165:22970,
-64166:23382,
-64167:23488,
-64168:29999,
-64169:23512,
-64170:23532,
-64171:23582,
-64172:23718,
-64173:23738,
-64174:23797,
-64175:23847,
-64176:23891,
-64177:64017,
-64178:23874,
-64179:23917,
-64180:23992,
-64181:23993,
-64182:24016,
-64183:24353,
-64184:24372,
-64185:24423,
-64186:24503,
-64187:24542,
-64188:24669,
-64189:24709,
-64190:24714,
-64191:24798,
-64192:24789,
-64193:24864,
-64194:24818,
-64195:24849,
-64196:24887,
-64197:24880,
-64198:24984,
-64199:25107,
-64200:25254,
-64201:25589,
-64202:25696,
-64203:25757,
-64204:25806,
-64205:25934,
-64206:26112,
-64207:26133,
-64208:26171,
-64209:26121,
-64210:26158,
-64211:26142,
-64212:26148,
-64213:26213,
-64214:26199,
-64215:26201,
-64216:64018,
-64217:26227,
-64218:26265,
-64219:26272,
-64220:26290,
-64221:26303,
-64222:26362,
-64223:26382,
-64224:63785,
-64225:26470,
-64226:26555,
-64227:26706,
-64228:26560,
-64229:26625,
-64230:26692,
-64231:26831,
-64232:64019,
-64233:26984,
-64234:64020,
-64235:27032,
-64236:27106,
-64237:27184,
-64238:27243,
-64239:27206,
-64240:27251,
-64241:27262,
-64242:27362,
-64243:27364,
-64244:27606,
-64245:27711,
-64246:27740,
-64247:27782,
-64248:27759,
-64249:27866,
-64250:27908,
-64251:28039,
-64252:28015,
-64320:28054,
-64321:28076,
-64322:28111,
-64323:28152,
-64324:28146,
-64325:28156,
-64326:28217,
-64327:28252,
-64328:28199,
-64329:28220,
-64330:28351,
-64331:28552,
-64332:28597,
-64333:28661,
-64334:28677,
-64335:28679,
-64336:28712,
-64337:28805,
-64338:28843,
-64339:28943,
-64340:28932,
-64341:29020,
-64342:28998,
-64343:28999,
-64344:64021,
-64345:29121,
-64346:29182,
-64347:29361,
-64348:29374,
-64349:29476,
-64350:64022,
-64351:29559,
-64352:29629,
-64353:29641,
-64354:29654,
-64355:29667,
-64356:29650,
-64357:29703,
-64358:29685,
-64359:29734,
-64360:29738,
-64361:29737,
-64362:29742,
-64363:29794,
-64364:29833,
-64365:29855,
-64366:29953,
-64367:30063,
-64368:30338,
-64369:30364,
-64370:30366,
-64371:30363,
-64372:30374,
-64373:64023,
-64374:30534,
-64375:21167,
-64376:30753,
-64377:30798,
-64378:30820,
-64379:30842,
-64380:31024,
-64381:64024,
-64382:64025,
-64384:64026,
-64385:31124,
-64386:64027,
-64387:31131,
-64388:31441,
-64389:31463,
-64390:64028,
-64391:31467,
-64392:31646,
-64393:64029,
-64394:32072,
-64395:32092,
-64396:32183,
-64397:32160,
-64398:32214,
-64399:32338,
-64400:32583,
-64401:32673,
-64402:64030,
-64403:33537,
-64404:33634,
-64405:33663,
-64406:33735,
-64407:33782,
-64408:33864,
-64409:33972,
-64410:34131,
-64411:34137,
-64412:34155,
-64413:64031,
-64414:34224,
-64415:64032,
-64416:64033,
-64417:34823,
-64418:35061,
-64419:35346,
-64420:35383,
-64421:35449,
-64422:35495,
-64423:35518,
-64424:35551,
-64425:64034,
-64426:35574,
-64427:35667,
-64428:35711,
-64429:36080,
-64430:36084,
-64431:36114,
-64432:36214,
-64433:64035,
-64434:36559,
-64435:64036,
-64436:64037,
-64437:36967,
-64438:37086,
-64439:64038,
-64440:37141,
-64441:37159,
-64442:37338,
-64443:37335,
-64444:37342,
-64445:37357,
-64446:37358,
-64447:37348,
-64448:37349,
-64449:37382,
-64450:37392,
-64451:37386,
-64452:37434,
-64453:37440,
-64454:37436,
-64455:37454,
-64456:37465,
-64457:37457,
-64458:37433,
-64459:37479,
-64460:37543,
-64461:37495,
-64462:37496,
-64463:37607,
-64464:37591,
-64465:37593,
-64466:37584,
-64467:64039,
-64468:37589,
-64469:37600,
-64470:37587,
-64471:37669,
-64472:37665,
-64473:37627,
-64474:64040,
-64475:37662,
-64476:37631,
-64477:37661,
-64478:37634,
-64479:37744,
-64480:37719,
-64481:37796,
-64482:37830,
-64483:37854,
-64484:37880,
-64485:37937,
-64486:37957,
-64487:37960,
-64488:38290,
-64489:63964,
-64490:64041,
-64491:38557,
-64492:38575,
-64493:38707,
-64494:38715,
-64495:38723,
-64496:38733,
-64497:38735,
-64498:38737,
-64499:38741,
-64500:38999,
-64501:39013,
-64502:64042,
-64503:64043,
-64504:39207,
-64505:64044,
-64506:39326,
-64507:39502,
-64508:39641,
-64576:39644,
-64577:39797,
-64578:39794,
-64579:39823,
-64580:39857,
-64581:39867,
-64582:39936,
-64583:40304,
-64584:40299,
-64585:64045,
-64586:40473,
-64587:40657
-};
-
-/**
- * @author takahiro / https://github.com/takahirox
- */
-
-function DataViewEx ( buffer, littleEndian ) {
-
-	this.dv = new DataView( buffer );
-	this.offset = 0;
-	this.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true;
-	this.encoder = new CharsetEncoder();
-
-}
-
-DataViewEx.prototype = {
-
-	constructor: DataViewEx,
-
-	getInt8: function () {
-
-		var value = this.dv.getInt8( this.offset );
-		this.offset += 1;
-		return value;
-
-	},
-
-	getInt8Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getInt8() );
-
-		}
-
-		return a;
-
-	},
-
-	getUint8: function () {
-
-		var value = this.dv.getUint8( this.offset );
-		this.offset += 1;
-		return value;
-
-	},
-
-	getUint8Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getUint8() );
-
-		}
-
-		return a;
-
-	},
-
-
-	getInt16: function () {
-
-		var value = this.dv.getInt16( this.offset, this.littleEndian );
-		this.offset += 2;
-		return value;
-
-	},
-
-	getInt16Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getInt16() );
-
-		}
-
-		return a;
-
-	},
-
-	getUint16: function () {
-
-		var value = this.dv.getUint16( this.offset, this.littleEndian );
-		this.offset += 2;
-		return value;
-
-	},
-
-	getUint16Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getUint16() );
-
-		}
-
-		return a;
-
-	},
-
-	getInt32: function () {
-
-		var value = this.dv.getInt32( this.offset, this.littleEndian );
-		this.offset += 4;
-		return value;
-
-	},
-
-	getInt32Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getInt32() );
-
-		}
-
-		return a;
-
-	},
-
-	getUint32: function () {
-
-		var value = this.dv.getUint32( this.offset, this.littleEndian );
-		this.offset += 4;
-		return value;
-
-	},
-
-	getUint32Array: function ( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getUint32() );
-
-		}
-
-		return a;
-
-	},
-
-	getFloat32: function () {
-
-		var value = this.dv.getFloat32( this.offset, this.littleEndian );
-		this.offset += 4;
-		return value;
-
-	},
-
-	getFloat32Array: function( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getFloat32() );
-
-		}
-
-		return a;
-
-	},
-
-	getFloat64: function () {
-
-		var value = this.dv.getFloat64( this.offset, this.littleEndian );
-		this.offset += 8;
-		return value;
-
-	},
-
-	getFloat64Array: function( size ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getFloat64() );
-
-		}
-
-		return a;
-
-	},
-
-	getIndex: function ( type, isUnsigned ) {
-
-		switch ( type ) {
-
-			case 1:
-				return ( isUnsigned === true ) ? this.getUint8() : this.getInt8();
-
-			case 2:
-				return ( isUnsigned === true ) ? this.getUint16() : this.getInt16();
-
-			case 4:
-				return this.getInt32(); // No Uint32
-
-			default:
-				throw 'unknown number type ' + type + ' exception.';
-
-		}
-
-	},
-
-	getIndexArray: function ( type, size, isUnsigned ) {
-
-		var a = [];
-
-		for ( var i = 0; i < size; i++ ) {
-
-			a.push( this.getIndex( type, isUnsigned ) );
-
-		}
-
-		return a;
-
-	},
-
-	getChars: function ( size ) {
-
-		var str = '';
-
-		while ( size > 0 ) {
-
-			var value = this.getUint8();
-			size--;
-
-			if ( value === 0 ) {
-
-				break;
-
-			}
-
-			str += String.fromCharCode( value );
-
-		}
-
-		while ( size > 0 ) {
-
-			this.getUint8();
-			size--;
-
-		}
-
-		return str;
-
-	},
-
-	getSjisStringsAsUnicode: function ( size ) {
-
-		var a = [];
-
-		while ( size > 0 ) {
-
-			var value = this.getUint8();
-			size--;
-
-			if ( value === 0 ) {
-
-				break;
-
-			}
-
-			a.push( value );
-
-		}
-
-		while ( size > 0 ) {
-
-			this.getUint8();
-			size--;
-
-		}
-
-		return this.encoder.s2u( new Uint8Array( a ) );
-
-	},
-
-	getUnicodeStrings: function ( size ) {
-
-		var str = '';
-
-		while ( size > 0 ) {
-
-			var value = this.getUint16();
-			size -= 2;
-
-			if ( value === 0 ) {
-
-				break;
-
-			}
-
-			str += String.fromCharCode( value );
-
-		}
-
-		while ( size > 0 ) {
-
-			this.getUint8();
-			size--;
-
-		}
-
-		return str;
-
-	},
-
-	getTextBuffer: function () {
-
-		var size = this.getUint32();
-		return this.getUnicodeStrings( size );
-
-	}
-
-};
-
-/**
- * @author takahiro / https://github.com/takahirox
- */
-
-function DataCreationHelper () {
-}
-
-DataCreationHelper.prototype = {
-
-	constructor: DataCreationHelper,
-
-	leftToRightVector3: function ( v ) {
-
-		v[ 2 ] = -v[ 2 ];
-
-	},
-
-	leftToRightQuaternion: function ( q ) {
-
-		q[ 0 ] = -q[ 0 ];
-		q[ 1 ] = -q[ 1 ];
-
-	},
-
-	leftToRightEuler: function ( r ) {
-
-		r[ 0 ] = -r[ 0 ];
-		r[ 1 ] = -r[ 1 ];
-
-	},
-
-	leftToRightIndexOrder: function ( p ) {
-
-		var tmp = p[ 2 ];
-		p[ 2 ] = p[ 0 ];
-		p[ 0 ] = tmp;
-
-	},
-
-	leftToRightVector3Range: function ( v1, v2 ) {
-
-		var tmp = -v2[ 2 ];
-		v2[ 2 ] = -v1[ 2 ];
-		v1[ 2 ] = tmp;
-
-	},
-
-	leftToRightEulerRange: function ( r1, r2 ) {
-
-		var tmp1 = -r2[ 0 ];
-		var tmp2 = -r2[ 1 ];
-		r2[ 0 ] = -r1[ 0 ];
-		r2[ 1 ] = -r1[ 1 ];
-		r1[ 0 ] = tmp1;
-		r1[ 1 ] = tmp2;
-
-	}
-
-};
-
-/**
- * @author takahiro / https://github.com/takahirox
- */
-
-function Parser() {
-}
-
-Parser.prototype.parsePmd = function ( buffer, leftToRight ) {
-
-	var pmd = {};
-	var dv = new DataViewEx( buffer );
-
-	pmd.metadata = {};
-	pmd.metadata.format = 'pmd';
-	pmd.metadata.coordinateSystem = 'left';
-
-	var parseHeader = function () {
-
-		var metadata = pmd.metadata;
-		metadata.magic = dv.getChars( 3 );
-
-		if ( metadata.magic !== 'Pmd' ) {
-
-			throw 'PMD file magic is not Pmd, but ' + metadata.magic;
-
-		}
-
-		metadata.version = dv.getFloat32();
-		metadata.modelName = dv.getSjisStringsAsUnicode( 20 );
-		metadata.comment = dv.getSjisStringsAsUnicode( 256 );
-
-	};
-
-	var parseVertices = function () {
-
-		var parseVertex = function () {
-
-			var p = {};
-			p.position = dv.getFloat32Array( 3 );
-			p.normal = dv.getFloat32Array( 3 );
-			p.uv = dv.getFloat32Array( 2 );
-			p.skinIndices = dv.getUint16Array( 2 );
-			p.skinWeights = [ dv.getUint8() / 100 ];
-			p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );
-			p.edgeFlag = dv.getUint8();
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.vertexCount = dv.getUint32();
-
-		pmd.vertices = [];
-
-		for ( var i = 0; i < metadata.vertexCount; i++ ) {
-
-			pmd.vertices.push( parseVertex() );
-
-		}
-
-	};
-
-	var parseFaces = function () {
-
-		var parseFace = function () {
-
-			var p = {};
-			p.indices = dv.getUint16Array( 3 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.faceCount = dv.getUint32() / 3;
-
-		pmd.faces = [];
-
-		for ( var i = 0; i < metadata.faceCount; i++ ) {
-
-			pmd.faces.push( parseFace() );
-
-		}
-
-	};
-
-	var parseMaterials = function () {
-
-		var parseMaterial = function () {
-
-			var p = {};
-			p.diffuse = dv.getFloat32Array( 4 );
-			p.shininess = dv.getFloat32();
-			p.specular = dv.getFloat32Array( 3 );
-			p.ambient = dv.getFloat32Array( 3 );
-			p.toonIndex = dv.getInt8();
-			p.edgeFlag = dv.getUint8();
-			p.faceCount = dv.getUint32() / 3;
-			p.fileName = dv.getSjisStringsAsUnicode( 20 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.materialCount = dv.getUint32();
-
-		pmd.materials = [];
-
-		for ( var i = 0; i < metadata.materialCount; i++ ) {
-
-			pmd.materials.push( parseMaterial() );
-
-		}
-
-	};
-
-	var parseBones = function () {
-
-		var parseBone = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			p.parentIndex = dv.getInt16();
-			p.tailIndex = dv.getInt16();
-			p.type = dv.getUint8();
-			p.ikIndex = dv.getInt16();
-			p.position = dv.getFloat32Array( 3 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.boneCount = dv.getUint16();
-
-		pmd.bones = [];
-
-		for ( var i = 0; i < metadata.boneCount; i++ ) {
-
-			pmd.bones.push( parseBone() );
-
-		}
-
-	};
-
-	var parseIks = function () {
-
-		var parseIk = function () {
-
-			var p = {};
-			p.target = dv.getUint16();
-			p.effector = dv.getUint16();
-			p.linkCount = dv.getUint8();
-			p.iteration = dv.getUint16();
-			p.maxAngle = dv.getFloat32();
-
-			p.links = [];
-			for ( var i = 0; i < p.linkCount; i++ ) {
-
-				var link = {};
-				link.index = dv.getUint16();
-				p.links.push( link );
-
-			}
-
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.ikCount = dv.getUint16();
-
-		pmd.iks = [];
-
-		for ( var i = 0; i < metadata.ikCount; i++ ) {
-
-			pmd.iks.push( parseIk() );
-
-		}
-
-	};
-
-	var parseMorphs = function () {
-
-		var parseMorph = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			p.elementCount = dv.getUint32();
-			p.type = dv.getUint8();
-
-			p.elements = [];
-			for ( var i = 0; i < p.elementCount; i++ ) {
-
-				p.elements.push( {
-					index: dv.getUint32(),
-					position: dv.getFloat32Array( 3 )
-				} ) ;
-
-			}
-
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.morphCount = dv.getUint16();
-
-		pmd.morphs = [];
-
-		for ( var i = 0; i < metadata.morphCount; i++ ) {
-
-			pmd.morphs.push( parseMorph() );
-
-		}
-
-
-	};
-
-	var parseMorphFrames = function () {
-
-		var parseMorphFrame = function () {
-
-			var p = {};
-			p.index = dv.getUint16();
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.morphFrameCount = dv.getUint8();
-
-		pmd.morphFrames = [];
-
-		for ( var i = 0; i < metadata.morphFrameCount; i++ ) {
-
-			pmd.morphFrames.push( parseMorphFrame() );
-
-		}
-
-	};
-
-	var parseBoneFrameNames = function () {
-
-		var parseBoneFrameName = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 50 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.boneFrameNameCount = dv.getUint8();
-
-		pmd.boneFrameNames = [];
-
-		for ( var i = 0; i < metadata.boneFrameNameCount; i++ ) {
-
-			pmd.boneFrameNames.push( parseBoneFrameName() );
-
-		}
-
-	};
-
-	var parseBoneFrames = function () {
-
-		var parseBoneFrame = function () {
-
-			var p = {};
-			p.boneIndex = dv.getInt16();
-			p.frameIndex = dv.getUint8();
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.boneFrameCount = dv.getUint32();
-
-		pmd.boneFrames = [];
-
-		for ( var i = 0; i < metadata.boneFrameCount; i++ ) {
-
-			pmd.boneFrames.push( parseBoneFrame() );
-
-		}
-
-	};
-
-	var parseEnglishHeader = function () {
-
-		var metadata = pmd.metadata;
-		metadata.englishCompatibility = dv.getUint8();
-
-		if ( metadata.englishCompatibility > 0 ) {
-
-			metadata.englishModelName = dv.getSjisStringsAsUnicode( 20 );
-			metadata.englishComment = dv.getSjisStringsAsUnicode( 256 );
-
-		}
-
-	};
-
-	var parseEnglishBoneNames = function () {
-
-		var parseEnglishBoneName = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-
-		if ( metadata.englishCompatibility === 0 ) {
-
-			return;
-
-		}
-
-		pmd.englishBoneNames = [];
-
-		for ( var i = 0; i < metadata.boneCount; i++ ) {
-
-			pmd.englishBoneNames.push( parseEnglishBoneName() );
-
-		}
-
-	};
-
-	var parseEnglishMorphNames = function () {
-
-		var parseEnglishMorphName = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-
-		if ( metadata.englishCompatibility === 0 ) {
-
-			return;
-
-		}
-
-		pmd.englishMorphNames = [];
-
-		for ( var i = 0; i < metadata.morphCount - 1; i++ ) {
-
-			pmd.englishMorphNames.push( parseEnglishMorphName() );
-
-		}
-
-	};
-
-	var parseEnglishBoneFrameNames = function () {
-
-		var parseEnglishBoneFrameName = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 50 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-
-		if ( metadata.englishCompatibility === 0 ) {
-
-			return;
-
-		}
-
-		pmd.englishBoneFrameNames = [];
-
-		for ( var i = 0; i < metadata.boneFrameNameCount; i++ ) {
-
-			pmd.englishBoneFrameNames.push( parseEnglishBoneFrameName() );
-
-		}
-
-	};
-
-	var parseToonTextures = function () {
-
-		var parseToonTexture = function () {
-
-			var p = {};
-			p.fileName = dv.getSjisStringsAsUnicode( 100 );
-			return p;
-
-		};
-
-		pmd.toonTextures = [];
-
-		for ( var i = 0; i < 10; i++ ) {
-
-			pmd.toonTextures.push( parseToonTexture() );
-
-		}
-
-	};
-
-	var parseRigidBodies = function () {
-
-		var parseRigidBody = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			p.boneIndex = dv.getInt16();
-			p.groupIndex = dv.getUint8();
-			p.groupTarget = dv.getUint16();
-			p.shapeType = dv.getUint8();
-			p.width = dv.getFloat32();
-			p.height = dv.getFloat32();
-			p.depth = dv.getFloat32();
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 3 );
-			p.weight = dv.getFloat32();
-			p.positionDamping = dv.getFloat32();
-			p.rotationDamping = dv.getFloat32();
-			p.restitution = dv.getFloat32();
-			p.friction = dv.getFloat32();
-			p.type = dv.getUint8();
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.rigidBodyCount = dv.getUint32();
-
-		pmd.rigidBodies = [];
-
-		for ( var i = 0; i < metadata.rigidBodyCount; i++ ) {
-
-			pmd.rigidBodies.push( parseRigidBody() );
-
-		}
-
-	};
-
-	var parseConstraints = function () {
-
-		var parseConstraint = function () {
-
-			var p = {};
-			p.name = dv.getSjisStringsAsUnicode( 20 );
-			p.rigidBodyIndex1 = dv.getUint32();
-			p.rigidBodyIndex2 = dv.getUint32();
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 3 );
-			p.translationLimitation1 = dv.getFloat32Array( 3 );
-			p.translationLimitation2 = dv.getFloat32Array( 3 );
-			p.rotationLimitation1 = dv.getFloat32Array( 3 );
-			p.rotationLimitation2 = dv.getFloat32Array( 3 );
-			p.springPosition = dv.getFloat32Array( 3 );
-			p.springRotation = dv.getFloat32Array( 3 );
-			return p;
-
-		};
-
-		var metadata = pmd.metadata;
-		metadata.constraintCount = dv.getUint32();
-
-		pmd.constraints = [];
-
-		for ( var i = 0; i < metadata.constraintCount; i++ ) {
-
-			pmd.constraints.push( parseConstraint() );
-
-		}
-
-	};
-
-	parseHeader();
-	parseVertices();
-	parseFaces();
-	parseMaterials();
-	parseBones();
-	parseIks();
-	parseMorphs();
-	parseMorphFrames();
-	parseBoneFrameNames();
-	parseBoneFrames();
-	parseEnglishHeader();
-	parseEnglishBoneNames();
-	parseEnglishMorphNames();
-	parseEnglishBoneFrameNames();
-	parseToonTextures();
-	parseRigidBodies();
-	parseConstraints();
-
-	if ( leftToRight === true ) this.leftToRightModel( pmd );
-
-	// console.log( pmd ); // for console debug
-
-	return pmd;
-
-};
-
-Parser.prototype.parsePmx = function ( buffer, leftToRight ) {
-
-	var pmx = {};
-	var dv = new DataViewEx( buffer );
-
-	pmx.metadata = {};
-	pmx.metadata.format = 'pmx';
-	pmx.metadata.coordinateSystem = 'left';
-
-	var parseHeader = function () {
-
-		var metadata = pmx.metadata;
-		metadata.magic = dv.getChars( 4 );
-
-		// Note: don't remove the last blank space.
-		if ( metadata.magic !== 'PMX ' ) {
-
-			throw 'PMX file magic is not PMX , but ' + metadata.magic;
-
-		}
-
-		metadata.version = dv.getFloat32();
-
-		if ( metadata.version !== 2.0 && metadata.version !== 2.1 ) {
-
-			throw 'PMX version ' + metadata.version + ' is not supported.';
-
-		}
-
-		metadata.headerSize = dv.getUint8();
-		metadata.encoding = dv.getUint8();
-		metadata.additionalUvNum = dv.getUint8();
-		metadata.vertexIndexSize = dv.getUint8();
-		metadata.textureIndexSize = dv.getUint8();
-		metadata.materialIndexSize = dv.getUint8();
-		metadata.boneIndexSize = dv.getUint8();
-		metadata.morphIndexSize = dv.getUint8();
-		metadata.rigidBodyIndexSize = dv.getUint8();
-		metadata.modelName = dv.getTextBuffer();
-		metadata.englishModelName = dv.getTextBuffer();
-		metadata.comment = dv.getTextBuffer();
-		metadata.englishComment = dv.getTextBuffer();
-
-	};
-
-	var parseVertices = function () {
-
-		var parseVertex = function () {
-
-			var p = {};
-			p.position = dv.getFloat32Array( 3 );
-			p.normal = dv.getFloat32Array( 3 );
-			p.uv = dv.getFloat32Array( 2 );
-
-			p.auvs = [];
-
-			for ( var i = 0; i < pmx.metadata.additionalUvNum; i++ ) {
-
-				p.auvs.push( dv.getFloat32Array( 4 ) );
-
-			}
-
-			p.type = dv.getUint8();
-
-			var indexSize = metadata.boneIndexSize;
-
-			if ( p.type === 0 ) {  // BDEF1
-
-				p.skinIndices = dv.getIndexArray( indexSize, 1 );
-				p.skinWeights = [ 1.0 ];
-
-			} else if ( p.type === 1 ) {  // BDEF2
-
-				p.skinIndices = dv.getIndexArray( indexSize, 2 );
-				p.skinWeights = dv.getFloat32Array( 1 );
-				p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );
-
-			} else if ( p.type === 2 ) {  // BDEF4
-
-				p.skinIndices = dv.getIndexArray( indexSize, 4 );
-				p.skinWeights = dv.getFloat32Array( 4 );
-
-			} else if ( p.type === 3 ) {  // SDEF
-
-				p.skinIndices = dv.getIndexArray( indexSize, 2 );
-				p.skinWeights = dv.getFloat32Array( 1 );
-				p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );
-
-				p.skinC = dv.getFloat32Array( 3 );
-				p.skinR0 = dv.getFloat32Array( 3 );
-				p.skinR1 = dv.getFloat32Array( 3 );
-
-				// SDEF is not supported yet and is handled as BDEF2 so far.
-				// TODO: SDEF support
-				p.type = 1;
-
-			} else {
-
-				throw 'unsupport bone type ' + p.type + ' exception.';
-
-			}
-
-			p.edgeRatio = dv.getFloat32();
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.vertexCount = dv.getUint32();
-
-		pmx.vertices = [];
-
-		for ( var i = 0; i < metadata.vertexCount; i++ ) {
-
-			pmx.vertices.push( parseVertex() );
-
-		}
-
-	};
-
-	var parseFaces = function () {
-
-		var parseFace = function () {
-
-			var p = {};
-			p.indices = dv.getIndexArray( metadata.vertexIndexSize, 3, true );
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.faceCount = dv.getUint32() / 3;
-
-		pmx.faces = [];
-
-		for ( var i = 0; i < metadata.faceCount; i++ ) {
-
-			pmx.faces.push( parseFace() );
-
-		}
-
-	};
-
-	var parseTextures = function () {
-
-		var parseTexture = function () {
-
-			return dv.getTextBuffer();
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.textureCount = dv.getUint32();
-
-		pmx.textures = [];
-
-		for ( var i = 0; i < metadata.textureCount; i++ ) {
-
-			pmx.textures.push( parseTexture() );
-
-		}
-
-	};
-
-	var parseMaterials = function () {
-
-		var parseMaterial = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.diffuse = dv.getFloat32Array( 4 );
-			p.specular = dv.getFloat32Array( 3 );
-			p.shininess = dv.getFloat32();
-			p.ambient = dv.getFloat32Array( 3 );
-			p.flag = dv.getUint8();
-			p.edgeColor = dv.getFloat32Array( 4 );
-			p.edgeSize = dv.getFloat32();
-			p.textureIndex = dv.getIndex( pmx.metadata.textureIndexSize );
-			p.envTextureIndex = dv.getIndex( pmx.metadata.textureIndexSize );
-			p.envFlag = dv.getUint8();
-			p.toonFlag = dv.getUint8();
-
-			if ( p.toonFlag === 0 ) {
-
-				p.toonIndex = dv.getIndex( pmx.metadata.textureIndexSize );
-
-			} else if ( p.toonFlag === 1 ) {
-
-				p.toonIndex = dv.getInt8();
-
-			} else {
-
-				throw 'unknown toon flag ' + p.toonFlag + ' exception.';
-
-			}
-
-			p.comment = dv.getTextBuffer();
-			p.faceCount = dv.getUint32() / 3;
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.materialCount = dv.getUint32();
-
-		pmx.materials = [];
-
-		for ( var i = 0; i < metadata.materialCount; i++ ) {
-
-			pmx.materials.push( parseMaterial() );
-
-		}
-
-	};
-
-	var parseBones = function () {
-
-		var parseBone = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.position = dv.getFloat32Array( 3 );
-			p.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize );
-			p.transformationClass = dv.getUint32();
-			p.flag = dv.getUint16();
-
-			if ( p.flag & 0x1 ) {
-
-				p.connectIndex = dv.getIndex( pmx.metadata.boneIndexSize );
-
-			} else {
-
-				p.offsetPosition = dv.getFloat32Array( 3 );
-
-			}
-
-			if ( p.flag & 0x100 || p.flag & 0x200 ) {
-
-				// Note: I don't think Grant is an appropriate name
-				//       but I found that some English translated MMD tools use this term
-				//       so I've named it Grant so far.
-				//       I'd rename to more appropriate name from Grant later.
-				var grant = {};
-
-				grant.isLocal = ( p.flag & 0x80 ) !== 0 ? true : false;
-				grant.affectRotation = ( p.flag & 0x100 ) !== 0 ? true : false;
-				grant.affectPosition = ( p.flag & 0x200 ) !== 0 ? true : false;
-				grant.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize );
-				grant.ratio = dv.getFloat32();
-
-				p.grant = grant;
-
-			}
-
-			if ( p.flag & 0x400 ) {
-
-				p.fixAxis = dv.getFloat32Array( 3 );
-
-			}
-
-			if ( p.flag & 0x800 ) {
-
-				p.localXVector = dv.getFloat32Array( 3 );
-				p.localZVector = dv.getFloat32Array( 3 );
-
-			}
-
-			if ( p.flag & 0x2000 ) {
-
-				p.key = dv.getUint32();
-
-			}
-
-			if ( p.flag & 0x20 ) {
-
-				var ik = {};
-
-				ik.effector = dv.getIndex( pmx.metadata.boneIndexSize );
-				ik.target = null;
-				ik.iteration = dv.getUint32();
-				ik.maxAngle = dv.getFloat32();
-				ik.linkCount = dv.getUint32();
-				ik.links = [];
-
-				for ( var i = 0; i < ik.linkCount; i++ ) {
-
-					var link = {};
-					link.index = dv.getIndex( pmx.metadata.boneIndexSize );
-					link.angleLimitation = dv.getUint8();
-
-					if ( link.angleLimitation === 1 ) {
-
-						link.lowerLimitationAngle = dv.getFloat32Array( 3 );
-						link.upperLimitationAngle = dv.getFloat32Array( 3 );
-
-					}
-
-					ik.links.push( link );
-
-				}
-
-				p.ik = ik;
-			}
-
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.boneCount = dv.getUint32();
-
-		pmx.bones = [];
-
-		for ( var i = 0; i < metadata.boneCount; i++ ) {
-
-			pmx.bones.push( parseBone() );
-
-		}
-
-	};
-
-	var parseMorphs = function () {
-
-		var parseMorph = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.panel = dv.getUint8();
-			p.type = dv.getUint8();
-			p.elementCount = dv.getUint32();
-			p.elements = [];
-
-			for ( var i = 0; i < p.elementCount; i++ ) {
-
-				if ( p.type === 0 ) {  // group morph
-
-					var m = {};
-					m.index = dv.getIndex( pmx.metadata.morphIndexSize );
-					m.ratio = dv.getFloat32();
-					p.elements.push( m );
-
-				} else if ( p.type === 1 ) {  // vertex morph
-
-					var m = {};
-					m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true );
-					m.position = dv.getFloat32Array( 3 );
-					p.elements.push( m );
-
-				} else if ( p.type === 2 ) {  // bone morph
-
-					var m = {};
-					m.index = dv.getIndex( pmx.metadata.boneIndexSize );
-					m.position = dv.getFloat32Array( 3 );
-					m.rotation = dv.getFloat32Array( 4 );
-					p.elements.push( m );
-
-				} else if ( p.type === 3 ) {  // uv morph
-
-					var m = {};
-					m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true );
-					m.uv = dv.getFloat32Array( 4 );
-					p.elements.push( m );
-
-				} else if ( p.type === 4 ) {  // additional uv1
-
-					// TODO: implement
-
-				} else if ( p.type === 5 ) {  // additional uv2
-
-					// TODO: implement
-
-				} else if ( p.type === 6 ) {  // additional uv3
-
-					// TODO: implement
-
-				} else if ( p.type === 7 ) {  // additional uv4
-
-					// TODO: implement
-
-				} else if ( p.type === 8 ) {  // material morph
-
-					var m = {};
-					m.index = dv.getIndex( pmx.metadata.materialIndexSize );
-					m.type = dv.getUint8();
-					m.diffuse = dv.getFloat32Array( 4 );
-					m.specular = dv.getFloat32Array( 3 );
-					m.shininess = dv.getFloat32();
-					m.ambient = dv.getFloat32Array( 3 );
-					m.edgeColor = dv.getFloat32Array( 4 );
-					m.edgeSize = dv.getFloat32();
-					m.textureColor = dv.getFloat32Array( 4 );
-					m.sphereTextureColor = dv.getFloat32Array( 4 );
-					m.toonColor = dv.getFloat32Array( 4 );
-					p.elements.push( m );
-
-				}
-
-			}
-
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.morphCount = dv.getUint32();
-
-		pmx.morphs = [];
-
-		for ( var i = 0; i < metadata.morphCount; i++ ) {
-
-			pmx.morphs.push( parseMorph() );
-
-		}
-
-	};
-
-	var parseFrames = function () {
-
-		var parseFrame = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.type = dv.getUint8();
-			p.elementCount = dv.getUint32();
-			p.elements = [];
-
-			for ( var i = 0; i < p.elementCount; i++ ) {
-
-				var e = {};
-				e.target = dv.getUint8();
-				e.index = ( e.target === 0 ) ? dv.getIndex( pmx.metadata.boneIndexSize ) : dv.getIndex( pmx.metadata.morphIndexSize );
-				p.elements.push( e );
-
-			}
-
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.frameCount = dv.getUint32();
-
-		pmx.frames = [];
-
-		for ( var i = 0; i < metadata.frameCount; i++ ) {
-
-			pmx.frames.push( parseFrame() );
-
-		}
-
-	};
-
-	var parseRigidBodies = function () {
-
-		var parseRigidBody = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.boneIndex = dv.getIndex( pmx.metadata.boneIndexSize );
-			p.groupIndex = dv.getUint8();
-			p.groupTarget = dv.getUint16();
-			p.shapeType = dv.getUint8();
-			p.width = dv.getFloat32();
-			p.height = dv.getFloat32();
-			p.depth = dv.getFloat32();
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 3 );
-			p.weight = dv.getFloat32();
-			p.positionDamping = dv.getFloat32();
-			p.rotationDamping = dv.getFloat32();
-			p.restitution = dv.getFloat32();
-			p.friction = dv.getFloat32();
-			p.type = dv.getUint8();
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.rigidBodyCount = dv.getUint32();
-
-		pmx.rigidBodies = [];
-
-		for ( var i = 0; i < metadata.rigidBodyCount; i++ ) {
-
-			pmx.rigidBodies.push( parseRigidBody() );
-
-		}
-
-	};
-
-	var parseConstraints = function () {
-
-		var parseConstraint = function () {
-
-			var p = {};
-			p.name = dv.getTextBuffer();
-			p.englishName = dv.getTextBuffer();
-			p.type = dv.getUint8();
-			p.rigidBodyIndex1 = dv.getIndex( pmx.metadata.rigidBodyIndexSize );
-			p.rigidBodyIndex2 = dv.getIndex( pmx.metadata.rigidBodyIndexSize );
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 3 );
-			p.translationLimitation1 = dv.getFloat32Array( 3 );
-			p.translationLimitation2 = dv.getFloat32Array( 3 );
-			p.rotationLimitation1 = dv.getFloat32Array( 3 );
-			p.rotationLimitation2 = dv.getFloat32Array( 3 );
-			p.springPosition = dv.getFloat32Array( 3 );
-			p.springRotation = dv.getFloat32Array( 3 );
-			return p;
-
-		};
-
-		var metadata = pmx.metadata;
-		metadata.constraintCount = dv.getUint32();
-
-		pmx.constraints = [];
-
-		for ( var i = 0; i < metadata.constraintCount; i++ ) {
-
-			pmx.constraints.push( parseConstraint() );
-
-		}
-
-	};
-
-	parseHeader();
-	parseVertices();
-	parseFaces();
-	parseTextures();
-	parseMaterials();
-	parseBones();
-	parseMorphs();
-	parseFrames();
-	parseRigidBodies();
-	parseConstraints();
-
-	if ( leftToRight === true ) this.leftToRightModel( pmx );
-
-	// console.log( pmx ); // for console debug
-
-	return pmx;
-
-};
-
-Parser.prototype.parseVmd = function ( buffer, leftToRight ) {
-
-	var vmd = {};
-	var dv = new DataViewEx( buffer );
-
-	vmd.metadata = {};
-	vmd.metadata.coordinateSystem = 'left';
-
-	var parseHeader = function () {
-
-		var metadata = vmd.metadata;
-		metadata.magic = dv.getChars( 30 );
-
-		if ( metadata.magic !== 'Vocaloid Motion Data 0002' ) {
-
-			throw 'VMD file magic is not Vocaloid Motion Data 0002, but ' + metadata.magic;
-
-		}
-
-		metadata.name = dv.getSjisStringsAsUnicode( 20 );
-
-	};
-
-	var parseMotions = function () {
-
-		var parseMotion = function () {
-
-			var p = {};
-			p.boneName = dv.getSjisStringsAsUnicode( 15 );
-			p.frameNum = dv.getUint32();
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 4 );
-			p.interpolation = dv.getUint8Array( 64 );
-			return p;
-
-		};
-
-		var metadata = vmd.metadata;
-		metadata.motionCount = dv.getUint32();
-
-		vmd.motions = [];
-		for ( var i = 0; i < metadata.motionCount; i++ ) {
-
-			vmd.motions.push( parseMotion() );
-
-		}
-
-	};
-
-	var parseMorphs = function () {
-
-		var parseMorph = function () {
-
-			var p = {};
-			p.morphName = dv.getSjisStringsAsUnicode( 15 );
-			p.frameNum = dv.getUint32();
-			p.weight = dv.getFloat32();
-			return p;
-
-		};
-
-		var metadata = vmd.metadata;
-		metadata.morphCount = dv.getUint32();
-
-		vmd.morphs = [];
-		for ( var i = 0; i < metadata.morphCount; i++ ) {
-
-			vmd.morphs.push( parseMorph() );
-
-		}
-
-	};
-
-	var parseCameras = function () {
-
-		var parseCamera = function () {
-
-			var p = {};
-			p.frameNum = dv.getUint32();
-			p.distance = dv.getFloat32();
-			p.position = dv.getFloat32Array( 3 );
-			p.rotation = dv.getFloat32Array( 3 );
-			p.interpolation = dv.getUint8Array( 24 );
-			p.fov = dv.getUint32();
-			p.perspective = dv.getUint8();
-			return p;
-
-		};
-
-		var metadata = vmd.metadata;
-		metadata.cameraCount = dv.getUint32();
-
-		vmd.cameras = [];
-		for ( var i = 0; i < metadata.cameraCount; i++ ) {
-
-			vmd.cameras.push( parseCamera() );
-
-		}
-
-	};
-
-	parseHeader();
-	parseMotions();
-	parseMorphs();
-	parseCameras();
-
-	if ( leftToRight === true ) this.leftToRightVmd( vmd );
-
-	// console.log( vmd ); // for console debug
-
-	return vmd;
-
-};
-
-Parser.prototype.parseVpd = function ( text, leftToRight ) {
-
-	var vpd = {};
-
-	vpd.metadata = {};
-	vpd.metadata.coordinateSystem = 'left';
-
-	vpd.bones = [];
-
-	var commentPatternG = /\/\/\w*(\r|\n|\r\n)/g;
-	var newlinePattern = /\r|\n|\r\n/;
-
-	var lines = text.replace( commentPatternG, '' ).split( newlinePattern );
-
-	function throwError () {
-
-		throw 'the file seems not vpd file.';
-
-	}
-
-	function checkMagic () {
-
-		if ( lines[ 0 ] !== 'Vocaloid Pose Data file' ) {
-
-			throwError();
-
-		}
-
-	}
-
-	function parseHeader () {
-
-		if ( lines.length < 4 ) {
-
-			throwError();
-
-		}
-
-		vpd.metadata.parentFile = lines[ 2 ];
-		vpd.metadata.boneCount = parseInt( lines[ 3 ] );
-
-	}
-
-	function parseBones () {
-
-		var boneHeaderPattern = /^\s*(Bone[0-9]+)\s*\{\s*(.*)$/;
-		var boneVectorPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/;
-		var boneQuaternionPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/;
-		var boneFooterPattern = /^\s*}/;
-
-		var bones = vpd.bones;
-		var n = null;
-		var v = null;
-		var q = null;
-
-		for ( var i = 4; i < lines.length; i++ ) {
-
-			var line = lines[ i ];
-
-			var result;
-
-			result = line.match( boneHeaderPattern );
-
-			if ( result !== null ) {
-
-				if ( n !== null ) {
-
-					throwError();
-
-				}
-
-				n = result[ 2 ];
-
-			}
-
-			result = line.match( boneVectorPattern );
-
-			if ( result !== null ) {
-
-				if ( v !== null ) {
-
-					throwError();
-
-				}
-
-				v = [
-
-					parseFloat( result[ 1 ] ),
-					parseFloat( result[ 2 ] ),
-					parseFloat( result[ 3 ] )
-
-				];
-
-			}
-
-			result = line.match( boneQuaternionPattern );
-
-			if ( result !== null ) {
-
-				if ( q !== null ) {
-
-					throwError();
-
-				}
-
-				q = [
-
-					parseFloat( result[ 1 ] ),
-					parseFloat( result[ 2 ] ),
-					parseFloat( result[ 3 ] ),
-					parseFloat( result[ 4 ] )
-
-				];
-
-
-			}
-
-			result = line.match( boneFooterPattern );
-
-			if ( result !== null ) {
-
-				if ( n === null || v === null || q === null ) {
-
-					throwError();
-
-				}
-
-				bones.push( {
-
-					name: n,
-					translation: v,
-					quaternion: q
-
-				} );
-
-				n = null;
-				v = null;
-				q = null;
-
-			}
-
-		}
-
-		if ( n !== null || v !== null || q !== null ) {
-
-			throwError();
-
-		}
-
-	}
-
-	checkMagic();
-	parseHeader();
-	parseBones();
-
-	if ( leftToRight === true ) this.leftToRightVpd( vpd );
-
-	// console.log( vpd );  // for console debug
-
-	return vpd;
-
-};
-
-Parser.prototype.mergeVmds = function ( vmds ) {
-
-	var v = {};
-	v.metadata = {};
-	v.metadata.name = vmds[ 0 ].metadata.name;
-	v.metadata.coordinateSystem = vmds[ 0 ].metadata.coordinateSystem;
-	v.metadata.motionCount = 0;
-	v.metadata.morphCount = 0;
-	v.metadata.cameraCount = 0;
-	v.motions = [];
-	v.morphs = [];
-	v.cameras = [];
-
-	for ( var i = 0; i < vmds.length; i++ ) {
-
-		var v2 = vmds[ i ];
-
-		v.metadata.motionCount += v2.metadata.motionCount;
-		v.metadata.morphCount += v2.metadata.morphCount;
-		v.metadata.cameraCount += v2.metadata.cameraCount;
-
-		for ( var j = 0; j < v2.metadata.motionCount; j++ ) {
-
-			v.motions.push( v2.motions[ j ] );
-
-		}
-
-		for ( var j = 0; j < v2.metadata.morphCount; j++ ) {
-
-			v.morphs.push( v2.morphs[ j ] );
-
-		}
-
-		for ( var j = 0; j < v2.metadata.cameraCount; j++ ) {
-
-			v.cameras.push( v2.cameras[ j ] );
-
-		}
-
-	}
-
-	return v;
-
-};
-
-Parser.prototype.leftToRightModel = function ( model ) {
-
-	if ( model.metadata.coordinateSystem === 'right' ) {
-
-		return;
-
-	}
-
-	model.metadata.coordinateSystem = 'right';
-
-	var helper = new DataCreationHelper();
-
-	for ( var i = 0; i < model.metadata.vertexCount; i++ ) {
-
-		helper.leftToRightVector3( model.vertices[ i ].position );
-		helper.leftToRightVector3( model.vertices[ i ].normal );
-
-	}
-
-	for ( var i = 0; i < model.metadata.faceCount; i++ ) {
-
-		helper.leftToRightIndexOrder( model.faces[ i ].indices );
-
-	}
-
-	for ( var i = 0; i < model.metadata.boneCount; i++ ) {
-
-		helper.leftToRightVector3( model.bones[ i ].position );
-
-	}
-
-	// TODO: support other morph for PMX
-	for ( var i = 0; i < model.metadata.morphCount; i++ ) {
-
-		var m = model.morphs[ i ];
-
-		if ( model.metadata.format === 'pmx' && m.type !== 1 ) {
-
-			// TODO: implement
-			continue;
-
-		}
-
-		for ( var j = 0; j < m.elements.length; j++ ) {
-
-			helper.leftToRightVector3( m.elements[ j ].position );
-
-		}
-
-	}
-
-	for ( var i = 0; i < model.metadata.rigidBodyCount; i++ ) {
-
-		helper.leftToRightVector3( model.rigidBodies[ i ].position );
-		helper.leftToRightEuler( model.rigidBodies[ i ].rotation );
-
-	}
-
-	for ( var i = 0; i < model.metadata.constraintCount; i++ ) {
-
-		helper.leftToRightVector3( model.constraints[ i ].position );
-		helper.leftToRightEuler( model.constraints[ i ].rotation );
-		helper.leftToRightVector3Range( model.constraints[ i ].translationLimitation1, model.constraints[ i ].translationLimitation2 );
-		helper.leftToRightEulerRange( model.constraints[ i ].rotationLimitation1, model.constraints[ i ].rotationLimitation2 );
-
-	}
-
-};
-
-Parser.prototype.leftToRightVmd = function ( vmd ) {
-
-	if ( vmd.metadata.coordinateSystem === 'right' ) {
-
-		return;
-
-	}
-
-	vmd.metadata.coordinateSystem = 'right';
-
-	var helper = new DataCreationHelper();
-
-	for ( var i = 0; i < vmd.metadata.motionCount; i++ ) {
-
-		helper.leftToRightVector3( vmd.motions[ i ].position );
-		helper.leftToRightQuaternion( vmd.motions[ i ].rotation );
-
-	}
-
-	for ( var i = 0; i < vmd.metadata.cameraCount; i++ ) {
-
-		helper.leftToRightVector3( vmd.cameras[ i ].position );
-		helper.leftToRightEuler( vmd.cameras[ i ].rotation );
-
-	}
-
-};
-
-Parser.prototype.leftToRightVpd = function ( vpd ) {
-
-	if ( vpd.metadata.coordinateSystem === 'right' ) {
-
-		return;
-
-	}
-
-	vpd.metadata.coordinateSystem = 'right';
-
-	var helper = new DataCreationHelper();
-
-	for ( var i = 0; i < vpd.bones.length; i++ ) {
-
-		helper.leftToRightVector3( vpd.bones[ i ].translation );
-		helper.leftToRightQuaternion( vpd.bones[ i ].quaternion );
-
-	}
-
-};
-
-var MMDParser = {
-  CharsetEncoder: CharsetEncoder,
-  Parser: Parser
-};
-
-export { MMDParser, CharsetEncoder, Parser };

+ 0 - 2298
examples/jsm/loaders/MMDLoader.js

@@ -1,2298 +0,0 @@
-import {
-	AddOperation,
-	AnimationClip,
-	Bone,
-	BufferGeometry,
-	Color,
-	CustomBlending,
-	TangentSpaceNormalMap,
-	DoubleSide,
-	DstAlphaFactor,
-	Euler,
-	FileLoader,
-	Float32BufferAttribute,
-	FrontSide,
-	Interpolant,
-	Loader,
-	LoaderUtils,
-	UniformsUtils,
-	ShaderMaterial,
-	MultiplyOperation,
-	NearestFilter,
-	NumberKeyframeTrack,
-	OneMinusSrcAlphaFactor,
-	Quaternion,
-	QuaternionKeyframeTrack,
-	RepeatWrapping,
-	Skeleton,
-	SkinnedMesh,
-	SrcAlphaFactor,
-	SRGBColorSpace,
-	TextureLoader,
-	Uint16BufferAttribute,
-	Vector3,
-	VectorKeyframeTrack,
-	RGB_S3TC_DXT1_Format,
-	RGB_PVRTC_4BPPV1_Format,
-	RGB_PVRTC_2BPPV1_Format,
-	RGB_ETC1_Format,
-	RGB_ETC2_Format
-} from 'three';
-import { MMDToonShader } from '../shaders/MMDToonShader.js';
-import { TGALoader } from '../loaders/TGALoader.js';
-import { MMDParser } from '../libs/mmdparser.module.js';
-
-/**
- * Dependencies
- *  - mmd-parser https://github.com/takahirox/mmd-parser
- *  - TGALoader
- *  - OutlineEffect
- *
- * MMDLoader creates Three.js Objects from MMD resources as
- * PMD, PMX, VMD, and VPD files.
- *
- * PMD/PMX is a model data format, VMD is a motion data format
- * VPD is a posing data format used in MMD(Miku Miku Dance).
- *
- * MMD official site
- *  - https://sites.google.com/view/evpvp/
- *
- * PMD, VMD format (in Japanese)
- *  - http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4
- *
- * PMX format
- *  - https://gist.github.com/felixjones/f8a06bd48f9da9a4539f
- *
- * TODO
- *  - light motion in vmd support.
- *  - SDEF support.
- *  - uv/material/bone morphing support.
- *  - more precise grant skinning support.
- *  - shadow support.
- */
-
-/**
- * @param {THREE.LoadingManager} manager
- */
-class MMDLoader extends Loader {
-
-	constructor( manager ) {
-
-		super( manager );
-
-		this.loader = new FileLoader( this.manager );
-
-		this.parser = null; // lazy generation
-		this.meshBuilder = new MeshBuilder( this.manager );
-		this.animationBuilder = new AnimationBuilder();
-
-		console.warn( 'THREE.MMDLoader: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
-
-	}
-
-	/**
-	 * @param {string} animationPath
-	 * @return {MMDLoader}
-	 */
-	setAnimationPath( animationPath ) {
-
-		this.animationPath = animationPath;
-		return this;
-
-	}
-
-	// Load MMD assets as Three.js Object
-
-	/**
-	 * Loads Model file (.pmd or .pmx) as a SkinnedMesh.
-	 *
-	 * @param {string} url - url to Model(.pmd or .pmx) file
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	load( url, onLoad, onProgress, onError ) {
-
-		const builder = this.meshBuilder.setCrossOrigin( this.crossOrigin );
-
-		// resource path
-
-		let resourcePath;
-
-		if ( this.resourcePath !== '' ) {
-
-			resourcePath = this.resourcePath;
-
-		} else if ( this.path !== '' ) {
-
-			resourcePath = this.path;
-
-		} else {
-
-			resourcePath = LoaderUtils.extractUrlBase( url );
-
-		}
-
-		const parser = this._getParser();
-		const extractModelExtension = this._extractModelExtension;
-
-		this.loader
-			.setMimeType( undefined )
-			.setPath( this.path )
-			.setResponseType( 'arraybuffer' )
-			.setRequestHeader( this.requestHeader )
-			.setWithCredentials( this.withCredentials )
-			.load( url, function ( buffer ) {
-
-				try {
-
-					const modelExtension = extractModelExtension( buffer );
-
-					if ( modelExtension !== 'pmd' && modelExtension !== 'pmx' ) {
-
-						if ( onError ) onError( new Error( 'THREE.MMDLoader: Unknown model file extension .' + modelExtension + '.' ) );
-
-						return;
-
-					}
-
-					const data = modelExtension === 'pmd' ? parser.parsePmd( buffer, true ) : parser.parsePmx( buffer, true );
-
-					onLoad( builder.build( data, resourcePath, onProgress, onError ) );
-
-				} catch ( e ) {
-
-					if ( onError ) onError( e );
-
-				}
-
-			}, onProgress, onError );
-
-	}
-
-	/**
-	 * Loads Motion file(s) (.vmd) as a AnimationClip.
-	 * If two or more files are specified, they'll be merged.
-	 *
-	 * @param {string|Array<string>} url - url(s) to animation(.vmd) file(s)
-	 * @param {SkinnedMesh|THREE.Camera} object - tracks will be fitting to this object
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadAnimation( url, object, onLoad, onProgress, onError ) {
-
-		const builder = this.animationBuilder;
-
-		this.loadVMD( url, function ( vmd ) {
-
-			onLoad( object.isCamera
-				? builder.buildCameraAnimation( vmd )
-				: builder.build( vmd, object ) );
-
-		}, onProgress, onError );
-
-	}
-
-	/**
-	 * Loads mode file and motion file(s) as an object containing
-	 * a SkinnedMesh and a AnimationClip.
-	 * Tracks of AnimationClip are fitting to the model.
-	 *
-	 * @param {string} modelUrl - url to Model(.pmd or .pmx) file
-	 * @param {string|Array{string}} vmdUrl - url(s) to animation(.vmd) file
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadWithAnimation( modelUrl, vmdUrl, onLoad, onProgress, onError ) {
-
-		const scope = this;
-
-		this.load( modelUrl, function ( mesh ) {
-
-			scope.loadAnimation( vmdUrl, mesh, function ( animation ) {
-
-				onLoad( {
-					mesh: mesh,
-					animation: animation
-				} );
-
-			}, onProgress, onError );
-
-		}, onProgress, onError );
-
-	}
-
-	// Load MMD assets as Object data parsed by MMDParser
-
-	/**
-	 * Loads .pmd file as an Object.
-	 *
-	 * @param {string} url - url to .pmd file
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadPMD( url, onLoad, onProgress, onError ) {
-
-		const parser = this._getParser();
-
-		this.loader
-			.setMimeType( undefined )
-			.setPath( this.path )
-			.setResponseType( 'arraybuffer' )
-			.setRequestHeader( this.requestHeader )
-			.setWithCredentials( this.withCredentials )
-			.load( url, function ( buffer ) {
-
-				try {
-
-					onLoad( parser.parsePmd( buffer, true ) );
-
-				} catch ( e ) {
-
-					if ( onError ) onError( e );
-
-				}
-
-			}, onProgress, onError );
-
-	}
-
-	/**
-	 * Loads .pmx file as an Object.
-	 *
-	 * @param {string} url - url to .pmx file
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadPMX( url, onLoad, onProgress, onError ) {
-
-		const parser = this._getParser();
-
-		this.loader
-			.setMimeType( undefined )
-			.setPath( this.path )
-			.setResponseType( 'arraybuffer' )
-			.setRequestHeader( this.requestHeader )
-			.setWithCredentials( this.withCredentials )
-			.load( url, function ( buffer ) {
-
-				try {
-
-					onLoad( parser.parsePmx( buffer, true ) );
-
-				} catch ( e ) {
-
-					if ( onError ) onError( e );
-
-				}
-
-			}, onProgress, onError );
-
-	}
-
-	/**
-	 * Loads .vmd file as an Object. If two or more files are specified
-	 * they'll be merged.
-	 *
-	 * @param {string|Array<string>} url - url(s) to .vmd file(s)
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadVMD( url, onLoad, onProgress, onError ) {
-
-		const urls = Array.isArray( url ) ? url : [ url ];
-
-		const vmds = [];
-		const vmdNum = urls.length;
-
-		const parser = this._getParser();
-
-		this.loader
-			.setMimeType( undefined )
-			.setPath( this.animationPath )
-			.setResponseType( 'arraybuffer' )
-			.setRequestHeader( this.requestHeader )
-			.setWithCredentials( this.withCredentials );
-
-		for ( let i = 0, il = urls.length; i < il; i ++ ) {
-
-			this.loader.load( urls[ i ], function ( buffer ) {
-
-				try {
-
-					vmds.push( parser.parseVmd( buffer, true ) );
-
-					if ( vmds.length === vmdNum ) onLoad( parser.mergeVmds( vmds ) );
-
-				} catch ( e ) {
-
-					if ( onError ) onError( e );
-
-				}
-
-			}, onProgress, onError );
-
-		}
-
-	}
-
-	/**
-	 * Loads .vpd file as an Object.
-	 *
-	 * @param {string} url - url to .vpd file
-	 * @param {boolean} isUnicode
-	 * @param {function} onLoad
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 */
-	loadVPD( url, isUnicode, onLoad, onProgress, onError ) {
-
-		const parser = this._getParser();
-
-		this.loader
-			.setMimeType( isUnicode ? undefined : 'text/plain; charset=shift_jis' )
-			.setPath( this.animationPath )
-			.setResponseType( 'text' )
-			.setRequestHeader( this.requestHeader )
-			.setWithCredentials( this.withCredentials )
-			.load( url, function ( text ) {
-
-				try {
-
-					onLoad( parser.parseVpd( text, true ) );
-
-				} catch ( e ) {
-
-					if ( onError ) onError( e );
-
-				}
-
-			}, onProgress, onError );
-
-	}
-
-	// private methods
-
-	_extractModelExtension( buffer ) {
-
-		const decoder = new TextDecoder( 'utf-8' );
-		const bytes = new Uint8Array( buffer, 0, 3 );
-		return decoder.decode( bytes ).toLowerCase();
-
-	}
-
-	_getParser() {
-
-		if ( this.parser === null ) {
-
-			this.parser = new MMDParser.Parser();
-
-		}
-
-		return this.parser;
-
-	}
-
-}
-
-// Utilities
-
-/*
-	 * base64 encoded defalut toon textures toon00.bmp - toon10.bmp.
-	 * We don't need to request external toon image files.
-	 */
-const DEFAULT_TOON_TEXTURES = [
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/bWiiMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh8aBHZBl14e8wAAAABJRU5ErkJggg==',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOUlEQVRYR+3WMREAMAwDsYY/yoDI7MLwIiP40+RJklfcCCBAgAABAgTqArfb/QMCCBAgQIAAgbbAB3z/e0F3js2cAAAAAElFTkSuQmCC',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/B5ilMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh81dWyx0gFwKAAAAABJRU5ErkJggg==',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOklEQVRYR+3WoREAMAwDsWb/UQtCy9wxTOQJ/oQ8SXKKGwEECBAgQIBAXeDt7f4BAQQIECBAgEBb4AOz8Hzx7WLY4wAAAABJRU5ErkJggg==',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABPUlEQVRYR+1XwW7CMAy1+f9fZOMysSEOEweEOPRNdm3HbdOyIhAcklPrOs/PLy9RygBALxzcCDQFmgJNgaZAU6Ap0BR4PwX8gsRMVLssMRH5HcpzJEaWL7EVg9F1IHRlyqQohgVr4FGUlUcMJSjcUlDw0zvjeun70cLWmneoyf7NgBTQSniBTQQSuJAZsOnnaczjIMb5hCiuHKxokCrJfVnrctyZL0PkJAJe1HMil4nxeyi3Ypfn1kX51jpPvo/JeCNC4PhVdHdJw2XjBR8brF8PEIhNVn12AgP7uHsTBguBn53MUZCqv7Lp07Pn5k1Ro+uWmUNn7D+M57rtk7aG0Vo73xyF/fbFf0bPJjDXngnGocDTdFhygZjwUQrMNrDcmZlQT50VJ/g/UwNyHpu778+yW+/ksOz/BFo54P4AsUXMfRq7XWsAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACMElEQVRYR+2Xv4pTQRTGf2dubhLdICiii2KnYKHVolhauKWPoGAnNr6BD6CvIVaihYuI2i1ia0BY0MZGRHQXjZj/mSPnnskfNWiWZUlzJ5k7M2cm833nO5Mziej2DWWJRUoCpQKlAntSQCqgw39/iUWAGmh37jrRnVsKlgpiqmkoGVABA7E57fvY+pJDdgKqF6HzFCSADkDq+F6AHABtQ+UMVE5D7zXod7fFNhTEckTbj5XQgHzNN+5tQvc5NG7C6BNkp6D3EmpXHDR+dQAjFLchW3VS9rlw3JBh+B7ys5Cf9z0GW1C/7P32AyBAOAz1q4jGliIH3YPuBnSfQX4OGreTIgEYQb/pBDtPnEQ4CivXYPAWBk13oHrB54yA9QuSn2H4AcKRpEILDt0BUzj+RLR1V5EqjD66NPRBVpLcQwjHoHYJOhsQv6U4mnzmrIXJCFr4LDwm/xBUoboG9XX4cc9VKdYoSA2yk5NQLJaKDUjTBoveG3Z2TElTxwjNK4M3LEZgUdDdruvcXzKBpStgp2NPiWi3ks9ZXxIoFVi+AvHLdc9TqtjL3/aYjpPlrzOcEnK62Szhimdd7xX232zFDTgtxezOu3WNMRLjiKgjtOhHVMd1loynVHvOgjuIIJMaELEqhJAV/RCSLbWTcfPFakFgFlALTRRvx+ok6Hlp/Q+v3fmx90bMyUzaEAhmM3KvHlXTL5DxnbGf/1M8RNNACLL5MNtPxP/mypJAqcDSFfgFhpYqWUzhTEAAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=',
-	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII='
-];
-
-const NON_ALPHA_CHANNEL_FORMATS = [
-	RGB_S3TC_DXT1_Format,
-	RGB_PVRTC_4BPPV1_Format,
-	RGB_PVRTC_2BPPV1_Format,
-	RGB_ETC1_Format,
-	RGB_ETC2_Format
-];
-
-// Builders. They build Three.js object from Object data parsed by MMDParser.
-
-/**
- * @param {THREE.LoadingManager} manager
- */
-class MeshBuilder {
-
-	constructor( manager ) {
-
-		this.crossOrigin = 'anonymous';
-		this.geometryBuilder = new GeometryBuilder();
-		this.materialBuilder = new MaterialBuilder( manager );
-
-	}
-
-	/**
-	 * @param {string} crossOrigin
-	 * @return {MeshBuilder}
-	 */
-	setCrossOrigin( crossOrigin ) {
-
-		this.crossOrigin = crossOrigin;
-		return this;
-
-	}
-
-	/**
-	 * @param {Object} data - parsed PMD/PMX data
-	 * @param {string} resourcePath
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 * @return {SkinnedMesh}
-	 */
-	build( data, resourcePath, onProgress, onError ) {
-
-		const geometry = this.geometryBuilder.build( data );
-		const material = this.materialBuilder
-			.setCrossOrigin( this.crossOrigin )
-			.setResourcePath( resourcePath )
-			.build( data, geometry, onProgress, onError );
-
-		const mesh = new SkinnedMesh( geometry, material );
-
-		const skeleton = new Skeleton( initBones( mesh ) );
-		mesh.bind( skeleton );
-
-		// console.log( mesh ); // for console debug
-
-		return mesh;
-
-	}
-
-}
-
-// TODO: Try to remove this function
-
-function initBones( mesh ) {
-
-	const geometry = mesh.geometry;
-
-	const bones = [];
-
-	if ( geometry && geometry.bones !== undefined ) {
-
-		// first, create array of 'Bone' objects from geometry data
-
-		for ( let i = 0, il = geometry.bones.length; i < il; i ++ ) {
-
-			const gbone = geometry.bones[ i ];
-
-			// create new 'Bone' object
-
-			const bone = new Bone();
-			bones.push( bone );
-
-			// apply values
-
-			bone.name = gbone.name;
-			bone.position.fromArray( gbone.pos );
-			bone.quaternion.fromArray( gbone.rotq );
-			if ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );
-
-		}
-
-		// second, create bone hierarchy
-
-		for ( let i = 0, il = geometry.bones.length; i < il; i ++ ) {
-
-			const gbone = geometry.bones[ i ];
-
-			if ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) {
-
-				// subsequent bones in the hierarchy
-
-				bones[ gbone.parent ].add( bones[ i ] );
-
-			} else {
-
-				// topmost bone, immediate child of the skinned mesh
-
-				mesh.add( bones[ i ] );
-
-			}
-
-		}
-
-	}
-
-	// now the bones are part of the scene graph and children of the skinned mesh.
-	// let's update the corresponding matrices
-
-	mesh.updateMatrixWorld( true );
-
-	return bones;
-
-}
-
-//
-
-class GeometryBuilder {
-
-	/**
-	 * @param {Object} data - parsed PMD/PMX data
-	 * @return {BufferGeometry}
-	 */
-	build( data ) {
-
-		// for geometry
-		const positions = [];
-		const uvs = [];
-		const normals = [];
-
-		const indices = [];
-
-		const groups = [];
-
-		const bones = [];
-		const skinIndices = [];
-		const skinWeights = [];
-
-		const morphTargets = [];
-		const morphPositions = [];
-
-		const iks = [];
-		const grants = [];
-
-		const rigidBodies = [];
-		const constraints = [];
-
-		// for work
-		let offset = 0;
-		const boneTypeTable = {};
-
-		// positions, normals, uvs, skinIndices, skinWeights
-
-		for ( let i = 0; i < data.metadata.vertexCount; i ++ ) {
-
-			const v = data.vertices[ i ];
-
-			for ( let j = 0, jl = v.position.length; j < jl; j ++ ) {
-
-				positions.push( v.position[ j ] );
-
-			}
-
-			for ( let j = 0, jl = v.normal.length; j < jl; j ++ ) {
-
-				normals.push( v.normal[ j ] );
-
-			}
-
-			for ( let j = 0, jl = v.uv.length; j < jl; j ++ ) {
-
-				uvs.push( v.uv[ j ] );
-
-			}
-
-			for ( let j = 0; j < 4; j ++ ) {
-
-				skinIndices.push( v.skinIndices.length - 1 >= j ? v.skinIndices[ j ] : 0.0 );
-
-			}
-
-			for ( let j = 0; j < 4; j ++ ) {
-
-				skinWeights.push( v.skinWeights.length - 1 >= j ? v.skinWeights[ j ] : 0.0 );
-
-			}
-
-		}
-
-		// indices
-
-		for ( let i = 0; i < data.metadata.faceCount; i ++ ) {
-
-			const face = data.faces[ i ];
-
-			for ( let j = 0, jl = face.indices.length; j < jl; j ++ ) {
-
-				indices.push( face.indices[ j ] );
-
-			}
-
-		}
-
-		// groups
-
-		for ( let i = 0; i < data.metadata.materialCount; i ++ ) {
-
-			const material = data.materials[ i ];
-
-			groups.push( {
-				offset: offset * 3,
-				count: material.faceCount * 3
-			} );
-
-			offset += material.faceCount;
-
-		}
-
-		// bones
-
-		for ( let i = 0; i < data.metadata.rigidBodyCount; i ++ ) {
-
-			const body = data.rigidBodies[ i ];
-			let value = boneTypeTable[ body.boneIndex ];
-
-			// keeps greater number if already value is set without any special reasons
-			value = value === undefined ? body.type : Math.max( body.type, value );
-
-			boneTypeTable[ body.boneIndex ] = value;
-
-		}
-
-		for ( let i = 0; i < data.metadata.boneCount; i ++ ) {
-
-			const boneData = data.bones[ i ];
-
-			const bone = {
-				index: i,
-				transformationClass: boneData.transformationClass,
-				parent: boneData.parentIndex,
-				name: boneData.name,
-				pos: boneData.position.slice( 0, 3 ),
-				rotq: [ 0, 0, 0, 1 ],
-				scl: [ 1, 1, 1 ],
-				rigidBodyType: boneTypeTable[ i ] !== undefined ? boneTypeTable[ i ] : - 1
-			};
-
-			if ( bone.parent !== - 1 ) {
-
-				bone.pos[ 0 ] -= data.bones[ bone.parent ].position[ 0 ];
-				bone.pos[ 1 ] -= data.bones[ bone.parent ].position[ 1 ];
-				bone.pos[ 2 ] -= data.bones[ bone.parent ].position[ 2 ];
-
-			}
-
-			bones.push( bone );
-
-		}
-
-		// iks
-
-		// TODO: remove duplicated codes between PMD and PMX
-		if ( data.metadata.format === 'pmd' ) {
-
-			for ( let i = 0; i < data.metadata.ikCount; i ++ ) {
-
-				const ik = data.iks[ i ];
-
-				const param = {
-					target: ik.target,
-					effector: ik.effector,
-					iteration: ik.iteration,
-					maxAngle: ik.maxAngle * 4,
-					links: []
-				};
-
-				for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
-
-					const link = {};
-					link.index = ik.links[ j ].index;
-					link.enabled = true;
-
-					if ( data.bones[ link.index ].name.indexOf( 'ひざ' ) >= 0 ) {
-
-						link.limitation = new Vector3( 1.0, 0.0, 0.0 );
-
-					}
-
-					param.links.push( link );
-
-				}
-
-				iks.push( param );
-
-			}
-
-		} else {
-
-			for ( let i = 0; i < data.metadata.boneCount; i ++ ) {
-
-				const ik = data.bones[ i ].ik;
-
-				if ( ik === undefined ) continue;
-
-				const param = {
-					target: i,
-					effector: ik.effector,
-					iteration: ik.iteration,
-					maxAngle: ik.maxAngle,
-					links: []
-				};
-
-				for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
-
-					const link = {};
-					link.index = ik.links[ j ].index;
-					link.enabled = true;
-
-					if ( ik.links[ j ].angleLimitation === 1 ) {
-
-						// Revert if rotationMin/Max doesn't work well
-						// link.limitation = new Vector3( 1.0, 0.0, 0.0 );
-
-						const rotationMin = ik.links[ j ].lowerLimitationAngle;
-						const rotationMax = ik.links[ j ].upperLimitationAngle;
-
-						// Convert Left to Right coordinate by myself because
-						// MMDParser doesn't convert. It's a MMDParser's bug
-
-						const tmp1 = - rotationMax[ 0 ];
-						const tmp2 = - rotationMax[ 1 ];
-						rotationMax[ 0 ] = - rotationMin[ 0 ];
-						rotationMax[ 1 ] = - rotationMin[ 1 ];
-						rotationMin[ 0 ] = tmp1;
-						rotationMin[ 1 ] = tmp2;
-
-						link.rotationMin = new Vector3().fromArray( rotationMin );
-						link.rotationMax = new Vector3().fromArray( rotationMax );
-
-					}
-
-					param.links.push( link );
-
-				}
-
-				iks.push( param );
-
-				// Save the reference even from bone data for efficiently
-				// simulating PMX animation system
-				bones[ i ].ik = param;
-
-			}
-
-		}
-
-		// grants
-
-		if ( data.metadata.format === 'pmx' ) {
-
-			// bone index -> grant entry map
-			const grantEntryMap = {};
-
-			for ( let i = 0; i < data.metadata.boneCount; i ++ ) {
-
-				const boneData = data.bones[ i ];
-				const grant = boneData.grant;
-
-				if ( grant === undefined ) continue;
-
-				const param = {
-					index: i,
-					parentIndex: grant.parentIndex,
-					ratio: grant.ratio,
-					isLocal: grant.isLocal,
-					affectRotation: grant.affectRotation,
-					affectPosition: grant.affectPosition,
-					transformationClass: boneData.transformationClass
-				};
-
-				grantEntryMap[ i ] = { parent: null, children: [], param: param, visited: false };
-
-			}
-
-			const rootEntry = { parent: null, children: [], param: null, visited: false };
-
-			// Build a tree representing grant hierarchy
-
-			for ( const boneIndex in grantEntryMap ) {
-
-				const grantEntry = grantEntryMap[ boneIndex ];
-				const parentGrantEntry = grantEntryMap[ grantEntry.parentIndex ] || rootEntry;
-
-				grantEntry.parent = parentGrantEntry;
-				parentGrantEntry.children.push( grantEntry );
-
-			}
-
-			// Sort grant parameters from parents to children because
-			// grant uses parent's transform that parent's grant is already applied
-			// so grant should be applied in order from parents to children
-
-			function traverse( entry ) {
-
-				if ( entry.param ) {
-
-					grants.push( entry.param );
-
-					// Save the reference even from bone data for efficiently
-					// simulating PMX animation system
-					bones[ entry.param.index ].grant = entry.param;
-
-				}
-
-				entry.visited = true;
-
-				for ( let i = 0, il = entry.children.length; i < il; i ++ ) {
-
-					const child = entry.children[ i ];
-
-					// Cut off a loop if exists. (Is a grant loop invalid?)
-					if ( ! child.visited ) traverse( child );
-
-				}
-
-			}
-
-			traverse( rootEntry );
-
-		}
-
-		// morph
-
-		function updateAttributes( attribute, morph, ratio ) {
-
-			for ( let i = 0; i < morph.elementCount; i ++ ) {
-
-				const element = morph.elements[ i ];
-
-				let index;
-
-				if ( data.metadata.format === 'pmd' ) {
-
-					index = data.morphs[ 0 ].elements[ element.index ].index;
-
-				} else {
-
-					index = element.index;
-
-				}
-
-				attribute.array[ index * 3 + 0 ] += element.position[ 0 ] * ratio;
-				attribute.array[ index * 3 + 1 ] += element.position[ 1 ] * ratio;
-				attribute.array[ index * 3 + 2 ] += element.position[ 2 ] * ratio;
-
-			}
-
-		}
-
-		for ( let i = 0; i < data.metadata.morphCount; i ++ ) {
-
-			const morph = data.morphs[ i ];
-			const params = { name: morph.name };
-
-			const attribute = new Float32BufferAttribute( data.metadata.vertexCount * 3, 3 );
-			attribute.name = morph.name;
-
-			for ( let j = 0; j < data.metadata.vertexCount * 3; j ++ ) {
-
-				attribute.array[ j ] = positions[ j ];
-
-			}
-
-			if ( data.metadata.format === 'pmd' ) {
-
-				if ( i !== 0 ) {
-
-					updateAttributes( attribute, morph, 1.0 );
-
-				}
-
-			} else {
-
-				if ( morph.type === 0 ) { // group
-
-					for ( let j = 0; j < morph.elementCount; j ++ ) {
-
-						const morph2 = data.morphs[ morph.elements[ j ].index ];
-						const ratio = morph.elements[ j ].ratio;
-
-						if ( morph2.type === 1 ) {
-
-							updateAttributes( attribute, morph2, ratio );
-
-						} else {
-
-							// TODO: implement
-
-						}
-
-					}
-
-				} else if ( morph.type === 1 ) { // vertex
-
-					updateAttributes( attribute, morph, 1.0 );
-
-				} else if ( morph.type === 2 ) { // bone
-
-					// TODO: implement
-
-				} else if ( morph.type === 3 ) { // uv
-
-					// TODO: implement
-
-				} else if ( morph.type === 4 ) { // additional uv1
-
-					// TODO: implement
-
-				} else if ( morph.type === 5 ) { // additional uv2
-
-					// TODO: implement
-
-				} else if ( morph.type === 6 ) { // additional uv3
-
-					// TODO: implement
-
-				} else if ( morph.type === 7 ) { // additional uv4
-
-					// TODO: implement
-
-				} else if ( morph.type === 8 ) { // material
-
-					// TODO: implement
-
-				}
-
-			}
-
-			morphTargets.push( params );
-			morphPositions.push( attribute );
-
-		}
-
-		// rigid bodies from rigidBodies field.
-
-		for ( let i = 0; i < data.metadata.rigidBodyCount; i ++ ) {
-
-			const rigidBody = data.rigidBodies[ i ];
-			const params = {};
-
-			for ( const key in rigidBody ) {
-
-				params[ key ] = rigidBody[ key ];
-
-			}
-
-			/*
-				 * RigidBody position parameter in PMX seems global position
-				 * while the one in PMD seems offset from corresponding bone.
-				 * So unify being offset.
-				 */
-			if ( data.metadata.format === 'pmx' ) {
-
-				if ( params.boneIndex !== - 1 ) {
-
-					const bone = data.bones[ params.boneIndex ];
-					params.position[ 0 ] -= bone.position[ 0 ];
-					params.position[ 1 ] -= bone.position[ 1 ];
-					params.position[ 2 ] -= bone.position[ 2 ];
-
-				}
-
-			}
-
-			rigidBodies.push( params );
-
-		}
-
-		// constraints from constraints field.
-
-		for ( let i = 0; i < data.metadata.constraintCount; i ++ ) {
-
-			const constraint = data.constraints[ i ];
-			const params = {};
-
-			for ( const key in constraint ) {
-
-				params[ key ] = constraint[ key ];
-
-			}
-
-			const bodyA = rigidBodies[ params.rigidBodyIndex1 ];
-			const bodyB = rigidBodies[ params.rigidBodyIndex2 ];
-
-			// Refer to http://www20.atpages.jp/katwat/wp/?p=4135
-			if ( bodyA.type !== 0 && bodyB.type === 2 ) {
-
-				if ( bodyA.boneIndex !== - 1 && bodyB.boneIndex !== - 1 &&
-					     data.bones[ bodyB.boneIndex ].parentIndex === bodyA.boneIndex ) {
-
-					bodyB.type = 1;
-
-				}
-
-			}
-
-			constraints.push( params );
-
-		}
-
-		// build BufferGeometry.
-
-		const geometry = new BufferGeometry();
-
-		geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );
-		geometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );
-		geometry.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );
-		geometry.setAttribute( 'skinIndex', new Uint16BufferAttribute( skinIndices, 4 ) );
-		geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeights, 4 ) );
-		geometry.setIndex( indices );
-
-		for ( let i = 0, il = groups.length; i < il; i ++ ) {
-
-			geometry.addGroup( groups[ i ].offset, groups[ i ].count, i );
-
-		}
-
-		geometry.bones = bones;
-
-		geometry.morphTargets = morphTargets;
-		geometry.morphAttributes.position = morphPositions;
-		geometry.morphTargetsRelative = false;
-
-		geometry.userData.MMD = {
-			bones: bones,
-			iks: iks,
-			grants: grants,
-			rigidBodies: rigidBodies,
-			constraints: constraints,
-			format: data.metadata.format
-		};
-
-		geometry.computeBoundingSphere();
-
-		return geometry;
-
-	}
-
-}
-
-//
-
-/**
- * @param {THREE.LoadingManager} manager
- */
-class MaterialBuilder {
-
-	constructor( manager ) {
-
-		this.manager = manager;
-
-		this.textureLoader = new TextureLoader( this.manager );
-		this.tgaLoader = null; // lazy generation
-
-		this.crossOrigin = 'anonymous';
-		this.resourcePath = undefined;
-
-	}
-
-	/**
-	 * @param {string} crossOrigin
-	 * @return {MaterialBuilder}
-	 */
-	setCrossOrigin( crossOrigin ) {
-
-		this.crossOrigin = crossOrigin;
-		return this;
-
-	}
-
-	/**
-	 * @param {string} resourcePath
-	 * @return {MaterialBuilder}
-	 */
-	setResourcePath( resourcePath ) {
-
-		this.resourcePath = resourcePath;
-		return this;
-
-	}
-
-	/**
-	 * @param {Object} data - parsed PMD/PMX data
-	 * @param {BufferGeometry} geometry - some properties are dependend on geometry
-	 * @param {function} onProgress
-	 * @param {function} onError
-	 * @return {Array<MMDToonMaterial>}
-	 */
-	build( data, geometry /*, onProgress, onError */ ) {
-
-		const materials = [];
-
-		const textures = {};
-
-		this.textureLoader.setCrossOrigin( this.crossOrigin );
-
-		// materials
-
-		for ( let i = 0; i < data.metadata.materialCount; i ++ ) {
-
-			const material = data.materials[ i ];
-
-			const params = { userData: { MMD: {} } };
-
-			if ( material.name !== undefined ) params.name = material.name;
-
-			/*
-				 * Color
-				 *
-				 * MMD         MMDToonMaterial
-				 * ambient  -  emissive * a
-				 *               (a = 1.0 without map texture or 0.2 with map texture)
-				 *
-				 * MMDToonMaterial doesn't have ambient. Set it to emissive instead.
-				 * It'll be too bright if material has map texture so using coef 0.2.
-				 */
-			params.diffuse = new Color().setRGB(
-				material.diffuse[ 0 ],
-				material.diffuse[ 1 ],
-				material.diffuse[ 2 ],
-				SRGBColorSpace
-			);
-			params.opacity = material.diffuse[ 3 ];
-			params.specular = new Color().setRGB( ...material.specular, SRGBColorSpace );
-			params.shininess = material.shininess;
-			params.emissive = new Color().setRGB( ...material.ambient, SRGBColorSpace );
-			params.transparent = params.opacity !== 1.0;
-
-			//
-
-			params.fog = true;
-
-			// blend
-
-			params.blending = CustomBlending;
-			params.blendSrc = SrcAlphaFactor;
-			params.blendDst = OneMinusSrcAlphaFactor;
-			params.blendSrcAlpha = SrcAlphaFactor;
-			params.blendDstAlpha = DstAlphaFactor;
-
-			// side
-
-			if ( data.metadata.format === 'pmx' && ( material.flag & 0x1 ) === 1 ) {
-
-				params.side = DoubleSide;
-
-			} else {
-
-				params.side = params.opacity === 1.0 ? FrontSide : DoubleSide;
-
-			}
-
-			if ( data.metadata.format === 'pmd' ) {
-
-				// map, matcap
-
-				if ( material.fileName ) {
-
-					const fileName = material.fileName;
-					const fileNames = fileName.split( '*' );
-
-					// fileNames[ 0 ]: mapFileName
-					// fileNames[ 1 ]: matcapFileName( optional )
-
-					params.map = this._loadTexture( fileNames[ 0 ], textures );
-
-					if ( fileNames.length > 1 ) {
-
-						const extension = fileNames[ 1 ].slice( - 4 ).toLowerCase();
-
-						params.matcap = this._loadTexture(
-							fileNames[ 1 ],
-							textures
-						);
-
-						params.matcapCombine = extension === '.sph'
-							? MultiplyOperation
-							: AddOperation;
-
-					}
-
-				}
-
-				// gradientMap
-
-				const toonFileName = ( material.toonIndex === - 1 )
-					? 'toon00.bmp'
-					: data.toonTextures[ material.toonIndex ].fileName;
-
-				params.gradientMap = this._loadTexture(
-					toonFileName,
-					textures,
-					{
-						isToonTexture: true,
-						isDefaultToonTexture: this._isDefaultToonTexture( toonFileName )
-					}
-				);
-
-				// parameters for OutlineEffect
-
-				params.userData.outlineParameters = {
-					thickness: material.edgeFlag === 1 ? 0.003 : 0.0,
-					color: [ 0, 0, 0 ],
-					alpha: 1.0,
-					visible: material.edgeFlag === 1
-				};
-
-			} else {
-
-				// map
-
-				if ( material.textureIndex !== - 1 ) {
-
-					params.map = this._loadTexture( data.textures[ material.textureIndex ], textures );
-
-					// Since PMX spec don't have standard to list map files except color map and env map,
-					// we need to save file name for further mapping, like matching normal map file names after model loaded.
-					// ref: https://gist.github.com/felixjones/f8a06bd48f9da9a4539f#texture
-					params.userData.MMD.mapFileName = data.textures[ material.textureIndex ];
-
-				}
-
-				// matcap TODO: support m.envFlag === 3
-
-				if ( material.envTextureIndex !== - 1 && ( material.envFlag === 1 || material.envFlag == 2 ) ) {
-
-					params.matcap = this._loadTexture(
-						data.textures[ material.envTextureIndex ],
-						textures
-					);
-
-					// Same as color map above, keep file name in userData for further usage.
-					params.userData.MMD.matcapFileName = data.textures[ material.envTextureIndex ];
-
-					params.matcapCombine = material.envFlag === 1
-						? MultiplyOperation
-						: AddOperation;
-
-				}
-
-				// gradientMap
-
-				let toonFileName, isDefaultToon;
-
-				if ( material.toonIndex === - 1 || material.toonFlag !== 0 ) {
-
-					toonFileName = 'toon' + ( '0' + ( material.toonIndex + 1 ) ).slice( - 2 ) + '.bmp';
-					isDefaultToon = true;
-
-				} else {
-
-					toonFileName = data.textures[ material.toonIndex ];
-					isDefaultToon = false;
-
-				}
-
-				params.gradientMap = this._loadTexture(
-					toonFileName,
-					textures,
-					{
-						isToonTexture: true,
-						isDefaultToonTexture: isDefaultToon
-					}
-				);
-
-				// parameters for OutlineEffect
-				params.userData.outlineParameters = {
-					thickness: material.edgeSize / 300, // TODO: better calculation?
-					color: material.edgeColor.slice( 0, 3 ),
-					alpha: material.edgeColor[ 3 ],
-					visible: ( material.flag & 0x10 ) !== 0 && material.edgeSize > 0.0
-				};
-
-			}
-
-			if ( params.map !== undefined ) {
-
-				if ( ! params.transparent ) {
-
-					this._checkImageTransparency( params.map, geometry, i );
-
-				}
-
-				params.emissive.multiplyScalar( 0.2 );
-
-			}
-
-			materials.push( new MMDToonMaterial( params ) );
-
-		}
-
-		if ( data.metadata.format === 'pmx' ) {
-
-			// set transparent true if alpha morph is defined.
-
-			function checkAlphaMorph( elements, materials ) {
-
-				for ( let i = 0, il = elements.length; i < il; i ++ ) {
-
-					const element = elements[ i ];
-
-					if ( element.index === - 1 ) continue;
-
-					const material = materials[ element.index ];
-
-					if ( material.opacity !== element.diffuse[ 3 ] ) {
-
-						material.transparent = true;
-
-					}
-
-				}
-
-			}
-
-			for ( let i = 0, il = data.morphs.length; i < il; i ++ ) {
-
-				const morph = data.morphs[ i ];
-				const elements = morph.elements;
-
-				if ( morph.type === 0 ) {
-
-					for ( let j = 0, jl = elements.length; j < jl; j ++ ) {
-
-						const morph2 = data.morphs[ elements[ j ].index ];
-
-						if ( morph2.type !== 8 ) continue;
-
-						checkAlphaMorph( morph2.elements, materials );
-
-					}
-
-				} else if ( morph.type === 8 ) {
-
-					checkAlphaMorph( elements, materials );
-
-				}
-
-			}
-
-		}
-
-		return materials;
-
-	}
-
-	// private methods
-
-	_getTGALoader() {
-
-		if ( this.tgaLoader === null ) {
-
-			if ( TGALoader === undefined ) {
-
-				throw new Error( 'THREE.MMDLoader: Import TGALoader' );
-
-			}
-
-			this.tgaLoader = new TGALoader( this.manager );
-
-		}
-
-		return this.tgaLoader;
-
-	}
-
-	_isDefaultToonTexture( name ) {
-
-		if ( name.length !== 10 ) return false;
-
-		return /toon(10|0[0-9])\.bmp/.test( name );
-
-	}
-
-	_loadTexture( filePath, textures, params, onProgress, onError ) {
-
-		params = params || {};
-
-		const scope = this;
-
-		let fullPath;
-
-		if ( params.isDefaultToonTexture === true ) {
-
-			let index;
-
-			try {
-
-				index = parseInt( filePath.match( /toon([0-9]{2})\.bmp$/ )[ 1 ] );
-
-			} catch ( e ) {
-
-				console.warn( 'THREE.MMDLoader: ' + filePath + ' seems like a '
-						+ 'not right default texture path. Using toon00.bmp instead.' );
-
-				index = 0;
-
-			}
-
-			fullPath = DEFAULT_TOON_TEXTURES[ index ];
-
-		} else {
-
-			fullPath = this.resourcePath + filePath;
-
-		}
-
-		if ( textures[ fullPath ] !== undefined ) return textures[ fullPath ];
-
-		let loader = this.manager.getHandler( fullPath );
-
-		if ( loader === null ) {
-
-			loader = ( filePath.slice( - 4 ).toLowerCase() === '.tga' )
-				? this._getTGALoader()
-				: this.textureLoader;
-
-		}
-
-		const texture = loader.load( fullPath, function ( t ) {
-
-			// MMD toon texture is Axis-Y oriented
-			// but Three.js gradient map is Axis-X oriented.
-			// So here replaces the toon texture image with the rotated one.
-			if ( params.isToonTexture === true ) {
-
-				t.image = scope._getRotatedImage( t.image );
-
-				t.magFilter = NearestFilter;
-				t.minFilter = NearestFilter;
-				t.generateMipmaps = false;
-
-			}
-
-			t.flipY = false;
-			t.wrapS = RepeatWrapping;
-			t.wrapT = RepeatWrapping;
-			t.colorSpace = SRGBColorSpace;
-
-			for ( let i = 0; i < texture.readyCallbacks.length; i ++ ) {
-
-				texture.readyCallbacks[ i ]( texture );
-
-			}
-
-			delete texture.readyCallbacks;
-
-		}, onProgress, onError );
-
-		texture.readyCallbacks = [];
-
-		textures[ fullPath ] = texture;
-
-		return texture;
-
-	}
-
-	_getRotatedImage( image ) {
-
-		const canvas = document.createElement( 'canvas' );
-		const context = canvas.getContext( '2d' );
-
-		const width = image.width;
-		const height = image.height;
-
-		canvas.width = width;
-		canvas.height = height;
-
-		context.clearRect( 0, 0, width, height );
-		context.translate( width / 2.0, height / 2.0 );
-		context.rotate( 0.5 * Math.PI ); // 90.0 * Math.PI / 180.0
-		context.translate( - width / 2.0, - height / 2.0 );
-		context.drawImage( image, 0, 0 );
-
-		return context.getImageData( 0, 0, width, height );
-
-	}
-
-	// Check if the partial image area used by the texture is transparent.
-	_checkImageTransparency( map, geometry, groupIndex ) {
-
-		map.readyCallbacks.push( function ( texture ) {
-
-			// Is there any efficient ways?
-			function createImageData( image ) {
-
-				const canvas = document.createElement( 'canvas' );
-				canvas.width = image.width;
-				canvas.height = image.height;
-
-				const context = canvas.getContext( '2d' );
-				context.drawImage( image, 0, 0 );
-
-				return context.getImageData( 0, 0, canvas.width, canvas.height );
-
-			}
-
-			function detectImageTransparency( image, uvs, indices ) {
-
-				const width = image.width;
-				const height = image.height;
-				const data = image.data;
-				const threshold = 253;
-
-				if ( data.length / ( width * height ) !== 4 ) return false;
-
-				for ( let i = 0; i < indices.length; i += 3 ) {
-
-					const centerUV = { x: 0.0, y: 0.0 };
-
-					for ( let j = 0; j < 3; j ++ ) {
-
-						const index = indices[ i * 3 + j ];
-						const uv = { x: uvs[ index * 2 + 0 ], y: uvs[ index * 2 + 1 ] };
-
-						if ( getAlphaByUv( image, uv ) < threshold ) return true;
-
-						centerUV.x += uv.x;
-						centerUV.y += uv.y;
-
-					}
-
-					centerUV.x /= 3;
-					centerUV.y /= 3;
-
-					if ( getAlphaByUv( image, centerUV ) < threshold ) return true;
-
-				}
-
-				return false;
-
-			}
-
-			/*
-				 * This method expects
-				 *   texture.flipY = false
-				 *   texture.wrapS = RepeatWrapping
-				 *   texture.wrapT = RepeatWrapping
-				 * TODO: more precise
-				 */
-			function getAlphaByUv( image, uv ) {
-
-				const width = image.width;
-				const height = image.height;
-
-				let x = Math.round( uv.x * width ) % width;
-				let y = Math.round( uv.y * height ) % height;
-
-				if ( x < 0 ) x += width;
-				if ( y < 0 ) y += height;
-
-				const index = y * width + x;
-
-				return image.data[ index * 4 + 3 ];
-
-			}
-
-			if ( texture.isCompressedTexture === true ) {
-
-				if ( NON_ALPHA_CHANNEL_FORMATS.includes( texture.format ) ) {
-
-					map.transparent = false;
-
-				} else {
-
-					// any other way to check transparency of CompressedTexture?
-					map.transparent = true;
-
-				}
-
-				return;
-
-			}
-
-			const imageData = texture.image.data !== undefined
-				? texture.image
-				: createImageData( texture.image );
-
-			const group = geometry.groups[ groupIndex ];
-
-			if ( detectImageTransparency(
-				imageData,
-				geometry.attributes.uv.array,
-				geometry.index.array.slice( group.start, group.start + group.count ) ) ) {
-
-				map.transparent = true;
-
-			}
-
-		} );
-
-	}
-
-}
-
-//
-
-class AnimationBuilder {
-
-	/**
-	 * @param {Object} vmd - parsed VMD data
-	 * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
-	 * @return {AnimationClip}
-	 */
-	build( vmd, mesh ) {
-
-		// combine skeletal and morph animations
-
-		const tracks = this.buildSkeletalAnimation( vmd, mesh ).tracks;
-		const tracks2 = this.buildMorphAnimation( vmd, mesh ).tracks;
-
-		for ( let i = 0, il = tracks2.length; i < il; i ++ ) {
-
-			tracks.push( tracks2[ i ] );
-
-		}
-
-		return new AnimationClip( '', - 1, tracks );
-
-	}
-
-	/**
-	 * @param {Object} vmd - parsed VMD data
-	 * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
-	 * @return {AnimationClip}
-	 */
-	buildSkeletalAnimation( vmd, mesh ) {
-
-		function pushInterpolation( array, interpolation, index ) {
-
-			array.push( interpolation[ index + 0 ] / 127 ); // x1
-			array.push( interpolation[ index + 8 ] / 127 ); // x2
-			array.push( interpolation[ index + 4 ] / 127 ); // y1
-			array.push( interpolation[ index + 12 ] / 127 ); // y2
-
-		}
-
-		const tracks = [];
-
-		const motions = {};
-		const bones = mesh.skeleton.bones;
-		const boneNameDictionary = {};
-
-		for ( let i = 0, il = bones.length; i < il; i ++ ) {
-
-			boneNameDictionary[ bones[ i ].name ] = true;
-
-		}
-
-		for ( let i = 0; i < vmd.metadata.motionCount; i ++ ) {
-
-			const motion = vmd.motions[ i ];
-			const boneName = motion.boneName;
-
-			if ( boneNameDictionary[ boneName ] === undefined ) continue;
-
-			motions[ boneName ] = motions[ boneName ] || [];
-			motions[ boneName ].push( motion );
-
-		}
-
-		for ( const key in motions ) {
-
-			const array = motions[ key ];
-
-			array.sort( function ( a, b ) {
-
-				return a.frameNum - b.frameNum;
-
-			} );
-
-			const times = [];
-			const positions = [];
-			const rotations = [];
-			const pInterpolations = [];
-			const rInterpolations = [];
-
-			const basePosition = mesh.skeleton.getBoneByName( key ).position.toArray();
-
-			for ( let i = 0, il = array.length; i < il; i ++ ) {
-
-				const time = array[ i ].frameNum / 30;
-				const position = array[ i ].position;
-				const rotation = array[ i ].rotation;
-				const interpolation = array[ i ].interpolation;
-
-				times.push( time );
-
-				for ( let j = 0; j < 3; j ++ ) positions.push( basePosition[ j ] + position[ j ] );
-				for ( let j = 0; j < 4; j ++ ) rotations.push( rotation[ j ] );
-				for ( let j = 0; j < 3; j ++ ) pushInterpolation( pInterpolations, interpolation, j );
-
-				pushInterpolation( rInterpolations, interpolation, 3 );
-
-			}
-
-			const targetName = '.bones[' + key + ']';
-
-			tracks.push( this._createTrack( targetName + '.position', VectorKeyframeTrack, times, positions, pInterpolations ) );
-			tracks.push( this._createTrack( targetName + '.quaternion', QuaternionKeyframeTrack, times, rotations, rInterpolations ) );
-
-		}
-
-		return new AnimationClip( '', - 1, tracks );
-
-	}
-
-	/**
-	 * @param {Object} vmd - parsed VMD data
-	 * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
-	 * @return {AnimationClip}
-	 */
-	buildMorphAnimation( vmd, mesh ) {
-
-		const tracks = [];
-
-		const morphs = {};
-		const morphTargetDictionary = mesh.morphTargetDictionary;
-
-		for ( let i = 0; i < vmd.metadata.morphCount; i ++ ) {
-
-			const morph = vmd.morphs[ i ];
-			const morphName = morph.morphName;
-
-			if ( morphTargetDictionary[ morphName ] === undefined ) continue;
-
-			morphs[ morphName ] = morphs[ morphName ] || [];
-			morphs[ morphName ].push( morph );
-
-		}
-
-		for ( const key in morphs ) {
-
-			const array = morphs[ key ];
-
-			array.sort( function ( a, b ) {
-
-				return a.frameNum - b.frameNum;
-
-			} );
-
-			const times = [];
-			const values = [];
-
-			for ( let i = 0, il = array.length; i < il; i ++ ) {
-
-				times.push( array[ i ].frameNum / 30 );
-				values.push( array[ i ].weight );
-
-			}
-
-			tracks.push( new NumberKeyframeTrack( '.morphTargetInfluences[' + morphTargetDictionary[ key ] + ']', times, values ) );
-
-		}
-
-		return new AnimationClip( '', - 1, tracks );
-
-	}
-
-	/**
-	 * @param {Object} vmd - parsed VMD data
-	 * @return {AnimationClip}
-	 */
-	buildCameraAnimation( vmd ) {
-
-		function pushVector3( array, vec ) {
-
-			array.push( vec.x );
-			array.push( vec.y );
-			array.push( vec.z );
-
-		}
-
-		function pushQuaternion( array, q ) {
-
-			array.push( q.x );
-			array.push( q.y );
-			array.push( q.z );
-			array.push( q.w );
-
-		}
-
-		function pushInterpolation( array, interpolation, index ) {
-
-			array.push( interpolation[ index * 4 + 0 ] / 127 ); // x1
-			array.push( interpolation[ index * 4 + 1 ] / 127 ); // x2
-			array.push( interpolation[ index * 4 + 2 ] / 127 ); // y1
-			array.push( interpolation[ index * 4 + 3 ] / 127 ); // y2
-
-		}
-
-		const cameras = vmd.cameras === undefined ? [] : vmd.cameras.slice();
-
-		cameras.sort( function ( a, b ) {
-
-			return a.frameNum - b.frameNum;
-
-		} );
-
-		const times = [];
-		const centers = [];
-		const quaternions = [];
-		const positions = [];
-		const fovs = [];
-
-		const cInterpolations = [];
-		const qInterpolations = [];
-		const pInterpolations = [];
-		const fInterpolations = [];
-
-		const quaternion = new Quaternion();
-		const euler = new Euler();
-		const position = new Vector3();
-		const center = new Vector3();
-
-		for ( let i = 0, il = cameras.length; i < il; i ++ ) {
-
-			const motion = cameras[ i ];
-
-			const time = motion.frameNum / 30;
-			const pos = motion.position;
-			const rot = motion.rotation;
-			const distance = motion.distance;
-			const fov = motion.fov;
-			const interpolation = motion.interpolation;
-
-			times.push( time );
-
-			position.set( 0, 0, - distance );
-			center.set( pos[ 0 ], pos[ 1 ], pos[ 2 ] );
-
-			euler.set( - rot[ 0 ], - rot[ 1 ], - rot[ 2 ] );
-			quaternion.setFromEuler( euler );
-
-			position.add( center );
-			position.applyQuaternion( quaternion );
-
-			pushVector3( centers, center );
-			pushQuaternion( quaternions, quaternion );
-			pushVector3( positions, position );
-
-			fovs.push( fov );
-
-			for ( let j = 0; j < 3; j ++ ) {
-
-				pushInterpolation( cInterpolations, interpolation, j );
-
-			}
-
-			pushInterpolation( qInterpolations, interpolation, 3 );
-
-			// use the same parameter for x, y, z axis.
-			for ( let j = 0; j < 3; j ++ ) {
-
-				pushInterpolation( pInterpolations, interpolation, 4 );
-
-			}
-
-			pushInterpolation( fInterpolations, interpolation, 5 );
-
-		}
-
-		const tracks = [];
-
-		// I expect an object whose name 'target' exists under THREE.Camera
-		tracks.push( this._createTrack( 'target.position', VectorKeyframeTrack, times, centers, cInterpolations ) );
-
-		tracks.push( this._createTrack( '.quaternion', QuaternionKeyframeTrack, times, quaternions, qInterpolations ) );
-		tracks.push( this._createTrack( '.position', VectorKeyframeTrack, times, positions, pInterpolations ) );
-		tracks.push( this._createTrack( '.fov', NumberKeyframeTrack, times, fovs, fInterpolations ) );
-
-		return new AnimationClip( '', - 1, tracks );
-
-	}
-
-	// private method
-
-	_createTrack( node, typedKeyframeTrack, times, values, interpolations ) {
-
-		/*
-			 * optimizes here not to let KeyframeTrackPrototype optimize
-			 * because KeyframeTrackPrototype optimizes times and values but
-			 * doesn't optimize interpolations.
-			 */
-		if ( times.length > 2 ) {
-
-			times = times.slice();
-			values = values.slice();
-			interpolations = interpolations.slice();
-
-			const stride = values.length / times.length;
-			const interpolateStride = interpolations.length / times.length;
-
-			let index = 1;
-
-			for ( let aheadIndex = 2, endIndex = times.length; aheadIndex < endIndex; aheadIndex ++ ) {
-
-				for ( let i = 0; i < stride; i ++ ) {
-
-					if ( values[ index * stride + i ] !== values[ ( index - 1 ) * stride + i ] ||
-							values[ index * stride + i ] !== values[ aheadIndex * stride + i ] ) {
-
-						index ++;
-						break;
-
-					}
-
-				}
-
-				if ( aheadIndex > index ) {
-
-					times[ index ] = times[ aheadIndex ];
-
-					for ( let i = 0; i < stride; i ++ ) {
-
-						values[ index * stride + i ] = values[ aheadIndex * stride + i ];
-
-					}
-
-					for ( let i = 0; i < interpolateStride; i ++ ) {
-
-						interpolations[ index * interpolateStride + i ] = interpolations[ aheadIndex * interpolateStride + i ];
-
-					}
-
-				}
-
-			}
-
-			times.length = index + 1;
-			values.length = ( index + 1 ) * stride;
-			interpolations.length = ( index + 1 ) * interpolateStride;
-
-		}
-
-		const track = new typedKeyframeTrack( node, times, values );
-
-		track.createInterpolant = function InterpolantFactoryMethodCubicBezier( result ) {
-
-			return new CubicBezierInterpolation( this.times, this.values, this.getValueSize(), result, new Float32Array( interpolations ) );
-
-		};
-
-		return track;
-
-	}
-
-}
-
-// interpolation
-
-class CubicBezierInterpolation extends Interpolant {
-
-	constructor( parameterPositions, sampleValues, sampleSize, resultBuffer, params ) {
-
-		super( parameterPositions, sampleValues, sampleSize, resultBuffer );
-
-		this.interpolationParams = params;
-
-	}
-
-	interpolate_( i1, t0, t, t1 ) {
-
-		const result = this.resultBuffer;
-		const values = this.sampleValues;
-		const stride = this.valueSize;
-		const params = this.interpolationParams;
-
-		const offset1 = i1 * stride;
-		const offset0 = offset1 - stride;
-
-		// No interpolation if next key frame is in one frame in 30fps.
-		// This is from MMD animation spec.
-		// '1.5' is for precision loss. times are Float32 in Three.js Animation system.
-		const weight1 = ( ( t1 - t0 ) < 1 / 30 * 1.5 ) ? 0.0 : ( t - t0 ) / ( t1 - t0 );
-
-		if ( stride === 4 ) { // Quaternion
-
-			const x1 = params[ i1 * 4 + 0 ];
-			const x2 = params[ i1 * 4 + 1 ];
-			const y1 = params[ i1 * 4 + 2 ];
-			const y2 = params[ i1 * 4 + 3 ];
-
-			const ratio = this._calculate( x1, x2, y1, y2, weight1 );
-
-			Quaternion.slerpFlat( result, 0, values, offset0, values, offset1, ratio );
-
-		} else if ( stride === 3 ) { // Vector3
-
-			for ( let i = 0; i !== stride; ++ i ) {
-
-				const x1 = params[ i1 * 12 + i * 4 + 0 ];
-				const x2 = params[ i1 * 12 + i * 4 + 1 ];
-				const y1 = params[ i1 * 12 + i * 4 + 2 ];
-				const y2 = params[ i1 * 12 + i * 4 + 3 ];
-
-				const ratio = this._calculate( x1, x2, y1, y2, weight1 );
-
-				result[ i ] = values[ offset0 + i ] * ( 1 - ratio ) + values[ offset1 + i ] * ratio;
-
-			}
-
-		} else { // Number
-
-			const x1 = params[ i1 * 4 + 0 ];
-			const x2 = params[ i1 * 4 + 1 ];
-			const y1 = params[ i1 * 4 + 2 ];
-			const y2 = params[ i1 * 4 + 3 ];
-
-			const ratio = this._calculate( x1, x2, y1, y2, weight1 );
-
-			result[ 0 ] = values[ offset0 ] * ( 1 - ratio ) + values[ offset1 ] * ratio;
-
-		}
-
-		return result;
-
-	}
-
-	_calculate( x1, x2, y1, y2, x ) {
-
-		/*
-			 * Cubic Bezier curves
-			 *   https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves
-			 *
-			 * B(t) = ( 1 - t ) ^ 3 * P0
-			 *      + 3 * ( 1 - t ) ^ 2 * t * P1
-			 *      + 3 * ( 1 - t ) * t^2 * P2
-			 *      + t ^ 3 * P3
-			 *      ( 0 <= t <= 1 )
-			 *
-			 * MMD uses Cubic Bezier curves for bone and camera animation interpolation.
-			 *   http://d.hatena.ne.jp/edvakf/20111016/1318716097
-			 *
-			 *    x = ( 1 - t ) ^ 3 * x0
-			 *      + 3 * ( 1 - t ) ^ 2 * t * x1
-			 *      + 3 * ( 1 - t ) * t^2 * x2
-			 *      + t ^ 3 * x3
-			 *    y = ( 1 - t ) ^ 3 * y0
-			 *      + 3 * ( 1 - t ) ^ 2 * t * y1
-			 *      + 3 * ( 1 - t ) * t^2 * y2
-			 *      + t ^ 3 * y3
-			 *      ( x0 = 0, y0 = 0 )
-			 *      ( x3 = 1, y3 = 1 )
-			 *      ( 0 <= t, x1, x2, y1, y2 <= 1 )
-			 *
-			 * Here solves this equation with Bisection method,
-			 *   https://en.wikipedia.org/wiki/Bisection_method
-			 * gets t, and then calculate y.
-			 *
-			 * f(t) = 3 * ( 1 - t ) ^ 2 * t * x1
-			 *      + 3 * ( 1 - t ) * t^2 * x2
-			 *      + t ^ 3 - x = 0
-			 *
-			 * (Another option: Newton's method
-			 *    https://en.wikipedia.org/wiki/Newton%27s_method)
-			 */
-
-		let c = 0.5;
-		let t = c;
-		let s = 1.0 - t;
-		const loop = 15;
-		const eps = 1e-5;
-		const math = Math;
-
-		let sst3, stt3, ttt;
-
-		for ( let i = 0; i < loop; i ++ ) {
-
-			sst3 = 3.0 * s * s * t;
-			stt3 = 3.0 * s * t * t;
-			ttt = t * t * t;
-
-			const ft = ( sst3 * x1 ) + ( stt3 * x2 ) + ( ttt ) - x;
-
-			if ( math.abs( ft ) < eps ) break;
-
-			c /= 2.0;
-
-			t += ( ft < 0 ) ? c : - c;
-			s = 1.0 - t;
-
-		}
-
-		return ( sst3 * y1 ) + ( stt3 * y2 ) + ttt;
-
-	}
-
-}
-
-class MMDToonMaterial extends ShaderMaterial {
-
-	constructor( parameters ) {
-
-		super();
-
-		this.isMMDToonMaterial = true;
-
-		this.type = 'MMDToonMaterial';
-
-		this._matcapCombine = AddOperation;
-		this.emissiveIntensity = 1.0;
-		this.normalMapType = TangentSpaceNormalMap;
-
-		this.combine = MultiplyOperation;
-
-		this.wireframeLinecap = 'round';
-		this.wireframeLinejoin = 'round';
-
-		this.flatShading = false;
-
-		this.lights = true;
-
-		this.vertexShader = MMDToonShader.vertexShader;
-		this.fragmentShader = MMDToonShader.fragmentShader;
-
-		this.defines = Object.assign( {}, MMDToonShader.defines );
-		Object.defineProperty( this, 'matcapCombine', {
-
-			get: function () {
-
-				return this._matcapCombine;
-
-			},
-
-			set: function ( value ) {
-
-				this._matcapCombine = value;
-
-				switch ( value ) {
-
-					case MultiplyOperation:
-						this.defines.MATCAP_BLENDING_MULTIPLY = true;
-						delete this.defines.MATCAP_BLENDING_ADD;
-						break;
-
-					default:
-					case AddOperation:
-						this.defines.MATCAP_BLENDING_ADD = true;
-						delete this.defines.MATCAP_BLENDING_MULTIPLY;
-						break;
-
-				}
-
-			},
-
-		} );
-
-		this.uniforms = UniformsUtils.clone( MMDToonShader.uniforms );
-
-		// merged from MeshToon/Phong/MatcapMaterial
-		const exposePropertyNames = [
-			'specular',
-			'opacity',
-			'diffuse',
-
-			'map',
-			'matcap',
-			'gradientMap',
-
-			'lightMap',
-			'lightMapIntensity',
-
-			'aoMap',
-			'aoMapIntensity',
-
-			'emissive',
-			'emissiveMap',
-
-			'bumpMap',
-			'bumpScale',
-
-			'normalMap',
-			'normalScale',
-
-			'displacemantBias',
-			'displacemantMap',
-			'displacemantScale',
-
-			'specularMap',
-
-			'alphaMap',
-
-			'reflectivity',
-			'refractionRatio',
-		];
-		for ( const propertyName of exposePropertyNames ) {
-
-			Object.defineProperty( this, propertyName, {
-
-				get: function () {
-
-					return this.uniforms[ propertyName ].value;
-
-				},
-
-				set: function ( value ) {
-
-					this.uniforms[ propertyName ].value = value;
-
-				},
-
-			} );
-
-		}
-
-		// Special path for shininess to handle zero shininess properly
-		this._shininess = 30;
-		Object.defineProperty( this, 'shininess', {
-
-			get: function () {
-
-				return this._shininess;
-
-			},
-
-			set: function ( value ) {
-
-				this._shininess = value;
-				this.uniforms.shininess.value = Math.max( this._shininess, 1e-4 ); // To prevent pow( 0.0, 0.0 )
-
-			},
-
-		} );
-
-		Object.defineProperty(
-			this,
-			'color',
-			Object.getOwnPropertyDescriptor( this, 'diffuse' )
-		);
-
-		this.setValues( parameters );
-
-	}
-
-	copy( source ) {
-
-		super.copy( source );
-
-		this.matcapCombine = source.matcapCombine;
-		this.emissiveIntensity = source.emissiveIntensity;
-		this.normalMapType = source.normalMapType;
-
-		this.combine = source.combine;
-
-		this.wireframeLinecap = source.wireframeLinecap;
-		this.wireframeLinejoin = source.wireframeLinejoin;
-
-		this.flatShading = source.flatShading;
-
-		return this;
-
-	}
-
-}
-
-export { MMDLoader };

+ 0 - 134
examples/jsm/shaders/MMDToonShader.js

@@ -1,134 +0,0 @@
-/**
- * MMD Toon Shader
- *
- * This shader is extended from MeshPhongMaterial, and merged algorithms with
- * MeshToonMaterial and MeshMetcapMaterial.
- * Ideas came from https://github.com/mrdoob/three.js/issues/19609
- *
- * Combining steps:
- *  * Declare matcap uniform.
- *  * Add gradientmap_pars_fragment.
- *  * Use gradient irradiances instead of dotNL irradiance from MeshPhongMaterial.
- *    (Replace lights_phong_pars_fragment with lights_mmd_toon_pars_fragment)
- *  * Add mmd_toon_matcap_fragment.
- */
-
-import { UniformsUtils, ShaderLib } from 'three';
-
-const lights_mmd_toon_pars_fragment = /* glsl */`
-varying vec3 vViewPosition;
-
-struct BlinnPhongMaterial {
-
-	vec3 diffuseColor;
-	vec3 specularColor;
-	float specularShininess;
-	float specularStrength;
-
-};
-
-void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
-
-	vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
-
-	reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
-
-	reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
-
-}
-
-void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
-
-	reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
-
-}
-
-#define RE_Direct				RE_Direct_BlinnPhong
-#define RE_IndirectDiffuse		RE_IndirectDiffuse_BlinnPhong
-`;
-
-const mmd_toon_matcap_fragment = /* glsl */`
-#ifdef USE_MATCAP
-
-	vec3 viewDir = normalize( vViewPosition );
-	vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
-	vec3 y = cross( viewDir, x );
-	vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
-	vec4 matcapColor = texture2D( matcap, uv );
-
-	#ifdef MATCAP_BLENDING_MULTIPLY
-
-		outgoingLight *= matcapColor.rgb;
-
-	#elif defined( MATCAP_BLENDING_ADD )
-
-		outgoingLight += matcapColor.rgb;
-
-	#endif
-
-#endif
-`;
-
-const MMDToonShader = {
-
-	name: 'MMDToonShader',
-
-	defines: {
-		TOON: true,
-		MATCAP: true,
-		MATCAP_BLENDING_ADD: true,
-	},
-
-	uniforms: UniformsUtils.merge( [
-		ShaderLib.toon.uniforms,
-		ShaderLib.phong.uniforms,
-		ShaderLib.matcap.uniforms,
-	] ),
-
-	vertexShader:
-		ShaderLib.phong.vertexShader
-			.replace(
-				'#include <envmap_pars_vertex>',
-				''
-			)
-			.replace(
-				'#include <envmap_vertex>',
-				''
-			),
-
-	fragmentShader:
-		ShaderLib.phong.fragmentShader
-			.replace(
-				'#include <common>',
-				`
-					#ifdef USE_MATCAP
-						uniform sampler2D matcap;
-					#endif
-
-					#include <common>
-				`
-			)
-			.replace(
-				'#include <envmap_common_pars_fragment>',
-				`
-					#include <gradientmap_pars_fragment>
-				`
-			)
-			.replace(
-				'#include <envmap_pars_fragment>',
-				''
-			)
-			.replace(
-				'#include <lights_phong_pars_fragment>',
-				lights_mmd_toon_pars_fragment
-			)
-			.replace(
-				'#include <envmap_fragment>',
-				`
-					${mmd_toon_matcap_fragment}
-				`
-			)
-
-};
-
-export { MMDToonShader };

+ 0 - 3
examples/models/mmd/LICENSE

@@ -1,3 +0,0 @@
-The files under this directory are NOT under MIT license, but other licenses.
-
-See Readme.txt for the summary, see each file's readme for the detail.

+ 0 - 36
examples/models/mmd/Readme.txt

@@ -1,36 +0,0 @@
-The files under this directory are NOT under MIT license, but other licenses.
-If you want to use them in your work, get original archive file, read readme,
-and follow their licenses.
-
-
-1. Vocaloid stuffs
-
-You are allowed to use Crypton's Vocaloid(Hatsune Miku, Kagamine Rin, and so on)
-stuffs (MMD models, songs, and so on) only if you follow the guideline set by
-Crypton Future Media, INC. for the usage of its characters.
-
-For detail, see http://piapro.net/en_for_creators.html
-
-
-2. MMD stuffs
-
-In MMD, there is no unified license. If you want to use MMD assets (models,
-songs, dances, and so on), read readme included in the original archive file
-and follow the license the author set.
-
-If the assets are fan works, you must follow the original work's license. (For
-example, you also need to follow the license set by Crypton, not only the
-license the author set, to use a fan Miku MMD model)
-
-For your information, generally MMD assets are very restricted to use.
-
-Most MMD assets are NOT allowed for
-- redistribution
-- porn use
-- commercial use
-- etc.
-
-Think that what is not written in readme is not allowed.
-
-
-Takahiro  https://github.com/takahirox

+ 0 - 38
examples/models/mmd/audios/readme.txt

@@ -1,38 +0,0 @@
-WAVEFILE/初音ミク(Hatsune Miku) short ver.
-
-Author: ラマーズP(LamazeP)
-
-Quotation from his Piapro profile
-
-http://piapro.jp/shine_longer
-
-> 楽曲やイラストの使用については
-> 非営利であれば自由に使っていただければ問題ないです。
-> 商業関係につきましたらメールを頂ければです。
-> nicoverb01@gmail.com
-
-You can use his works(songs and illustrations) for non-commercial.
-Mail him if you want to use for commercial.
-
---------------------------------------------------------------------
-
-Author: ラマーズP(LamazeP)
-
-His Piapro page
-http://piapro.jp/shine_longer
-His Nico profile
-http://www.nicovideo.jp/user/2523470
-
-
-Original musics:
-
-WAVEFILE/初音ミク(Hatsune Miku) short ver.
-http://www.nicovideo.jp/watch/sm11938255
-http://piapro.jp/t/T2Ol
-
-WAVEFILE/初音ミク(Hatsune Miku) full ver.
-http://www.nicovideo.jp/watch/sm14257396
-
---------------------------------------------------------------------
-
-   this readme is written by takahiro  https://github.com/takahirox

BIN
examples/models/mmd/audios/wavefile_short.mp3


BIN
examples/models/mmd/miku/eyeM2.bmp


BIN
examples/models/mmd/miku/miku_v2.pmd


+ 0 - 5
examples/models/mmd/miku/readme.txt

@@ -1,5 +0,0 @@
-readme_miku_v2.txt: readme of MMD software for Hatsune Miku model
-
-The Miku model in this directory is a bandle model of MMD software.
-
-                                                       by takahiro

+ 0 - 389
examples/models/mmd/miku/readme_miku_v2.txt

@@ -1,389 +0,0 @@
-MikuMikuDance.exe Ver.5.24
-
-3Dポリゴンモデルの振り付け用ツール
-
-■操作方法■
-ニコニコ動画にて公開中
-http://www.nicovideo.jp/watch/sm2420025
-
-■WAVE出力時の注意点■
-WAVEはフレーム0から録画する時にしか出力できません。
-
-■Windows2000での注意点■
-Windows2000以前のOS(XPよりも前)で使用する場合には、
-MMDxShow.dllをレジストリに登録しなければ使用できません。
-Dataフォルダ内にあるWin2000.batを一度実行して下さい。
-
-■お断り■
-クリプトン・フューチャー・メディア株式会社様、その他
-Vocaloidシリーズに関して権利を有する方からクレームが
-あった場合には、本ツールの公開を中止する場合があります。
-
-■JPEGライブラリ■
-Independent JPEG Group(http://www.ijg.org/)のJPeg-6b
-ライブラリを使用しています。
-
-■免責事項■
-本ツールを実行したことによって損害・不利益・事故等が
-発生した場合でも、一切の責任を負いません。
-
-ツールを使って製作した画像・動画を公開する場合には、
-こちらには連絡や許可申請は必要ありません。
-pmm、vpd、vmdファイルの公開もご自由に。
-ただし、問題が発生しても一切責任を負いません。
-**音楽等の著作権には特に気をつけて下さい!!**
-
-■物理演算モード■
-物理エンジンにはBullet Physics Engineを使用しています。
-(http://www.bulletphysics.com/wordpress/ )
-
-「ヘルプ」→「モデル拡張」→「物理演算」で、モデルの物理演算化用エディタが開きます
-
-エディタの豆知識
-・剛体の形状(位置・回転・大きさ)は画面右下のXYZアイコンで操作できます。
-
-特に『大きさ』は、SHIFTキーを押しながら位置アイコンのドラッグで変更できますので、気付きにくいと思います。
-
-・グループ横の欄は、その剛体と衝突判定をしないグループを羅列します
-
-・「ボーン追従」と「物理演算」において、「物理演算」の剛体は何らかの形で「ボーン追従」の剛体とジョイントで接続されていなければ地面に落ちます
-
-・「物理演算」の「ボーン位置合せ」は、「物理演算」の剛体に繋がっているジョイントの位置は、ボーンの位置からズレることがあるので、それを強制的にボーンの位置に合せるための仕様です。
-ボーンの位置からジョイントがズレるとモデルの破綻が起きる場合にのみ使用して下さい(使うと計算が遅くなるのと、動きが不自然になります)
-
-
-■連絡先■
-higuchuu2@yahoo.co.jp   樋口優
-
-http://www.geocities.jp/higuchuu4/index.htm
-
-■バージョン履歴■
-Ver.5.24(2010/11/02)
-・回転連動ボーンの挙動変更
-
-Ver.5.23(2010/08/27)
-・MEIKOモデル追加
-・物理演算のジョイント軸を回転させた場合の挙動に関するバグ修正
-
-Ver.5.22a(2010/01/21)
-・鏡音リンact2モデル追加
- (MMD本体はVer.5.22のまま)
-
-Ver.5.22(2009/10/25)
-・カメラ・照明・アクセサリモードでvsq,vpdを読み込むとMMDが落ちるバグ修正
-
-Ver.5.21(2009/10/25)
-・フレーム窓内でボーン名をクリックしてボーンを選択する際、トグルする仕様に変更
-・フレーム窓内のボーン括りをクリックすると、括り内の全ボーンを選択する仕様追加
-・範囲選択に、現在選択中のボーンで設定する『選択ボーン』項目追加
-・縦選択を、現在選択中のフレーム全てに適応する仕様に変更
-・移動のみでなく、回転時も Shift→10倍、Ctrl→0.1倍 のキー操作追加
-・背景BMPの読み込みにJpegも対応
-・画面保存にBMPのみでなく、Jpegも対応
-・MMDの画面に、各種ファイルをドラッグ&ドロップできる仕様追加
-・その他色々バグ修正
-
-
-Ver.5.20(2009/10/23)
-・AVI出力時に、モデル表示フレームが1フレーム遅れていた点を修正
-・VistaのUAC作動時に落ちるバグ修正
- (Windows7については未確認。直ってるといいなぁ)
-・pmmデータ保存時にバッファオーバーフローを起こす危険のあるバグ修正
- (Ver.5.19のバグ。Ver.5.19は落ちる可能性がある為、使用しないで下さい)
-・その他色々バグ修正
-
-Ver.5.19(2009/10/19)
-・色々細かいバグ修正
-
-Ver.5.18(2009/10/17)
-・モデルのjpeg対応バグ修正
-
-Ver.5.17(2009/10/17)
-・テクスチャにjpegファイルを使用できるよう変更
-・その他色々バグ修正
-
-Ver.5.16(2009/09/27)
-・Ver.5.15修正によるバグ修正
-
-Ver.5.15(2009/09/27)
-・ビットマップ+スフィアマップモデルを拡張モデル保存した際にスフィアが消えるバグ修正
-
-Ver.5.14(2009/09/24)
-・スフィアマップアクセサリとモデルを同時表示した際のバグ修正
-
-Ver.5.13(2009/09/15)
-・物理エンジンBullet Ver.2.75 正式版公開に伴いBulletバージョン更新
-
-Ver.5.12(2009/09/10)
-・テクスチャBMP上にスフィアマップ表示する際のファイル名を
-   "テクスチャ名.bmp*スフィア名.bmp" に変更。
- Ver.5.11で"/"を使っていた方は"*"に変更して下さい。
-・スフィアマップのファイル名拡張子"sph"を、"spa"にすることにより
- スフィアマップの展開が乗算でなく、加算で行われる仕様を追加
-
-Ver.5.11(2009/09/7)
-・スフィアマップの計算法をVer.5.09に戻す
-・テクスチャBMP上にスフィアマップ表示できる仕様に変更
- テクスチャ名を "テクスチャ名.bmp/スフィア名.bmp"にすることにより
- テクスチャ上にスフィアマップが展開されます(例:fuk1.bmp/metal.sph)
- *ただし、PMDフォーマットはテクスチャ名の長さが19文字分しか無いため、
- モデルで使用する場合はファイル名全体(テクスチャ+スフィア)で19文字以下に
- 収める必要があります(アクセサリ(xファイル)は256文字までOK)
-・その他バグ色々修正
-
-Ver.5.10(2009/08/29)
-・スフィアマップ計算法を入射角を考慮する方法に変更
- (髪のキューティクル表現等が可能になりました(多分))
-
-Ver.5.09(2009/08/25)
-・スフィアマップ機能追加
- スフィアマップ用BMPを拡張子sphとしてモデル・アクセサリのテクスチャに指定
- することにより、スフィアマップが展開されて表示されます
-
-Ver.5.08(2009/08/09)
-・pmm読込時ファイルが見つからなかった場合、ファイルの場所をあらためて聞く仕様を追加
-
-Ver.5.07(2009/08/08)
-・アクセサリ拡大・縮小時にアクセサリの明るさが変化するバグ修正
-・アイコンによる移動時にCtrlキーを押すことにより移動距離を1/10に減らす機能を追加
-
-Ver.5.06(2009/08/05)
-・Ver.5.05のCPU負荷が高すぎたため修正
-・背景AVI表示時にも地面影を表示するように変更
-
-Ver.5.05(2009/08/05)
-・色々とバグ修正 MMDxShow.dllも修正しています。
- (※※旧VerのMMDフォルダを利用する場合にはMMDxShow.dllも書き換えること※※)
-・Windows2000以前のOS(XPよりも前)で使用する場合には、MMDxShow.dllをレジストリに登録しなければ
- 使用できません。Dataフォルダ内にあるWin2000.batを一度実行して下さい(一度実行すればおk)
-
-Ver.5.04(2009/08/02)
-・Ver.5.03のMMDxShow.dll実行に伴い、MSVCR71.DLL関連のエラーが出る場合があったため、
- MMDxShow.dll修正(※※旧VerのMMDフォルダを利用する場合にはMMDxShow.dllも書き換えること※※)。
-・地面影描写が、背景BMP読込時に表示されないバグ修正
-
-Ver.5.03(2009/08/02)
-・AVI出力
- ・DirectShowにて出力する仕様に変更(2GBの壁がなくなりました)
-  (Dataフォルダ内に新たに'MMDxShow.dll'が追加されています。以前のVerのフォルダに
-  MikuMikuDance.exeをコピーして使う場合には、上記ファイルもコピーして下さい)
- ・アルファチャンネルをグラボ・出力画質によらず出力できるよう変更
- ・WAVEを含む場合にインターリーブ出力するよう変更
-  (ただしEscキーによる録画中断時にはWaveが映像よりも長くなってしまうので注意してください)
-・地面影描画法変更
-  半透明でも綺麗に描写されます。地面影はモデル描写の時に描かれますので、
-  アクセサリ編集より、モデルとアクセサリの描写順をうまく設定してください。
-・アクセサリ数が128個を超えると、アクセサリ編集が落ちるバグ修正
-・その他色々バグ修正
-
-Ver.5.02(2009/07/14)
-・PCによって再生時に音ズレが生じるバグを修正
-
-Ver.5.01(2009/07/06)
-・AVI出力にモード追加
- ・画質優先   Ver.5β版の出力法(βよりもさらに画質は良いが遅いです)
- ・速度優先   Ver.5.00版の出力法
- ・連番分割出力 2GBを超える場合は分割して出力して下さい。下にフレーム数を入力すると
-         そのフレーム数出力する毎に連番を付けた別ファイルに記録して行きます。
-         ただし、WAVEは記録できなくなります。
-
-Ver.5.00(2009/07/02)
-・物理演算モード追加(カイトモデルのみ未対応)
-・描写深度を10倍まで拡大
-・カメラ・モデルのアイコンによる移動時にShiftキーを押すと10倍の距離移動
-・AVI出力法を、スピード優先方式に戻しました
-・その他バグ色々修正
-
-Ver.4.05(2009/05/27)
-・Ver.4.04に伴うバグ修正
-
-Ver.4.04(2009/05/27)
-・再生時の動画時間計算を厳密化(音ズレ防止)
-
-Ver.4.03(2009/05/25)
-・英語対応(「ヘルプ」→「English Mode」。外国語版OSの場合は自動的に英語モードで立ち上がる)
-・モデルの英語化法
-  1.「ヘルプ」→「モデル拡張」→「英語名編集」にて、モデル名やボーン・表情の英語名を入力
-  2.「ヘルプ」→「モデル拡張」→「拡張モデル保存」で、英語対応版pmdを保存
-・pmdモデル毎にトゥーン用テクスチャを設定できるように変更
-  1.「ヘルプ」→「モデル拡張」→「トゥーンテクスチャ変更」でテクスチャをデフォルトのものから変更
-   ・テクスチャはモデルファイル(*.pmd)と同じフォルダ内に格納しておく事
-   ・テクスチャは同名のファイルがあった場合には最初に読み込んだもののみが使用されるので、
-    テクスチャ名はなるべく他と被らない、ユニークな名前を使用して下さい
-  2.「ヘルプ」→「モデル拡張」→「拡張モデル保存」で、トゥーンテクスチャを変更したモデルを保存
-       ・モデル公開時には、使用したテクスチャをモデル(*.pmd)と一緒に公開して下さい
-・ボーンフレームに空のフレーム挿入、削除機能追加
-  「フレーム編集」→「空フレーム挿入」or「列フレーム削除」
-  (複数モデルで同じモーションを行う時に、モデル毎に動作の遅れや進みを入れる時等に使用)
-・その他バグ色々修正
-
-Ver.4.02(2009/05/08)
-・ボーン、カメラの回転・移動に数値入力モード追加(「ボーン編集」→「数値入力」)
-・バグ色々修正
-
-Ver.4.0(2009/03/05)
-・MMD杯記念に、まささんより初音ミクVer2モデル追加
-・アイコンによる回転・移動に、localモードとglobalモード追加
-・モデル仕様に捩じり用ボーン追加
-・AVI出力時、スピードよりも画質優先の仕様に変更
-・screen.bmpの解像度変更
-
-Ver.3.45(2009/01/25)
-・エッジの太さを各モデルごとに設定できる仕様に変更
-
-Ver.3.44(2009/01/10)
-・アクセサリの地面影表示バグ修正
-
-Ver.3.43(2009/01/08)
-・pmmデータを読み込んだ際に地面影色がおかしくなるバグ修正
-・エッジのZ深度調整(視野角を極端に小さくしても、前より少しだけ綺麗に表示されるようになりますた)
-
-Ver.3.42(2009/01/07)
-・KAITOモデル半目時修正
-・加算合成時の表示バグ修正
-・地面影に半透明モード追加
- 地面影は、1.モデル描写前のアクセサリ描写 2.モデル描写 の1と2の間に描写されます。
- 地面影を透けるようにするには、ステージ等のアクセサリをモデル描写の前に描く必要があります。
- あまり綺麗に描けるわけではないので、期待しないでねw
-・セーブデータ(pmm)にエッジの太さ、および地面影透けるモードのデータ追加
-
-Ver.3.41(2009/01/05)
-・KAITOモデル表情バグ修正
-・表情窓バグ修正
-
-Ver.3.40(2009/01/05)
-・KAITOモデル追加
-・地面影をモデル、アクセサリよりも前に描画する描画順に変更
-・モデルのエッジの太さ設定機能追加
-
-Ver.3.30(2008/12/22)
-・24bitテクスチャ対応
-・別フレームへペースト機能追加
- コピー&ペーストの際、操作対象ボーン(画面左上に表示されるボーン)へコピーされた全ボーンの
- フレームデータをペーストします。これにより、"前髪1"フレームの内容を"左髪"フレームに
- コピーする等、別フレーム間でのコピー&ペーストが可能になります
-・アクセサリ編集機能追加
- アクセサリ名を自由に変更可能(デフォルトはxファイル名)
- アクセサリの描画順序設定可能(半透明のモノを描写する時に使用)
- モデル描写の前にアクセサリを描写することも可能です
-・アクセサリのSizeに補間計算適用
-・アクセサリフレームのコピー&ペースト機能追加
- アクセサリのコピー&ペーストは、モデルの”別フレームへペースト機能追加”と同じく現在選択中の
- アクセサリにペーストします。これにより別アクセサリ間でのフレームコピーが可能です
-・アクセサリ、モデルに加算合成表示機能追加
- 光の表現強化用。加算合成表示は、フレーム登録はできません。
- また、加算合成なのでバックが白だと何も表示されていないように見えるので注意
-・アクセサリフレームの範囲選択機能追加
-・フレーム位置角度補正機能追加
- 選択フレームポイントの位置・角度の値をx倍します。 ネンドロイドタイプの手足が
- 短いモデルにモーションをコピーした際や、動きを大きくしたり小さくする際に利用
-・表情大きさ補正機能追加
- 選択フレームポイントの表情の大きさをx倍します。
- リップシンク後大きさを小さくしてささやくような口の動きにしたりする事が可能です
-・その他様々バグ修正
-
-Ver.3.23(2008/12/19)
-・カメラフレームのバグ修正
-
-Ver.3.22a(2008/11/29)
-・咲音メイコモデル修正(手足の長さを短くしました)
-
-Ver.3.22(2008/11/24)
-・pmmファイル読込時のアクセサリ関連バグによる強制終了の回避修正
-・アクセサリに咲音マイク追加
-
-Ver.3.21b(2008/11/24)
-・咲音メイコモデルスキニング修正
-
-Ver.3.21a(2008/11/23)
-・咲音メイコモデル追加
-
-Ver.3.21(2008/11/8)
-・フレーム窓コピーボタンのモデル間での不具合修正
-・地面影の明るさ調整機能追加(「表示」→「地面影色設定」)
-
-Ver.3.20b(2008/10/31)
-・亞北ネルモデル不具合修正(右スカート前、後ボーンの修正)
-
-Ver.3.20a(2008/10/30)
-・亞北ネルモデル不具合修正
-
-Ver.3.20(2008/10/30)
-・亞北ネルモデル追加
-・「モデル編集時カメラ・照明(アクセサリ)追従」機能のバグ修正
-・モデル編集時、視点パネルの「下面」を「カメラ」に変更する仕様に修正
-
-Ver.3.16(2008/10/09)
-・vacファイル読込時ラジアン度数表示バグ修正
-・各種窓内数字修正時Deleteキー反応修正
-・一部読み込めないvsqファイルに対応
-
-Ver.3.15(2008/09/27)
-・アクセサリを含むpmmファイル読込時バグ修正(ver.3.14によるバグ)
-
-Ver.3.14(2008/09/26)
-・表示・IKがらみのバグ修正
-・pmmロード時、アクセサリxファイルが発見出来なかった場合に
- xファイルの場所を指定するように変更
-
-Ver.3.13(2008/09/21)
-・メニュー項目ショートカットキー重複修正
-・ショートカットキー追加
- A:全て選択 S:未登録選択 D:センター位置バイアス付加
-・フレーム操作窓Enterキー入力時の登録処理バグ修正
-
-Ver.3.12(2008/09/18)
-・ダミーボーン範囲選択時バグ修正
-・アクセサリ数128個以上時バグ修正
-・フレーム選択窓縦スクロールバーバグ修正
-
-Ver.3.11(2008/09/17)
-・wave波形表示ずれ修正
-・ダイアログ表示時Enterキーでフレーム登録されるバグ修正
-・pmmファイル関連付け起動対応
-・レンモデル瞬き・セーラー服修正
-
-Ver.3.10a(2008/09/12)
-・鏡音レンモデルフレーム窓バグ修正
-
-Ver.3.10(2008/09/11)
-・鏡音レンモデル追加
-・ディスプレイ解像度が高すぎる際に生じるエラー対策追加
-(樋口の環境では出ないエラーの対策のため、うまくいったかどうかは不明)
-
-Ver.3.05(2008/09/07)
-・初音ミクモデル著作権表示修正
-・弱音ハクモデル右肩スキニング修正
-・アクセサリモデル255個まで追加
-
-Ver.3.04(2008/08/31)
-・線形補間ボタン不具合修正
-・AVI出力時キャンセルボタン不具合修正
-
-Ver.3.03(2008/08/30)
-・ハクモデル不具合修正
-・vacファイル読込追加
-・その他
-
-Ver.3.02(2008/08/30)
-・表情フレーム登録ができないバグ修正
-・モデルを消去したあと保存したデータのロード時エラーバグ修正
-
-Ver.3.01(2008/08/30)
-・マルチモデル化
-・その他多数変更
-
-Ver.2.02(2008/07/16)
-・vsqファイル(tempo変更)バグ修正
-・AVI出力時のフレームずれ修正
-
-Ver.2.01(2008/04/08)
-・トゥーンレンダリングのエッジの太さを距離によって変更させた
-・Vista版対応(AVI出力時、高速モードを選択すると画質が落ちます)
-・フレーム窓内も、SHIFTキー選択時に選択状態をトグルさせるように変更
-
-Ver.2.00(2008/04/03)
-・演出モードの追加
-・アクセサリに地面モード追加(詳しくは"ステージ.vac"の中身参照)
-・背景AVIを再生時にも同期させるようにした
-・その他色々

+ 0 - 16
examples/models/mmd/vmds/readme.txt

@@ -1,16 +0,0 @@
-readme_wavefile.txt: readme of wavefile dance motion data
-readme_wavefile_camera: readme of the original wavefile camera motion data
-
-wavefile_camera.vmd is camera motion data I've customized from this data
-
-http://www.nicovideo.jp/watch/sm19168559
-
-Note that the original author allows customized data file redistribution
-but doesn't allow the original file redistribution.
-
-And wavefile_camera.vmd inherits the policy of the original file.
-- You must not use the file for porn.
-- You must not cause any troubles to anyone especially other copyright holders,
-  (WAVEFILE music composer, WAVEFILE dance motion author, and so on)
-
-                                       by Takahiro

+ 0 - 43
examples/models/mmd/vmds/readme_wavefile.txt

@@ -1,43 +0,0 @@
-MikuMikuDance用モーションデータ
-WAVEFILE
-
-○配布元動画
-【MMD-DMC2】 WAVEFILE 【モーション配布】
-http://www.nicovideo.jp/watch/sm13147122
-
-○トレース元動画:かんな@むーみんさん
-【ピピピ♪】 WAVEFILE 【踊ってみた】
-http://www.nicovideo.jp/watch/sm12016176
-
-○オリジナル曲:ラマーズP
-WAVEFILE/初音ミク
-http://www.nicovideo.jp/watch/sm11938255
-
-■使用条件
-
-改変、再配布はご自由にどうぞ。
-ご利用は自己責任で権利者の方々の迷惑にならないよう常識の範囲内でお願いします。
-営利目的の利用はご一報ください。無断での商用利用は禁止します。
-
-■説明・注意点
-
-Lat式ミクVer2.3 Whiteを利用して作成しております。
-
-手を合わせるモーションがあるため、モデルの誤差による修正はかなり困難になると思います。
-そのため、Lat式、レア様、標準ミクVer2に調整した3種類のモーションを同梱しました。
-ターンが多いため、ツインテールが荒ぶるのでLat式以外のミクモデルは辛いものがありますがなんとか使ってやってくだちい
-
-標準ミクVer2変更点
-・241フレーム
- 右腕をめいいっぱいあげると顔に腕がめり込むため低めに調整しています
-・2675-2680フレーム
- 右腕でツインテールを抱え込んでしまうため、右腕のモーションを下からくぐり抜けるように大幅に変更しています。
- 違和感がある場合はLat式のモーションからコピーして調整してください。
-・表情
- Lat式の「あ」x0.4 「い」「う」「お」x0.6 で調整してます。
- 小さすぎると感じた場合はLat式の表情からコピーして調整してください。
-
-
-mail:hino.mmd39@gmail.com
-
-hino

+ 0 - 41
examples/models/mmd/vmds/readme_wavefile_camera.txt

@@ -1,41 +0,0 @@
-MikuMikuDance用カメラモーションデータ+おまけピンナップ
-
-この度はDLしていただきありがとうございます(´∀`)
-
-ula式ミクさん かっつりトゥーン WAVEFILE 【MMD】
-http://www.nicovideo.jp/watch/sm19168559
-
-
-モデル:ula様 http://www.nicovideo.jp/user/3385769
-
-曲:sm11938255:ラマーズP様
-
-モーション:sm13147122:hino様
-
-ステージ:NBBCM風ステージsm12424615:k9様/psg_stage
-
-エフェクト
-
-Diffusion・XDOF・AutoLuminous:そぼろ様
-かっつりトゥーン:Less様
-SSAO_Toon:ビームマンP様
-
-
-こちらを使用したデータとなります。
-
-注意点は特に無いです。フルVerではないのでご了承下さい。
-
-
-動画に関わる方々、権利者の迷惑にならないようお願いします。
-
-(R-18タグの動画には使用は禁止です。)
-
-改変・改変後の再配布は可。好きにいじってくださいませ。
-
-
-では、よきMMDライフを!
-
-
-2012/11/08
-
-doramata

BIN
examples/models/mmd/vmds/wavefile_camera.vmd


BIN
examples/models/mmd/vmds/wavefile_v2.vmd


+ 0 - 470
examples/models/mmd/vpds/01.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -1.994186,-0.241098,0.050083;				// trans x,y,z
-  -0.008508,0.417201,0.003480,0.908765;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.010000,0.000000,0.999950;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.059671,-0.020844,-0.137914,0.988424;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.105690,-0.195021,-0.117377,0.967996;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.128932,0.149530,0.118547,0.973121;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.101819,-0.123631,-0.100062,0.982006;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.014637,-0.086429,-0.016842,0.996008;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.119712,0.992808;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000001,0.000000,-0.000004,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.411193,-0.085255,-0.020730;				// trans x,y,z
-  -0.141385,-0.139213,-0.035362,0.979480;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  -0.035930,-0.056137,-0.048719;				// trans x,y,z
-  -0.019856,0.003108,0.008549,0.999762;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.030077,-0.004477,-0.060761;				// trans x,y,z
-  0.071185,0.048630,0.057587,0.994611;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.030964,-0.015428,-0.035141;				// trans x,y,z
-  0.103543,-0.036752,0.102269,0.988670;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.000700,0.000184,-0.000108;				// trans x,y,z
-  0.048700,0.004063,0.093851,0.994386;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  0.001655,-0.011049,-0.000326;				// trans x,y,z
-  -0.044553,0.002348,0.044513,0.998012;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.144492,0.989506;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.434258,0.070982,-0.155688,0.884388;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.272038,-0.200928,0.000000,0.941075;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.124262,0.443016,-0.365080,-0.809327;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.156937,0.129655,0.000000,0.979061;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.137932,0.181517,0.000000,0.973666;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026328,0.042482,0.000000,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.054414,-0.065167,0.000000,0.996389;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.106422,-0.156019,0.014730,0.981893;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.108702,0.003196,0.043606,0.993113;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.031608,0.000565,-0.009141,0.999459;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.019599,0.213412,0.083914,0.973154;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.031457,-0.022440,-0.019064;				// trans x,y,z
-  -0.052190,0.080134,0.055656,0.993860;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.020636,0.005676,-0.002946;				// trans x,y,z
-  -0.091550,0.028185,0.002646,0.995398;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  0.038839,-0.034651,-0.027884;				// trans x,y,z
-  0.067379,-0.042276,0.078273,0.993754;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.005352,0.001595,0.000632;				// trans x,y,z
-  0.091892,-0.044829,0.091331,0.990558;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  0.002437,-0.019661,0.000929;				// trans x,y,z
-  -0.040835,-0.021274,-0.003316,0.998934;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.002594,-0.000369,-0.000039;				// trans x,y,z
-  -0.042199,-0.005887,-0.043903,0.998127;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.314347,-0.059472,-0.184239,0.929356;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.148917,-0.324401,0.181002,0.916420;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.509512,-0.792894,0.021710,0.333532;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.315405,0.109868,-0.398256,0.854306;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.081360,-0.073701,0.182835,0.976996;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.049979,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.050546,0.061899,0.129220,0.988390;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.044985,0.998987;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.064954,0.997889;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.034892,0.001044,0.018763,0.999215;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.022186,0.003034,0.029414,0.999317;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000156,-0.124623,0.002593,0.992201;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.106710,0.014601,0.058062,0.992487;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000744,-0.000072,0.101567,0.994829;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.076416,0.039423,-0.008418,0.996261;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.235746,0.002891,-0.003549,0.971803;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  -1.975501,1.000014,-0.157219;				// trans x,y,z
-  -0.378374,0.288495,0.125389,0.870563;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  -1.871634,0.000013,0.332146;				// trans x,y,z
-  0.000000,0.305058,0.000000,0.952333;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/02.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  2.764069,-1.300000,0.132707;				// trans x,y,z
-  0.000000,-0.309816,0.000000,0.950796;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.237703,0.971338;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.020773,0.039901,0.000000,0.998987;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.120376,0.156313,0.132850,0.971302;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.098052,-0.130431,-0.101522,0.981360;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027005,-0.086756,0.013188,0.995776;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.032540,-0.023417,-0.014825;				// trans x,y,z
-  -0.062282,-0.084453,-0.055396,0.992935;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.063383,0.015114,0.009096;				// trans x,y,z
-  -0.083422,-0.021550,-0.029391,0.995848;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.012526,0.010828,0.002483;				// trans x,y,z
-  0.052028,0.043367,-0.045825,0.996651;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  -0.019721,-0.028530,-0.009645;				// trans x,y,z
-  0.075386,0.014514,-0.093846,0.992622;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.000082,-0.005265,-0.000251;				// trans x,y,z
-  -0.044427,0.001453,0.002431,0.999009;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.002440,-0.000172,0.000089;				// trans x,y,z
-  -0.043776,0.002074,0.044063,0.998067;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.504884,0.272427,0.433548,0.694917;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.229035,-0.079988,0.183968,0.952523;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.301249,0.876155,-0.113000,0.358929;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.040464,-0.038137,0.153367,0.986602;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.156937,0.129655,0.000000,0.979061;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.137932,0.181517,0.000000,0.973666;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026328,0.042482,0.000000,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.054414,-0.065167,0.000000,0.996389;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.106422,-0.156019,0.014730,0.981893;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.130980,0.004929,0.037980,0.990645;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.028005,-0.001122,-0.040011,0.998806;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000694,-0.021159,-0.013292,0.999687;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.206327,-0.828066,-0.228734;				// trans x,y,z
-  -0.205960,0.009531,-0.178599,0.962077;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  0.076432,0.070538,0.017379;				// trans x,y,z
-  0.030819,-0.075221,0.142393,0.986467;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.033356,0.003292,0.000650;				// trans x,y,z
-  0.003775,-0.046812,-0.038634,0.998149;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.059995,-0.073017,0.005962;				// trans x,y,z
-  -0.093809,-0.090366,-0.102355,0.986183;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.012936,-0.001193,0.000630;				// trans x,y,z
-  -0.088419,-0.081169,-0.077111,0.989771;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.011616,-0.036572,-0.006426;				// trans x,y,z
-  -0.008743,-0.046497,0.042118,0.997992;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.029995,0.999550;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.505151,-0.161643,0.086889,0.843292;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.264458,0.195323,0.000000,0.944410;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.417015,0.326708,-0.039501,0.847230;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.000000,0.069943,0.997551;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.000000,-0.044984,0.998987;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.000000,-0.005000,0.999987;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.261910,0.965093;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.300293,0.953846;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.171370,-0.006898,-0.043850,0.984206;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.024529,-0.000688,0.022099,0.999455;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.005024,-0.106238,0.044357,0.993337;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.114747,0.000000,0.993394;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.037233,-0.018442,-0.048556,0.997956;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.043459,0.003910,-0.113974,0.992525;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.116474,0.002160,-0.092523,0.988872;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  2.272156,0.000005,0.373947;				// trans x,y,z
-  0.000000,-0.309816,0.000000,0.950796;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  3.314301,0.000005,-1.097728;				// trans x,y,z
-  0.000000,-0.394018,0.000000,0.919102;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/03.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -4.111428,-0.150000,0.797528;				// trans x,y,z
-  0.000000,0.183946,0.000000,0.982936;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.051299,-0.186013,-0.050515,0.979905;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.247404,0.000000,0.968912;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.099813,0.001997,0.019899,0.994805;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.073866,-0.066951,-0.109878,0.988933;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.160672,-0.189727,-0.121060,0.961006;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.328384,0.053001,-0.027668,0.942650;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.144274,-0.007943,-0.054395,0.988008;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.004106,-0.000000,0.999992;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  0.001230,-0.024893,-0.018814;				// trans x,y,z
-  -0.044102,-0.027570,-0.013410,0.998557;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.018523,0.003813,-0.000220;				// trans x,y,z
-  -0.084528,-0.006915,-0.000587,0.996397;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.002284,-0.035860,-0.033173;				// trans x,y,z
-  0.060336,0.000095,-0.048592,0.996995;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.008785,-0.010949,-0.002062;				// trans x,y,z
-  0.057920,-0.086536,0.038420,0.993821;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.002397,-0.006867,0.006657;				// trans x,y,z
-  0.040145,-0.084471,0.083836,0.992081;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.002356,0.000698,-0.002632;				// trans x,y,z
-  0.003823,-0.043595,0.043861,0.998079;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.007916,0.058976,0.204147,0.977129;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.185786,0.218048,-0.442273,0.849900;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.187354,0.880283,0.057082,0.432129;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.000000,-0.232843,0.972514;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.246207,0.969217;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.001696,0.000064,0.043666,0.999045;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.013931,0.000746,-0.021606,0.999669;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.146562,-0.124518,-0.023699,0.981046;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.007006,-0.022676,-0.028087;				// trans x,y,z
-  -0.018172,0.034269,0.024338,0.998951;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.037362,0.015114,0.039904;				// trans x,y,z
-  -0.054150,0.012820,0.010417,0.998396;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.008622,0.008793,0.003937;				// trans x,y,z
-  0.049976,-0.046279,0.045861,0.996623;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.003324,-0.026139,-0.026227;				// trans x,y,z
-  0.093567,-0.026212,-0.002785,0.995264;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.001088,-0.005227,-0.001258;				// trans x,y,z
-  0.012920,0.004344,-0.040762,0.999076;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.002434,-0.000228,0.000259;				// trans x,y,z
-  -0.043467,0.004757,-0.043477,0.998097;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.084898,0.000000,0.996390;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.468947,-0.299128,0.346326,0.755425;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.551237,-0.803749,0.007834,0.223745;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.073970,0.074407,-0.478954,0.871543;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.198176,0.324656,0.511255,0.770673;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.105078,-0.160877,-0.272193,0.942860;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.257081,0.966390;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.079915,0.996801;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.169182,0.985584;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.198670,0.980066;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.232842,0.972513;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.169182,0.985585;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.203567,0.979061;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.266731,0.963771;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.169183,0.985584;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.031979,0.067810,0.391343,0.917184;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000001,0.000000,0.466208,0.884675;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.000000,0.514135,0.857708;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.006942,-0.000361,0.012898,0.999893;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.024286,-0.000423,0.013963,0.999608;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.005032,-0.209403,-0.026736,0.977451;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.109778,-0.000000,0.993956;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.103323,-0.012150,0.033669,0.994004;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.004454,-0.005741,0.019483,0.999784;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.121140,0.036956,-0.057654,0.990270;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  -1.472330,-0.000006,-0.629730;				// trans x,y,z
-  -0.073628,0.372412,-0.088541,0.920895;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  -4.282195,-0.000006,1.650304;				// trans x,y,z
-  0.000000,0.099833,0.000000,0.995003;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/04.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  2.799953,-0.550000,1.100003;				// trans x,y,z
-  0.000000,0.099833,0.000000,0.995004;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.640385,0.000000,0.000000,0.768054;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.338197,0.000000,0.000000,0.941076;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.227978,0.000000,0.000000,0.973666;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.173357,0.013271,0.025761,0.984433;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.364547,0.017611,0.025354,0.930673;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.159033,0.090173,0.010494,0.983091;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.144492,0.000000,0.000000,0.989506;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.005721,-0.003472,-0.010687,0.999920;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  0.009198,-0.014471,-0.005284;				// trans x,y,z
-  -0.059246,-0.005480,-0.000850,0.998228;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.013803,-0.002743,0.022053;				// trans x,y,z
-  -0.072012,-0.001949,0.000131,0.997402;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.006872,0.002340,0.002986;				// trans x,y,z
-  0.043553,0.044026,0.002881,0.998076;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.005200,-0.017694,-0.015447;				// trans x,y,z
-  0.092831,0.045606,-0.025176,0.994318;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.000120,-0.004937,-0.001255;				// trans x,y,z
-  0.074275,0.006032,-0.001520,0.997218;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.004539,-0.003652,-0.001431;				// trans x,y,z
-  0.033703,0.005489,-0.011442,0.999351;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.452249,0.155351,0.063431,0.875964;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.053563,0.209486,0.225559,0.949930;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000400,-0.000280,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.152993,0.679989,0.269687,0.664437;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000371,-0.000318,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.205588,-0.093466,-0.314429,0.922026;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,-0.539167,-0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,-0.316493,0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.644218,0.764842;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.717356,0.696706;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.747971,0.663731;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.215022,0.009848,0.039729,0.975751;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.059635,-0.001666,-0.036473,0.997552;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.071801,0.021426,0.997189;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  -0.010130,-0.011528,-0.015233;				// trans x,y,z
-  -0.050364,-0.025884,-0.002748,0.998392;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  0.002318,-0.001001,0.024282;				// trans x,y,z
-  -0.064031,-0.010972,-0.002288,0.997885;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.003844,0.002464,0.002051;				// trans x,y,z
-  0.042893,-0.046583,-0.043355,0.997051;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.016446,-0.011908,-0.012559;				// trans x,y,z
-  0.080655,-0.097290,-0.071277,0.989419;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  0.002620,-0.005016,0.000693;				// trans x,y,z
-  -0.086080,-0.087803,0.001073,0.992411;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.004413,-0.003883,-0.000959;				// trans x,y,z
-  -0.041690,-0.045344,0.041680,0.997231;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.452249,-0.155351,-0.063431,0.875964;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.075738,-0.191819,-0.236235,0.949557;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000400,-0.000280,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.152993,-0.679989,-0.269687,0.664437;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000371,-0.000318,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.205588,0.093466,0.314429,0.922026;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.644218,0.764842;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.717356,0.696706;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.747971,0.663731;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.218193,-0.010323,-0.042261,0.974936;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.055231,-0.000887,0.013740,0.998379;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.076578,-0.022852,0.996802;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.049979,0.000000,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.096666,-0.011722,0.021404,0.995018;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.010795,-0.000001,0.000061,0.999942;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.117973,0.035714,-0.069732,0.989921;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  2.760365,0.000004,-0.093145;				// trans x,y,z
-  0.000000,0.188859,0.000000,0.982004;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  2.769862,0.000004,0.096637;				// trans x,y,z
-  0.000000,0.005000,0.000000,0.999987;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/05.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -4.784175,-0.600000,-0.099221;				// trans x,y,z
-  0.000000,-0.309816,0.000000,0.950795;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.200338,-0.005978,-0.145091,0.968904;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.114170,-0.134388,-0.025439,0.984000;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.078572,0.246756,0.052834,0.964440;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.134701,-0.093957,0.093927,0.981940;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.015615,0.113084,0.040682,0.992629;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.064705,-0.001473,-0.000096,0.997903;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.129634,0.000000,0.000000,0.991562;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000276,0.000523,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  0.044734,-0.035267,-0.137655;				// trans x,y,z
-  -0.066242,0.007056,0.000472,0.997779;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.039326,-0.016649,-0.106857;				// trans x,y,z
-  -0.013569,0.032764,0.015741,0.999247;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.033436,-0.025518,-0.050652;				// trans x,y,z
-  0.076140,0.052904,0.052210,0.994323;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.007772,0.000487,0.003231;				// trans x,y,z
-  0.088952,0.013898,0.088227,0.992023;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.007489,-0.014606,-0.003932;				// trans x,y,z
-  0.023681,-0.008335,0.072216,0.997073;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.000897,-0.011129,0.000034;				// trans x,y,z
-  -0.044215,-0.006788,0.043861,0.998036;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.118732,-0.302678,-0.038033,0.944903;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.012624,0.008100,-0.366231,0.930402;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.486696,0.658940,-0.000000,0.573520;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.004411,0.008974,-0.198659,0.980018;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,-0.539167,-0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,-0.316493,0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.644218,0.764842;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.717356,0.696706;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.747971,0.663731;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.114412,-0.001464,-0.014644,0.993325;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.064391,-0.002530,-0.039207,0.997151;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.007996,-0.080639,-0.038855,0.995953;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.110817,-0.080059,-0.143625;				// trans x,y,z
-  -0.089857,0.039426,0.003561,0.995168;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  0.075671,-0.037308,-0.107349;				// trans x,y,z
-  -0.004074,0.054526,0.055760,0.996946;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  0.035996,-0.034300,-0.047387;				// trans x,y,z
-  0.089613,-0.050381,0.072888,0.992028;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.004057,0.001264,0.003125;				// trans x,y,z
-  0.090609,-0.033441,0.090379,0.991213;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.002881,-0.014973,-0.005628;				// trans x,y,z
-  0.032205,0.002533,-0.018727,0.999303;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.000904,-0.011202,0.000089;				// trans x,y,z
-  -0.043728,0.005147,-0.043949,0.998063;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.174827,-0.242999,0.018337,0.953966;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.583633,-0.223313,0.245584,0.741074;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.404966,-0.548301,0.000000,0.731689;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.419764,0.006693,0.033763,0.906980;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.091878,-0.111519,-0.000000,0.989506;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.073474,0.088138,0.000000,0.993395;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.112531,0.000775,0.007705,0.993618;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.056795,-0.001184,0.020193,0.998181;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.080843,-0.199380,-0.017618,0.976422;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.014945,0.084888,-0.001273,0.996277;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.133543,-0.019193,0.075299,0.987992;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.023979,0.001993,0.082815,0.996275;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.137928,0.041437,-0.018781,0.989397;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  -7.066986,0.356119,1.432202;				// trans x,y,z
-  -0.138792,-0.151267,0.273639,0.939667;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  -8.276029,5.241710,1.410848;				// trans x,y,z
-  -0.682814,-0.092479,-0.370941,0.622587;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/06.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  6.044695,-1.000000,-0.864376;				// trans x,y,z
-  0.000000,0.169182,0.000000,0.985585;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.179438,0.096443,0.274774,0.939679;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.094857,0.000000,0.000000,0.995491;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000513,-0.095055,-0.188324,0.977495;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.143450,0.156967,-0.191428,0.958196;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.049068,0.003301,-0.013760,0.998695;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.092164,-0.088295,-0.005325,0.991807;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.083989,-0.004002,0.070534,0.993959;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.069552,-0.057243,-0.105616;				// trans x,y,z
-  -0.085483,-0.025997,-0.002232,0.995998;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  -0.041665,-0.037653,-0.078290;				// trans x,y,z
-  -0.025639,-0.034512,-0.035223,0.998454;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  -0.017508,-0.036749,-0.039345;				// trans x,y,z
-  0.074528,0.045125,-0.059877,0.994396;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.005882,0.000240,0.001595;				// trans x,y,z
-  0.090541,0.014709,-0.026040,0.995444;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.005191,-0.014821,-0.000029;				// trans x,y,z
-  -0.012366,-0.000444,0.034423,0.999331;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.000927,-0.011096,0.000091;				// trans x,y,z
-  -0.043683,-0.002470,0.044012,0.998072;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.188859,0.982004;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.066629,-0.033544,-0.152078,0.985549;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.265631,-0.185590,0.000000,0.946042;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.566207,0.679266,-0.000000,0.466913;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000371,0.000318,0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.219048,0.279322,0.356549,0.864216;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,-0.539167,-0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,-0.316493,0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.165350,0.149786,-0.179310,0.958161;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.049979,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.028453,-0.034844,-0.129503,0.990557;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.044985,0.998987;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.064954,0.997889;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.097217,-0.000845,0.000772,0.995263;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.017472,0.000049,0.002790,0.999843;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026386,0.010853,-0.019162,0.999409;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.001385,-0.035202,-0.093102;				// trans x,y,z
-  -0.076838,0.004543,0.000350,0.997033;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.007957,-0.025806,-0.070749;				// trans x,y,z
-  -0.033159,-0.002378,0.004496,0.999437;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.013974,-0.029263,-0.035459;				// trans x,y,z
-  0.067180,-0.046853,-0.007513,0.996612;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.007628,0.000272,0.001854;				// trans x,y,z
-  0.086265,-0.020259,-0.046796,0.994966;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.004501,-0.013558,-0.001198;				// trans x,y,z
-  0.013948,-0.000272,-0.018024,0.999740;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.004453,-0.017690,-0.002359;				// trans x,y,z
-  0.005604,0.000555,-0.021563,0.999752;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.004363,0.124598,0.034720,0.991590;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.118447,0.082756,-0.000000,0.989506;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.143568,-0.157781,-0.053841,0.975497;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000371,0.000318,0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.342847,0.123017,-0.508434,0.780267;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.156937,-0.129655,-0.000000,0.979061;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.137932,-0.181517,-0.000000,0.973666;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026328,-0.042482,-0.000000,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.054414,0.065167,-0.000000,0.996389;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.106422,0.156019,-0.014730,0.981893;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.200689,-0.010983,-0.043502,0.978627;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.050876,-0.001961,0.015389,0.998584;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.016125,-0.074877,-0.047008,0.995954;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.026755,-0.087873,-0.000724,0.995771;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.080749,-0.012059,-0.004218,0.996653;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.021489,0.000935,-0.040611,0.998944;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.107430,0.021253,-0.090321,0.989874;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  12.087521,2.875344,0.234539;				// trans x,y,z
-  -0.246639,0.078375,0.154511,0.953492;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  5.974961,0.000003,-0.444818;				// trans x,y,z
-  0.000000,0.039989,0.000000,0.999200;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/07.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -2.650023,0.000000,-0.000010;				// trans x,y,z
-  0.000000,-0.389418,0.000000,0.921060;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.178085,0.142619,0.109326,0.967466;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000324,0.086983,-0.055148,0.994681;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.119911,0.016550,-0.070643,0.990130;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.021507,-0.088437,-0.022799,0.995589;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.086462,0.023146,0.003897,0.995979;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.059964,0.998199;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000018,-0.000022,-0.003170,0.999995;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.035747,-0.063019,-0.153373;				// trans x,y,z
-  -0.078264,-0.013234,-0.001230,0.996844;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  -0.003666,-0.038082,-0.067287;				// trans x,y,z
-  0.034980,-0.034492,-0.023081,0.998526;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.011789,-0.002747,0.018204;				// trans x,y,z
-  0.057351,0.078026,-0.048134,0.994136;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.007770,-0.008975,0.002952;				// trans x,y,z
-  0.086984,0.019743,0.039775,0.995220;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.002535,-0.000221,0.000009;				// trans x,y,z
-  0.039672,-0.004387,0.048495,0.998026;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.000871,-0.010668,0.000084;				// trans x,y,z
-  -0.043614,-0.007839,0.043749,0.998059;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.079915,-0.000000,0.996801;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.402253,0.168613,-0.415402,0.798246;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.289079,0.603583,-0.112823,0.734433;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.062081,0.291566,-0.002349,0.954530;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.246207,0.969217;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.024331,-0.001149,-0.039371,0.998928;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.029839,-0.001692,-0.056587,0.997950;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.032102,-0.061964,-0.149713;				// trans x,y,z
-  -0.077268,0.012907,0.001007,0.996927;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  0.012957,-0.030512,-0.114711;				// trans x,y,z
-  0.001556,0.022913,0.018730,0.999561;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  0.003489,-0.032110,-0.054439;				// trans x,y,z
-  0.090460,-0.047500,0.051287,0.993444;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.007473,-0.008861,0.002712;				// trans x,y,z
-  0.087012,-0.032495,-0.023395,0.995402;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.002610,-0.000232,-0.000001;				// trans x,y,z
-  0.039762,0.000433,-0.054225,0.997737;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.000879,-0.010717,0.000093;				// trans x,y,z
-  -0.043609,0.008385,-0.043774,0.998054;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.084898,0.000000,0.996389;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.063556,0.040007,0.414178,0.907090;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.644218,0.764842;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.717356,0.696706;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.747971,0.663731;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.098168,-0.004650,-0.043319,0.994216;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.030223,-0.000927,0.018367,0.999374;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.002717,-0.141079,-0.062341,0.988030;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.200000,0.000000,0.000000;				// trans x,y,z
-  0.030429,0.045967,-0.007192,0.998452;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.131867,-0.018335,0.022794,0.990836;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.021362,0.000028,0.001519,0.999771;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.142446,0.044211,-0.068757,0.986422;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  -3.826135,0.000007,1.003354;				// trans x,y,z
-  0.000000,-0.352274,0.000000,0.935896;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  -2.588499,0.860598,-0.227916;				// trans x,y,z
-  -0.274705,-0.277960,-0.054310,0.918871;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/08.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  3.649999,-0.000000,0.000000;				// trans x,y,z
-  0.000000,0.945784,0.000000,0.324797;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.151222,-0.201533,-0.116601,0.960688;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.118560,-0.214354,-0.087090,0.965614;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.025153,-0.499040,0.007205,0.866184;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.119689,-0.025359,0.058427,0.990766;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.006831,0.114091,0.035263,0.992821;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.060483,0.060032,0.000850,0.996362;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.059964,0.000000,0.000000,0.998201;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.000005,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.054138,-0.063959,-0.138623;				// trans x,y,z
-  -0.082407,-0.019116,-0.001582,0.996414;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  -0.027475,-0.034706,-0.104309;				// trans x,y,z
-  -0.006249,-0.038331,-0.026902,0.998883;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  -0.010507,-0.035200,-0.049211;				// trans x,y,z
-  0.086092,0.067137,-0.057015,0.992386;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.006390,0.000414,0.003440;				// trans x,y,z
-  0.087435,0.015148,-0.000831,0.996055;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.005658,-0.014803,-0.004799;				// trans x,y,z
-  0.024618,-0.004609,0.040766,0.998855;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.000929,-0.011227,0.000085;				// trans x,y,z
-  -0.043763,-0.005599,0.043886,0.998062;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.079915,0.000000,0.996802;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.125065,-0.152542,-0.440377,0.875875;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.048446,0.057161,-0.000000,0.997189;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.246207,0.969217;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.059941,-0.000256,0.000392,0.998202;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.034604,0.000514,-0.022721,0.999143;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000331,0.048057,0.013721,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  -0.003045,-0.021494,-0.031046;				// trans x,y,z
-  -0.009905,0.009930,0.008663,0.999864;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.019691,0.011425,0.048420;				// trans x,y,z
-  -0.046722,0.004020,0.001181,0.998899;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.007269,0.006413,0.005088;				// trans x,y,z
-  0.047637,-0.042250,0.030083,0.997517;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.014683,-0.024475,-0.028685;				// trans x,y,z
-  0.092895,-0.028962,-0.054003,0.993788;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.001267,-0.005345,-0.001412;				// trans x,y,z
-  0.023808,0.005917,-0.050820,0.998406;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.002414,-0.000238,0.000275;				// trans x,y,z
-  -0.043516,0.003641,-0.043502,0.998099;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.065092,0.055933,-0.003496,0.996304;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.046330,0.086839,0.517381,0.850076;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.115987,-0.094227,-0.079017,0.985608;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.644218,0.764842;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.717356,0.696706;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.747971,0.663731;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.560508,0.828148;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.846832,0.531861;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.057361,0.000347,0.002657,0.998350;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.046153,-0.000989,0.034129,0.998351;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.003773,-0.136411,-0.028965,0.990222;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.104807,0.000000,0.994493;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.114289,-0.015617,0.007668,0.993295;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.008537,0.000354,-0.021595,0.999730;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.135567,0.033388,-0.080766,0.986906;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  3.777401,5.600004,-5.115785;				// trans x,y,z
-  -0.147301,0.564172,0.805840,0.103127;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  5.340622,0.000003,-0.630037;				// trans x,y,z
-  0.000000,0.935616,0.000000,0.353020;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/09.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  1.940141,-7.240369,-0.173488;				// trans x,y,z
-  0.454959,-0.499020,0.540608,0.501729;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.412320,0.000001,-0.000001,0.911038;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.004991,0.023075,0.055346,0.998187;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.141561,0.456307,0.143209,0.866738;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.100699,-0.147968,0.195939,0.964145;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.138779,-0.029275,-0.037861,0.989166;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.218539,-0.172139,-0.065927,0.958260;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.010000,0.000000,-0.000000,0.999950;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.008475,-0.019288,0.178013,0.983804;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.034183,-0.007925,0.005016;				// trans x,y,z
-  -0.092197,-0.086403,-0.017204,0.991837;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.017336,0.001354,-0.000895;				// trans x,y,z
-  -0.097496,-0.024540,-0.002480,0.994930;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  -0.010167,-0.002737,0.004987;				// trans x,y,z
-  0.041940,-0.052055,-0.033817,0.997190;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  -0.005808,0.000030,0.004673;				// trans x,y,z
-  0.095230,-0.080325,0.094290,0.987719;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.005454,0.000985,-0.004590;				// trans x,y,z
-  0.100229,-0.081376,0.099481,0.986628;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  0.005063,-0.000420,-0.005930;				// trans x,y,z
-  0.043478,0.008208,0.043141,0.998089;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.029995,0.000000,0.999549;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.595373,-0.221604,-0.215225,0.741687;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.547959,0.727101,-0.011650,0.413436;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.246207,0.969217;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.094274,0.077642,0.018505,0.992343;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.174093,-0.142045,0.120414,0.966963;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.014582,0.003862,-0.074995,0.997069;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.188859,0.000001,-0.000000,0.982004;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  -0.099742,-0.010754,-0.107566;				// trans x,y,z
-  0.133647,0.127106,0.071154,0.980266;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.034294,0.024782,-0.019091;				// trans x,y,z
-  -0.098911,0.040075,0.001877,0.994287;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.086952,-0.036850,-0.189773;				// trans x,y,z
-  -0.056973,0.077570,0.174528,0.979937;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  0.260449,-0.035773,0.094236;				// trans x,y,z
-  -0.114918,0.128582,0.079929,0.981770;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  0.007479,0.041478,-0.014392;				// trans x,y,z
-  0.082510,0.091188,-0.094108,0.987937;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.000151,-0.001976,0.000748;				// trans x,y,z
-  0.007204,0.044163,-0.036140,0.998344;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.171085,-0.030824,-0.060007,0.982943;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.421081,0.301613,0.258188,0.815508;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000283,-0.000198,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.506103,-0.768492,-0.030239,0.390335;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000262,-0.000225,-0.000001,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.116235,0.105734,0.113016,0.981089;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.128920,0.316544,0.132124,0.930442;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,0.117068,-0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.044459,0.032332,0.245835,0.967752;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.209878,0.977728;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.511944,-0.028012,-0.042122,0.857529;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.227366,-0.027872,-0.096606,0.968606;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.632474,0.008689,-0.023436,0.774176;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.937369,0.000003,-0.000002,0.348337;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.019999,-0.000000,0.000000,0.999799;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,0.079915,-0.000000,0.996802;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.049423,-0.037653,-0.128977,0.989700;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.042351,0.010446,-0.239245,0.969980;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.069280,-0.033158,-0.049572,0.995814;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  7.744065,-0.175429,0.659689;				// trans x,y,z
-  0.454959,-0.499020,0.540608,0.501729;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  9.449584,-0.314716,-0.904193;				// trans x,y,z
-  0.454959,-0.499020,0.540608,0.501729;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/10.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -0.016793,-7.011534,0.591861;				// trans x,y,z
-  -0.027047,-0.724976,0.688111,-0.013317;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.004989,-0.000325,-0.064953,0.997876;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.060857,0.396591,-0.114267,0.908821;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.227542,-0.043186,-0.180681,0.955884;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.130664,0.312302,-0.291922,0.894528;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.096643,0.101172,-0.077773,0.987105;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.106082,-0.077185,-0.104239,0.985862;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.218230,-0.000000,0.000000,0.975897;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000001,-0.000000,0.173649,0.984810;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  0.211092,0.097212,0.084799;				// trans x,y,z
-  -0.115004,0.091414,0.002390,0.989149;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.156630,0.114231,0.077961;				// trans x,y,z
-  -0.185510,0.090863,0.078985,0.975239;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.066586,0.015816,0.079353;				// trans x,y,z
-  -0.063163,-0.050500,-0.022139,0.996479;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  0.004553,0.001743,0.002252;				// trans x,y,z
-  0.088407,-0.020059,0.094469,0.991392;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  -0.004623,-0.000108,0.000142;				// trans x,y,z
-  -0.003393,0.087282,0.054435,0.994689;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.000417,-0.000431,-0.000143;				// trans x,y,z
-  -0.015465,-0.032663,-0.000166,0.999347;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.151043,0.181281,0.251768,0.938582;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.545241,-0.064415,0.079108,0.832049;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.469058,0.635060,0.000000,0.613746;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.295520,0.955337;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.063722,0.997967;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.164543,0.986369;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.332634,0.943056;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000001,-0.380689,0.924703;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.154229,0.004889,0.032891,0.987477;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.144022,-0.009275,0.023832,0.989246;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.286585,0.109487,-0.122241,0.943895;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.953608,-0.000000,-0.000000,0.301053;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.064525,0.007453,-0.114504,0.991297;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  0.502610,0.046999,-0.588389;				// trans x,y,z
-  -0.408504,0.447103,0.200149,0.770174;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  0.654711,-0.597717,0.276908;				// trans x,y,z
-  0.125253,-0.180801,0.104566,0.969891;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  0.032758,-0.303965,-0.142821;				// trans x,y,z
-  0.013091,-0.230179,-0.054211,0.971549;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  0.045097,-0.079780,-0.022619;				// trans x,y,z
-  0.028877,-0.105588,-0.114954,0.987321;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  0.173733,-0.133848,-0.155488;				// trans x,y,z
-  0.114406,-0.104983,0.116899,0.980930;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.007882,-0.011396,0.014978;				// trans x,y,z
-  -0.031501,-0.051633,-0.052613,0.996782;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.258406,-0.080179,-0.502344,0.821248;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.121531,0.000791,-0.288422,0.949758;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.123305,-0.054506,-0.055585,0.989310;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.180075,0.161711,-0.353770,0.903476;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.156937,-0.129655,-0.000000,0.979061;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.137932,-0.181517,-0.000000,0.973666;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026328,-0.042482,-0.000000,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.054414,0.065167,-0.000000,0.996389;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.126574,0.177750,-0.029056,0.975468;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.183946,0.982936;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.283384,0.025844,0.083746,0.954995;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.136597,0.008301,-0.019744,0.990397;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.287823,-0.171651,-0.303324,0.892014;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.935616,0.000000,-0.000000,0.353019;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.079240,-0.021932,-0.127766,0.988391;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.026273,0.080658,0.006587,0.996374;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.032178,0.024784,-0.015231,0.999061;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.042177,0.011195,-0.254793,0.966013;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.008072,-0.013813,0.004368,0.999864;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.200000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 470
examples/models/mmd/vpds/11.vpd

@@ -1,470 +0,0 @@
-Vocaloid Pose Data file
-
-初音ミク.osm;		// 親ファイル名
-93;				// 総ポーズボーン数
-
-Bone0{センター
-  -1.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.064954,0.000000,0.997888;		// Quaternion x,y,z,w
-}
-
-Bone1{上半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.119712,0.992808;		// Quaternion x,y,z,w
-}
-
-Bone2{首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.049777,0.089766,0.004492,0.994708;		// Quaternion x,y,z,w
-}
-
-Bone3{頭
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone4{左目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone5{右目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone6{ネクタイ1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.135863,0.083997,-0.033364,0.986597;		// Quaternion x,y,z,w
-}
-
-Bone7{ネクタイ2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.101563,-0.213890,-0.086639,0.967693;		// Quaternion x,y,z,w
-}
-
-Bone8{ネクタイ3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.029215,0.071890,0.020613,0.996772;		// Quaternion x,y,z,w
-}
-
-Bone9{下半身
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone10{腰飾り
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000699,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone11{左髪1
-  -0.016858,-0.023582,-0.015618;				// trans x,y,z
-  -0.045981,-0.057222,-0.034148,0.996717;		// Quaternion x,y,z,w
-}
-
-Bone12{左髪2
-  0.046291,0.009794,0.023002;				// trans x,y,z
-  -0.071028,-0.017293,-0.016160,0.997193;		// Quaternion x,y,z,w
-}
-
-Bone13{左髪3
-  0.009778,0.008064,0.001697;				// trans x,y,z
-  0.049948,0.044374,-0.045838,0.996712;		// Quaternion x,y,z,w
-}
-
-Bone14{左髪4
-  -0.004633,-0.026133,-0.012235;				// trans x,y,z
-  0.091599,0.019753,-0.048591,0.994413;		// Quaternion x,y,z,w
-}
-
-Bone15{左髪5
-  0.000916,-0.004869,-0.000833;				// trans x,y,z
-  -0.004329,-0.002247,0.031460,0.999493;		// Quaternion x,y,z,w
-}
-
-Bone16{左髪6
-  -0.002327,-0.000191,0.000170;				// trans x,y,z
-  -0.043545,-0.002948,0.043707,0.998091;		// Quaternion x,y,z,w
-}
-
-Bone17{左肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.213347,0.000000,0.976976;		// Quaternion x,y,z,w
-}
-
-Bone18{左腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.113959,-0.104146,-0.201127,0.967324;		// Quaternion x,y,z,w
-}
-
-Bone19{左腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone20{左ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.545112,0.437070,0.454252,0.552701;		// Quaternion x,y,z,w
-}
-
-Bone21{左手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone22{左手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.407760,0.913089;		// Quaternion x,y,z,w
-}
-
-Bone23{左袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone24{左親指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.027178,-0.203991,-0.100714,0.973399;		// Quaternion x,y,z,w
-}
-
-Bone25{左親指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.048807,-0.117068,0.133707,0.982871;		// Quaternion x,y,z,w
-}
-
-Bone26{左人指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.246207,0.969217;		// Quaternion x,y,z,w
-}
-
-Bone27{左人指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.280488,0.959857;		// Quaternion x,y,z,w
-}
-
-Bone28{左人指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone29{左中指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.295802,0.955249;		// Quaternion x,y,z,w
-}
-
-Bone30{左中指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.209878,0.977727;		// Quaternion x,y,z,w
-}
-
-Bone31{左中指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.351275,0.936273;		// Quaternion x,y,z,w
-}
-
-Bone32{左薬指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.251370,0.967891;		// Quaternion x,y,z,w
-}
-
-Bone33{左薬指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.227217,0.973844;		// Quaternion x,y,z,w
-}
-
-Bone34{左薬指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.309350,0.950948;		// Quaternion x,y,z,w
-}
-
-Bone35{左小指1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.247928,0.968778;		// Quaternion x,y,z,w
-}
-
-Bone36{左小指2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.285601,0.958349;		// Quaternion x,y,z,w
-}
-
-Bone37{左小指3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.287303,0.957840;		// Quaternion x,y,z,w
-}
-
-Bone38{左スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.182578,-0.003028,-0.019625,0.982991;		// Quaternion x,y,z,w
-}
-
-Bone39{左スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.030140,0.000484,-0.040598,0.998721;		// Quaternion x,y,z,w
-}
-
-Bone40{左足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone41{左ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone42{左足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone43{右髪1
-  -0.013454,-0.020987,-0.021410;				// trans x,y,z
-  -0.033071,-0.010069,0.003195,0.999397;		// Quaternion x,y,z,w
-}
-
-Bone44{右髪2
-  -0.015103,-0.000301,0.035070;				// trans x,y,z
-  -0.057242,-0.004219,0.000937,0.998351;		// Quaternion x,y,z,w
-}
-
-Bone45{右髪3
-  -0.010516,0.004194,0.004377;				// trans x,y,z
-  0.043155,-0.045281,-0.036699,0.997367;		// Quaternion x,y,z,w
-}
-
-Bone46{右髪4
-  -0.014239,-0.025257,-0.018237;				// trans x,y,z
-  0.090605,-0.009404,-0.058106,0.994146;		// Quaternion x,y,z,w
-}
-
-Bone47{右髪5
-  -0.001177,-0.005218,-0.000784;				// trans x,y,z
-  -0.021889,0.000540,-0.047073,0.998652;		// Quaternion x,y,z,w
-}
-
-Bone48{右髪6
-  0.002401,-0.000205,0.000214;				// trans x,y,z
-  -0.043768,-0.001954,-0.043843,0.998077;		// Quaternion x,y,z,w
-}
-
-Bone49{右肩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,-0.242556,0.970137;		// Quaternion x,y,z,w
-}
-
-Bone50{右腕
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.192251,0.123107,-0.096405,0.968808;		// Quaternion x,y,z,w
-}
-
-Bone51{右腕捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone52{右ひじ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.510520,-0.737457,-0.226316,0.379877;		// Quaternion x,y,z,w
-}
-
-Bone53{右手捩
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.000000,-0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone54{右手首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.063915,-0.225058,-0.209918,0.949313;		// Quaternion x,y,z,w
-}
-
-Bone55{右袖
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone56{右親指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.071834,0.539167,0.266196,0.795784;		// Quaternion x,y,z,w
-}
-
-Bone57{右親指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.131950,0.316493,-0.361478,0.867037;		// Quaternion x,y,z,w
-}
-
-Bone58{右人指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.160812,-0.140139,0.180158,0.960231;		// Quaternion x,y,z,w
-}
-
-Bone59{右人指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone60{右人指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.049979,0.998750;		// Quaternion x,y,z,w
-}
-
-Bone61{右中指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.050546,0.061899,0.129220,0.988390;		// Quaternion x,y,z,w
-}
-
-Bone62{右中指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,-0.044985,0.998987;		// Quaternion x,y,z,w
-}
-
-Bone63{右中指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.064954,0.997889;		// Quaternion x,y,z,w
-}
-
-Bone64{右薬指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.655617,0.755093;		// Quaternion x,y,z,w
-}
-
-Bone65{右薬指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.601198,0.799100;		// Quaternion x,y,z,w
-}
-
-Bone66{右薬指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.773915,0.633289;		// Quaternion x,y,z,w
-}
-
-Bone67{右小指1
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.648033,0.761611;		// Quaternion x,y,z,w
-}
-
-Bone68{右小指2
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.727725,0.685868;		// Quaternion x,y,z,w
-}
-
-Bone69{右小指3
-  -0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,-0.000000,0.731145,0.682221;		// Quaternion x,y,z,w
-}
-
-Bone70{右スカート前
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.031039,0.000291,0.001310,0.999517;		// Quaternion x,y,z,w
-}
-
-Bone71{右スカート後
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.030714,-0.000948,0.034224,0.998942;		// Quaternion x,y,z,w
-}
-
-Bone72{右足
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone73{右ひざ
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone74{右足首
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone75{両目
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.000000,-0.029995,-0.000000,0.999550;		// Quaternion x,y,z,w
-}
-
-Bone76{前髪1
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.072773,-0.012557,-0.013504,0.997178;		// Quaternion x,y,z,w
-}
-
-Bone77{前髪2
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  -0.025678,0.001537,-0.056007,0.998099;		// Quaternion x,y,z,w
-}
-
-Bone78{前髪3
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.109518,0.017615,-0.091055,0.989649;		// Quaternion x,y,z,w
-}
-
-Bone79{左目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone80{右目光
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone81{ネクタイ4
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone82{左髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone83{右髪7
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone84{左つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone85{右つま先
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone86{ネクタイIK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone87{左髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone88{右髪IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone89{左足IK
-  1.546425,6.875941,1.425565;				// trans x,y,z
-  -0.678681,-0.358682,0.235634,0.595997;		// Quaternion x,y,z,w
-}
-
-Bone90{右足IK
-  0.065758,0.000016,0.017175;				// trans x,y,z
-  0.009407,-0.270854,-0.268012,0.924509;		// Quaternion x,y,z,w
-}
-
-Bone91{左つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-
-Bone92{右つま先IK
-  0.000000,0.000000,0.000000;				// trans x,y,z
-  0.000000,0.000000,0.000000,1.000000;		// Quaternion x,y,z,w
-}
-

+ 0 - 12
examples/models/mmd/vpds/readme.txt

@@ -1,12 +0,0 @@
-普通の撮影ポーズ
-
-・以下に紹介静画があります。
-  http://seiga.nicovideo.jp/seiga/im5162984
-・ポーズ番号と内容はお手数ですが上記静画でご確認ください。
-・とらはぜ式もぶ(とらはぜ様)用データ(1フレームのvmdファイル)と
-  初音ミクVer2.3(あにまさ様)用データ(vpdファイル)があります。
-・9および10は、両足IK/つま先IKをOFFにしてください。
-・1と2,3と4,5と6,7と8はそれぞれ2人並んだ位置になっています。
-・商用NG。改造・再配布OK。本データの使用に伴う問題は免責でお願いします。
-
-                                                                 KEITEL

BIN
examples/screenshots/webgl_loader_mmd.jpg


BIN
examples/screenshots/webgl_loader_mmd_audio.jpg


BIN
examples/screenshots/webgl_loader_mmd_pose.jpg


+ 0 - 240
examples/webgl_loader_mmd.html

@@ -1,240 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loaders - MMD loader</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<link type="text/css" rel="stylesheet" href="main.css">
-		<style>
-			body {
-				background-color: #fff;
-				color: #444;
-			}
-			a {
-				color: #08f;
-			}
-		</style>
-	</head>
-
-	<body>
-		<div id="info">
-		<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - MMDLoader test<br />
-		<a href="https://github.com/mrdoob/three.js/tree/master/examples/models/mmd#readme" target="_blank" rel="noopener">MMD Assets license</a><br />
-		Copyright
-		<a href="https://sites.google.com/view/evpvp/" target="_blank" rel="noopener">Model Data</a>
-		<a href="http://www.nicovideo.jp/watch/sm13147122" target="_blank" rel="noopener">Dance Data</a>
-		</div>
-
-		<script src="jsm/libs/ammo.wasm.js"></script>
-
-		<script type="importmap">
-			{
-				"imports": {
-					"three": "../build/three.module.js",
-					"three/addons/": "./jsm/"
-				}
-			}
-		</script>
-
-		<script type="module">
-
-			import * as THREE from 'three';
-
-			import Stats from 'three/addons/libs/stats.module.js';
-			import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
-
-			import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
-			import { OutlineEffect } from 'three/addons/effects/OutlineEffect.js';
-			import { MMDLoader } from 'three/addons/loaders/MMDLoader.js';
-			import { MMDAnimationHelper } from 'three/addons/animation/MMDAnimationHelper.js';
-
-			let stats;
-
-			let mesh, camera, scene, renderer, effect;
-			let helper, ikHelper, physicsHelper;
-
-			const clock = new THREE.Clock();
-
-			Ammo().then( function ( AmmoLib ) {
-
-				Ammo = AmmoLib;
-
-				init();
-
-			} );
-
-
-			function init() {
-
-				const container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
-				camera.position.z = 30;
-
-				// scene
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0xffffff );
-
-				const gridHelper = new THREE.PolarGridHelper( 30, 0 );
-				gridHelper.position.y = - 10;
-				scene.add( gridHelper );
-
-				const ambient = new THREE.AmbientLight( 0xaaaaaa, 3 );
-				scene.add( ambient );
-
-				const directionalLight = new THREE.DirectionalLight( 0xffffff, 3 );
-				directionalLight.position.set( - 1, 1, 1 ).normalize();
-				scene.add( directionalLight );
-
-				//
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.setAnimationLoop( animate );
-				container.appendChild( renderer.domElement );
-
-				effect = new OutlineEffect( renderer );
-
-				// STATS
-
-				stats = new Stats();
-				container.appendChild( stats.dom );
-
-				// model
-
-				function onProgress( xhr ) {
-
-					if ( xhr.lengthComputable ) {
-
-						const percentComplete = xhr.loaded / xhr.total * 100;
-						console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
-
-					}
-
-				}
-
-
-				const modelFile = 'models/mmd/miku/miku_v2.pmd';
-				const vmdFiles = [ 'models/mmd/vmds/wavefile_v2.vmd' ];
-
-				helper = new MMDAnimationHelper( {
-					afterglow: 2.0
-				} );
-
-				const loader = new MMDLoader();
-
-				loader.loadWithAnimation( modelFile, vmdFiles, function ( mmd ) {
-
-					mesh = mmd.mesh;
-					mesh.position.y = - 10;
-					scene.add( mesh );
-
-					helper.add( mesh, {
-						animation: mmd.animation,
-						physics: true
-					} );
-
-					ikHelper = helper.objects.get( mesh ).ikSolver.createHelper();
-					ikHelper.visible = false;
-					scene.add( ikHelper );
-
-					physicsHelper = helper.objects.get( mesh ).physics.createHelper();
-					physicsHelper.visible = false;
-					scene.add( physicsHelper );
-
-					initGui();
-
-				}, onProgress, null );
-
-				const controls = new OrbitControls( camera, renderer.domElement );
-				controls.minDistance = 10;
-				controls.maxDistance = 100;
-
-				window.addEventListener( 'resize', onWindowResize );
-
-				function initGui() {
-
-					const api = {
-						'animation': true,
-						'ik': true,
-						'outline': true,
-						'physics': true,
-						'show IK bones': false,
-						'show rigid bodies': false
-					};
-
-					const gui = new GUI();
-
-					gui.add( api, 'animation' ).onChange( function () {
-
-						helper.enable( 'animation', api[ 'animation' ] );
-
-					} );
-
-					gui.add( api, 'ik' ).onChange( function () {
-
-						helper.enable( 'ik', api[ 'ik' ] );
-
-					} );
-
-					gui.add( api, 'outline' ).onChange( function () {
-
-						effect.enabled = api[ 'outline' ];
-
-					} );
-
-					gui.add( api, 'physics' ).onChange( function () {
-
-						helper.enable( 'physics', api[ 'physics' ] );
-
-					} );
-
-					gui.add( api, 'show IK bones' ).onChange( function () {
-
-						ikHelper.visible = api[ 'show IK bones' ];
-
-					} );
-
-					gui.add( api, 'show rigid bodies' ).onChange( function () {
-
-						if ( physicsHelper !== undefined ) physicsHelper.visible = api[ 'show rigid bodies' ];
-
-					} );
-
-				}
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				effect.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			//
-
-			function animate() {
-
-				stats.begin();
-				render();
-				stats.end();
-
-			}
-
-			function render() {
-
-				helper.update( clock.getDelta() );
-				effect.render( scene, camera );
-
-			}
-
-		</script>
-
-	</body>
-</html>

+ 0 - 193
examples/webgl_loader_mmd_audio.html

@@ -1,193 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loaders - MMD loader</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<link type="text/css" rel="stylesheet" href="main.css">
-		<style>
-			body {
-				color: #444;
-				background: #fff;
-			}
-			a {
-				color: #08f;
-			}
-		</style>
-	</head>
-
-	<body>
-		<div id="overlay">
-			<button id="startButton">Play</button>
-		</div>
-		<div id="info">
-		<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - MMDLoader test<br />
-		<a href="https://github.com/mrdoob/three.js/tree/master/examples/models/mmd#readme" target="_blank" rel="noopener">MMD Assets license</a><br />
-		Copyright
-		<a href="https://sites.google.com/view/evpvp/" target="_blank" rel="noopener">Model Data</a>
-		<a href="http://www.nicovideo.jp/watch/sm13147122" target="_blank" rel="noopener">Dance Data</a>
-		<a href="http://www.nicovideo.jp/watch/sm11938255" target="_blank" rel="noopener">Audio Data</a><br />
-		Camera is customized from <a href="http://www.nicovideo.jp/watch/sm19168559" target="_blank" rel="noopener">this Data</a>
-		</div>
-
-		<script src="jsm/libs/ammo.wasm.js"></script>
-
-		<script type="importmap">
-			{
-				"imports": {
-					"three": "../build/three.module.js",
-					"three/addons/": "./jsm/"
-				}
-			}
-		</script>
-
-		<script type="module">
-
-			import * as THREE from 'three';
-
-			import { OutlineEffect } from 'three/addons/effects/OutlineEffect.js';
-			import { MMDLoader } from 'three/addons/loaders/MMDLoader.js';
-			import { MMDAnimationHelper } from 'three/addons/animation/MMDAnimationHelper.js';
-
-			let mesh, camera, scene, renderer, effect;
-			let helper;
-
-			let ready = false;
-
-			const clock = new THREE.Clock();
-
-			const startButton = document.getElementById( 'startButton' );
-			startButton.addEventListener( 'click', function () {
-
-				Ammo().then( function () {
-
-					init();
-
-				} );
-
-			} );
-
-			function init() {
-
-				const overlay = document.getElementById( 'overlay' );
-				overlay.remove();
-
-				const container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
-
-				// scene
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0xffffff );
-
-				scene.add( new THREE.PolarGridHelper( 30, 0 ) );
-
-				const listener = new THREE.AudioListener();
-				camera.add( listener );
-				scene.add( camera );
-
-				const ambient = new THREE.AmbientLight( 0xaaaaaa, 3 );
-				scene.add( ambient );
-
-				const directionalLight = new THREE.DirectionalLight( 0xffffff, 3 );
-				directionalLight.position.set( - 1, 1, 1 ).normalize();
-				scene.add( directionalLight );
-
-				//
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.setAnimationLoop( animate );
-				container.appendChild( renderer.domElement );
-
-				effect = new OutlineEffect( renderer );
-
-				// model
-
-				function onProgress( xhr ) {
-
-					if ( xhr.lengthComputable ) {
-
-						const percentComplete = xhr.loaded / xhr.total * 100;
-						console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
-
-					}
-
-				}
-
-				const modelFile = 'models/mmd/miku/miku_v2.pmd';
-				const vmdFiles = [ 'models/mmd/vmds/wavefile_v2.vmd' ];
-				const cameraFiles = [ 'models/mmd/vmds/wavefile_camera.vmd' ];
-				const audioFile = 'models/mmd/audios/wavefile_short.mp3';
-				const audioParams = { delayTime: 160 * 1 / 30 };
-
-				helper = new MMDAnimationHelper();
-
-				const loader = new MMDLoader();
-
-				loader.loadWithAnimation( modelFile, vmdFiles, function ( mmd ) {
-
-					mesh = mmd.mesh;
-
-					helper.add( mesh, {
-						animation: mmd.animation,
-						physics: true
-					} );
-
-					loader.loadAnimation( cameraFiles, camera, function ( cameraAnimation ) {
-
-						helper.add( camera, {
-							animation: cameraAnimation
-						} );
-
-						new THREE.AudioLoader().load( audioFile, function ( buffer ) {
-
-							const audio = new THREE.Audio( listener ).setBuffer( buffer );
-
-							helper.add( audio, audioParams );
-							scene.add( mesh );
-
-							ready = true;
-
-						}, onProgress, null );
-
-					}, onProgress, null );
-
-				}, onProgress, null );
-
-				//
-
-				window.addEventListener( 'resize', onWindowResize );
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				effect.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			//
-
-			function animate() {
-
-				if ( ready ) {
-
-					helper.update( clock.getDelta() );
-
-				}
-
-				effect.render( scene, camera );
-
-			}
-
-		</script>
-
-	</body>
-</html>

+ 0 - 298
examples/webgl_loader_mmd_pose.html

@@ -1,298 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loaders - MMD loader</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<link type="text/css" rel="stylesheet" href="main.css">
-		<style>
-			body {
-				background-color: #fff;
-				color: #444;
-			}
-			a {
-				color: #08f;
-			}
-		</style>
-	</head>
-
-	<body>
-		<div id="info">
-		<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - MMDLoader test<br />
-		<a href="https://github.com/mrdoob/three.js/tree/master/examples/models/mmd#readme" target="_blank" rel="noopener">MMD Assets license</a><br />
-		Copyright
-		<a href="https://sites.google.com/view/evpvp/" target="_blank" rel="noopener">Model Data</a>
-		<a href="http://seiga.nicovideo.jp/seiga/im5162984" target="_blank" rel="noopener">Pose Data</a>
-		</div>
-
-		<script src="jsm/libs/ammo.wasm.js"></script>
-
-		<script type="importmap">
-			{
-				"imports": {
-					"three": "../build/three.module.js",
-					"three/addons/": "./jsm/"
-				}
-			}
-		</script>
-
-		<script type="module">
-
-			import * as THREE from 'three';
-
-			import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
-
-			import { OutlineEffect } from 'three/addons/effects/OutlineEffect.js';
-			import { MMDLoader } from 'three/addons/loaders/MMDLoader.js';
-			import { MMDAnimationHelper } from 'three/addons/animation/MMDAnimationHelper.js';
-
-			let camera, scene, renderer, effect;
-			let mesh, helper;
-
-			const vpds = [];
-
-			Ammo().then( function ( AmmoLib ) {
-
-				Ammo = AmmoLib;
-
-				init();
-
-			} );
-
-			function init() {
-
-				const container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
-				camera.position.z = 25;
-
-				// scene
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0xffffff );
-
-				const ambient = new THREE.AmbientLight( 0xaaaaaa, 3 );
-				scene.add( ambient );
-
-				const directionalLight = new THREE.DirectionalLight( 0xffffff, 3 );
-				directionalLight.position.set( - 1, 1, 1 ).normalize();
-				scene.add( directionalLight );
-
-				//
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.setAnimationLoop( animate );
-				container.appendChild( renderer.domElement );
-
-				effect = new OutlineEffect( renderer );
-
-				// model
-
-				function onProgress( xhr ) {
-
-					if ( xhr.lengthComputable ) {
-
-						const percentComplete = xhr.loaded / xhr.total * 100;
-						console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
-
-					}
-
-				}
-
-				const modelFile = 'models/mmd/miku/miku_v2.pmd';
-				const vpdFiles = [
-					'models/mmd/vpds/01.vpd',
-					'models/mmd/vpds/02.vpd',
-					'models/mmd/vpds/03.vpd',
-					'models/mmd/vpds/04.vpd',
-					'models/mmd/vpds/05.vpd',
-					'models/mmd/vpds/06.vpd',
-					'models/mmd/vpds/07.vpd',
-					'models/mmd/vpds/08.vpd',
-					//'models/mmd/vpds/09.vpd',
-					//'models/mmd/vpds/10.vpd',
-					'models/mmd/vpds/11.vpd'
-				];
-
-				helper = new MMDAnimationHelper();
-
-				const loader = new MMDLoader();
-
-				loader.load( modelFile, function ( object ) {
-
-					mesh = object;
-					mesh.position.y = - 10;
-
-					scene.add( mesh );
-
-					let vpdIndex = 0;
-
-					function loadVpd() {
-
-						const vpdFile = vpdFiles[ vpdIndex ];
-
-						loader.loadVPD( vpdFile, false, function ( vpd ) {
-
-							vpds.push( vpd );
-
-							vpdIndex ++;
-
-							if ( vpdIndex < vpdFiles.length ) {
-
-								loadVpd();
-
-							} else {
-
-								initGui();
-
-							}
-
-						}, onProgress, null );
-
-					}
-
-					loadVpd();
-
-				}, onProgress, null );
-
-				//
-
-				window.addEventListener( 'resize', onWindowResize );
-
-				function initGui() {
-
-					const gui = new GUI();
-
-					const dictionary = mesh.morphTargetDictionary;
-
-					const controls = {};
-					const keys = [];
-
-					const poses = gui.addFolder( 'Poses' );
-					const morphs = gui.addFolder( 'Morphs' );
-
-					function getBaseName( s ) {
-
-						return s.slice( s.lastIndexOf( '/' ) + 1 );
-
-					}
-
-					function initControls() {
-
-						for ( const key in dictionary ) {
-
-							controls[ key ] = 0.0;
-
-						}
-
-						controls.pose = - 1;
-
-						for ( let i = 0; i < vpdFiles.length; i ++ ) {
-
-							controls[ getBaseName( vpdFiles[ i ] ) ] = false;
-
-						}
-
-					}
-
-					function initKeys() {
-
-						for ( const key in dictionary ) {
-
-							keys.push( key );
-
-						}
-
-					}
-
-					function initPoses() {
-
-						const files = { default: - 1 };
-
-						for ( let i = 0; i < vpdFiles.length; i ++ ) {
-
-							files[ getBaseName( vpdFiles[ i ] ) ] = i;
-
-						}
-
-						poses.add( controls, 'pose', files ).onChange( onChangePose );
-
-					}
-
-					function initMorphs() {
-
-						for ( const key in dictionary ) {
-
-							morphs.add( controls, key, 0.0, 1.0, 0.01 ).onChange( onChangeMorph );
-
-						}
-
-					}
-
-					function onChangeMorph() {
-
-						for ( let i = 0; i < keys.length; i ++ ) {
-
-							const key = keys[ i ];
-							const value = controls[ key ];
-							mesh.morphTargetInfluences[ i ] = value;
-
-						}
-
-					}
-
-					function onChangePose() {
-
-						const index = parseInt( controls.pose );
-
-						if ( index === - 1 ) {
-
-							mesh.pose();
-
-						} else {
-
-							helper.pose( mesh, vpds[ index ] );
-
-						}
-
-					}
-
-					initControls();
-					initKeys();
-					initPoses();
-					initMorphs();
-
-					onChangeMorph();
-					onChangePose();
-
-					poses.open();
-					morphs.open();
-
-				}
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				effect.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			//
-
-			function animate() {
-
-				effect.render( scene, camera );
-
-			}
-
-		</script>
-
-	</body>
-</html>

粤ICP备19079148号