1、Potree是什么

Potree是一种基于WebGL的点云数据可视化解决方案,包含点云数据转化,以及进行可视化的源码。该解决方案的主要优势在于对点云数据进行了多尺度的管理,在数据传输和可视化上都做了优化。它是一套开源的系统,基于Three.js,由奥地利维也纳理工大学的Harvest4D项目贡献。

2、获取Potree源码

Potree的git地址为https://github.com/potree,打开后,如下图所示

目前我们的目的是做一套可部署到本地点云加载显示软件,需要关注potree和PotreeDesktop两个内容。其中potree是核心,使用jsvascript开发,PotreeDesktop使用electron,把Web程序包装成了桌面程序,于是我们就可以使用javascript基于potree开发桌面软件了。

如果从头开始搭建开发环境,肯定会很复杂,例如需要下载部署好Potree环境,需要搭建electron环境。有个比较简单的办法就是,我们把官方的PotreeDesktop部署包下载下来,在此基础上修改扩展即可。

3、获取PotreeDesktop

在potree主页,点击PotreeDesktop,进入该模块的主页面,如下图所示

右侧会有PotreeDesktop的发布包,点击进入,下载最新的部署包(PotreeDesktop_1.8.1_x64_windows.zip)即可。下载后,解压出内容,会发现PotreeDesktop并没有做多少实质性的内容,只是把Potree做好的主页面包成了桌面程序,并把开发桌面使用的环境进行了整理。不过做到这些就足够了,这样就为我们提供了很大的方便,让我们把更多的精力放到了解Potree上。

源码根目录的内容如下图所示。

我们开发的桌面程序,可双击运行PotreeDesktop.bat,运行系统。PotreeDesktop.bat文件用记事本打开,内容如下。

start ./node_modules/electron/dist/electron.exe ./main

意思是启动指定目录下的electron.exe文件,后面跟了一个参数,./main,我感觉这个参数应该指的是根目录下的main.js文件。这个没有仔细研究过,基本上PotreeDesktop为我们搭建好的运行环境不太用修改,直接扩展即可。而实时上,整个系统也是从main.js启动。

双击运行PotreeDesktop.bat,运行系统,弹出的主界面如下图所示

4、PotreeDesktop结构介绍

在根目录下,有几个重要的单文件,main.js、index.html、PotreeDesktop.bat。其中PotreeDesktop.bat我们已经说过了,是系统启动的快捷方式文件,main.js是系统启动后,首先执行的文件。在这个文件里面主要设置了和electron相关的一些内容,例如electron的菜单、系统标题以及加载哪个主页面等。

index.html就是系统启动后,包装显示的主页面,我们开发的内容以及页面,都是通过该页面展示出来,从这个页面开始,就正式进入普通的Web开发了。

除了文件之外,还有几个文件夹,src、node_modules和libs。其中src为PotreeDesktop自己的源码,里面包含desktop.js和desktop.css两个文件。看了下这连两个文件,主要实现了把las文件拖到点云主显示区,并调用转换工具对点云数据进行转换操作,并加载显示的流程,代码很容易看明白。

node_modules目录感觉主要包含了electron和nodejs的一些环境以及依赖项。该模块组织的非常清晰,运行也正常,所以我一直是没有动过该目录下的内容。

libs目录是我们用到的一些js库。包括Potree库、Threejs库以及用到的点云转换可执行程序等。该目录直接按照设置好的使用即可,不用做任何修改。

Potree 001 Potree介绍的更多相关文章

  1. 附001.kubectl介绍及使用

    一 kubectl介绍 1.1 kubectl概要 kubectl控制Kubernetes集群管理器,使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序.使用k ...

  2. 001.VNC介绍

    一 VNC介绍 VNC 服务是一个自由开源软件,采用RFB通信协议.RFB ("remote 帧缓存 ") 是一个远程图形用户的简单协议,因为它工作在帧缓存级别上,所以它可以应用于 ...

  3. 001.KVM介绍

    KVM介绍可参考: http://liqingbiao.blog.51cto.com/3044896/1740516 http://koumm.blog.51cto.com/703525/128879 ...

  4. 001——Typescript 介绍 、Typescript 安 装、Typescript 开发工具

    一. Typescript 介绍 1. TypeScript 是由微软开发的一款开源的编程语言. 4. TypeScript 是 Javascript 的超级,遵循最新的 ES6.Es5 规范.Typ ...

  5. 001 UI介绍

    UI全称:User Interface,即用户界面 UI的职责:负责人机之间的交互,它需要将关键信息,操作逻辑等展示给用户 UI在游戏中承担的职责: 1.游戏美术风格的重要组成部分 2.承担着重要的美 ...

  6. HTML 001 入门介绍

    HTML 教程- (HTML5 标准) 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 您可以使用 HTML 来建立自己的 ...

  7. 001.OpenShift介绍

    一 OpenShift特性 1.1 OpenShift概述 Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT ...

  8. 附002.Minikube介绍及使用

    一 Minikube介绍 1.1 概述 Minikube是一种可以在本地轻松运行Kubernetes的工具.Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kuber ...

  9. simtrace之探秘SIM卡中的世界

    0×00 关于SIM卡 众所周知SIM卡是一张插在手机上的小卡,其全称为Subscriber Identity Module 客户识别模块.不过,这个世界上并没有多少人知道SIM卡中的操作系统是基于j ...

  10. 开源网站管理工具—Altman

    0×00前言 之前用过几款webshell工具,有B/C的也有C/S的,有的只能用于php或者aspx,当然个人用得最多.觉得用得舒服的也只有菜刀了. 但是毕竟菜刀是好几年之前的产物了,而且也已经停止 ...

随机推荐

  1. 关于csh-C-shell的记录

    csh,由柏克莱大学的 Bill Joy 设计的,语法有点类似C语言,所以才得名为 C shell ,简称为 csh Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器 ...

  2. vue2.x核心源码深入浅出,我还是去看源码了

    平常的工作就是以vue2.x进行开发,因为我是个实用主义者,以前我就一直觉得,你既然选择了这个框架开发你首先就要先弄懂这玩意怎么用,也就是先熟悉vue语法和各种api,而不是去纠结实现它的原理是什么. ...

  3. [Android开发学iOS系列] iOS写UI的几种方式

    [Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写 ...

  4. 【JavaScript排序】 sort()方法(解决null、undefined、0之间的排序(混乱)问题)

    JavaScript排序 - sort()方法 --解决null.undefined.0之间的排序(混乱)问题 一.普通的数组排序 ​ JavaScript中用方法sort()为数组排序.sort() ...

  5. 齐博x1如何取消某个标签的缓存时间

    标签默认会有缓存, 如果你要强制取消缓存时间的话, 可以加上下面的参数 time="-1"如下图所示 标签默认缓存时间是10分钟, 你也可以改成其它时间 比如 time=" ...

  6. python视频与帧图片的相互转化,以及查看视频分辨率

    1.拆分视频为帧图片 import cv2 def video2frame(videos_path,frames_save_path,time_interval): vidcap = cv2.Vide ...

  7. 上传数据、下载模板文件解决方案(前端:antd;后端:.Net Core WebAPI)

    一.Excel 模板下载 通过静态文件下载. 将模板文件放在根目录的 public 文件夹下备用. 下载事件方法如下:(通过临时生成一个 a 标签,触发后再移除) downLoadExcelModel ...

  8. 从0搭建vue3组件库:自动化发布、管理版本号、生成 changelog、tag

    今天看到一篇文章中提到了一个好用的工具release-it.刚好可以用在我正在开发的vue3组件库.纸上得来终觉浅,绝知此事要躬行,说干就干,下面就介绍如何将release-it应用到实际项目中,让组 ...

  9. Java多线程-ThreadPool线程池(三)

    开完一趟车完整的过程是启动.行驶和停车,但老司机都知道,真正费油的不是行驶,而是长时间的怠速.频繁地踩刹车等动作.因为在速度切换的过程中,发送机要多做一些工作,当然就要多费一些油. 而一个Java线程 ...

  10. python中的if条件语句

    # 如果...就... # 1. print('1.') if 1+1 == 2: print('1+1是等于2的') print('1+1还是等于2的') print('1+1就等于2的') # 2 ...