[page:Object3D] → [page:Line] → [page:LineSegments] →


Renders [page:ArrowHelper arrows] to visualize an object's [page:Face3 face] normals. Requires that face normals have been specified on all [page:Face3 faces] or calculated with [page:Geometry.computeFaceNormals computeFaceNormals].

Note that this only works with the objects whose geometry is an instance of [page:Geometry]. For [page:BufferGeometry] use a [page:VertexNormalsHelper] instead.

Code Example

geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 ); material = new THREE.MeshBasicMaterial( { color: 0xff0000 } ); box = new THREE.Mesh( geometry, material ); helper = new FaceNormalsHelper( box, 2, 0x00ff00, 1 ); scene.add( box ); scene.add( helper );


[example:webgl_helpers WebGL / helpers]


[name]( [param:Object3D object], [param:Number size], [param:Color color], [param:Number linewidth] )

[page:Object3D object] -- object for which to render face normals.
[page:Number size] -- (optional) length of the arrows. Default is *1*.
[page:Hex color] -- (optional) hex color of the arrows. Default is *0xffff00*.
[page:Number linewidth] -- (optional) width of the arrow lines. Default is *1*.


See the base [page:LineSegments] class for common properties.

[property:Object matrixAutoUpdate]

See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the objects's [page:Object3D.matrixWorld matrixWorld].

[property:Object3D object]

The object for which the face normals are being visualized.

[property:Number size]

Length of the arrows. Default is *1*.


See the base [page:LineSegments] class for common methods.

[method:null update]()

Updates the face normal preview based on movement of the object.


[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/helpers/FaceNormalsHelper.js examples/jsm/helpers/FaceNormalsHelper.js]