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 THREE.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 );

		}
@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 )