three-stdlib 2.8.2 → 2.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. package/{BufferGeometryUtils-582025b8.js → BufferGeometryUtils-1a7a235c.js} +2 -1
  2. package/{BufferGeometryUtils-9eb5c2e7.js → BufferGeometryUtils-971dfde3.js} +0 -0
  3. package/animation/MMDAnimationHelper.d.ts +17 -17
  4. package/animation/MMDPhysics.d.ts +3 -3
  5. package/csm/CSM.d.ts +47 -22
  6. package/csm/CSMHelper.d.ts +20 -7
  7. package/effects/OutlineEffect.d.ts +4 -4
  8. package/effects/OutlineEffect.js +8 -2
  9. package/exporters/GLTFExporter.js +5 -10
  10. package/geometries/ConvexGeometry.d.ts +1 -1
  11. package/geometries/ParametricGeometries.d.ts +4 -2
  12. package/helpers/RectAreaLightHelper.d.ts +3 -3
  13. package/index.cjs.js +1 -1
  14. package/index.d.ts +9 -4
  15. package/index.js +9 -4
  16. package/libs/MotionControllers.cjs.js +1 -0
  17. package/libs/MotionControllers.js +403 -0
  18. package/loaders/AssimpLoader.js +39 -10
  19. package/loaders/ColladaLoader.js +22 -5
  20. package/loaders/EXRLoader.js +5 -1
  21. package/loaders/FBXLoader.js +10 -2
  22. package/loaders/GLTFLoader.cjs.js +1 -1
  23. package/loaders/GLTFLoader.d.ts +44 -20
  24. package/loaders/GLTFLoader.js +0 -1
  25. package/loaders/LDrawLoader.d.ts +6 -0
  26. package/loaders/MTLLoader.d.ts +18 -18
  27. package/loaders/RGBMLoader.d.ts +10 -10
  28. package/loaders/RGBMLoader.js +253 -178
  29. package/loaders/SVGLoader.d.ts +5 -3
  30. package/loaders/SVGLoader.js +10 -5
  31. package/loaders/lwo/IFFParser.js +4 -1
  32. package/math/OBB.d.ts +1 -1
  33. package/misc/GPUComputationRenderer.d.ts +8 -6
  34. package/misc/MD2CharacterComplex.js +9 -2
  35. package/misc/Volume.d.ts +2 -0
  36. package/modifiers/CurveModifier.cjs.js +1 -1
  37. package/modifiers/CurveModifier.js +1 -1
  38. package/modifiers/EdgeSplitModifier.cjs.js +1 -1
  39. package/modifiers/SimplifyModifier.cjs.js +1 -1
  40. package/nodes/inputs/ColorNode.d.ts +2 -2
  41. package/nodes/inputs/TextureNode.d.ts +3 -2
  42. package/nodes/materials/StandardNodeMaterial.d.ts +1 -1
  43. package/nodes/materials/nodes/StandardNode.d.ts +1 -0
  44. package/nodes/utils/ColorSpaceNode.d.ts +1 -1
  45. package/nodes/utils/JoinNode.d.ts +1 -0
  46. package/objects/MarchingCubes.d.ts +12 -4
  47. package/objects/Reflector.d.ts +4 -2
  48. package/objects/ReflectorForSSRPass.d.ts +6 -6
  49. package/objects/Refractor.d.ts +4 -2
  50. package/objects/Water.d.ts +4 -3
  51. package/objects/Water2.d.ts +12 -3
  52. package/package.json +2 -3
  53. package/postprocessing/ClearPass.d.ts +3 -3
  54. package/postprocessing/SAOPass.d.ts +3 -2
  55. package/postprocessing/SSAARenderPass.d.ts +3 -3
  56. package/postprocessing/SSAOPass.d.ts +3 -2
  57. package/postprocessing/SSRPass.d.ts +14 -17
  58. package/postprocessing/TAARenderPass.d.ts +2 -2
  59. package/renderers/CSS2DRenderer.d.ts +5 -1
  60. package/renderers/CSS3DRenderer.d.ts +5 -1
  61. package/renderers/webgpu/WebGPUTextures.js +62 -41
  62. package/shaders/SSRShader.d.ts +1 -2
  63. package/utils/BufferGeometryUtils.cjs.js +1 -1
  64. package/utils/BufferGeometryUtils.js +2 -1
  65. package/utils/LDrawUtils.cjs.js +1 -1
  66. package/utils/LDrawUtils.d.ts +5 -0
  67. package/utils/LDrawUtils.js +1 -1
  68. package/utils/RoughnessMipmapper.js +5 -1
  69. package/utils/SceneUtils.d.ts +10 -12
  70. package/utils/ShadowMapViewer.js +4 -1
  71. package/webxr/OculusHandModel.cjs.js +1 -0
  72. package/webxr/OculusHandModel.d.ts +19 -0
  73. package/webxr/OculusHandModel.js +72 -0
  74. package/webxr/OculusHandPointerModel.cjs.js +1 -0
  75. package/webxr/OculusHandPointerModel.d.ts +63 -0
  76. package/webxr/OculusHandPointerModel.js +248 -0
  77. package/webxr/Text2D.cjs.js +1 -0
  78. package/webxr/Text2D.d.ts +3 -0
  79. package/webxr/Text2D.js +32 -0
  80. package/webxr/VRButton.cjs.js +1 -1
  81. package/webxr/VRButton.js +17 -1
  82. package/webxr/XRControllerModelFactory.cjs.js +1 -1
  83. package/webxr/XRControllerModelFactory.js +65 -66
  84. package/webxr/XREstimatedLight.cjs.js +1 -1
  85. package/webxr/XREstimatedLight.js +1 -0
  86. package/webxr/XRHandMeshModel.cjs.js +1 -0
  87. package/webxr/XRHandMeshModel.d.ts +11 -0
  88. package/webxr/XRHandMeshModel.js +55 -0
  89. package/webxr/XRHandModelFactory.cjs.js +1 -1
  90. package/webxr/XRHandModelFactory.d.ts +3 -3
  91. package/webxr/XRHandModelFactory.js +47 -50
  92. package/webxr/XRHandPrimitiveModel.cjs.js +1 -1
  93. package/webxr/XRHandPrimitiveModel.d.ts +1 -1
  94. package/webxr/XRHandPrimitiveModel.js +31 -41
  95. package/csm/Frustum.d.ts +0 -16
  96. package/csm/Shader.d.ts +0 -6
  97. package/loaders/XLoader.d.ts +0 -19
  98. package/shaders/FresnelShader.d.ts +0 -13
  99. package/shaders/ParallaxShader.d.ts +0 -20
  100. package/utils/RoughnessMipmapper.d.ts +0 -7
  101. package/webxr/XRHandOculusMeshModel.cjs.js +0 -1
  102. package/webxr/XRHandOculusMeshModel.d.ts +0 -23
  103. package/webxr/XRHandOculusMeshModel.js +0 -89
@@ -1,62 +1,52 @@
1
- import { Group, SphereGeometry, BoxGeometry, MeshStandardMaterial, Mesh } from 'three';
1
+ import { Matrix4, Vector3, SphereGeometry, BoxGeometry, MeshStandardMaterial, InstancedMesh, DynamicDrawUsage } from 'three';
2
+
3
+ const _matrix = new Matrix4();
4
+
5
+ const _vector = new Vector3();
2
6
 
3
7
  class XRHandPrimitiveModel {
4
8
  constructor(handModel, controller, path, handedness, options) {
5
9
  this.controller = controller;
6
10
  this.handModel = handModel;
7
11
  this.envMap = null;
8
- this.handMesh = new Group();
9
- this.handModel.add(this.handMesh);
12
+ let geometry;
10
13
 
11
- if (window.XRHand) {
12
- let geometry;
13
-
14
- if (!options || !options.primitive || options.primitive === 'sphere') {
15
- geometry = new SphereGeometry(1, 10, 10);
16
- } else if (options.primitive === 'box') {
17
- geometry = new BoxGeometry(1, 1, 1);
18
- }
14
+ if (!options || !options.primitive || options.primitive === 'sphere') {
15
+ geometry = new SphereGeometry(1, 10, 10);
16
+ } else if (options.primitive === 'box') {
17
+ geometry = new BoxGeometry(1, 1, 1);
18
+ }
19
19
 
20
- const jointMaterial = new MeshStandardMaterial({
21
- color: 0xffffff,
22
- roughness: 1,
23
- metalness: 0
24
- });
25
- const tipMaterial = new MeshStandardMaterial({
26
- color: 0x999999,
27
- roughness: 1,
28
- metalness: 0
29
- });
30
- const joints = ['wrist', 'thumb-metacarpal', 'thumb-phalanx-proximal', 'thumb-phalanx-distal', 'thumb-tip', 'index-finger-metacarpal', 'index-finger-phalanx-proximal', 'index-finger-phalanx-intermediate', 'index-finger-phalanx-distal', 'index-finger-tip', 'middle-finger-metacarpal', 'middle-finger-phalanx-proximal', 'middle-finger-phalanx-intermediate', 'middle-finger-phalanx-distal', 'middle-finger-tip', 'ring-finger-metacarpal', 'ring-finger-phalanx-proximal', 'ring-finger-phalanx-intermediate', 'ring-finger-phalanx-distal', 'ring-finger-tip', 'pinky-finger-metacarpal', 'pinky-finger-phalanx-proximal', 'pinky-finger-phalanx-intermediate', 'pinky-finger-phalanx-distal', 'pinky-finger-tip'];
20
+ const material = new MeshStandardMaterial();
21
+ this.handMesh = new InstancedMesh(geometry, material, 30);
22
+ this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage); // will be updated every frame
31
23
 
32
- for (let jointName of joints) {
33
- var cube = new Mesh(geometry, jointName.indexOf('tip') !== -1 ? tipMaterial : jointMaterial);
34
- cube.castShadow = true;
35
- cube.receiveShadow = true;
36
- cube.jointName = jointName;
37
- this.handMesh.add(cube);
38
- }
39
- }
24
+ this.handMesh.castShadow = true;
25
+ this.handMesh.receiveShadow = true;
26
+ this.handModel.add(this.handMesh);
27
+ this.joints = ['wrist', 'thumb-metacarpal', 'thumb-phalanx-proximal', 'thumb-phalanx-distal', 'thumb-tip', 'index-finger-metacarpal', 'index-finger-phalanx-proximal', 'index-finger-phalanx-intermediate', 'index-finger-phalanx-distal', 'index-finger-tip', 'middle-finger-metacarpal', 'middle-finger-phalanx-proximal', 'middle-finger-phalanx-intermediate', 'middle-finger-phalanx-distal', 'middle-finger-tip', 'ring-finger-metacarpal', 'ring-finger-phalanx-proximal', 'ring-finger-phalanx-intermediate', 'ring-finger-phalanx-distal', 'ring-finger-tip', 'pinky-finger-metacarpal', 'pinky-finger-phalanx-proximal', 'pinky-finger-phalanx-intermediate', 'pinky-finger-phalanx-distal', 'pinky-finger-tip'];
40
28
  }
41
29
 
42
30
  updateMesh() {
43
31
  const defaultRadius = 0.008;
44
- const objects = this.handMesh.children; // XR Joints
32
+ const joints = this.controller.joints;
33
+ let count = 0;
45
34
 
46
- const XRJoints = this.controller.joints;
35
+ for (let i = 0; i < this.joints.length; i++) {
36
+ const joint = joints[this.joints[i]];
47
37
 
48
- for (let i = 0; i < objects.length; i++) {
49
- const jointMesh = objects[i];
50
- const XRJoint = XRJoints[jointMesh.jointName];
38
+ if (joint.visible) {
39
+ _vector.setScalar(joint.jointRadius || defaultRadius);
51
40
 
52
- if (XRJoint.visible) {
53
- jointMesh.position.copy(XRJoint.position);
54
- jointMesh.quaternion.copy(XRJoint.quaternion);
55
- jointMesh.scale.setScalar(XRJoint.jointRadius || defaultRadius);
56
- }
41
+ _matrix.compose(joint.position, joint.quaternion, _vector);
57
42
 
58
- jointMesh.visible = XRJoint.visible;
43
+ this.handMesh.setMatrixAt(i, _matrix);
44
+ count++;
45
+ }
59
46
  }
47
+
48
+ this.handMesh.count = count;
49
+ this.handMesh.instanceMatrix.needsUpdate = true;
60
50
  }
61
51
 
62
52
  }
package/csm/Frustum.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export default class Frustum {
2
- constructor(data: any);
3
- vertices: {
4
- near: any[];
5
- far: any[];
6
- };
7
- setFromProjectionMatrix(
8
- projectionMatrix: any,
9
- maxFar: any,
10
- ): {
11
- near: any[];
12
- far: any[];
13
- };
14
- split(breaks: any, target: any): void;
15
- toSpace(cameraMatrix: any, target: any): void;
16
- }
package/csm/Shader.d.ts DELETED
@@ -1,6 +0,0 @@
1
- declare namespace _default {
2
- const lights_fragment_begin: string;
3
- const lights_pars_begin: string;
4
- }
5
-
6
- export default _default;
@@ -1,19 +0,0 @@
1
- import { Mesh, Loader, LoadingManager } from 'three';
2
-
3
- export interface XResult {
4
- animations: object[];
5
- models: Mesh[];
6
- }
7
-
8
- export class XLoader extends Loader {
9
- constructor(manager?: LoadingManager);
10
-
11
- load(
12
- url: string,
13
- onLoad: (object: XResult) => void,
14
- onProgress?: (event: ProgressEvent) => void,
15
- onError?: (event: ErrorEvent) => void,
16
- ): void;
17
- loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<XResult>;
18
- parse(data: ArrayBuffer | string, onLoad: (object: object) => void): object;
19
- }
@@ -1,13 +0,0 @@
1
- import { Uniform } from 'three';
2
-
3
- export const FresnelShader: {
4
- uniforms: {
5
- mRefractionRatio: Uniform;
6
- mFresnelBias: Uniform;
7
- mFresnelPower: Uniform;
8
- mFresnelScale: Uniform;
9
- tCube: Uniform;
10
- };
11
- vertexShader: string;
12
- fragmentShader: string;
13
- };
@@ -1,20 +0,0 @@
1
- import { Uniform } from 'three';
2
-
3
- export const ParallaxShader: {
4
- modes: {
5
- none: string;
6
- basic: string;
7
- steep: string;
8
- occlusion: string;
9
- relief: string;
10
- };
11
- uniforms: {
12
- bumpMap: Uniform;
13
- map: Uniform;
14
- parallaxScale: Uniform;
15
- parallaxMinLayers: Uniform;
16
- parallaxMaxLayers: Uniform;
17
- };
18
- vertexShader: string;
19
- fragmentShader: string;
20
- };
@@ -1,7 +0,0 @@
1
- import { WebGLRenderer, MeshStandardMaterial } from 'three';
2
-
3
- export class RoughnessMipmapper {
4
- constructor(renderer: WebGLRenderer);
5
- generateMipmaps(material: MeshStandardMaterial): void;
6
- dispose(): void;
7
- }
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../loaders/FBXLoader.cjs.js");require("three"),require("fflate"),require("../curves/NURBSCurve.cjs.js"),require("../curves/NURBSUtils.cjs.js");exports.XRHandOculusMeshModel=class{constructor(i,n,l,r,t){this.controller=n,this.handModel=i,this.bones=[];const a=new e.FBXLoader,s=t&&"lowpoly"===t.model?"_low":"";a.setPath(l),a.load(`OculusHand_${"right"===r?"R":"L"}${s}.fbx`,(e=>{this.handModel.add(e),e.scale.setScalar(.01);const i=e.getObjectByProperty("type","SkinnedMesh");i.frustumCulled=!1,i.castShadow=!0,i.receiveShadow=!0;const n=["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"];let l=0;["b_%_wrist","b_%_thumb1","b_%_thumb2","b_%_thumb3","b_%_thumb_null",null,"b_%_index1","b_%_index2","b_%_index3","b_%_index_null",null,"b_%_middle1","b_%_middle2","b_%_middle3","b_%_middlenull",null,"b_%_ring1","b_%_ring2","b_%_ring3","b_%_ring_inull","b_%_pinky0","b_%_pinky1","b_%_pinky2","b_%_pinky3","b_%_pinkynull"].forEach((i=>{if(i){const t=e.getObjectByName(i.replace(/%/g,"right"===r?"r":"l"));void 0!==t&&(t.jointName=n[l]),this.bones.push(t)}else this.bones.push(null);l++}))}))}updateMesh(){const e=this.controller.joints;for(let i=0;i<this.bones.length;i++){const n=this.bones[i];if(n){const i=e[n.jointName];if(i.visible){const e=i.position;n&&(n.position.copy(e.clone().multiplyScalar(100)),n.quaternion.copy(i.quaternion))}}}}};
@@ -1,23 +0,0 @@
1
- import { Group, Object3D } from 'three';
2
-
3
- import { XRHandModel, XRHandModelHandedness } from './XRHandModelFactory';
4
-
5
- export interface XRHandOculusMeshModelOptions {
6
- model: 'lowpoly';
7
- }
8
-
9
- export class XRHandOculusMeshModel {
10
- controller: Group;
11
- handModel: XRHandModel;
12
- bones: Array<Object3D | null>;
13
-
14
- constructor(
15
- handModel: XRHandModel,
16
- controller: Group,
17
- path: string,
18
- handedness: XRHandModelHandedness,
19
- options: XRHandOculusMeshModelOptions,
20
- );
21
-
22
- updateMesh: () => void;
23
- }
@@ -1,89 +0,0 @@
1
- import { FBXLoader } from '../loaders/FBXLoader.js';
2
-
3
- class XRHandOculusMeshModel {
4
- constructor(handModel, controller, path, handedness, options) {
5
- this.controller = controller;
6
- this.handModel = handModel;
7
- this.bones = [];
8
- const loader = new FBXLoader();
9
- const low = options && options.model === 'lowpoly' ? '_low' : '';
10
- loader.setPath(path);
11
- loader.load(`OculusHand_${handedness === 'right' ? 'R' : 'L'}${low}.fbx`, object => {
12
- this.handModel.add(object); // Hack because of the scale of the skinnedmesh
13
-
14
- object.scale.setScalar(0.01);
15
- const mesh = object.getObjectByProperty('type', 'SkinnedMesh');
16
- mesh.frustumCulled = false;
17
- mesh.castShadow = true;
18
- mesh.receiveShadow = true;
19
- const bonesMapping = ['b_%_wrist', // XRHand.WRIST,
20
- 'b_%_thumb1', // XRHand.THUMB_METACARPAL,
21
- 'b_%_thumb2', // XRHand.THUMB_PHALANX_PROXIMAL,
22
- 'b_%_thumb3', // XRHand.THUMB_PHALANX_DISTAL,
23
- 'b_%_thumb_null', // XRHand.THUMB_PHALANX_TIP,
24
- null, //'b_%_index1', // XRHand.INDEX_METACARPAL,
25
- 'b_%_index1', // XRHand.INDEX_PHALANX_PROXIMAL,
26
- 'b_%_index2', // XRHand.INDEX_PHALANX_INTERMEDIATE,
27
- 'b_%_index3', // XRHand.INDEX_PHALANX_DISTAL,
28
- 'b_%_index_null', // XRHand.INDEX_PHALANX_TIP,
29
- null, //'b_%_middle1', // XRHand.MIDDLE_METACARPAL,
30
- 'b_%_middle1', // XRHand.MIDDLE_PHALANX_PROXIMAL,
31
- 'b_%_middle2', // XRHand.MIDDLE_PHALANX_INTERMEDIATE,
32
- 'b_%_middle3', // XRHand.MIDDLE_PHALANX_DISTAL,
33
- 'b_%_middlenull', // XRHand.MIDDLE_PHALANX_TIP,
34
- null, //'b_%_ring1', // XRHand.RING_METACARPAL,
35
- 'b_%_ring1', // XRHand.RING_PHALANX_PROXIMAL,
36
- 'b_%_ring2', // XRHand.RING_PHALANX_INTERMEDIATE,
37
- 'b_%_ring3', // XRHand.RING_PHALANX_DISTAL,
38
- 'b_%_ring_inull', // XRHand.RING_PHALANX_TIP,
39
- 'b_%_pinky0', // XRHand.LITTLE_METACARPAL,
40
- 'b_%_pinky1', // XRHand.LITTLE_PHALANX_PROXIMAL,
41
- 'b_%_pinky2', // XRHand.LITTLE_PHALANX_INTERMEDIATE,
42
- 'b_%_pinky3', // XRHand.LITTLE_PHALANX_DISTAL,
43
- 'b_%_pinkynull' // XRHand.LITTLE_PHALANX_TIP
44
- ];
45
- const joints = ['wrist', 'thumb-metacarpal', 'thumb-phalanx-proximal', 'thumb-phalanx-distal', 'thumb-tip', 'index-finger-metacarpal', 'index-finger-phalanx-proximal', 'index-finger-phalanx-intermediate', 'index-finger-phalanx-distal', 'index-finger-tip', 'middle-finger-metacarpal', 'middle-finger-phalanx-proximal', 'middle-finger-phalanx-intermediate', 'middle-finger-phalanx-distal', 'middle-finger-tip', 'ring-finger-metacarpal', 'ring-finger-phalanx-proximal', 'ring-finger-phalanx-intermediate', 'ring-finger-phalanx-distal', 'ring-finger-tip', 'pinky-finger-metacarpal', 'pinky-finger-phalanx-proximal', 'pinky-finger-phalanx-intermediate', 'pinky-finger-phalanx-distal', 'pinky-finger-tip'];
46
- let i = 0;
47
- bonesMapping.forEach(boneName => {
48
- if (boneName) {
49
- const bone = object.getObjectByName(boneName.replace(/%/g, handedness === 'right' ? 'r' : 'l'));
50
-
51
- if (bone !== undefined) {
52
- bone.jointName = joints[i];
53
- }
54
-
55
- this.bones.push(bone);
56
- } else {
57
- this.bones.push(null);
58
- }
59
-
60
- i++;
61
- });
62
- });
63
- }
64
-
65
- updateMesh() {
66
- // XR Joints
67
- const XRJoints = this.controller.joints;
68
-
69
- for (let i = 0; i < this.bones.length; i++) {
70
- const bone = this.bones[i];
71
-
72
- if (bone) {
73
- const XRJoint = XRJoints[bone.jointName];
74
-
75
- if (XRJoint.visible) {
76
- const position = XRJoint.position;
77
-
78
- if (bone) {
79
- bone.position.copy(position.clone().multiplyScalar(100));
80
- bone.quaternion.copy(XRJoint.quaternion); // bone.scale.setScalar( XRJoint.jointRadius || defaultRadius );
81
- }
82
- }
83
- }
84
- }
85
- }
86
-
87
- }
88
-
89
- export { XRHandOculusMeshModel };