1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[27275],{55077(e,s,n){n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"trees/data/point-clouds","title":"Point Clouds","description":"The Point Clouds branch of the Data tree \u2014 imported clouds in folders, each with an Attributes and a Tie Points node \u2014 and every right-click command on a cloud, a folder and the branch header.","source":"@site/versioned_docs/version-3.4/trees/data/point-clouds.md","sourceDirName":"trees/data","slug":"/trees/data/point-clouds","permalink":"/docs/trees/data/point-clouds","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/versioned_docs/version-3.4/trees/data/point-clouds.md","tags":[],"version":"3.4","sidebarPosition":3,"frontMatter":{"id":"point-clouds","title":"Point Clouds","description":"The Point Clouds branch of the Data tree \u2014 imported clouds in folders, each with an Attributes and a Tie Points node \u2014 and every right-click command on a cloud, a folder and the branch header.","sidebar_label":"Point Clouds","sidebar_position":3},"sidebar":"docs","previous":{"title":"Standard menus","permalink":"/docs/trees/data/standard-menus"},"next":{"title":"Attributes","permalink":"/docs/trees/data/mesh-attributes"}}');var r=n(74848),l=n(28453);const d={id:"point-clouds",title:"Point Clouds",description:"The Point Clouds branch of the Data tree \u2014 imported clouds in folders, each with an Attributes and a Tie Points node \u2014 and every right-click command on a cloud, a folder and the branch header.",sidebar_label:"Point Clouds",sidebar_position:3},c="Point Clouds",t={},o=[{value:"Item Context Menu",id:"item-context-menu",level:2},{value:"Actions",id:"actions",level:3},{value:"Selection submenu",id:"selection-submenu",level:3},{value:"Filtering & Cleanup submenu",id:"filtering--cleanup-submenu",level:3},{value:"Transform submenu",id:"transform-submenu",level:3},{value:"Attributes & Analysis submenu",id:"attributes--analysis-submenu",level:3},{value:"Split & Merge submenu",id:"split--merge-submenu",level:3},{value:"Surface Generation submenu",id:"surface-generation-submenu",level:3},{value:"Visualization submenu",id:"visualization-submenu",level:3},{value:"Optimization submenu",id:"optimization-submenu",level:3},{value:"Debug (Use With Caution) submenu",id:"debug-use-with-caution-submenu",level:3},{value:"Group Context Menu",id:"group-context-menu",level:2},{value:"Actions",id:"actions-1",level:3},{value:"Import submenu",id:"import-submenu",level:3},{value:"Generate Test Data submenu",id:"generate-test-data-submenu",level:3}];function h(e){const s={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"point-clouds",children:"Point Clouds"})}),"\n",(0,r.jsxs)(s.p,{children:["Right-click commands for the ",(0,r.jsx)(s.strong,{children:"Point Clouds"})," branch of the ",(0,r.jsx)(s.strong,{children:"Data Tree"})," \u2014 the branch header and its folders, and each point cloud. Under each point cloud are an ",(0,r.jsx)(s.strong,{children:"Attributes"})," node (",(0,r.jsx)(s.a,{href:"/docs/trees/data/mesh-attributes",children:"Attributes"}),") and a ",(0,r.jsx)(s.strong,{children:"Tie Points"})," node (",(0,r.jsx)(s.a,{href:"/docs/trees/data/tie-points",children:"Tie Points"}),")."]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsxs)(s.em,{children:["Source resources: ",(0,r.jsx)(s.code,{children:"IDR_DT_POINTCLOUD_ITEM"}),", ",(0,r.jsx)(s.code,{children:"IDR_DT_POINTCLOUD_GROUP"}),"."]})}),"\n",(0,r.jsx)(s.h2,{id:"item-context-menu",children:"Item Context Menu"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.em,{children:"Right-click an individual point cloud in the Data Tree."})}),"\n",(0,r.jsx)(s.h3,{id:"actions",children:"Actions"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Navigate To"})," \u2014 Navigate to the item in the 3D view ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POPUP_ITEM_GOTO"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Set As Active"})," \u2014 Activate the current object to access its entended menu. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PCLPOPUP_MAKEACTIVE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Look Through"})," \u2014 Look Through ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_LOOKTHROUGH"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Duplicate"})," \u2014 Duplicate ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DUPLICATE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Export"})," \u2014 Export ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_EXPORT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Reload Original"})," \u2014 Reload original ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_RELOADORIGINAL"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Mark As Modified"})," \u2014 Flag this mesh as modified so changes are tracked for saving. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_MESH_FLAGASEDITED"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Delete"})," \u2014 Delete ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DELETE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Cancel Operation"})," \u2014 Cancel the operation currently running on this mesh. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DEFAULTITEM_ENDPROCESS"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"selection-submenu",children:"Selection submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"By RGB Color"})," \u2014 By RGB Color ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPE
1RATIONS_SELECTUSINGRGBVALUES"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Inside Visible Polylines"})," \u2014 Inside Visible Polylines ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_SELECTINSIDEVISIBLEPOLYLINES"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Around Visible Objects"})," \u2014 Around Visible Objects ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_DECIMATE34317"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Isolated Points"})," \u2014 Isolated Points ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_REMOVEISOLATEDPOINTS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Deselect All"})," \u2014 Deselect All ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DESELECTALLVERTICES"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Delete Selected"})," \u2014 Delete selected ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DELETESELECTEDPOINTS"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"filtering--cleanup-submenu",children:"Filtering & Cleanup submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Filters"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Voxel 2D"})," \u2014 Subsample vertices to one per 2D (X-Y) voxel cell. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUD_FILTERS_VOXEL2D"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Voxel 3D"})," \u2014 Subsample vertices to one per 3D voxel cell. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUD_FILTERS_VOXEL3D"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Decluster"})," \u2014 Decluster ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_DECLUSTER"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Remove Duplicates"})," \u2014 Remove duplicates ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_REMOVEDUPLICATEPOINTS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Reduce Overlap"})," \u2014 Reduce overlap ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_OVERLAPREDUCTION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Clip By Range"})," \u2014 Clip By Range ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_CLIPRANGE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Delete"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Filtered Points"})," \u2014 Filtered Points ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ELIMINATE_FILTEREDDATA"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Selected Points"})," \u2014 Delete selected ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DELETESELECTEDPOINTS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Restore Deleted"})," \u2014 Restore Deleted ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_UNDELETEALL"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Intensity Correction (Prototype)"})," \u2014 Correct Intensity for Range ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_INTENSITYCORRECTION"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"transform-submenu",children:"Transform submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Scale"})," \u2014 Scale the mesh by a factor along one or more axes. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_SCALE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Rotate"})," \u2014 Rotate ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPE
1RATIONS_ROTATE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Translate"})," \u2014 Translate the mesh by a specified offset. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_TRANSLATE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Import Transform Matrix"})," \u2014 Import SOCS Matrix ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_IMPORTSOCSMATRIX"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Set Scanner Origin"})," \u2014 Set Origin ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_SETSCANNERORIGIN"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Remove Dip"})," \u2014 Rotate the mesh so its best-fit plane is horizontal (removes mean dip). ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_REMOVEDIP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Swap X and Y Axes"})," \u2014 Swap the X and Y coordinates of all vertices. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SWAPAXES_SWAPXANDY"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Swap X and Z Axes"})," \u2014 Swap the X and Z coordinates of all vertices. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SWAPAXES_SWAPXANDZ"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Swap Y and Z Axes"})," \u2014 Swap the Y and Z coordinates of all vertices. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SWAPAXES_SWAPYANDZ"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Copy Origin Position"})," \u2014 Copy origin position ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SCANNERPOSITION_COPYSCANPOSITION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Paste Origin Position"})," \u2014 Paste origin position ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SCANNERPOSITION_PASTESCANPOSITION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Clamp To Boundaries"})," \u2014 Clamp mesh vertices to a bounding box or surface limits. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_TRANSFORMS_CLAMPLIMITS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Coordinate Conversion"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Between Coordinate Systems (CRS)"})," \u2014 Reproject the mesh from one coordinate reference system to another. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_CONVERTCOORDINATES_CRSTOCRS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Meters to Feet"})," \u2014 Convert vertex coordinates from metres to feet. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PCLPOPUP_CONVERT_METRESTOFEET"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Feet to Meters"})," \u2014 Convert vertex coordinates from feet to metres. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PCLPOPUP_CONVERT_FEETTOMETRES"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Suggest UTM Zone"})," \u2014 Suggest a suitable UTM zone for the mesh based on its position. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_CONVERTCOORDINATES_SUGGESTUTMZONE"}),")"]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"attributes--analysis-submenu",children:"Attributes & Analysis submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Tensor Analysis"})," \u2014 Tensor Analysis ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTES_TENSORANALYSIS"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Range"})," \u2014 Range ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTE_RANGE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Elevation"})," \u2014 Elevation ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTE_ELEVATION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Laser Spot Size"})," \u2014 Laser Spot Size ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTES_LASERSPOTSIZE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Nearest Neighbor Distance"})," \u2014 Nearest Neighbor Distance ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTES_DISTANCETOCLOSESTPOINT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Best Fit Plane"})," \u2014 Best Fit Plane ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_BESTFITPLANE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"2D Convex Hull"})," \u2014 Compute the 2D convex hull of the mesh vertices in plan view. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPE
1RATIONS_CONVEXHULL2D"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Color Conversion"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"RGB to Greyscale"})," \u2014 Convert per-vertex RGB to a single greyscale attribute. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTES_GREYSCALEFROMRGB"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"RGB to XYZ Colorspace"})," \u2014 Convert per-vertex RGB to CIE XYZ colour space. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_COLOURSPACE_RGBCHANNELSTOXYZ"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"RGB to LAB Colorspace"})," \u2014 Convert per-vertex RGB to CIE LAB colour space. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_COLOURSPACE_RGBCHANNELSTOLAB"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"RGB to HSV Colorspace"})," \u2014 Convert per-vertex RGB to HSV colour space. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_COLOURSPACE_RGBCHANNELSTOHSV"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Classification"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Between Surfaces"})," \u2014 Classify triangles by their position between two reference surfaces. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_CLASSIFY_BETWEENSURFACES"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Calculator"})," \u2014 Open the attribute calculator to derive new attributes from expressions. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ATTRIBUTES_CALCULATOR"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Inverse Distance Weighting (IDW)"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"From Visible Polylines"})," \u2014 Interpolate an attribute from the visible polylines onto the mesh using inverse distance weighting. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_IDW_FROMDISPLAYEDPOLYLINES"}),")"]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"split--merge-submenu",children:"Split & Merge submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Using Octree"})," \u2014 Using Octree ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_OCTREESPLIT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Split By Axis"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Along X"})," \u2014 Along X ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_TILESPLIT_SPLITALONGX"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Along Y"})," \u2014 Along Y ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_TILESPLIT_SPLITALONGY"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Along Z"})," \u2014 Along Z ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_TILESPLIT_SPLITALONGZ"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Into Tiles"})," \u2014 Into Tiles ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_TILESPLIT_SPLITASTILES"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Merge"})," \u2014 Merge ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_MERGE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Group"})," \u2014 Group the selected items into a single project tree entry. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_GROUP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Ungroup"})," \u2014 Ungroup the selected group, restoring its contents to the parent. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_UNGROUP"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"surface-generation-submenu",children:"Surface Generation submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Create Mesh"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Delaunay Triangulation (2D)"})," \u2014 Triangulate the Point Cloud ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PCLPOPUP_TRIANGULATE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Greedy Projection (3D)"})," \u2014 Greedy Projection (3D) ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_MESHING_GREEDYPROJECTION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Poisson Reconstruction (3D)"})," \u2014 Poisson Reconstruction (3D) ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_MESHING_POISSONRECONSTRUCTION"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Digital Elevation Model (DEM)"})," \u2014 Digital Elevation Model (DEM) ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPE
1RATIONS_CREATEDEM"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Ground Surface Model"})," \u2014 Ground Surface Model ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_CREATEDEM_GROUND"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Points To Grid"})," \u2014 Points To Grid ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_SURFACEGENERATION_POINTSTOGRID"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"visualization-submenu",children:"Visualization submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"False Color"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"By Attribute"})," \u2014 Display the mesh with a false-colour ramp coloured by a chosen attribute. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_MESH_FALSECOLOUR_ATTRIBUTE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"By Elevation"})," \u2014 Display the mesh with a false-colour ramp coloured by elevation. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_MESH_FALSECOLOUR_ELEVATION"}),")"]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Align Normals"})," \u2014 Align normals ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_CONFORMNORMALS"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"optimization-submenu",children:"Optimization submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Generate Level of Detail (LOD)"})," \u2014 Generate level of detail (LOD) ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PCL_OPERATIONS_LOD"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Rebuild Partition Tree"})," \u2014 Rebuild the spatial partition tree used for fast queries and rendering. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OPERATIONS_REGENERATEPARTITIONTREE"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Load Into Memory"})," \u2014 Load the entire mesh into memory for faster access at the cost of RAM. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_OBJECTS_MAKERESIDENT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Unload From Memory"})," \u2014 Drop from Memory ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDS_DROP"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"debug-use-with-caution-submenu",children:"Debug (Use With Caution) submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Randomise Position"})," \u2014 Randomise Position ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DEBUG_RANDOMISEPOSITION"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Force Crash (DO NOT USE)"})," \u2014 For testing the crash reporting system ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DEBUG_FORCEACRASH"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Spherical to Cartesian"})," \u2014 Spherical to Cartesian ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DEBUG_SPHERICALTOCARTESIAN"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Cartesian to Spherical"})," \u2014 Cartesian to Spherical ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DEBUG_CARTESIANTOSPHERICAL"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"group-context-menu",children:"Group Context Menu"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.em,{children:"Right-click the Point Clouds parent group / list header in the Data Tree."})}),"\n",(0,r.jsx)(s.h3,{id:"actions-1",children:"Actions"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"New Point Cloud"})," \u2014 Create a new object based for this type ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GROUPPOPUP_NEW"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Group"})," \u2014 Group the selected items into a single project tree entry. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_GROUP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Ungroup"})," \u2014 Ungroup the selected group, restoring its contents to the parent. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_PROJEXP_UNGROUP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Export"})," \u2014 Export ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GROUPPOPUP_EXPORT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Sort By Name"})," ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"UNUSED_ID_POINTCLOUDGROUP_SORTBYNAME"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Clear All Items"})," \u2014 Clear all items ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GROUPPOPUP_EMPTYLIST"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Download Topography"})," \u2014 Download topography ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_DOWNLOAD_OPENTOPO"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Use Own Display Properties"})," \u2014 Let this group carry its own display settings instead of inheriting the parent's. ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GROUP_USE_OWN_DISPLAY_PROPS"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"import-submenu",children:"Import submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"From File..."})," \u2014 From File ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GROUPPOPUP_IMPORT"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"As Tiles..."})," \u2014 As Tiles ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_POINTCLOUDGROUP_IMPORTASTILES"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Arc Info ASCII (.asc) Folder"})," \u2014 Arc Info ASCII (.asc) Folder ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_IMPORTFOLDER_ARCINFORASCII"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"From RSP (Batch)"})," ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"UNUSED_ID_BATCHIMPORT_FROMRSP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Import Gaussian Splat"})," \u2014 Import gaussian splat ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_FILE_IMPORT_GAUSSIAN_SPLAT"}),")"]})]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"generate-test-data-submenu",children:"Generate Test Data submenu"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Spherical Pattern"})," \u2014 Generate artificial spherical pattern ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ARTIFICIALDATA_SPHERICAL"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Map Pattern"})," \u2014 Generate artificial map pattern ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_ARTIFICIALDATA_MAP"}),")"]})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Gaussian Splat Test"})," \u2014 Gaussian Splat Test ",(0,r.jsxs)(s.em,{children:["(",(0,r.jsx)(s.code,{children:"ID_GAUSSIANSPLAT_TEST"}),")"]})]}),"\n"]})]})}function x(e={}){const{wrapper:s}={...(0,l.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453(e,s,n){n.d(s,{R:()=>d,x:()=>c});var i=n(96540);const r={},l=i.createContext(r);function d(e){const s=i.useContext(l);return i.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:s},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.