|
@@ -58,7 +58,6 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
|
|
import { Loader } from './Loader.js';
|
|
import { Loader } from './Loader.js';
|
|
import { FileLoader } from './FileLoader.js';
|
|
import { FileLoader } from './FileLoader.js';
|
|
import * as Geometries from '../geometries/Geometries.js';
|
|
import * as Geometries from '../geometries/Geometries.js';
|
|
-import * as Curves from '../extras/curves/Curves.js';
|
|
|
|
import { getTypedArray } from '../utils.js';
|
|
import { getTypedArray } from '../utils.js';
|
|
|
|
|
|
class ObjectLoader extends Loader {
|
|
class ObjectLoader extends Loader {
|
|
@@ -260,7 +259,6 @@ class ObjectLoader extends Loader {
|
|
parseGeometries( json, shapes ) {
|
|
parseGeometries( json, shapes ) {
|
|
|
|
|
|
const geometries = {};
|
|
const geometries = {};
|
|
- let geometryShapes;
|
|
|
|
|
|
|
|
if ( json !== undefined ) {
|
|
if ( json !== undefined ) {
|
|
|
|
|
|
@@ -273,235 +271,6 @@ class ObjectLoader extends Loader {
|
|
|
|
|
|
switch ( data.type ) {
|
|
switch ( data.type ) {
|
|
|
|
|
|
- case 'PlaneGeometry':
|
|
|
|
- case 'PlaneBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.width,
|
|
|
|
- data.height,
|
|
|
|
- data.widthSegments,
|
|
|
|
- data.heightSegments
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'BoxGeometry':
|
|
|
|
- case 'BoxBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.width,
|
|
|
|
- data.height,
|
|
|
|
- data.depth,
|
|
|
|
- data.widthSegments,
|
|
|
|
- data.heightSegments,
|
|
|
|
- data.depthSegments
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'CircleGeometry':
|
|
|
|
- case 'CircleBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.segments,
|
|
|
|
- data.thetaStart,
|
|
|
|
- data.thetaLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'CylinderGeometry':
|
|
|
|
- case 'CylinderBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radiusTop,
|
|
|
|
- data.radiusBottom,
|
|
|
|
- data.height,
|
|
|
|
- data.radialSegments,
|
|
|
|
- data.heightSegments,
|
|
|
|
- data.openEnded,
|
|
|
|
- data.thetaStart,
|
|
|
|
- data.thetaLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'ConeGeometry':
|
|
|
|
- case 'ConeBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.height,
|
|
|
|
- data.radialSegments,
|
|
|
|
- data.heightSegments,
|
|
|
|
- data.openEnded,
|
|
|
|
- data.thetaStart,
|
|
|
|
- data.thetaLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'SphereGeometry':
|
|
|
|
- case 'SphereBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.widthSegments,
|
|
|
|
- data.heightSegments,
|
|
|
|
- data.phiStart,
|
|
|
|
- data.phiLength,
|
|
|
|
- data.thetaStart,
|
|
|
|
- data.thetaLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'DodecahedronGeometry':
|
|
|
|
- case 'DodecahedronBufferGeometry':
|
|
|
|
- case 'IcosahedronGeometry':
|
|
|
|
- case 'IcosahedronBufferGeometry':
|
|
|
|
- case 'OctahedronGeometry':
|
|
|
|
- case 'OctahedronBufferGeometry':
|
|
|
|
- case 'TetrahedronGeometry':
|
|
|
|
- case 'TetrahedronBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.detail
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'RingGeometry':
|
|
|
|
- case 'RingBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.innerRadius,
|
|
|
|
- data.outerRadius,
|
|
|
|
- data.thetaSegments,
|
|
|
|
- data.phiSegments,
|
|
|
|
- data.thetaStart,
|
|
|
|
- data.thetaLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'TorusGeometry':
|
|
|
|
- case 'TorusBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.tube,
|
|
|
|
- data.radialSegments,
|
|
|
|
- data.tubularSegments,
|
|
|
|
- data.arc
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'TorusKnotGeometry':
|
|
|
|
- case 'TorusKnotBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.radius,
|
|
|
|
- data.tube,
|
|
|
|
- data.tubularSegments,
|
|
|
|
- data.radialSegments,
|
|
|
|
- data.p,
|
|
|
|
- data.q
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'TubeGeometry':
|
|
|
|
- case 'TubeBufferGeometry':
|
|
|
|
-
|
|
|
|
- // This only works for built-in curves (e.g. CatmullRomCurve3).
|
|
|
|
- // User defined curves or instances of CurvePath will not be deserialized.
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- new Curves[ data.path.type ]().fromJSON( data.path ),
|
|
|
|
- data.tubularSegments,
|
|
|
|
- data.radius,
|
|
|
|
- data.radialSegments,
|
|
|
|
- data.closed
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'LatheGeometry':
|
|
|
|
- case 'LatheBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.points,
|
|
|
|
- data.segments,
|
|
|
|
- data.phiStart,
|
|
|
|
- data.phiLength
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'PolyhedronGeometry':
|
|
|
|
- case 'PolyhedronBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- data.vertices,
|
|
|
|
- data.indices,
|
|
|
|
- data.radius,
|
|
|
|
- data.details
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'ShapeGeometry':
|
|
|
|
- case 'ShapeBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometryShapes = [];
|
|
|
|
-
|
|
|
|
- for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {
|
|
|
|
-
|
|
|
|
- const shape = shapes[ data.shapes[ j ] ];
|
|
|
|
-
|
|
|
|
- geometryShapes.push( shape );
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- geometryShapes,
|
|
|
|
- data.curveSegments
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- case 'ExtrudeGeometry':
|
|
|
|
- case 'ExtrudeBufferGeometry':
|
|
|
|
-
|
|
|
|
- geometryShapes = [];
|
|
|
|
-
|
|
|
|
- for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {
|
|
|
|
-
|
|
|
|
- const shape = shapes[ data.shapes[ j ] ];
|
|
|
|
-
|
|
|
|
- geometryShapes.push( shape );
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const extrudePath = data.options.extrudePath;
|
|
|
|
-
|
|
|
|
- if ( extrudePath !== undefined ) {
|
|
|
|
-
|
|
|
|
- data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- geometry = new Geometries[ data.type ](
|
|
|
|
- geometryShapes,
|
|
|
|
- data.options
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
case 'BufferGeometry':
|
|
case 'BufferGeometry':
|
|
case 'InstancedBufferGeometry':
|
|
case 'InstancedBufferGeometry':
|
|
|
|
|
|
@@ -511,15 +280,21 @@ class ObjectLoader extends Loader {
|
|
|
|
|
|
case 'Geometry':
|
|
case 'Geometry':
|
|
|
|
|
|
- console.error( 'THREE.ObjectLoader: Loading "Geometry" is not supported anymore.' );
|
|
|
|
|
|
+ console.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );
|
|
|
|
|
|
break;
|
|
break;
|
|
|
|
|
|
default:
|
|
default:
|
|
|
|
|
|
- console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' );
|
|
|
|
|
|
+ if ( data.type in Geometries ) {
|
|
|
|
+
|
|
|
|
+ geometry = Geometries[ data.type ].fromJSON( data, shapes );
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
|
|
- continue;
|
|
|
|
|
|
+ console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|