|
@@ -63758,13 +63758,11 @@ void main() {
|
|
|
}
|
|
|
|
|
|
Potree.settings.sizeFitToLevel = true;//当type为衰减模式时自动根据level调节大小。每长一级,大小就除以2
|
|
|
- Potree.loadPointCloudScene = function(sceneCode, done, onError){//对应4dkk的场景码
|
|
|
- Potree.loadDatasets((data)=>{
|
|
|
- var originDataset = data.find(e=>e.sceneCode == sceneCode);//只加载初始数据集
|
|
|
- var cloudPath = `${Potree.settings.urls.prefix}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js`;
|
|
|
- var timeStamp = originDataset.createTime ? originDataset.createTime.replace(/[^0-9]/ig,'') : ''; //每重算一次后缀随createTime更新一次
|
|
|
- //console.warn(dataset.sceneName, 'timeStamp', timeStamp)
|
|
|
- Potree.loadPointCloud(cloudPath, originDataset.sceneName , sceneCode, timeStamp, e => {
|
|
|
+ Potree.loadPointCloudScene = function(sceneCode, type, id, done, onError){//对应4dkk的场景码
|
|
|
+
|
|
|
+ let loadCloud = (cloudPath, sceneName, sceneCode, timeStamp, color)=>{
|
|
|
+
|
|
|
+ Potree.loadPointCloud(cloudPath, sceneName , sceneCode, timeStamp, e => {
|
|
|
let scene = viewer.scene;
|
|
|
let pointcloud = e.pointcloud;
|
|
|
let config = Potree.config.material;
|
|
@@ -63776,8 +63774,7 @@ void main() {
|
|
|
pointcloud.changePointSize(config.realPointSize); //material.size = config.pointSize;
|
|
|
pointcloud.changePointOpacity(1);
|
|
|
material.shape = Potree.PointShape.SQUARE;
|
|
|
- pointcloud.color = pointcloud.material.color = originDataset.color;
|
|
|
- pointcloud.dataset_id = originDataset.id;//供漫游点找到属于的dataset点云
|
|
|
+ color && (pointcloud.color = pointcloud.material.color = color);
|
|
|
pointcloud.timeStamp = timeStamp;
|
|
|
//transformPointcloud(pointcloud, originDataset)
|
|
|
scene.addPointCloud(pointcloud);
|
|
@@ -63801,10 +63798,23 @@ void main() {
|
|
|
viewer.dispatchEvent('allLoaded');
|
|
|
done(pointcloud);
|
|
|
},onError);
|
|
|
-
|
|
|
|
|
|
- }, sceneCode, onError);
|
|
|
-
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ if(type == 'laser'){
|
|
|
+ Potree.loadDatasets((data)=>{
|
|
|
+ let originDataset = data.find(e=>e.sceneCode == sceneCode);//只加载初始数据集
|
|
|
+ let timeStamp = originDataset.createTime ? originDataset.createTime.replace(/[^0-9]/ig,'') : ''; //每重算一次后缀随createTime更新一次
|
|
|
+ let cloudPath = `${Potree.settings.urls.prefix}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js`;
|
|
|
+ loadCloud(cloudPath, originDataset.sceneName, sceneCode, timeStamp, originDataset.color);
|
|
|
+ }, sceneCode, onError);
|
|
|
+
|
|
|
+ }else {//las or ply
|
|
|
+ let name = type + '|' + id;
|
|
|
+ let cloudPath = sceneCode + '/cloud.js';
|
|
|
+ loadCloud(cloudPath, name, name, '' );
|
|
|
+ }
|
|
|
|
|
|
};
|
|
|
|
|
@@ -63958,9 +63968,55 @@ void main() {
|
|
|
model.lastMatrixWorld = model.matrixWorld.clone();
|
|
|
done(model);
|
|
|
};
|
|
|
-
|
|
|
- if(prop.type == 'laser'){
|
|
|
- Potree.loadPointCloudScene(prop.url, (pointcloud)=>{
|
|
|
+
|
|
|
+ if(prop.type == 'glb'){
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ let callback = (object)=>{
|
|
|
+ //focusOnSelect(object, 1000)
|
|
|
+ object.isModel = true;
|
|
|
+ //object.dataset_id = Date.now() //暂时
|
|
|
+
|
|
|
+ object.traverse(e=>e.material && (e.material.transparent = true));
|
|
|
+
|
|
|
+ /* object.addEventListener('click',(e)=>{
|
|
|
+ //只是为了能得到hoverElement识别才加这个侦听
|
|
|
+ }) */
|
|
|
+
|
|
|
+ loadDone(object);
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ let info = {
|
|
|
+ name: prop.type,
|
|
|
+ id: prop.id,
|
|
|
+ unlit:true,
|
|
|
+ /* transform : {
|
|
|
+ position : prop.position,
|
|
|
+ rotation : new THREE.Euler().setFromVector3(prop.rotation),
|
|
|
+ scale: new THREE.Vector3(prop.scale,prop.scale,prop.scale),
|
|
|
+ } */
|
|
|
+ };
|
|
|
+
|
|
|
+ if(prop.type == 'glb'){
|
|
|
+ info.glburl = prop.url;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ viewer.loadModel(info , callback, onProgress, onError);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }else {
|
|
|
+
|
|
|
+ //else if(prop.type == 'las' || prop.type == 'ply')
|
|
|
+
|
|
|
+ Potree.loadPointCloudScene(prop.url, prop.type, prop.modelId, (pointcloud)=>{
|
|
|
pointcloud.matrixAutoUpdate = true;
|
|
|
pointcloud.initialPosition = pointcloud.position.clone();
|
|
|
|
|
@@ -63995,54 +64051,9 @@ void main() {
|
|
|
}) */
|
|
|
|
|
|
}, onError);
|
|
|
- }else {
|
|
|
-
|
|
|
+
|
|
|
|
|
|
- let callback = (object)=>{
|
|
|
- //focusOnSelect(object, 1000)
|
|
|
- object.isModel = true;
|
|
|
- //object.dataset_id = Date.now() //暂时
|
|
|
-
|
|
|
- object.traverse(e=>e.material && (e.material.transparent = true));
|
|
|
-
|
|
|
- /* object.addEventListener('click',(e)=>{
|
|
|
- //只是为了能得到hoverElement识别才加这个侦听
|
|
|
- }) */
|
|
|
- /* let updateBound = ()=>{
|
|
|
- object.updateMatrixWorld()
|
|
|
- viewer.updateModelBound()
|
|
|
- object.dispatchEvent('transformChanged')
|
|
|
-
|
|
|
- }
|
|
|
- let maintainBtmZ = ()=>{
|
|
|
- MergeEditor.setModelBtmHeight(object)
|
|
|
- updateBound()
|
|
|
- }
|
|
|
- object.addEventListener('position_changed', updateBound )
|
|
|
- object.addEventListener("orientation_changed", maintainBtmZ )
|
|
|
- object.addEventListener("scale_changed", maintainBtmZ ) */
|
|
|
- loadDone(object);
|
|
|
- };
|
|
|
|
|
|
-
|
|
|
- let info = {
|
|
|
- name: prop.type,
|
|
|
- id: prop.id,
|
|
|
- unlit:true,
|
|
|
- /* transform : {
|
|
|
- position : prop.position,
|
|
|
- rotation : new THREE.Euler().setFromVector3(prop.rotation),
|
|
|
- scale: new THREE.Vector3(prop.scale,prop.scale,prop.scale),
|
|
|
- } */
|
|
|
- };
|
|
|
-
|
|
|
- if(prop.type == 'glb'){
|
|
|
- info.glburl = prop.url;
|
|
|
- }else {
|
|
|
- info.objurl = prop.url;
|
|
|
- info.mtlurl = prop.mtlurl;
|
|
|
- }
|
|
|
- viewer.loadModel(info , callback, onProgress, onError);
|
|
|
|
|
|
}
|
|
|
};
|
|
@@ -117665,9 +117676,9 @@ ENDSEC
|
|
|
viewer.scene.scene.add(this.transformControls2);
|
|
|
viewer.setObjectLayers(this.transformControls2, 'layer2' );
|
|
|
|
|
|
- let mouseDown = (e)=>{//暂时消失
|
|
|
+ let mouseDown = (e)=>{
|
|
|
if(this.split && this.selected.isPointcloud){
|
|
|
- viewer.outlinePass.edgeStrength = 0;
|
|
|
+ viewer.outlinePass.edgeStrength = 0;//暂时消失线
|
|
|
}
|
|
|
};
|
|
|
let mouseUp = (e)=>{
|
|
@@ -117743,8 +117754,11 @@ ENDSEC
|
|
|
if(e.type == 'global_mousedown' ){ //开始
|
|
|
//if((e.intersect.object || e.intersect.pointcloud) == this.selected){
|
|
|
if(e.intersect.pointclouds.includes(this.selected) || e.intersect.allElements.some(e=>e.object == this.selected)){
|
|
|
-
|
|
|
- dragInfo = {};
|
|
|
+
|
|
|
+ dragInfo = {};
|
|
|
+ if(this.selected.isPointcloud){
|
|
|
+ viewer.outlinePass.edgeStrength = 0;//暂时消失线
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -117820,6 +117834,11 @@ ENDSEC
|
|
|
viewer.addEventListener('global_drop', (e)=>{
|
|
|
dragInfo = null;
|
|
|
this.clearTranCursor();
|
|
|
+
|
|
|
+ if(this.selected.isPointcloud){
|
|
|
+ viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud;
|
|
|
+ }
|
|
|
+
|
|
|
});
|
|
|
|
|
|
}
|
|
@@ -129190,7 +129209,7 @@ ENDSEC
|
|
|
performance.mark("render-end");
|
|
|
performance.measure("render", "render-start", "render-end");
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|