diff --git a/.gitignore b/.gitignore index 6bffbfe7..92c8b4dd 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ # Builds *.apk *.unitypackage +!release/*.unitypackage #Plugins */Assets/Plugins.meta @@ -63,3 +64,7 @@ PointCloudRenderer/Assets/Scenes/10SecondStop.anim PointCloudRenderer/Assets/Scenes/DebugCamera2.controller.meta PointCloudRenderer/Assets/Scenes/DebugCamera2.controller PointCloudRenderer/Assets/Scenes/TestCamera.anim +PointCloudRenderer/Assets/Scenes/old.meta +PointCloudRenderer/Assets/Scenes/old +PointCloudRenderer/Assets/Scenes/old/* +PointCloudRenderer/Logs/Packages-Update.log diff --git a/PointCloudRenderer/Assets/Scenes/BAPC-Example.unity b/PointCloudRenderer/Assets/Scenes/BAPC-Example.unity new file mode 100644 index 00000000..a292e837 Binary files /dev/null and b/PointCloudRenderer/Assets/Scenes/BAPC-Example.unity differ diff --git a/PointCloudRenderer/Assets/Scenes/BigCloudScene.unity.meta b/PointCloudRenderer/Assets/Scenes/BAPC-Example.unity.meta similarity index 53% rename from PointCloudRenderer/Assets/Scenes/BigCloudScene.unity.meta rename to PointCloudRenderer/Assets/Scenes/BAPC-Example.unity.meta index 6ac406a0..5a9d5801 100644 --- a/PointCloudRenderer/Assets/Scenes/BigCloudScene.unity.meta +++ b/PointCloudRenderer/Assets/Scenes/BAPC-Example.unity.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 3e94d64abdf8d3e40a31234263495911 -timeCreated: 1497278392 -licenseType: Free +guid: d21af4eb255507747bb87501eaa03f7d DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scenes/BigCloudScene.unity b/PointCloudRenderer/Assets/Scenes/BigCloudScene.unity deleted file mode 100644 index 1f4fa0d3..00000000 Binary files a/PointCloudRenderer/Assets/Scenes/BigCloudScene.unity and /dev/null differ diff --git a/PointCloudRenderer/Assets/Scenes/DemoScene.unity b/PointCloudRenderer/Assets/Scenes/DemoScene.unity deleted file mode 100644 index 0dd12c9b..00000000 Binary files a/PointCloudRenderer/Assets/Scenes/DemoScene.unity and /dev/null differ diff --git a/PointCloudRenderer/Assets/Scenes/OneTimeScene.unity b/PointCloudRenderer/Assets/Scenes/OneTimeScene.unity deleted file mode 100644 index 830b3403..00000000 Binary files a/PointCloudRenderer/Assets/Scenes/OneTimeScene.unity and /dev/null differ diff --git a/PointCloudRenderer/Assets/Scenes/RenderTestScene.unity b/PointCloudRenderer/Assets/Scenes/RenderTestScene.unity deleted file mode 100644 index 12ca3ad9..00000000 Binary files a/PointCloudRenderer/Assets/Scenes/RenderTestScene.unity and /dev/null differ diff --git a/PointCloudRenderer/Assets/Scenes/tests.meta b/PointCloudRenderer/Assets/Scenes/tests.meta new file mode 100644 index 00000000..cdedcc43 --- /dev/null +++ b/PointCloudRenderer/Assets/Scenes/tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 546758b1042a4ca438befe3d999290c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity b/PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity new file mode 100644 index 00000000..a246e50b Binary files /dev/null and b/PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity differ diff --git a/PointCloudRenderer/Assets/Scenes/OneTimeScene.unity.meta b/PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity.meta similarity index 64% rename from PointCloudRenderer/Assets/Scenes/OneTimeScene.unity.meta rename to PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity.meta index b3f1bc81..b6861124 100644 --- a/PointCloudRenderer/Assets/Scenes/OneTimeScene.unity.meta +++ b/PointCloudRenderer/Assets/Scenes/tests/DynamicDemo.unity.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: b56f30586140f974d8701bca4d748534 -timeCreated: 1494877110 +guid: a25e122b317539548b8afe10617aa469 +timeCreated: 1541450132 licenseType: Free DefaultImporter: userData: diff --git a/PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity b/PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity new file mode 100644 index 00000000..8893e749 Binary files /dev/null and b/PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity differ diff --git a/PointCloudRenderer/Assets/Scenes/RenderTestScene.unity.meta b/PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity.meta similarity index 53% rename from PointCloudRenderer/Assets/Scenes/RenderTestScene.unity.meta rename to PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity.meta index 2f16dd27..610ccbd4 100644 --- a/PointCloudRenderer/Assets/Scenes/RenderTestScene.unity.meta +++ b/PointCloudRenderer/Assets/Scenes/tests/StaticDemo.unity.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: fd84e35a5852c6e4e8b792ce0facc197 -timeCreated: 1498224137 -licenseType: Free +guid: b450719adce3d5141bf9798ebe307ff6 DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity b/PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity new file mode 100644 index 00000000..f9a34b2c Binary files /dev/null and b/PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity differ diff --git a/PointCloudRenderer/Assets/Scenes/DemoScene.unity.meta b/PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity.meta similarity index 53% rename from PointCloudRenderer/Assets/Scenes/DemoScene.unity.meta rename to PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity.meta index 7e33c95c..d1bf6eaa 100644 --- a/PointCloudRenderer/Assets/Scenes/DemoScene.unity.meta +++ b/PointCloudRenderer/Assets/Scenes/tests/StaticTestDemo2.unity.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: da80af956cf483c478d84651f7396d68 -timeCreated: 1489510690 -licenseType: Free +guid: d36db29724c34954b8837da3dccf7ea4 DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer.meta new file mode 100644 index 00000000..298d70d7 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1044eb56af3edb24ab61fe01d3e0fcce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController.meta new file mode 100644 index 00000000..6268f7db --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f72343ab386569d4583858aaf1beb374 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs new file mode 100644 index 00000000..c594078c --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs @@ -0,0 +1,164 @@ +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.Loading; +using System; +using System.Collections.Generic; +using System.Threading; +using UnityEngine; + +namespace BAPointCloudRenderer.CloudController { + /// + /// A PointCloudSet enables loading and rendering several point clouds at once. But even if you just have one point cloud to render, you have to attach it to a PointCloudSet. + /// The configured options of the PointCloudSet controller (for example point budget) work for all point clouds attached to this set. + /// Every pointcloud has its own PointCloudLoader, which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. + /// The current implementations of this class are StaticPointCloudSet and DynamicPointCloudSet. + /// + public abstract class AbstractPointCloudSet: MonoBehaviour { + + /// + /// Whether the center of the cloud should be moved to the position of this component. To calculate the center, only the point clouds are considered that exist in the beginning of the scene. + /// + public bool moveCenterToTransformPosition = true; + + //For origin-moving: + private bool hasMoved = false; + private Vector3d moving = new Vector3d(0,0,0); + private BoundingBox overallBoundingBox = new BoundingBox(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, + double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity); + private Dictionary boundingBoxes = new Dictionary(); + private ManualResetEvent waiterForBoundingBoxUpdate = new ManualResetEvent(false); + + private AbstractRenderer pRenderer; + + void Start() { + if (!moveCenterToTransformPosition) hasMoved = true; + Initialize(); + if (pRenderer == null) { + throw new InvalidOperationException("PointRenderer has not been set!"); + } + } + + /// + /// Override this instead of Start!! Make sure to set the PointRenderer in here!!! + /// + protected abstract void Initialize(); + + /// + /// Registers a PointCloud-Controller (See PointCloudLoader). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. + /// The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. + /// Should be called only once for every controller + /// + /// not null + /// + public void RegisterController(PointCloudLoader controller) { + lock (boundingBoxes) { + boundingBoxes[controller] = null; + } + } + + /// + /// Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. + /// If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), + /// so this method should not be called in the main thread. + /// + public void UpdateBoundingBox(PointCloudLoader controller, BoundingBox boundingBox) { + boundingBox.MoveAlong(moving); + lock (boundingBoxes) { + boundingBoxes[controller] = boundingBox; + overallBoundingBox.Lx = Math.Min(overallBoundingBox.Lx, boundingBox.Lx); + overallBoundingBox.Ly = Math.Min(overallBoundingBox.Ly, boundingBox.Ly); + overallBoundingBox.Lz = Math.Min(overallBoundingBox.Lz, boundingBox.Lz); + overallBoundingBox.Ux = Math.Max(overallBoundingBox.Ux, boundingBox.Ux); + overallBoundingBox.Uy = Math.Max(overallBoundingBox.Uy, boundingBox.Uy); + overallBoundingBox.Uz = Math.Max(overallBoundingBox.Uz, boundingBox.Uz); + } + if (moveCenterToTransformPosition) { + waiterForBoundingBoxUpdate.WaitOne(); + } + } + + /// + /// Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. + /// + public void AddRootNode(Node node) { + lock (pRenderer) { + pRenderer.AddRootNode(node); + } + } + + /// + /// Removes a point cloud + /// + public void RemoveRootNode(PointCloudLoader controller, Node node) { + lock (pRenderer) { + pRenderer.RemoveRootNode(node); + boundingBoxes.Remove(controller); + } + } + + /// + /// Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. + /// + protected bool CheckReady() { + lock (boundingBoxes) { + if (!hasMoved) { + if (!boundingBoxes.ContainsValue(null)) { + moving = new Vector3d(transform.position) - overallBoundingBox.Center(); + foreach (BoundingBox bb in boundingBoxes.Values) { + bb.MoveAlong(moving); + } + overallBoundingBox.MoveAlong(moving); + hasMoved = true; + waiterForBoundingBoxUpdate.Set(); + } else { + return false; + } + } + } + lock (pRenderer) { + //Checking, weither all RootNodes are there + if (pRenderer.GetRootNodeCount() != boundingBoxes.Count) { + return false; + } + } + return true; + } + + /// + /// Shuts down the renderer + /// + public void OnDestroy() { + if (pRenderer != null) { + pRenderer.ShutDown(); + } + } + + /// + /// Returns the point count + /// + /// + public uint GetPointCount() { + return pRenderer.GetPointCount(); + } + + public void StopRendering() { + if (pRenderer != null) { + pRenderer.ShutDown(); + } + } + + /// + /// The Renderer (value may not be null at setting) + /// + public AbstractRenderer PointRenderer { + get { + return pRenderer; + } + + set { + if (value != null) { + pRenderer = value; + } + } + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs.meta new file mode 100644 index 00000000..25eca4f8 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f68637d89f273c54592e5397f56da938 +timeCreated: 1545571259 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs new file mode 100644 index 00000000..11a137cf --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs @@ -0,0 +1,31 @@ +using System.IO; +using UnityEngine; + +namespace BAPointCloudRenderer.CloudController { + /// + /// Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. + /// This controller will create a DynamicLoaderController for each of the point clouds. + /// + public class DirectoryLoader : MonoBehaviour { + + /// + /// Path of the directory containing the point clouds + /// + public string path; + /// + /// The PointSetController + /// + public AbstractPointCloudSet pointset; + + + void Start() { + DirectoryInfo dir = new DirectoryInfo(path); + foreach (DirectoryInfo sub in dir.GetDirectories()) { + GameObject go = new GameObject(sub.Name); + PointCloudLoader loader = go.AddComponent(); + loader.cloudPath = sub.FullName; + loader.setController = pointset; + } + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs.meta new file mode 100644 index 00000000..3f58fb7b --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DirectoryLoader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a6677daf0b515a345860ff455af0edc7 +timeCreated: 1545593363 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs new file mode 100644 index 00000000..880c38b8 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs @@ -0,0 +1,55 @@ +using BAPointCloudRenderer.Loading; +using BAPointCloudRenderer.ObjectCreation; +using UnityEngine; + +namespace BAPointCloudRenderer.CloudController { + + /// + /// Point Cloud Set to display a large point cloud. All the time, only the points which are needed for the current camera position are loaded from the disk (as described in the thesis). + /// + class DynamicPointCloudSet : AbstractPointCloudSet { + /// + /// Point Budget - Maximum Number of Points in Memory / to Render + /// + public uint pointBudget = 1000000; + /// + /// Minimum Node Size + /// + public int minNodeSize = 10; + /// + /// Maximum number of nodes loaded per frame + /// + public uint nodesLoadedPerFrame = 15; + /// + /// Maximum number of nodes having their gameobjects created per frame + /// + public uint nodesGOsPerFrame = 30; + /// + /// MeshConfiguration. Defines how to render the points. + /// + public MeshConfiguration meshConfiguration = null; + /// + /// Cache Size in POints + /// + public uint cacheSizeInPoints = 1000000; + /// + /// Camera to use. If none is specified, Camera.main is used + /// + public Camera userCamera; + + // Use this for initialization + protected override void Initialize() { + if (userCamera == null) { + userCamera = Camera.main; + } + PointRenderer = new V2Renderer(minNodeSize, pointBudget, nodesLoadedPerFrame, nodesGOsPerFrame, userCamera, meshConfiguration, cacheSizeInPoints); + } + + + // Update is called once per frame + void Update() { + if (!CheckReady()) return; + PointRenderer.Update(); + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs.meta new file mode 100644 index 00000000..9ed12950 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a7dc43c468520bc4eb64eceb8593c5b9 +timeCreated: 1545571434 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs new file mode 100644 index 00000000..9c3ab0fd --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs @@ -0,0 +1,79 @@ +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.Loading; +using System; +using System.Threading; +using UnityEngine; + +namespace BAPointCloudRenderer.CloudController { + /* While PointCloudLoaderController will load the complete file as one and render the comlete one, + * the DynamicLoaderController will first only load the hierarchy. It can be given registered at a PointCloudSetController to render it. + */ + /// + /// Use this script to load a single PointCloud from a directory. + /// + public class PointCloudLoader : MonoBehaviour { + + /// + /// Path to the folder which contains the cloud.js file + /// + public string cloudPath; + + /// + /// The PointSetController to use + /// + public AbstractPointCloudSet setController; + + /// + /// True if the point cloud should be loaded when the behaviour is started. Otherwise the point cloud is loaded when LoadPointCloud is loaded. + /// + public bool loadOnStart = true; + + private Node rootNode; + + void Start() { + if (loadOnStart) { + LoadPointCloud(); + } + } + + private void LoadHierarchy() { + try { + if (!cloudPath.EndsWith("\\")) { + cloudPath = cloudPath + "\\"; + } + + PointCloudMetaData metaData = CloudLoader.LoadMetaData(cloudPath, false); + + setController.UpdateBoundingBox(this, metaData.boundingBox); + + rootNode = CloudLoader.LoadHierarchyOnly(metaData); + + setController.AddRootNode(rootNode); + } catch (Exception ex) { + Debug.LogError(ex); + } + } + + /// + /// Starts loading the point cloud. When the hierarchy is loaded it is registered at the corresponding point cloud set + /// + public void LoadPointCloud() { + setController.RegisterController(this); + Thread thread = new Thread(LoadHierarchy); + thread.Start(); + } + + /// + /// Removes the point cloud from the scene. Should only be called from the main thread! + /// + /// True if the cloud was removed. False, when the cloud hasn't even been loaded yet. + public bool RemovePointCloud() { + if (rootNode == null) { + return false; + } + setController.RemoveRootNode(this, rootNode); + return true; + } + + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs.meta new file mode 100644 index 00000000..b270a9e0 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/PointCloudLoader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 830a9d4c15accb94ba7628d60d43cda9 +timeCreated: 1545571259 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs new file mode 100644 index 00000000..dd675bc2 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs @@ -0,0 +1,28 @@ +using BAPointCloudRenderer.Loading; +using BAPointCloudRenderer.ObjectCreation; + +namespace BAPointCloudRenderer.CloudController { + /// + /// This Point Cloud Set loads the complete point cloud one and displays everything at once. + /// Should only be used for small clouds. Might take some time to load. + /// + class StaticPointCloudSet : AbstractPointCloudSet { + + /// + /// MeshConfiguration that specifies how the cloud is to be displayed + /// + public MeshConfiguration meshConfiguration = null; + + // Use this for initialization + protected override void Initialize() { + PointRenderer = new StaticRenderer(meshConfiguration); + } + + + // Update is called once per frame + void Update() { + if (!CheckReady()) return; + PointRenderer.Update(); + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs.meta new file mode 100644 index 00000000..ada30070 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b69e773784306d4bb7be92df22a9395 +timeCreated: 1545575539 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/CloudData.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/CloudData.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData.meta index 437c771a..f33ffcf1 100644 --- a/PointCloudRenderer/Assets/Scripts/CloudData.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: 326b1e35915e81a46b51f47f2abe62b0 +guid: f5950a0ec40b05c45a99665d1b6b8943 folderAsset: yes -timeCreated: 1492194034 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/BoundingBox.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/BoundingBox.cs similarity index 98% rename from PointCloudRenderer/Assets/Scripts/CloudData/BoundingBox.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/BoundingBox.cs index a93dd136..24ccb76b 100644 --- a/PointCloudRenderer/Assets/Scripts/CloudData/BoundingBox.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/BoundingBox.cs @@ -1,10 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; -namespace CloudData { +namespace BAPointCloudRenderer.CloudData { /// /// An Axis-Aligned Bounding Box for a Node. Note that the values of the bounding box are not final, but might be changed. /// diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/BoundingBox.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/BoundingBox.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/CloudData/BoundingBox.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/BoundingBox.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/Node.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Node.cs similarity index 86% rename from PointCloudRenderer/Assets/Scripts/CloudData/Node.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Node.cs index 192c813b..e4e55f6c 100644 --- a/PointCloudRenderer/Assets/Scripts/CloudData/Node.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Node.cs @@ -1,12 +1,11 @@ -using ObjectCreation; +using BAPointCloudRenderer.ObjectCreation; using System; using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; using UnityEngine; -namespace CloudData { +namespace BAPointCloudRenderer.CloudData { /// /// Resembles a node of the nested octree. /// @@ -118,6 +117,21 @@ public void RemoveGameObjects(MeshConfiguration config) { gameObjects.Clear(); } + /// + /// Removes the GameObjects of this node and all it's children. Has to be called from the main thread. + /// + /// The MeshConfiguration which should be used for removing the Game Objects + public void RemoveAllGameObjects(MeshConfiguration configuration) { + RemoveGameObjects(configuration); + for (int i = 0; i < 8; i++) { + if (children[i] != null) { + children[i].RemoveAllGameObjects(configuration); + } + } + } + + + /// /// Deactivates the GameObjects of this node. Has to be called from the main thread. /// @@ -126,7 +140,42 @@ public void DeactivateGameObjects() { go.SetActive(false); } } - + + /// + /// Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread. + /// + public void DeactivateAllGameObjects() { + DeactivateGameObjects(); + for (int i = 0; i < 8; i++) { + if (children[i] != null) { + children[i].DeactivateAllGameObjects(); + } + } + } + + /// + /// Reactivates the GameObjects of this node. Has to be called from the main thread. + /// + public void ReactivateGameObjects() { + foreach (GameObject go in gameObjects) { + go.SetActive(true); + } + } + + /// + /// Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread. + /// + public void ReactivateAllGameObjects() { + ReactivateGameObjects(); + for (int i = 0; i < 8; i++) { + if (children[i] != null) { + children[i].ReactivateAllGameObjects(); + } + } + } + + + /// /// Sets the point data. Throws an exception if gameobjects already exist or vertices or colors are null or their length do not match. /// Also sets the point count. diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/Node.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Node.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/CloudData/Node.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Node.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/PointCloudMetaData.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/PointCloudMetaData.cs similarity index 97% rename from PointCloudRenderer/Assets/Scripts/CloudData/PointCloudMetaData.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/PointCloudMetaData.cs index b50bf2fb..eb19c0fa 100644 --- a/PointCloudRenderer/Assets/Scripts/CloudData/PointCloudMetaData.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/PointCloudMetaData.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -namespace CloudData +namespace BAPointCloudRenderer.CloudData { /// /// Description of a Bounding Box. Created from the cloud.js-File. diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/PointCloudMetaData.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/PointCloudMetaData.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/CloudData/PointCloudMetaData.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/PointCloudMetaData.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/Vector3d.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Vector3d.cs similarity index 96% rename from PointCloudRenderer/Assets/Scripts/CloudData/Vector3d.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Vector3d.cs index 29fc7997..6c7da712 100644 --- a/PointCloudRenderer/Assets/Scripts/CloudData/Vector3d.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Vector3d.cs @@ -1,10 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; -namespace CloudData { +namespace BAPointCloudRenderer.CloudData { /// /// A vector using double values. The values are final, calculations always create a new vector. However, the x,y,z-values can be changed directly /// diff --git a/PointCloudRenderer/Assets/Scripts/CloudData/Vector3d.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Vector3d.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/CloudData/Vector3d.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/CloudData/Vector3d.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/Controllers.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers.meta index 91e060be..e81e70be 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: 9544b27b61b5d854eba45d3b5118e072 +guid: 21cd606eb6496d94182976ae54ce1714 folderAsset: yes -timeCreated: 1492194034 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/AbstractPointSetController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/AbstractPointSetController.cs similarity index 85% rename from PointCloudRenderer/Assets/Scripts/Controllers/AbstractPointSetController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/AbstractPointSetController.cs index c0e981be..ca072148 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/AbstractPointSetController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/AbstractPointSetController.cs @@ -1,20 +1,19 @@ -using CloudData; -using Loading; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.Loading; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading; using UnityEngine; -namespace Controllers { - /// - /// A PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. - /// Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. - /// The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. - /// Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. - /// The only current implementation of this class is PointCloudSetRealTimeController. - /// +namespace BAPointCloudRenderer.Controllers { + /// + /// A PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. + /// Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. + /// The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. + /// Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. + /// The only current implementation of this class is PointCloudSetRealTimeController. + /// + [Obsolete("This class is outdated. Please use AbstractPointCloudSet instead!")] public abstract class AbstractPointSetController : MonoBehaviour { /// diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/AbstractPointSetController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/AbstractPointSetController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/AbstractPointSetController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/AbstractPointSetController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/CameraController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CameraController.cs similarity index 72% rename from PointCloudRenderer/Assets/Scripts/Controllers/CameraController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CameraController.cs index 59f14fb4..5c87928f 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/CameraController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CameraController.cs @@ -1,8 +1,6 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; +using UnityEngine; -namespace Controllers { +namespace BAPointCloudRenderer.Controllers { /* * CameraController for flying-controls */ @@ -17,9 +15,20 @@ public class CameraController : MonoBehaviour { void Start() { //Hide the cursor + Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } + void Update() { + if (Input.GetKey(KeyCode.Escape)) { + Cursor.lockState = CursorLockMode.None; + Cursor.visible = true; + } + if (Input.GetMouseButtonDown(0)) { + Cursor.lockState = CursorLockMode.Locked; + Cursor.visible = false; + } + } void FixedUpdate() { //React to controls. (WASD, EQ and Mouse) diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/CameraController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CameraController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/CameraController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CameraController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/CloudsFromDirectoryLoader.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs similarity index 88% rename from PointCloudRenderer/Assets/Scripts/Controllers/CloudsFromDirectoryLoader.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs index fe5cbad5..cd7676b6 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/CloudsFromDirectoryLoader.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs @@ -1,13 +1,13 @@ -using System.Collections; -using System.Collections.Generic; +using System; using System.IO; using UnityEngine; -namespace Controllers { +namespace BAPointCloudRenderer.Controllers { /// /// Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. /// This controller will create a DynamicLoaderController for each of the point clouds. /// + [Obsolete("This class is outdated. Please use DirectoryLoader instead!")] public class CloudsFromDirectoryLoader : MonoBehaviour { /// @@ -27,7 +27,6 @@ void Start() { DynamicLoaderController loader = go.AddComponent(); loader.cloudPath = sub.FullName; loader.setController = pointset; - pointset.RegisterController(loader); } } } diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/CloudsFromDirectoryLoader.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/CloudsFromDirectoryLoader.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/DynamicLoaderController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/DynamicLoaderController.cs similarity index 82% rename from PointCloudRenderer/Assets/Scripts/Controllers/DynamicLoaderController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/DynamicLoaderController.cs index 8e89343c..eb792034 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/DynamicLoaderController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/DynamicLoaderController.cs @@ -1,20 +1,18 @@ using System; -using System.Collections.Generic; using System.Threading; using UnityEngine; -using DataStructures; -using ObjectCreation; -using CloudData; -using Loading; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.Loading; -namespace Controllers { +namespace BAPointCloudRenderer.Controllers { /* While PointCloudLoaderController will load the complete file as one and render the comlete one, * the DynamicLoaderController will first only load the hierarchy. It can be given registered at a PointCloudSetController to render it. */ - /// - /// Use this script to load a single PointCloud from a directory. - /// + /// + /// Use this script to load a single PointCloud from a directory. + /// + [Obsolete("This class is outdated. Please use PointCloudLoader instead!")] public class DynamicLoaderController : MonoBehaviour { /// diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/DynamicLoaderController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/DynamicLoaderController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/DynamicLoaderController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/DynamicLoaderController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudLoaderController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs similarity index 82% rename from PointCloudRenderer/Assets/Scripts/Controllers/PointCloudLoaderController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs index 43a493c1..7172ff5a 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudLoaderController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs @@ -1,15 +1,16 @@ using System; using System.Threading; using UnityEngine; -using ObjectCreation; -using CloudData; -using Loading; +using BAPointCloudRenderer.ObjectCreation; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.Loading; -namespace Controllers { - - /// - /// Loads and renders a PointCloud from a folder completely at once. For each node a GameObject is created. - /// +namespace BAPointCloudRenderer.Controllers { + + /// + /// Loads and renders a PointCloud from a folder completely at once. For each node a GameObject is created. + /// + [Obsolete("This class is outdated. Please use StaticPointCloudSet and PointCloudLoader instead!")] public class PointCloudLoaderController : MonoBehaviour { /// diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudLoaderController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/PointCloudLoaderController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudSetRealTimeController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs similarity index 78% rename from PointCloudRenderer/Assets/Scripts/Controllers/PointCloudSetRealTimeController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs index 8cdb1c70..fb6b54b6 100644 --- a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudSetRealTimeController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs @@ -1,17 +1,14 @@ -using CloudData; -using Loading; -using ObjectCreation; +using BAPointCloudRenderer.Loading; +using BAPointCloudRenderer.ObjectCreation; using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading; using UnityEngine; -namespace Controllers { - - /// - /// The PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed - /// +namespace BAPointCloudRenderer.Controllers { + + /// + /// The PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed + /// + [Obsolete("This class is outdated. Please use DynamicPointCloudSet instead!")] public class PointCloudSetRealTimeController : AbstractPointSetController { /// diff --git a/PointCloudRenderer/Assets/Scripts/Controllers/PointCloudSetRealTimeController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Controllers/PointCloudSetRealTimeController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/DataStructures.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures.meta index 76516d3b..155089da 100644 --- a/PointCloudRenderer/Assets/Scripts/DataStructures.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: a3ae9182c05ea2047a56a129dff09df0 +guid: 5f9bee7618df3454080a60bfa3c77c4e folderAsset: yes -timeCreated: 1492018354 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/HeapPriorityQueue.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs similarity index 99% rename from PointCloudRenderer/Assets/Scripts/DataStructures/HeapPriorityQueue.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs index 7cf6fbe1..0bdb4b11 100644 --- a/PointCloudRenderer/Assets/Scripts/DataStructures/HeapPriorityQueue.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs @@ -1,11 +1,8 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; -namespace DataStructures { +namespace BAPointCloudRenderer.DataStructures { /// /// A priority queue implemented with a Max Heap. This queue is threadsafe. Each function locks over a mutex-object /// diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/HeapPriorityQueue.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/DataStructures/HeapPriorityQueue.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/PriorityQueue.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/PriorityQueue.cs similarity index 98% rename from PointCloudRenderer/Assets/Scripts/DataStructures/PriorityQueue.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/PriorityQueue.cs index 4d0a21f7..60b36dc5 100644 --- a/PointCloudRenderer/Assets/Scripts/DataStructures/PriorityQueue.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/PriorityQueue.cs @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; -namespace DataStructures +namespace BAPointCloudRenderer.DataStructures { /// /// A threadsafe PriorityQueue. diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/PriorityQueue.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/PriorityQueue.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/DataStructures/PriorityQueue.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/PriorityQueue.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/RandomAccessQueue.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs similarity index 97% rename from PointCloudRenderer/Assets/Scripts/DataStructures/RandomAccessQueue.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs index fe2bf292..4f14db40 100644 --- a/PointCloudRenderer/Assets/Scripts/DataStructures/RandomAccessQueue.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -namespace DataStructures { +namespace BAPointCloudRenderer.DataStructures { /* Queue which uses a list as well as a dictionary to implement efficient enqueing, dequeuing and removal. This however increases the overhead. */ class RandomAccessQueue { diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/RandomAccessQueue.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/DataStructures/RandomAccessQueue.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/ThreadSafeQueue.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs similarity index 93% rename from PointCloudRenderer/Assets/Scripts/DataStructures/ThreadSafeQueue.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs index c5e94084..03edb360 100644 --- a/PointCloudRenderer/Assets/Scripts/DataStructures/ThreadSafeQueue.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections; +using System.Collections; using System.Collections.Generic; -using System.Linq; -using System.Text; -namespace DataStructures +namespace BAPointCloudRenderer.DataStructures { /// /// A thredsafe queue diff --git a/PointCloudRenderer/Assets/Scripts/DataStructures/ThreadSafeQueue.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/DataStructures/ThreadSafeQueue.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Eval.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/Eval.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval.meta index 832d267d..2156462d 100644 --- a/PointCloudRenderer/Assets/Scripts/Eval.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: da4b7203a43344747b223a05272c0960 +guid: 5c30a728298c9f54f99c3dd47dbc1153 folderAsset: yes -timeCreated: 1498387736 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/Eval/AnimationHelper.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/AnimationHelper.cs similarity index 84% rename from PointCloudRenderer/Assets/Scripts/Eval/AnimationHelper.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/AnimationHelper.cs index 718cf151..4321ab22 100644 --- a/PointCloudRenderer/Assets/Scripts/Eval/AnimationHelper.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/AnimationHelper.cs @@ -1,8 +1,6 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; +using UnityEngine; -namespace Eval { +namespace BAPointCloudRenderer.Eval { /// /// Used in animations. OnAnimationEnd is called in the end of the animations to exit the application. diff --git a/PointCloudRenderer/Assets/Scripts/Eval/AnimationHelper.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/AnimationHelper.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Eval/AnimationHelper.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/AnimationHelper.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Eval/DebugCloud.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DebugCloud.cs similarity index 87% rename from PointCloudRenderer/Assets/Scripts/Eval/DebugCloud.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DebugCloud.cs index 0a87d147..9967bc03 100644 --- a/PointCloudRenderer/Assets/Scripts/Eval/DebugCloud.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DebugCloud.cs @@ -1,10 +1,8 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using CloudData; -using ObjectCreation; +using UnityEngine; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.ObjectCreation; -namespace Eval { +namespace BAPointCloudRenderer.Eval { /// /// Creates a simple Debug-Point-Cloud to test the MeshConfigurations. Creates a circle of 12 points near the origin. /// diff --git a/PointCloudRenderer/Assets/Scripts/Eval/DebugCloud.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DebugCloud.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Eval/DebugCloud.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DebugCloud.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs new file mode 100644 index 00000000..ba9eb813 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs @@ -0,0 +1,76 @@ +using BAPointCloudRenderer.CloudController; +using System; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace BAPointCloudRenderer.Eval { + class DynamicAddingTest : MonoBehaviour { + + public AbstractPointCloudSet set = null; + public PointCloudLoader loader1 = null; + public String cloudPath2 = null; + private int status = 0; + private PointCloudLoader loader2; + + private void Update() { + if (Input.GetKeyDown("space")) { + if (status == 0) { + GameObject go = new GameObject("TestCloud1"); + loader1.LoadPointCloud(); + } else if (status == 1) { + GameObject go = new GameObject("TestCloud2"); + loader2 = go.AddComponent(); + loader2.cloudPath = cloudPath2; + loader2.setController = set; + } else if (status == 2) { + loader1.RemovePointCloud(); + } else if (status == 3) { + loader2.RemovePointCloud(); + } else if (status == 4) { + GameObject go = new GameObject("TestCloud2"); + loader2 = go.AddComponent(); + loader2.cloudPath = cloudPath2; + loader2.setController = set; + loader2.loadOnStart = false; + } else if (status == 5) { + loader2.LoadPointCloud(); + } else if (status == 6) { + loader2.RemovePointCloud(); + } else if (status == 7) { + set.StopRendering(); + } + status++; + } else if (Input.GetKeyDown("escape")) { + Debug.Log("Quitting"); + #if UNITY_EDITOR + UnityEditor.EditorApplication.isPlaying = false; + #else + Application.Quit(); + #endif + } else if (Input.GetKeyDown(KeyCode.O)) { + //SceneManager.LoadScene("StaticTestDemo2", LoadSceneMode.Single); + Scene s = SceneManager.GetSceneByName("StaticTestDemo2"); + if (!s.IsValid()) { + SceneManager.LoadScene("StaticTestDemo2"); + } else { + Debug.Log("Already loaded"); + SceneManager.SetActiveScene(s); + } + } else if (Input.GetKeyDown(KeyCode.P)) { + //SceneManager.LoadScene("DynamicDemo", LoadSceneMode.Single); + Scene s = SceneManager.GetSceneByName("DynamicDemo"); + if (!s.IsValid()) { + SceneManager.LoadScene("DynamicDemo"); + } else { + Debug.Log("Already loaded"); + SceneManager.SetActiveScene(s); + } + } else if (Input.GetKeyDown(KeyCode.R)) { + SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); + } + else if (Input.GetKeyDown(KeyCode.C)) { + Debug.Log("PointCount: " + set.GetPointCount()); + } + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs.meta new file mode 100644 index 00000000..207066bf --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/DynamicAddingTest.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 027f13918a693fa4991e7d8d345617b4 +timeCreated: 1545571743 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/Eval/FPSLogger.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSLogger.cs similarity index 96% rename from PointCloudRenderer/Assets/Scripts/Eval/FPSLogger.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSLogger.cs index a7795100..7753df73 100644 --- a/PointCloudRenderer/Assets/Scripts/Eval/FPSLogger.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSLogger.cs @@ -1,11 +1,12 @@ -using System; -using System.Collections; +#pragma warning disable CS1692 +#pragma warning disable CS0618 + +using System; using System.Collections.Generic; using UnityEngine; -using Controllers; -using UnityEngine.Profiling; +using BAPointCloudRenderer.Controllers; -namespace Eval { +namespace BAPointCloudRenderer.Eval { /// /// Used for logging the Frames per Second and the Updates per Second /// diff --git a/PointCloudRenderer/Assets/Scripts/Eval/FPSLogger.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSLogger.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Eval/FPSLogger.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSLogger.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Eval/FPSOutputController.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSOutputController.cs similarity index 91% rename from PointCloudRenderer/Assets/Scripts/Eval/FPSOutputController.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSOutputController.cs index 4acc8ec4..3f2c3bac 100644 --- a/PointCloudRenderer/Assets/Scripts/Eval/FPSOutputController.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSOutputController.cs @@ -1,9 +1,7 @@ -using Controllers; -using System.Collections; -using System.Collections.Generic; +using BAPointCloudRenderer.Controllers; using UnityEngine; -namespace Eval { +namespace BAPointCloudRenderer.Eval { /// /// Used for printing the current FPS contstantly /// diff --git a/PointCloudRenderer/Assets/Scripts/Eval/FPSOutputController.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSOutputController.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Eval/FPSOutputController.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Eval/FPSOutputController.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/Loading.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading.meta index fe8fc513..04cd8774 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: 7d8531a26002bb34eadc5cf3dade4114 +guid: 3098880314db9a74b9bc13cc6220d252 folderAsset: yes -timeCreated: 1492194034 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/Loading/AbstractRenderer.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/AbstractRenderer.cs similarity index 59% rename from PointCloudRenderer/Assets/Scripts/Loading/AbstractRenderer.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/AbstractRenderer.cs index 409922b8..16b0be28 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/AbstractRenderer.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/AbstractRenderer.cs @@ -1,11 +1,6 @@ -using CloudData; -using ObjectCreation; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using BAPointCloudRenderer.CloudData; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// The job of an AbstractRenderer is to create GameObjects from PointCloud-Nodes and update these each frame. /// There used to be several implementations for experimenting purposes, the only implementation right now is the V2Renderer. @@ -17,6 +12,12 @@ public interface AbstractRenderer { /// /// not null void AddRootNode(Node rootNode); + + /// + /// Removes the root node of a point cloud from the renderer. The node will not be rendered any more. + /// + /// not null + void RemoveRootNode(Node rootNode); /// /// Returns how many root nodes have been added @@ -24,10 +25,21 @@ public interface AbstractRenderer { int GetRootNodeCount(); /// - /// Stops the rendering process and all concurrent threads get scheduled to stop. + /// Stops the rendering process and all concurrent threads get scheduled to stop. + /// Also removes all cloud objects created by this renderer from the scene. /// void ShutDown(); + /// + /// Pauses the rendering and hides all visible point clouds. + /// + void Hide(); + + /// + /// Continues the rendering and displays all visible point clouds after them being hidden via hide. + /// + void Display(); + /// /// Returns the current PointCount, so how many points are loaded / visible /// diff --git a/PointCloudRenderer/Assets/Scripts/Loading/AbstractRenderer.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/AbstractRenderer.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/AbstractRenderer.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/AbstractRenderer.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/CloudLoader.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/CloudLoader.cs similarity index 94% rename from PointCloudRenderer/Assets/Scripts/Loading/CloudLoader.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/CloudLoader.cs index a08fc8d5..e3cfc5d1 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/CloudLoader.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/CloudLoader.cs @@ -1,11 +1,10 @@ -using CloudData; +using BAPointCloudRenderer.CloudData; using System.Collections.Generic; using System.IO; using System.Text; -using System.Threading; using UnityEngine; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// Provides methods for loading point clouds from the file system /// @@ -177,13 +176,20 @@ private static byte[] FindAndLoadFile(string dataRPath, PointCloudMetaData metaD /* Loads the points for that node and all its children */ - private static void LoadAllPoints(string dataRPath, PointCloudMetaData metaData, Node node) { + private static uint LoadAllPoints(string dataRPath, PointCloudMetaData metaData, Node node) { LoadPoints(dataRPath, metaData, node); + uint numpoints = (uint)node.PointCount; for (int i = 0; i < 8; i++) { if (node.HasChild(i)) { - LoadAllPoints(dataRPath, metaData, node.GetChild(i)); + numpoints += LoadAllPoints(dataRPath, metaData, node.GetChild(i)); } } + return numpoints; + } + + public static uint LoadAllPointsForNode(Node node) { + string dataRPath = node.MetaData.cloudPath + node.MetaData.octreeDir + "\\r\\"; + return LoadAllPoints(dataRPath, node.MetaData, node); } } } diff --git a/PointCloudRenderer/Assets/Scripts/Loading/CloudLoader.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/CloudLoader.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/CloudLoader.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/CloudLoader.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/PointAttributes.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/PointAttributes.cs similarity index 69% rename from PointCloudRenderer/Assets/Scripts/Loading/PointAttributes.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/PointAttributes.cs index c53d7f44..4e83d037 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/PointAttributes.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/PointAttributes.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Loading + +namespace BAPointCloudRenderer.Loading { /// /// Attributes for FileReading diff --git a/PointCloudRenderer/Assets/Scripts/Loading/PointAttributes.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/PointAttributes.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/PointAttributes.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/PointAttributes.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs new file mode 100644 index 00000000..d1460fe7 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs @@ -0,0 +1,149 @@ +using System.Collections.Generic; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.ObjectCreation; +using System.Threading; +using System; + +namespace BAPointCloudRenderer.Loading { + /// + /// Renderer for the StaticPointCloudSet. Each node that is passed to this renderer is loaded completely and then displayed all at once. + /// It is possible to add and remove nodes after initialization. + /// + class StaticRenderer : AbstractRenderer { + + private Queue toLoad; + private List rootNodes; + private Dictionary nodePointcounts; + private Queue toDisplay; + private Queue toRemove; + private MeshConfiguration config; + private bool running = false; + private Thread loadingThread; + private uint pointcount = 0; + private bool visible = true; + + public StaticRenderer(MeshConfiguration config) { + rootNodes = new List(); + toLoad = new Queue(); + toDisplay = new Queue(); + toRemove = new Queue(); + nodePointcounts = new Dictionary(); + this.config = config; + } + + public void AddRootNode(Node rootNode) { + toLoad.Enqueue(rootNode); + if (!running) { + if (loadingThread != null) { + loadingThread.Join(); + } + loadingThread = new Thread(Load); + loadingThread.Start(); + } + } + + public uint GetPointCount() { + return pointcount; + } + + public int GetRootNodeCount() { + return rootNodes.Count; + } + + public void RemoveRootNode(Node rootNode) { + rootNodes.Remove(rootNode); + toRemove.Enqueue(rootNode); + } + + public void ShutDown() { + running = false; + if (loadingThread != null) { + loadingThread.Join(); + } + toDisplay.Clear(); + toRemove.Clear(); + lock (toRemove) { + foreach (Node node in rootNodes) { + toRemove.Enqueue(node); + } + } + running = true; + Update(); + running = false; + rootNodes.Clear(); + } + + public void Update() { + if (!running) return; + if (visible) { + Monitor.Enter(toDisplay); + while (toDisplay.Count != 0) { + Node n = toDisplay.Dequeue(); + Monitor.Exit(toDisplay); + n.CreateAllGameObjects(config); + lock (nodePointcounts) { + pointcount += nodePointcounts[n]; + } + Monitor.Enter(toDisplay); + } + Monitor.Exit(toDisplay); + } + Monitor.Enter(toRemove); + while (toRemove.Count != 0) { + Node n = toRemove.Dequeue(); + Monitor.Exit(toRemove); + n.RemoveAllGameObjects(config); + lock (nodePointcounts) { + if (nodePointcounts.ContainsKey(n)) { + pointcount -= nodePointcounts[n]; + nodePointcounts.Remove(n); + } + } + Monitor.Enter(toRemove); + } + Monitor.Exit(toRemove); + } + + private void Load() { + running = true; + while (running) { + Monitor.Enter(toLoad); + if (toLoad.Count != 0) { + Node n = toLoad.Dequeue(); + Monitor.Exit(toLoad); + uint pc = CloudLoader.LoadAllPointsForNode(n); + lock (nodePointcounts) { + nodePointcounts.Add(n, pc); + } + lock (rootNodes) { + rootNodes.Add(n); + } + lock (toDisplay) { + toDisplay.Enqueue(n); + } + } else { + Monitor.Exit(toLoad); + } + } + } + + + public void Hide() { + visible = false; + lock (rootNodes) { + foreach (Node n in rootNodes) { + n.DeactivateAllGameObjects(); + } + } + } + + public void Display() { + lock (rootNodes) { + foreach (Node n in rootNodes) { + n.ReactivateAllGameObjects(); + } + } + visible = true; + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs.meta new file mode 100644 index 00000000..9573c6bf --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/StaticRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4c369ce98ff8b24e9978da2dcf40849 +timeCreated: 1545575539 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/Loading/Util.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/Util.cs similarity index 94% rename from PointCloudRenderer/Assets/Scripts/Loading/Util.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/Util.cs index 3b1f9b56..195232c5 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/Util.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/Util.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using CloudData; +using BAPointCloudRenderer.CloudData; using UnityEngine; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// Various help functions /// diff --git a/PointCloudRenderer/Assets/Scripts/Loading/Util.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/Util.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/Util.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/Util.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2Cache.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Cache.cs similarity index 94% rename from PointCloudRenderer/Assets/Scripts/Loading/V2Cache.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Cache.cs index df8cd935..c46c1bb5 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/V2Cache.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Cache.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using DataStructures; -using CloudData; +using BAPointCloudRenderer.DataStructures; +using BAPointCloudRenderer.CloudData; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// The LRU Cache used by the V2Renderer (See Bachelor Thesis chapter 3.2.7 "LRU Cache"). /// diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2Cache.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Cache.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/V2Cache.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Cache.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2LoadingThread.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2LoadingThread.cs similarity index 90% rename from PointCloudRenderer/Assets/Scripts/Loading/V2LoadingThread.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2LoadingThread.cs index 86dc725b..4af1e780 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/V2LoadingThread.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2LoadingThread.cs @@ -1,13 +1,10 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using DataStructures; -using CloudData; +using BAPointCloudRenderer.DataStructures; +using BAPointCloudRenderer.CloudData; using System.Threading; using UnityEngine; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// The Loading Thread of the V2-Rendering-System (see Bachelor Thesis chapter 3.2.6 "The Loading Thread"). /// Responsible for loading the point data. @@ -24,6 +21,7 @@ public V2LoadingThread(V2Cache cache) { } public void Start() { + running = true; new Thread(Run).Start(); } @@ -45,7 +43,6 @@ private void Run() { } catch (Exception ex) { Debug.LogError(ex); } - Debug.Log("Loading Thread stopped"); } public void Stop() { diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2LoadingThread.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2LoadingThread.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/V2LoadingThread.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2LoadingThread.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2Renderer.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Renderer.cs similarity index 60% rename from PointCloudRenderer/Assets/Scripts/Loading/V2Renderer.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Renderer.cs index cd502782..be34bac4 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/V2Renderer.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Renderer.cs @@ -1,21 +1,22 @@ -using CloudData; -using ObjectCreation; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.ObjectCreation; using System.Collections.Generic; using System.Threading; using UnityEngine; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// The multithreaded Real-Time-Renderer as described in the Bachelor Thesis in chapter 3.2.2 - 3.2.7 /// class V2Renderer : AbstractRenderer { - private bool shuttingDown = false; //true, iff everything should be stopped (the point loading will stop and every method will not do anything anymore) + private bool paused = false; //true, iff everything should be stopped (the point loading will stop and every method will not do anything anymore) private V2TraversalThread traversalThread; private V2LoadingThread loadingThread; private V2Cache cache; private List rootNodes; //List of root nodes of the point clouds + private Thread unityThread = null; private MeshConfiguration config; private uint renderingpointcount; @@ -26,6 +27,7 @@ class V2Renderer : AbstractRenderer { private object locker = new object(); private Queue toRender; private Queue toDelete; + private Queue toDeleteExternal; //Nodes that have been scheduled for removal via removeRoot /// /// Creates a new V2Renderer and starts all the threads @@ -46,6 +48,7 @@ public V2Renderer(int minNodeSize, uint pointBudget, uint nodesLoadedPerFrame, u loadingThread.Start(); traversalThread = new V2TraversalThread(this, loadingThread, rootNodes, minNodeSize, pointBudget, nodesLoadedPerFrame, nodesGOsperFrame, cache); traversalThread.Start(); + toDeleteExternal = new Queue(); } /// @@ -56,24 +59,39 @@ public void AddRootNode(Node rootNode) { rootNodes.Add(rootNode); } + /// + /// Removes the root node of a point cloud from the renderer. The node will not be rendered any more. + /// This has to be called from the main thread! + /// + /// not null + public void RemoveRootNode(Node rootNode) { + lock (toDeleteExternal) { + toDeleteExternal.Enqueue(rootNode); + } + } + /// /// Returns how many root nodes have been added /// public int GetRootNodeCount() { - return rootNodes.Count; + lock (toDeleteExternal) { + return rootNodes.Count - toDeleteExternal.Count; + } } /// /// True, if ShutDown() has not been called yet /// public bool IsRunning() { - return !shuttingDown; + return !paused; } /// /// Gives the current camera data to the traversal thread and updates the GameObjects. Called from the MainThread. As described in the Bachelor Thesis in chapter 3.1.3 "Main Thread" /// public void Update() { + unityThread = Thread.CurrentThread; + if (paused) return; //Set new Camera Data traversalThread.SetNextCameraData(camera.transform.position, camera.transform.forward, GeometryUtility.CalculateFrustumPlanes(camera), camera.pixelRect.height, camera.fieldOfView); @@ -106,7 +124,28 @@ public void Update() { } } } - + Monitor.Enter(toDeleteExternal); + while (toDeleteExternal.Count != 0) { + Node rootNode = toDeleteExternal.Dequeue(); + rootNodes.Remove(rootNode); + Queue toRemove = new Queue(); + toRemove.Enqueue(rootNode); + while (toRemove.Count != 0) { + Node n = toRemove.Dequeue(); + cache.Withdraw(n); + if (n.HasGameObjects()) { + n.RemoveGameObjects(config); + } + if (n.HasPointsToRender()) { + n.ForgetPoints(); + foreach (Node child in n) { + toRemove.Enqueue(child); + } + } + } + } + Monitor.Exit(toDeleteExternal); + //Notify Traversal Thread lock (traversalThread) { Monitor.PulseAll(traversalThread); @@ -115,15 +154,57 @@ public void Update() { /// /// Stops the rendering process and all threads + /// Must be called from the main thread! /// public void ShutDown() { - shuttingDown = true; + if (unityThread != null && Thread.CurrentThread != unityThread) { + throw new System.Exception("ShutDown() has to be called from the Unity Main Thread!"); + } + Pause(); + foreach (Node node in rootNodes) { + node.RemoveAllGameObjects(config); + } + } + + /// + /// Pauses the updating of the rendering. + /// + public void Pause() { + paused = true; traversalThread.Stop(); lock (traversalThread) { Monitor.PulseAll(traversalThread); } loadingThread.Stop(); - + } + + /// + /// Continues the rendering after pausing + /// + public void Continue() { + loadingThread.Start(); + traversalThread.Start(); + paused = false; + } + + /// + /// Pauses the rendering and hides all visible point clouds. + /// + public void Hide() { + Pause(); + foreach (Node node in rootNodes) { + node.DeactivateAllGameObjects(); + } + } + + /// + /// Continues the rendering and displays all visible point clouds after them being hidden via hide. + /// + public void Display() { + foreach (Node node in rootNodes) { + node.ReactivateAllGameObjects(); + } + Continue(); } /// diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2Renderer.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Renderer.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/V2Renderer.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2Renderer.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2TraversalThread.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2TraversalThread.cs similarity index 74% rename from PointCloudRenderer/Assets/Scripts/Loading/V2TraversalThread.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2TraversalThread.cs index 02ea5711..d0da612b 100644 --- a/PointCloudRenderer/Assets/Scripts/Loading/V2TraversalThread.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2TraversalThread.cs @@ -1,13 +1,11 @@ -using CloudData; -using DataStructures; +using BAPointCloudRenderer.CloudData; +using BAPointCloudRenderer.DataStructures; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading; using UnityEngine; -namespace Loading { +namespace BAPointCloudRenderer.Loading { /// /// The traversal thread of the V2 Rendering System. Checks constantly, which nodes are visible and should be rendered and which not. Described in the Bachelor Thesis in chapter 3.2.4 "Traversal Thread". /// This is the place, where most of the magic happens. @@ -37,6 +35,8 @@ class V2TraversalThread { private V2LoadingThread loadingThread; private V2Cache cache; + private Thread thread; + /// /// Creates the object, but does not start the thread yet /// @@ -56,7 +56,9 @@ public V2TraversalThread(V2Renderer mainThread, V2LoadingThread loadingThread, L /// Starts the thread /// public void Start() { - new Thread(Run).Start(); + thread = new Thread(Run); + running = true; + thread.Start(); } private void Run() { @@ -75,7 +77,6 @@ private void Run() { } catch (Exception ex) { Debug.LogError(ex); } - Debug.Log("Traversal Thread stopped"); } /// @@ -118,7 +119,7 @@ private uint TraverseAndBuildRenderingQueue() { } //Clearing Queues uint renderingpointcount = 0; - uint maxnodestoprocess = nodesLoadedPerFrame; + uint maxnodestoload = nodesLoadedPerFrame; uint maxnodestorender = nodesGOsPerFrame; HashSet newVisibleNodes = new HashSet(); @@ -138,34 +139,45 @@ private uint TraverseAndBuildRenderingQueue() { } } - while (maxnodestoprocess > 0 && maxnodestorender > 0 && !toProcess.IsEmpty() && running) { + while (!toProcess.IsEmpty() && running) { Node n = toProcess.Dequeue(); //Min Node Size was already checked //Is Node inside frustum? if (Util.InsideFrustum(n.BoundingBox, frustum)) { - + + bool loadchildren = false; lock (n) { if (n.PointCount == -1) { - loadingThread.ScheduleForLoading(n); - --maxnodestoprocess; + if (maxnodestoload > 0) { + loadingThread.ScheduleForLoading(n); + --maxnodestoload; + loadchildren = true; + } } else if (renderingpointcount + n.PointCount <= pointBudget) { if (n.HasGameObjects()) { renderingpointcount += (uint)n.PointCount; visibleNodes.Remove(n); newVisibleNodes.Add(n); + loadchildren = true; } else if (n.HasPointsToRender()) { //Might be in Cache -> Withdraw - cache.Withdraw(n); - renderingpointcount += (uint)n.PointCount; - toRender.Enqueue(n); - --maxnodestorender; - newVisibleNodes.Add(n); + if (maxnodestorender > 0) { + cache.Withdraw(n); + renderingpointcount += (uint)n.PointCount; + toRender.Enqueue(n); + --maxnodestorender; + newVisibleNodes.Add(n); + loadchildren = true; + } } else { - loadingThread.ScheduleForLoading(n); - --maxnodestoprocess; + if (maxnodestoload > 0) { + loadingThread.ScheduleForLoading(n); + --maxnodestoload; + loadchildren = true; + } } } else { - maxnodestoprocess = 0; + maxnodestoload = 0; maxnodestorender = 0; if (n.HasGameObjects()) { visibleNodes.Remove(n); @@ -174,22 +186,24 @@ private uint TraverseAndBuildRenderingQueue() { } } - foreach (Node child in n) { - Vector3 center = child.BoundingBox.GetBoundsObject().center; - double distance = (center - cameraPosition).magnitude; - double slope = Math.Tan(fieldOfView / 2 * Mathf.Deg2Rad); - double projectedSize = (screenHeight / 2.0) * child.BoundingBox.Radius() / (slope * distance); - if (projectedSize > minNodeSize) { - Vector3 camToNodeCenterDir = (center - cameraPosition).normalized; - double angle = Math.Acos(camForward.x * camToNodeCenterDir.x + camForward.y * camToNodeCenterDir.y + camForward.z * camToNodeCenterDir.z); - double angleWeight = Math.Abs(angle) + 1.0; //+1, to prevent divsion by zero - double priority = projectedSize / angleWeight; - toProcess.Enqueue(child, priority); - } else { - DeleteNode(child); + if (loadchildren) { + foreach (Node child in n) { + Vector3 center = child.BoundingBox.GetBoundsObject().center; + double distance = (center - cameraPosition).magnitude; + double slope = Math.Tan(fieldOfView / 2 * Mathf.Deg2Rad); + double projectedSize = (screenHeight / 2.0) * child.BoundingBox.Radius() / (slope * distance); + if (projectedSize > minNodeSize) { + Vector3 camToNodeCenterDir = (center - cameraPosition).normalized; + double angle = Math.Acos(camForward.x * camToNodeCenterDir.x + camForward.y * camToNodeCenterDir.y + camForward.z * camToNodeCenterDir.z); + double angleWeight = Math.Abs(angle) + 1.0; //+1, to prevent divsion by zero + double priority = projectedSize / angleWeight; + toProcess.Enqueue(child, priority); + } else { + DeleteNode(child); + } } } - + } else { //This node or its children might be visible DeleteNode(n); @@ -238,5 +252,14 @@ public void Stop() { } } + public void StopAndWait() { + running = false; + if (thread != null) { + thread.Join(); + thread = null; + } + + } + } } diff --git a/PointCloudRenderer/Assets/Scripts/Loading/V2TraversalThread.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2TraversalThread.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/Loading/V2TraversalThread.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/Loading/V2TraversalThread.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation.meta similarity index 57% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation.meta index a9eb2370..51c5ead2 100644 --- a/PointCloudRenderer/Assets/Scripts/ObjectCreation.meta +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: 2d1a738e293bc754299c6a57afdbd926 +guid: 372ad7ab7265dd9448554c1c5798dfae folderAsset: yes -timeCreated: 1492194034 -licenseType: Free DefaultImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs new file mode 100644 index 00000000..fbc01b79 --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs @@ -0,0 +1,152 @@ +using BAPointCloudRenderer.CloudData; +using System.Collections.Generic; +using UnityEngine; + +namespace BAPointCloudRenderer.ObjectCreation { + + /// + /// What kind of interpolation to use + /// + enum FragInterpolationMode { + /// + /// No interpolation + /// + OFF, + /// + /// Paraboloids + /// + PARABOLOIDS, + /// + /// Cones + /// + CONES + } + + /// + /// This is the default Mesh Configuration, that is able to render points as pixels, quads, circles and also provides fragment and cone interpolations using the fragment shader (see Thesis chapter 3.3.4 "Interpolation"). + /// This works using Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. + /// This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". + /// This class replaces GeoQuadMeshConfiguration in Version 1.2. + /// + class DefaultMeshConfiguration : MeshConfiguration { + /// + /// Radius of the point (in pixel or world units, depending on variable screenSize) + /// + public float pointRadius = 5; + /// + /// Whether the quads should be rendered as circles (true) or as squares (false) + /// + public bool renderCircles = false; + /// + /// True, if pointRadius should be interpreted as pixels, false if it should be interpreted as world units + /// + public bool screenSize = true; + /// + /// Wether and how to use interpolation + /// + public FragInterpolationMode interpolation = FragInterpolationMode.OFF; + /// + /// If changing the parameters should be possible during execution, this variable has to be set to true in the beginning! Later changes to this variable will not change anything + /// + public const bool reloadingPossible = true; + /// + /// Set this to true to reload the shaders according to the changed parameters. After applying the changes, the variable will set itself back to false. + /// + public bool reload = false; + + private Material material; + private Camera mainCamera; + private HashSet gameObjectCollection = null; + + private void LoadShaders() { + if (interpolation == FragInterpolationMode.OFF) { + if (screenSize) { + material = new Material(Shader.Find("Custom/QuadGeoScreenSizeShader")); + } else { + material = new Material(Shader.Find("Custom/QuadGeoWorldSizeShader")); + } + } else if (interpolation == FragInterpolationMode.PARABOLOIDS || interpolation == FragInterpolationMode.CONES) { + if (screenSize) { + material = new Material(Shader.Find("Custom/ParaboloidFragScreenSizeShader")); + } else { + material = new Material(Shader.Find("Custom/ParaboloidFragWorldSizeShader")); + } + material.SetInt("_Cones", (interpolation == FragInterpolationMode.CONES) ? 1 : 0); + } + material.SetFloat("_PointSize", pointRadius); + material.SetInt("_Circles", renderCircles ? 1 : 0); + } + + public void Start() { + if (reloadingPossible) { + gameObjectCollection = new HashSet(); + } + LoadShaders(); + mainCamera = Camera.main; + } + + public void Update() { + if (reload && gameObjectCollection != null) { + LoadShaders(); + foreach (GameObject go in gameObjectCollection) { + go.GetComponent().material = material; + } + reload = false; + } + if (screenSize) { + if (interpolation != FragInterpolationMode.OFF) { + Matrix4x4 invP = (GL.GetGPUProjectionMatrix(mainCamera.projectionMatrix, true)).inverse; + material.SetMatrix("_InverseProjMatrix", invP); + material.SetFloat("_FOV", Mathf.Deg2Rad * mainCamera.fieldOfView); + } + Rect screen = Camera.main.pixelRect; + material.SetInt("_ScreenWidth", (int)screen.width); + material.SetInt("_ScreenHeight", (int)screen.height); + } + } + + public override GameObject CreateGameObject(string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox) { + GameObject gameObject = new GameObject(name); + + Mesh mesh = new Mesh(); + + MeshFilter filter = gameObject.AddComponent(); + filter.mesh = mesh; + MeshRenderer renderer = gameObject.AddComponent(); + renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + renderer.receiveShadows = false; + renderer.material = material; + + int[] indecies = new int[vertexData.Length]; + for (int i = 0; i < vertexData.Length; ++i) { + indecies[i] = i; + } + mesh.vertices = vertexData; + mesh.colors = colorData; + mesh.SetIndices(indecies, MeshTopology.Points, 0); + + //Set Translation + gameObject.transform.Translate(boundingBox.Min().ToFloatVector()); + + if (gameObjectCollection != null) { + gameObjectCollection.Add(gameObject); + } + + return gameObject; + } + + public override int GetMaximumPointsPerMesh() { + return 65000; + } + + public override void RemoveGameObject(GameObject gameObject) { + if (gameObjectCollection != null) { + gameObjectCollection.Remove(gameObject); + } + if (gameObject != null) { + Destroy(gameObject.GetComponent().sharedMesh); + Destroy(gameObject); + } + } + } +} diff --git a/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs.meta new file mode 100644 index 00000000..0dd053ad --- /dev/null +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9426ae4860d7da4a842b646949c76c4 +timeCreated: 1541450063 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/GeoQuadMeshConfiguration.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs similarity index 97% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/GeoQuadMeshConfiguration.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs index f94251d3..44500250 100644 --- a/PointCloudRenderer/Assets/Scripts/ObjectCreation/GeoQuadMeshConfiguration.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs @@ -1,11 +1,9 @@ -using CloudData; +using BAPointCloudRenderer.CloudData; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; -namespace ObjectCreation { +namespace BAPointCloudRenderer.ObjectCreation { /// /// What kind of interpolation to use @@ -47,6 +45,7 @@ enum InterpolationMode { /// Also supports various interpolation modes (see Thesis chapter 3.3.4 "Interpolation"). /// This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". /// + [Obsolete("This class is for experimental purposes only. For practical usage, please use DefaultMeshConfiguration")] class GeoQuadMeshConfiguration : MeshConfiguration { /// diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/GeoQuadMeshConfiguration.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/GeoQuadMeshConfiguration.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/MeshConfiguration.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs similarity index 92% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/MeshConfiguration.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs index 65b146cd..fb84fe94 100644 --- a/PointCloudRenderer/Assets/Scripts/ObjectCreation/MeshConfiguration.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs @@ -1,11 +1,7 @@ -using CloudData; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using BAPointCloudRenderer.CloudData; using UnityEngine; -namespace ObjectCreation +namespace BAPointCloudRenderer.ObjectCreation { /// /// Defines how the points of a point cloud are rendered (points / quads / spheres etc.). diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/MeshConfiguration.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/MeshConfiguration.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/PointMeshConfiguration.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs similarity index 95% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/PointMeshConfiguration.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs index ebc807d5..24fdb598 100644 --- a/PointCloudRenderer/Assets/Scripts/ObjectCreation/PointMeshConfiguration.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs @@ -1,8 +1,7 @@ -using System; -using CloudData; +using BAPointCloudRenderer.CloudData; using UnityEngine; -namespace ObjectCreation +namespace BAPointCloudRenderer.ObjectCreation { /// /// Renders every point as a single pixel using the points primitive. As described in the Bachelor Thesis in chapter 3.3.1 "Single-Pixel Point Rendering". diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/PointMeshConfiguration.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/PointMeshConfiguration.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/Quad4PointMeshConfiguration.cs b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs similarity index 94% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/Quad4PointMeshConfiguration.cs rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs index 288d565c..58086a76 100644 --- a/PointCloudRenderer/Assets/Scripts/ObjectCreation/Quad4PointMeshConfiguration.cs +++ b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs @@ -1,13 +1,14 @@ using System; -using CloudData; +using BAPointCloudRenderer.CloudData; using UnityEngine; -namespace ObjectCreation +namespace BAPointCloudRenderer.ObjectCreation { /// /// 4-Vertex Quad Rendering, as described in the thesis in chapter 3.3.2. /// Creates sceen faced squares or circles for each point with a given size in pixels, by passing each vertex 4 times to the GPU /// + [Obsolete("This class is for experimental purposes only. For practical usage, please use DefaultMeshConfiguration")] class Quad4PointMeshConfiguration : MeshConfiguration { /// /// Radius in pixel diff --git a/PointCloudRenderer/Assets/Scripts/ObjectCreation/Quad4PointMeshConfiguration.cs.meta b/PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs.meta similarity index 100% rename from PointCloudRenderer/Assets/Scripts/ObjectCreation/Quad4PointMeshConfiguration.cs.meta rename to PointCloudRenderer/Assets/Scripts/BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs.meta diff --git a/PointCloudRenderer/Assets/Scripts/doxy.config b/PointCloudRenderer/Assets/Scripts/doxy.config index 7eb50176..af93ff73 100644 --- a/PointCloudRenderer/Assets/Scripts/doxy.config +++ b/PointCloudRenderer/Assets/Scripts/doxy.config @@ -32,13 +32,13 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "Point Cloud Renderer" +PROJECT_NAME = "BA Point Cloud Renderer" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.0 +PROJECT_NUMBER = 1.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -890,7 +890,8 @@ EXCLUDE_SYMLINKS = NO # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = */Eval/* + # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the diff --git a/PointCloudRenderer/Assets/Scripts/doxy.config.meta b/PointCloudRenderer/Assets/Scripts/doxy.config.meta index 0ab1c034..56139da6 100644 --- a/PointCloudRenderer/Assets/Scripts/doxy.config.meta +++ b/PointCloudRenderer/Assets/Scripts/doxy.config.meta @@ -1,8 +1,31 @@ fileFormatVersion: 2 guid: af3ab9a296af8764e9e64a2336520a3b -timeCreated: 1498074704 -licenseType: Free -DefaultImporter: +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: {} userData: assetBundleName: assetBundleVariant: diff --git a/PointCloudRenderer/Assets/Scripts/doxyMainPage.MD b/PointCloudRenderer/Assets/Scripts/doxyMainPage.MD index 3e270eac..80fe5b8e 100644 --- a/PointCloudRenderer/Assets/Scripts/doxyMainPage.MD +++ b/PointCloudRenderer/Assets/Scripts/doxyMainPage.MD @@ -6,14 +6,15 @@ simon.fraiss@gmx.at Namespaces: * CloudData: Containing data structures for storing the cloud data -* Controllers: MonoBehaviour-Scripts for loading PointClouds +* CloudController: MonoBehaviour-Scripts for loading PointClouds +* Controllers: Mostly old obselete classes. You can use the CameraController if you want though. * DataStructures: Useful data structures used in the Project -* Eval: Helper classes used during Evaluation * Loading: The GameObject-Update-System * ObjectCreation: MeshConfigurations defining how the points should be rendered Important classes for usage: -* Controllers.PointCloudSetRealTimeController: Attach this script to your scene to set rendering options like point budget etc. -* Controllers.DynamicLoaderController: Use this script to load one point cloud and attach it to the PointCloudSetRealTimeController -* ObjectCreation.MeshConfiguration: Attach one of its subclasses to your scene and attach it to the PointCloudSetRealTimeController, in order to determine how the points should be rendered +* CloudController.StaticPointCloudSet: Needed for simple point cloud rendering (everything is rendered at once) +* CloudController.DynamicPointCloudSet: Needed for dynamic point cloud rendering (based on current camera position) +* CloudController.PointCloudLoader: Use this script to load one point cloud and attach it to the PointCloudSet +* ObjectCreation.MeshConfiguration: Attach one of its subclasses to your scene and attach it to the PointCloudSet, in order to determine how the points should be rendered diff --git a/PointCloudRenderer/Packages/manifest.json b/PointCloudRenderer/Packages/manifest.json new file mode 100644 index 00000000..16819bf7 --- /dev/null +++ b/PointCloudRenderer/Packages/manifest.json @@ -0,0 +1,40 @@ +{ + "dependencies": { + "com.unity.ads": "2.3.1", + "com.unity.analytics": "3.2.2", + "com.unity.collab-proxy": "1.2.15", + "com.unity.package-manager-ui": "2.0.3", + "com.unity.purchasing": "2.0.3", + "com.unity.textmeshpro": "1.3.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/PointCloudRenderer/ProjectSettings/EditorBuildSettings.asset b/PointCloudRenderer/ProjectSettings/EditorBuildSettings.asset index c084adb2..50648cc3 100644 Binary files a/PointCloudRenderer/ProjectSettings/EditorBuildSettings.asset and b/PointCloudRenderer/ProjectSettings/EditorBuildSettings.asset differ diff --git a/PointCloudRenderer/ProjectSettings/GraphicsSettings.asset b/PointCloudRenderer/ProjectSettings/GraphicsSettings.asset index 61592214..21ebf294 100644 Binary files a/PointCloudRenderer/ProjectSettings/GraphicsSettings.asset and b/PointCloudRenderer/ProjectSettings/GraphicsSettings.asset differ diff --git a/PointCloudRenderer/ProjectSettings/PresetManager.asset b/PointCloudRenderer/ProjectSettings/PresetManager.asset new file mode 100644 index 00000000..99adc67b Binary files /dev/null and b/PointCloudRenderer/ProjectSettings/PresetManager.asset differ diff --git a/PointCloudRenderer/ProjectSettings/ProjectSettings.asset b/PointCloudRenderer/ProjectSettings/ProjectSettings.asset index e588b33a..a9985bc0 100644 Binary files a/PointCloudRenderer/ProjectSettings/ProjectSettings.asset and b/PointCloudRenderer/ProjectSettings/ProjectSettings.asset differ diff --git a/PointCloudRenderer/ProjectSettings/ProjectVersion.txt b/PointCloudRenderer/ProjectSettings/ProjectVersion.txt index 6e4d03da..ca32b1e0 100644 --- a/PointCloudRenderer/ProjectSettings/ProjectVersion.txt +++ b/PointCloudRenderer/ProjectSettings/ProjectVersion.txt @@ -1 +1 @@ -m_EditorVersion: 5.6.1f1 +m_EditorVersion: 2018.3.0f2 diff --git a/PointCloudRenderer/ProjectSettings/UnityConnectSettings.asset b/PointCloudRenderer/ProjectSettings/UnityConnectSettings.asset index bc6433f1..2f719994 100644 Binary files a/PointCloudRenderer/ProjectSettings/UnityConnectSettings.asset and b/PointCloudRenderer/ProjectSettings/UnityConnectSettings.asset differ diff --git a/PointCloudRenderer/ProjectSettings/VFXManager.asset b/PointCloudRenderer/ProjectSettings/VFXManager.asset new file mode 100644 index 00000000..99af3a01 Binary files /dev/null and b/PointCloudRenderer/ProjectSettings/VFXManager.asset differ diff --git a/README.md b/README.md index 0a6efb40..4ba5c7d8 100644 --- a/README.md +++ b/README.md @@ -8,47 +8,57 @@ Please refer to the code documentation for details about the classes and scripts For details about the algorithms please refer to the bachelor thesis (https://www.cg.tuwien.ac.at/research/publications/2017/FRAISS-2017-PCU/). Below you will find a Getting-Started-Guide -## Projects & Demo-Scenes: -* PointCloudRenderer: Main-Project. - This project is able to load a pointcloud in the Potree-format, as described in the bachelor thesis. - - There are currently three demo scenes: - - * Assets/Scenes/BigCloudScene.unity: - In this example scene, all clouds from all folders in the folder "Clouds/big" are loaded. - - * Assets/Scenes/DemoScene.unity: - In this example scene, four separate clouds are loaded. - - * Assets/Scenes/OneTimeScene.unity: - In this example scene, one cloud is loaded at the beginning completely (without the lod-algorithms from the thesis). - - * Assets/Scenes/RenderTestScene.unity: - In this scene, only 12 points are rendered in order to test the correct rendering. - - Moving around can be done using the WASD-keys as well as EQ for moving up and down, LeftShift for moving with higher speed and C for moving with lower speed. - -* Tests: Used to test several classes in the other projects. +## Change Log +### Version 1.2 (19.02.2019): +* Did some renaming and made some components easier to use. + * All the packages are subpackages of "BAPointCloudRenderer" + * There is a new package "BAPointCloudRenderer.CloudController" containing new versions of the classes from the old "Controllers"-package + * "AbstractPointSetController", "CloudsFromDirectoryLoader", "DynamicLoaderController", "PointCloudLoaderController" and "PointCloudSetRealTimeController" are now deprecated. Please use "AbstractPointCloudSet", "DirectoryLoader", "PointCloudLoader", "StaticPointCloudSet" and "DynamicPointCloudSet" respectively instead. + * "GeoQuadMeshConfiguration" and "Quad4PointMeshConfiguration" are now deprecated. Please use "DefaltMeshConfiguration" instead. +* Created a new Point Cloud Set type for simple one-time loading and rendering of small point clouds: StaticPointCloudSet +* You can now add new point clouds to the sets when the project is already running. Simply create a Point Cloud Loader object and specify the corresponding Point Cloud Set. It's also possible now to create a Loader in the editor without it being loaded at the beginning of the application. By setting "loadOnStart" to false, you can call "LoadPointCloud" later to load it on demand. +* The renderer-objects now provide better functions for pausing and continuing rendering. +* Small bug fixings and improvements +* The project is now available as a .unitypackage-file, so you don't have to download the whole project anymore. + +### Future +Features that may or may not come in the future (Right now, I do this in my leisure time, so I cannot work a lot on it): +* Eye-Dome-Lighting +* Adaptive Point Sizes +* Test WebGL/VR-Support +* Loading Point Clouds from the Resources-folder +* laz-support +* PointCloud-preview in editor +* PointCloud-transformations + +Feel free to send me feedback! It's great to see that many people are using this project! ## Getting Started Here's a short tutorial on how to display your own cloud in the project. -1. If your point cloud is not in the Potree format yet, you first have to convert it. Head over to https://github.com/potree/PotreeConverter/releases, download the PotreeConverter and convert your cloud into the Potree format. -2. Open the project "PointCloudRenderer" in Unity. Go to "File"->"New Scene" to create a new scene. Press Crtl+S to save it (prefferably in the Scenes-folder). -3. If you want to be able to navigate the camera through the scene, select the Main Camera in the Scene Graph and press "Add Component" in the Inspector. Choose "Scripts"->"Controllers"->"Camera Controllers". When you start the game, you can then move the camera around by using the mouse and the WASD-keys as well as EQ for moving up and down, LeftShift for moving with higher speed and C for moving with lower speed. You can set the normal speed in the Inspector. -4. Let's create a MeshConfiguration. This will determine how the point cloud will be rendered. Right click in the Scene Graph and select "Create Empty". Name this object "MeshConfiguration" or something similar. Press "Add Component" in the Inspector and select "Scripts"->"Object Creation". Here three different Configurations are available. These are the three different approaches described in the thesis ("PointMeshConfiguration" is Single-Pixel Point Rendering, "Quad4PointMeshConfiguration" is 4-Vertex Quad Rendering and "GeoQuadMeshConfiguration" is Geometry Shader Quad Rendering). Usually, GeoQuadMeshConfiguration is the best choice. You can then change the settings of the Configuration, such as the point radius, whether to use circles or squares, whether to use screen size or world size and what kind of interpolation to use. If "Reloading Possible" is checked, you can adapt the options while the application is running and then select "Reload" to submit your changes. +1. Download the current .unitypackage file here: https://github.com/SFraissTU/BA_PointCloud/raw/master/release/BAPC-v01.02.unitypackage +2. If your point cloud is not in the Potree format yet, you first have to convert it. Head over to https://github.com/potree/PotreeConverter/releases, download the PotreeConverter and convert your cloud into the Potree format. For testing purposes you can also try the converted lion-pointcloud, which is available here: https://github.com/SFraissTU/BA_PointCloud/raw/master/release/lion.zip +3. Create a new project and go to Assets->Import Package and import the downloaded .unitypackage-file. +4. There is now a BAPC-Example-scene in the project. You can either use that or follow the steps below in your own scene to get the same result. +5. If you want to be able to navigate the camera through the scene, I provide a small script for camera controls. This is optional and you can also just use your own control mechanisms instead. Select the Main Camera in the Scene Graph and press "Add Component" in the Inspector. Choose "Scripts"->"BAPointCloudRenderer.Controllers"->"Camera Controllers". When you start the game, you can then move the camera around by using the mouse and the WASD-keys as well as EQ for moving up and down, LeftShift for moving with higher speed and C for moving with lower speed. You can set the normal speed in the Inspector. +6. Now we have to create a Point Cloud Set. A Point Cloud Set manages several point clouds in the scene. The point clouds belonging to a set can either be specified in the editor or can be created while the application is running. To create a set, right click in the Scene Graph and select "Create Empty". Name this object "Point Cloud Set" or something similar. Press "Add Component" in the Inspector and select "Scripts"->"BAPointCloudRenderer.CloudController". Here you have to options: + * "Static Point Cloud Set": Useful for small point clouds, where you want to ensure that all points are rendered. Simply loads all the points into the memory and displays them. Might take some time to load. Not useful for big point clouds. + * "Dynamic Point Cloud Set": Only loads and displays the points necessary for the current camera position. Useful for big point clouds. Has a bunch of options, such as point budget (the maximum number of points to render at once), minimum projected octree node size, cache size etc. +For this tutorial, I suggest using a Dynamic Point Cloud Set. Regardless of your choice, you will have at least two configurations in the editor now: "Move Center To Transform Position": If this is set to true, the center of the point cloud is translated to the position specified in the Transform-Component of this GameObject. However this only applies if the point cloud is loaded at the beginning of the scene and not added afterwards. The second configuration is a "Mesh Configuration", which specifies how the points should be rendered. This will be done in the next step. + +![Creating a Point Cloud Set](doc/tutimgs/A.PNG) -![Creating an Empty Object](doc/tutimgs/1.png) ![Attaching a Mesh Configuration](doc/tutimgs/2.png) +7. Let's create a MeshConfiguration. This will determine how the point cloud will be rendered. Right click in the Scene Graph and select "Create Empty". Name this object "MeshConfiguration" or something similar. Press "Add Component" in the Inspector and select "Scripts"->"BAPointCloudRenderer.ObjectCreation". There are several options here, but some of them are deprecated. You can use "Point Mesh Configuration" if you want each point to be displayed as a simple pixel on a screen. If you want your points to be rendered in another way or want to experiment with different options, please use "Default Mesh Configuration". This enables you to specify a point size (in pixels or world units, depending on the checkbox "Screen Size"), to render points as quads or circles and also to use interpolation modes. The "reload" property should be set to true to apply changes you make to these configurations while the application is running. +Now, go to the Point Cloud Set and choose the created configuration as your MeshConfiguration. -5. The next thing to do is creating a PointSetController. This will enable you to set options like point budget or min node size for all clouds in the scene. So create a new Empty in the Scene Graph and press the "Add Component"-button. Select "Scripts"->"Controllers"->"Point Cloud Set Real Time Controller" (alternatively you can also attach this script to the already existing MeshConfiguration-Object). Now you can adapt settings like point budget, min node size and cache size. To choose a MeshConfiguration, press the small circle next to the input field and select your previously created MeshConfiguration-object. Alternatively, you can also drag that object from the scene graph and drop it into the input field. If "Move Center to Transform" is enabled, the center of the point clouds will be set to the the position specified in the Transform-Component of this object (0/0/0 is default). +![Creating a Mesh Configuration](doc/tutimgs/B.PNG) -![Choosing a Mesh Configuration](doc/tutimgs/3.png) +8. Now let's create a Point Cloud Loader: Create a new Empty object and name it "Cloud Loader" or something similar. Click on "Add Component" and select "Scripts"->"BAPointCloudRenderer.CloudController"->"PointCloudLoader". With this object you can load a single point cloud and attach it to the created point cloud set. As "Cloud Path" specify the path to the point cloud folder (specifically the folder containing the cloud.js-file). Please note that this is a path relative to the execution directory. The point cloud is not used as a resource-asset in this project. -6. Create a Point Cloud object: - * To display a single point cloud, create a new Empty object and attach the Component "Scripts"->"Controllers"->"Dynamic Loader Controller". In the input field "Cloud Path" enter the path to the point cloud folder in which the cloud.js file lies. This can either be a relative path from the "PointCloudRenderer"-directory (such as "Clouds\Lion\") or an absolute path. For choocing a "Set Controller" click on the circle next to the input field and select your previously created PointSetController. - * If you have several point clouds you want to render, you can put all their folders in to the same directory and instead of creating a "Dynamic Loader Controller" you can create a "Scripts"->"Controllers"->"Clouds From Directory Loader". At "Path" enter the path to the directory containing the cloud-folders (such as "Clouds\big\"). For choocing a "Set Controller" click on the circle next to the input field and select your previously created PointSetController. +![Creating a Point Cloud Loader](doc/tutimgs/C.PNG) -![Dynamic Loader Controller](doc/tutimgs/4.png) +As "Set Controller" choose the previously created Point Cloud Set. If "Load On Start" is checked, the cloud is loaded as soon as the application is executed, otherwise you will have to call the function "LoadPointCloud" when you want the cloud to start loading. +Alternatively to the Point Cloud Loader you can also use a Directory Loader. Here you specify the path to a folder containing several point cloud folders which should all be loaded. Internally, this just creates several Point Cloud Loaders. -7. Press the Play-Button! +9. Press the Play-Button! -![Dynamic Loader Controller](doc/tutimgs/5.png) +![Result](doc/tutimgs/5.png) diff --git a/Tests/QueueTest.cs b/Tests/QueueTest.cs index 87293ad8..3a99ceb0 100644 --- a/Tests/QueueTest.cs +++ b/Tests/QueueTest.cs @@ -1,10 +1,10 @@ using System; using NUnit.Framework; using NUnitLite; -using DataStructures; +using BAPointCloudRenderer.DataStructures; using System.Collections.Generic; -namespace Tests { +namespace BAPointCloudRenderer.Tests { [TestFixture] public class QueueTest { diff --git a/Tests/Start.cs b/Tests/Start.cs index ccdf1e8e..9eadd00c 100644 --- a/Tests/Start.cs +++ b/Tests/Start.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace Tests { +namespace BAPointCloudRenderer.Tests { class Start { public static void Main(string[] args) { QueueTest.Run(); diff --git a/doc/html/annotated.html b/doc/html/annotated.html index f22e0210..b264ac43 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -5,7 +5,7 @@ -Point Cloud Renderer: Class List +BA Point Cloud Renderer: Class List @@ -21,8 +21,8 @@ -
Point Cloud Renderer -  1.0 +
BA Point Cloud Renderer +  1.2
Unity Rendering System for Large Point Clouds
@@ -65,43 +65,47 @@
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
[detail level 123]
 NCloudData
 CBoundingBoxAn Axis-Aligned Bounding Box for a Node. Note that the values of the bounding box are not final, but might be changed.
 CNodeResembles a node of the nested octree.
 CPointCloudMetaDataDescription of a Bounding Box. Created from the cloud.js-File. Contains all attributes from that file plus two more: cloudPath (folder path of the cloud) and cloudName (name of the cloud)
 CVector3dA vector using double values. The values are final, calculations always create a new vector. However, the x,y,z-values can be changed directly
 NControllers
 CAbstractPointSetControllerA PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The only current implementation of this class is PointCloudSetRealTimeController.
 CCameraController
 CCloudsFromDirectoryLoaderUse this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds.
 CDynamicLoaderControllerUse this script to load a single PointCloud from a directory.
 CPointCloudLoaderControllerLoads and renders a PointCloud from a folder completely at once. For each node a GameObject is created.
 CPointCloudSetRealTimeControllerThe PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed
 NDataStructures
 CHeapPriorityQueueA priority queue implemented with a Max Heap. This queue is threadsafe. Each function locks over a mutex-object
 CPriorityQueueA threadsafe PriorityQueue.
 CRandomAccessQueue
 CThreadSafeQueueA thredsafe queue
 NEval
 CAnimationHelperUsed in animations. OnAnimationEnd is called in the end of the animations to exit the application.
 CDebugCloudCreates a simple Debug-Point-Cloud to test the MeshConfigurations. Creates a circle of 12 points near the origin.
 CFPSLoggerUsed for logging the Frames per Second and the Updates per Second
 CFPSOutputControllerUsed for printing the current FPS contstantly
 NLoading
 CAbstractRenderer
 CCloudLoaderProvides methods for loading point clouds from the file system
 CPointAttributesAttributes for FileReading
 CUtilVarious help functions
 CV2CacheThe LRU Cache used by the V2Renderer (See Bachelor Thesis chapter 3.2.7 "LRU Cache").
 CV2LoadingThreadThe Loading Thread of the V2-Rendering-System (see Bachelor Thesis chapter 3.2.6 "The Loading Thread"). Responsible for loading the point data.
 CV2RendererThe multithreaded Real-Time-Renderer as described in the Bachelor Thesis in chapter 3.2.2 - 3.2.7
 CV2TraversalThreadThe traversal thread of the V2 Rendering System. Checks constantly, which nodes are visible and should be rendered and which not. Described in the Bachelor Thesis in chapter 3.2.4 "Traversal Thread". This is the place, where most of the magic happens.
 NObjectCreation
 CGeoQuadMeshConfigurationGeometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. Creates a screen facing square or circle for each point using the Geometry Shader. Also supports various interpolation modes (see Thesis chapter 3.3.4 "Interpolation"). This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload".
 CMeshConfigurationDefines how the points of a point cloud are rendered (points / quads / spheres etc.). Even though this is a MonoBehaviour-Script, it does not use the Start- or Update-Function. Having it as an object in your scene graph makes it easier to test different configuartions though.
 CPointMeshConfigurationRenders every point as a single pixel using the points primitive. As described in the Bachelor Thesis in chapter 3.3.1 "Single-Pixel Point Rendering".
 CQuad4PointMeshConfiguration4-Vertex Quad Rendering, as described in the thesis in chapter 3.3.2. Creates sceen faced squares or circles for each point with a given size in pixels, by passing each vertex 4 times to the GPU
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NBAPointCloudRenderer
 NCloudController
 CAbstractPointCloudSetA PointCloudSet enables loading and rendering several point clouds at once. But even if you just have one point cloud to render, you have to attach it to a PointCloudSet. The configured options of the PointCloudSet controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own PointCloudLoader, which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The current implementations of this class are StaticPointCloudSet and DynamicPointCloudSet.
 CDirectoryLoaderUse this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds.
 CDynamicPointCloudSetPoint Cloud Set to display a large point cloud. All the time, only the points which are needed for the current camera position are loaded from the disk (as described in the thesis).
 CPointCloudLoaderUse this script to load a single PointCloud from a directory.
 CStaticPointCloudSetThis Point Cloud Set loads the complete point cloud one and displays everything at once. Should only be used for small clouds. Might take some time to load.
 NCloudData
 CBoundingBoxAn Axis-Aligned Bounding Box for a Node. Note that the values of the bounding box are not final, but might be changed.
 CNodeResembles a node of the nested octree.
 CPointCloudMetaDataDescription of a Bounding Box. Created from the cloud.js-File. Contains all attributes from that file plus two more: cloudPath (folder path of the cloud) and cloudName (name of the cloud)
 CVector3dA vector using double values. The values are final, calculations always create a new vector. However, the x,y,z-values can be changed directly
 NControllers
 CAbstractPointSetControllerA PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The only current implementation of this class is PointCloudSetRealTimeController.
 CCameraController
 CCloudsFromDirectoryLoaderUse this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds.
 CDynamicLoaderControllerUse this script to load a single PointCloud from a directory.
 CPointCloudLoaderControllerLoads and renders a PointCloud from a folder completely at once. For each node a GameObject is created.
 CPointCloudSetRealTimeControllerThe PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed
 NDataStructures
 CHeapPriorityQueueA priority queue implemented with a Max Heap. This queue is threadsafe. Each function locks over a mutex-object
 CPriorityQueueA threadsafe PriorityQueue.
 CRandomAccessQueue
 CThreadSafeQueueA thredsafe queue
 NLoading
 CAbstractRenderer
 CCloudLoaderProvides methods for loading point clouds from the file system
 CPointAttributesAttributes for FileReading
 CStaticRendererRenderer for the StaticPointCloudSet. Each node that is passed to this renderer is loaded completely and then displayed all at once. It is possible to add and remove nodes after initialization.
 CUtilVarious help functions
 CV2CacheThe LRU Cache used by the V2Renderer (See Bachelor Thesis chapter 3.2.7 "LRU Cache").
 CV2LoadingThreadThe Loading Thread of the V2-Rendering-System (see Bachelor Thesis chapter 3.2.6 "The Loading Thread"). Responsible for loading the point data.
 CV2RendererThe multithreaded Real-Time-Renderer as described in the Bachelor Thesis in chapter 3.2.2 - 3.2.7
 CV2TraversalThreadThe traversal thread of the V2 Rendering System. Checks constantly, which nodes are visible and should be rendered and which not. Described in the Bachelor Thesis in chapter 3.2.4 "Traversal Thread". This is the place, where most of the magic happens.
 NObjectCreation
 CDefaultMeshConfigurationThis is the default Mesh Configuration, that is able to render points as pixels, quads, circles and also provides fragment and cone interpolations using the fragment shader (see Thesis chapter 3.3.4 "Interpolation"). This works using Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". This class replaces GeoQuadMeshConfiguration in Version 1.2.
 CGeoQuadMeshConfigurationGeometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. Creates a screen facing square or circle for each point using the Geometry Shader. Also supports various interpolation modes (see Thesis chapter 3.3.4 "Interpolation"). This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload".
 CMeshConfigurationDefines how the points of a point cloud are rendered (points / quads / spheres etc.). Even though this is a MonoBehaviour-Script, it does not use the Start- or Update-Function. Having it as an object in your scene graph makes it easier to test different configuartions though.
 CPointMeshConfigurationRenders every point as a single pixel using the points primitive. As described in the Bachelor Thesis in chapter 3.3.1 "Single-Pixel Point Rendering".
 CQuad4PointMeshConfiguration4-Vertex Quad Rendering, as described in the thesis in chapter 3.3.2. Creates sceen faced squares or circles for each point with a given size in pixels, by passing each vertex 4 times to the GPU
diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set-members.html new file mode 100644 index 00000000..126894bd --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set-members.html @@ -0,0 +1,93 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudController.AbstractPointCloudSet Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.html new file mode 100644 index 00000000..1650cb4b --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.html @@ -0,0 +1,442 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudController.AbstractPointCloudSet Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudController.AbstractPointCloudSet Class Referenceabstract
+
+
+ +

A PointCloudSet enables loading and rendering several point clouds at once. But even if you just have one point cloud to render, you have to attach it to a PointCloudSet. The configured options of the PointCloudSet controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own PointCloudLoader, which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The current implementations of this class are StaticPointCloudSet and DynamicPointCloudSet. + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudController.AbstractPointCloudSet:
+
+
+ + +BAPointCloudRenderer.CloudController.DynamicPointCloudSet +BAPointCloudRenderer.CloudController.StaticPointCloudSet + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void RegisterController (PointCloudLoader controller)
 Registers a PointCloud-Controller (See PointCloudLoader). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller More...
 
void UpdateBoundingBox (PointCloudLoader controller, BoundingBox boundingBox)
 Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread. More...
 
void AddRootNode (Node node)
 Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. More...
 
void RemoveRootNode (PointCloudLoader controller, Node node)
 Removes a point cloud More...
 
void OnDestroy ()
 Shuts down the renderer More...
 
uint GetPointCount ()
 Returns the point count More...
 
+void StopRendering ()
 
+ + + + +

+Public Attributes

bool moveCenterToTransformPosition = true
 Whether the center of the cloud should be moved to the position of this component. To calculate the center, only the point clouds are considered that exist in the beginning of the scene. More...
 
+ + + + + + + +

+Protected Member Functions

abstract void Initialize ()
 Override this instead of Start!! Make sure to set the PointRenderer in here!!! More...
 
bool CheckReady ()
 Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. More...
 
+ + + + +

+Properties

AbstractRenderer PointRenderer [get, set]
 The Renderer (value may not be null at setting) More...
 
+

Detailed Description

+

A PointCloudSet enables loading and rendering several point clouds at once. But even if you just have one point cloud to render, you have to attach it to a PointCloudSet. The configured options of the PointCloudSet controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own PointCloudLoader, which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The current implementations of this class are StaticPointCloudSet and DynamicPointCloudSet.

+

Member Function Documentation

+ +

◆ AddRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.AddRootNode (Node node)
+
+inline
+
+ +

Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox.

+ +
+
+ +

◆ CheckReady()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.CloudController.AbstractPointCloudSet.CheckReady ()
+
+inlineprotected
+
+ +

Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded.

+ +
+
+ +

◆ GetPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint BAPointCloudRenderer.CloudController.AbstractPointCloudSet.GetPointCount ()
+
+inline
+
+ +

Returns the point count

+
Returns
+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
abstract void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.Initialize ()
+
+protectedpure virtual
+
+ +

Override this instead of Start!! Make sure to set the PointRenderer in here!!!

+ +

Implemented in BAPointCloudRenderer.CloudController.DynamicPointCloudSet, and BAPointCloudRenderer.CloudController.StaticPointCloudSet.

+ +
+
+ +

◆ OnDestroy()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.OnDestroy ()
+
+inline
+
+ +

Shuts down the renderer

+ +
+
+ +

◆ RegisterController()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.RegisterController (PointCloudLoader controller)
+
+inline
+
+ +

Registers a PointCloud-Controller (See PointCloudLoader). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller

+
Parameters
+ + +
controllernot null
+
+
+
See also
DynamicLoaderController
+ +
+
+ +

◆ RemoveRootNode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.RemoveRootNode (PointCloudLoader controller,
Node node 
)
+
+inline
+
+ +

Removes a point cloud

+ +
+
+ +

◆ UpdateBoundingBox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.CloudController.AbstractPointCloudSet.UpdateBoundingBox (PointCloudLoader controller,
BoundingBox boundingBox 
)
+
+inline
+
+ +

Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread.

+ +
+
+

Member Data Documentation

+ +

◆ moveCenterToTransformPosition

+ +
+
+ + + + +
bool BAPointCloudRenderer.CloudController.AbstractPointCloudSet.moveCenterToTransformPosition = true
+
+ +

Whether the center of the cloud should be moved to the position of this component. To calculate the center, only the point clouds are considered that exist in the beginning of the scene.

+ +
+
+

Property Documentation

+ +

◆ PointRenderer

+ +
+
+ + + + + +
+ + + + +
AbstractRenderer BAPointCloudRenderer.CloudController.AbstractPointCloudSet.PointRenderer
+
+getset
+
+ +

The Renderer (value may not be null at setting)

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudController/AbstractPointCloudSet.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.png new file mode 100644 index 00000000..bb24c78f Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_abstract_point_cloud_set.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader-members.html new file mode 100644 index 00000000..bc2843dd --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader-members.html @@ -0,0 +1,84 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudController.DirectoryLoader Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.html new file mode 100644 index 00000000..2d382f39 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.html @@ -0,0 +1,141 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudController.DirectoryLoader Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudController.DirectoryLoader Class Reference
+
+
+ +

Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds. + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudController.DirectoryLoader:
+
+
+ + + +
+ + + + + + + + +

+Public Attributes

string path
 Path of the directory containing the point clouds More...
 
AbstractPointCloudSet pointset
 The PointSetController More...
 
+

Detailed Description

+

Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds.

+

Member Data Documentation

+ +

◆ path

+ +
+
+ + + + +
string BAPointCloudRenderer.CloudController.DirectoryLoader.path
+
+ +

Path of the directory containing the point clouds

+ +
+
+ +

◆ pointset

+ +
+
+ + + + +
AbstractPointCloudSet BAPointCloudRenderer.CloudController.DirectoryLoader.pointset
+
+ +

The PointSetController

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudController/DirectoryLoader.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.png new file mode 100644 index 00000000..a24ce7f5 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_directory_loader.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set-members.html new file mode 100644 index 00000000..d989c4a6 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set-members.html @@ -0,0 +1,100 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudController.DynamicPointCloudSet Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.CloudController.DynamicPointCloudSet, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AddRootNode(Node node)BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
cacheSizeInPointsBAPointCloudRenderer.CloudController.DynamicPointCloudSet
CheckReady()BAPointCloudRenderer.CloudController.AbstractPointCloudSetinlineprotected
GetPointCount()BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
Initialize()BAPointCloudRenderer.CloudController.DynamicPointCloudSetinlineprotectedvirtual
meshConfigurationBAPointCloudRenderer.CloudController.DynamicPointCloudSet
minNodeSizeBAPointCloudRenderer.CloudController.DynamicPointCloudSet
moveCenterToTransformPositionBAPointCloudRenderer.CloudController.AbstractPointCloudSet
nodesGOsPerFrameBAPointCloudRenderer.CloudController.DynamicPointCloudSet
nodesLoadedPerFrameBAPointCloudRenderer.CloudController.DynamicPointCloudSet
OnDestroy()BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
pointBudgetBAPointCloudRenderer.CloudController.DynamicPointCloudSet
PointRendererBAPointCloudRenderer.CloudController.AbstractPointCloudSet
RegisterController(PointCloudLoader controller)BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
RemoveRootNode(PointCloudLoader controller, Node node)BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
StopRendering() (defined in BAPointCloudRenderer.CloudController.AbstractPointCloudSet)BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
UpdateBoundingBox(PointCloudLoader controller, BoundingBox boundingBox)BAPointCloudRenderer.CloudController.AbstractPointCloudSetinline
userCameraBAPointCloudRenderer.CloudController.DynamicPointCloudSet
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.html new file mode 100644 index 00000000..64e0a71f --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.html @@ -0,0 +1,311 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudController.DynamicPointCloudSet Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudController.DynamicPointCloudSet Class Reference
+
+
+ +

Point Cloud Set to display a large point cloud. All the time, only the points which are needed for the current camera position are loaded from the disk (as described in the thesis). + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudController.DynamicPointCloudSet:
+
+
+ + +BAPointCloudRenderer.CloudController.AbstractPointCloudSet + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

uint pointBudget = 1000000
 Point Budget - Maximum Number of Points in Memory / to Render More...
 
int minNodeSize = 10
 Minimum Node Size More...
 
uint nodesLoadedPerFrame = 15
 Maximum number of nodes loaded per frame More...
 
uint nodesGOsPerFrame = 30
 Maximum number of nodes having their gameobjects created per frame More...
 
MeshConfiguration meshConfiguration = null
 MeshConfiguration. Defines how to render the points. More...
 
uint cacheSizeInPoints = 1000000
 Cache Size in POints More...
 
Camera userCamera
 Camera to use. If none is specified, Camera.main is used More...
 
- Public Attributes inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
bool moveCenterToTransformPosition = true
 Whether the center of the cloud should be moved to the position of this component. To calculate the center, only the point clouds are considered that exist in the beginning of the scene. More...
 
+ + + + + + + + +

+Protected Member Functions

override void Initialize ()
 Override this instead of Start!! Make sure to set the PointRenderer in here!!! More...
 
- Protected Member Functions inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
bool CheckReady ()
 Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
void RegisterController (PointCloudLoader controller)
 Registers a PointCloud-Controller (See PointCloudLoader). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller More...
 
void UpdateBoundingBox (PointCloudLoader controller, BoundingBox boundingBox)
 Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread. More...
 
void AddRootNode (Node node)
 Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. More...
 
void RemoveRootNode (PointCloudLoader controller, Node node)
 Removes a point cloud More...
 
void OnDestroy ()
 Shuts down the renderer More...
 
uint GetPointCount ()
 Returns the point count More...
 
+void StopRendering ()
 
- Properties inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
AbstractRenderer PointRenderer [get, set]
 The Renderer (value may not be null at setting) More...
 
+

Detailed Description

+

Point Cloud Set to display a large point cloud. All the time, only the points which are needed for the current camera position are loaded from the disk (as described in the thesis).

+

Member Function Documentation

+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
override void BAPointCloudRenderer.CloudController.DynamicPointCloudSet.Initialize ()
+
+inlineprotectedvirtual
+
+ +

Override this instead of Start!! Make sure to set the PointRenderer in here!!!

+ +

Implements BAPointCloudRenderer.CloudController.AbstractPointCloudSet.

+ +
+
+

Member Data Documentation

+ +

◆ cacheSizeInPoints

+ +
+
+ + + + +
uint BAPointCloudRenderer.CloudController.DynamicPointCloudSet.cacheSizeInPoints = 1000000
+
+ +

Cache Size in POints

+ +
+
+ +

◆ meshConfiguration

+ +
+
+ + + + +
MeshConfiguration BAPointCloudRenderer.CloudController.DynamicPointCloudSet.meshConfiguration = null
+
+ +

MeshConfiguration. Defines how to render the points.

+ +
+
+ +

◆ minNodeSize

+ +
+
+ + + + +
int BAPointCloudRenderer.CloudController.DynamicPointCloudSet.minNodeSize = 10
+
+ +

Minimum Node Size

+ +
+
+ +

◆ nodesGOsPerFrame

+ +
+
+ + + + +
uint BAPointCloudRenderer.CloudController.DynamicPointCloudSet.nodesGOsPerFrame = 30
+
+ +

Maximum number of nodes having their gameobjects created per frame

+ +
+
+ +

◆ nodesLoadedPerFrame

+ +
+
+ + + + +
uint BAPointCloudRenderer.CloudController.DynamicPointCloudSet.nodesLoadedPerFrame = 15
+
+ +

Maximum number of nodes loaded per frame

+ +
+
+ +

◆ pointBudget

+ +
+
+ + + + +
uint BAPointCloudRenderer.CloudController.DynamicPointCloudSet.pointBudget = 1000000
+
+ +

Point Budget - Maximum Number of Points in Memory / to Render

+ +
+
+ +

◆ userCamera

+ +
+
+ + + + +
Camera BAPointCloudRenderer.CloudController.DynamicPointCloudSet.userCamera
+
+ +

Camera to use. If none is specified, Camera.main is used

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudController/DynamicPointCloudSet.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.png new file mode 100644 index 00000000..b45e08fa Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_dynamic_point_cloud_set.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader-members.html new file mode 100644 index 00000000..a4fd70c4 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader-members.html @@ -0,0 +1,87 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudController.PointCloudLoader Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.html new file mode 100644 index 00000000..e0a399c4 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.html @@ -0,0 +1,226 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudController.PointCloudLoader Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudController.PointCloudLoader Class Reference
+
+
+ +

Use this script to load a single PointCloud from a directory. + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudController.PointCloudLoader:
+
+
+ + + +
+ + + + + + + + +

+Public Member Functions

void LoadPointCloud ()
 Starts loading the point cloud. When the hierarchy is loaded it is registered at the corresponding point cloud set More...
 
bool RemovePointCloud ()
 Removes the point cloud from the scene. Should only be called from the main thread! More...
 
+ + + + + + + + + + +

+Public Attributes

string cloudPath
 Path to the folder which contains the cloud.js file More...
 
AbstractPointCloudSet setController
 The PointSetController to use More...
 
bool loadOnStart = true
 True if the point cloud should be loaded when the behaviour is started. Otherwise the point cloud is loaded when LoadPointCloud is loaded. More...
 
+

Detailed Description

+

Use this script to load a single PointCloud from a directory.

+

Member Function Documentation

+ +

◆ LoadPointCloud()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudController.PointCloudLoader.LoadPointCloud ()
+
+inline
+
+ +

Starts loading the point cloud. When the hierarchy is loaded it is registered at the corresponding point cloud set

+ +
+
+ +

◆ RemovePointCloud()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.CloudController.PointCloudLoader.RemovePointCloud ()
+
+inline
+
+ +

Removes the point cloud from the scene. Should only be called from the main thread!

+
Returns
True if the cloud was removed. False, when the cloud hasn't even been loaded yet.
+ +
+
+

Member Data Documentation

+ +

◆ cloudPath

+ +
+
+ + + + +
string BAPointCloudRenderer.CloudController.PointCloudLoader.cloudPath
+
+ +

Path to the folder which contains the cloud.js file

+ +
+
+ +

◆ loadOnStart

+ +
+
+ + + + +
bool BAPointCloudRenderer.CloudController.PointCloudLoader.loadOnStart = true
+
+ +

True if the point cloud should be loaded when the behaviour is started. Otherwise the point cloud is loaded when LoadPointCloud is loaded.

+ +
+
+ +

◆ setController

+ +
+
+ + + + +
AbstractPointCloudSet BAPointCloudRenderer.CloudController.PointCloudLoader.setController
+
+ +

The PointSetController to use

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudController/PointCloudLoader.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.png new file mode 100644 index 00000000..cc9adb85 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_point_cloud_loader.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set-members.html new file mode 100644 index 00000000..8015ee0d --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set-members.html @@ -0,0 +1,94 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudController.StaticPointCloudSet Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.html new file mode 100644 index 00000000..67eb95e4 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.html @@ -0,0 +1,197 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudController.StaticPointCloudSet Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudController.StaticPointCloudSet Class Reference
+
+
+ +

This Point Cloud Set loads the complete point cloud one and displays everything at once. Should only be used for small clouds. Might take some time to load. + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudController.StaticPointCloudSet:
+
+
+ + +BAPointCloudRenderer.CloudController.AbstractPointCloudSet + +
+ + + + + + + + + +

+Public Attributes

MeshConfiguration meshConfiguration = null
 MeshConfiguration that specifies how the cloud is to be displayed More...
 
- Public Attributes inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
bool moveCenterToTransformPosition = true
 Whether the center of the cloud should be moved to the position of this component. To calculate the center, only the point clouds are considered that exist in the beginning of the scene. More...
 
+ + + + + + + + +

+Protected Member Functions

override void Initialize ()
 Override this instead of Start!! Make sure to set the PointRenderer in here!!! More...
 
- Protected Member Functions inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
bool CheckReady ()
 Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
void RegisterController (PointCloudLoader controller)
 Registers a PointCloud-Controller (See PointCloudLoader). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller More...
 
void UpdateBoundingBox (PointCloudLoader controller, BoundingBox boundingBox)
 Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread. More...
 
void AddRootNode (Node node)
 Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. More...
 
void RemoveRootNode (PointCloudLoader controller, Node node)
 Removes a point cloud More...
 
void OnDestroy ()
 Shuts down the renderer More...
 
uint GetPointCount ()
 Returns the point count More...
 
+void StopRendering ()
 
- Properties inherited from BAPointCloudRenderer.CloudController.AbstractPointCloudSet
AbstractRenderer PointRenderer [get, set]
 The Renderer (value may not be null at setting) More...
 
+

Detailed Description

+

This Point Cloud Set loads the complete point cloud one and displays everything at once. Should only be used for small clouds. Might take some time to load.

+

Member Function Documentation

+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
override void BAPointCloudRenderer.CloudController.StaticPointCloudSet.Initialize ()
+
+inlineprotectedvirtual
+
+ +

Override this instead of Start!! Make sure to set the PointRenderer in here!!!

+ +

Implements BAPointCloudRenderer.CloudController.AbstractPointCloudSet.

+ +
+
+

Member Data Documentation

+ +

◆ meshConfiguration

+ +
+
+ + + + +
MeshConfiguration BAPointCloudRenderer.CloudController.StaticPointCloudSet.meshConfiguration = null
+
+ +

MeshConfiguration that specifies how the cloud is to be displayed

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudController/StaticPointCloudSet.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.png new file mode 100644 index 00000000..23fcd3e8 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_controller_1_1_static_point_cloud_set.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box-members.html new file mode 100644 index 00000000..441fb210 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box-members.html @@ -0,0 +1,108 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudData.BoundingBox Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.CloudData.BoundingBox, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
BoundingBox() (defined in BAPointCloudRenderer.CloudData.BoundingBox)BAPointCloudRenderer.CloudData.BoundingBoxinline
BoundingBox(double lx, double ly, double lz, double ux, double uy, double uz)BAPointCloudRenderer.CloudData.BoundingBoxinline
BoundingBox(Vector3d min, Vector3d max)BAPointCloudRenderer.CloudData.BoundingBoxinline
Center()BAPointCloudRenderer.CloudData.BoundingBoxinline
GetBoundsObject()BAPointCloudRenderer.CloudData.BoundingBoxinline
Init() (defined in BAPointCloudRenderer.CloudData.BoundingBox)BAPointCloudRenderer.CloudData.BoundingBoxinline
LxBAPointCloudRenderer.CloudData.BoundingBox
lxBAPointCloudRenderer.CloudData.BoundingBox
lyBAPointCloudRenderer.CloudData.BoundingBox
LyBAPointCloudRenderer.CloudData.BoundingBox
LzBAPointCloudRenderer.CloudData.BoundingBox
lzBAPointCloudRenderer.CloudData.BoundingBox
Max()BAPointCloudRenderer.CloudData.BoundingBoxinline
Min()BAPointCloudRenderer.CloudData.BoundingBoxinline
MoveAlong(Vector3d vector)BAPointCloudRenderer.CloudData.BoundingBoxinline
MoveToOrigin()BAPointCloudRenderer.CloudData.BoundingBoxinline
Radius()BAPointCloudRenderer.CloudData.BoundingBoxinline
Size()BAPointCloudRenderer.CloudData.BoundingBoxinline
SwitchYZ()BAPointCloudRenderer.CloudData.BoundingBoxinline
ToString() (defined in BAPointCloudRenderer.CloudData.BoundingBox)BAPointCloudRenderer.CloudData.BoundingBoxinline
UxBAPointCloudRenderer.CloudData.BoundingBox
uxBAPointCloudRenderer.CloudData.BoundingBox
UyBAPointCloudRenderer.CloudData.BoundingBox
uyBAPointCloudRenderer.CloudData.BoundingBox
UzBAPointCloudRenderer.CloudData.BoundingBox
uzBAPointCloudRenderer.CloudData.BoundingBox
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box.html new file mode 100644 index 00000000..5c0e5065 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_bounding_box.html @@ -0,0 +1,772 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudData.BoundingBox Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudData.BoundingBox Class Reference
+
+
+ +

An Axis-Aligned Bounding Box for a Node. Note that the values of the bounding box are not final, but might be changed. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BoundingBox (double lx, double ly, double lz, double ux, double uy, double uz)
 Creates a new Bounding Box with the given parameters More...
 
 BoundingBox (Vector3d min, Vector3d max)
 Creates a new Bounding Box with the given Parameters More...
 
+void Init ()
 
void SwitchYZ ()
 Switches the Y and Z coordinates of the bounding box. This might be neccessary because of different coordinate systems More...
 
void MoveToOrigin ()
 Moves the boxes, so its center is in the origin More...
 
void MoveAlong (Vector3d vector)
 Moves the box along the given vector More...
 
double Radius ()
 Returns the radius of the circumscribed sphere (half the length of the diagonal) More...
 
Vector3d Size ()
 Returns the width (x-length), length(y-length) and height (z-length) of the box More...
 
Vector3d Min ()
 Returns the lowest corner of the bounding box More...
 
Vector3d Max ()
 Returns the highest corner of the bounding box More...
 
Vector3d Center ()
 Returns the center of the box More...
 
Bounds GetBoundsObject ()
 Returns the Bounds-Object (Unity-Class for BoundingBoxes) More...
 
+override string ToString ()
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

double lx
 Lower X-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
double ly
 Lower Y-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
double lz
 Lower Z-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
double ux
 Upper X-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
double uy
 Upper Y-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
double uz
 Upper Z-Coordinate. Do not set manually after constructing! Use the property instead! More...
 
+ + + + + + + + + + + + + + + + + + + +

+Properties

double Lx [get, set]
 Lower X-Value More...
 
double Ly [get, set]
 Lower Y-Value More...
 
double Lz [get, set]
 Lower Z-Value More...
 
double Ux [get, set]
 Upper X-Value More...
 
double Uy [get, set]
 Upper Y-Value More...
 
double Uz [get, set]
 Upper Z-Value More...
 
+

Detailed Description

+

An Axis-Aligned Bounding Box for a Node. Note that the values of the bounding box are not final, but might be changed.

+

Constructor & Destructor Documentation

+ +

◆ BoundingBox() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BAPointCloudRenderer.CloudData.BoundingBox.BoundingBox (double lx,
double ly,
double lz,
double ux,
double uy,
double uz 
)
+
+inline
+
+ +

Creates a new Bounding Box with the given parameters

+ +
+
+ +

◆ BoundingBox() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
BAPointCloudRenderer.CloudData.BoundingBox.BoundingBox (Vector3d min,
Vector3d max 
)
+
+inline
+
+ +

Creates a new Bounding Box with the given Parameters

+
Parameters
+ + + +
minVector containing lx, ly and lz
maxVector containing ux, uy and uz
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Center()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3d BAPointCloudRenderer.CloudData.BoundingBox.Center ()
+
+inline
+
+ +

Returns the center of the box

+ +
+
+ +

◆ GetBoundsObject()

+ +
+
+ + + + + +
+ + + + + + + +
Bounds BAPointCloudRenderer.CloudData.BoundingBox.GetBoundsObject ()
+
+inline
+
+ +

Returns the Bounds-Object (Unity-Class for BoundingBoxes)

+ +
+
+ +

◆ Max()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3d BAPointCloudRenderer.CloudData.BoundingBox.Max ()
+
+inline
+
+ +

Returns the highest corner of the bounding box

+ +
+
+ +

◆ Min()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3d BAPointCloudRenderer.CloudData.BoundingBox.Min ()
+
+inline
+
+ +

Returns the lowest corner of the bounding box

+ +
+
+ +

◆ MoveAlong()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudData.BoundingBox.MoveAlong (Vector3d vector)
+
+inline
+
+ +

Moves the box along the given vector

+ +
+
+ +

◆ MoveToOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.BoundingBox.MoveToOrigin ()
+
+inline
+
+ +

Moves the boxes, so its center is in the origin

+ +
+
+ +

◆ Radius()

+ +
+
+ + + + + +
+ + + + + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Radius ()
+
+inline
+
+ +

Returns the radius of the circumscribed sphere (half the length of the diagonal)

+ +
+
+ +

◆ Size()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3d BAPointCloudRenderer.CloudData.BoundingBox.Size ()
+
+inline
+
+ +

Returns the width (x-length), length(y-length) and height (z-length) of the box

+ +
+
+ +

◆ SwitchYZ()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.BoundingBox.SwitchYZ ()
+
+inline
+
+ +

Switches the Y and Z coordinates of the bounding box. This might be neccessary because of different coordinate systems

+ +
+
+

Member Data Documentation

+ +

◆ lx

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.lx
+
+ +

Lower X-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+ +

◆ ly

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.ly
+
+ +

Lower Y-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+ +

◆ lz

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.lz
+
+ +

Lower Z-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+ +

◆ ux

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.ux
+
+ +

Upper X-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+ +

◆ uy

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.uy
+
+ +

Upper Y-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+ +

◆ uz

+ +
+
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.uz
+
+ +

Upper Z-Coordinate. Do not set manually after constructing! Use the property instead!

+ +
+
+

Property Documentation

+ +

◆ Lx

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Lx
+
+getset
+
+ +

Lower X-Value

+ +
+
+ +

◆ Ly

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Ly
+
+getset
+
+ +

Lower Y-Value

+ +
+
+ +

◆ Lz

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Lz
+
+getset
+
+ +

Lower Z-Value

+ +
+
+ +

◆ Ux

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Ux
+
+getset
+
+ +

Upper X-Value

+ +
+
+ +

◆ Uy

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Uy
+
+getset
+
+ +

Upper Y-Value

+ +
+
+ +

◆ Uz

+ +
+
+ + + + + +
+ + + + +
double BAPointCloudRenderer.CloudData.BoundingBox.Uz
+
+getset
+
+ +

Upper Z-Value

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudData/BoundingBox.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node-members.html new file mode 100644 index 00000000..84b9eb00 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node-members.html @@ -0,0 +1,107 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudData.Node Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.CloudData.Node, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
BoundingBoxBAPointCloudRenderer.CloudData.Node
CreateAllGameObjects(MeshConfiguration configuration)BAPointCloudRenderer.CloudData.Nodeinline
CreateBoundingBoxGameObject()BAPointCloudRenderer.CloudData.Nodeinline
CreateGameObjects(MeshConfiguration configuration)BAPointCloudRenderer.CloudData.Nodeinline
DeactivateAllGameObjects()BAPointCloudRenderer.CloudData.Nodeinline
DeactivateGameObjects()BAPointCloudRenderer.CloudData.Nodeinline
ForgetPoints()BAPointCloudRenderer.CloudData.Nodeinline
GetChild(int index)BAPointCloudRenderer.CloudData.Nodeinline
GetEnumerator()BAPointCloudRenderer.CloudData.Nodeinline
GetLevel()BAPointCloudRenderer.CloudData.Nodeinline
HasChild(int index)BAPointCloudRenderer.CloudData.Nodeinline
HasGameObjects()BAPointCloudRenderer.CloudData.Nodeinline
HasPointsToRender()BAPointCloudRenderer.CloudData.Nodeinline
MetaDataBAPointCloudRenderer.CloudData.Node
NameBAPointCloudRenderer.CloudData.Node
Node(string name, PointCloudMetaData metaData, BoundingBox boundingBox, Node parent)BAPointCloudRenderer.CloudData.Nodeinline
ParentBAPointCloudRenderer.CloudData.Node
PointCountBAPointCloudRenderer.CloudData.Node
ReactivateAllGameObjects()BAPointCloudRenderer.CloudData.Nodeinline
ReactivateGameObjects()BAPointCloudRenderer.CloudData.Nodeinline
RemoveAllGameObjects(MeshConfiguration configuration)BAPointCloudRenderer.CloudData.Nodeinline
RemoveGameObjects(MeshConfiguration config)BAPointCloudRenderer.CloudData.Nodeinline
SetChild(int index, Node node)BAPointCloudRenderer.CloudData.Nodeinline
SetPoints(Vector3[] vertices, Color[] colors)BAPointCloudRenderer.CloudData.Nodeinline
ToString()BAPointCloudRenderer.CloudData.Nodeinline
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.html new file mode 100644 index 00000000..88b77dbc --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.html @@ -0,0 +1,959 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudData.Node Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudData.Node Class Reference
+
+
+ +

Resembles a node of the nested octree. + More...

+
+Inheritance diagram for BAPointCloudRenderer.CloudData.Node:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Node (string name, PointCloudMetaData metaData, BoundingBox boundingBox, Node parent)
 Creates a new node object. More...
 
int GetLevel ()
 Returns how deep in the tree this node is. 0 means it is the root node, 1 means it is a child of the root node and so on... More...
 
void CreateGameObjects (MeshConfiguration configuration)
 Creates the Game Object(s) containing the points of this node. Vertices and Colors have to be set before calling this function (via SetPoints)! This function has to be called from the main thread! More...
 
GameObject CreateBoundingBoxGameObject ()
 Creates a transparent box game object with the shape of the bounding box of this node. The color is determined by the hashcode of this node. Used for debugging purposes only. More...
 
void CreateAllGameObjects (MeshConfiguration configuration)
 Creates GameObjects for this node and all its (grand-)children. Useable for displaying a whole point cloud at once. Vertices and Colors have to be set before calling this function (via SetPoints) for this object and all its children! This function has to be called from the main thread! More...
 
void RemoveGameObjects (MeshConfiguration config)
 Removes the GameObjects of this node. Has to be called from the main thread. More...
 
void RemoveAllGameObjects (MeshConfiguration configuration)
 Removes the GameObjects of this node and all it's children. Has to be called from the main thread. More...
 
void DeactivateGameObjects ()
 Deactivates the GameObjects of this node. Has to be called from the main thread. More...
 
void DeactivateAllGameObjects ()
 Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread. More...
 
void ReactivateGameObjects ()
 Reactivates the GameObjects of this node. Has to be called from the main thread. More...
 
void ReactivateAllGameObjects ()
 Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread. More...
 
void SetPoints (Vector3[] vertices, Color[] colors)
 Sets the point data. Throws an exception if gameobjects already exist or vertices or colors are null or their length do not match. Also sets the point count. More...
 
void ForgetPoints ()
 Deletes the loaded vertex- and color-information (to release the used memory). The point count stays saved however. More...
 
bool HasPointsToRender ()
 Returns true, iff vertices and colors are set More...
 
bool HasGameObjects ()
 Returns true, iff this object has GameObjects. More...
 
void SetChild (int index, Node node)
 Sets the child with the given index More...
 
Node GetChild (int index)
 Returns the child at the given index More...
 
bool HasChild (int index)
 Returns true, iff the node has a child at the given index. More...
 
IEnumerator< NodeGetEnumerator ()
 Returns an enumerator with which it is possible to enumerate through the children of the node (not including null-values) More...
 
override string ToString ()
 Returns a string representation of the Node (for example "Node: r123") More...
 
+ + + + + + + + + + + + + + + + +

+Properties

string Name [get]
 The name of the node, which is the path of the node in the tree. For example "023" for the forth child of the third child of the first child of the root node. (readonly) More...
 
BoundingBox BoundingBox [get]
 The BoundingBox of the node (readonly) More...
 
Node Parent [get, set]
 The parent of this node (may be null, if this is a root node) More...
 
int PointCount [get]
 Number of points given the last time SetPoints was called. Or -1 if it hasn't been called yet More...
 
PointCloudMetaData MetaData [get]
 The metadata identifying which pointcloud this node belongs to More...
 
+

Detailed Description

+

Resembles a node of the nested octree.

+

Constructor & Destructor Documentation

+ +

◆ Node()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BAPointCloudRenderer.CloudData.Node.Node (string name,
PointCloudMetaData metaData,
BoundingBox boundingBox,
Node parent 
)
+
+inline
+
+ +

Creates a new node object.

+
Parameters
+ + + + + +
nameThe path of the node in the tree. For example "023" for the forth child of the third child of the first child of the root node.
metaDataThe meta data of the point cloud, to identify which cloud this node belongs to.
boundingBoxThe bounding box of this node.
parentThe parent node. May be null if this is the root node.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateAllGameObjects()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.CreateAllGameObjects (MeshConfiguration configuration)
+
+inline
+
+ +

Creates GameObjects for this node and all its (grand-)children. Useable for displaying a whole point cloud at once. Vertices and Colors have to be set before calling this function (via SetPoints) for this object and all its children! This function has to be called from the main thread!

+
Parameters
+ + +
configurationThe MeshConfiguration which should be used for creating the Game Objects
+
+
+ +
+
+ +

◆ CreateBoundingBoxGameObject()

+ +
+
+ + + + + +
+ + + + + + + +
GameObject BAPointCloudRenderer.CloudData.Node.CreateBoundingBoxGameObject ()
+
+inline
+
+ +

Creates a transparent box game object with the shape of the bounding box of this node. The color is determined by the hashcode of this node. Used for debugging purposes only.

+ +
+
+ +

◆ CreateGameObjects()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.CreateGameObjects (MeshConfiguration configuration)
+
+inline
+
+ +

Creates the Game Object(s) containing the points of this node. Vertices and Colors have to be set before calling this function (via SetPoints)! This function has to be called from the main thread!

+
Parameters
+ + +
configurationThe MeshConfiguration which should be used for creating the Game Objects
+
+
+ +
+
+ +

◆ DeactivateAllGameObjects()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.Node.DeactivateAllGameObjects ()
+
+inline
+
+ +

Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread.

+ +
+
+ +

◆ DeactivateGameObjects()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.Node.DeactivateGameObjects ()
+
+inline
+
+ +

Deactivates the GameObjects of this node. Has to be called from the main thread.

+ +
+
+ +

◆ ForgetPoints()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.Node.ForgetPoints ()
+
+inline
+
+ +

Deletes the loaded vertex- and color-information (to release the used memory). The point count stays saved however.

+ +
+
+ +

◆ GetChild()

+ +
+
+ + + + + +
+ + + + + + + + +
Node BAPointCloudRenderer.CloudData.Node.GetChild (int index)
+
+inline
+
+ +

Returns the child at the given index

+
Parameters
+ + +
index0 <= index < 8
+
+
+
Returns
The child (may be null, if no child exists at that index)
+ +
+
+ +

◆ GetEnumerator()

+ +
+
+ + + + + +
+ + + + + + + +
IEnumerator<Node> BAPointCloudRenderer.CloudData.Node.GetEnumerator ()
+
+inline
+
+ +

Returns an enumerator with which it is possible to enumerate through the children of the node (not including null-values)

+
Returns
+ +
+
+ +

◆ GetLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int BAPointCloudRenderer.CloudData.Node.GetLevel ()
+
+inline
+
+ +

Returns how deep in the tree this node is. 0 means it is the root node, 1 means it is a child of the root node and so on...

+
Returns
the level in the tree (>=0)
+ +
+
+ +

◆ HasChild()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BAPointCloudRenderer.CloudData.Node.HasChild (int index)
+
+inline
+
+ +

Returns true, iff the node has a child at the given index.

+
Parameters
+ + +
index0 <= index < 8
+
+
+ +
+
+ +

◆ HasGameObjects()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.CloudData.Node.HasGameObjects ()
+
+inline
+
+ +

Returns true, iff this object has GameObjects.

+ +
+
+ +

◆ HasPointsToRender()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.CloudData.Node.HasPointsToRender ()
+
+inline
+
+ +

Returns true, iff vertices and colors are set

+ +
+
+ +

◆ ReactivateAllGameObjects()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.Node.ReactivateAllGameObjects ()
+
+inline
+
+ +

Deactivates the GameObjects of this node and of all its children. Has to be called from the main thread.

+ +
+
+ +

◆ ReactivateGameObjects()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.CloudData.Node.ReactivateGameObjects ()
+
+inline
+
+ +

Reactivates the GameObjects of this node. Has to be called from the main thread.

+ +
+
+ +

◆ RemoveAllGameObjects()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.RemoveAllGameObjects (MeshConfiguration configuration)
+
+inline
+
+ +

Removes the GameObjects of this node and all it's children. Has to be called from the main thread.

+
Parameters
+ + +
configThe MeshConfiguration which should be used for removing the Game Objects
+
+
+ +
+
+ +

◆ RemoveGameObjects()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.RemoveGameObjects (MeshConfiguration config)
+
+inline
+
+ +

Removes the GameObjects of this node. Has to be called from the main thread.

+
Parameters
+ + +
configThe MeshConfiguration which should be used for removing the Game Objects
+
+
+ +
+
+ +

◆ SetChild()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.SetChild (int index,
Node node 
)
+
+inline
+
+ +

Sets the child with the given index

+
Parameters
+ + + +
index0 <= index < 8
nodeChild node.
+
+
+ +
+
+ +

◆ SetPoints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.CloudData.Node.SetPoints (Vector3 [] vertices,
Color [] colors 
)
+
+inline
+
+ +

Sets the point data. Throws an exception if gameobjects already exist or vertices or colors are null or their length do not match. Also sets the point count.

+
Parameters
+ + + +
verticesPosition-Data
colorsColor-Data (has to have the same length as vertices)
+
+
+ +
+
+ +

◆ ToString()

+ +
+
+ + + + + +
+ + + + + + + +
override string BAPointCloudRenderer.CloudData.Node.ToString ()
+
+inline
+
+ +

Returns a string representation of the Node (for example "Node: r123")

+
Returns
+ +
+
+

Property Documentation

+ +

◆ BoundingBox

+ +
+
+ + + + + +
+ + + + +
BoundingBox BAPointCloudRenderer.CloudData.Node.BoundingBox
+
+get
+
+ +

The BoundingBox of the node (readonly)

+ +
+
+ +

◆ MetaData

+ +
+
+ + + + + +
+ + + + +
PointCloudMetaData BAPointCloudRenderer.CloudData.Node.MetaData
+
+get
+
+ +

The metadata identifying which pointcloud this node belongs to

+ +
+
+ +

◆ Name

+ +
+
+ + + + + +
+ + + + +
string BAPointCloudRenderer.CloudData.Node.Name
+
+get
+
+ +

The name of the node, which is the path of the node in the tree. For example "023" for the forth child of the third child of the first child of the root node. (readonly)

+ +
+
+ +

◆ Parent

+ +
+
+ + + + + +
+ + + + +
Node BAPointCloudRenderer.CloudData.Node.Parent
+
+getset
+
+ +

The parent of this node (may be null, if this is a root node)

+ +
+
+ +

◆ PointCount

+ +
+
+ + + + + +
+ + + + +
int BAPointCloudRenderer.CloudData.Node.PointCount
+
+get
+
+ +

Number of points given the last time SetPoints was called. Or -1 if it hasn't been called yet

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudData/Node.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.png b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.png new file mode 100644 index 00000000..3a96202e Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_node.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data-members.html new file mode 100644 index 00000000..a77d7656 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data-members.html @@ -0,0 +1,95 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudData.PointCloudMetaData Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.CloudData.PointCloudMetaData, including all inherited members.

+ + + + + + + + + + + + + + +
boundingBox (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
cloudName (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
cloudPath (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
hierarchyStepSize (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
octreeDir (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
pointAttributes (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
points (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
projection (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
ReadFromJson(string json, bool moveToOrigin)BAPointCloudRenderer.CloudData.PointCloudMetaDatainlinestatic
scale (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
spacing (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
tightBoundingBox (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
version (defined in BAPointCloudRenderer.CloudData.PointCloudMetaData)BAPointCloudRenderer.CloudData.PointCloudMetaData
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data.html new file mode 100644 index 00000000..0c7c0d71 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_point_cloud_meta_data.html @@ -0,0 +1,183 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudData.PointCloudMetaData Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudData.PointCloudMetaData Class Reference
+
+
+ +

Description of a Bounding Box. Created from the cloud.js-File. Contains all attributes from that file plus two more: cloudPath (folder path of the cloud) and cloudName (name of the cloud) + More...

+ + + + + +

+Static Public Member Functions

static PointCloudMetaData ReadFromJson (string json, bool moveToOrigin)
 Reads the metadata from a json-string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+string version
 
+string octreeDir
 
+string projection
 
+int points
 
+BoundingBox boundingBox
 
+BoundingBox tightBoundingBox
 
+List< string > pointAttributes
 
+double spacing
 
+double scale
 
+int hierarchyStepSize
 
+string cloudPath
 
+string cloudName
 
+

Detailed Description

+

Description of a Bounding Box. Created from the cloud.js-File. Contains all attributes from that file plus two more: cloudPath (folder path of the cloud) and cloudName (name of the cloud)

+

Member Function Documentation

+ +

◆ ReadFromJson()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PointCloudMetaData BAPointCloudRenderer.CloudData.PointCloudMetaData.ReadFromJson (string json,
bool moveToOrigin 
)
+
+inlinestatic
+
+ +

Reads the metadata from a json-string.

+
Parameters
+ + + +
jsonJson-String
moveToOriginTrue, iff the center of the bounding boxes should be moved to the origin
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudData/PointCloudMetaData.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d-members.html new file mode 100644 index 00000000..bf7f60ac --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d-members.html @@ -0,0 +1,94 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.CloudData.Vector3d Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d.html b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d.html new file mode 100644 index 00000000..4963172f --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_cloud_data_1_1_vector3d.html @@ -0,0 +1,400 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.CloudData.Vector3d Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.CloudData.Vector3d Class Reference
+
+
+ +

A vector using double values. The values are final, calculations always create a new vector. However, the x,y,z-values can be changed directly + More...

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Vector3d (double x, double y, double z)
 
Vector3d (Vector3 original)
 
double Length ()
 magnitude of this vector More...
 
Vector3 ToFloatVector ()
 Returns a Unity-Vector with float-values More...
 
double Distance (Vector3d other)
 Returns the distance between the points described by this and the other vector More...
 
Vector3d Normalize ()
 Normalizes the vector More...
 
+override string ToString ()
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static Vector3d operator/ (Vector3d v, double divisor)
 Divides the vector by the given value More...
 
static Vector3d operator+ (Vector3d a, Vector3d b)
 Adds two vectors More...
 
static Vector3d operator- (Vector3d a, Vector3d b)
 Subtracts the second vector from the first More...
 
static double operator* (Vector3d a, Vector3d b)
 Calculates the Dot-Product More...
 
+ + + +

+Public Attributes

+double x
 
+

Detailed Description

+

A vector using double values. The values are final, calculations always create a new vector. However, the x,y,z-values can be changed directly

+

Member Function Documentation

+ +

◆ Distance()

+ +
+
+ + + + + +
+ + + + + + + + +
double BAPointCloudRenderer.CloudData.Vector3d.Distance (Vector3d other)
+
+inline
+
+ +

Returns the distance between the points described by this and the other vector

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + +
+ + + + + + + +
double BAPointCloudRenderer.CloudData.Vector3d.Length ()
+
+inline
+
+ +

magnitude of this vector

+ +
+
+ +

◆ Normalize()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3d BAPointCloudRenderer.CloudData.Vector3d.Normalize ()
+
+inline
+
+ +

Normalizes the vector

+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static double BAPointCloudRenderer.CloudData.Vector3d.operator* (Vector3d a,
Vector3d b 
)
+
+inlinestatic
+
+ +

Calculates the Dot-Product

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Vector3d BAPointCloudRenderer.CloudData.Vector3d.operator+ (Vector3d a,
Vector3d b 
)
+
+inlinestatic
+
+ +

Adds two vectors

+ +
+
+ +

◆ operator-()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Vector3d BAPointCloudRenderer.CloudData.Vector3d.operator- (Vector3d a,
Vector3d b 
)
+
+inlinestatic
+
+ +

Subtracts the second vector from the first

+ +
+
+ +

◆ operator/()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Vector3d BAPointCloudRenderer.CloudData.Vector3d.operator/ (Vector3d v,
double divisor 
)
+
+inlinestatic
+
+ +

Divides the vector by the given value

+ +
+
+ +

◆ ToFloatVector()

+ +
+
+ + + + + +
+ + + + + + + +
Vector3 BAPointCloudRenderer.CloudData.Vector3d.ToFloatVector ()
+
+inline
+
+ +

Returns a Unity-Vector with float-values

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/CloudData/Vector3d.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller-members.html new file mode 100644 index 00000000..ee29aea7 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller-members.html @@ -0,0 +1,91 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.AbstractPointSetController Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.html new file mode 100644 index 00000000..c63f6afc --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.html @@ -0,0 +1,397 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.AbstractPointSetController Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.AbstractPointSetController Class Referenceabstract
+
+
+ +

A PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The only current implementation of this class is PointCloudSetRealTimeController. + More...

+
+Inheritance diagram for BAPointCloudRenderer.Controllers.AbstractPointSetController:
+
+
+ + +BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

void RegisterController (MonoBehaviour controller)
 Registers a PointCloud-Controller (See DynamicLoaderController). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller More...
 
void UpdateBoundingBox (MonoBehaviour controller, BoundingBox boundingBox)
 Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread. More...
 
void AddRootNode (Node node)
 Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. More...
 
void OnApplicationQuit ()
 Shuts down the renderer More...
 
uint GetPointCount ()
 Returns the point count More...
 
+ + + + +

+Public Attributes

bool moveCenterToTransformPosition = true
 Whether the center of the cloud should be moved to the position of this component More...
 
+ + + + + + + +

+Protected Member Functions

abstract void Initialize ()
 Override this instead of Start!! Make sure to set the PointRenderer in here!!! More...
 
bool CheckReady ()
 Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. More...
 
+ + + + +

+Properties

AbstractRenderer PointRenderer [get, set]
 The Renderer (value may not be null at setting) More...
 
+

Detailed Description

+

A PointSetController enables loading and rendering several point clouds at once using an AbstractRenderer. Everytime you want to use an AbstractRenderer it is recommended to use an AbstractPointSetController, even if you have only one cloud. The configured options of the point set controller (for example point budget) work for all point clouds attached to this set. Every pointcloud has its own controller (for example a DynamicLoaderController), which has to register itself at the PointSetController via the methods RegisterController, UpdateBoundingBox and AddRootNode. The only current implementation of this class is PointCloudSetRealTimeController.

+

Member Function Documentation

+ +

◆ AddRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Controllers.AbstractPointSetController.AddRootNode (Node node)
+
+inline
+
+ +

Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox.

+ +
+
+ +

◆ CheckReady()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.Controllers.AbstractPointSetController.CheckReady ()
+
+inlineprotected
+
+ +

Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded.

+ +
+
+ +

◆ GetPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint BAPointCloudRenderer.Controllers.AbstractPointSetController.GetPointCount ()
+
+inline
+
+ +

Returns the point count

+
Returns
+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
abstract void BAPointCloudRenderer.Controllers.AbstractPointSetController.Initialize ()
+
+protectedpure virtual
+
+ +

Override this instead of Start!! Make sure to set the PointRenderer in here!!!

+ +

Implemented in BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.

+ +
+
+ +

◆ OnApplicationQuit()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Controllers.AbstractPointSetController.OnApplicationQuit ()
+
+inline
+
+ +

Shuts down the renderer

+ +
+
+ +

◆ RegisterController()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Controllers.AbstractPointSetController.RegisterController (MonoBehaviour controller)
+
+inline
+
+ +

Registers a PointCloud-Controller (See DynamicLoaderController). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller

+
Parameters
+ + +
controllernot null
+
+
+
See also
DynamicLoaderController
+ +
+
+ +

◆ UpdateBoundingBox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.Controllers.AbstractPointSetController.UpdateBoundingBox (MonoBehaviour controller,
BoundingBox boundingBox 
)
+
+inline
+
+ +

Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread.

+ +
+
+

Member Data Documentation

+ +

◆ moveCenterToTransformPosition

+ +
+
+ + + + +
bool BAPointCloudRenderer.Controllers.AbstractPointSetController.moveCenterToTransformPosition = true
+
+ +

Whether the center of the cloud should be moved to the position of this component

+ +
+
+

Property Documentation

+ +

◆ PointRenderer

+ +
+
+ + + + + +
+ + + + +
AbstractRenderer BAPointCloudRenderer.Controllers.AbstractPointSetController.PointRenderer
+
+getset
+
+ +

The Renderer (value may not be null at setting)

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/AbstractPointSetController.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.png new file mode 100644 index 00000000..e6fa8435 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_abstract_point_set_controller.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller-members.html new file mode 100644 index 00000000..d3af3715 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller-members.html @@ -0,0 +1,83 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.CameraController Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.Controllers.CameraController, including all inherited members.

+ + +
normalSpeed (defined in BAPointCloudRenderer.Controllers.CameraController)BAPointCloudRenderer.Controllers.CameraController
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.html new file mode 100644 index 00000000..e34ece32 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.html @@ -0,0 +1,100 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.CameraController Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.CameraController Class Reference
+
+
+
+Inheritance diagram for BAPointCloudRenderer.Controllers.CameraController:
+
+
+ + + +
+ + + + +

+Public Attributes

+float normalSpeed = 100
 
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/CameraController.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.png new file mode 100644 index 00000000..ace3c326 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_camera_controller.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader-members.html new file mode 100644 index 00000000..bab3d5a2 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader-members.html @@ -0,0 +1,84 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.html new file mode 100644 index 00000000..f25e51a6 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.html @@ -0,0 +1,141 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader Class Reference
+
+
+ +

Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds. + More...

+
+Inheritance diagram for BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader:
+
+
+ + + +
+ + + + + + + + +

+Public Attributes

string path
 Path of the directory containing the point clouds More...
 
AbstractPointSetController pointset
 The PointSetController More...
 
+

Detailed Description

+

Use this loader, if you have several pointcloud-folders in the same directory and want to load all of them at once. This controller will create a DynamicLoaderController for each of the point clouds.

+

Member Data Documentation

+ +

◆ path

+ +
+
+ + + + +
string BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader.path
+
+ +

Path of the directory containing the point clouds

+ +
+
+ +

◆ pointset

+ +
+
+ + + + +
AbstractPointSetController BAPointCloudRenderer.Controllers.CloudsFromDirectoryLoader.pointset
+
+ +

The PointSetController

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/CloudsFromDirectoryLoader.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.png new file mode 100644 index 00000000..1a6f7db9 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_clouds_from_directory_loader.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller-members.html new file mode 100644 index 00000000..9409e699 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller-members.html @@ -0,0 +1,84 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.DynamicLoaderController Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.html new file mode 100644 index 00000000..15d283c7 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.html @@ -0,0 +1,141 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.DynamicLoaderController Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.DynamicLoaderController Class Reference
+
+
+ +

Use this script to load a single PointCloud from a directory. + More...

+
+Inheritance diagram for BAPointCloudRenderer.Controllers.DynamicLoaderController:
+
+
+ + + +
+ + + + + + + + +

+Public Attributes

string cloudPath
 Path to the folder which contains the cloud.js file More...
 
AbstractPointSetController setController
 The PointSetController to use More...
 
+

Detailed Description

+

Use this script to load a single PointCloud from a directory.

+

Member Data Documentation

+ +

◆ cloudPath

+ +
+
+ + + + +
string BAPointCloudRenderer.Controllers.DynamicLoaderController.cloudPath
+
+ +

Path to the folder which contains the cloud.js file

+ +
+
+ +

◆ setController

+ +
+
+ + + + +
AbstractPointSetController BAPointCloudRenderer.Controllers.DynamicLoaderController.setController
+
+ +

The PointSetController to use

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/DynamicLoaderController.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.png new file mode 100644 index 00000000..ac13e7c4 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_dynamic_loader_controller.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller-members.html new file mode 100644 index 00000000..fd790dda --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller-members.html @@ -0,0 +1,85 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.PointCloudLoaderController Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.html new file mode 100644 index 00000000..c8892498 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.html @@ -0,0 +1,160 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.PointCloudLoaderController Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.PointCloudLoaderController Class Reference
+
+
+ +

Loads and renders a PointCloud from a folder completely at once. For each node a GameObject is created. + More...

+
+Inheritance diagram for BAPointCloudRenderer.Controllers.PointCloudLoaderController:
+
+
+ + + +
+ + + + + + + + + + + +

+Public Attributes

string cloudPath
 Path to the folder which contains the cloud.js file More...
 
MeshConfiguration meshConfiguration
 How to render the PointCloud More...
 
bool moveToOrigin
 If the center of the cloud should be moved to the origin More...
 
+

Detailed Description

+

Loads and renders a PointCloud from a folder completely at once. For each node a GameObject is created.

+

Member Data Documentation

+ +

◆ cloudPath

+ +
+
+ + + + +
string BAPointCloudRenderer.Controllers.PointCloudLoaderController.cloudPath
+
+ +

Path to the folder which contains the cloud.js file

+ +
+
+ +

◆ meshConfiguration

+ +
+
+ + + + +
MeshConfiguration BAPointCloudRenderer.Controllers.PointCloudLoaderController.meshConfiguration
+
+ +

How to render the PointCloud

+ +
+
+ +

◆ moveToOrigin

+ +
+
+ + + + +
bool BAPointCloudRenderer.Controllers.PointCloudLoaderController.moveToOrigin
+
+ +

If the center of the cloud should be moved to the origin

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/PointCloudLoaderController.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.png new file mode 100644 index 00000000..0e5b4f91 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_loader_controller.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller-members.html new file mode 100644 index 00000000..62c147f8 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller-members.html @@ -0,0 +1,97 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.html b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.html new file mode 100644 index 00000000..69f8eae9 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.html @@ -0,0 +1,286 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController Class Reference
+
+
+ +

The PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed + More...

+
+Inheritance diagram for BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController:
+
+
+ + +BAPointCloudRenderer.Controllers.AbstractPointSetController + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

uint pointBudget = 1000000
 Point Budget - Maximum Number of Points in Memory / to Render More...
 
int minNodeSize = 10
 Minimum Node Size More...
 
uint nodesLoadedPerFrame = 15
 Maximum number of nodes loaded per frame More...
 
uint nodesGOsPerFrame = 30
 Maximum number of nodes having their gameobjects created per frame More...
 
MeshConfiguration meshConfiguration
 MeshConfiguration. Defines how to render the points. More...
 
uint cacheSizeInPoints = 1000000
 Cache Size in POints More...
 
- Public Attributes inherited from BAPointCloudRenderer.Controllers.AbstractPointSetController
bool moveCenterToTransformPosition = true
 Whether the center of the cloud should be moved to the position of this component More...
 
+ + + + + + + + +

+Protected Member Functions

override void Initialize ()
 Override this instead of Start!! Make sure to set the PointRenderer in here!!! More...
 
- Protected Member Functions inherited from BAPointCloudRenderer.Controllers.AbstractPointSetController
bool CheckReady ()
 Returns true, iff all the nodes are registered, have been moved to the center (if required) and the renderer is loaded. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BAPointCloudRenderer.Controllers.AbstractPointSetController
void RegisterController (MonoBehaviour controller)
 Registers a PointCloud-Controller (See DynamicLoaderController). This should be done in the start-method of the pc-controller and is neccessary for the bounding-box-recalculation. The whole cloud will be moved and rendered as soon as for every registererd controller the bounding box was given via UpdateBoundingBox. Should be called only once for every controller More...
 
void UpdateBoundingBox (MonoBehaviour controller, BoundingBox boundingBox)
 Sets the bounding box of a given Cloud-Controller, which has been registered via RegisterController first. If the bounding box should be moved (moveToOrigin), this method does not terminate until the movement has happened (via update), so this method should not be called in the main thread. More...
 
void AddRootNode (Node node)
 Adds a root node to the renderer. Should be called by the PC-Controller, which also has to call RegisterController and UpdateBoundingBox. More...
 
void OnApplicationQuit ()
 Shuts down the renderer More...
 
uint GetPointCount ()
 Returns the point count More...
 
- Properties inherited from BAPointCloudRenderer.Controllers.AbstractPointSetController
AbstractRenderer PointRenderer [get, set]
 The Renderer (value may not be null at setting) More...
 
+

Detailed Description

+

The PointSetController for RealTimeRendering described in the thesis. Uses a V2Renderer, so each frame the displayed GameObjects get refreshed

+

Member Function Documentation

+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
override void BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.Initialize ()
+
+inlineprotectedvirtual
+
+ +

Override this instead of Start!! Make sure to set the PointRenderer in here!!!

+ +

Implements BAPointCloudRenderer.Controllers.AbstractPointSetController.

+ +
+
+

Member Data Documentation

+ +

◆ cacheSizeInPoints

+ +
+
+ + + + +
uint BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.cacheSizeInPoints = 1000000
+
+ +

Cache Size in POints

+ +
+
+ +

◆ meshConfiguration

+ +
+
+ + + + +
MeshConfiguration BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.meshConfiguration
+
+ +

MeshConfiguration. Defines how to render the points.

+ +
+
+ +

◆ minNodeSize

+ +
+
+ + + + +
int BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.minNodeSize = 10
+
+ +

Minimum Node Size

+ +
+
+ +

◆ nodesGOsPerFrame

+ +
+
+ + + + +
uint BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.nodesGOsPerFrame = 30
+
+ +

Maximum number of nodes having their gameobjects created per frame

+ +
+
+ +

◆ nodesLoadedPerFrame

+ +
+
+ + + + +
uint BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.nodesLoadedPerFrame = 15
+
+ +

Maximum number of nodes loaded per frame

+ +
+
+ +

◆ pointBudget

+ +
+
+ + + + +
uint BAPointCloudRenderer.Controllers.PointCloudSetRealTimeController.pointBudget = 1000000
+
+ +

Point Budget - Maximum Number of Points in Memory / to Render

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Controllers/PointCloudSetRealTimeController.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.png b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.png new file mode 100644 index 00000000..5847493b Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_controllers_1_1_point_cloud_set_real_time_controller.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue-members.html new file mode 100644 index 00000000..653b0124 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue-members.html @@ -0,0 +1,97 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T > Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >, including all inherited members.

+ + + + + + + + + + + + + + + + +
Clear()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
CountBAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >
Dequeue()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
Dequeue(out I priority)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
Enqueue(T element, I priority)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
GetEnumerator()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
HeapPriorityQueue() (defined in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inline
HeapPriorityQueue(int capacity)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inline
HeapPriorityQueue(HeapPriorityQueue< I, T > original)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inline
IsEmpty()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
locker (defined in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >protected
MaxPriority()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
Peek()BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
Remove(T element)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
Remove(T element, I priority)BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >inlinevirtual
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.html new file mode 100644 index 00000000..cad67895 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.html @@ -0,0 +1,588 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T > Class Template Reference
+
+
+ +

A priority queue implemented with a Max Heap. This queue is threadsafe. Each function locks over a mutex-object + More...

+
+Inheritance diagram for BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >:
+
+
+ + +BAPointCloudRenderer.DataStructures.PriorityQueue< I, T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 HeapPriorityQueue (int capacity)
 
 HeapPriorityQueue (HeapPriorityQueue< I, T > original)
 Copy Constructor More...
 
override void Clear ()
 Removes all elements from the heap More...
 
override T Dequeue ()
 Removes the element with the highest priority from the heap and returns it. Throws an InvalidOperationException if queue is empty. Runs in O(logn) More...
 
override T Dequeue (out I priority)
 Removes the element with the highest priority from the heap and returns it. Its priority is given through the parameter. Throws an InvalidOperationException if queue is empty. Runs in O(logn) More...
 
override I MaxPriority ()
 Returns the maximum priority in the queue. Throws an InvalidOperationException if the queue is empty More...
 
override void Enqueue (T element, I priority)
 Inserts an element into the queue. Runs in O(logn) More...
 
override IEnumerator< T > GetEnumerator ()
 Returns an Enumerator, which enables enumerating in priority order through the queue. Changes in the queue after calling this function are not seen in the iterator, as the queue is copied. This runs in O(n) More...
 
override bool IsEmpty ()
 Returns true, iff Count is zero More...
 
override T Peek ()
 Returns the element with the highest priority without removing it. If the queue is empty, an InvalidOperationException is thrown. Runs in O(1) More...
 
override void Remove (T element)
 Removes the element from the queue, if it exists. Runs in O(n) More...
 
override void Remove (T element, I priority)
 Removes the given element with the given priority from the queue, if it exists. Providing the priority might speed up the process. Runs in O(n) More...
 
+ + + +

+Protected Attributes

+object locker = new object()
 
+ + + + + + + + +

+Properties

override int Count [get]
 Number of Elements inserted in the Heap More...
 
- Properties inherited from BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >
abstract int Count [get]
 The number of elements in this queue More...
 
+

Detailed Description

+

A priority queue implemented with a Max Heap. This queue is threadsafe. Each function locks over a mutex-object

+
Template Parameters
+ + + +
IPriority-Type
TValue-Type
+
+
+
+
Type Constraints
+ + +
I :IComparable<I> 
+
+
+
+

Constructor & Destructor Documentation

+ +

◆ HeapPriorityQueue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.HeapPriorityQueue (int capacity)
+
+inline
+
+ +

+
Parameters
+ + +
capacityInitial array length
+
+
+ +
+
+ +

◆ HeapPriorityQueue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.HeapPriorityQueue (HeapPriorityQueue< I, T > original)
+
+inline
+
+ +

Copy Constructor

+
Parameters
+ + +
originalnot null
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
override void BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Clear ()
+
+inlinevirtual
+
+ +

Removes all elements from the heap

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Dequeue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
override T BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Dequeue ()
+
+inlinevirtual
+
+ +

Removes the element with the highest priority from the heap and returns it. Throws an InvalidOperationException if queue is empty. Runs in O(logn)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Dequeue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
override T BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Dequeue (out I priority)
+
+inlinevirtual
+
+ +

Removes the element with the highest priority from the heap and returns it. Its priority is given through the parameter. Throws an InvalidOperationException if queue is empty. Runs in O(logn)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Enqueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
override void BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Enqueue (element,
priority 
)
+
+inlinevirtual
+
+ +

Inserts an element into the queue. Runs in O(logn)

+
Parameters
+ + + +
elementValue
priorityPriority
+
+
+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ GetEnumerator()

+ +
+
+ + + + + +
+ + + + + + + +
override IEnumerator<T> BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.GetEnumerator ()
+
+inlinevirtual
+
+ +

Returns an Enumerator, which enables enumerating in priority order through the queue. Changes in the queue after calling this function are not seen in the iterator, as the queue is copied. This runs in O(n)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
override bool BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.IsEmpty ()
+
+inlinevirtual
+
+ +

Returns true, iff Count is zero

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ MaxPriority()

+ +
+
+ + + + + +
+ + + + + + + +
override I BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.MaxPriority ()
+
+inlinevirtual
+
+ +

Returns the maximum priority in the queue. Throws an InvalidOperationException if the queue is empty

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Peek()

+ +
+
+ + + + + +
+ + + + + + + +
override T BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Peek ()
+
+inlinevirtual
+
+ +

Returns the element with the highest priority without removing it. If the queue is empty, an InvalidOperationException is thrown. Runs in O(1)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Remove() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
override void BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Remove (element)
+
+inlinevirtual
+
+ +

Removes the element from the queue, if it exists. Runs in O(n)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+ +

◆ Remove() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
override void BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Remove (element,
priority 
)
+
+inlinevirtual
+
+ +

Removes the given element with the given priority from the queue, if it exists. Providing the priority might speed up the process. Runs in O(n)

+ +

Implements BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.

+ +
+
+

Property Documentation

+ +

◆ Count

+ +
+
+ + + + + +
+ + + + +
override int BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.Count
+
+get
+
+ +

Number of Elements inserted in the Heap

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/DataStructures/HeapPriorityQueue.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.png b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.png new file mode 100644 index 00000000..957c19a9 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_heap_priority_queue.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue-members.html new file mode 100644 index 00000000..b3c85c17 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue-members.html @@ -0,0 +1,93 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.DataStructures.PriorityQueue< I, T > Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.html new file mode 100644 index 00000000..0fa30d11 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.html @@ -0,0 +1,495 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.DataStructures.PriorityQueue< I, T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.DataStructures.PriorityQueue< I, T > Class Template Referenceabstract
+
+
+ +

A threadsafe PriorityQueue. + More...

+
+Inheritance diagram for BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >:
+
+
+ + +BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

abstract void Enqueue (T element, I priority)
 Inserts an element with its priority into this queue More...
 
abstract T Dequeue ()
 Removes and returns the element with the highest priority from the queue. Throws an InvalidOperationException if no element exists More...
 
abstract T Dequeue (out I priority)
 Removes and returns the element with the highest priority from the queue. The priority is given through the parameter. Throws an InvalidOperationExcpetion if no element exists More...
 
abstract I MaxPriority ()
 Returns the highest priority More...
 
abstract T Peek ()
 Returns the element with the highest priority from the queue without removing it. Throws an InvalidOperationException if no element exists More...
 
abstract void Remove (T element, I priority)
 Removes the given element from this queue, if it exists. It's also assured that the given priority matches this element. In some implementations, giving the priority may speed up the process. Only one element will be deleted, even if there are several equal ones More...
 
abstract void Remove (T element)
 Removes the given element from this queue, if it exists. Only one element will be deleted, even if there are several equal ones More...
 
abstract void Clear ()
 Removes all elements from the queue More...
 
abstract bool IsEmpty ()
 Returns true, iff the queue does not contain any elements More...
 
abstract IEnumerator< T > GetEnumerator ()
 Returns a threadsafe enumerator, which means you can delete elements from the queue while enumerating over it. However, the changes might not be seen in the enumerator, depending on the implementation. More...
 
+ + + + +

+Properties

abstract int Count [get]
 The number of elements in this queue More...
 
+

Detailed Description

+

A threadsafe PriorityQueue.

+
Template Parameters
+ + + +
IThe Priority-Type
TThe Value-Type
+
+
+
+
Type Constraints
+ + +
I :IComparable<I> 
+
+
+
+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
abstract void BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Clear ()
+
+pure virtual
+
+ +

Removes all elements from the queue

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Dequeue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
abstract T BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Dequeue ()
+
+pure virtual
+
+ +

Removes and returns the element with the highest priority from the queue. Throws an InvalidOperationException if no element exists

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Dequeue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
abstract T BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Dequeue (out I priority)
+
+pure virtual
+
+ +

Removes and returns the element with the highest priority from the queue. The priority is given through the parameter. Throws an InvalidOperationExcpetion if no element exists

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Enqueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
abstract void BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Enqueue (element,
priority 
)
+
+pure virtual
+
+ +

Inserts an element with its priority into this queue

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ GetEnumerator()

+ +
+
+ + + + + +
+ + + + + + + +
abstract IEnumerator<T> BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.GetEnumerator ()
+
+pure virtual
+
+ +

Returns a threadsafe enumerator, which means you can delete elements from the queue while enumerating over it. However, the changes might not be seen in the enumerator, depending on the implementation.

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
abstract bool BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.IsEmpty ()
+
+pure virtual
+
+ +

Returns true, iff the queue does not contain any elements

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ MaxPriority()

+ +
+
+ + + + + +
+ + + + + + + +
abstract I BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.MaxPriority ()
+
+pure virtual
+
+ +

Returns the highest priority

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Peek()

+ +
+
+ + + + + +
+ + + + + + + +
abstract T BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Peek ()
+
+pure virtual
+
+ +

Returns the element with the highest priority from the queue without removing it. Throws an InvalidOperationException if no element exists

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Remove() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
abstract void BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Remove (element,
priority 
)
+
+pure virtual
+
+ +

Removes the given element from this queue, if it exists. It's also assured that the given priority matches this element. In some implementations, giving the priority may speed up the process. Only one element will be deleted, even if there are several equal ones

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+ +

◆ Remove() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
abstract void BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Remove (element)
+
+pure virtual
+
+ +

Removes the given element from this queue, if it exists. Only one element will be deleted, even if there are several equal ones

+ +

Implemented in BAPointCloudRenderer.DataStructures.HeapPriorityQueue< I, T >.

+ +
+
+

Property Documentation

+ +

◆ Count

+ +
+
+ + + + + +
+ + + + +
abstract int BAPointCloudRenderer.DataStructures.PriorityQueue< I, T >.Count
+
+get
+
+ +

The number of elements in this queue

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/DataStructures/PriorityQueue.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.png b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.png new file mode 100644 index 00000000..7bf2740d Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_priority_queue.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue-members.html new file mode 100644 index 00000000..e65b601b --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue-members.html @@ -0,0 +1,89 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.DataStructures.RandomAccessQueue< T > Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue.html new file mode 100644 index 00000000..df2c81d9 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_random_access_queue.html @@ -0,0 +1,279 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.DataStructures.RandomAccessQueue< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.DataStructures.RandomAccessQueue< T > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Enqueue (T element)
 Inserts the element into the queue More...
 
Dequeue ()
 Removes the last inserted element from the queue. Throws an InvalidOperationException if the queue is empty. More...
 
bool IsEmpty ()
 Returns true if the queue is empty More...
 
void Clear ()
 Removes all elements from the queue More...
 
void Remove (T element)
 Removes the given element from the queue if it exists. If it does not exist, an InvalidOperationException is thrown. More...
 
bool Contains (T element)
 Returns true, iff the element is contained in the queue More...
 
+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.Clear ()
+
+inline
+
+ +

Removes all elements from the queue

+ +
+
+ +

◆ Contains()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.Contains (element)
+
+inline
+
+ +

Returns true, iff the element is contained in the queue

+ +
+
+ +

◆ Dequeue()

+ +
+
+ + + + + +
+ + + + + + + +
T BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.Dequeue ()
+
+inline
+
+ +

Removes the last inserted element from the queue. Throws an InvalidOperationException if the queue is empty.

+ +
+
+ +

◆ Enqueue()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.Enqueue (element)
+
+inline
+
+ +

Inserts the element into the queue

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.IsEmpty ()
+
+inline
+
+ +

Returns true if the queue is empty

+ +
+
+ +

◆ Remove()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.DataStructures.RandomAccessQueue< T >.Remove (element)
+
+inline
+
+ +

Removes the given element from the queue if it exists. If it does not exist, an InvalidOperationException is thrown.

+
Parameters
+ + +
element
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/DataStructures/RandomAccessQueue.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue-members.html new file mode 100644 index 00000000..a0bc2129 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue-members.html @@ -0,0 +1,90 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.DataStructures.ThreadSafeQueue< T > Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.html b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.html new file mode 100644 index 00000000..aec12124 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.html @@ -0,0 +1,133 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.DataStructures.ThreadSafeQueue< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.DataStructures.ThreadSafeQueue< T > Class Template Reference
+
+
+ +

A thredsafe queue + More...

+
+Inheritance diagram for BAPointCloudRenderer.DataStructures.ThreadSafeQueue< T >:
+
+
+ + + +
+ + + + + + + + + + + + + + +

+Public Member Functions

+void Enqueue (T element)
 
+T Dequeue ()
 
+bool TryDequeue (out T result)
 
+bool IsEmpty ()
 
+void Clear ()
 
+IEnumerator< T > GetEnumerator ()
 
+ + + +

+Properties

+int Count [get]
 
+

Detailed Description

+

A thredsafe queue

+
Template Parameters
+ + +
TValue-Type
+
+
+

The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/DataStructures/ThreadSafeQueue.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.png b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.png new file mode 100644 index 00000000..9f883851 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_data_structures_1_1_thread_safe_queue.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader-members.html new file mode 100644 index 00000000..4b2a9c82 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader-members.html @@ -0,0 +1,87 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.CloudLoader Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.Loading.CloudLoader, including all inherited members.

+ + + + + + +
LoadAllPointsForNode(Node node) (defined in BAPointCloudRenderer.Loading.CloudLoader)BAPointCloudRenderer.Loading.CloudLoaderinlinestatic
LoadHierarchyOnly(PointCloudMetaData metaData)BAPointCloudRenderer.Loading.CloudLoaderinlinestatic
LoadMetaData(string cloudPath, bool moveToOrigin=false)BAPointCloudRenderer.Loading.CloudLoaderinlinestatic
LoadPointCloud(PointCloudMetaData metaData)BAPointCloudRenderer.Loading.CloudLoaderinlinestatic
LoadPointsForNode(Node node)BAPointCloudRenderer.Loading.CloudLoaderinlinestatic
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader.html new file mode 100644 index 00000000..6b9bb80e --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_cloud_loader.html @@ -0,0 +1,253 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.CloudLoader Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.CloudLoader Class Reference
+
+
+ +

Provides methods for loading point clouds from the file system + More...

+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static PointCloudMetaData LoadMetaData (string cloudPath, bool moveToOrigin=false)
 Loads the meta data from the json-file in the given cloudpath. Attributes "cloudPath", and "cloudName" are set as well. More...
 
static Node LoadPointCloud (PointCloudMetaData metaData)
 Loads the complete Hierarchy and ALL points from the pointcloud. More...
 
static Node LoadHierarchyOnly (PointCloudMetaData metaData)
 Loads the hierarchy, but no points are loaded More...
 
static void LoadPointsForNode (Node node)
 Loads the points for the given node More...
 
+static uint LoadAllPointsForNode (Node node)
 
+

Detailed Description

+

Provides methods for loading point clouds from the file system

+

Member Function Documentation

+ +

◆ LoadHierarchyOnly()

+ +
+
+ + + + + +
+ + + + + + + + +
static Node BAPointCloudRenderer.Loading.CloudLoader.LoadHierarchyOnly (PointCloudMetaData metaData)
+
+inlinestatic
+
+ +

Loads the hierarchy, but no points are loaded

+
Parameters
+ + +
metaDataMetaData-Object, as received by LoadMetaData
+
+
+
Returns
The Root Node of the point cloud
+ +
+
+ +

◆ LoadMetaData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PointCloudMetaData BAPointCloudRenderer.Loading.CloudLoader.LoadMetaData (string cloudPath,
bool moveToOrigin = false 
)
+
+inlinestatic
+
+ +

Loads the meta data from the json-file in the given cloudpath. Attributes "cloudPath", and "cloudName" are set as well.

+
Parameters
+ + + +
cloudPathFolderpath of the cloud
moveToOriginTrue, if the center of the cloud should be moved to the origin
+
+
+ +
+
+ +

◆ LoadPointCloud()

+ +
+
+ + + + + +
+ + + + + + + + +
static Node BAPointCloudRenderer.Loading.CloudLoader.LoadPointCloud (PointCloudMetaData metaData)
+
+inlinestatic
+
+ +

Loads the complete Hierarchy and ALL points from the pointcloud.

+
Parameters
+ + +
metaDataMetaData-Object, as received by LoadMetaData
+
+
+
Returns
The Root Node of the point cloud
+ +
+
+ +

◆ LoadPointsForNode()

+ +
+
+ + + + + +
+ + + + + + + + +
static void BAPointCloudRenderer.Loading.CloudLoader.LoadPointsForNode (Node node)
+
+inlinestatic
+
+ +

Loads the points for the given node

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/CloudLoader.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes-members.html new file mode 100644 index 00000000..4068a3a8 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes-members.html @@ -0,0 +1,84 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.PointAttributes Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes.html new file mode 100644 index 00000000..0eff73cf --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_point_attributes.html @@ -0,0 +1,100 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.PointAttributes Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.PointAttributes Class Reference
+
+
+ +

Attributes for FileReading + More...

+ + + + + + +

+Public Attributes

+const string POSITION_CARTESIAN = "POSITION_CARTESIAN"
 
+const string COLOR_PACKED = "COLOR_PACKED"
 
+

Detailed Description

+

Attributes for FileReading

+

The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/PointAttributes.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer-members.html new file mode 100644 index 00000000..809b211e --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer-members.html @@ -0,0 +1,91 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.StaticRenderer Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.html new file mode 100644 index 00000000..38395837 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.html @@ -0,0 +1,377 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.StaticRenderer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.StaticRenderer Class Reference
+
+
+ +

Renderer for the StaticPointCloudSet. Each node that is passed to this renderer is loaded completely and then displayed all at once. It is possible to add and remove nodes after initialization. + More...

+
+Inheritance diagram for BAPointCloudRenderer.Loading.StaticRenderer:
+
+
+ + +BAPointCloudRenderer.Loading.AbstractRenderer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticRenderer (MeshConfiguration config)
 
void AddRootNode (Node rootNode)
 Registers the root node of a point cloud in the renderer. More...
 
uint GetPointCount ()
 Returns the current PointCount, so how many points are loaded / visible More...
 
int GetRootNodeCount ()
 Returns how many root nodes have been added More...
 
void RemoveRootNode (Node rootNode)
 Removes the root node of a point cloud from the renderer. The node will not be rendered any more. More...
 
void ShutDown ()
 Stops the rendering process and all concurrent threads get scheduled to stop. Also removes all cloud objects created by this renderer from the scene. More...
 
void Update ()
 Has to be called each frame More...
 
void Hide ()
 Pauses the rendering and hides all visible point clouds. More...
 
void Display ()
 Continues the rendering and displays all visible point clouds after them being hidden via hide. More...
 
+

Detailed Description

+

Renderer for the StaticPointCloudSet. Each node that is passed to this renderer is loaded completely and then displayed all at once. It is possible to add and remove nodes after initialization.

+

Member Function Documentation

+ +

◆ AddRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.AddRootNode (Node rootNode)
+
+inline
+
+ +

Registers the root node of a point cloud in the renderer.

+
Parameters
+ + +
rootNodenot null
+
+
+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Display()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.Display ()
+
+inline
+
+ +

Continues the rendering and displays all visible point clouds after them being hidden via hide.

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ GetPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint BAPointCloudRenderer.Loading.StaticRenderer.GetPointCount ()
+
+inline
+
+ +

Returns the current PointCount, so how many points are loaded / visible

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ GetRootNodeCount()

+ +
+
+ + + + + +
+ + + + + + + +
int BAPointCloudRenderer.Loading.StaticRenderer.GetRootNodeCount ()
+
+inline
+
+ +

Returns how many root nodes have been added

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Hide()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.Hide ()
+
+inline
+
+ +

Pauses the rendering and hides all visible point clouds.

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ RemoveRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.RemoveRootNode (Node rootNode)
+
+inline
+
+ +

Removes the root node of a point cloud from the renderer. The node will not be rendered any more.

+
Parameters
+ + +
rootNodenot null
+
+
+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ ShutDown()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.ShutDown ()
+
+inline
+
+ +

Stops the rendering process and all concurrent threads get scheduled to stop. Also removes all cloud objects created by this renderer from the scene.

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.StaticRenderer.Update ()
+
+inline
+
+ +

Has to be called each frame

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/StaticRenderer.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.png b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.png new file mode 100644 index 00000000..c554ad39 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_static_renderer.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util-members.html new file mode 100644 index 00000000..c22ebce1 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util-members.html @@ -0,0 +1,84 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.Util Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.Loading.Util, including all inherited members.

+ + + +
InsideFrustum(BoundingBox box, Plane[] frustum)BAPointCloudRenderer.Loading.Utilinlinestatic
InsideFrustum(Vector3 vec, Plane[] frustum)BAPointCloudRenderer.Loading.Utilinlinestatic
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util.html new file mode 100644 index 00000000..253c3d7f --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_util.html @@ -0,0 +1,177 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.Util Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.Util Class Reference
+
+
+ +

Various help functions + More...

+ + + + + + + + +

+Static Public Member Functions

static bool InsideFrustum (BoundingBox box, Plane[] frustum)
 Checks whether the bounding box is inside the frustum. Actually, there is a Unity function for this, however that one can only be called from the main thread. More...
 
static bool InsideFrustum (Vector3 vec, Plane[] frustum)
 Checks whether the vector is inside the frustum. Actually, there is a Unity function for this, however that one can only be called from the main thread. More...
 
+

Detailed Description

+

Various help functions

+

Member Function Documentation

+ +

◆ InsideFrustum() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool BAPointCloudRenderer.Loading.Util.InsideFrustum (BoundingBox box,
Plane [] frustum 
)
+
+inlinestatic
+
+ +

Checks whether the bounding box is inside the frustum. Actually, there is a Unity function for this, however that one can only be called from the main thread.

+ +
+
+ +

◆ InsideFrustum() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool BAPointCloudRenderer.Loading.Util.InsideFrustum (Vector3 vec,
Plane [] frustum 
)
+
+inlinestatic
+
+ +

Checks whether the vector is inside the frustum. Actually, there is a Unity function for this, however that one can only be called from the main thread.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/Util.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache-members.html new file mode 100644 index 00000000..f1d8cefe --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache-members.html @@ -0,0 +1,86 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.V2Cache Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.Loading.V2Cache, including all inherited members.

+ + + + + +
Insert(Node node)BAPointCloudRenderer.Loading.V2Cacheinline
PointCount()BAPointCloudRenderer.Loading.V2Cacheinline
V2Cache(uint maxPoints)BAPointCloudRenderer.Loading.V2Cacheinline
Withdraw(Node node)BAPointCloudRenderer.Loading.V2Cacheinline
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache.html new file mode 100644 index 00000000..bf847d63 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_cache.html @@ -0,0 +1,231 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.V2Cache Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.V2Cache Class Reference
+
+
+ +

The LRU Cache used by the V2Renderer (See Bachelor Thesis chapter 3.2.7 "LRU Cache"). + More...

+ + + + + + + + + + + + + + +

+Public Member Functions

 V2Cache (uint maxPoints)
 Creates a new Cache More...
 
void Insert (Node node)
 Inserts the node into this cache. If the node is already inside the cache, it is moved to the front. If theres no place inside the cache for this node, other nodes get removed from the cache (and their point data gets deleted) in order to free up space for this node. If this node still does not fit inside the cache its points are deleted right away. More...
 
void Withdraw (Node node)
 Removes a node from the cache (without deleting the point data), if the node exists inside the cache. If the node is not in the cache, nothing happens More...
 
uint PointCount ()
 Returns how many points are stored inside the cache right now More...
 
+

Detailed Description

+

The LRU Cache used by the V2Renderer (See Bachelor Thesis chapter 3.2.7 "LRU Cache").

+

Constructor & Destructor Documentation

+ +

◆ V2Cache()

+ +
+
+ + + + + +
+ + + + + + + + +
BAPointCloudRenderer.Loading.V2Cache.V2Cache (uint maxPoints)
+
+inline
+
+ +

Creates a new Cache

+
Parameters
+ + +
maxPointsMaximum number of points in this cache
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Insert()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.V2Cache.Insert (Node node)
+
+inline
+
+ +

Inserts the node into this cache. If the node is already inside the cache, it is moved to the front. If theres no place inside the cache for this node, other nodes get removed from the cache (and their point data gets deleted) in order to free up space for this node. If this node still does not fit inside the cache its points are deleted right away.

+
Parameters
+ + +
nodeNode, which has its points in memory right now
+
+
+ +
+
+ +

◆ PointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint BAPointCloudRenderer.Loading.V2Cache.PointCount ()
+
+inline
+
+ +

Returns how many points are stored inside the cache right now

+ +
+
+ +

◆ Withdraw()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.V2Cache.Withdraw (Node node)
+
+inline
+
+ +

Removes a node from the cache (without deleting the point data), if the node exists inside the cache. If the node is not in the cache, nothing happens

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/V2Cache.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread-members.html new file mode 100644 index 00000000..94205884 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread-members.html @@ -0,0 +1,86 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.V2LoadingThread Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread.html new file mode 100644 index 00000000..8d34e92c --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_loading_thread.html @@ -0,0 +1,141 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.V2LoadingThread Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.V2LoadingThread Class Reference
+
+
+ +

The Loading Thread of the V2-Rendering-System (see Bachelor Thesis chapter 3.2.6 "The Loading Thread"). Responsible for loading the point data. + More...

+ + + + + + + + + + + +

+Public Member Functions

V2LoadingThread (V2Cache cache)
 
+void Start ()
 
+void Stop ()
 
void ScheduleForLoading (Node node)
 Schedules the given node for loading. More...
 
+

Detailed Description

+

The Loading Thread of the V2-Rendering-System (see Bachelor Thesis chapter 3.2.6 "The Loading Thread"). Responsible for loading the point data.

+

Member Function Documentation

+ +

◆ ScheduleForLoading()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.V2LoadingThread.ScheduleForLoading (Node node)
+
+inline
+
+ +

Schedules the given node for loading.

+
Parameters
+ + +
nodenot null
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/V2LoadingThread.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer-members.html new file mode 100644 index 00000000..b0a1c248 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer-members.html @@ -0,0 +1,95 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.V2Renderer Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.html new file mode 100644 index 00000000..bc91ae28 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.html @@ -0,0 +1,595 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.V2Renderer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.V2Renderer Class Reference
+
+
+ +

The multithreaded Real-Time-Renderer as described in the Bachelor Thesis in chapter 3.2.2 - 3.2.7 + More...

+
+Inheritance diagram for BAPointCloudRenderer.Loading.V2Renderer:
+
+
+ + +BAPointCloudRenderer.Loading.AbstractRenderer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 V2Renderer (int minNodeSize, uint pointBudget, uint nodesLoadedPerFrame, uint nodesGOsperFrame, Camera camera, MeshConfiguration config, uint cacheSize)
 Creates a new V2Renderer and starts all the threads More...
 
void AddRootNode (Node rootNode)
 Registers the root node of a point cloud in the renderer. More...
 
void RemoveRootNode (Node rootNode)
 Removes the root node of a point cloud from the renderer. The node will not be rendered any more. This has to be called from the main thread! More...
 
int GetRootNodeCount ()
 Returns how many root nodes have been added More...
 
bool IsRunning ()
 True, if ShutDown() has not been called yet More...
 
void Update ()
 Gives the current camera data to the traversal thread and updates the GameObjects. Called from the MainThread. As described in the Bachelor Thesis in chapter 3.1.3 "Main Thread" More...
 
void ShutDown ()
 Stops the rendering process and all threads Must be called from the main thread! More...
 
void Pause ()
 Pauses the updating of the rendering. More...
 
void Continue ()
 Continues the rendering after pausing More...
 
void Hide ()
 Pauses the rendering and hides all visible point clouds. More...
 
void Display ()
 Continues the rendering and displays all visible point clouds after them being hidden via hide. More...
 
uint GetPointCount ()
 Returns the current PointCount, so how many points are loaded / visible More...
 
void SetQueues (Queue< Node > toRender, Queue< Node > toDelete, uint pointcount)
 Sets the new GO-update-queues. Called from the TraversalThread. More...
 
+

Detailed Description

+

The multithreaded Real-Time-Renderer as described in the Bachelor Thesis in chapter 3.2.2 - 3.2.7

+

Constructor & Destructor Documentation

+ +

◆ V2Renderer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BAPointCloudRenderer.Loading.V2Renderer.V2Renderer (int minNodeSize,
uint pointBudget,
uint nodesLoadedPerFrame,
uint nodesGOsperFrame,
Camera camera,
MeshConfiguration config,
uint cacheSize 
)
+
+inline
+
+ +

Creates a new V2Renderer and starts all the threads

+
Parameters
+ + + + + + + + +
minNodeSizeMinimum Node Size
pointBudgetPoint Budget
nodesLoadedPerFrameMaximum number of nodes loaded per frame
nodesGOsperFrameMaximum number of nodes for which GameObjects should be created per frame
cameraUser Camera
configMeshConfiguration, defining how the points should be rendered
cacheSizeSize of cache in points
+
+
+ +
+
+

Member Function Documentation

+ +

◆ AddRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.AddRootNode (Node rootNode)
+
+inline
+
+ +

Registers the root node of a point cloud in the renderer.

+
Parameters
+ + +
rootNodenot null
+
+
+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Continue()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.Continue ()
+
+inline
+
+ +

Continues the rendering after pausing

+ +
+
+ +

◆ Display()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.Display ()
+
+inline
+
+ +

Continues the rendering and displays all visible point clouds after them being hidden via hide.

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ GetPointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint BAPointCloudRenderer.Loading.V2Renderer.GetPointCount ()
+
+inline
+
+ +

Returns the current PointCount, so how many points are loaded / visible

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ GetRootNodeCount()

+ +
+
+ + + + + +
+ + + + + + + +
int BAPointCloudRenderer.Loading.V2Renderer.GetRootNodeCount ()
+
+inline
+
+ +

Returns how many root nodes have been added

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Hide()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.Hide ()
+
+inline
+
+ +

Pauses the rendering and hides all visible point clouds.

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ IsRunning()

+ +
+
+ + + + + +
+ + + + + + + +
bool BAPointCloudRenderer.Loading.V2Renderer.IsRunning ()
+
+inline
+
+ +

True, if ShutDown() has not been called yet

+ +
+
+ +

◆ Pause()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.Pause ()
+
+inline
+
+ +

Pauses the updating of the rendering.

+ +
+
+ +

◆ RemoveRootNode()

+ +
+
+ + + + + +
+ + + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.RemoveRootNode (Node rootNode)
+
+inline
+
+ +

Removes the root node of a point cloud from the renderer. The node will not be rendered any more. This has to be called from the main thread!

+
Parameters
+ + +
rootNodenot null
+
+
+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ SetQueues()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.SetQueues (Queue< NodetoRender,
Queue< NodetoDelete,
uint pointcount 
)
+
+inline
+
+ +

Sets the new GO-update-queues. Called from the TraversalThread.

+ +
+
+ +

◆ ShutDown()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.ShutDown ()
+
+inline
+
+ +

Stops the rendering process and all threads Must be called from the main thread!

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2Renderer.Update ()
+
+inline
+
+ +

Gives the current camera data to the traversal thread and updates the GameObjects. Called from the MainThread. As described in the Bachelor Thesis in chapter 3.1.3 "Main Thread"

+ +

Implements BAPointCloudRenderer.Loading.AbstractRenderer.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/V2Renderer.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.png b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.png new file mode 100644 index 00000000..b48936d4 Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_renderer.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread-members.html new file mode 100644 index 00000000..22794b67 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread-members.html @@ -0,0 +1,87 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.Loading.V2TraversalThread Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.Loading.V2TraversalThread, including all inherited members.

+ + + + + + +
SetNextCameraData(Vector3 cameraPosition, Vector3 camForward, Plane[] frustum, float screenHeight, float fieldOfView)BAPointCloudRenderer.Loading.V2TraversalThreadinline
Start()BAPointCloudRenderer.Loading.V2TraversalThreadinline
Stop() (defined in BAPointCloudRenderer.Loading.V2TraversalThread)BAPointCloudRenderer.Loading.V2TraversalThreadinline
StopAndWait() (defined in BAPointCloudRenderer.Loading.V2TraversalThread)BAPointCloudRenderer.Loading.V2TraversalThreadinline
V2TraversalThread(V2Renderer mainThread, V2LoadingThread loadingThread, List< Node > rootNodes, double minNodeSize, uint pointBudget, uint nodesLoadedPerFrame, uint nodesGOsPerFrame, V2Cache cache)BAPointCloudRenderer.Loading.V2TraversalThreadinline
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread.html b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread.html new file mode 100644 index 00000000..56cf45e9 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_loading_1_1_v2_traversal_thread.html @@ -0,0 +1,278 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.Loading.V2TraversalThread Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.Loading.V2TraversalThread Class Reference
+
+
+ +

The traversal thread of the V2 Rendering System. Checks constantly, which nodes are visible and should be rendered and which not. Described in the Bachelor Thesis in chapter 3.2.4 "Traversal Thread". This is the place, where most of the magic happens. + More...

+ + + + + + + + + + + + + + + +

+Public Member Functions

 V2TraversalThread (V2Renderer mainThread, V2LoadingThread loadingThread, List< Node > rootNodes, double minNodeSize, uint pointBudget, uint nodesLoadedPerFrame, uint nodesGOsPerFrame, V2Cache cache)
 Creates the object, but does not start the thread yet More...
 
void Start ()
 Starts the thread More...
 
void SetNextCameraData (Vector3 cameraPosition, Vector3 camForward, Plane[] frustum, float screenHeight, float fieldOfView)
 Sets the current camera data More...
 
+void Stop ()
 
+void StopAndWait ()
 
+

Detailed Description

+

The traversal thread of the V2 Rendering System. Checks constantly, which nodes are visible and should be rendered and which not. Described in the Bachelor Thesis in chapter 3.2.4 "Traversal Thread". This is the place, where most of the magic happens.

+

Constructor & Destructor Documentation

+ +

◆ V2TraversalThread()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BAPointCloudRenderer.Loading.V2TraversalThread.V2TraversalThread (V2Renderer mainThread,
V2LoadingThread loadingThread,
List< NoderootNodes,
double minNodeSize,
uint pointBudget,
uint nodesLoadedPerFrame,
uint nodesGOsPerFrame,
V2Cache cache 
)
+
+inline
+
+ +

Creates the object, but does not start the thread yet

+ +
+
+

Member Function Documentation

+ +

◆ SetNextCameraData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BAPointCloudRenderer.Loading.V2TraversalThread.SetNextCameraData (Vector3 cameraPosition,
Vector3 camForward,
Plane [] frustum,
float screenHeight,
float fieldOfView 
)
+
+inline
+
+ +

Sets the current camera data

+
Parameters
+ + + + + + +
cameraPositionCamera Position
camForwardForward Vector
frustumView Frustum
screenHeightScreen Height
fieldOfViewField of View
+
+
+ +
+
+ +

◆ Start()

+ +
+
+ + + + + +
+ + + + + + + +
void BAPointCloudRenderer.Loading.V2TraversalThread.Start ()
+
+inline
+
+ +

Starts the thread

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/Loading/V2TraversalThread.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration-members.html new file mode 100644 index 00000000..d660b354 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration-members.html @@ -0,0 +1,93 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.html new file mode 100644 index 00000000..6755f4a3 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.html @@ -0,0 +1,365 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration Class Reference
+
+
+ +

This is the default Mesh Configuration, that is able to render points as pixels, quads, circles and also provides fragment and cone interpolations using the fragment shader (see Thesis chapter 3.3.4 "Interpolation"). This works using Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". This class replaces GeoQuadMeshConfiguration in Version 1.2. + More...

+
+Inheritance diagram for BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration:
+
+
+ + +BAPointCloudRenderer.ObjectCreation.MeshConfiguration + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

+void Start ()
 
+void Update ()
 
override GameObject CreateGameObject (string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)
 Creates a single GameObject for the given data. More...
 
override int GetMaximumPointsPerMesh ()
 Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000. More...
 
override void RemoveGameObject (GameObject gameObject)
 Removes the GameObject More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

float pointRadius = 5
 Radius of the point (in pixel or world units, depending on variable screenSize) More...
 
bool renderCircles = false
 Whether the quads should be rendered as circles (true) or as squares (false) More...
 
bool screenSize = true
 True, if pointRadius should be interpreted as pixels, false if it should be interpreted as world units More...
 
FragInterpolationMode interpolation = FragInterpolationMode.OFF
 Wether and how to use interpolation More...
 
const bool reloadingPossible = true
 If changing the parameters should be possible during execution, this variable has to be set to true in the beginning! Later changes to this variable will not change anything More...
 
bool reload = false
 Set this to true to reload the shaders according to the changed parameters. After applying the changes, the variable will set itself back to false. More...
 
+

Detailed Description

+

This is the default Mesh Configuration, that is able to render points as pixels, quads, circles and also provides fragment and cone interpolations using the fragment shader (see Thesis chapter 3.3.4 "Interpolation"). This works using Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". This class replaces GeoQuadMeshConfiguration in Version 1.2.

+

Member Function Documentation

+ +

◆ CreateGameObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
override GameObject BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.CreateGameObject (string name,
Vector3 [] vertexData,
Color [] colorData,
BoundingBox boundingBox 
)
+
+inlinevirtual
+
+ +

Creates a single GameObject for the given data.

+
Parameters
+ + + + + +
nameName of the GameObject
vertexDataVertices (same size as colorData and the length is not higher than GetMaximumPointsPerMesh)
colorDataColors (same size as vertexData and the length is not higher than GetMaximumPointsPerMesh)
boundingBoxBounding Box
+
+
+
Returns
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ GetMaximumPointsPerMesh()

+ +
+
+ + + + + +
+ + + + + + + +
override int BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.GetMaximumPointsPerMesh ()
+
+inlinevirtual
+
+ +

Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000.

+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ RemoveGameObject()

+ +
+
+ + + + + +
+ + + + + + + + +
override void BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.RemoveGameObject (GameObject gameObject)
+
+inlinevirtual
+
+ +

Removes the GameObject

+
Parameters
+ + +
gameObjectShould be a GameObject created by this MeshConfiguration
+
+
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ interpolation

+ +
+
+ + + + +
FragInterpolationMode BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.interpolation = FragInterpolationMode.OFF
+
+ +

Wether and how to use interpolation

+ +
+
+ +

◆ pointRadius

+ +
+
+ + + + +
float BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.pointRadius = 5
+
+ +

Radius of the point (in pixel or world units, depending on variable screenSize)

+ +
+
+ +

◆ reload

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.reload = false
+
+ +

Set this to true to reload the shaders according to the changed parameters. After applying the changes, the variable will set itself back to false.

+ +
+
+ +

◆ reloadingPossible

+ +
+
+ + + + +
const bool BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.reloadingPossible = true
+
+ +

If changing the parameters should be possible during execution, this variable has to be set to true in the beginning! Later changes to this variable will not change anything

+ +
+
+ +

◆ renderCircles

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.renderCircles = false
+
+ +

Whether the quads should be rendered as circles (true) or as squares (false)

+ +
+
+ +

◆ screenSize

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration.screenSize = true
+
+ +

True, if pointRadius should be interpreted as pixels, false if it should be interpreted as world units

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/ObjectCreation/DefaultMeshConfiguration.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.png b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.png new file mode 100644 index 00000000..aba5987a Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_default_mesh_configuration.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration-members.html new file mode 100644 index 00000000..86f4ed40 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration-members.html @@ -0,0 +1,93 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.html new file mode 100644 index 00000000..97c1df70 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.html @@ -0,0 +1,365 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration Class Reference
+
+
+ +

Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. Creates a screen facing square or circle for each point using the Geometry Shader. Also supports various interpolation modes (see Thesis chapter 3.3.4 "Interpolation"). This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload". + More...

+
+Inheritance diagram for BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration:
+
+
+ + +BAPointCloudRenderer.ObjectCreation.MeshConfiguration + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

+void Start ()
 
+void Update ()
 
override GameObject CreateGameObject (string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)
 Creates a single GameObject for the given data. More...
 
override int GetMaximumPointsPerMesh ()
 Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000. More...
 
override void RemoveGameObject (GameObject gameObject)
 Removes the GameObject More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

float pointRadius = 10
 Radius of the point (in pixel or world units, depending on variable screenSize) More...
 
bool renderCircles = true
 Whether the quads should be rendered as circles (true) or as squares (false) More...
 
bool screenSize = true
 True, if pointRadius should be interpreted as pixels, false if it should be interpreted as world units More...
 
InterpolationMode interpolation = InterpolationMode.OFF
 Wether and how to use interpolation More...
 
bool reloadingPossible = true
 If changing the parameters should be possible during execution, this variable has to be set to true in the beginning! Later changes to this variable will not change anything More...
 
bool reload = false
 Set this to true to reload the shaders according to the changed parameters More...
 
+

Detailed Description

+

Geometry Shader Quad Rendering, as described in the Bachelor Thesis in chapter 3.3.3. Creates a screen facing square or circle for each point using the Geometry Shader. Also supports various interpolation modes (see Thesis chapter 3.3.4 "Interpolation"). This configuration also supports changes of the parameters while the application is running. Just change the parameters and check the checkbox "reload".

+

Member Function Documentation

+ +

◆ CreateGameObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
override GameObject BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.CreateGameObject (string name,
Vector3 [] vertexData,
Color [] colorData,
BoundingBox boundingBox 
)
+
+inlinevirtual
+
+ +

Creates a single GameObject for the given data.

+
Parameters
+ + + + + +
nameName of the GameObject
vertexDataVertices (same size as colorData and the length is not higher than GetMaximumPointsPerMesh)
colorDataColors (same size as vertexData and the length is not higher than GetMaximumPointsPerMesh)
boundingBoxBounding Box
+
+
+
Returns
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ GetMaximumPointsPerMesh()

+ +
+
+ + + + + +
+ + + + + + + +
override int BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.GetMaximumPointsPerMesh ()
+
+inlinevirtual
+
+ +

Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000.

+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ RemoveGameObject()

+ +
+
+ + + + + +
+ + + + + + + + +
override void BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.RemoveGameObject (GameObject gameObject)
+
+inlinevirtual
+
+ +

Removes the GameObject

+
Parameters
+ + +
gameObjectShould be a GameObject created by this MeshConfiguration
+
+
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ interpolation

+ +
+
+ + + + +
InterpolationMode BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.interpolation = InterpolationMode.OFF
+
+ +

Wether and how to use interpolation

+ +
+
+ +

◆ pointRadius

+ +
+
+ + + + +
float BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.pointRadius = 10
+
+ +

Radius of the point (in pixel or world units, depending on variable screenSize)

+ +
+
+ +

◆ reload

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.reload = false
+
+ +

Set this to true to reload the shaders according to the changed parameters

+ +
+
+ +

◆ reloadingPossible

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.reloadingPossible = true
+
+ +

If changing the parameters should be possible during execution, this variable has to be set to true in the beginning! Later changes to this variable will not change anything

+ +
+
+ +

◆ renderCircles

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.renderCircles = true
+
+ +

Whether the quads should be rendered as circles (true) or as squares (false)

+ +
+
+ +

◆ screenSize

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration.screenSize = true
+
+ +

True, if pointRadius should be interpreted as pixels, false if it should be interpreted as world units

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/ObjectCreation/GeoQuadMeshConfiguration.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.png b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.png new file mode 100644 index 00000000..f94bc13c Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_geo_quad_mesh_configuration.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration-members.html new file mode 100644 index 00000000..493f572d --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration-members.html @@ -0,0 +1,85 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.ObjectCreation.MeshConfiguration Member List
+
+
+ +

This is the complete list of members for BAPointCloudRenderer.ObjectCreation.MeshConfiguration, including all inherited members.

+ + + + +
CreateGameObject(string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)BAPointCloudRenderer.ObjectCreation.MeshConfigurationpure virtual
GetMaximumPointsPerMesh()BAPointCloudRenderer.ObjectCreation.MeshConfigurationpure virtual
RemoveGameObject(GameObject gameObject)BAPointCloudRenderer.ObjectCreation.MeshConfigurationpure virtual
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.html new file mode 100644 index 00000000..d003b124 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.html @@ -0,0 +1,243 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.ObjectCreation.MeshConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.ObjectCreation.MeshConfiguration Class Referenceabstract
+
+
+ +

Defines how the points of a point cloud are rendered (points / quads / spheres etc.). Even though this is a MonoBehaviour-Script, it does not use the Start- or Update-Function. Having it as an object in your scene graph makes it easier to test different configuartions though. + More...

+
+Inheritance diagram for BAPointCloudRenderer.ObjectCreation.MeshConfiguration:
+
+
+ + +BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration +BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration +BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration +BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration + +
+ + + + + + + + + + + +

+Public Member Functions

abstract int GetMaximumPointsPerMesh ()
 Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000. More...
 
abstract GameObject CreateGameObject (string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)
 Creates a single GameObject for the given data. More...
 
abstract void RemoveGameObject (GameObject gameObject)
 Removes the GameObject More...
 
+

Detailed Description

+

Defines how the points of a point cloud are rendered (points / quads / spheres etc.). Even though this is a MonoBehaviour-Script, it does not use the Start- or Update-Function. Having it as an object in your scene graph makes it easier to test different configuartions though.

+

Member Function Documentation

+ +

◆ CreateGameObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
abstract GameObject BAPointCloudRenderer.ObjectCreation.MeshConfiguration.CreateGameObject (string name,
Vector3 [] vertexData,
Color [] colorData,
BoundingBox boundingBox 
)
+
+pure virtual
+
+ +

Creates a single GameObject for the given data.

+
Parameters
+ + + + + +
nameName of the GameObject
vertexDataVertices (same size as colorData and the length is not higher than GetMaximumPointsPerMesh)
colorDataColors (same size as vertexData and the length is not higher than GetMaximumPointsPerMesh)
boundingBoxBounding Box
+
+
+
Returns
+ +

Implemented in BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration, BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration, BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration, and BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration.

+ +
+
+ +

◆ GetMaximumPointsPerMesh()

+ +
+
+ + + + + +
+ + + + + + + +
abstract int BAPointCloudRenderer.ObjectCreation.MeshConfiguration.GetMaximumPointsPerMesh ()
+
+pure virtual
+
+ +

Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000.

+ +

Implemented in BAPointCloudRenderer.ObjectCreation.GeoQuadMeshConfiguration, BAPointCloudRenderer.ObjectCreation.DefaultMeshConfiguration, BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration, and BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration.

+ +
+
+ +

◆ RemoveGameObject()

+ +
+
+ + + + + +
+ + + + + + + + +
abstract void BAPointCloudRenderer.ObjectCreation.MeshConfiguration.RemoveGameObject (GameObject gameObject)
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/ObjectCreation/MeshConfiguration.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.png b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.png new file mode 100644 index 00000000..603f173c Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_mesh_configuration.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration-members.html new file mode 100644 index 00000000..a49378a2 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration-members.html @@ -0,0 +1,86 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.html new file mode 100644 index 00000000..6b63929f --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.html @@ -0,0 +1,243 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration Class Reference
+
+
+ +

Renders every point as a single pixel using the points primitive. As described in the Bachelor Thesis in chapter 3.3.1 "Single-Pixel Point Rendering". + More...

+
+Inheritance diagram for BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration:
+
+
+ + +BAPointCloudRenderer.ObjectCreation.MeshConfiguration + +
+ + + + + + + + + + + + + +

+Public Member Functions

+void Start ()
 
override GameObject CreateGameObject (string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)
 Creates a single GameObject for the given data. More...
 
override int GetMaximumPointsPerMesh ()
 Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000. More...
 
override void RemoveGameObject (GameObject gameObject)
 Removes the GameObject More...
 
+

Detailed Description

+

Renders every point as a single pixel using the points primitive. As described in the Bachelor Thesis in chapter 3.3.1 "Single-Pixel Point Rendering".

+

Member Function Documentation

+ +

◆ CreateGameObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
override GameObject BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration.CreateGameObject (string name,
Vector3 [] vertexData,
Color [] colorData,
BoundingBox boundingBox 
)
+
+inlinevirtual
+
+ +

Creates a single GameObject for the given data.

+
Parameters
+ + + + + +
nameName of the GameObject
vertexDataVertices (same size as colorData and the length is not higher than GetMaximumPointsPerMesh)
colorDataColors (same size as vertexData and the length is not higher than GetMaximumPointsPerMesh)
boundingBoxBounding Box
+
+
+
Returns
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ GetMaximumPointsPerMesh()

+ +
+
+ + + + + +
+ + + + + + + +
override int BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration.GetMaximumPointsPerMesh ()
+
+inlinevirtual
+
+ +

Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000.

+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ RemoveGameObject()

+ +
+
+ + + + + +
+ + + + + + + + +
override void BAPointCloudRenderer.ObjectCreation.PointMeshConfiguration.RemoveGameObject (GameObject gameObject)
+
+inlinevirtual
+
+ +

Removes the GameObject

+
Parameters
+ + +
gameObjectShould be a GameObject created by this MeshConfiguration
+
+
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/ObjectCreation/PointMeshConfiguration.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.png b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.png new file mode 100644 index 00000000..705e061d Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_point_mesh_configuration.png differ diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration-members.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration-members.html new file mode 100644 index 00000000..b3778e91 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration-members.html @@ -0,0 +1,88 @@ + + + + + + + +BA Point Cloud Renderer: Member List + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration Member List
+
+ + + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.html b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.html new file mode 100644 index 00000000..1bed4658 --- /dev/null +++ b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.html @@ -0,0 +1,286 @@ + + + + + + + +BA Point Cloud Renderer: BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
BA Point Cloud Renderer +  1.2 +
+
Unity Rendering System for Large Point Clouds
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration Class Reference
+
+
+ +

4-Vertex Quad Rendering, as described in the thesis in chapter 3.3.2. Creates sceen faced squares or circles for each point with a given size in pixels, by passing each vertex 4 times to the GPU + More...

+
+Inheritance diagram for BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration:
+
+
+ + +BAPointCloudRenderer.ObjectCreation.MeshConfiguration + +
+ + + + + + + + + + + + + +

+Public Member Functions

+void Start ()
 
override GameObject CreateGameObject (string name, Vector3[] vertexData, Color[] colorData, BoundingBox boundingBox)
 Creates a single GameObject for the given data. More...
 
override int GetMaximumPointsPerMesh ()
 Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000. More...
 
override void RemoveGameObject (GameObject gameObject)
 Removes the GameObject More...
 
+ + + + + + + +

+Public Attributes

float pointRadius = 10
 Radius in pixel More...
 
bool renderCircles = false
 Whether the quads should be rendered as circles (true) or as squares (false) More...
 
+

Detailed Description

+

4-Vertex Quad Rendering, as described in the thesis in chapter 3.3.2. Creates sceen faced squares or circles for each point with a given size in pixels, by passing each vertex 4 times to the GPU

+

Member Function Documentation

+ +

◆ CreateGameObject()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
override GameObject BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration.CreateGameObject (string name,
Vector3 [] vertexData,
Color [] colorData,
BoundingBox boundingBox 
)
+
+inlinevirtual
+
+ +

Creates a single GameObject for the given data.

+
Parameters
+ + + + + +
nameName of the GameObject
vertexDataVertices (same size as colorData and the length is not higher than GetMaximumPointsPerMesh)
colorDataColors (same size as vertexData and the length is not higher than GetMaximumPointsPerMesh)
boundingBoxBounding Box
+
+
+
Returns
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ GetMaximumPointsPerMesh()

+ +
+
+ + + + + +
+ + + + + + + +
override int BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration.GetMaximumPointsPerMesh ()
+
+inlinevirtual
+
+ +

Returns the maximum number of points a mesh can contain. 4-Vertex Quad Rendering for example only allows 16250, while most others allow 65000.

+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+ +

◆ RemoveGameObject()

+ +
+
+ + + + + +
+ + + + + + + + +
override void BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration.RemoveGameObject (GameObject gameObject)
+
+inlinevirtual
+
+ +

Removes the GameObject

+
Parameters
+ + +
gameObjectShould be a GameObject created by this MeshConfiguration
+
+
+ +

Implements BAPointCloudRenderer.ObjectCreation.MeshConfiguration.

+ +
+
+

Member Data Documentation

+ +

◆ pointRadius

+ +
+
+ + + + +
float BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration.pointRadius = 10
+
+ +

Radius in pixel

+ +
+
+ +

◆ renderCircles

+ +
+
+ + + + +
bool BAPointCloudRenderer.ObjectCreation.Quad4PointMeshConfiguration.renderCircles = false
+
+ +

Whether the quads should be rendered as circles (true) or as squares (false)

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • BAPointCloudRenderer/ObjectCreation/Quad4PointMeshConfiguration.cs
  • +
+
+ + + + diff --git a/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.png b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.png new file mode 100644 index 00000000..17afce3b Binary files /dev/null and b/doc/html/class_b_a_point_cloud_renderer_1_1_object_creation_1_1_quad4_point_mesh_configuration.png differ diff --git a/doc/html/classes.html b/doc/html/classes.html index 017f3dc1..c5b8d80b 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -5,7 +5,7 @@ -Point Cloud Renderer: Class Index +BA Point Cloud Renderer: Class Index @@ -21,8 +21,8 @@ -
Point Cloud Renderer -  1.0 +
BA Point Cloud Renderer +  1.2
Unity Rendering System for Large Point Clouds
@@ -64,40 +64,41 @@
Class Index
-
a | b | c | d | f | g | h | m | n | p | q | r | t | u | v
+
a | b | c | d | g | h | m | n | p | q | r | s | t | u | v
- - - - + + + + - - - + - - + + + + - - + + + +
  a  
-
CloudsFromDirectoryLoader (Controllers)   
  h  
-
PointCloudLoaderController (Controllers)   
  u  
+
  d  
+
  n  
+
  r  
+
  v  
  d  
-
PointCloudMetaData (CloudData)   
AbstractPointSetController (Controllers)   HeapPriorityQueue (DataStructures)   PointCloudSetRealTimeController (Controllers)   Util (Loading)   
AbstractRenderer (Loading)   DebugCloud (Eval)   
  m  
-
PointMeshConfiguration (ObjectCreation)   
  v  
-
AnimationHelper (Eval)   DynamicLoaderController (Controllers)   PriorityQueue (DataStructures)   
AbstractPointCloudSet (BAPointCloudRenderer.CloudController)   DefaultMeshConfiguration (BAPointCloudRenderer.ObjectCreation)   Node (BAPointCloudRenderer.CloudData)   RandomAccessQueue (BAPointCloudRenderer.DataStructures)   V2Cache (BAPointCloudRenderer.Loading)   
AbstractPointSetController (BAPointCloudRenderer.Controllers)   DirectoryLoader (BAPointCloudRenderer.CloudController)   
  p  
+
  s  
+
V2LoadingThread (BAPointCloudRenderer.Loading)   
AbstractRenderer (BAPointCloudRenderer.Loading)   DynamicLoaderController (BAPointCloudRenderer.Controllers)   V2Renderer (BAPointCloudRenderer.Loading)   
  b  
-
  f  
-
MeshConfiguration (ObjectCreation)   
  q  
-
V2Cache (Loading)   
  n  
-
V2LoadingThread (Loading)   
BoundingBox (CloudData)   FPSLogger (Eval)   Quad4PointMeshConfiguration (ObjectCreation)   V2Renderer (Loading)   
  c  
-
FPSOutputController (Eval)   Node (CloudData)   
  r  
-
V2TraversalThread (Loading)   
DynamicPointCloudSet (BAPointCloudRenderer.CloudController)   PointAttributes (BAPointCloudRenderer.Loading)   StaticPointCloudSet (BAPointCloudRenderer.CloudController)   V2TraversalThread (BAPointCloudRenderer.Loading)   
  g  
-
  p  
-
Vector3d (CloudData)   
CameraController (Controllers)   RandomAccessQueue (DataStructures)   
CloudLoader (Loading)   GeoQuadMeshConfiguration (ObjectCreation)   PointAttributes (Loading)   
  t  
+
PointCloudLoader (BAPointCloudRenderer.CloudController)   StaticRenderer (BAPointCloudRenderer.Loading)   Vector3d (BAPointCloudRenderer.CloudData)   
BoundingBox (BAPointCloudRenderer.CloudData)   PointCloudLoaderController (BAPointCloudRenderer.Controllers)   
  t  
+
  c  
+
GeoQuadMeshConfiguration (BAPointCloudRenderer.ObjectCreation)   PointCloudMetaData (BAPointCloudRenderer.CloudData)   
  h  
+
PointCloudSetRealTimeController (BAPointCloudRenderer.Controllers)   ThreadSafeQueue (BAPointCloudRenderer.DataStructures)   
CameraController (BAPointCloudRenderer.Controllers)   PointMeshConfiguration (BAPointCloudRenderer.ObjectCreation)   
  u  
ThreadSafeQueue (DataStructures)   
CloudLoader (BAPointCloudRenderer.Loading)   HeapPriorityQueue (BAPointCloudRenderer.DataStructures)   PriorityQueue (BAPointCloudRenderer.DataStructures)   
CloudsFromDirectoryLoader (BAPointCloudRenderer.Controllers)   
  m  
+
  q  
+
Util (BAPointCloudRenderer.Loading)   
MeshConfiguration (BAPointCloudRenderer.ObjectCreation)   Quad4PointMeshConfiguration (BAPointCloudRenderer.ObjectCreation)   
-
a | b | c | d | f | g | h | m | n | p | q | r | t | u | v
+
a | b | c | d | g | h | m | n | p | q | r | s | t | u | v