three-stdlib 2.10.1 → 2.11.0
Sign up to get free protection for your applications and to get access to all the features.
- package/controls/DragControls.cjs.js +1 -1
- package/controls/DragControls.d.ts +2 -1
- package/controls/DragControls.js +2 -0
- package/controls/TransformControls.cjs.js +1 -1
- package/controls/TransformControls.d.ts +1 -0
- package/controls/TransformControls.js +17 -0
- package/curves/NURBSUtils.cjs.js +1 -1
- package/curves/NURBSUtils.js +11 -11
- package/exporters/STLExporter.cjs.js +1 -1
- package/exporters/STLExporter.js +1 -1
- package/index.cjs.js +1 -1
- package/package.json +1 -1
- package/utils/SceneUtils.cjs.js +1 -1
- package/utils/SceneUtils.d.ts +9 -12
- package/utils/SceneUtils.js +7 -7
- package/webxr/OculusHandModel.cjs.js +1 -1
- package/webxr/OculusHandModel.js +28 -4
- package/webxr/XRHandMeshModel.cjs.js +1 -1
- package/webxr/XRHandMeshModel.js +3 -3
package/package.json
CHANGED
package/utils/SceneUtils.cjs.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three")
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");const t={createMeshesFromInstancedMesh:function(t){const a=new e.Group,n=t.count,c=t.geometry,r=t.material;for(let o=0;o<n;o++){const n=new e.Mesh(c,r);t.getMatrixAt(o,n.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale),a.add(n)}return a.copy(t),a.updateMatrixWorld(),a},createMultiMaterialObject:function(t,a){const n=new e.Group;for(let c=0,r=a.length;c<r;c++)n.add(new e.Mesh(t,a[c]));return n},detach:function(e,t,a){console.warn("THREE.SceneUtils: detach() has been deprecated. Use scene.attach( child ) instead."),a.attach(e)},attach:function(e,t,a){console.warn("THREE.SceneUtils: attach() has been deprecated. Use parent.attach( child ) instead."),a.attach(e)}};exports.SceneUtils=t;
|
package/utils/SceneUtils.d.ts
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
* @deprecated Use parent.attach( child ) instead.
|
11
|
-
*/
|
12
|
-
export function attach(child: Object3D, scene: Scene, parent: Object3D): void;
|
1
|
+
import { Group } from 'three';
|
2
|
+
import type { BufferGeometry, InstancedMesh, Material, Object3D, Scene } from 'three';
|
3
|
+
declare const SceneUtils: {
|
4
|
+
createMeshesFromInstancedMesh: (instancedMesh: InstancedMesh) => Group;
|
5
|
+
createMultiMaterialObject: (geometry: BufferGeometry, materials: Material[]) => Group;
|
6
|
+
detach: (child: Object3D, parent: Object3D, scene: Scene) => void;
|
7
|
+
attach: (child: Object3D, scene: Scene, parent: Object3D) => void;
|
8
|
+
};
|
9
|
+
export { SceneUtils };
|
package/utils/SceneUtils.js
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
import { Group, Mesh } from 'three';
|
2
2
|
|
3
|
-
|
3
|
+
const SceneUtils = {
|
4
4
|
createMeshesFromInstancedMesh: function (instancedMesh) {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
const group = new Group();
|
6
|
+
const count = instancedMesh.count;
|
7
|
+
const geometry = instancedMesh.geometry;
|
8
|
+
const material = instancedMesh.material;
|
9
9
|
|
10
10
|
for (let i = 0; i < count; i++) {
|
11
|
-
|
11
|
+
const mesh = new Mesh(geometry, material);
|
12
12
|
instancedMesh.getMatrixAt(i, mesh.matrix);
|
13
13
|
mesh.matrix.decompose(mesh.position, mesh.quaternion, mesh.scale);
|
14
14
|
group.add(mesh);
|
@@ -20,7 +20,7 @@ var SceneUtils = {
|
|
20
20
|
return group;
|
21
21
|
},
|
22
22
|
createMultiMaterialObject: function (geometry, materials) {
|
23
|
-
|
23
|
+
const group = new Group();
|
24
24
|
|
25
25
|
for (let i = 0, l = materials.length; i < l; i++) {
|
26
26
|
group.add(new Mesh(geometry, materials[i]));
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),t=require("./XRHandMeshModel.cjs.js");require("../loaders/GLTFLoader.cjs.js");class o extends e.Object3D{constructor(e){super(),this.controller=e,this.motionController=null,this.envMap=null,this.mesh=null,e.addEventListener("connected",(
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),t=require("./XRHandMeshModel.cjs.js");require("../loaders/GLTFLoader.cjs.js");class o extends e.Object3D{constructor(e,o){super(),this.controller=e,this.motionController=null,this.envMap=null,this.mesh=null,e.addEventListener("connected",(s=>{const n=s.data;n.hand&&!this.motionController&&(this.xrInputSource=n,this.motionController=new t.XRHandMeshModel(this,e,this.path,n.handedness,"left"===n.handedness?o[0]:o[1]))})),e.addEventListener("disconnected",(()=>{this.dispose()}))}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&this.motionController.updateMesh()}getPointerPosition(){const e=this.controller.joints["index-finger-tip"];return e?e.position:null}intersectBoxObject(t){const o=this.getPointerPosition();if(o){const s=new e.Sphere(o,.01),n=(new e.Box3).setFromObject(t);return s.intersectsBox(n)}return!1}checkButton(e){this.intersectBoxObject(e)?e.onPress():e.onClear(),e.isPressed()&&e.whilePressed()}dispose(){this.clear(),this.motionController&&this.motionController.traverse((e=>{if(e&&"Scene"!==e.type){var t;null===(t=e.dispose)||void 0===t||t.call(e);for(const t in e){var o;null===(o=t.dispose)||void 0===o||o.call(t),delete e[t]}}})),this.motionController=null}}exports.OculusHandModel=o;
|
package/webxr/OculusHandModel.js
CHANGED
@@ -5,7 +5,7 @@ const TOUCH_RADIUS = 0.01;
|
|
5
5
|
const POINTING_JOINT = 'index-finger-tip';
|
6
6
|
|
7
7
|
class OculusHandModel extends Object3D {
|
8
|
-
constructor(controller) {
|
8
|
+
constructor(controller, customModels) {
|
9
9
|
super();
|
10
10
|
this.controller = controller;
|
11
11
|
this.motionController = null;
|
@@ -16,12 +16,11 @@ class OculusHandModel extends Object3D {
|
|
16
16
|
|
17
17
|
if (xrInputSource.hand && !this.motionController) {
|
18
18
|
this.xrInputSource = xrInputSource;
|
19
|
-
this.motionController = new XRHandMeshModel(this, controller, this.path, xrInputSource.handedness);
|
19
|
+
this.motionController = new XRHandMeshModel(this, controller, this.path, xrInputSource.handedness, xrInputSource.handedness === 'left' ? customModels[0] : customModels[1]);
|
20
20
|
}
|
21
21
|
});
|
22
22
|
controller.addEventListener('disconnected', () => {
|
23
|
-
this.
|
24
|
-
this.motionController = null;
|
23
|
+
this.dispose();
|
25
24
|
});
|
26
25
|
}
|
27
26
|
|
@@ -67,6 +66,31 @@ class OculusHandModel extends Object3D {
|
|
67
66
|
}
|
68
67
|
}
|
69
68
|
|
69
|
+
dispose() {
|
70
|
+
this.clear();
|
71
|
+
|
72
|
+
if (this.motionController) {
|
73
|
+
this.motionController.traverse(node => {
|
74
|
+
if (!node) return;
|
75
|
+
|
76
|
+
if (node.type !== 'Scene') {
|
77
|
+
var _node$dispose;
|
78
|
+
|
79
|
+
(_node$dispose = node.dispose) === null || _node$dispose === void 0 ? void 0 : _node$dispose.call(node); // Dispose of its properties as well
|
80
|
+
|
81
|
+
for (const property in node) {
|
82
|
+
var _property$dispose;
|
83
|
+
|
84
|
+
(_property$dispose = property.dispose) === null || _property$dispose === void 0 ? void 0 : _property$dispose.call(property);
|
85
|
+
delete node[property];
|
86
|
+
}
|
87
|
+
}
|
88
|
+
});
|
89
|
+
}
|
90
|
+
|
91
|
+
this.motionController = null;
|
92
|
+
}
|
93
|
+
|
70
94
|
}
|
71
95
|
|
72
96
|
export { OculusHandModel };
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../loaders/GLTFLoader.cjs.js");require("three");exports.XRHandMeshModel=class{constructor(i,n,a,t){this.controller=n,this.handModel=i,this.bones=[];const
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../loaders/GLTFLoader.cjs.js");require("three");exports.XRHandMeshModel=class{constructor(i,n,a,t,r){this.controller=n,this.handModel=i,this.bones=[];const l=new e.GLTFLoader;r||l.setPath(a||"https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/"),l.load(null!=r?r:`${t}.glb`,(e=>{const i=e.scene.children[0];this.handModel.add(i);const n=i.getObjectByProperty("type","SkinnedMesh");n.frustumCulled=!1,n.castShadow=!0,n.receiveShadow=!0;["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"].forEach((e=>{const n=i.getObjectByName(e);void 0!==n?n.jointName=e:console.warn(`Couldn't find ${e} in ${t} hand mesh`),this.bones.push(n)}))}))}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.position.copy(e),n.quaternion.copy(i.quaternion)}}}}};
|
package/webxr/XRHandMeshModel.js
CHANGED
@@ -3,13 +3,13 @@ import { GLTFLoader } from '../loaders/GLTFLoader.js';
|
|
3
3
|
const DEFAULT_HAND_PROFILE_PATH = 'https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/';
|
4
4
|
|
5
5
|
class XRHandMeshModel {
|
6
|
-
constructor(handModel, controller, path, handedness) {
|
6
|
+
constructor(handModel, controller, path, handedness, customModel) {
|
7
7
|
this.controller = controller;
|
8
8
|
this.handModel = handModel;
|
9
9
|
this.bones = [];
|
10
10
|
const loader = new GLTFLoader();
|
11
|
-
loader.setPath(path || DEFAULT_HAND_PROFILE_PATH);
|
12
|
-
loader.load(`${handedness}.glb`, gltf => {
|
11
|
+
if (!customModel) loader.setPath(path || DEFAULT_HAND_PROFILE_PATH);
|
12
|
+
loader.load(customModel != null ? customModel : `${handedness}.glb`, gltf => {
|
13
13
|
const object = gltf.scene.children[0];
|
14
14
|
this.handModel.add(object);
|
15
15
|
const mesh = object.getObjectByProperty('type', 'SkinnedMesh');
|