@woosh/meep-engine 2.119.84 → 2.119.85
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/package.json +1 -1
- package/src/core/color/rgb_to_rgbe9995.d.ts +10 -0
- package/src/core/color/rgb_to_rgbe9995.d.ts.map +1 -0
- package/src/core/color/rgb_to_rgbe9995.js +51 -0
- package/src/core/color/rgbe9995_to_rgb.d.ts +9 -0
- package/src/core/color/rgbe9995_to_rgb.d.ts.map +1 -0
- package/src/core/color/rgbe9995_to_rgb.js +25 -0
- package/src/core/geom/3d/v3_compute_interior_angle.d.ts +22 -0
- package/src/core/geom/3d/v3_compute_interior_angle.d.ts.map +1 -0
- package/src/core/geom/3d/v3_compute_interior_angle.js +26 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +17 -11
- package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +5 -0
- package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
- package/src/engine/animation/keyed2/AnimationTrackPlayback.js +8 -0
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts +5 -1
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts.map +1 -1
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.js +9 -3
- package/src/engine/ecs/transform/Transform.d.ts +1 -1
- package/src/engine/ecs/transform/Transform.js +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.js +6 -28
package/package.json
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert floating point RGB input to RGBE9995 Uint32 value
|
|
3
|
+
* TODO unverified
|
|
4
|
+
* @param {number} r
|
|
5
|
+
* @param {number} g
|
|
6
|
+
* @param {number} b
|
|
7
|
+
* @returns {number} Uint32
|
|
8
|
+
*/
|
|
9
|
+
export function rgb_to_rgbe9995(r: number, g: number, b: number): number;
|
|
10
|
+
//# sourceMappingURL=rgb_to_rgbe9995.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb_to_rgbe9995.d.ts","sourceRoot":"","sources":["../../../../src/core/color/rgb_to_rgbe9995.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,mCALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAyClB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { clamp } from "../math/clamp.js";
|
|
2
|
+
import { max3 } from "../math/max3.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Convert floating point RGB input to RGBE9995 Uint32 value
|
|
6
|
+
* TODO unverified
|
|
7
|
+
* @param {number} r
|
|
8
|
+
* @param {number} g
|
|
9
|
+
* @param {number} b
|
|
10
|
+
* @returns {number} Uint32
|
|
11
|
+
*/
|
|
12
|
+
export function rgb_to_rgbe9995(r, g, b) {
|
|
13
|
+
|
|
14
|
+
//see https://github.com/Stary2001/godot/blob/00c6ce9716ed542997bc2b59136bceb3729db970/core/color.h#L125
|
|
15
|
+
|
|
16
|
+
const pow2to9 = 512.0;
|
|
17
|
+
const B = 15.0;
|
|
18
|
+
//const float Emax = 31.0f;
|
|
19
|
+
const N = 9.0;
|
|
20
|
+
|
|
21
|
+
const sharedexp = 65408.000; //(( pow2to9 - 1.0f)/ pow2to9)*powf( 2.0f, 31.0f - 15.0f);
|
|
22
|
+
|
|
23
|
+
const cRed = clamp(r, 0, sharedexp);
|
|
24
|
+
const cGreen = clamp(g, 0, sharedexp);
|
|
25
|
+
const cBlue = clamp(b, 0, sharedexp);
|
|
26
|
+
|
|
27
|
+
const cMax = max3(cRed, cGreen, cBlue);
|
|
28
|
+
|
|
29
|
+
// expp = MAX(-B - 1, log2(maxc)) + 1 + B
|
|
30
|
+
|
|
31
|
+
const expp = Math.max(-B - 1.0, Math.floor(Math.log(cMax) / Math.LN2)) + 1.0 + B;
|
|
32
|
+
|
|
33
|
+
const sMax = Math.floor((cMax / Math.pow(2.0, expp - B - N)) + 0.5);
|
|
34
|
+
|
|
35
|
+
let exps = expp + 1.0;
|
|
36
|
+
|
|
37
|
+
if (0.0 <= sMax && sMax < pow2to9) {
|
|
38
|
+
exps = expp;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const sRed = Math.floor((cRed / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
42
|
+
const sGreen = Math.floor((cGreen / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
43
|
+
const sBlue = Math.floor((cBlue / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
44
|
+
|
|
45
|
+
return (sRed & 0x1FF)
|
|
46
|
+
| ((sGreen & 0x1FF) << 9)
|
|
47
|
+
| ((sBlue & 0x1FF) << 18)
|
|
48
|
+
| ((exps & 0x1F) << 27)
|
|
49
|
+
;
|
|
50
|
+
|
|
51
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TODO unverified
|
|
3
|
+
* Decode RGBE (RGB + exponent) UINT32 value
|
|
4
|
+
* @param {number[]|Float32Array} out
|
|
5
|
+
* @param {number} out_offset
|
|
6
|
+
* @param {number} rgbe
|
|
7
|
+
*/
|
|
8
|
+
export function rgbe9995_to_rgb(out: number[] | Float32Array, out_offset: number, rgbe: number): void;
|
|
9
|
+
//# sourceMappingURL=rgbe9995_to_rgb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgbe9995_to_rgb.d.ts","sourceRoot":"","sources":["../../../../src/core/color/rgbe9995_to_rgb.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qCAJW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,QACN,MAAM,QAmBhB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TODO unverified
|
|
3
|
+
* Decode RGBE (RGB + exponent) UINT32 value
|
|
4
|
+
* @param {number[]|Float32Array} out
|
|
5
|
+
* @param {number} out_offset
|
|
6
|
+
* @param {number} rgbe
|
|
7
|
+
*/
|
|
8
|
+
export function rgbe9995_to_rgb(out, out_offset, rgbe) {
|
|
9
|
+
// see https://github.com/godotengine/godot/blob/4c4e67334412f73c9deba5e5d29afa8651418af2/core/math/color.cpp#L471
|
|
10
|
+
|
|
11
|
+
const r = rgbe & 0x1ff;
|
|
12
|
+
const g = (rgbe >> 9) & 0x1ff;
|
|
13
|
+
const b = (rgbe >> 18) & 0x1ff;
|
|
14
|
+
const e = (rgbe >> 27);
|
|
15
|
+
|
|
16
|
+
const scale = Math.pow(2.0, e - 15.0 - 9.0);
|
|
17
|
+
|
|
18
|
+
const _r = r * scale;
|
|
19
|
+
const _g = g * scale;
|
|
20
|
+
const _b = b * scale;
|
|
21
|
+
|
|
22
|
+
out[out_offset] = _r;
|
|
23
|
+
out[out_offset + 1] = _g;
|
|
24
|
+
out[out_offset + 2] = _b;
|
|
25
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute interior angle between three points
|
|
3
|
+
* Computed angle is around point B
|
|
4
|
+
* @param {{x:number, y:number, z:number}} a
|
|
5
|
+
* @param {{x:number, y:number, z:number}} b
|
|
6
|
+
* @param {{x:number, y:number, z:number}} c
|
|
7
|
+
* @returns {number} angle in radians
|
|
8
|
+
*/
|
|
9
|
+
export function v3_compute_interior_angle(a: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
z: number;
|
|
13
|
+
}, b: {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
z: number;
|
|
17
|
+
}, c: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
z: number;
|
|
21
|
+
}): number;
|
|
22
|
+
//# sourceMappingURL=v3_compute_interior_angle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_compute_interior_angle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/v3_compute_interior_angle.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,6CALW;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,KAC9B;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,KAC9B;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,GAC5B,MAAM,CAiBlB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { v3_angle_between } from "../vec3/v3_angle_between.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Compute interior angle between three points
|
|
5
|
+
* Computed angle is around point B
|
|
6
|
+
* @param {{x:number, y:number, z:number}} a
|
|
7
|
+
* @param {{x:number, y:number, z:number}} b
|
|
8
|
+
* @param {{x:number, y:number, z:number}} c
|
|
9
|
+
* @returns {number} angle in radians
|
|
10
|
+
*/
|
|
11
|
+
export function v3_compute_interior_angle(a, b, c) {
|
|
12
|
+
//compute AB delta
|
|
13
|
+
const d_ab_x = a.x - b.x;
|
|
14
|
+
const d_ab_y = a.y - b.y;
|
|
15
|
+
const d_ab_z = a.z - b.z;
|
|
16
|
+
|
|
17
|
+
//compute CB delta
|
|
18
|
+
const d_cb_x = c.x - b.x;
|
|
19
|
+
const d_cb_y = c.y - b.y;
|
|
20
|
+
const d_cb_z = c.z - b.z;
|
|
21
|
+
|
|
22
|
+
return v3_angle_between(
|
|
23
|
+
d_ab_x, d_ab_y, d_ab_z,
|
|
24
|
+
d_cb_x, d_cb_y, d_cb_z,
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":";AAqBA;
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|
|
@@ -1023,14 +1023,16 @@ class Quaternion {
|
|
|
1023
1023
|
}
|
|
1024
1024
|
|
|
1025
1025
|
/**
|
|
1026
|
-
*
|
|
1026
|
+
* Spherical linear interpolation
|
|
1027
1027
|
* @param {Quaternion} from
|
|
1028
1028
|
* @param {Quaternion} to
|
|
1029
|
-
* @param {number} t
|
|
1029
|
+
* @param {number} t coefficient, how much between the input quats?
|
|
1030
1030
|
*/
|
|
1031
1031
|
slerpQuaternions(from, to, t) {
|
|
1032
1032
|
assert.isNumber(t, 't');
|
|
1033
1033
|
|
|
1034
|
+
// see https://github.com/glampert/vectormath/blob/7105ef341303fe83b3dacd6883d9333989126069/scalar/quaternion.hpp#L90
|
|
1035
|
+
|
|
1034
1036
|
const ax = from.x,
|
|
1035
1037
|
ay = from.y,
|
|
1036
1038
|
az = from.z,
|
|
@@ -1041,26 +1043,30 @@ class Quaternion {
|
|
|
1041
1043
|
bz = to.z,
|
|
1042
1044
|
bw = to.w;
|
|
1043
1045
|
|
|
1044
|
-
let
|
|
1046
|
+
let cos_angle, scale0, scale1;
|
|
1045
1047
|
|
|
1046
1048
|
// calc cosine
|
|
1047
|
-
|
|
1049
|
+
cos_angle = ax * bx + ay * by + az * bz + aw * bw;
|
|
1048
1050
|
|
|
1049
1051
|
// adjust signs (if necessary)
|
|
1050
|
-
if (
|
|
1051
|
-
|
|
1052
|
+
if (cos_angle < 0.0) {
|
|
1053
|
+
cos_angle = -cos_angle;
|
|
1052
1054
|
bx = -bx;
|
|
1053
1055
|
by = -by;
|
|
1054
1056
|
bz = -bz;
|
|
1055
1057
|
bw = -bw;
|
|
1056
1058
|
}
|
|
1059
|
+
|
|
1057
1060
|
// calculate coefficients
|
|
1058
|
-
if ((1.0 -
|
|
1061
|
+
if ((1.0 - cos_angle) > EPSILON) {
|
|
1059
1062
|
// standard case (slerp)
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1063
|
+
const angle = Math.acos(cos_angle);
|
|
1064
|
+
|
|
1065
|
+
const recip_sin_angle = 1 / sin(angle);
|
|
1066
|
+
|
|
1067
|
+
scale0 = sin((1.0 - t) * angle) * recip_sin_angle;
|
|
1068
|
+
scale1 = sin(t * angle) * recip_sin_angle;
|
|
1069
|
+
|
|
1064
1070
|
} else {
|
|
1065
1071
|
// "from" and "to" quaternions are very close
|
|
1066
1072
|
// ... so we can do a linear interpolation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationTrackPlayback.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/keyed2/AnimationTrackPlayback.js"],"names":[],"mappings":";AAGA;IACI;;;;;;;;OAQG;IACH,4EAuBC;IAtBG,sBAAkB;IAClB,cAA+B;IAE/B,oBAAoC;IACpC,kBAAgC;IAEhC,uBAAuB;IACvB,8BAA8B;IAE9B,uBAAuB;IACvB,sBAAsB;IAEtB,gBAAmB;IAEnB,4BAA0D;IAG1D;;MAEC;IAKL;;;OAGG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,WAFW,OAAO,QAIjB;IAED,cAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QA2BhB;IAED;;;OAGG;IACH,cAFa,OAAO,CA2CnB;IAED;;;OAGG;IACH,mBAFW,MAAM,QA6BhB;IAED,eAOC;IAED;;;OAGG;IACH,0BAFW,MAAM,EAAE,QA2ClB;CACJ;
|
|
1
|
+
{"version":3,"file":"AnimationTrackPlayback.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/keyed2/AnimationTrackPlayback.js"],"names":[],"mappings":";AAGA;IACI;;;;;;;;OAQG;IACH,4EAuBC;IAtBG,sBAAkB;IAClB,cAA+B;IAE/B,oBAAoC;IACpC,kBAAgC;IAEhC,uBAAuB;IACvB,8BAA8B;IAE9B,uBAAuB;IACvB,sBAAsB;IAEtB,gBAAmB;IAEnB,4BAA0D;IAG1D;;MAEC;IAKL;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,WAFW,OAAO,QAIjB;IAED,cAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QA2BhB;IAED;;;OAGG;IACH,cAFa,OAAO,CA2CnB;IAED;;;OAGG;IACH,mBAFW,MAAM,QA6BhB;IAED,eAOC;IAED;;;OAGG;IACH,0BAFW,MAAM,EAAE,QA2ClB;CACJ;mBA9OkB,uCAAuC"}
|
|
@@ -4,8 +4,12 @@ export class AnimationBehavior extends Behavior<any> {
|
|
|
4
4
|
* @param {AnimationTrackPlayback} animation
|
|
5
5
|
*/
|
|
6
6
|
constructor(animation: AnimationTrackPlayback);
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @type {AnimationTrackPlayback}
|
|
10
|
+
*/
|
|
7
11
|
animation: AnimationTrackPlayback;
|
|
8
|
-
initialize(): void;
|
|
12
|
+
initialize(_ignore_: any): void;
|
|
9
13
|
}
|
|
10
14
|
import { Behavior } from "../../../intelligence/behavior/Behavior.js";
|
|
11
15
|
//# sourceMappingURL=AnimationBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/keyed2/behavior/AnimationBehavior.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,+
|
|
1
|
+
{"version":3,"file":"AnimationBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/keyed2/behavior/AnimationBehavior.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,+CAOC;IALG;;;OAGG;IACH,kCAA0B;IAqB9B,gCAEC;CACJ;yBAtCwB,4CAA4C"}
|
|
@@ -8,6 +8,10 @@ export class AnimationBehavior extends Behavior {
|
|
|
8
8
|
*/
|
|
9
9
|
constructor(animation) {
|
|
10
10
|
super();
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @type {AnimationTrackPlayback}
|
|
14
|
+
*/
|
|
11
15
|
this.animation = animation;
|
|
12
16
|
}
|
|
13
17
|
|
|
@@ -18,16 +22,18 @@ export class AnimationBehavior extends Behavior {
|
|
|
18
22
|
* @returns {BehaviorStatus}
|
|
19
23
|
*/
|
|
20
24
|
tick(timeDelta) {
|
|
21
|
-
this.animation
|
|
25
|
+
const animation = this.animation;
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
animation.advance(timeDelta);
|
|
28
|
+
|
|
29
|
+
if (animation.position >= animation.track.timeEnd && !animation.loop) {
|
|
24
30
|
return BehaviorStatus.Succeeded;
|
|
25
31
|
}
|
|
26
32
|
|
|
27
33
|
return BehaviorStatus.Running;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
|
-
initialize() {
|
|
36
|
+
initialize(_ignore_) {
|
|
31
37
|
this.animation.setPosition(this.animation.track.timeStart);
|
|
32
38
|
}
|
|
33
39
|
}
|
|
@@ -45,7 +45,7 @@ export class Transform {
|
|
|
45
45
|
readonly matrix: Float32Array;
|
|
46
46
|
/**
|
|
47
47
|
* Various bit flags, see {@link TransformFlags}
|
|
48
|
-
* This should generally be accessed through getFlag/setFlag instead of modifying the value directly
|
|
48
|
+
* This should generally be accessed through {@link getFlag}/{@link setFlag} instead of modifying the value directly
|
|
49
49
|
* @type {number}
|
|
50
50
|
*/
|
|
51
51
|
flags: number;
|
|
@@ -53,7 +53,7 @@ export class Transform {
|
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Various bit flags, see {@link TransformFlags}
|
|
56
|
-
* This should generally be accessed through getFlag/setFlag instead of modifying the value directly
|
|
56
|
+
* This should generally be accessed through {@link getFlag}/{@link setFlag} instead of modifying the value directly
|
|
57
57
|
* @type {number}
|
|
58
58
|
*/
|
|
59
59
|
flags = FLAGS_DEFAULT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two_joint_ik.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inverse_kinematics/two_joint_ik.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"two_joint_ik.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inverse_kinematics/two_joint_ik.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;GAWG;AACH,gCAVW,OAAO,KACP,OAAO,KACP,OAAO,KACP,OAAO,OACP,MAAM,QACN,UAAU,QACV,UAAU,QACV,UAAU,QACV,UAAU,QAoEpB;oBAtGmB,+BAA+B;uBAD5B,kCAAkC"}
|
|
@@ -1,32 +1,8 @@
|
|
|
1
|
+
import { v3_compute_interior_angle } from "../../../core/geom/3d/v3_compute_interior_angle.js";
|
|
1
2
|
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
2
|
-
import { v3_angle_between } from "../../../core/geom/vec3/v3_angle_between.js";
|
|
3
3
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
4
|
import { clamp } from "../../../core/math/clamp.js";
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Compute interior angle between three points
|
|
8
|
-
* @param {Vector3} a
|
|
9
|
-
* @param {Vector3} b
|
|
10
|
-
* @param {Vector3} c
|
|
11
|
-
* @returns {number} angle in radians
|
|
12
|
-
*/
|
|
13
|
-
function computeInteriorAngle(a, b, c) {
|
|
14
|
-
//compute AB delta
|
|
15
|
-
const d_ab_x = a.x - b.x;
|
|
16
|
-
const d_ab_y = a.y - b.y;
|
|
17
|
-
const d_ab_z = a.z - b.z;
|
|
18
|
-
|
|
19
|
-
//compute CB delta
|
|
20
|
-
const d_cb_x = c.x - b.x;
|
|
21
|
-
const d_cb_y = c.y - b.y;
|
|
22
|
-
const d_cb_z = c.z - b.z;
|
|
23
|
-
|
|
24
|
-
return v3_angle_between(
|
|
25
|
-
d_ab_x, d_ab_y, d_ab_z,
|
|
26
|
-
d_cb_x, d_cb_y, d_cb_z,
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
6
|
const d = new Vector3();
|
|
31
7
|
|
|
32
8
|
const delta_ca = new Vector3();
|
|
@@ -46,6 +22,8 @@ const axis0_la = new Vector3();
|
|
|
46
22
|
const axis0_lb = new Vector3();
|
|
47
23
|
const axis1_la = new Vector3();
|
|
48
24
|
|
|
25
|
+
// TODO: investigate https://github.com/guillaumeblanc/ozz-animation/blob/master/src/animation/runtime/ik_two_bone_job.cc
|
|
26
|
+
|
|
49
27
|
/**
|
|
50
28
|
* Based on http://theorangeduck.com/page/simple-two-joint
|
|
51
29
|
* @param {Vector3} a Root bone position
|
|
@@ -74,9 +52,9 @@ export function two_joint_ik(
|
|
|
74
52
|
const lat = clamp(t.distanceTo(a), eps, maximum_extension);
|
|
75
53
|
|
|
76
54
|
//compute current interior angles
|
|
77
|
-
const ac_ab_0 =
|
|
78
|
-
const ba_bc_0 =
|
|
79
|
-
const ac_at_0 =
|
|
55
|
+
const ac_ab_0 = v3_compute_interior_angle(c, a, b);
|
|
56
|
+
const ba_bc_0 = v3_compute_interior_angle(a, b, c);
|
|
57
|
+
const ac_at_0 = v3_compute_interior_angle(c, a, t);
|
|
80
58
|
|
|
81
59
|
// Using the cosine rule to compute desired interior angles
|
|
82
60
|
const length_at_sqr = lat * lat;
|