reze-engine 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -45
- package/dist/animation.d.ts +0 -27
- package/dist/animation.d.ts.map +1 -1
- package/dist/animation.js +3 -17
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +2 -2
- package/dist/engine.d.ts +49 -52
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +613 -614
- package/dist/ik-solver.d.ts +0 -11
- package/dist/ik-solver.d.ts.map +1 -1
- package/dist/ik-solver.js +1 -11
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/math.d.ts +1 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +24 -0
- package/dist/model.d.ts +10 -50
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +60 -93
- package/dist/pmx-loader.js +1 -1
- package/package.json +1 -1
- package/src/animation.ts +3 -37
- package/src/camera.ts +2 -2
- package/src/engine.ts +646 -750
- package/src/ik-solver.ts +1 -11
- package/src/index.ts +3 -4
- package/src/math.ts +27 -0
- package/src/model.ts +68 -99
- package/src/pmx-loader.ts +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,8 @@ A lightweight engine built with WebGPU and TypeScript for real-time 3D anime cha
|
|
|
20
20
|
## Usage
|
|
21
21
|
|
|
22
22
|
```javascript
|
|
23
|
+
import { Engine, Model } from "reze-engine"
|
|
24
|
+
|
|
23
25
|
export default function Scene() {
|
|
24
26
|
const canvasRef = useRef < HTMLCanvasElement > null
|
|
25
27
|
const engineRef = useRef < Engine > null
|
|
@@ -30,7 +32,7 @@ export default function Scene() {
|
|
|
30
32
|
const engine = new Engine(canvasRef.current, {})
|
|
31
33
|
engineRef.current = engine
|
|
32
34
|
await engine.init()
|
|
33
|
-
await
|
|
35
|
+
await Model.loadPmx("/models/reze/reze.pmx")
|
|
34
36
|
|
|
35
37
|
engine.runRenderLoop(() => {})
|
|
36
38
|
} catch (error) {
|
|
@@ -72,60 +74,37 @@ const DEFAULT_ENGINE_OPTIONS: RequiredEngineOptions = {
|
|
|
72
74
|
|
|
73
75
|
## API
|
|
74
76
|
|
|
75
|
-
|
|
77
|
+
Use **`Model.loadPmx(path)`** after **`await engine.init()`**—the model is registered on the engine automatically.
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
### Animation (model instance)
|
|
78
80
|
|
|
79
81
|
```javascript
|
|
80
|
-
await
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
const model = await Model.loadPmx("/models/char.pmx")
|
|
83
|
+
await model.loadVmd("/animations/dance.vmd")
|
|
84
|
+
model.playAnimation()
|
|
85
|
+
model.pauseAnimation()
|
|
86
|
+
model.stopAnimation()
|
|
87
|
+
model.seekAnimation(2.5)
|
|
88
|
+
|
|
89
|
+
const { current, duration, percentage } = model.getAnimationProgress()
|
|
87
90
|
```
|
|
88
91
|
|
|
89
|
-
###
|
|
90
|
-
|
|
91
|
-
Load animation from structured keyframe data directly — for animation editors or programmatic animation creation. The engine handles interpolation and playback natively.
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
import type { AnimationData } from "reze-engine"
|
|
95
|
-
|
|
96
|
-
const data: AnimationData = {
|
|
97
|
-
boneTracks: {
|
|
98
|
-
"首": [
|
|
99
|
-
{ frame: 0, rotation: new Quat(0, 0, 0, 1), translation: new Vec3(0, 0, 0), interpolation: new Uint8Array(64) },
|
|
100
|
-
{ frame: 30, rotation: neckQuat, translation: new Vec3(0, 0, 0), interpolation: new Uint8Array(64) },
|
|
101
|
-
],
|
|
102
|
-
},
|
|
103
|
-
morphTracks: {
|
|
104
|
-
"まばたき": [
|
|
105
|
-
{ frame: 0, weight: 0 },
|
|
106
|
-
{ frame: 15, weight: 1 },
|
|
107
|
-
{ frame: 30, weight: 0 },
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
engine.loadAnimationData(data)
|
|
113
|
-
engine.playAnimation()
|
|
92
|
+
### Bones / morphs (model)
|
|
114
93
|
|
|
115
|
-
|
|
94
|
+
```javascript
|
|
95
|
+
model.rotateBones({ 首: neckQuat, 頭: headQuat }, 300)
|
|
96
|
+
model.moveBones({ センター: centerVec }, 300)
|
|
97
|
+
model.setMorphWeight("まばたき", 1.0, 300)
|
|
98
|
+
model.resetAllBones()
|
|
99
|
+
model.resetAllMorphs()
|
|
116
100
|
```
|
|
117
101
|
|
|
118
|
-
###
|
|
119
|
-
|
|
120
|
-
Rotate and move bones with optional tween duration. Translations are VMD-style (relative to bind pose world position).
|
|
102
|
+
### Engine
|
|
121
103
|
|
|
122
104
|
```javascript
|
|
123
|
-
engine.
|
|
124
|
-
engine.
|
|
125
|
-
engine.
|
|
126
|
-
|
|
127
|
-
engine.resetAllBones()
|
|
128
|
-
engine.resetAllMorphs()
|
|
105
|
+
engine.runRenderLoop(() => {})
|
|
106
|
+
engine.setMaterialVisible("材質1", false)
|
|
107
|
+
engine.addGround({ mode: "shadow", shadowMapSize: 1024 })
|
|
129
108
|
```
|
|
130
109
|
|
|
131
110
|
## Projects Using This Engine
|
package/dist/animation.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Quat, Vec3 } from "./math";
|
|
2
1
|
export interface ControlPoint {
|
|
3
2
|
x: number;
|
|
4
3
|
y: number;
|
|
@@ -9,33 +8,7 @@ export interface BoneInterpolation {
|
|
|
9
8
|
translationY: ControlPoint[];
|
|
10
9
|
translationZ: ControlPoint[];
|
|
11
10
|
}
|
|
12
|
-
export declare const LINEAR_INTERPOLATION: BoneInterpolation;
|
|
13
|
-
export interface BoneKeyframe {
|
|
14
|
-
frame: number;
|
|
15
|
-
rotation: Quat;
|
|
16
|
-
translation: Vec3;
|
|
17
|
-
interpolation: BoneInterpolation;
|
|
18
|
-
}
|
|
19
|
-
export interface MorphKeyframe {
|
|
20
|
-
frame: number;
|
|
21
|
-
weight: number;
|
|
22
|
-
}
|
|
23
|
-
export interface AnimationData {
|
|
24
|
-
boneTracks: Record<string, BoneKeyframe[]>;
|
|
25
|
-
morphTracks: Record<string, MorphKeyframe[]>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Cubic bezier interpolation using binary search.
|
|
29
|
-
* Control points define the curve shape in 0-1 normalized space.
|
|
30
|
-
*/
|
|
31
11
|
export declare function bezierInterpolate(x1: number, x2: number, y1: number, y2: number, t: number): number;
|
|
32
|
-
/**
|
|
33
|
-
* Convert raw VMD interpolation bytes (64-byte Uint8Array) to structured BoneInterpolation.
|
|
34
|
-
*/
|
|
35
12
|
export declare function rawInterpolationToBoneInterpolation(raw: Uint8Array): BoneInterpolation;
|
|
36
|
-
/**
|
|
37
|
-
* Compute bezier-interpolated weight for a pair of control points.
|
|
38
|
-
* Control point values are in 0-127 range.
|
|
39
|
-
*/
|
|
40
13
|
export declare function interpolateControlPoints(cp: ControlPoint[], t: number): number;
|
|
41
14
|
//# sourceMappingURL=animation.d.ts.map
|
package/dist/animation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,YAAY,EAAE,YAAY,EAAE,CAAA;IAC5B,YAAY,EAAE,YAAY,EAAE,CAAA;IAC5B,YAAY,EAAE,YAAY,EAAE,CAAA;CAC7B;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BnG;AAKD,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,UAAU,GAAG,iBAAiB,CAmBtF;AAGD,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
|
package/dist/animation.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
rotation: [{ x: 20, y: 20 }, { x: 107, y: 107 }],
|
|
3
|
-
translationX: [{ x: 20, y: 20 }, { x: 107, y: 107 }],
|
|
4
|
-
translationY: [{ x: 20, y: 20 }, { x: 107, y: 107 }],
|
|
5
|
-
translationZ: [{ x: 20, y: 20 }, { x: 107, y: 107 }],
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Cubic bezier interpolation using binary search.
|
|
9
|
-
* Control points define the curve shape in 0-1 normalized space.
|
|
10
|
-
*/
|
|
1
|
+
// Cubic bezier in normalized 0–1 space (binary search on x)
|
|
11
2
|
export function bezierInterpolate(x1, x2, y1, y2, t) {
|
|
12
3
|
t = Math.max(0, Math.min(1, t));
|
|
13
4
|
let start = 0;
|
|
@@ -30,9 +21,7 @@ export function bezierInterpolate(x1, x2, y1, y2, t) {
|
|
|
30
21
|
return y;
|
|
31
22
|
}
|
|
32
23
|
const INV_127 = 1 / 127;
|
|
33
|
-
|
|
34
|
-
* Convert raw VMD interpolation bytes (64-byte Uint8Array) to structured BoneInterpolation.
|
|
35
|
-
*/
|
|
24
|
+
// VMD 64-byte interpolation blob → BoneInterpolation
|
|
36
25
|
export function rawInterpolationToBoneInterpolation(raw) {
|
|
37
26
|
return {
|
|
38
27
|
rotation: [
|
|
@@ -53,10 +42,7 @@ export function rawInterpolationToBoneInterpolation(raw) {
|
|
|
53
42
|
],
|
|
54
43
|
};
|
|
55
44
|
}
|
|
56
|
-
|
|
57
|
-
* Compute bezier-interpolated weight for a pair of control points.
|
|
58
|
-
* Control point values are in 0-127 range.
|
|
59
|
-
*/
|
|
45
|
+
// Control points are 0–127 VMD bytes
|
|
60
46
|
export function interpolateControlPoints(cp, t) {
|
|
61
47
|
return bezierInterpolate(cp[0].x * INV_127, cp[1].x * INV_127, cp[0].y * INV_127, cp[1].y * INV_127, t);
|
|
62
48
|
}
|
package/dist/camera.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAInC,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,IAAI,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAI;IAClB,IAAI,EAAE,MAAM,CAAO;IACnB,GAAG,EAAE,MAAM,CAAM;IAGjB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,oBAAoB,CAAY;IAGxC,kBAAkB,EAAE,MAAM,CAAQ;IAClC,cAAc,EAAE,MAAM,CAAS;IAC/B,cAAc,EAAE,MAAM,CAAO;IAC7B,cAAc,EAAE,MAAM,CAAO;IAC7B,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAInC,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,IAAI,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAI;IAClB,IAAI,EAAE,MAAM,CAAO;IACnB,GAAG,EAAE,MAAM,CAAM;IAGjB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,oBAAoB,CAAY;IAGxC,kBAAkB,EAAE,MAAM,CAAQ;IAClC,cAAc,EAAE,MAAM,CAAS;IAC/B,cAAc,EAAE,MAAM,CAAO;IAC7B,cAAc,EAAE,MAAM,CAAO;IAC7B,IAAI,EAAE,MAAM,CAAO;IACnB,IAAI,EAAE,MAAM,CAAM;IAClB,cAAc,EAAE,MAAM,CAAQ;IAC9B,cAAc,EAAE,MAAM,CAAkB;gBAE5B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAE,MAAoB;IAkBhG,WAAW,IAAI,IAAI;IAQnB,aAAa,IAAI,IAAI;IAQrB,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,SAAS;IAiBjB,mBAAmB,IAAI,IAAI;IAI3B,aAAa,CAAC,MAAM,EAAE,iBAAiB;IAiBvC,aAAa;IAkBb,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,WAAW;IAiFnB,OAAO,CAAC,UAAU;CA+BnB"}
|
package/dist/camera.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Mat4, Vec3 } from "./math";
|
|
2
|
-
const FAR =
|
|
2
|
+
const FAR = 2000;
|
|
3
3
|
export class Camera {
|
|
4
4
|
constructor(alpha, beta, radius, target, fov = Math.PI / 4) {
|
|
5
5
|
this.aspect = 1;
|
|
@@ -21,7 +21,7 @@ export class Camera {
|
|
|
21
21
|
this.panSensitivity = 0.0002; // Sensitivity for right-click panning
|
|
22
22
|
this.wheelPrecision = 0.01;
|
|
23
23
|
this.pinchPrecision = 0.05;
|
|
24
|
-
this.minZ = 0.
|
|
24
|
+
this.minZ = 0.05;
|
|
25
25
|
this.maxZ = FAR;
|
|
26
26
|
this.lowerBetaLimit = 0.001;
|
|
27
27
|
this.upperBetaLimit = Math.PI - 0.001;
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
export type RaycastCallback = (material: string | null, screenX: number, screenY: number) => void;
|
|
1
|
+
import { Vec3 } from "./math";
|
|
2
|
+
import { Model } from "./model";
|
|
3
|
+
export type RaycastCallback = (modelName: string, material: string | null, screenX: number, screenY: number) => void;
|
|
4
4
|
export type EngineOptions = {
|
|
5
5
|
ambientColor?: Vec3;
|
|
6
6
|
directionalLightIntensity?: number;
|
|
@@ -10,8 +10,7 @@ export type EngineOptions = {
|
|
|
10
10
|
cameraTarget?: Vec3;
|
|
11
11
|
cameraFov?: number;
|
|
12
12
|
onRaycast?: RaycastCallback;
|
|
13
|
-
|
|
14
|
-
disablePhysics?: boolean;
|
|
13
|
+
multisampleCount?: 1 | 4;
|
|
15
14
|
};
|
|
16
15
|
export type RequiredEngineOptions = Required<Omit<EngineOptions, "onRaycast">> & Pick<EngineOptions, "onRaycast">;
|
|
17
16
|
export declare const DEFAULT_ENGINE_OPTIONS: RequiredEngineOptions;
|
|
@@ -20,6 +19,8 @@ export interface EngineStats {
|
|
|
20
19
|
frameTime: number;
|
|
21
20
|
}
|
|
22
21
|
export declare class Engine {
|
|
22
|
+
private static instance;
|
|
23
|
+
static getInstance(): Engine;
|
|
23
24
|
private canvas;
|
|
24
25
|
private device;
|
|
25
26
|
private context;
|
|
@@ -33,8 +34,6 @@ export declare class Engine {
|
|
|
33
34
|
private lightUniformBuffer;
|
|
34
35
|
private lightData;
|
|
35
36
|
private lightCount;
|
|
36
|
-
private vertexBuffer;
|
|
37
|
-
private indexBuffer?;
|
|
38
37
|
private resizeObserver;
|
|
39
38
|
private depthTexture;
|
|
40
39
|
private modelPipeline;
|
|
@@ -49,12 +48,8 @@ export declare class Engine {
|
|
|
49
48
|
private hairOutlinePipeline;
|
|
50
49
|
private mainBindGroupLayout;
|
|
51
50
|
private outlineBindGroupLayout;
|
|
52
|
-
private jointsBuffer;
|
|
53
|
-
private weightsBuffer;
|
|
54
|
-
private skinMatrixBuffer?;
|
|
55
|
-
private inverseBindMatrixBuffer?;
|
|
56
51
|
private multisampleTexture;
|
|
57
|
-
private
|
|
52
|
+
private sampleCount;
|
|
58
53
|
private renderPassDescriptor;
|
|
59
54
|
private readonly STENCIL_EYE_VALUE;
|
|
60
55
|
private ambientColor;
|
|
@@ -69,21 +64,29 @@ export declare class Engine {
|
|
|
69
64
|
private groundReflectionBindGroup?;
|
|
70
65
|
private groundMaterialUniformBuffer?;
|
|
71
66
|
private groundHasReflections;
|
|
67
|
+
private groundMode;
|
|
68
|
+
private shadowMapTexture?;
|
|
69
|
+
private shadowMapDepthView?;
|
|
70
|
+
private shadowDepthPipeline;
|
|
71
|
+
private shadowLightVPBuffer;
|
|
72
|
+
private shadowLightVPMatrix;
|
|
73
|
+
private groundShadowPipeline;
|
|
74
|
+
private groundShadowBindGroupLayout;
|
|
75
|
+
private groundShadowBindGroup?;
|
|
76
|
+
private shadowComparisonSampler;
|
|
77
|
+
private groundShadowMaterialBuffer?;
|
|
78
|
+
private groundDrawCall;
|
|
79
|
+
private shadowVPLightX;
|
|
80
|
+
private shadowVPLightY;
|
|
81
|
+
private shadowVPLightZ;
|
|
72
82
|
private onRaycast?;
|
|
73
|
-
private cachedSkinnedVertices?;
|
|
74
|
-
private cachedSkinMatricesVersion;
|
|
75
|
-
private skinMatricesVersion;
|
|
76
83
|
private lastTouchTime;
|
|
77
84
|
private readonly DOUBLE_TAP_DELAY;
|
|
78
|
-
private
|
|
79
|
-
private _disablePhysics;
|
|
80
|
-
private currentModel;
|
|
81
|
-
private modelDir;
|
|
85
|
+
private modelInstances;
|
|
82
86
|
private materialSampler;
|
|
83
87
|
private textureCache;
|
|
84
|
-
|
|
85
|
-
private
|
|
86
|
-
private hiddenMaterials;
|
|
88
|
+
/** Reusable buffer for raycast skinning to avoid per-instance allocations (Three.js/Babylon.js style). */
|
|
89
|
+
private raycastVertexBuffer;
|
|
87
90
|
private lastFpsUpdate;
|
|
88
91
|
private framesSinceLastUpdate;
|
|
89
92
|
private lastFrameTime;
|
|
@@ -111,46 +114,38 @@ export declare class Engine {
|
|
|
111
114
|
reflectionTextureSize?: number;
|
|
112
115
|
fadeStart?: number;
|
|
113
116
|
fadeEnd?: number;
|
|
117
|
+
mode?: "reflection" | "shadow";
|
|
118
|
+
shadowMapSize?: number;
|
|
119
|
+
shadowStrength?: number;
|
|
114
120
|
}): void;
|
|
115
121
|
private updateLightBuffer;
|
|
116
|
-
loadAnimation(url: string): Promise<void>;
|
|
117
|
-
loadAnimationData(data: AnimationData): void;
|
|
118
|
-
getAnimationData(): AnimationData | null;
|
|
119
|
-
playAnimation(): void;
|
|
120
|
-
stopAnimation(): void;
|
|
121
|
-
pauseAnimation(): void;
|
|
122
|
-
seekAnimation(time: number): void;
|
|
123
|
-
getAnimationProgress(): {
|
|
124
|
-
current: number;
|
|
125
|
-
duration: number;
|
|
126
|
-
percentage: number;
|
|
127
|
-
};
|
|
128
122
|
getStats(): EngineStats;
|
|
129
123
|
runRenderLoop(callback?: () => void): void;
|
|
130
124
|
stopRenderLoop(): void;
|
|
131
125
|
dispose(): void;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
setMaterialVisible(
|
|
139
|
-
toggleMaterialVisible(
|
|
140
|
-
isMaterialVisible(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
set disablePhysics(value: boolean);
|
|
126
|
+
addModel(model: Model, pmxPath: string, name?: string): Promise<string>;
|
|
127
|
+
registerModel(model: Model, pmxPath: string): Promise<string>;
|
|
128
|
+
removeModel(name: string): void;
|
|
129
|
+
getModelNames(): string[];
|
|
130
|
+
getModel(name: string): Model | null;
|
|
131
|
+
markVertexBufferDirty(modelNameOrModel?: string | Model): void;
|
|
132
|
+
setMaterialVisible(modelName: string, materialName: string, visible: boolean): void;
|
|
133
|
+
toggleMaterialVisible(modelName: string, materialName: string): void;
|
|
134
|
+
isMaterialVisible(modelName: string, materialName: string): boolean;
|
|
135
|
+
setModelIKEnabled(modelName: string, enabled: boolean): void;
|
|
136
|
+
setModelPhysicsEnabled(modelName: string, enabled: boolean): void;
|
|
137
|
+
resetPhysics(): void;
|
|
138
|
+
private instances;
|
|
139
|
+
private forEachInstance;
|
|
140
|
+
private updateInstances;
|
|
148
141
|
private updateVertexBuffer;
|
|
149
|
-
private
|
|
142
|
+
private setupModelInstance;
|
|
150
143
|
private createGroundGeometry;
|
|
151
144
|
private createGroundMaterialBuffer;
|
|
152
145
|
private createReflectionTexture;
|
|
153
|
-
private
|
|
146
|
+
private createShadowGroundResources;
|
|
147
|
+
private updateShadowLightVP;
|
|
148
|
+
private setupMaterialsForInstance;
|
|
154
149
|
private createMaterialUniformBuffer;
|
|
155
150
|
private createUniformBuffer;
|
|
156
151
|
private shouldRenderDrawCall;
|
|
@@ -163,6 +158,8 @@ export declare class Engine {
|
|
|
163
158
|
private handleCanvasTouch;
|
|
164
159
|
private performRaycast;
|
|
165
160
|
render(): void;
|
|
161
|
+
private drawInstanceShadow;
|
|
162
|
+
private renderOneModel;
|
|
166
163
|
private updateCameraUniforms;
|
|
167
164
|
private updateRenderTarget;
|
|
168
165
|
private updateSkinMatrices;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAG/B,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAEpH,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;AAEjH,eAAO,MAAM,sBAAsB,EAAE,qBAUpC,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB;AAuCD,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;WAE/B,WAAW,IAAI,MAAM;IAOnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,kBAAkB,CAAmB;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,mBAAmB,CAAY;IACvC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,uBAAuB,CAAoB;IACnD,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,oBAAoB,CAA0B;IAEtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAI;IAGtC,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,oBAAoB,CAAS;IAErC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,kBAAkB,CAAC,CAAW;IACtC,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAO,CAAC,uBAAuB,CAAC,CAAY;IAC5C,OAAO,CAAC,8BAA8B,CAAC,CAAY;IACnD,OAAO,CAAC,4BAA4B,CAAC,CAAY;IACjD,OAAO,CAAC,yBAAyB,CAAC,CAAc;IAChD,OAAO,CAAC,2BAA2B,CAAC,CAAW;IAC/C,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,gBAAgB,CAAC,CAAY;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAgB;IAC3C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,mBAAmB,CAAY;IACvC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,2BAA2B,CAAqB;IACxD,OAAO,CAAC,qBAAqB,CAAC,CAAc;IAC5C,OAAO,CAAC,uBAAuB,CAAa;IAC5C,OAAO,CAAC,0BAA0B,CAAC,CAAW;IAC9C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IAEnC,OAAO,CAAC,SAAS,CAAC,CAAiB;IAEnC,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAEvC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAgC;IACpD,0GAA0G;IAC1G,OAAO,CAAC,mBAAmB,CAA4B;IAEvD,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,KAAK,CAGZ;IACD,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,aAAa;IAiBjD,IAAI;IA6BjB,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,eAAe;IAyrBvB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;IAkEpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;IAShB,WAAW;IAUlB,OAAO,CAAC,QAAQ;IAmBT,SAAS,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,IAAI,CAAA;QACnB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,qBAAqB,CAAC,EAAE,MAAM,CAAA;QAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAA;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,GAAG,IAAI;IAgCR,OAAO,CAAC,iBAAiB;IAIlB,QAAQ,IAAI,WAAW;IAIvB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI;IAgBnC,cAAc;IAQd,OAAO;IAkBD,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcvE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa,IAAI,MAAM,EAAE;IAIzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAIpC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAOnF,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAOpE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAKnE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAI5D,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjE,YAAY,IAAI,IAAI;IAQ3B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,kBAAkB;YAOZ,kBAAkB;IAuFhC,OAAO,CAAC,oBAAoB;IAwE5B,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,2BAA2B;IAuCnC,OAAO,CAAC,mBAAmB;YAuBb,yBAAyB;IA6HvC,OAAO,CAAC,2BAA2B;IAmCnC,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;YAId,qBAAqB;IAmCnC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IAoC/B,OAAO,CAAC,UAAU;IAuDlB,OAAO,CAAC,uBAAuB,CAI9B;IAED,OAAO,CAAC,iBAAiB,CA0BxB;IAED,OAAO,CAAC,cAAc;IAgHf,MAAM;IA0Cb,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,kCAAkC;CAY3C"}
|