diff --git a/docs/api/objects/Line.html b/docs/api/objects/Line.html index b70c86f74d14db6b11c8f57f2f48cdf6b2632d9d..1791110801ecfcbb557a916a1386534164fb2ff0 100644 --- a/docs/api/objects/Line.html +++ b/docs/api/objects/Line.html @@ -11,12 +11,11 @@
var material = new THREE.LineBasicMaterial({
color: 0x0000ff
});
@@ -35,18 +34,15 @@
Constructor
-
- [name]( [page:Geometry geometry], [page:Material material], [page:Integer type] )
+ [name]( [page:Geometry geometry], [page:Material material] )
geometry — Vertices representing the line segment(s).
material — Material for the line. Default is [page:LineBasicMaterial LineBasicMaterial].
- type — Connection type between vertices. Default is THREE.LineStrip.
If no material is supplied, a randomized line material will be created and assigned to the object.
- Also, if no type is supplied, the default (THREE.LineStrip) will be used).
Properties
@@ -60,13 +56,6 @@
Material for the line.
- [property:Integer type]
-
- Possible values: THREE.LineStrip or THREE.LinePieces. THREE.LineStrip will draw a series of segments connecting each point (first connected to the second, the second connected to the third, and so on and so forth); and THREE.LinePieces will draw a series of pairs of segments (first connected to the second, the third connected to the fourth, and so on and so forth).
-
-
- In OpenGL terms, LineStrip is the classic GL_LINE_STRIP and LinePieces is the equivalent to GL_LINES.
-
Methods
diff --git a/docs/api/objects/SegmentsLine.html b/docs/api/objects/SegmentsLine.html
new file mode 100644
index 0000000000000000000000000000000000000000..ded538cff9aaee40fd3f19182e13c8c763f834ac
--- /dev/null
+++ b/docs/api/objects/SegmentsLine.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+ [page:Line] →
+
+ [name]
+
+ A series of lines.
+
+
+ Constructor
+
+ [name]( [page:Geometry geometry], [page:Material material] )
+
+
+ geometry — Vertices representing the line segment(s).
+ 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
+
+ [property:Geometry geometry]
+
+ Vertices representing the line segment(s).
+
+
+ [property:Material material]
+
+ Material for the line.
+
+
+
+ Methods
+
+ [method:Array raycast]([page:Raycaster raycaster], [page:Array intersects])
+
+ Get intersections between a casted ray and this Line. [page:Raycaster.intersectObject] will call this method.
+
+
+ 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 7a71ca4fe447e73a1947bbbab8bc7a47abbe57ab..0db0055a7fc1440bb1aff1f30be9debab0eaab80 100644
--- a/docs/list.js
+++ b/docs/list.js
@@ -110,6 +110,7 @@ var list = {
[ "Bone", "api/objects/Bone" ],
[ "LensFlare", "api/objects/LensFlare" ],
[ "Line", "api/objects/Line" ],
+ [ "SegmentsLine", "api/objects/SegmentsLine" ],
[ "LOD", "api/objects/LOD" ],
[ "Mesh", "api/objects/Mesh" ],
[ "MorphAnimMesh", "api/objects/MorphAnimMesh" ],
diff --git a/examples/canvas_camera_orthographic.html b/examples/canvas_camera_orthographic.html
index de2ef47793f64ba54f7da072f14e74bea6dd727f..75605457116071f90bc35037a49bb311c31f3708 100644
--- a/examples/canvas_camera_orthographic.html
+++ b/examples/canvas_camera_orthographic.html
@@ -68,7 +68,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Cubes
diff --git a/examples/canvas_camera_orthographic2.html b/examples/canvas_camera_orthographic2.html
index f15050dc64ec82cdc109f5a4ec4a960d983cb9f8..b7cb73b57de2f8965db17bc8d10cfe45a703e942 100644
--- a/examples/canvas_camera_orthographic2.html
+++ b/examples/canvas_camera_orthographic2.html
@@ -137,7 +137,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Cubes
diff --git a/examples/canvas_interactive_voxelpainter.html b/examples/canvas_interactive_voxelpainter.html
index 20e61979310217fa0de96a464378858ff0a9e42c..a54565e279340519915d95af8aca35cc376804f5 100644
--- a/examples/canvas_interactive_voxelpainter.html
+++ b/examples/canvas_interactive_voxelpainter.html
@@ -73,7 +73,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
//
diff --git a/examples/canvas_lines_dashed.html b/examples/canvas_lines_dashed.html
index 7c0431996dd7231bce7f2df2f5d28a3f98eecf05..74ad644559736a38a6490c66ee271a50e724c01a 100644
--- a/examples/canvas_lines_dashed.html
+++ b/examples/canvas_lines_dashed.html
@@ -88,12 +88,12 @@
geometryCube.computeLineDistances();
geometrySpline.computeLineDistances();
- var object = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ), THREE.LineStrip );
+ var object = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ) );
objects.push( object );
scene.add( object );
- var object = new THREE.Line( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ), THREE.LinePieces );
+ var object = new THREE.SegmentsLine( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ) );
objects.push( object );
scene.add( object );
diff --git a/examples/canvas_materials.html b/examples/canvas_materials.html
index 8c8006f229fe51c272861eb89f1b814c2867aa44..d43d3dd1497d12f078ac59445649e543ac4ff88d 100644
--- a/examples/canvas_materials.html
+++ b/examples/canvas_materials.html
@@ -60,7 +60,7 @@
var material = new THREE.LineBasicMaterial( { color: 0xffffff, opacity: 0.2 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Spheres
diff --git a/examples/canvas_performance.html b/examples/canvas_performance.html
index 32600676f55b8a9c96e60ded2b4b225d9748388b..0b97c81285aacd5ef4e6d32b68da4102665ebd1d 100644
--- a/examples/canvas_performance.html
+++ b/examples/canvas_performance.html
@@ -63,7 +63,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.5 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Spheres
diff --git a/examples/canvas_sandbox.html b/examples/canvas_sandbox.html
index a3aa97c776a4791b7f089e2c44afec55b69b6387..513c1eaa8f3e183baa3ca353da74896aa418fb68 100644
--- a/examples/canvas_sandbox.html
+++ b/examples/canvas_sandbox.html
@@ -85,7 +85,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.5 } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Spheres
diff --git a/examples/js/renderers/Projector.js b/examples/js/renderers/Projector.js
index 53c7e4e4977583a9fcb47d5eff92d9d8fa839d9a..8260ed0e7275fa6a7a90c79869fd2532f6adf6cb 100644
--- a/examples/js/renderers/Projector.js
+++ b/examples/js/renderers/Projector.js
@@ -468,7 +468,7 @@ THREE.Projector = function () {
_normalMatrix.getNormalMatrix( _modelMatrix );
var material = object.material;
-
+
var isFaceMaterial = material instanceof THREE.MeshFaceMaterial;
var objectMaterials = isFaceMaterial === true ? object.material : null;
@@ -616,7 +616,7 @@ THREE.Projector = function () {
} else {
- var step = object.mode === THREE.LinePieces ? 2 : 1;
+ var step = object instanceof THREE.SegmentsLine ? 2 : 1;
for ( var i = 0, l = ( positions.length / 3 ) - 1; i < l; i += step ) {
@@ -639,8 +639,7 @@ THREE.Projector = function () {
v1 = getNextVertexInPool();
v1.positionScreen.copy( vertices[ 0 ] ).applyMatrix4( _modelViewProjectionMatrix );
- // Handle LineStrip and LinePieces
- var step = object.mode === THREE.LinePieces ? 2 : 1;
+ var step = object instanceof THREE.SegmentsLine ? 2 : 1;
for ( var v = 1, vl = vertices.length; v < vl; v ++ ) {
diff --git a/examples/webgl_buffergeometry_drawcalls.html b/examples/webgl_buffergeometry_drawcalls.html
index f667dc98af890449e093295cfb3b0fd30298a6f3..ef026c12212e6710ed72a7a36d7c2216d5e90947 100644
--- a/examples/webgl_buffergeometry_drawcalls.html
+++ b/examples/webgl_buffergeometry_drawcalls.html
@@ -177,7 +177,7 @@
transparent: true
} );
- linesMesh = new THREE.Line( geometry, material, THREE.LinePieces );
+ linesMesh = new THREE.SegmentsLine( geometry, material );
group.add( linesMesh );
//
diff --git a/examples/webgl_buffergeometry_lines_indexed.html b/examples/webgl_buffergeometry_lines_indexed.html
index 24160dfd11f6f748cfd1110e8aef77097a260d4d..5c7cbc635634bcec3d04ddaff62694974b4ab645 100644
--- a/examples/webgl_buffergeometry_lines_indexed.html
+++ b/examples/webgl_buffergeometry_lines_indexed.html
@@ -187,7 +187,7 @@
geometry.addAttribute( 'color', new THREE.BufferAttribute( new Float32Array( colors ), 3 ) );
geometry.computeBoundingSphere();
- mesh = new THREE.Line( geometry, material, THREE.LinePieces );
+ mesh = new THREE.SegmentsLine( geometry, material );
mesh.position.x -= 1200;
mesh.position.y -= 1200;
diff --git a/examples/webgl_camera.html b/examples/webgl_camera.html
index 14362ee534472bccdb7a29f12f8a4d730ed65022..923c6a12527c435580b5e84e8d91029545ec3bab 100644
--- a/examples/webgl_camera.html
+++ b/examples/webgl_camera.html
@@ -102,25 +102,22 @@
//
- mesh = new THREE.Line(
+ mesh = new THREE.SegmentsLine(
new THREE.WireframeGeometry( new THREE.SphereBufferGeometry( 100, 16, 8 ) ),
- new THREE.LineBasicMaterial( { color: 0xffffff } ),
- THREE.LinePieces
+ new THREE.LineBasicMaterial( { color: 0xffffff } )
);
scene.add( mesh );
- var mesh2 = new THREE.Line(
+ var mesh2 = new THREE.SegmentsLine(
new THREE.WireframeGeometry( new THREE.SphereBufferGeometry( 50, 16, 8 ) ),
- new THREE.LineBasicMaterial( { color: 0x00ff00 } ),
- THREE.LinePieces
+ new THREE.LineBasicMaterial( { color: 0x00ff00 } )
);
mesh2.position.y = 150;
mesh.add( mesh2 );
- var mesh3 = new THREE.Line(
+ var mesh3 = new THREE.SegmentsLine(
new THREE.WireframeGeometry( new THREE.SphereBufferGeometry( 5, 16, 8 ) ),
- new THREE.LineBasicMaterial( { color: 0x0000ff } ),
- THREE.LinePieces
+ new THREE.LineBasicMaterial( { color: 0x0000ff } )
);
mesh3.position.z = 150;
cameraRig.add( mesh3 );
diff --git a/examples/webgl_custom_attributes_lines.html b/examples/webgl_custom_attributes_lines.html
index 69ff10e9bec4028785a95003453e5160ff125c3f..49a2b5424034ae613e050f598e64ad2084be9119 100644
--- a/examples/webgl_custom_attributes_lines.html
+++ b/examples/webgl_custom_attributes_lines.html
@@ -165,7 +165,7 @@
geometry.center();
- object = new THREE.Line( geometry, shaderMaterial, THREE.LineStrip );
+ object = new THREE.Line( geometry, shaderMaterial );
var vertices = object.geometry.vertices;
diff --git a/examples/webgl_helpers.html b/examples/webgl_helpers.html
index 58742ae5e326abfb9d75f245e9871958e8942d99..a99d9620d826f119fd6a01df27400586e4f48291 100644
--- a/examples/webgl_helpers.html
+++ b/examples/webgl_helpers.html
@@ -53,20 +53,33 @@
var material = new THREE.MeshLambertMaterial();
- var mesh = new THREE.Mesh( geometry, material );
- mesh.scale.multiplyScalar( 50 );
- scene.add( mesh );
-
- scene.add( new THREE.FaceNormalsHelper( mesh, 10 ) );
- scene.add( new THREE.VertexNormalsHelper( mesh, 10 ) );
+ var group = new THREE.Group();
+ group.scale.multiplyScalar( 50 );
+ scene.add( group );
- var helper = new THREE.WireframeHelper( mesh );
- helper.material.depthTest = false;
- helper.material.opacity = 0.25;
- helper.material.transparent = true;
- scene.add( helper );
-
- scene.add( new THREE.BoxHelper( mesh ) );
+ var mesh = new THREE.Mesh( geometry, material );
+ group.add( mesh );
+
+ group.add( new THREE.FaceNormalsHelper( mesh, 0.1 ) );
+ group.add( new THREE.VertexNormalsHelper( mesh, 0.1 ) );
+
+ group.add( new THREE.BoxHelper( mesh ) );
+
+ var wireframe = new THREE.WireframeGeometry( geometry );
+ var line = new THREE.SegmentsLine( wireframe );
+ line.material.depthTest = false;
+ line.material.opacity = 0.25;
+ line.material.transparent = true;
+ line.position.x = 4;
+ group.add( line );
+
+ var edges = new THREE.EdgesGeometry( geometry );
+ var line = new THREE.SegmentsLine( edges );
+ line.material.depthTest = false;
+ line.material.opacity = 0.25;
+ line.material.transparent = true;
+ line.position.x = -4;
+ group.add( line );
} );
diff --git a/examples/webgl_interactive_lines.html b/examples/webgl_interactive_lines.html
index c28f6b2bcedbc7dd9706de7490bd0271af12e5c5..9879bac754af69e90f14857904ff3b675ec60919 100644
--- a/examples/webgl_interactive_lines.html
+++ b/examples/webgl_interactive_lines.html
@@ -89,8 +89,17 @@
for ( var i = 0; i < 50; i ++ ) {
- var type = Math.random() > 0.5 ? THREE.LineStrip : THREE.LinePieces;
- var object = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: Math.random() * 0xffffff } ), type );
+ var object;
+
+ if ( Math.random() > 0.5 ) {
+
+ object = new THREE.Line( geometry );
+
+ } else {
+
+ object = new THREE.SegmentsLine( geometry );
+
+ }
object.position.x = Math.random() * 400 - 200;
object.position.y = Math.random() * 400 - 200;
diff --git a/examples/webgl_interactive_voxelpainter.html b/examples/webgl_interactive_voxelpainter.html
index d0e9bda9151761443af5dc43e39dd1cce42fc492..64c4676f8e96b0b68578477bd568b26a15f20d8e 100644
--- a/examples/webgl_interactive_voxelpainter.html
+++ b/examples/webgl_interactive_voxelpainter.html
@@ -87,7 +87,7 @@
var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2, transparent: true } );
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
//
diff --git a/examples/webgl_lines_dashed.html b/examples/webgl_lines_dashed.html
index 1355fbd28341c5a1af79348ed4f8406657d56df0..8e9815186ac7c8fa44a1447ee7b8cd0ff5bb2b1a 100644
--- a/examples/webgl_lines_dashed.html
+++ b/examples/webgl_lines_dashed.html
@@ -85,12 +85,12 @@
geometryCube.computeLineDistances();
geometrySpline.computeLineDistances();
- var object = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ), THREE.LineStrip );
+ var object = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ) );
objects.push( object );
scene.add( object );
- var object = new THREE.Line( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ), THREE.LinePieces );
+ var object = new THREE.SegmentsLine( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ) );
objects.push( object );
scene.add( object );
diff --git a/examples/webgl_lines_sphere.html b/examples/webgl_lines_sphere.html
index 75d4643b296d12beae297dbe832fdb54c7b050d6..fda71a2173d6cc42c2d0569cae2b6046a1bffcf5 100644
--- a/examples/webgl_lines_sphere.html
+++ b/examples/webgl_lines_sphere.html
@@ -91,7 +91,7 @@
material = new THREE.LineBasicMaterial( { color: p[ 1 ], opacity: p[ 2 ], linewidth: p[ 3 ] } );
- line = new THREE.Line( geometry, material, THREE.LinePieces );
+ line = new THREE.SegmentsLine( geometry, material );
line.scale.x = line.scale.y = line.scale.z = p[ 0 ];
line.originalScale = p[ 0 ];
line.rotation.y = Math.random() * Math.PI;
diff --git a/examples/webgl_loader_collada.html b/examples/webgl_loader_collada.html
index 52b1c9e24883f415daa49cb5b4f6f29b6f1bdf86..e1c67100ca91610079317ae32f33fc94072ddd25 100644
--- a/examples/webgl_loader_collada.html
+++ b/examples/webgl_loader_collada.html
@@ -101,7 +101,7 @@
}
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Add the COLLADA
diff --git a/examples/webgl_loader_collada_keyframe.html b/examples/webgl_loader_collada_keyframe.html
index b865e616bcd7deb4d46244e7726de61aca9ef21d..38335a9ca28a326a7a46337f8148452c397666e4 100644
--- a/examples/webgl_loader_collada_keyframe.html
+++ b/examples/webgl_loader_collada_keyframe.html
@@ -113,7 +113,7 @@
}
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Add the COLLADA
diff --git a/examples/webgl_loader_collada_kinematics.html b/examples/webgl_loader_collada_kinematics.html
index e8e9ba0d962cfcd1450934689734b215b3958f00..890580462faa6c4d6ba2dd6d898554fb13c73506 100644
--- a/examples/webgl_loader_collada_kinematics.html
+++ b/examples/webgl_loader_collada_kinematics.html
@@ -108,7 +108,7 @@
}
- var line = new THREE.Line( geometry, material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, material );
scene.add( line );
// Add the COLLADA
diff --git a/examples/webgl_materials.html b/examples/webgl_materials.html
index 38c05dffa4d608f54f2357e61f1349d1c8537d0b..037832050a08716271c20f8ba56554d370eb01c6 100644
--- a/examples/webgl_materials.html
+++ b/examples/webgl_materials.html
@@ -60,7 +60,7 @@
}
- var line = new THREE.Line( geometry, line_material, THREE.LinePieces );
+ var line = new THREE.SegmentsLine( geometry, line_material );
scene.add( line );
// Materials
diff --git a/src/extras/helpers/AxisHelper.js b/src/extras/helpers/AxisHelper.js
index 2e20adae391e81b97ff51d7e0ab7972140d68bd0..56411efb1de4e787e097c80efad39c33f5f73b49 100644
--- a/src/extras/helpers/AxisHelper.js
+++ b/src/extras/helpers/AxisHelper.js
@@ -25,9 +25,9 @@ THREE.AxisHelper = function ( size ) {
var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
- THREE.Line.call( this, geometry, material, THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, material );
};
-THREE.AxisHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.AxisHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.AxisHelper.prototype.constructor = THREE.AxisHelper;
diff --git a/src/extras/helpers/BoxHelper.js b/src/extras/helpers/BoxHelper.js
index 3044a7ade54b51c0e904e222ae77e0a997a05d83..3c7e9f4b3dd4d573e97d36f23af1064acf3f0fd2 100644
--- a/src/extras/helpers/BoxHelper.js
+++ b/src/extras/helpers/BoxHelper.js
@@ -7,7 +7,7 @@ THREE.BoxHelper = function ( object ) {
var geometry = new THREE.BufferGeometry();
geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( 72 ), 3 ) );
- THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: 0xffff00 } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, new THREE.LineBasicMaterial( { color: 0xffff00 } ) );
if ( object !== undefined ) {
@@ -17,7 +17,7 @@ THREE.BoxHelper = function ( object ) {
};
-THREE.BoxHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.BoxHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.BoxHelper.prototype.constructor = THREE.BoxHelper;
THREE.BoxHelper.prototype.update = function ( object ) {
diff --git a/src/extras/helpers/CameraHelper.js b/src/extras/helpers/CameraHelper.js
index 6341be0cf8764bd79f90b04f05b488eca6b17d1e..fc97c7632dd4a00b5060f8890da4518933747746 100644
--- a/src/extras/helpers/CameraHelper.js
+++ b/src/extras/helpers/CameraHelper.js
@@ -91,7 +91,7 @@ THREE.CameraHelper = function ( camera ) {
}
- THREE.Line.call( this, geometry, material, THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, material );
this.camera = camera;
this.matrix = camera.matrixWorld;
@@ -103,13 +103,13 @@ THREE.CameraHelper = function ( camera ) {
};
-THREE.CameraHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.CameraHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.CameraHelper.prototype.constructor = THREE.CameraHelper;
THREE.CameraHelper.prototype.update = function () {
var geometry, pointMap;
-
+
var vector = new THREE.Vector3();
var camera = new THREE.Camera();
diff --git a/src/extras/helpers/EdgesHelper.js b/src/extras/helpers/EdgesHelper.js
index 91d45ca626af63e1325f37f8a8172a3f1aad643c..a54ecac1dec234c51dd5353063335f3be062c5a9 100644
--- a/src/extras/helpers/EdgesHelper.js
+++ b/src/extras/helpers/EdgesHelper.js
@@ -12,12 +12,12 @@ THREE.EdgesHelper = function ( object, hex, thresholdAngle ) {
var color = ( hex !== undefined ) ? hex : 0xffffff;
- THREE.Line.call( this, new THREE.EdgesGeometry( object.geometry, thresholdAngle ), new THREE.LineBasicMaterial( { color: color } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, new THREE.EdgesGeometry( object.geometry, thresholdAngle ), new THREE.LineBasicMaterial( { color: color } ) );
this.matrix = object.matrixWorld;
this.matrixAutoUpdate = false;
};
-THREE.EdgesHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.EdgesHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.EdgesHelper.prototype.constructor = THREE.EdgesHelper;
diff --git a/src/extras/helpers/FaceNormalsHelper.js b/src/extras/helpers/FaceNormalsHelper.js
index 3c8339989c14e2048c442b2e352aad9f406e9c09..bc689776254daf4b0a343db84efbcfe3b48e0b7e 100644
--- a/src/extras/helpers/FaceNormalsHelper.js
+++ b/src/extras/helpers/FaceNormalsHelper.js
@@ -23,7 +23,7 @@ THREE.FaceNormalsHelper = function ( object, size, hex, linewidth ) {
}
- THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ) );
this.matrixAutoUpdate = false;
@@ -33,7 +33,7 @@ THREE.FaceNormalsHelper = function ( object, size, hex, linewidth ) {
};
-THREE.FaceNormalsHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.FaceNormalsHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.FaceNormalsHelper.prototype.constructor = THREE.FaceNormalsHelper;
THREE.FaceNormalsHelper.prototype.update = function () {
@@ -72,4 +72,3 @@ THREE.FaceNormalsHelper.prototype.update = function () {
return this;
};
-
diff --git a/src/extras/helpers/GridHelper.js b/src/extras/helpers/GridHelper.js
index e4a63fba67f2c848a18e51179c71f98c9d9cc7fb..45abf7e018613b3f5ea69f514285cf9c100c0a7f 100644
--- a/src/extras/helpers/GridHelper.js
+++ b/src/extras/helpers/GridHelper.js
@@ -23,11 +23,11 @@ THREE.GridHelper = function ( size, step ) {
}
- THREE.Line.call( this, geometry, material, THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, material );
};
-THREE.GridHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.GridHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.GridHelper.prototype.constructor = THREE.GridHelper;
THREE.GridHelper.prototype.setColors = function( colorCenterLine, colorGrid ) {
diff --git a/src/extras/helpers/SkeletonHelper.js b/src/extras/helpers/SkeletonHelper.js
index 8e08e8496aeb22d67f7010f8c3781ac302ae2028..b37e1f02a076d4f55be885cdbfc23b6edb8d5a72 100644
--- a/src/extras/helpers/SkeletonHelper.js
+++ b/src/extras/helpers/SkeletonHelper.js
@@ -28,7 +28,7 @@ THREE.SkeletonHelper = function ( object ) {
var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors, depthTest: false, depthWrite: false, transparent: true } );
- THREE.Line.call( this, geometry, material, THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, material );
this.root = object;
@@ -40,7 +40,7 @@ THREE.SkeletonHelper = function ( object ) {
};
-THREE.SkeletonHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.SkeletonHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.SkeletonHelper.prototype.constructor = THREE.SkeletonHelper;
THREE.SkeletonHelper.prototype.getBoneList = function( object ) {
diff --git a/src/extras/helpers/VertexNormalsHelper.js b/src/extras/helpers/VertexNormalsHelper.js
index 64481b870fa718dc3ce4e5fa2d89c28322dd4efa..668e5df4f15a143dfec382b8adb2b191c8286e7c 100644
--- a/src/extras/helpers/VertexNormalsHelper.js
+++ b/src/extras/helpers/VertexNormalsHelper.js
@@ -29,7 +29,7 @@ THREE.VertexNormalsHelper = function ( object, size, hex, linewidth ) {
}
- THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ) );
this.matrixAutoUpdate = false;
@@ -39,7 +39,7 @@ THREE.VertexNormalsHelper = function ( object, size, hex, linewidth ) {
};
-THREE.VertexNormalsHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.VertexNormalsHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.VertexNormalsHelper.prototype.constructor = THREE.VertexNormalsHelper;
THREE.VertexNormalsHelper.prototype.update = ( function ( object ) {
diff --git a/src/extras/helpers/VertexTangentsHelper.js b/src/extras/helpers/VertexTangentsHelper.js
index 4852f9c457299ceeaa5db61a34e517711e80bff2..88b668834b76cf9fe04cac29aeb6161c9feb2df3 100644
--- a/src/extras/helpers/VertexTangentsHelper.js
+++ b/src/extras/helpers/VertexTangentsHelper.js
@@ -30,7 +30,7 @@ THREE.VertexTangentsHelper = function ( object, size, hex, linewidth ) {
}
- THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ) );
this.matrixAutoUpdate = false;
@@ -38,7 +38,7 @@ THREE.VertexTangentsHelper = function ( object, size, hex, linewidth ) {
};
-THREE.VertexTangentsHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.VertexTangentsHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.VertexTangentsHelper.prototype.constructor = THREE.VertexTangentsHelper;
THREE.VertexTangentsHelper.prototype.update = ( function ( object ) {
diff --git a/src/extras/helpers/WireframeHelper.js b/src/extras/helpers/WireframeHelper.js
index ccc12c0264813b326dd46204a2b11832e480f006..a462f61df77c756239ae919d959e4aa7d9903310 100644
--- a/src/extras/helpers/WireframeHelper.js
+++ b/src/extras/helpers/WireframeHelper.js
@@ -6,12 +6,12 @@ THREE.WireframeHelper = function ( object, hex ) {
var color = ( hex !== undefined ) ? hex : 0xffffff;
- THREE.Line.call( this, new THREE.WireframeGeometry( object.geometry ), new THREE.LineBasicMaterial( { color: color } ), THREE.LinePieces );
+ THREE.SegmentsLine.call( this, new THREE.WireframeGeometry( object.geometry ), new THREE.LineBasicMaterial( { color: color } ) );
this.matrix = object.matrixWorld;
this.matrixAutoUpdate = false;
};
-THREE.WireframeHelper.prototype = Object.create( THREE.Line.prototype );
+THREE.WireframeHelper.prototype = Object.create( THREE.SegmentsLine.prototype );
THREE.WireframeHelper.prototype.constructor = THREE.WireframeHelper;
diff --git a/src/objects/Line.js b/src/objects/Line.js
index 1adec5ba08ebc29741a233536b0ab251b4a53683..32a6bfc3891f3914dbc89d2166090aac4a277907 100644
--- a/src/objects/Line.js
+++ b/src/objects/Line.js
@@ -4,6 +4,12 @@
THREE.Line = function ( geometry, material, mode ) {
+ if ( mode === 1 ) {
+
+ THREE.error( 'THREE.Line: THREE.LinePieces mode has been removed. Use THREE.SegmentsLine instead.' );
+
+ }
+
THREE.Object3D.call( this );
this.type = 'Line';
@@ -11,13 +17,8 @@ THREE.Line = function ( geometry, material, mode ) {
this.geometry = geometry !== undefined ? geometry : new THREE.Geometry();
this.material = material !== undefined ? material : new THREE.LineBasicMaterial( { color: Math.random() * 0xffffff } );
- this.mode = mode !== undefined ? mode : THREE.LineStrip;
-
};
-THREE.LineStrip = 0;
-THREE.LinePieces = 1;
-
THREE.Line.prototype = Object.create( THREE.Object3D.prototype );
THREE.Line.prototype.constructor = THREE.Line;
@@ -54,7 +55,7 @@ THREE.Line.prototype.raycast = ( function () {
var vEnd = new THREE.Vector3();
var interSegment = new THREE.Vector3();
var interRay = new THREE.Vector3();
- var step = this.mode === THREE.LineStrip ? 1 : 2;
+ var step = this instanceof THREE.SegmentsLine ? 2 : 1;
if ( geometry instanceof THREE.BufferGeometry ) {
@@ -184,7 +185,7 @@ THREE.Line.prototype.raycast = ( function () {
THREE.Line.prototype.clone = function ( object ) {
- if ( object === undefined ) object = new THREE.Line( this.geometry, this.material, this.mode );
+ if ( object === undefined ) object = new THREE[ this.type ]( this.geometry, this.material );
THREE.Object3D.prototype.clone.call( this, object );
@@ -196,8 +197,6 @@ THREE.Line.prototype.toJSON = function ( meta ) {
var data = THREE.Object3D.prototype.toJSON.call( this, meta );
- data.object.mode = this.mode;
-
// only serialize if not in meta geometries cache
if ( meta.geometries[ this.geometry.uuid ] === undefined ) {
meta.geometries[ this.geometry.uuid ] = this.geometry.toJSON();
@@ -214,3 +213,8 @@ THREE.Line.prototype.toJSON = function ( meta ) {
return data;
};
+
+// DEPRECATED
+
+THREE.LineStrip = 0;
+THREE.LinePieces = 1;
diff --git a/src/objects/SegmentsLine.js b/src/objects/SegmentsLine.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a6d5dd9a8691444eefe3275594d68935015800d
--- /dev/null
+++ b/src/objects/SegmentsLine.js
@@ -0,0 +1,14 @@
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+THREE.SegmentsLine = function ( geometry, material ) {
+
+ THREE.Line.call( this, geometry, material );
+
+ this.type = 'SegmentsLine';
+
+};
+
+THREE.SegmentsLine.prototype = Object.create( THREE.Line.prototype );
+THREE.SegmentsLine.prototype.constructor = THREE.SegmentsLine;
diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js
index 4c506fdcdc564fc33da6f33204c9be47dc508438..874a08f3d5982e6c827aaa38de57142e7dd02993 100644
--- a/src/renderers/WebGLRenderer.js
+++ b/src/renderers/WebGLRenderer.js
@@ -1190,7 +1190,7 @@ THREE.WebGLRenderer = function ( parameters ) {
function renderLine( material, geometry, object, program, updateBuffers ) {
- var mode = ( object.mode === THREE.LineStrip ) ? _gl.LINE_STRIP : _gl.LINES;
+ var mode = object instanceof THREE.SegmentsLine ? _gl.LINES : _gl.LINE_STRIP;
// In case user is not using Line*Material by mistake
var lineWidth = material.linewidth !== undefined ? material.linewidth : 1;
diff --git a/test/unit/geometry/EdgesGeometry.js b/test/unit/geometry/EdgesGeometry.js
index 5b14830dc1b77f7d04ec68cd761569bb15eadcd2..cb1073fefab63127f7a8764cc00cebe8cf013965 100644
--- a/test/unit/geometry/EdgesGeometry.js
+++ b/test/unit/geometry/EdgesGeometry.js
@@ -3,7 +3,7 @@ module( "EdgesGeometry" );
var DEBUG = false;
var vertList = [
- new THREE.Vector3(0, 0, 0),
+ new THREE.Vector3(0, 0, 0),
new THREE.Vector3(1, 0, 0),
new THREE.Vector3(1, 1, 0),
new THREE.Vector3(0, 1, 0),
@@ -11,72 +11,72 @@ var vertList = [
];
test( "singularity", function() {
-
+
testEdges( vertList, [1, 1, 1], 0 );
-
+
});
test( "needle", function() {
-
+
testEdges( vertList, [0, 0, 1], 0 );
-
+
});
test( "single triangle", function() {
-
+
testEdges( vertList, [0, 1, 2], 3 );
-
+
});
test( "two isolated triangles", function() {
-
+
var vertList = [
- new THREE.Vector3(0, 0, 0),
+ new THREE.Vector3(0, 0, 0),
new THREE.Vector3(1, 0, 0),
new THREE.Vector3(1, 1, 0),
- new THREE.Vector3(0, 0, 1),
+ new THREE.Vector3(0, 0, 1),
new THREE.Vector3(1, 0, 1),
new THREE.Vector3(1, 1, 1),
];
-
+
testEdges( vertList, [0, 1, 2, 3, 4, 5], 6 );
-
+
});
test( "two flat triangles", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 2, 3], 4 );
-
+
});
test( "two flat triangles, inverted", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 3, 2], 5 );
-
+
});
test( "two non-coplanar triangles", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 4, 2], 5 );
-
+
});
test( "three triangles, coplanar first", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 2, 3, 0, 4, 2], 7 );
-
+
});
test( "three triangles, coplanar last", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 4, 2, 0, 2, 3], 6 ); // Should be 7
-
+
});
test( "tetrahedron", function() {
-
+
testEdges( vertList, [0, 1, 2, 0, 1, 4, 0, 4, 2, 1, 2, 4], 6 );
-
+
});
@@ -86,122 +86,122 @@ test( "tetrahedron", function() {
//
function testEdges ( vertList, idxList, numAfter ) {
-
+
var geoms = createGeometries ( vertList, idxList );
for ( var i = 0 ; i < geoms.length ; i ++ ) {
-
+
var geom = geoms[i];
var numBefore = idxList.length;
equal( countEdges (geom), numBefore, "Edges before!" );
-
+
var egeom = new THREE.EdgesGeometry ( geom );;
-
+
equal( countEdges (egeom), numAfter, "Edges after!" );
output( geom, egeom );
-
+
}
-
+
}
function createGeometries ( vertList, idxList ) {
-
+
var geomIB = createIndexedBufferGeometry ( vertList, idxList );
var geom = new THREE.Geometry().fromBufferGeometry( geomIB );
var geomB = new THREE.BufferGeometry().fromGeometry( geom );
var geomDC = addDrawCalls( geomIB.clone() );
return [ geom, geomB, geomIB, geomDC ];
-
+
}
function createIndexedBufferGeometry ( vertList, idxList ) {
-
+
var geom = new THREE.BufferGeometry();
-
- var indexTable = [];
+
+ var indexTable = [];
var numTris = idxList.length / 3;
var numVerts = 0;
var indices = new Uint32Array( numTris * 3 );
var vertices = new Float32Array( vertList.length * 3 );
-
+
for ( var i = 0; i < numTris; i ++ ) {
for ( var j = 0; j < 3; j ++ ) {
-
+
var idx = idxList[ 3 * i + j ];
if ( indexTable[ idx ] === undefined ) {
-
+
var v = vertList[ idx ];
vertices[ 3 * numVerts ] = v.x;
vertices[ 3 * numVerts + 1 ] = v.y;
vertices[ 3 * numVerts + 2 ] = v.z;
-
+
indexTable[ idx ] = numVerts;
-
+
numVerts ++;
-
+
}
-
+
indices[ 3 * i + j ] = indexTable[ idx ] ;
-
+
}
-
+
}
-
+
vertices = vertices.subarray( 0, 3 * numVerts );
-
+
geom.addAttribute( 'index', new THREE.BufferAttribute( indices, 1 ) );
geom.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
-
+
geom.computeFaceNormals();
-
+
return geom;
-
+
}
function addDrawCalls ( geometry ) {
-
+
var numTris = geometry.getAttribute( 'index' ).length / 3;
-
+
var offset = 0;
for ( var i = 0 ; i < numTris; i ++ ) {
var start = i * 3;
var count = 3;
-
+
geometry.addDrawCall ( start, count, offset );
-
+
}
-
+
return geometry;
-
+
}
function countEdges ( geom ) {
-
+
if ( geom instanceof THREE.EdgesGeometry ) {
-
+
return geom.getAttribute( 'position' ).length / 2;
-
+
}
-
+
if ( geom.faces !== undefined ) {
-
+
return geom.faces.length * 3;
-
+
}
-
+
var indices = geom.getAttribute( 'index' );
if ( indices !== undefined ) {
-
+
return indices.length;
-
+
}
-
+
return geom.getAttribute( 'position' ).length;
-
+
}
//
@@ -214,23 +214,23 @@ var scene = new THREE.Scene();
var xoffset = 0;
function output ( geom, egeom ) {
-
+
if ( DEBUG !== true ) return;
-
+
if ( !renderer ) initDebug();
-
+
var mesh = new THREE.Mesh( geom, undefined );
- var edges = new THREE.Line( egeom, new THREE.LineBasicMaterial( { color: 'black' }), THREE.LinePieces );
+ var edges = new THREE.SegmentsLine( egeom, new THREE.LineBasicMaterial( { color: 'black' } ) );
mesh.position.setX( xoffset );
edges.position.setX( xoffset ++ );
scene.add(mesh);
scene.add(edges);
-
+
if (scene.children.length % 8 === 0) {
xoffset += 2;
}
-
+
}
function initDebug () {
@@ -238,12 +238,12 @@ function initDebug () {
renderer = new THREE.WebGLRenderer({
antialias: true
-
+
});
-
+
var width = 600;
var height = 480;
-
+
renderer.setSize(width, height);
renderer.setClearColor( 0xCCCCCC );
@@ -251,12 +251,12 @@ function initDebug () {
camera.position.x = 30;
camera.position.z = 40;
camera.lookAt(new THREE.Vector3(30, 0, 0));
-
+
document.body.appendChild(renderer.domElement);
var controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.target = new THREE.Vector3(30, 0, 0);
-
+
animate();
function animate() {
@@ -264,10 +264,9 @@ function initDebug () {
requestAnimationFrame( animate );
controls.update();
-
+
renderer.render( scene, camera );
}
-
-}
+}
diff --git a/utils/build/includes/common.json b/utils/build/includes/common.json
index 346d144e24a3a8c7ec40849f54bab88fb6a6c242..ff2b3059b765a2c1a837764c620dee5be1283aea 100644
--- a/utils/build/includes/common.json
+++ b/utils/build/includes/common.json
@@ -78,6 +78,7 @@
"src/objects/Group.js",
"src/objects/PointCloud.js",
"src/objects/Line.js",
+ "src/objects/SegmentsLine.js",
"src/objects/Mesh.js",
"src/objects/Bone.js",
"src/objects/Skeleton.js",