+ A continuous line that connects back to the start.
+
+ This is nearly the same as [page:Line]; the only difference is that it is rendered using
+ [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawElements gl.LINE_LOOP]
+ instead of [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawElements gl.LINE_STRIP],
+ which draws a straight line to the next vertex, and connects the last vertex back to the first.
+
+ [page:Geometry geometry] — List of vertices representing points on the line loop.
+ [page:Material material] — Material for the line. Default is [page:LineBasicMaterial LineBasicMaterial].
+
+
+
If no material is supplied, a randomized line material will be created and assigned to the object.
+
+
+
Properties
+
See the base [page:Line] class for common properties.
+
+
[property:Boolean isLineLoop]
+
+ Used to check whether this or derived classes are line loops. Default is *true*.
+
+ You should not change this, as it used internally for optimisation.
+
+
+
+
Methods
+
See the base [page:Line] class for common methods.
+
+
Source
+
+ [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+
+
diff --git a/docs/list.js b/docs/list.js
index 8d7680de5a2c3cffc470449e0243aadcae0aeb98..3fa4ff941e1ecb2b6eb02216d2a1df8429c6e5cd 100644
--- a/docs/list.js
+++ b/docs/list.js
@@ -286,6 +286,7 @@ var list = {
[ "Group", "api/objects/Group" ],
[ "LensFlare", "api/objects/LensFlare" ],
[ "Line", "api/objects/Line" ],
+ [ "LineLoop", "api/objects/LineLoop" ],
[ "LineSegments", "api/objects/LineSegments" ],
[ "LOD", "api/objects/LOD" ],
[ "Mesh", "api/objects/Mesh" ],
diff --git a/examples/js/loaders/GLTFLoader.js b/examples/js/loaders/GLTFLoader.js
index 10fd5cd486c672497ca52acc46c54d37ef9518a3..7d9d162e6fc99114a445ce0675cd2fa89937898a 100644
--- a/examples/js/loaders/GLTFLoader.js
+++ b/examples/js/loaders/GLTFLoader.js
@@ -1940,6 +1940,10 @@ THREE.GLTFLoader = ( function () {
child = new THREE.LineSegments( originalGeometry, material );
break;
+ case 'LineLoop':
+ child = new THREE.LineLoop( originalGeometry, material );
+ break;
+
case 'Line':
child = new THREE.Line( originalGeometry, material );
break;
diff --git a/src/Three.js b/src/Three.js
index c460001ce9880451201c6e48b5bd802910080e41..c3f572e76ee4c88a397880574d4dfbcfc14d5fa6 100644
--- a/src/Three.js
+++ b/src/Three.js
@@ -19,6 +19,7 @@ export { Skeleton } from './objects/Skeleton.js';
export { Bone } from './objects/Bone.js';
export { Mesh } from './objects/Mesh.js';
export { LineSegments } from './objects/LineSegments.js';
+export { LineLoop } from './objects/LineLoop.js';
export { Line } from './objects/Line.js';
export { Points } from './objects/Points.js';
export { Group } from './objects/Group.js';
diff --git a/src/loaders/ObjectLoader.js b/src/loaders/ObjectLoader.js
index e89e0a048919a5f0008c8684af5497897dcd3cb1..8f49850c3850e98aef5e74970d014bb813e9e6ff 100644
--- a/src/loaders/ObjectLoader.js
+++ b/src/loaders/ObjectLoader.js
@@ -666,6 +666,12 @@ Object.assign( ObjectLoader.prototype, {
break;
+ case 'LineLoop':
+
+ object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );
+
+ break;
+
case 'LineSegments':
object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );
diff --git a/src/objects/LineLoop.js b/src/objects/LineLoop.js
new file mode 100644
index 0000000000000000000000000000000000000000..5ff3711f602d5469182e413e5a6242ff24eb61df
--- /dev/null
+++ b/src/objects/LineLoop.js
@@ -0,0 +1,24 @@
+import { Line } from './Line';
+
+/**
+ * @author mgreter / http://github.com/mgreter
+ */
+
+function LineLoop( geometry, material ) {
+
+ Line.call( this, geometry, material );
+
+ this.type = 'LineLoop';
+
+}
+
+LineLoop.prototype = Object.assign( Object.create( Line.prototype ), {
+
+ constructor: LineLoop,
+
+ isLineLoop: true,
+
+} );
+
+
+export { LineLoop };
diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js
index 4b38db7525e7d059801c0a2c512b07af8ffcc547..d080306180a43569c04182909d76b780bdee3f7e 100644
--- a/src/renderers/WebGLRenderer.js
+++ b/src/renderers/WebGLRenderer.js
@@ -855,6 +855,10 @@ function WebGLRenderer( parameters ) {
renderer.setMode( _gl.LINES );
+ } else if ( object.isLineLoop ) {
+
+ renderer.setMode( _gl.LINE_LOOP );
+
} else {
renderer.setMode( _gl.LINE_STRIP );