super-three 0.160.1 → 0.162.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/LICENSE +1 -1
- package/build/three.cjs +867 -499
- package/build/three.module.js +867 -496
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +5 -1
- package/examples/jsm/capabilities/WebGPU.js +13 -9
- package/examples/jsm/controls/DragControls.js +91 -30
- package/examples/jsm/controls/OrbitControls.js +130 -15
- package/examples/jsm/controls/TransformControls.js +6 -6
- package/examples/jsm/curves/NURBSUtils.js +59 -4
- package/examples/jsm/curves/NURBSVolume.js +62 -0
- package/examples/jsm/exporters/GLTFExporter.js +11 -1
- package/examples/jsm/exporters/USDZExporter.js +8 -7
- package/examples/jsm/helpers/TextureHelper.js +3 -3
- package/examples/jsm/interactive/InteractiveGroup.js +15 -25
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +32 -14
- package/examples/jsm/loaders/3DMLoader.js +57 -64
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +20 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +78 -46
- package/examples/jsm/loaders/LUTCubeLoader.js +81 -67
- package/examples/jsm/loaders/LUTImageLoader.js +3 -2
- package/examples/jsm/loaders/MaterialXLoader.js +115 -16
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/VOXLoader.js +9 -2
- package/examples/jsm/loaders/VRMLLoader.js +7 -3
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +144 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
- package/examples/jsm/misc/Timer.js +13 -4
- package/examples/jsm/nodes/Nodes.js +24 -11
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +5 -3
- package/examples/jsm/nodes/accessors/CameraNode.js +9 -4
- package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +12 -1
- package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
- package/examples/jsm/nodes/accessors/MorphNode.js +8 -8
- package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
- package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +45 -0
- package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +56 -3
- package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
- package/examples/jsm/nodes/accessors/VertexColorNode.js +70 -0
- package/examples/jsm/nodes/code/CodeNode.js +6 -0
- package/examples/jsm/nodes/core/AssignNode.js +68 -12
- package/examples/jsm/nodes/core/AttributeNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +14 -4
- package/examples/jsm/nodes/core/NodeBuilder.js +26 -27
- package/examples/jsm/nodes/core/NodeFrame.js +18 -10
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -0
- package/examples/jsm/nodes/display/AfterImageNode.js +148 -0
- package/examples/jsm/nodes/display/AnamorphicNode.js +148 -0
- package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +3 -0
- package/examples/jsm/nodes/display/GaussianBlurNode.js +33 -13
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
- package/examples/jsm/nodes/display/PassNode.js +3 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +46 -3
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -4
- package/examples/jsm/nodes/display/ViewportNode.js +0 -2
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +4 -4
- package/examples/jsm/nodes/fog/FogNode.js +2 -1
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +13 -5
- package/examples/jsm/nodes/lighting/LightingContextNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +1 -1
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +18 -30
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +84 -0
- package/examples/jsm/nodes/materials/NodeMaterial.js +43 -10
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +1 -7
- package/examples/jsm/nodes/math/CondNode.js +42 -7
- package/examples/jsm/nodes/math/MathNode.js +32 -2
- package/examples/jsm/nodes/math/MathUtils.js +15 -0
- package/examples/jsm/nodes/math/OperatorNode.js +13 -5
- package/examples/jsm/nodes/math/TriNoise3D.js +71 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +10 -1
- package/examples/jsm/nodes/utils/JoinNode.js +2 -2
- package/examples/jsm/nodes/utils/LoopNode.js +5 -3
- package/examples/jsm/nodes/utils/ReflectorNode.js +227 -0
- package/examples/jsm/nodes/utils/RotateNode.js +68 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +1 -9
- package/examples/jsm/nodes/utils/SplitNode.js +4 -4
- package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
- package/examples/jsm/objects/GroundedSkybox.js +50 -0
- package/examples/jsm/objects/QuadMesh.js +8 -2
- package/examples/jsm/objects/Water2.js +8 -8
- package/examples/jsm/postprocessing/GTAOPass.js +11 -1
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/renderers/common/Backend.js +14 -0
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Bindings.js +1 -1
- package/examples/jsm/renderers/common/ClippingContext.js +165 -0
- package/examples/jsm/renderers/common/DataMap.js +1 -1
- package/examples/jsm/renderers/common/Info.js +25 -1
- package/examples/jsm/renderers/common/Pipelines.js +8 -8
- package/examples/jsm/renderers/common/PostProcessing.js +2 -2
- package/examples/jsm/renderers/common/ProgrammableStage.js +3 -1
- package/examples/jsm/renderers/common/RenderContext.js +2 -0
- package/examples/jsm/renderers/common/RenderContexts.js +2 -13
- package/examples/jsm/renderers/common/RenderObject.js +46 -1
- package/examples/jsm/renderers/common/RenderObjects.js +3 -1
- package/examples/jsm/renderers/common/Renderer.js +290 -17
- package/examples/jsm/renderers/common/StorageBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +28 -18
- package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +2 -1
- package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +5 -2
- package/examples/jsm/renderers/webgl/WebGLBackend.js +653 -272
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +171 -39
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +95 -8
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +11 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +197 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +424 -11
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -2
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -21
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +300 -112
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +7 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +71 -79
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +87 -14
- package/examples/jsm/shaders/OutputShader.js +4 -0
- package/examples/jsm/transpiler/AST.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
- package/examples/jsm/transpiler/TSLEncoder.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +23 -27
- package/examples/jsm/utils/SkeletonUtils.js +14 -3
- package/examples/jsm/utils/SortUtils.js +2 -0
- package/examples/jsm/webxr/ARButton.js +12 -2
- package/examples/jsm/webxr/VRButton.js +25 -7
- package/examples/jsm/webxr/XRButton.js +12 -3
- package/examples/jsm/webxr/XRControllerModelFactory.js +14 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -1
- package/package.json +5 -4
- package/src/Three.Legacy.js +20 -0
- package/src/Three.js +0 -1
- package/src/audio/Audio.js +1 -3
- package/src/cameras/PerspectiveCamera.js +35 -0
- package/src/constants.js +2 -6
- package/src/core/BufferAttribute.js +2 -12
- package/src/core/BufferGeometry.js +23 -29
- package/src/core/InterleavedBuffer.js +2 -1
- package/src/core/InterleavedBufferAttribute.js +20 -0
- package/src/core/Object3D.js +11 -0
- package/src/core/Raycaster.js +18 -4
- package/src/core/RenderTarget.js +44 -21
- package/src/extras/PMREMGenerator.js +2 -0
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/helpers/SpotLightHelper.js +18 -1
- package/src/loaders/DataTextureLoader.js +0 -4
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +2 -1
- package/src/materials/Material.js +2 -1
- package/src/materials/MeshBasicMaterial.js +3 -0
- package/src/materials/MeshLambertMaterial.js +3 -0
- package/src/materials/MeshPhongMaterial.js +3 -0
- package/src/materials/MeshStandardMaterial.js +3 -0
- package/src/materials/ShaderMaterial.js +2 -1
- package/src/math/Quaternion.js +13 -12
- package/src/math/Triangle.js +0 -30
- package/src/math/Vector3.js +7 -7
- package/src/objects/BatchedMesh.js +6 -7
- package/src/objects/InstancedMesh.js +53 -0
- package/src/objects/Mesh.js +0 -1
- package/src/objects/SkinnedMesh.js +0 -8
- package/src/renderers/WebGLCubeRenderTarget.js +1 -10
- package/src/renderers/WebGLRenderer.js +20 -23
- package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +9 -0
- package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +56 -11
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +38 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +4 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib.js +2 -1
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +18 -0
- package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -1
- package/src/renderers/webgl/WebGLMorphtargets.js +15 -8
- package/src/renderers/webgl/WebGLProgram.js +42 -4
- package/src/renderers/webgl/WebGLPrograms.js +38 -27
- package/src/renderers/webgl/WebGLState.js +11 -21
- package/src/renderers/webgl/WebGLTextures.js +170 -66
- package/src/renderers/webxr/WebXRDepthSensing.js +105 -0
- package/src/renderers/webxr/WebXRManager.js +46 -0
- package/src/scenes/Scene.js +8 -0
- package/src/textures/Source.js +1 -0
- package/src/textures/Texture.js +1 -29
- package/build/three.js +0 -54519
- package/build/three.min.js +0 -7
- package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/examples/jsm/objects/GroundProjectedSkybox.js +0 -172
- package/src/renderers/WebGLMultipleRenderTargets.js +0 -82
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Vector4
|
|
3
|
+
} from 'three';
|
|
4
|
+
import * as NURBSUtils from '../curves/NURBSUtils.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* NURBS volume object
|
|
8
|
+
*
|
|
9
|
+
* Implementation is based on (x, y, z [, w=1]]) control points with w=weight.
|
|
10
|
+
**/
|
|
11
|
+
|
|
12
|
+
class NURBSVolume {
|
|
13
|
+
|
|
14
|
+
constructor( degree1, degree2, degree3, knots1, knots2, knots3 /* arrays of reals */, controlPoints /* array^3 of Vector(2|3|4) */ ) {
|
|
15
|
+
|
|
16
|
+
this.degree1 = degree1;
|
|
17
|
+
this.degree2 = degree2;
|
|
18
|
+
this.degree3 = degree3;
|
|
19
|
+
this.knots1 = knots1;
|
|
20
|
+
this.knots2 = knots2;
|
|
21
|
+
this.knots3 = knots3;
|
|
22
|
+
this.controlPoints = [];
|
|
23
|
+
|
|
24
|
+
const len1 = knots1.length - degree1 - 1;
|
|
25
|
+
const len2 = knots2.length - degree2 - 1;
|
|
26
|
+
const len3 = knots3.length - degree3 - 1;
|
|
27
|
+
|
|
28
|
+
// ensure Vector4 for control points
|
|
29
|
+
for ( let i = 0; i < len1; ++ i ) {
|
|
30
|
+
|
|
31
|
+
this.controlPoints[ i ] = [];
|
|
32
|
+
|
|
33
|
+
for ( let j = 0; j < len2; ++ j ) {
|
|
34
|
+
|
|
35
|
+
this.controlPoints[ i ][ j ] = [];
|
|
36
|
+
|
|
37
|
+
for ( let k = 0; k < len3; ++ k ) {
|
|
38
|
+
|
|
39
|
+
const point = controlPoints[ i ][ j ][ k ];
|
|
40
|
+
this.controlPoints[ i ][ j ][ k ] = new Vector4( point.x, point.y, point.z, point.w );
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
getPoint( t1, t2, t3, target ) {
|
|
51
|
+
|
|
52
|
+
const u = this.knots1[ 0 ] + t1 * ( this.knots1[ this.knots1.length - 1 ] - this.knots1[ 0 ] ); // linear mapping t1->u
|
|
53
|
+
const v = this.knots2[ 0 ] + t2 * ( this.knots2[ this.knots2.length - 1 ] - this.knots2[ 0 ] ); // linear mapping t2->v
|
|
54
|
+
const w = this.knots3[ 0 ] + t3 * ( this.knots3[ this.knots3.length - 1 ] - this.knots3[ 0 ] ); // linear mapping t3->w
|
|
55
|
+
|
|
56
|
+
NURBSUtils.calcVolumePoint( this.degree1, this.degree2, this.degree3, this.knots1, this.knots2, this.knots3, this.controlPoints, u, v, w, target );
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { NURBSVolume };
|
|
@@ -1288,7 +1288,17 @@ class GLTFWriter {
|
|
|
1288
1288
|
|
|
1289
1289
|
} else {
|
|
1290
1290
|
|
|
1291
|
-
|
|
1291
|
+
if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
|
|
1292
|
+
( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
|
|
1293
|
+
( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
|
|
1294
|
+
|
|
1295
|
+
ctx.drawImage( image, 0, 0, canvas.width, canvas.height );
|
|
1296
|
+
|
|
1297
|
+
} else {
|
|
1298
|
+
|
|
1299
|
+
throw new Error( 'THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement or ImageBitmap.' );
|
|
1300
|
+
|
|
1301
|
+
}
|
|
1292
1302
|
|
|
1293
1303
|
}
|
|
1294
1304
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
NoColorSpace,
|
|
3
|
+
DoubleSide,
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
strToU8,
|
|
8
|
+
zipSync,
|
|
9
9
|
} from '../libs/fflate.module.js';
|
|
10
10
|
|
|
11
11
|
import { decompress } from './../utils/TextureUtils.js';
|
|
@@ -20,6 +20,7 @@ class USDZExporter {
|
|
|
20
20
|
planeAnchoring: { alignment: 'horizontal' }
|
|
21
21
|
},
|
|
22
22
|
quickLookCompatible: false,
|
|
23
|
+
maxTextureSize: 1024,
|
|
23
24
|
}, options );
|
|
24
25
|
|
|
25
26
|
const files = {};
|
|
@@ -93,7 +94,7 @@ class USDZExporter {
|
|
|
93
94
|
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
const canvas = imageToCanvas( texture.image, texture.flipY );
|
|
97
|
+
const canvas = imageToCanvas( texture.image, texture.flipY, options.maxTextureSize );
|
|
97
98
|
const blob = await new Promise( resolve => canvas.toBlob( resolve, 'image/png', 1 ) );
|
|
98
99
|
|
|
99
100
|
files[ `textures/Texture_${ id }.png` ] = new Uint8Array( await blob.arrayBuffer() );
|
|
@@ -133,14 +134,14 @@ class USDZExporter {
|
|
|
133
134
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
|
-
function imageToCanvas( image, flipY ) {
|
|
137
|
+
function imageToCanvas( image, flipY, maxTextureSize ) {
|
|
137
138
|
|
|
138
139
|
if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
|
|
139
140
|
( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
|
|
140
141
|
( typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas ) ||
|
|
141
142
|
( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
|
|
142
143
|
|
|
143
|
-
const scale =
|
|
144
|
+
const scale = maxTextureSize / Math.max( image.width, image.height );
|
|
144
145
|
|
|
145
146
|
const canvas = document.createElement( 'canvas' );
|
|
146
147
|
canvas.width = image.width * Math.min( 1, scale );
|
|
@@ -216,8 +216,8 @@ function createSliceGeometry( texture, width, height, depth ) {
|
|
|
216
216
|
const w = sliceCount === 1
|
|
217
217
|
? 1
|
|
218
218
|
: texture.isDataArrayTexture || texture.isCompressedArrayTexture
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
? i
|
|
220
|
+
: i / ( sliceCount - 1 );
|
|
221
221
|
|
|
222
222
|
uvw.setXYZ( j, u, v, w );
|
|
223
223
|
|
|
@@ -234,4 +234,4 @@ function createSliceGeometry( texture, width, height, depth ) {
|
|
|
234
234
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
export { TextureHelper };
|
|
237
|
+
export { TextureHelper };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Group,
|
|
3
|
-
Matrix4,
|
|
4
3
|
Raycaster,
|
|
5
4
|
Vector2
|
|
6
5
|
} from 'three';
|
|
@@ -8,18 +7,14 @@ import {
|
|
|
8
7
|
const _pointer = new Vector2();
|
|
9
8
|
const _event = { type: '', data: _pointer };
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
const _raycaster = new Raycaster();
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
class InteractiveGroup extends Group {
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
listenToPointerEvents( renderer, camera ) {
|
|
16
15
|
|
|
17
16
|
const scope = this;
|
|
18
|
-
|
|
19
17
|
const raycaster = new Raycaster();
|
|
20
|
-
const tempMatrix = new Matrix4();
|
|
21
|
-
|
|
22
|
-
// Pointer Events
|
|
23
18
|
|
|
24
19
|
const element = renderer.domElement;
|
|
25
20
|
|
|
@@ -60,7 +55,12 @@ class InteractiveGroup extends Group {
|
|
|
60
55
|
element.addEventListener( 'mousemove', onPointerEvent );
|
|
61
56
|
element.addEventListener( 'click', onPointerEvent );
|
|
62
57
|
|
|
63
|
-
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
listenToXRControllerEvents( controller ) {
|
|
61
|
+
|
|
62
|
+
const scope = this;
|
|
63
|
+
|
|
64
64
|
// TODO: Dispatch pointerevents too
|
|
65
65
|
|
|
66
66
|
const events = {
|
|
@@ -74,12 +74,9 @@ class InteractiveGroup extends Group {
|
|
|
74
74
|
|
|
75
75
|
const controller = event.target;
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
raycaster.ray.origin.setFromMatrixPosition( controller.matrixWorld );
|
|
80
|
-
raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );
|
|
77
|
+
_raycaster.setFromXRController( controller );
|
|
81
78
|
|
|
82
|
-
const intersections =
|
|
79
|
+
const intersections = _raycaster.intersectObjects( scope.children, false );
|
|
83
80
|
|
|
84
81
|
if ( intersections.length > 0 ) {
|
|
85
82
|
|
|
@@ -97,17 +94,10 @@ class InteractiveGroup extends Group {
|
|
|
97
94
|
|
|
98
95
|
}
|
|
99
96
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
controller1.addEventListener( 'selectend', onXRControllerEvent );
|
|
105
|
-
|
|
106
|
-
const controller2 = renderer.xr.getController( 1 );
|
|
107
|
-
controller2.addEventListener( 'move', onXRControllerEvent );
|
|
108
|
-
controller2.addEventListener( 'select', onXRControllerEvent );
|
|
109
|
-
controller2.addEventListener( 'selectstart', onXRControllerEvent );
|
|
110
|
-
controller2.addEventListener( 'selectend', onXRControllerEvent );
|
|
97
|
+
controller.addEventListener( 'move', onXRControllerEvent );
|
|
98
|
+
controller.addEventListener( 'select', onXRControllerEvent );
|
|
99
|
+
controller.addEventListener( 'selectstart', onXRControllerEvent );
|
|
100
|
+
controller.addEventListener( 'selectend', onXRControllerEvent );
|
|
111
101
|
|
|
112
102
|
}
|
|
113
103
|
|