@plastic-software/three 0.182.0 → 0.183.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 +11520 -10877
- package/build/three.core.js +11732 -11340
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +509 -262
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +7 -11
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +3072 -2607
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +3071 -2607
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -3
- package/examples/jsm/animation/CCDIKSolver.js +2 -2
- package/examples/jsm/controls/ArcballControls.js +3 -3
- package/examples/jsm/controls/OrbitControls.js +103 -0
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +1 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +131 -4
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Inspector.js +21 -5
- package/examples/jsm/inspector/tabs/Console.js +39 -5
- package/examples/jsm/inspector/tabs/Parameters.js +16 -0
- package/examples/jsm/inspector/ui/Style.js +25 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +6 -5
- package/examples/jsm/lines/LineMaterial.js +6 -0
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +122 -171
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +5 -5
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +3 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +182 -30
- package/examples/jsm/loaders/VRMLLoader.js +77 -0
- package/examples/jsm/loaders/VTKLoader.js +37 -24
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/usd/USDAParser.js +447 -366
- package/examples/jsm/loaders/usd/USDCParser.js +1841 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Sky.js +76 -4
- package/examples/jsm/objects/SkyMesh.js +114 -7
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/JoltPhysics.js +7 -5
- package/examples/jsm/physics/RapierPhysics.js +6 -4
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/SVGRenderer.js +2 -2
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +456 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +1 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/examples/jsm/tsl/display/BloomNode.js +5 -5
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +2 -2
- package/examples/jsm/tsl/display/GaussianBlurNode.js +11 -2
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +3 -3
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +5 -5
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +2 -2
- package/examples/jsm/tsl/display/SSRNode.js +7 -7
- package/examples/jsm/tsl/display/SSSNode.js +2 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TRAANode.js +9 -12
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/math/Bayer.js +40 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/package.json +11 -19
- package/src/Three.Core.js +1 -1
- package/src/Three.TSL.js +5 -9
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/KeyframeTrack.js +46 -7
- package/src/animation/PropertyMixer.js +4 -4
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +30 -1
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +56 -4
- package/src/core/RenderTarget.js +3 -4
- package/src/extras/PMREMGenerator.js +4 -8
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +0 -24
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/LightShadow.js +15 -3
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/FileLoader.js +1 -1
- package/src/loaders/ImageBitmapLoader.js +8 -3
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/ObjectLoader.js +18 -1
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/nodes/Line2NodeMaterial.js +5 -5
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -0
- package/src/materials/nodes/NodeMaterial.js +15 -24
- package/src/materials/nodes/manager/NodeMaterialObserver.js +9 -3
- package/src/math/Line3.js +3 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix4.js +35 -26
- package/src/math/Quaternion.js +3 -29
- package/src/math/Vector3.js +3 -3
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +87 -68
- package/src/nodes/TSL.js +2 -5
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +1 -1
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/InstanceNode.js +105 -40
- package/src/nodes/accessors/Normal.js +9 -9
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +12 -24
- package/src/nodes/accessors/StorageBufferNode.js +0 -19
- package/src/nodes/accessors/StorageTextureNode.js +37 -1
- package/src/nodes/accessors/Tangent.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +6 -34
- package/src/nodes/accessors/TextureNode.js +58 -22
- package/src/nodes/accessors/UniformArrayNode.js +2 -0
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +29 -3
- package/src/nodes/core/NodeBuilder.js +115 -40
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeUtils.js +5 -3
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +2 -1
- package/src/nodes/core/StackNode.js +9 -8
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +15 -0
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformNode.js +2 -1
- package/src/nodes/core/VarNode.js +1 -1
- package/src/nodes/core/VaryingNode.js +1 -18
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +21 -2
- package/src/nodes/display/RenderOutputNode.js +3 -3
- package/src/nodes/display/ScreenNode.js +2 -1
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportTextureNode.js +21 -4
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/PhysicalLightingModel.js +25 -3
- package/src/nodes/geometry/RangeNode.js +4 -2
- package/src/nodes/gpgpu/ComputeNode.js +5 -4
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/PointShadowNode.js +24 -12
- package/src/nodes/lighting/ShadowFilterNode.js +15 -43
- package/src/nodes/lighting/ShadowNode.js +54 -32
- package/src/nodes/math/ConditionalNode.js +2 -2
- package/src/nodes/math/MathNode.js +3 -40
- package/src/nodes/math/OperatorNode.js +2 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLCore.js +13 -10
- package/src/nodes/utils/DebugNode.js +11 -11
- package/src/nodes/utils/JoinNode.js +2 -2
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +4 -2
- package/src/objects/BatchedMesh.js +22 -12
- package/src/objects/InstancedMesh.js +11 -0
- package/src/renderers/WebGLRenderer.js +34 -60
- package/src/renderers/common/Backend.js +21 -0
- package/src/renderers/common/Background.js +7 -4
- package/src/renderers/common/BindGroup.js +1 -9
- package/src/renderers/common/Bindings.js +20 -5
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +50 -6
- package/src/renderers/common/Geometries.js +17 -3
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +4 -4
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/RenderBundles.js +2 -1
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -56
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +2 -3
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +18 -2
- package/src/renderers/common/RenderPipeline.js +203 -17
- package/src/renderers/common/Renderer.js +207 -40
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +16 -0
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +60 -0
- package/src/renderers/common/XRManager.js +2 -2
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +18 -6
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +23 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +55 -24
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +4 -2
- package/src/renderers/shaders/UniformsLib.js +0 -3
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +2 -2
- package/src/renderers/webgl/WebGLPrograms.js +10 -4
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +5 -4
- package/src/renderers/webgl/WebGLState.js +12 -17
- package/src/renderers/webgl-fallback/WebGLBackend.js +71 -7
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +98 -29
- package/src/renderers/webgl-fallback/utils/WebGLState.js +168 -7
- package/src/renderers/webgpu/WebGPUBackend.js +58 -9
- package/src/renderers/webgpu/WebGPURenderer.js +1 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +257 -45
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +8 -19
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -31
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +25 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +10 -6
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +246 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -433
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -18,10 +18,13 @@ import {
|
|
|
18
18
|
LineSegments,
|
|
19
19
|
Loader,
|
|
20
20
|
LoaderUtils,
|
|
21
|
+
MathUtils,
|
|
21
22
|
Mesh,
|
|
22
23
|
MeshBasicMaterial,
|
|
23
24
|
MeshPhongMaterial,
|
|
24
25
|
Object3D,
|
|
26
|
+
OrthographicCamera,
|
|
27
|
+
PerspectiveCamera,
|
|
25
28
|
Points,
|
|
26
29
|
PointsMaterial,
|
|
27
30
|
Quaternion,
|
|
@@ -166,6 +169,7 @@ class VRMLLoader extends Loader {
|
|
|
166
169
|
const nodeTypes = [
|
|
167
170
|
'Anchor', 'Billboard', 'Collision', 'Group', 'Transform', // grouping nodes
|
|
168
171
|
'Inline', 'LOD', 'Switch', // special groups
|
|
172
|
+
'PerspectiveCamera', 'OrthographicCamera',
|
|
169
173
|
'AudioClip', 'DirectionalLight', 'PointLight', 'Script', 'Shape', 'Sound', 'SpotLight', 'WorldInfo', // common nodes
|
|
170
174
|
'CylinderSensor', 'PlaneSensor', 'ProximitySensor', 'SphereSensor', 'TimeSensor', 'TouchSensor', 'VisibilitySensor', // sensors
|
|
171
175
|
'Box', 'Cone', 'Cylinder', 'ElevationGrid', 'Extrusion', 'IndexedFaceSet', 'IndexedLineSet', 'PointSet', 'Sphere', // geometries
|
|
@@ -733,6 +737,11 @@ class VRMLLoader extends Loader {
|
|
|
733
737
|
build = buildWorldInfoNode( node );
|
|
734
738
|
break;
|
|
735
739
|
|
|
740
|
+
case 'OrthographicCamera':
|
|
741
|
+
case 'PerspectiveCamera':
|
|
742
|
+
build = buildCamera( node, nodeName );
|
|
743
|
+
break;
|
|
744
|
+
|
|
736
745
|
case 'Billboard':
|
|
737
746
|
|
|
738
747
|
case 'Inline':
|
|
@@ -1588,6 +1597,74 @@ class VRMLLoader extends Loader {
|
|
|
1588
1597
|
|
|
1589
1598
|
}
|
|
1590
1599
|
|
|
1600
|
+
function buildCamera( node, type ) {
|
|
1601
|
+
|
|
1602
|
+
const camera = ( type === 'PerspectiveCamera' ) ? new PerspectiveCamera() : new OrthographicCamera();
|
|
1603
|
+
|
|
1604
|
+
const width = ( typeof window !== 'undefined' ) ? window.innerWidth : 1;
|
|
1605
|
+
const height = ( typeof window !== 'undefined' ) ? window.innerHeight : 1;
|
|
1606
|
+
const aspect = width / height;
|
|
1607
|
+
|
|
1608
|
+
const fields = node.fields;
|
|
1609
|
+
|
|
1610
|
+
for ( let i = 0, l = fields.length; i < l; i ++ ) {
|
|
1611
|
+
|
|
1612
|
+
const field = fields[ i ];
|
|
1613
|
+
const fieldName = field.name;
|
|
1614
|
+
const fieldValues = field.values;
|
|
1615
|
+
|
|
1616
|
+
switch ( fieldName ) {
|
|
1617
|
+
|
|
1618
|
+
case 'position':
|
|
1619
|
+
camera.position.set( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 0 ] );
|
|
1620
|
+
break;
|
|
1621
|
+
|
|
1622
|
+
case 'orientation':
|
|
1623
|
+
const axis = new Vector3( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] ).normalize();
|
|
1624
|
+
const angle = fieldValues[ 3 ];
|
|
1625
|
+
camera.quaternion.setFromAxisAngle( axis, angle );
|
|
1626
|
+
break;
|
|
1627
|
+
|
|
1628
|
+
case 'focalDistance':
|
|
1629
|
+
camera.userData.focalDistance = fieldValues[ 0 ]; // might be useful for DoF
|
|
1630
|
+
break;
|
|
1631
|
+
|
|
1632
|
+
case 'heightAngle':
|
|
1633
|
+
|
|
1634
|
+
// for perspective cams only
|
|
1635
|
+
|
|
1636
|
+
camera.fov = MathUtils.radToDeg( fieldValues[ 0 ] );
|
|
1637
|
+
camera.aspect = aspect;
|
|
1638
|
+
camera.updateProjectionMatrix();
|
|
1639
|
+
|
|
1640
|
+
break;
|
|
1641
|
+
|
|
1642
|
+
case 'height':
|
|
1643
|
+
|
|
1644
|
+
// for ortho cams only
|
|
1645
|
+
|
|
1646
|
+
const halfHeight = fieldValues[ 0 ] / 2;
|
|
1647
|
+
const halfWidth = halfHeight * aspect;
|
|
1648
|
+
|
|
1649
|
+
camera.left = - halfWidth;
|
|
1650
|
+
camera.right = halfWidth;
|
|
1651
|
+
camera.top = halfHeight;
|
|
1652
|
+
camera.bottom = - halfHeight;
|
|
1653
|
+
camera.updateProjectionMatrix();
|
|
1654
|
+
break;
|
|
1655
|
+
|
|
1656
|
+
default:
|
|
1657
|
+
console.warn( 'THREE.VRMLLoader: Unknown field:', fieldName );
|
|
1658
|
+
break;
|
|
1659
|
+
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
return camera;
|
|
1665
|
+
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1591
1668
|
function buildIndexedFaceSetNode( node ) {
|
|
1592
1669
|
|
|
1593
1670
|
let color, coord, normal, texCoord;
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
Loader,
|
|
8
8
|
SRGBColorSpace
|
|
9
9
|
} from 'three';
|
|
10
|
-
import
|
|
10
|
+
import { unzlibSync } from '../libs/fflate.module.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* A loader for the VTK format.
|
|
@@ -112,8 +112,20 @@ class VTKLoader extends Loader {
|
|
|
112
112
|
// pattern for detecting the end of a number sequence
|
|
113
113
|
const patWord = /^[^\d.\s-]+/;
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
function parseFloats( line ) {
|
|
116
|
+
|
|
117
|
+
const result = [];
|
|
118
|
+
const parts = line.split( /\s+/ );
|
|
119
|
+
|
|
120
|
+
for ( let i = 0; i < parts.length; i ++ ) {
|
|
121
|
+
|
|
122
|
+
if ( parts[ i ] !== '' ) result.push( parseFloat( parts[ i ] ) );
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return result;
|
|
127
|
+
|
|
128
|
+
}
|
|
117
129
|
|
|
118
130
|
// pattern for connectivity, an integer followed by any number of ints
|
|
119
131
|
// the first integer is the number of polygon nodes
|
|
@@ -165,14 +177,15 @@ class VTKLoader extends Loader {
|
|
|
165
177
|
} else if ( inPointsSection ) {
|
|
166
178
|
|
|
167
179
|
// get the vertices
|
|
168
|
-
|
|
180
|
+
if ( patWord.exec( line ) === null ) {
|
|
169
181
|
|
|
170
|
-
|
|
182
|
+
const values = parseFloats( line );
|
|
171
183
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
184
|
+
for ( let k = 0; k + 2 < values.length; k += 3 ) {
|
|
185
|
+
|
|
186
|
+
positions.push( values[ k ], values[ k + 1 ], values[ k + 2 ] );
|
|
187
|
+
|
|
188
|
+
}
|
|
176
189
|
|
|
177
190
|
}
|
|
178
191
|
|
|
@@ -243,17 +256,16 @@ class VTKLoader extends Loader {
|
|
|
243
256
|
|
|
244
257
|
// Get the colors
|
|
245
258
|
|
|
246
|
-
|
|
259
|
+
if ( patWord.exec( line ) === null ) {
|
|
247
260
|
|
|
248
|
-
|
|
261
|
+
const values = parseFloats( line );
|
|
249
262
|
|
|
250
|
-
|
|
251
|
-
const g = parseFloat( result[ 2 ] );
|
|
252
|
-
const b = parseFloat( result[ 3 ] );
|
|
263
|
+
for ( let k = 0; k + 2 < values.length; k += 3 ) {
|
|
253
264
|
|
|
254
|
-
|
|
265
|
+
color.setRGB( values[ k ], values[ k + 1 ], values[ k + 2 ], SRGBColorSpace );
|
|
266
|
+
colors.push( color.r, color.g, color.b );
|
|
255
267
|
|
|
256
|
-
|
|
268
|
+
}
|
|
257
269
|
|
|
258
270
|
}
|
|
259
271
|
|
|
@@ -261,14 +273,15 @@ class VTKLoader extends Loader {
|
|
|
261
273
|
|
|
262
274
|
// Get the normal vectors
|
|
263
275
|
|
|
264
|
-
|
|
276
|
+
if ( patWord.exec( line ) === null ) {
|
|
265
277
|
|
|
266
|
-
|
|
278
|
+
const values = parseFloats( line );
|
|
267
279
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
280
|
+
for ( let k = 0; k + 2 < values.length; k += 3 ) {
|
|
281
|
+
|
|
282
|
+
normals.push( values[ k ], values[ k + 1 ], values[ k + 2 ] );
|
|
283
|
+
|
|
284
|
+
}
|
|
272
285
|
|
|
273
286
|
}
|
|
274
287
|
|
|
@@ -400,7 +413,7 @@ class VTKLoader extends Loader {
|
|
|
400
413
|
let index = start;
|
|
401
414
|
let c = buffer[ index ];
|
|
402
415
|
const s = [];
|
|
403
|
-
while ( c !== 10 ) {
|
|
416
|
+
while ( c !== 10 && index < buffer.length ) {
|
|
404
417
|
|
|
405
418
|
s.push( String.fromCharCode( c ) );
|
|
406
419
|
index ++;
|
|
@@ -846,7 +859,7 @@ class VTKLoader extends Loader {
|
|
|
846
859
|
|
|
847
860
|
for ( let i = 0; i < dataOffsets.length - 1; i ++ ) {
|
|
848
861
|
|
|
849
|
-
const data =
|
|
862
|
+
const data = unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) );
|
|
850
863
|
content = data.buffer;
|
|
851
864
|
|
|
852
865
|
if ( ele.attributes.type === 'Float32' ) {
|