Puntenwolken bekijken, meten en bewerken
Een desktopapplicatie voor het bekijken, meten, bewerken en omzetten van laserscans en andere puntenwolken. Uit een scan haal je een snedetekening in DXF of DWG, een gesloten mesh en de vlakken en cilinders van een ruimte. Draait op Windows, macOS en Linux, is geschreven in Rust en heeft geen browser of webview nodig.
Direct downloaden: Windows-installer · macOS (.dmg) · Linux (AppImage)
Elke knop start de download meteen. Je hebt er geen account voor nodig en er komt geen tussenpagina aan te pas.
experimenteel Linux op 64-bit ARM: AppImage · .deb · .tar.gz
chmod +x en start hem daarna. De AppImage koppelt zichzelf aan via FUSE (fusermount3 of fusermount); zonder FUSE start je hem met --appimage-extract-and-run achter de bestandsnaam. Het .deb-pakket installeer je met sudo apt install ./open-pointcloud-studio_*_amd64.deb, uitgevoerd in de map met de download. Linux heeft een C-bibliotheek van versie 2.35 of nieuwer nodig (Ubuntu 22.04, Debian 12, Fedora 36 of nieuwer), X11 of Wayland, en een Vulkan-driver of OpenGL ES 3. De vensters waarin je een bestand kiest, gebruiken het desktopportaal, of zenity waar dat er niet is..sha256-bestand met de controlesom: zet .sha256 achter het adres van een download om het op te halen. De README beschrijft hoe je een download ermee controleert (Engels).Puntenwolken in LAS, LAZ, E57, PLY, PCD, PTX, PTS en tekstformaten, en meshes in OBJ, PLY, OFF en STL. Sleep bestanden naar het venster en open er meerdere tegelijk: elk bestand is een laag die je verbergt, toont of sluit.
Open een map met scans, of het scanprojectbestand (.rcp) van een project: de scans die het noemt en die ernaast staan, gaan samen open. Slepen naar het venster werkt ook voor een map of een projectbestand.
LAS en LAZ openen meteen vanuit hun header. Een E57-bestand van 512 MiB of meer toont eerst een steekproef verspreid door het bestand, als de opbouw van het bestand dat toelaat; andere bestanden van die omvang tonen om de paar seconden de punten die al gelezen zijn. Een balk boven de scène toont de voortgang en de resterende tijd, met een knop om te annuleren.
Voor wolken vanaf een miljoen punten bouwt de applicatie automatisch een index op schijf, een octree. Die levert het detail voor het huidige camerastandpunt, tot het puntbudget dat je instelt: hoogstens tien miljoen punten. Terwijl de camera beweegt, blijven de punten op het scherm staan; het detail van het nieuwe beeld neemt hun plaats in zodra het is gelezen. De index blijft bewaard en wordt opnieuw gebruikt als je het bestand later weer opent.
Vier kleurmodi (opgeslagen kleur, hoogte, intensiteit en classificatie), eye-dome-belichting en een instelbare puntgrootte. De klassen die in de wolken voorkomen zet je een voor een aan of uit. Een viewcube en zeven camerarichtingen draaien het beeld.
Een box met zes versleepbare vlakken begrenst wat wordt getoond, geselecteerd, tot mesh verwerkt en op vlakken doorzocht. Zo snijd je een plattegrond of een doorsnede uit een scan; de inhoud van de box exporteer je apart of teken je als 2D-tekening. De box volgt de X-, Y- en Z-as van de scan en kan niet worden gedraaid.
Afstand meet een lijn door twee of meer gekozen punten: elk segment, de totale lengte, de horizontale lengte en het hoogteverschil. Oppervlakte meet een gesloten veelhoek in zijn eigen vlak, zodat ook een wand of een schuin dak klopt, met de oppervlakte van bovenaf gezien en de omtrek. Punten kies je uit alle punten van de actieve scan, niet alleen uit wat op het scherm staat.
Een opgeslagen view bewaart de camera, de snedebox, de kleurmodus en de aantekeningen: een notitie op een gekozen punt of een pijl tussen twee punten. Alle views van een scan exporteer je als één BCF 2.1-bestand, elk met zijn notities, camera, snijvlakken en een afbeelding van de scène.
Scannerstations van E57-, PCD- en PTX-scans staan als markering in de scène. Een station met foto's is een bol: klik erop om op dat station te gaan staan en rond te kijken. Loop door de scan met W, A, S en D, omlaag en omhoog met Q en E, sneller met Shift.
Selecteer met een rechthoek alle bronpunten die erin vallen, of kies één punt en lees de coördinaten en attributen af. Verwijder de selectie, met ongedaan maken tot acht stappen terug, dun een wolk uit tot een exact percentage, of verplaats en schaal hem. Het bronbestand verandert nooit: een export schrijft het bewerkte resultaat.
Exporteer de hele wolk, de selectie, alles behalve de selectie, de inhoud van de snedebox of elk N-de punt als LAS, LAZ, E57, PLY, XYZ, PTS of CSV. LAS- en LAZ-exports behouden de oorspronkelijke puntrecords met hun attributen. Zichtbare LAS- en LAZ-scans voeg je samen tot één bestand. Elke export leest de volledige bron, dus ook de punten die niet op het scherm staan komen in het bestand.
Terreinmesh maakt een 2,5D-oppervlak van de laagste punten in een raster. 3D-oppervlak volgt ook wanden en overstekken; het resultaat heeft gaten en is niet waterdicht. Mesh exporteren… slaat elke mesh, of hij nu hier is gemaakt, uit een bestand is geopend of uit de 3D BAG is gedownload, op als OBJ, binaire PLY of binaire STL. Eigenschappen toont de hoekpunten, de driehoeken, de open randen en het aantal samenhangende delen.
Snedetekening maakt een 2D-tekening op schaal 1:1 van wat de snedebox snijdt en slaat die op als DXF of DWG: een plattegrond van de plak onder het bovenvlak van de box, of een verticale doorsnede van de plak achter een van de vier zijden. De tekening bevat de punten van die plak uit alle zichtbare scans, uitgedund tot één punt per 5 mm. Gevulde snede tekent de wanden, kolommen en vloeren waar de plak doorheen snijdt als gevulde vlakken met een omtrek en laat deur- en raamopeningen open. Voorbeeld toont die vlakken over de punten voordat je een bestand opslaat.
Gesloten mesh maakt van alle punten binnen de snedebox, of van de hele scan, een oppervlak zonder overlap: gesloten waar de scan punten heeft of een gat smaller dan de ingestelde grens (0,25 m bij de start), met deur- en raamopeningen open. Zet de box om een ruimte en kies Starten; het blok in Eigenschappen zegt vooraf hoe groot het gebied is en ongeveer hoeveel driehoeken het geeft, en waarschuwt als dat meer is dan een mesh mag bevatten. Na afloop geeft het de gemiddelde, de 95%- en de grootste afstand tussen de punten en de mesh, de open randen en de samenhangende delen. Een mesh heeft hoogstens vier miljoen hoekpunten en acht miljoen driehoeken en is op te slaan als OBJ, PLY of STL.
Vlakken herkennen vindt in de snedebox, of in de hele scan, de platte vlakken (vloeren, plafonds, wanden en schuine vlakken) en de ronde kolommen en leidingen. Een plat vlak is één vlak met zijn omtrek, waarin een raam een gat is en een deur een inkeping; een kolom of leiding is één cilinder met zijn as, straal en gescande lengte, zonder omtrek. Het is geen mesh van het oppervlak. De lijst geeft per vlak het type, de oppervlakte en de restfout van de punten (RMS); een klik markeert het vlak in de scène. Vlakken exporteren… schrijft ze als JSON met de parameters van elk vlak en elke cilinder, of als OBJ met een groep per vlak.
3D BAG-gebouwen… onder Bestand downloadt gebouwmodellen van Nederland uit het openbare 3D BAG-register voor een gebied in RD-coördinaten en toont ze bij een scan. Eén download beslaat hoogstens 2 bij 2 km en ongeveer 5.000 gebouwen en heeft een internetverbinding nodig. Het is een ingebouwde extensie die je op de pagina Extensies kunt uitschakelen.
De interface volgt de taal van het systeem, Nederlands of Engels, en is in Instellingen te wisselen. De meldingen in de statusbalk en de meeste teksten met een aantal erin zijn alleen Engels. Er zijn vijf kleurthema's.
| Formaat | Lezen | Schrijven | Opmerking |
|---|---|---|---|
| LAS, LAZ | ja | ja | Opent vanuit de header; exports behouden de oorspronkelijke puntrecords |
| E57 | ja | ja | Scannerposities en stationsfoto's worden gelezen; sferische en cilindrische foto's worden niet getoond |
| PLY | ja | ja | Leest ASCII en little-endian binair; schrijft beide |
| PCD | ja | nee | ASCII, binair en gecomprimeerd binair |
| PTX | ja | nee | Met de scannerpositie van elke scan |
| PTS | ja | ja | |
| XYZ, ASC, TXT, CSV | ja | XYZ, CSV | Tekst met één punt per regel |
| OBJ | ja | ja | Mesh met kleuren en normalen; materiaalkleuren worden gelezen, textuurafbeeldingen niet. Herkende vlakken worden ook als OBJ geschreven, met een groep per vlak |
| PLY als mesh | ja | ja | Getoond als vlakken. Geschreven als binaire PLY met coördinaten in dubbele precisie, en met kleuren en normalen als de mesh die heeft |
| STL | ja | ja | Getoond als vlakken. Geschreven als binaire STL: alleen driehoeken, zonder kleuren. Een mesh die meer dan 2.048 m van nul ligt, wordt geschreven ten opzichte van een oorsprong in hele meters die de bestandsheader noemt |
| OFF | ja | nee | Getoond als vlakken; op te slaan als OBJ, PLY of STL |
| DXF | ja | ja, als tekening | Lezen: alleen ASCII-DXF. POINT-entiteiten openen als punten, 3DFACE-entiteiten als vlakken die als OBJ, PLY of STL op te slaan zijn; andere entiteiten worden overgeslagen. Schrijven: de 2D-tekening van een snedebox, met punten, gevulde vlakken, omtrekken en een regel tekst; geen formaat van de puntexports |
| DWG | nee | ja, als tekening | De 2D-tekening van een snedebox, zoals bij DXF, in de versie R2004, R2010, R2013 of R2018. DWG-bestanden worden niet geopend |
| Vlakken als JSON (.json) | nee | ja | De herkende vlakken van een scan: elk plat vlak met zijn parameters, zijn omtrek en de restfouten van zijn punten, elke cilinder met zijn as, zijn straal en zijn restfouten, en de randen tussen platte vlakken. De gebruikershandleiding beschrijft elk veld (Engels) |
| Scanprojectbestand (.rcp) | ja | nee | Alleen de lijst met scans wordt gelezen. De geïndexeerde scankopieën (.rcs) van een project zijn een gesloten formaat en worden niet gelezen |
| BCF 2.1 (.bcf) | nee | ja | Opgeslagen views met notities en afbeeldingen |
| PNG | nee | ja | Afbeelding van het 3D-beeld, via de commando-API |
API · MCP · CLI
Elk venster start een commandoserver op 127.0.0.1. De commando's openen en sluiten scans, stellen de camera, de snedebox en de weergave in, selecteren, verwijderen, meten, bewaren views, exporteren, tekenen sneden, maken meshes, herkennen vlakken, downloaden 3D BAG-gebouwen en maken afbeeldingen van het 3D-beeld. De server luistert alleen op het loopback-adres en weigert een commando zonder token.
open-pointcloud-studio --mcp start een server voor het Model Context Protocol. Die biedt een tool voor elk commando van de API, tools die op lange taken wachten, een tool die het 3D-beeld als afbeelding teruggeeft en tools om vensters op te sommen, te kiezen en te starten.
Vanaf de opdrachtregel werkt de applicatie ook zonder venster: omzetten naar een ander formaat, de punten binnen een box exporteren, scans samenvoegen, een index bouwen, een snede als DXF of DWG tekenen, meshes maken en vlakken herkennen.
API.md: alle commando's (Engels)
MCP.md: alle tools en de configuratie voor een clientprogramma (Engels)
README: de modi van de opdrachtregel (Engels)
De snedebox kan niet worden gedraaid. Een gebouw dat schuin op de assen van de scan staat, wordt onder die hoek gesneden.
Lengtes en oppervlakten staan in meters. De coördinaten van een scan worden als meters gelezen en niet omgerekend.
Een meting wordt niet met de scan opgeslagen.
Een 3D-oppervlak heeft gaten en is niet waterdicht.
Een mesh heeft hoogstens vier miljoen hoekpunten en acht miljoen driehoeken, of hij nu uit een bestand komt of in de applicatie is gemaakt.
Een gesloten mesh en herkende vlakken bestaan alleen in de lopende sessie: exporteer ze om ze te bewaren. Een scan bevat één mesh; een nieuwe mesh vervangt de vorige.
De puntlimiet van een snedetekening is standaard 150.000 punten en hoogstens 400.000; blijven er na het uitdunnen tot 5 mm meer punten over, dan verdubbelt de puntafstand tot ze passen.
De gevulde snede van een snedetekening is uit de punten afgeleid: een wand die van één kant is gescand wordt een smalle strook, openingen smaller dan ongeveer een halve meter worden gedicht, en meubels in de plak worden meegetekend tenzij je hun punten eerst verwijdert.
Een gesloten mesh rondt hoeken af met ongeveer een kwart voxel, laat voorwerpen dunner dan twee of drie voxels versmelten of gaten krijgen en laat sommige gaten naast een ander oppervlak open. Zonder scannerstations kan een oppervlak dat vanuit het midden van het gebied precies van opzij wordt gezien, gescheurd uitkomen.
Vlakken herkennen meldt geen stroken smaller dan 0,15 m, zoals deurneggen. Een gebied dat te groot is voor het werkbudget wordt met grotere voxels doorzocht, scans met ver uit elkaar liggende punten geven minder vlakken of geen, ronde kolommen breder dan ongeveer 0,7 m komen uit als stroken wand, en zonder scannerstations is de kant waar een vlak naar kijkt een schatting.
De DXF- en DWG-bestanden zijn nog niet met een reeks tekenprogramma's getest. Weigert een programma een DWG-bestand, probeer dan DXF of een andere bestandsversie.
De gevulde snede, Gesloten mesh en Vlakken herkennen zijn gemeten op gegenereerde kamers, nog niet op een scan van een echt gebouw. De gebruikershandleiding noemt de grenzen van de gevulde snede, Gesloten mesh en Vlakken herkennen (Engels).
Een index kan voor een grote opname meerdere gigabytes op schijf innemen.
Gebruikershandleiding: elk gereedschap in detail (Engels).
README: installeren per systeem, de eerste vijf minuten, en gemeten snelheden en grenzen (Engels).
Changelog: wat er per release is veranderd (Engels).
Broncode op GitHub, met de issues voor een probleem of een wens.
De desktopapplicatie valt onder GPL-3.0-only, de puntenwolkbibliotheek onder LGPL-3.0-or-later. Elk pakket bevat de licentieteksten.