reze-engine 0.8.3 → 0.8.4
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 +3 -3
- package/dist/engine.d.ts +22 -25
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +109 -325
- package/dist/model.d.ts +1 -10
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +3 -28
- package/package.json +1 -1
- package/src/engine.ts +129 -348
- package/src/model.ts +3 -35
package/README.md
CHANGED
|
@@ -16,16 +16,16 @@ import { Engine, Model } from "reze-engine"
|
|
|
16
16
|
|
|
17
17
|
const engine = new Engine(canvas, {})
|
|
18
18
|
await engine.init()
|
|
19
|
-
const model = await
|
|
19
|
+
const model = await engine.loadModel("/models/reze/reze.pmx")
|
|
20
20
|
await model.loadAnimation("default", "/animations/dance.vmd")
|
|
21
21
|
model.show("default")
|
|
22
|
-
model.
|
|
22
|
+
model.play()
|
|
23
23
|
engine.runRenderLoop(() => {})
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## API (summary)
|
|
27
27
|
|
|
28
|
-
- **Multi-model:** `engine.addModel(model, pmxPath, name?)`, `getModel(name)`, `getModelNames()`, `removeModel(name)`, `setMaterialVisible(modelName, materialName, visible)`, `
|
|
28
|
+
- **Multi-model:** `engine.loadModel(path)` / `engine.loadModel(name, path)`, `engine.addModel(model, pmxPath, name?)`, `getModel(name)`, `getModelNames()`, `removeModel(name)`, `setMaterialVisible(modelName, materialName, visible)`, `setIKEnabled(enabled)`, `setPhysicsEnabled(enabled)`, `getIKEnabled()`, `getPhysicsEnabled()`, `resetPhysics()`, `markVertexBufferDirty(modelName?)`
|
|
29
29
|
- **Animation:** `model.loadAnimation(name, vmdUrl)`; `model.show(name)`; `model.play()` / `model.play(name)`; `model.pause()`; `model.stop()`; `model.seek(t)`; `model.getAnimationProgress()`. Animations are non-interruptible (next is queued).
|
|
30
30
|
- **Bones / morphs:** `model.rotateBones()`, `model.moveBones()`, `model.setMorphWeight()`, `model.resetAllBones()`, `model.resetAllMorphs()`
|
|
31
31
|
- **Engine:** `runRenderLoop()`, `addGround({ mode: "reflection" | "shadow", ... })`, `onRaycast: (modelName, material, screenX, screenY) => {}`
|
package/dist/engine.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ export type EngineOptions = {
|
|
|
10
10
|
cameraTarget?: Vec3;
|
|
11
11
|
cameraFov?: number;
|
|
12
12
|
onRaycast?: RaycastCallback;
|
|
13
|
-
multisampleCount?: 1 | 4;
|
|
14
13
|
};
|
|
15
14
|
export type RequiredEngineOptions = Required<Omit<EngineOptions, "onRaycast">> & Pick<EngineOptions, "onRaycast">;
|
|
16
15
|
export declare const DEFAULT_ENGINE_OPTIONS: RequiredEngineOptions;
|
|
@@ -41,15 +40,14 @@ export declare class Engine {
|
|
|
41
40
|
private hairPipelineOverEyes;
|
|
42
41
|
private hairPipelineOverNonEyes;
|
|
43
42
|
private hairDepthPipeline;
|
|
44
|
-
private
|
|
45
|
-
private
|
|
46
|
-
private reflectionPipeline;
|
|
43
|
+
private groundShadowPipeline;
|
|
44
|
+
private groundShadowBindGroupLayout;
|
|
47
45
|
private outlinePipeline;
|
|
48
46
|
private hairOutlinePipeline;
|
|
49
47
|
private mainBindGroupLayout;
|
|
50
48
|
private outlineBindGroupLayout;
|
|
51
49
|
private multisampleTexture;
|
|
52
|
-
private
|
|
50
|
+
private static readonly MULTISAMPLE_COUNT;
|
|
53
51
|
private renderPassDescriptor;
|
|
54
52
|
private readonly STENCIL_EYE_VALUE;
|
|
55
53
|
private ambientColor;
|
|
@@ -58,20 +56,12 @@ export declare class Engine {
|
|
|
58
56
|
private rimLightIntensity;
|
|
59
57
|
private groundVertexBuffer?;
|
|
60
58
|
private groundIndexBuffer?;
|
|
61
|
-
private
|
|
62
|
-
private groundReflectionResolveTexture?;
|
|
63
|
-
private groundReflectionDepthTexture?;
|
|
64
|
-
private groundReflectionBindGroup?;
|
|
65
|
-
private groundMaterialUniformBuffer?;
|
|
66
|
-
private groundHasReflections;
|
|
67
|
-
private groundMode;
|
|
59
|
+
private hasGround;
|
|
68
60
|
private shadowMapTexture?;
|
|
69
61
|
private shadowMapDepthView?;
|
|
70
62
|
private shadowDepthPipeline;
|
|
71
63
|
private shadowLightVPBuffer;
|
|
72
64
|
private shadowLightVPMatrix;
|
|
73
|
-
private groundShadowPipeline;
|
|
74
|
-
private groundShadowBindGroupLayout;
|
|
75
65
|
private groundShadowBindGroup?;
|
|
76
66
|
private shadowComparisonSampler;
|
|
77
67
|
private groundShadowMaterialBuffer?;
|
|
@@ -85,7 +75,12 @@ export declare class Engine {
|
|
|
85
75
|
private modelInstances;
|
|
86
76
|
private materialSampler;
|
|
87
77
|
private textureCache;
|
|
88
|
-
private
|
|
78
|
+
private _nextDefaultModelId;
|
|
79
|
+
private ikEnabled;
|
|
80
|
+
private physicsEnabled;
|
|
81
|
+
private cameraTargetModel;
|
|
82
|
+
private cameraTargetBoneName;
|
|
83
|
+
private cameraTargetOffset;
|
|
89
84
|
private lastFpsUpdate;
|
|
90
85
|
private framesSinceLastUpdate;
|
|
91
86
|
private lastFrameTime;
|
|
@@ -101,6 +96,10 @@ export declare class Engine {
|
|
|
101
96
|
private setupResize;
|
|
102
97
|
private handleResize;
|
|
103
98
|
private setupCamera;
|
|
99
|
+
/** Set camera look-at target to a point. Clears any model binding. */
|
|
100
|
+
setCameraTarget(v: Vec3): void;
|
|
101
|
+
/** Bind camera target to a model's bone. Engine updates target each frame. Bone not found → (0,0,0) + offset. Pass null to unbind. */
|
|
102
|
+
setCameraTarget(model: Model | null, boneName: string, offset?: Vec3): void;
|
|
104
103
|
private setupLighting;
|
|
105
104
|
private setAmbientColor;
|
|
106
105
|
clearLights(): void;
|
|
@@ -109,11 +108,8 @@ export declare class Engine {
|
|
|
109
108
|
width?: number;
|
|
110
109
|
height?: number;
|
|
111
110
|
diffuseColor?: Vec3;
|
|
112
|
-
reflectionLevel?: number;
|
|
113
|
-
reflectionTextureSize?: number;
|
|
114
111
|
fadeStart?: number;
|
|
115
112
|
fadeEnd?: number;
|
|
116
|
-
mode?: "reflection" | "shadow";
|
|
117
113
|
shadowMapSize?: number;
|
|
118
114
|
shadowStrength?: number;
|
|
119
115
|
}): void;
|
|
@@ -122,6 +118,8 @@ export declare class Engine {
|
|
|
122
118
|
runRenderLoop(callback?: () => void): void;
|
|
123
119
|
stopRenderLoop(): void;
|
|
124
120
|
dispose(): void;
|
|
121
|
+
loadModel(path: string): Promise<Model>;
|
|
122
|
+
loadModel(name: string, path: string): Promise<Model>;
|
|
125
123
|
addModel(model: Model, pmxPath: string, name?: string): Promise<string>;
|
|
126
124
|
registerModel(model: Model, pmxPath: string): Promise<string>;
|
|
127
125
|
removeModel(name: string): void;
|
|
@@ -131,8 +129,10 @@ export declare class Engine {
|
|
|
131
129
|
setMaterialVisible(modelName: string, materialName: string, visible: boolean): void;
|
|
132
130
|
toggleMaterialVisible(modelName: string, materialName: string): void;
|
|
133
131
|
isMaterialVisible(modelName: string, materialName: string): boolean;
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
setIKEnabled(enabled: boolean): void;
|
|
133
|
+
getIKEnabled(): boolean;
|
|
134
|
+
setPhysicsEnabled(enabled: boolean): void;
|
|
135
|
+
getPhysicsEnabled(): boolean;
|
|
136
136
|
resetPhysics(): void;
|
|
137
137
|
private instances;
|
|
138
138
|
private forEachInstance;
|
|
@@ -140,8 +140,6 @@ export declare class Engine {
|
|
|
140
140
|
private updateVertexBuffer;
|
|
141
141
|
private setupModelInstance;
|
|
142
142
|
private createGroundGeometry;
|
|
143
|
-
private createGroundMaterialBuffer;
|
|
144
|
-
private createReflectionTexture;
|
|
145
143
|
private createShadowGroundResources;
|
|
146
144
|
private updateShadowLightVP;
|
|
147
145
|
private setupMaterialsForInstance;
|
|
@@ -151,20 +149,19 @@ export declare class Engine {
|
|
|
151
149
|
private createTextureFromPath;
|
|
152
150
|
private renderEyes;
|
|
153
151
|
private renderGround;
|
|
154
|
-
private renderReflectionTexture;
|
|
155
152
|
private renderHair;
|
|
156
153
|
private handleCanvasDoubleClick;
|
|
157
154
|
private handleCanvasTouch;
|
|
158
155
|
private performRaycast;
|
|
159
156
|
render(): void;
|
|
160
157
|
private drawInstanceShadow;
|
|
158
|
+
private drawOpaque;
|
|
159
|
+
private drawTransparent;
|
|
161
160
|
private renderOneModel;
|
|
162
161
|
private updateCameraUniforms;
|
|
163
162
|
private updateRenderTarget;
|
|
164
163
|
private updateSkinMatrices;
|
|
165
164
|
private drawOutlines;
|
|
166
165
|
private updateStats;
|
|
167
|
-
private createMirrorMatrix;
|
|
168
|
-
private writeMirrorTransformedSkinMatrices;
|
|
169
166
|
}
|
|
170
167
|
//# sourceMappingURL=engine.d.ts.map
|
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,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|