three-stdlib 2.10.1 → 2.11.0
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/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');
|