UNPKG

three-stdlib

Version:

stand-alone library of threejs examples

120 lines (107 loc) 3.33 kB
import { Bone, Euler, Matrix4, MeshBasicMaterial, Object3D, Quaternion, SkinnedMesh, Vector3 } from 'three' export interface MMDPhysicsParameter { unitStep?: number | undefined maxStepNum?: number | undefined gravity?: Vector3 | undefined } export class MMDPhysics { constructor(mesh: SkinnedMesh, rigidBodyParams: object[], constraintParams?: object[], params?: MMDPhysicsParameter) manager: ResourceManager mesh: SkinnedMesh unitStep: number maxStepNum: number gravity: Vector3 world: null bodies: RigidBody[] constraints: Constraint[] update(delta: number): this reset(): this warmup(cycles: number): this setGravity(gravity: Vector3): this createHelper(): MMDPhysicsHelper } export class ResourceManager { constructor() threeVector3s: Vector3[] threeMatrix4s: Matrix4[] threeQuaternions: Quaternion[] threeEulers: Euler[] transforms: object[] quaternions: object[] vector3s: object[] allocThreeVector3(): void freeThreeVector3(v: Vector3): void allocThreeMatrix4(): void freeThreeMatrix4(m: Matrix4): void allocThreeQuaternion(): void freeThreeQuaternion(q: Quaternion): void allocThreeEuler(): void freeThreeEuler(e: Euler): void allocTransform(): void freeTransform(t: object): void allocQuaternion(): void freeQuaternion(q: object): void allocVector3(): void freeVector3(v: object): void setIdentity(): void getBasis(t: object): object getBasisAsMatrix3(t: object): object getOrigin(t: object): object setOrigin(t: object, v: object): void copyOrigin(t1: object, t2: object): void setBasis(t: object, q: object): void setBasisFromMatrix3(t: object, m: object): void setOriginFromArray3(t: object, a: number[]): void setOriginFromThreeVector3(t: object, v: Vector3): void setBasisFromArray3(t: object, a: number[]): void setBasisFromThreeQuaternion(t: object, a: Quaternion): void multiplyTransforms(t1: object, t2: object): object inverseTransform(t: object): object multiplyMatrices3(m1: object, m2: object): object addVector3(v1: object, v2: object): object dotVectors3(v1: object, v2: object): number rowOfMatrix3(m: object, i: number): object columnOfMatrix3(m: object, i: number): object negativeVector3(v: object): object multiplyMatrix3ByVector3(m: object, v: object): object transposeMatrix3(m: object): object quaternionToMatrix3(q: object): object matrix3ToQuaternion(m: object): object } export class RigidBody { constructor(mesh: SkinnedMesh, world: object, params: object, manager: ResourceManager) mesh: SkinnedMesh world: object params: object manager: ResourceManager body: object bone: Bone boneOffsetForm: object boneOffsetFormInverse: object reset(): this updateFromBone(): this updateBone(): this } export class Constraint { constructor( mesh: SkinnedMesh, world: object, bodyA: RigidBody, bodyB: RigidBody, params: object, manager: ResourceManager, ) mesh: SkinnedMesh world: object bodyA: RigidBody bodyB: RigidBody params: object manager: ResourceManager } export class MMDPhysicsHelper extends Object3D { mesh: SkinnedMesh physics: MMDPhysics materials: [MeshBasicMaterial, MeshBasicMaterial, MeshBasicMaterial] constructor(mesh: SkinnedMesh, physics: MMDPhysics) dispose(): void }