<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cloudcompare.org/doc/wiki/index.php?action=history&amp;feed=atom&amp;title=Normals%5CCompute</id>
	<title>Normals\Compute - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cloudcompare.org/doc/wiki/index.php?action=history&amp;feed=atom&amp;title=Normals%5CCompute"/>
	<link rel="alternate" type="text/html" href="https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;action=history"/>
	<updated>2026-05-06T15:24:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47022&amp;oldid=prev</id>
		<title>Daniel at 18:58, 4 September 2016</title>
		<link rel="alternate" type="text/html" href="https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47022&amp;oldid=prev"/>
		<updated>2016-09-04T18:58:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:58, 4 September 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:Clean_distances.jpg]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daniel</name></author>
	</entry>
	<entry>
		<id>https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47021&amp;oldid=prev</id>
		<title>Daniel at 18:57, 4 September 2016</title>
		<link rel="alternate" type="text/html" href="https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47021&amp;oldid=prev"/>
		<updated>2016-09-04T18:57:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:57, 4 September 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokemon&lt;/del&gt;.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Clean_distances&lt;/ins&gt;.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daniel</name></author>
	</entry>
	<entry>
		<id>https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47019&amp;oldid=prev</id>
		<title>Daniel at 16:28, 4 September 2016</title>
		<link rel="alternate" type="text/html" href="https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=47019&amp;oldid=prev"/>
		<updated>2016-09-04T16:28:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:28, 4 September 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:Pokemon.jpg]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Menu / Icon ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daniel</name></author>
	</entry>
	<entry>
		<id>https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=46853&amp;oldid=prev</id>
		<title>Daniel: /* Neighborhood */</title>
		<link rel="alternate" type="text/html" href="https://www.cloudcompare.org/doc/wiki/index.php?title=Normals%5CCompute&amp;diff=46853&amp;oldid=prev"/>
		<updated>2015-10-06T20:01:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Neighborhood&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Menu / Icon ==&lt;br /&gt;
&lt;br /&gt;
This tool is accessible via the &amp;#039;Edit &amp;gt; Normals &amp;gt; Compute&amp;#039; [[Image:TypeNormal.png]] menu.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Computes normals on the selected entities.&lt;br /&gt;
&lt;br /&gt;
== Computing normals on a cloud ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Cc_cloud_normals_computation_dialog.jpg|frame|center|Edit &amp;gt; Normals &amp;gt; Compute dialog - cloud case (dialog of the 2.6.2 version)]]&lt;br /&gt;
&lt;br /&gt;
To compute normals on a point cloud, it is necessary to estimate the local surface represented by a point and its neighbors. The level of noise and the number/distance of neighbors will change how this surface looks like.&lt;br /&gt;
&lt;br /&gt;
=== Local surface model ===&lt;br /&gt;
&lt;br /&gt;
The user must first choose a local surface model:&lt;br /&gt;
* (best fit) plane - robust to noise but very bad with sharp edges and corners&lt;br /&gt;
* 2D triangulation - weak to noise but good with sharp edges&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Quadric quadric] (formerly called &amp;#039;height function&amp;#039;) - very good for curvy surfaces&lt;br /&gt;
&lt;br /&gt;
=== Neighborhood ===&lt;br /&gt;
&lt;br /&gt;
Then the user must choose how the local neighbors will be selected. The default neighbor extraction process relies on an [[CloudCompare octree | octree]] structure. The user must only choose the neighborhood radius. The bigger the radius, the more points will be used to compute the local surface model, resulting in generally smoother normals but also in a longer process. If the radius is too small then the model won&amp;#039;t be valid and some - or all - normals will be invalid (the corresponding points will appear in black whatever the camera orientation).&lt;br /&gt;
&lt;br /&gt;
Since version 2.6.2:&lt;br /&gt;
* an &amp;#039;auto&amp;#039; button is available (if a single cloud is selected) in order to estimate a good starting value for the radius&lt;br /&gt;
* structured clouds can be associated to a grid structure. This grid structure can be used to determine the neighbors around each point. However this is generally not better nor faster. &amp;#039;&amp;#039;&amp;#039;This structure is however very useful to orient the normals properly&amp;#039;&amp;#039;&amp;#039; (see below).&lt;br /&gt;
&lt;br /&gt;
=== Orientation ===&lt;br /&gt;
&lt;br /&gt;
When fitting a local model, only the direction of the normal can be computed. The normal orientation (i.e. whether it points outside or inside the object) still needs to be determined.&lt;br /&gt;
&lt;br /&gt;
The user can choose several ways to do this:&lt;br /&gt;
* to leave the normals as they are computed (i.e. with a quite random orientation). Simply uncheck the &amp;#039;Orientation&amp;#039; checkbox.&lt;br /&gt;
* to use a &amp;#039;preferred orientation&amp;#039; heuristic:&lt;br /&gt;
** to be as parallel as possible to one of the main axes (X, Y or Z), each time in the positive or negative direction (-X/+X, -Y/+Y, -Z/+Z)&lt;br /&gt;
** to be as parallel as possible to a vector coming from the cloud barycenter and passing through the point or the opposite (+/-Barycenter)&lt;br /&gt;
** to be as parallel as possible to a vector coming from the origin (0,0,0) and passing through the point or the opposite (+/-(0,0,0))&lt;br /&gt;
** to use the previous normal (if any)&lt;br /&gt;
* to use a [[Normals\Orient Normals With Minimum Spanning Tree | Minimum Spanning Tree]]&lt;br /&gt;
* last but not least, since version 2.6.2 if the cloud is associated to a grid structure, then this structure can be used to very guess the right normal orientation quickly and in a very robust way&lt;br /&gt;
&lt;br /&gt;
[[Image:Cc_noramls_orientation_example.jpg|frame|center|Normals computed on a cloud (left) then properly oriented with a Minimum Spanning Tree (right)]]&lt;br /&gt;
&lt;br /&gt;
== Computing normals on a mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Cc_mesh_normals_computation_dialog.jpg|frame|center|Edit &amp;gt; Normals &amp;gt; Compute dialog - mesh case]]&lt;br /&gt;
&lt;br /&gt;
If the entity is a mesh, then CC will simply ask the user if the normals should be computed:&lt;br /&gt;
* per-vertex (i.e. the mean normal of all the triangles connected to a vertex is assigned to this vertex - smooth look, no preservation of sharp edges)&lt;br /&gt;
* or per triangle (i.e. the triangle normal is assigned to the triangle - hard/tessellated look, but preserves the sharp edges)&lt;br /&gt;
&lt;br /&gt;
[[Image:Cc_mesh_normals_modes.jpg|frame|center|Per-vertex (left) and per-triangle (right) mesh normals]]&lt;/div&gt;</summary>
		<author><name>Daniel</name></author>
	</entry>
</feed>