public method Simplify(tolerance:
float):
void;

public void Simplify(float tolerance);

tolerance | This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. |

Generates a simplified version of the original line by removing points that fall within the specified tolerance.

Uses LineUtility.Simplify to perform the line simplification.

This example shows how an existing line can be simplified:

#pragma strict // This example shows how to apply line simplification to a line that already contains points. @RequireComponent(LineRenderer) public class SimpleExampleLineRenderer extends MonoBehaviour { public var tolerance: float = 1; function Start() { var lineRenderer: var = GetComponent.<LineRenderer>(); var pointsBefore: int = lineRenderer.positionCount; lineRenderer.Simplify(tolerance); Debug.Log("Line reduced from " + pointsBefore + " to " + lineRenderer.positionCount); } }

using UnityEngine;

// This example shows how to apply line simplification to a line that already contains points. [RequireComponent(typeof(LineRenderer))] public class SimpleExampleLineRenderer : MonoBehaviour { public float tolerance = 1; void Start() { var lineRenderer = GetComponent<LineRenderer>(); int pointsBefore = lineRenderer.positionCount; lineRenderer.Simplify(tolerance); Debug.Log("Line reduced from " + pointsBefore + " to " + lineRenderer.positionCount); } }

**This example generates a line in the shape of a sine wave and provides a GUI for customizing the line generation and simplification parameters.**

#pragma strict // This example creates a sine wave and then simplifies it using LineRenderer.Simplify. // The parameters can be adjusted through an in game GUI to allow for experimentation. @RequireComponent(LineRenderer) public class LineRendererExample extends MonoBehaviour { public var numberOfPoints: int = 1000; public var length: float = 50; public var waveHeight: float = 10; public var tolerance: float = 0.1f; private var lineRenderer: LineRenderer; private var points: List.<Vector3> = new List.<Vector3>(); // Generated points before Simplify is used. public function Start() { lineRenderer = GetComponent.<LineRenderer>(); } // Generates the sine wave points. public function GeneratePoints() { points.Clear(); var halfWaveHeight: float = waveHeight * 0.5f; var step: float = length / numberOfPoints; for (var i: int = 0; i < numberOfPoints; ++i) { points.Add(new Vector3(i * step, Mathf.Sin(i * step) * halfWaveHeight, 0)); } } // Draw a simple GUI slider with a label. private static function GUISlider(label: String, value: float, min: float, max: float) { GUILayout.BeginHorizontal(GUILayout.Width(Screen.width / 2.0f)); GUILayout.Label(label + "(" + value + ") :", GUILayout.Width(150)); var val: var = GUILayout.HorizontalSlider(value, min, max); GUILayout.EndHorizontal(); return val; } public function OnGUI() { GUILayout.Label("LineRenderer.Simplify", GUI.skin.box); // We use GUI.changed to detect if a value was changed via the GUI, if it has we can then re-generate the points and simplify the line again. GUI.changed = false; numberOfPoints = intGUISlider("Number of Points", numberOfPoints, 0, 1000); length = GUISlider("Length", length, 0, 100); waveHeight = GUISlider("Wave Height", waveHeight, 0, 100); if (GUI.changed) GeneratePoints(); tolerance = GUISlider("Simplify Tolerance", tolerance, 0, 2); if (GUI.changed) lineRenderer.Simplify(tolerance); var percentRemoved: float = 100.0f - (floatlineRenderer.positionCount / numberOfPoints) * 100.0f; if (tolerance > 0.0f) GUILayout.Label("Points after simplification: " + lineRenderer.positionCount + "(Removed " + percentRemoved.ToString("##.##") + "%)"); } }

using System.Collections.Generic; using UnityEngine;

// This example creates a sine wave and then simplifies it using LineRenderer.Simplify. // The parameters can be adjusted through an in game GUI to allow for experimentation. [RequireComponent(typeof(LineRenderer))] public class LineRendererExample : MonoBehaviour { public int numberOfPoints = 1000; public float length = 50; public float waveHeight = 10; public float tolerance = 0.1f;

private LineRenderer lineRenderer; private List<Vector3> points = new List<Vector3>(); // Generated points before Simplify is used.

public void Start() { lineRenderer = GetComponent<LineRenderer>(); }

// Generates the sine wave points. public void GeneratePoints() { points.Clear(); float halfWaveHeight = waveHeight * 0.5f; float step = length / numberOfPoints; for (int i = 0; i < numberOfPoints; ++i) { points.Add(new Vector3(i * step, Mathf.Sin(i * step) * halfWaveHeight, 0)); } }

// Draw a simple GUI slider with a label. private static float GUISlider(string label, float value, float min, float max) { GUILayout.BeginHorizontal(GUILayout.Width(Screen.width / 2.0f)); GUILayout.Label(label + "(" + value + ") :", GUILayout.Width(150)); var val = GUILayout.HorizontalSlider(value, min, max); GUILayout.EndHorizontal(); return val; }

public void OnGUI() { GUILayout.Label("LineRenderer.Simplify", GUI.skin.box);

// We use GUI.changed to detect if a value was changed via the GUI, if it has we can then re-generate the points and simplify the line again. GUI.changed = false;

numberOfPoints = (int)GUISlider("Number of Points", numberOfPoints, 0, 1000); length = GUISlider("Length", length, 0, 100); waveHeight = GUISlider("Wave Height", waveHeight, 0, 100); if (GUI.changed) GeneratePoints();

tolerance = GUISlider("Simplify Tolerance", tolerance, 0, 2); if (GUI.changed) lineRenderer.Simplify(tolerance);

float percentRemoved = 100.0f - ((float)lineRenderer.positionCount / numberOfPoints) * 100.0f; if (tolerance > 0.0f) GUILayout.Label("Points after simplification: " + lineRenderer.positionCount + "(Removed " + percentRemoved.ToString("##.##") + "%)"); } }

Did you find this page useful? Please give it a rating: