@needle-tools/engine 3.44.1 → 3.44.3
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/CHANGELOG.md +4 -0
- package/components.needle.json +1 -1
- package/dist/needle-engine.js +3752 -3743
- package/dist/needle-engine.light.js +2891 -2882
- package/dist/needle-engine.light.min.js +93 -93
- package/dist/needle-engine.light.umd.cjs +131 -131
- package/dist/needle-engine.min.js +98 -98
- package/dist/needle-engine.umd.cjs +137 -137
- package/lib/engine-components/AnimatorController.js +5 -1
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/DragControls.js +4 -2
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +7 -6
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +2 -0
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +14 -3
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +1 -1
- package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
- package/lib/engine-components/postprocessing/VolumeParameter.js +4 -4
- package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
- package/package.json +1 -1
- package/src/engine-components/AnimatorController.ts +3 -1
- package/src/engine-components/DragControls.ts +4 -2
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +7 -6
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +18 -3
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +1 -1
- package/src/engine-components/postprocessing/VolumeParameter.ts +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumeParameter.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/VolumeParameter.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAqB,YAAY,EAAuB,MAAM,sCAAsC,CAAC;AAC5G,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAOxD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEpC,MAAM,OAAO,eAAe;IAEf,iBAAiB,GAAG,IAAI,CAAC;IAElC,YAAY,KAAW;QACnB,IAAI,KAAK,KAAK,SAAS;YACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,cAAc,GAAY,KAAK,CAAC;IACxC,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAEnD,UAAU,CAAC,KAAW;QAClB,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;IACL,CAAC;IAGD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,CAAC,GAAY;QAC1B,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACO,OAAO,GAAY,IAAI,CAAC;IAKhC,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,GAAQ;QACd,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACO,MAAM,CAAM;IACZ,SAAS,CAAO;IAGxB,IAAI,YAAY,CAAC,GAAQ;QACrB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IAC7B,CAAC;IACO,aAAa,GAAQ,SAAS,CAAC;IAGvC,8EAA8E;IAC9E,MAAM;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,2DAA2D;IAC3D,cAAc,CAA4C;IAC1D,6DAA6D;IAC7D,cAAc,CAA0C;IAGhD,YAAY,CAAC,GAAQ,EAAE,WAAoB;QAC/C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAE9C,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,KAAK;YACtD,OAAO;QAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,KAAK,EAAE;YACP,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE;gBACvD,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,QAAQ,IAAI,QAAQ,EAAE;oBACtB,UAAU,GAAG,IAAI,CAAC;iBACrB;;oBACI,UAAU,GAAG,KAAK,CAAC;aAC3B;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACnD,6HAA6H;YAC7H,8EAA8E;YAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;SACxB;aACI;YACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;gBACnC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;SACrB;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC5C;
|
|
1
|
+
{"version":3,"file":"VolumeParameter.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/VolumeParameter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "3.44.
|
|
3
|
+
"version": "3.44.3",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
|
|
5
5
|
"main": "dist/needle-engine.umd.cjs",
|
|
6
6
|
"type": "module",
|
|
@@ -413,7 +413,9 @@ export class AnimatorController {
|
|
|
413
413
|
|
|
414
414
|
let makeTransition = false;
|
|
415
415
|
if (transition.hasExitTime) {
|
|
416
|
-
makeTransition = normalizedTime >= exitTime;
|
|
416
|
+
if (action.timeScale > 0) makeTransition = normalizedTime >= transition.exitTime;
|
|
417
|
+
// When the animation is playing backwards we need to check exit time inverted
|
|
418
|
+
else if (action.timeScale < 0) makeTransition = 1 - normalizedTime >= transition.exitTime;
|
|
417
419
|
}
|
|
418
420
|
else {
|
|
419
421
|
makeTransition = true;
|
|
@@ -963,9 +963,11 @@ class DragPointerHandler implements IDragHandler {
|
|
|
963
963
|
if (hit.face) {
|
|
964
964
|
const dragTimeThreshold = 0.15;
|
|
965
965
|
const dragTimeSatisfied = this._draggedOverObjectDuration >= dragTimeThreshold;
|
|
966
|
+
const dragDistance = 0.001;
|
|
967
|
+
const dragDistanceSatisfied = this._totalMovement.length() >= dragDistance;
|
|
966
968
|
// Adjust drag plane if we're dragging over a different object (for a certain amount of time)
|
|
967
969
|
// or if the surface normal changed
|
|
968
|
-
if (dragTimeSatisfied &&
|
|
970
|
+
if ((dragTimeSatisfied || dragDistanceSatisfied) &&
|
|
969
971
|
(this._draggedOverObjectLastSetUp !== this._draggedOverObject
|
|
970
972
|
|| this._draggedOverObjectLastNormal.dot(hit.face.normal) < 0.999999
|
|
971
973
|
// if we're dragging on a flat surface with different levels (like the sandbox floor)
|
|
@@ -1004,7 +1006,7 @@ class DragPointerHandler implements IDragHandler {
|
|
|
1004
1006
|
// we want to return here and wait until the drag has been going on for a bit
|
|
1005
1007
|
// Otherwise the object will either immediately change it's position (when the user starts dragging)
|
|
1006
1008
|
// Or interpolate to a wrong position for a short moment
|
|
1007
|
-
else if (!dragTimeSatisfied) {
|
|
1009
|
+
else if (!(dragTimeSatisfied || dragDistanceSatisfied)) {
|
|
1008
1010
|
return;
|
|
1009
1011
|
}
|
|
1010
1012
|
}
|
|
@@ -30,7 +30,6 @@ export class ColorAdjustments extends PostProcessingEffect {
|
|
|
30
30
|
v = Math.pow(2.0, v);
|
|
31
31
|
return v;
|
|
32
32
|
}
|
|
33
|
-
this.postExposure.defaultValue = 0;
|
|
34
33
|
|
|
35
34
|
this.contrast.valueProcessor = (v: number) => {
|
|
36
35
|
let divisor = 1;
|
|
@@ -62,16 +61,18 @@ export class ColorAdjustments extends PostProcessingEffect {
|
|
|
62
61
|
|
|
63
62
|
|
|
64
63
|
// find the ToneMapping effect because we need it to apply post exposure
|
|
65
|
-
|
|
66
|
-
if(!
|
|
67
|
-
|
|
64
|
+
let tonemappingEffect = this.postprocessingContext?.components.find(c => c instanceof ToneMappingEffect) as ToneMappingEffect;
|
|
65
|
+
if (!tonemappingEffect) {
|
|
66
|
+
tonemappingEffect = new ToneMappingEffect();
|
|
67
|
+
this.postprocessingContext?.components.push(tonemappingEffect);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
// We need this effect if someone uses ACES or AgX tonemapping;
|
|
71
71
|
// problem is that we CAN'T use this effect for the "Linear" case, the package expects that in this case you remove the effect
|
|
72
72
|
this.postExposure!.onValueChanged = (v) => {
|
|
73
|
-
if (this.postExposure.overrideState)
|
|
74
|
-
|
|
73
|
+
if (this.postExposure.overrideState) {
|
|
74
|
+
tonemappingEffect.exposure.value = v;
|
|
75
|
+
}
|
|
75
76
|
};
|
|
76
77
|
|
|
77
78
|
const brightnesscontrast = new BrightnessContrastEffect();
|
|
@@ -73,6 +73,10 @@ export class ToneMappingEffect extends PostProcessingEffect {
|
|
|
73
73
|
@serializable(VolumeParameter)
|
|
74
74
|
readonly mode: VolumeParameter = new VolumeParameter(undefined);
|
|
75
75
|
|
|
76
|
+
@serializable(VolumeParameter)
|
|
77
|
+
readonly exposure: VolumeParameter = new VolumeParameter(1);
|
|
78
|
+
|
|
79
|
+
/** Set the tonemapping mode to e.g. "agx" */
|
|
76
80
|
setMode(mode: NEToneMappingModeNames) {
|
|
77
81
|
const enumValue = NEToneMappingMode[mode as NEToneMappingModeNames];
|
|
78
82
|
if (enumValue === undefined) {
|
|
@@ -94,6 +98,7 @@ export class ToneMappingEffect extends PostProcessingEffect {
|
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
onCreateEffect(): EffectProviderResult | undefined {
|
|
101
|
+
|
|
97
102
|
// TODO: this should be done in the PostProcessingHandler
|
|
98
103
|
if (this.postprocessingContext) {
|
|
99
104
|
for (const other of this.postprocessingContext.components) {
|
|
@@ -107,6 +112,7 @@ export class ToneMappingEffect extends PostProcessingEffect {
|
|
|
107
112
|
}
|
|
108
113
|
}
|
|
109
114
|
|
|
115
|
+
|
|
110
116
|
// ensure the effect tonemapping value is initialized
|
|
111
117
|
if (this.mode.isInitialized == false) {
|
|
112
118
|
const init = threeToNeToneMapping(this.context.renderer.toneMapping);
|
|
@@ -120,15 +126,24 @@ export class ToneMappingEffect extends PostProcessingEffect {
|
|
|
120
126
|
this.mode.onValueChanged = (newValue) => {
|
|
121
127
|
const threeMode = toThreeToneMapping(newValue);
|
|
122
128
|
tonemapping.mode = threeToneMappingToEffectMode(threeMode);
|
|
123
|
-
if (debug) console.log("ToneMapping mode changed to", newValue,
|
|
129
|
+
if (debug) console.log("ToneMapping mode changed to", NEToneMappingMode[newValue], threeMode, tonemapping.mode);
|
|
124
130
|
};
|
|
125
|
-
if (debug) console.log("Use ToneMapping", this.
|
|
131
|
+
if (debug) console.log("Use ToneMapping", NEToneMappingMode[this.mode.value], threeMode, tonemapping.mode, "renderer.tonemapping: " + this.context.renderer.toneMapping);
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
this.exposure.onValueChanged = (newValue) => {
|
|
135
|
+
this.context.renderer.toneMappingExposure = newValue;
|
|
136
|
+
};
|
|
137
|
+
|
|
126
138
|
return tonemapping;
|
|
127
139
|
}
|
|
128
140
|
|
|
129
141
|
|
|
130
142
|
onBeforeRender(): void {
|
|
131
|
-
|
|
143
|
+
if (this.mode.overrideState)
|
|
144
|
+
this.context.renderer.toneMapping = toThreeToneMapping(this.mode.value);
|
|
145
|
+
if (this.exposure.overrideState)
|
|
146
|
+
this.context.renderer.toneMappingExposure = this.exposure.value;
|
|
132
147
|
}
|
|
133
148
|
|
|
134
149
|
|
|
@@ -59,7 +59,7 @@ export abstract class PostProcessingEffect extends Component implements IEffectP
|
|
|
59
59
|
const value = params[key];
|
|
60
60
|
const param = this[key];
|
|
61
61
|
if (param instanceof VolumeParameter) {
|
|
62
|
-
param.value
|
|
62
|
+
param.initialize(value);
|
|
63
63
|
}
|
|
64
64
|
// allow assigning values to properties that are not VolumeParameters
|
|
65
65
|
// this is useful when effects are created in code
|
|
@@ -49,6 +49,8 @@ export class VolumeParameter {
|
|
|
49
49
|
return this._valueRaw;
|
|
50
50
|
}
|
|
51
51
|
set value(val: any) {
|
|
52
|
+
// When a user creates an effect and then just sets a VolumeParameter via `effect.param.value` we want to use this value as the initial value
|
|
53
|
+
if (!this.isInitialized) this.initialize(val);
|
|
52
54
|
this.processValue(val, false);
|
|
53
55
|
}
|
|
54
56
|
private _value: any;
|
|
@@ -108,9 +110,6 @@ export class VolumeParameter {
|
|
|
108
110
|
if (this.onValueChanged) {
|
|
109
111
|
this.onValueChanged(val, oldValue, this);
|
|
110
112
|
}
|
|
111
|
-
else if (debug) {
|
|
112
|
-
console.log("VolumeParameter: onValueChanged not set");
|
|
113
|
-
}
|
|
114
113
|
}
|
|
115
114
|
|
|
116
115
|
private testIfValueChanged(newValue: any): boolean {
|
|
@@ -147,7 +146,7 @@ class VolumeParameterSerializer extends TypeSerializer {
|
|
|
147
146
|
|
|
148
147
|
if (typeof data === "object" && "value" in data) {
|
|
149
148
|
const value = data.value;
|
|
150
|
-
parameter.value
|
|
149
|
+
parameter.initialize(value);
|
|
151
150
|
parameter.overrideState = data.overrideState;
|
|
152
151
|
}
|
|
153
152
|
else {
|