123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508 |
-
-
- export * from "./custom/start.js";
- export {settings, config} from './custom/settings.js'
-
- export * from "./Actions.js";
- export * from "./AnimationPath.js";
- export * from "./Annotation.js";
- export * from "./defines.js";
- export * from "./Enum.js";
- export * from "./EventDispatcher.js";
- export * from "./Features.js";
- export * from "./KeyCodes.js";
- export * from "./LRU.js";
- export * from "./PointCloudEptGeometry.js";
- export * from "./PointCloudOctree.js";
- //export * from "./custom/ExtendPointCloudOctree.js";
- export * from "./PointCloudOctreeGeometry.js";
- export * from "./PointCloudTree.js";
- export * from "./Points.js";
- // export * from "./Potree_update_visibility.js";
- //export * from "./custom/ExtendPotree_update_visibility.js";
- export * from "./PotreeRenderer.js";
- export * from "./ProfileRequest.js";
- export * from "./TextSprite.js";
- export * from "./utils.js";
- export * from "./Version.js";
- export * from "./WorkerPool.js";
- export * from "./XHRFactory.js";
- export * from "./viewer/SaveProject.js";
- export * from "./viewer/LoadProject.js";
- export * from "./materials/ClassificationScheme.js";
- export * from "./materials/EyeDomeLightingMaterial.js";
- export * from "./materials/Gradients.js";
- export * from "./materials/NormalizationEDLMaterial.js";
- export * from "./materials/NormalizationMaterial.js";
- export * from "./materials/PointCloudMaterial.js";
- export * from "./loader/POCLoader.js";
- export * from "./modules/loader/2.0/OctreeLoader.js";
- export * from "./loader/EptLoader.js";
- export * from "./loader/ept/BinaryLoader.js";
- export * from "./loader/ept/LaszipLoader.js";
- export * from "./loader/ept/ZstandardLoader.js";
- export * from "./loader/PointAttributes.js";
- export * from "./loader/ShapefileLoader.js";
- export * from "./loader/GeoPackageLoader.js";
- // export * from "./objects/tool/Box3Helper.js";
- // export * from "./objects/tool/ClippingTool.js";
- // export * from "./objects/tool/ClipVolume.js";
- export * from "./utils/Box3Helper.js";
- export * from "./utils/ClippingTool.js";
- export * from "./utils/ClipVolume.js";
- export * from "./utils/GeoTIFF.js";
- // export * from "./objects/tool/Measure.js";
- // export * from "./objects/tool/MeasuringTool.js";
- export * from "./utils/Measure.js";
- export * from "./utils/MeasuringTool.js";
- export * from "./utils/Message.js";
- export * from "./utils/PointCloudSM.js";
- // export * from "./objects/tool/PolygonClipVolume.js";
- // export * from "./objects/tool/Profile.js";
- // export * from "./objects/tool/ProfileTool.js";
- // export * from "./objects/tool/ScreenBoxSelectTool.js";
- // export * from "./objects/tool/SpotLightHelper.js";
- // export * from "./objects/tool/TransformationTool.js";
- // export * from "./objects/tool/Volume.js";
- // export * from "./objects/tool/VolumeTool.js";
- // export * from "./objects/tool/Compass.js";
- export * from "./utils/PolygonClipVolume.js";
- export * from "./utils/Profile.js";
- export * from "./utils/ProfileTool.js";
- export * from "./utils/ScreenBoxSelectTool.js";
- export * from "./utils/SpotLightHelper.js";
- export * from "./utils/TransformationTool.js";
- export * from "./utils/Volume.js";
- export * from "./utils/VolumeTool.js";
- export * from "./utils/Compass.js";
- export * from "./custom/viewer/ExtendViewer.js";
-
- export * from "./viewer/Scene.js";
- export * from "./viewer/HierarchicalSlider.js";
- export * from "./modules/OrientedImages/OrientedImages.js";
- export * from "./modules/Images360/Images360.js";
- export * from "./modules/CameraAnimation/CameraAnimation.js";
- export * from "./modules/loader/2.0/OctreeLoader.js";
- export {OrbitControls} from "./navigation/OrbitControls.js";
- export {FirstPersonControls} from "./navigation/FirstPersonControls.js";
- export {EarthControls} from "./navigation/EarthControls.js";
- export {DeviceOrientationControls} from "./navigation/DeviceOrientationControls.js";
- export {VRControls} from "./navigation/VRControls.js";
-
-
- import "./extensions/OrthographicCamera.js";
- import "./extensions/PerspectiveCamera.js";
- import "./extensions/Ray.js";
- import {LRU} from "./LRU.js";
- import {OctreeLoader} from "./modules/loader/2.0/OctreeLoader.js";
- import {POCLoader} from "./loader/POCLoader.js";
- import {EptLoader} from "./loader/EptLoader.js";
- import {ExtendPointCloudOctree} from "./ExtendPointCloudOctree.js";
- //import {ExtendPointCloudOctree} from "./custom/ExtendPointCloudOctree.js";
- import {WorkerPool} from "./WorkerPool.js";
- export const workerPool = new WorkerPool();
- export const version = {
- major: 1,
- minor: 8,
- suffix: '.0'
- };
- export let lru = new LRU();
-
- console.log('Potree ' + version.major + '.' + version.minor + version.suffix);
- export let pointBudget = 1 * 1000 * 1000;
- export let framenumber = 0;
- export let numNodesLoading = 0;
- export let maxNodesLoading = 4;
- export const debug = {};
- let scriptPath = "";
- if (document.currentScript && document.currentScript.src) {
- scriptPath = new URL(document.currentScript.src + '/..').href;
- if (scriptPath.slice(-1) === '/') {
- scriptPath = scriptPath.slice(0, -1);
- }
- } else if(import.meta){
- scriptPath = new URL(import.meta.url + "/..").href;
- if (scriptPath.slice(-1) === '/') {
- scriptPath = scriptPath.slice(0, -1);
- }
- }else {
- console.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?');
- }
- let resourcePath = scriptPath + '/resources';
- // scriptPath: build/potree
- // resourcePath:build/potree/resources
- export {scriptPath, resourcePath};
- //add:
- export async function loadFile(path, callback, onError){
- if(Potree.fileServer){
-
- Potree.fileServer.get(path).then(data=>{
- if(data.data)data = data.data
- if(data.data)data = data.data //融合页面getdataset需要查找两次data
- callback && callback(data)
- }).catch(onError)
- }else{
- try{
- let response = await fetch(path);
- let text = await response.text();
- var data = JSON.parse(text)
- if(data.data) data = data.data
- callback && callback(data)
- return data
- }catch(e){
- onError && onError(e)
- }
-
- }
-
- //查询: http://192.168.0.26:8080/doc.html#/default/filter-%E6%BC%AB%E6%B8%B8%E7%82%B9/filterUsingGET
- }
- export async function loadDatasets(callback,sceneCode,onError){//之后直接把path写进来
- let path
- sceneCode = sceneCode || Potree.settings.number
- if(Potree.fileServer){
- path = `/laser/dataset/${sceneCode}/getDataSet`
- }else{
-
- //path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/datasets`
- //现在只能加载得了本地的了
- path = `${Potree.settings.urls.prefix}/laser/dataset/${sceneCode}/getDataSet`
- //path = `${Potree.scriptPath}/data/${sceneCode}/getDataSet.json`
-
- }
- return loadFile(path, callback,onError)
-
- }
- //目前上传平面图后如果不点击保存按钮,数据还是旧的不生效
- export async function loadMapEntity(datasetId, force){
- if(!Potree.settings.floorplanEnable && !force && Potree.fileServer )return /* 等待平面图类型定义好会加载 */
-
-
- let loaded = 0
-
- let needLoads = datasetId == 'all' ? viewer.scene.pointclouds.map(e=>e.dataset_id) : [datasetId]
-
-
- let callback = (dataset_id, floorplanType, data )=>{
- //要防止旧的比新的先获取到导致覆盖新的,因为两种type随时可能切换
- if(floorplanType != Potree.settings.floorplanType[dataset_id]) return //如果请求的floorplanType不是当前最新的floorplanType就返回
-
- var map = viewer.mapViewer.mapLayer.maps.find(e => e.name == 'floorplan_'+ dataset_id)
- if(map){
- viewer.mapViewer.mapLayer.removeMap(map)
- }
-
- var mapNew = viewer.mapViewer.mapLayer.addMapEntity(data.data || data, dataset_id)
- if(map){
- mapNew.visibleReasons = map.visibleReasons
- mapNew.unvisibleReasons = map.unvisibleReasons
- }
- loaded ++;
- }
-
- needLoads.forEach(dataset_id=>{
- let floorplanType = Potree.settings.floorplanType[dataset_id], prefix = ''
- if(!Potree.fileServer){
- prefix = Potree.settings.urls.prefix
- }
- if(!floorplanType)return
- var path
- /* if(Potree.fileServer){
- path = `/laser/tiledMap/${Potree.settings.number}/tiledMap/${floorplanType}/${dataset_id}`
- }else{
- path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/tiled_maps`
-
- } */
- path = `${prefix}/laser/tiledMap/${Potree.settings.number}/tiledMap/${floorplanType}/${dataset_id}`
-
- Potree.settings.floorplanRequests[dataset_id] = true //开始加载了
- return loadFile(path, callback.bind(this, dataset_id, floorplanType) )
- })
-
-
-
- }
-
- export async function loadPanos(datasetId, callback){
- var path
- let query = `?datasetId=${datasetId}` //`?lat=${center.lat}&lon=${center.lon}&radius=200000`
- if(Potree.fileServer){
- path = `/laser/filter/${Potree.settings.number}/query` + query
- }else{
- //path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/images/filter` + query
- //path = `${Potree.scriptPath}/data/${Potree.settings.number}/panos-${datasetId}.json`
- path = `${Potree.settings.urls.prefix}/laser/filter/${Potree.settings.number}/query` + query
-
-
- }
- return loadFile(path, callback)
-
- }
- export async function loadPanosInfo(callback){
- var path
- if(Potree.fileServer){
-
- }else{
- path = `${Potree.scriptPath}/data/panoEdit/vision_edit.txt`
-
- }
- return loadFile(path, callback)
-
- }
- //site_model
- /* {
- "area": 2503.30551910935,
- "attributes": {},
- "center": [
- 113.59568277455075,
- 22.366566635195288,
- 12.78751625
- ],
- "children": [],
- "geometry_hash": 1891071345,
- "id": 10,
- "name": "港湾一号",
- "parentId": null,
- "polygon": {
- "coordinates": [
- [
- [
- 113.59590810534583,
- 22.36679132753878
- ],
- [
- 113.59590810534583,
- 22.366807172528629
- ],
- [
- 113.59545610274934,
- 22.366807172528629
- ],
- [
- 113.59545610274934,
- 22.36679132753878
- ]
- ]
- ],
- "type": "Polygon"
- },
- "type": "BUILDING",
- "volume": null,
- "z_max": null,
- "z_min": null
- }
- */
- export function Log(value, color, fontSize){
- color = color || '#13f'
- fontSize = fontSize || 14
- console.warn(`%c${value}`, `color:${color};font-size:${fontSize}px`)
- }
-
- export function loadPointCloud(path, name, sceneCode, timeStamp, callback, onError){
- let loaded = function(e){
- e.pointcloud.name = name;
- e.pointcloud.sceneCode = sceneCode //对应4dkk的场景码
-
- callback(e);
- };
- let promise = new Promise( resolve => {
- // load pointcloud
- if (!path){
- // TODO: callback? comment? Hello? Bueller? Anyone?
- } else if (path.indexOf('ept.json') > 0) {
- EptLoader.load(path, function(geometry) {
- if (!geometry) {
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- }
- else {
- let pointcloud = new ExtendPointCloudOctree(geometry);
- //loaded(pointcloud);
- resolve({type: 'pointcloud_loaded', pointcloud: pointcloud});
- }
- });
- } else if (path.indexOf('cloud.js') > 0) {
- POCLoader.load(path, timeStamp, function (geometry) {
- if (!geometry) {
- //callback({type: 'loading_failed'});
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- onError && onError()
- } else {
- let pointcloud = new ExtendPointCloudOctree(geometry);
- // loaded(pointcloud);
- resolve({type: 'pointcloud_loaded', pointcloud: pointcloud});
- }
- });
- }/* else if (path.indexOf('metadata.json') > 0) { //部分浏览器(如uc)不支持NodeLoader中的1n的大数据写法
- Potree.OctreeLoader.load(path).then(e => {
- let geometry = e.geometry;
- if(!geometry){
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- }else{
- let pointcloud = new ExtendPointCloudOctree(geometry);
- let aPosition = pointcloud.getAttribute("position");
- let material = pointcloud.material;
- material.elevationRange = [
- aPosition.range[0][2],
- aPosition.range[1][2],
- ];
- // loaded(pointcloud);
- resolve({type: 'pointcloud_loaded', pointcloud: pointcloud});
- }
- });
- OctreeLoader.load(path, function (geometry) {
- if (!geometry) {
- //callback({type: 'loading_failed'});
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- } else {
- let pointcloud = new ExtendPointCloudOctree(geometry);
- // loaded(pointcloud);
- resolve({type: 'pointcloud_loaded', pointcloud: pointcloud});
- }
- });
- } */else if (path.indexOf('.vpc') > 0) {
- PointCloudArena4DGeometry.load(path, function (geometry) {
- if (!geometry) {
- //callback({type: 'loading_failed'});
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- } else {
- let pointcloud = new PointCloudArena4D(geometry);
- // loaded(pointcloud);
- resolve({type: 'pointcloud_loaded', pointcloud: pointcloud});
- }
- });
- } else {
- //callback({'type': 'loading_failed'});
- console.error(new Error(`failed to load point cloud from URL: ${path}`));
- }
- });
- if(callback){
- promise.then(pointcloud => {
- loaded(pointcloud);
- });
- }else{
- return promise;
- }
- };
- // add selectgroup
- (function($){
- $.fn.extend({
- selectgroup: function(args = {}){
- let elGroup = $(this);
- let rootID = elGroup.prop("id");
- let groupID = `${rootID}`;
- let groupTitle = (args.title !== undefined) ? args.title : "";
- let elButtons = [];
- elGroup.find("option").each((index, value) => {
- let buttonID = $(value).prop("id");
- let label = $(value).html();
- let optionValue = $(value).prop("value");
- let elButton = $(`
- <span style="flex-grow: 1; display: inherit">
- <label for="${buttonID}" class="ui-button" style="width: 100%; padding: .4em .1em">${label}</label>
- <input type="radio" name="${groupID}" id="${buttonID}" value="${optionValue}" style="display: none"/>
- </span>
- `);
- let elLabel = elButton.find("label");
- let elInput = elButton.find("input");
- elInput.change( () => {
- elGroup.find("label").removeClass("ui-state-active");
- elGroup.find("label").addClass("ui-state-default");
- if(elInput.is(":checked")){
- elLabel.addClass("ui-state-active");
- }else{
- //elLabel.addClass("ui-state-default");
- }
- });
- elButtons.push(elButton);
- });
- let elFieldset = $(`
- <fieldset style="border: none; margin: 0px; padding: 0px">
- <legend>${groupTitle}</legend>
- <span style="display: flex">
- </span>
- </fieldset>
- `);
- let elButtonContainer = elFieldset.find("span");
- for(let elButton of elButtons){
- elButtonContainer.append(elButton);
- }
- elButtonContainer.find("label").each( (index, value) => {
- $(value).css("margin", "0px");
- $(value).css("border-radius", "0px");
- $(value).css("border", "1px solid black");
- $(value).css("border-left", "none");
- });
- elButtonContainer.find("label:first").each( (index, value) => {
- $(value).css("border-radius", "4px 0px 0px 4px");
- });
- elButtonContainer.find("label:last").each( (index, value) => {
- $(value).css("border-radius", "0px 4px 4px 0px");
- $(value).css("border-left", "none");
- });
- elGroup.empty();
- elGroup.append(elFieldset);
- }
- });
- })(jQuery);
|