Puntenwolken bekijken, meten en bewerken

Open Pointcloud Studio

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)

Beta Windows · macOS · Linux Rust · wgpu GPL-3.0 · LGPL-3.0
Open Pointcloud Studio in isometrisch overzicht: een scan van 455 miljoen punten van een pand met tuin en bloeiende bomen, links het projectpaneel en rechts het paneel Eigenschappen
Dezelfde scan met de snedebox tot 11% van de hoogte, zodat de kamers van bovenaf zichtbaar worden, en een afstandsmeting van 26,774 meter tussen twee punten
De snedebox beperkt tot een schijf tussen 4% en 31% van de hoogte, waardoor de gevel met de ramen vrijkomt; rechts de opgeslagen view en de schuiven van de snedebox
Snedetekening van twee gegenereerde testkamers: de plattegrond van bovenaf, met het voorbeeld van de gevulde snede (de tussenwand met een open deuropening en een ronde kolom als gevulde vlakken) en rechts het blok Snedetekening in Eigenschappen
Gesloten mesh van dezelfde gegenereerde testkamers: het oppervlak van de twee kamers met een open deuropening in een buitenwand, en rechts het blok Gesloten mesh met het resultaat: 15.868 hoekpunten, 30.563 driehoeken en een gemiddelde afwijking van 1,6 mm
Herkende vlakken van dezelfde gegenereerde testkamers, elk type in een eigen kleur (plafonds blauw, wanden zandkleurig), en rechts het blok Vlakken herkennen met de aantallen: 2 vloeren, 2 plafonds, 10 wanden en 1 kolom

Download v0.8.0

Elke knop start de download meteen. Je hebt er geen account voor nodig en er komt geen tussenpagina aan te pas.

Windows
Windows 10 en 11, 64-bit
Installer (.exe)
macOS
macOS 11 en nieuwer, Apple- en Intel-processors
Schijfkopie (.dmg)
Linux
x86-64; Ubuntu 22.04, Debian 12, Fedora 36 of nieuwer
AppImage (elke distributie)

experimenteel Linux op 64-bit ARM: AppImage · .deb · .tar.gz

  • Windows: de installer installeert voor de huidige gebruiker, zonder beheerdersrechten, of voor alle gebruikers. Heeft de release geen code-ondertekening, dan kan Windows waarschuwen voor een onbekende uitgever: kies dan Meer informatie en Toch uitvoeren. Wil je niets installeren, pak dan de zip uit en start het programma daaruit.
  • macOS: open de schijfkopie en sleep de applicatie naar de map Apps. De applicatie is niet genotariseerd, dus macOS weigert de eerste start. Sta die één keer toe: op macOS 15 en nieuwer start je de applicatie, sluit je de melding en kies je Open toch onder Privacy en beveiliging in Systeeminstellingen; op macOS 11 tot en met 14 Control-klik je op de applicatie en kies je Open.
  • Linux: maak de AppImage één keer uitvoerbaar met 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.
  • Linux op 64-bit ARM: experimenteel. Deze pakketten zijn alleen gebouwd en getest op buildmachines met softwarerendering, nog niet op echte ARM-borden of -laptops.
  • Naast elk bestand staat in de release een gelijknamig .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).

Wat je ermee doet

Scans openen

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.

Een heel scanproject in één keer

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.

Grote bestanden

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.

Detail waar je kijkt

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.

Weergave

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.

Snedebox

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.

Meten

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.

Views, notities en BCF

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.

Stationsfoto's en lopen

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.

Selecteren en bewerken

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.

Exporteren en samenvoegen

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.

Meshes

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

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

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

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

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.

Nederlands en Engels

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.

Bestandsformaten

Formaat Lezen Schrijven Opmerking
LAS, LAZjajaOpent vanuit de header; exports behouden de oorspronkelijke puntrecords
E57jajaScannerposities en stationsfoto's worden gelezen; sferische en cilindrische foto's worden niet getoond
PLYjajaLeest ASCII en little-endian binair; schrijft beide
PCDjaneeASCII, binair en gecomprimeerd binair
PTXjaneeMet de scannerpositie van elke scan
PTSjaja
XYZ, ASC, TXT, CSVjaXYZ, CSVTekst met één punt per regel
OBJjajaMesh met kleuren en normalen; materiaalkleuren worden gelezen, textuurafbeeldingen niet. Herkende vlakken worden ook als OBJ geschreven, met een groep per vlak
PLY als meshjajaGetoond als vlakken. Geschreven als binaire PLY met coördinaten in dubbele precisie, en met kleuren en normalen als de mesh die heeft
STLjajaGetoond 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
OFFjaneeGetoond als vlakken; op te slaan als OBJ, PLY of STL
DXFjaja, als tekeningLezen: 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
DWGneeja, als tekeningDe 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)neejaDe 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)janeeAlleen 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)neejaOpgeslagen views met notities en afbeeldingen
PNGneejaAfbeelding van het 3D-beeld, via de commando-API

API · MCP · CLI

Commando-API en MCP-server

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.

Goed om te weten

  • 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.

Handleiding, wijzigingen en broncode

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.

Techniek en licentie

Rust iced wgpu

De desktopapplicatie valt onder GPL-3.0-only, de puntenwolkbibliotheek onder LGPL-3.0-or-later. Elk pakket bevat de licentieteksten.

Open Pointcloud Studio