|
@@ -9,9 +9,18 @@ export const enter = (dom, isLocal) => {
|
|
|
//Potree.fileServer = axios
|
|
|
Potree.settings.libsUrl = './lib/'
|
|
|
|
|
|
- const tagLimitDis = 8;
|
|
|
+ if(location.host === 'mix3d.4dkankan.com' ){//正式环境
|
|
|
+ Potree.settings.urls.prefix = Potree.settings.urls.prefix6
|
|
|
+ Potree.settings.webSite = 'datav1'
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
+ Potree.settings.notAdditiveBlending = true
|
|
|
|
|
|
+ const tagLimitDis = 8;
|
|
|
+
|
|
|
+ Potree.settings.showCompass = true
|
|
|
+ Potree.settings.compassDom = dom.querySelector('#direction')
|
|
|
|
|
|
let {THREE} = Potree.mergeEditStart(dom)
|
|
|
let MergeEditor = viewer.modules.MergeEditor
|
|
@@ -249,11 +258,11 @@ export const enter = (dom, isLocal) => {
|
|
|
const camera = viewer.scene.getActiveCamera()
|
|
|
const target = viewer.scene.view.getPivot().clone()
|
|
|
const position = viewer.scene.view.position.clone()
|
|
|
- console.log('getPose',position, target)
|
|
|
+ //console.log('getPose',position, target)
|
|
|
return { position, target }
|
|
|
},
|
|
|
comeTo(o = {}) {
|
|
|
- console.log('comeTo',o.position, o.target)
|
|
|
+ //console.log('comeTo',o.position, o.target)
|
|
|
//飞到某个点
|
|
|
if(o.modelId){
|
|
|
['position','target'].forEach(e=>{
|
|
@@ -410,7 +419,7 @@ export const enter = (dom, isLocal) => {
|
|
|
}
|
|
|
*/
|
|
|
|
|
|
- console.log('enterSceneGuide',pathArr)
|
|
|
+ //console.log('enterSceneGuide',pathArr)
|
|
|
|
|
|
let data = {
|
|
|
duration: pathArr.slice(0,pathArr.length-1).reduce(function(total, currentValue ){return total+currentValue.time}, 0), //总时长(要去掉最后一个,因为已到终点,该点time无意义)
|
|
@@ -469,15 +478,16 @@ export const enter = (dom, isLocal) => {
|
|
|
//scaleRange: { min, max }, opacityRange: { min, max }, bottomRange: { min, max } })
|
|
|
|
|
|
addModel(props){
|
|
|
-
|
|
|
+
|
|
|
+ //console.log(props.isDynamicAdded, props.mode)
|
|
|
+
|
|
|
let bus = mitt()
|
|
|
//console.log('addModel',props)
|
|
|
- props.isFirstLoad = props.bottom == void 0 //在编辑时用户添加的
|
|
|
- if(props.opacity == void 0) props.opacity = 1
|
|
|
+ props.isFirstLoad = isLocal ? props.bottom == void 0 : (props.isDynamicAdded || props.mode == 'single') // 在编辑时用户添加的 或 展示单个模型 (props.mode='single'模型展示页, props.mode='many'融合页)
|
|
|
+ if(props.opacity == void 0) props.opacity = 1
|
|
|
+ if(props.type == 'obj') props.type = 'glb'
|
|
|
props.scale /= 100
|
|
|
|
|
|
-
|
|
|
-
|
|
|
if(!props.isFirstLoad){
|
|
|
if(autoLoads.length == 0){ //首次加载
|
|
|
setTimeout(()=>{
|
|
@@ -494,7 +504,7 @@ export const enter = (dom, isLocal) => {
|
|
|
autoLoads.push(props)
|
|
|
readyToAddModel = false
|
|
|
}else{
|
|
|
- readyToAddModel = true
|
|
|
+ readyToAddModel = true
|
|
|
}
|
|
|
|
|
|
|
|
@@ -543,6 +553,7 @@ export const enter = (dom, isLocal) => {
|
|
|
if(!props.isFirstLoad){
|
|
|
model.visible = false//先不显示,防止卡顿
|
|
|
}
|
|
|
+
|
|
|
props.opacity < 100 && result.changeOpacity(props.opacity)
|
|
|
|
|
|
model.addEventListener('changeSelect',(e)=>{
|
|
@@ -553,10 +564,20 @@ export const enter = (dom, isLocal) => {
|
|
|
position : model.position.clone(),
|
|
|
scale: model.scale.x * 100,
|
|
|
rotation: model.rotation.clone(),
|
|
|
- bottom: model.btmHeight
|
|
|
+ //bottom: model.btmHeight
|
|
|
})
|
|
|
})
|
|
|
spliceFromArr(model,true)
|
|
|
+
|
|
|
+
|
|
|
+ if(props.mode == 'single'){//模型查看页
|
|
|
+ MergeEditor.noNeedSelection = true
|
|
|
+ setTimeout(()=>{
|
|
|
+ MergeEditor.focusOn([model], 1000, true, true)
|
|
|
+ },1)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
bus.emit('loadDone')
|
|
|
|
|
|
//console.log('loadDone' )
|
|
@@ -618,40 +639,53 @@ export const enter = (dom, isLocal) => {
|
|
|
model.dispatchEvent("scale_changed")
|
|
|
}
|
|
|
},
|
|
|
- changeOpacity(opacity){
|
|
|
+ changeOpacity(opacity){ //见笔记:透明物体的材质设置
|
|
|
if(opacity == void 0)opacity = 100
|
|
|
opacity/=100
|
|
|
|
|
|
- let setOp = (mesh)=>{//见笔记:透明物体的材质设置
|
|
|
- if(model.isPointcloud){
|
|
|
- mesh.changePointOpacity(opacity)
|
|
|
- }else{
|
|
|
- mesh.material.opacity = opacity
|
|
|
- }
|
|
|
-
|
|
|
- if(opacity<1){
|
|
|
- mesh.material.transparent = true
|
|
|
- mesh.renderOrder = Potree.config.renderOrders.model+1
|
|
|
- mesh.material.depthWrite = false
|
|
|
- }else{
|
|
|
- mesh.material.transparent = false
|
|
|
- mesh.renderOrder = Potree.config.renderOrders.model
|
|
|
- mesh.material.depthWrite = true
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
if(model){
|
|
|
- if(model.isPointcloud){
|
|
|
- setOp(model)
|
|
|
+ if(model.isPointcloud){
|
|
|
+ model.changePointOpacity(opacity)
|
|
|
+ //MergeEditor.updateEdgeStrength()
|
|
|
}else{
|
|
|
- model.traverse(e=>e.material && setOp(e, opacity))
|
|
|
+ //model.traverse(e=>e.material && setOp(e, opacity))
|
|
|
+ model.traverse(mesh=>{
|
|
|
+ if(mesh.material){
|
|
|
+
|
|
|
+ mesh.material.opacity = opacity
|
|
|
+ if(opacity<1){
|
|
|
+ mesh.material.transparent = true
|
|
|
+ if(model.isPointcloud){
|
|
|
+ mesh.changePointOpacity(opacity)
|
|
|
+ }else{
|
|
|
+ mesh.material.opacity = opacity
|
|
|
+ }
|
|
|
+
|
|
|
+ mesh.renderOrder = Potree.config.renderOrders.model+1
|
|
|
+ mesh.material.depthWrite = false
|
|
|
+ }else{
|
|
|
+ mesh.material.transparent = false
|
|
|
+ mesh.renderOrder = Potree.config.renderOrders.model
|
|
|
+ mesh.material.depthWrite = true
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ model.opacity = opacity//记录在最外层
|
|
|
}
|
|
|
|
|
|
},
|
|
|
changeBottom(z){
|
|
|
- model && MergeEditor.setModelBtmHeight(model,z)
|
|
|
- model.dispatchEvent('transformChanged') //改了position
|
|
|
+ /* model && MergeEditor.setModelBtmHeight(model,z)
|
|
|
+ model.dispatchEvent('transformChanged') //改了position */
|
|
|
},
|
|
|
changePosition(pos){//校准取消时执行
|
|
|
//if(MergeEditor.selected == model){
|
|
@@ -673,38 +707,49 @@ export const enter = (dom, isLocal) => {
|
|
|
if(model){
|
|
|
if(MergeEditor.split){//分屏校准
|
|
|
MergeEditor.setTransformState('rotate')
|
|
|
- }else{
|
|
|
- MergeEditor.transformControls.attach(model)
|
|
|
- MergeEditor.transformControls.mode = 'rotate'
|
|
|
+ MergeEditor.transformControls2.attach(model)
|
|
|
+ MergeEditor.transformControls2.mode = 'rotate'
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ MergeEditor.transformControls.attach(model)
|
|
|
+ MergeEditor.transformControls.mode = 'rotate'
|
|
|
+
|
|
|
}
|
|
|
},
|
|
|
enterMoveMode(){
|
|
|
if(model){
|
|
|
if(MergeEditor.split){//分屏校准
|
|
|
MergeEditor.setTransformState('translate')
|
|
|
- }else{
|
|
|
- MergeEditor.transformControls.attach(model)
|
|
|
- MergeEditor.transformControls.mode = 'translate'
|
|
|
+ MergeEditor.transformControls2.attach(model)
|
|
|
+ MergeEditor.transformControls2.mode = 'translate'
|
|
|
}
|
|
|
+ MergeEditor.transformControls.attach(model)
|
|
|
+ MergeEditor.transformControls.mode = 'translate'
|
|
|
+
|
|
|
}
|
|
|
},
|
|
|
- leaveTransform(){
|
|
|
-
|
|
|
+ leaveTransform(){
|
|
|
|
|
|
if(MergeEditor.split){//分屏校准
|
|
|
MergeEditor.setTransformState(null)
|
|
|
}else{
|
|
|
MergeEditor.transformControls.detach()
|
|
|
+ MergeEditor.transformControls2.detach()
|
|
|
}
|
|
|
},
|
|
|
|
|
|
enterAlignment(){//开始校准
|
|
|
- MergeEditor.enterSplit()
|
|
|
result.leaveTransform()
|
|
|
+ MergeEditor.enterSplit()
|
|
|
+
|
|
|
+
|
|
|
//console.log('enterAlignment',model.position, model.rotation)
|
|
|
let bus = new mitt()
|
|
|
|
|
|
+ /* MergeEditor.transformControls.attach(model)
|
|
|
+ MergeEditor.transformControls.mode = 'translate' */
|
|
|
+
|
|
|
return {
|
|
|
bus
|
|
|
}
|
|
@@ -712,6 +757,9 @@ export const enter = (dom, isLocal) => {
|
|
|
leaveAlignment(){
|
|
|
//console.log('leaveAlignment',model.position, model.rotation)
|
|
|
MergeEditor.leaveSplit()
|
|
|
+
|
|
|
+ MergeEditor.transformControls.detach()
|
|
|
+ MergeEditor.transformControls2.detach()
|
|
|
},
|
|
|
|
|
|
enterScaleSet(){//设置比例
|
|
@@ -989,7 +1037,7 @@ export const enter = (dom, isLocal) => {
|
|
|
}
|
|
|
|
|
|
|
|
|
- console.log('版本: 2022.8.29-1')
|
|
|
+ console.log('版本: 2022.9.20-1')
|
|
|
|
|
|
return sdk
|
|
|
}
|