|
@@ -457,7 +457,7 @@ export const enter = (dom, isLocal) => {
|
|
|
requestLoadCount++ */
|
|
|
//console.log(props.isDynamicAdded, props.mode)
|
|
|
|
|
|
- let bus = mitt()
|
|
|
+ let bus = props.bus = mitt()
|
|
|
//console.log('addModel',props)
|
|
|
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
|
|
@@ -468,7 +468,12 @@ export const enter = (dom, isLocal) => {
|
|
|
props.rotation = new THREE.Euler().setFromVector3(props.rotation)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ let getDefaultRotation = () => {
|
|
|
+ //0看看,1看见,2深时,3用户上传三维模型,4深时mesh,5深光点云,6深光mesh
|
|
|
+ if (props.fromType == 1 || props.fromType == 6 || props.fromType == 4 && props.type != 'glb') {//来自4dkk的3dtiles初始需要转90度
|
|
|
+ return new THREE.Euler(Math.PI / 2, 0, 0)
|
|
|
+ } else return new THREE.Euler(0, 0, 0)
|
|
|
+ }
|
|
|
|
|
|
|
|
|
if(!props.isFirstLoad){
|
|
@@ -481,58 +486,24 @@ export const enter = (dom, isLocal) => {
|
|
|
}, 0))
|
|
|
|
|
|
readyToAddModel = true //准备开始加载
|
|
|
- startLoad(autoLoads[0])
|
|
|
+ loadNext()//startLoad(autoLoads[0])
|
|
|
},30)
|
|
|
}
|
|
|
autoLoads.push(props)
|
|
|
readyToAddModel = false
|
|
|
}else{
|
|
|
- readyToAddModel = true
|
|
|
- }
|
|
|
+ readyToAddModel = true
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- let startLoad = (prop)=>{
|
|
|
- //if(autoLoads.filter(e=>e.loaded).length>1)return console.log('取消加载', prop), prop.onError()
|
|
|
-
|
|
|
- //return prop.onError()
|
|
|
-
|
|
|
- Potree.addModel(prop, prop.done , prop.progressFun, prop.onError)
|
|
|
- prop.loading = true
|
|
|
- console.log('-------开始加载 id:', prop.id, 'title:', prop.title, ', filename:', Potree.Common.getNameFromURL(prop.url), prop )
|
|
|
+
|
|
|
+ props.rotation = getDefaultRotation()
|
|
|
}
|
|
|
|
|
|
- let spliceFromArr = (model,loaded)=>{
|
|
|
- //let autoLoads.find()
|
|
|
- props.loadFinish = true
|
|
|
- props.loading = false
|
|
|
-
|
|
|
- if(loaded){
|
|
|
- props.loaded = true
|
|
|
- props.model = model
|
|
|
- }else{
|
|
|
- props.error = true
|
|
|
- }
|
|
|
-
|
|
|
- let haventLoad = autoLoads.filter(e=>!e.loading && !e.loadFinish);
|
|
|
- if( haventLoad[0]){
|
|
|
- startLoad(haventLoad[0])
|
|
|
-
|
|
|
- //this.addModel(autoLoads[0])
|
|
|
- }else if(autoLoads.filter(e=>!e.loadFinish).length == 0 && autoLoads.filter(e=>e.loaded).length>0 && !props.isFirstLoad){//设置相机位置:当自动开始加载第一个模型时(其余的也跟着自动加载),等这批加载完后;
|
|
|
- let autoLoadsDone = autoLoads.filter(e=>e.loaded).map(e=>e.model)
|
|
|
- console.log('所有模型加载完毕')
|
|
|
- autoLoads.filter(e=>e.loaded && e.show).forEach(e=>e.model.visible = true)
|
|
|
-
|
|
|
- MergeEditor.focusOn(autoLoadsDone, 1000, true, true)
|
|
|
- autoLoads.length = 0
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
let model
|
|
|
let done = (model_)=>{
|
|
|
model = model_
|
|
|
+ model.result_ = result
|
|
|
if(!props.isFirstLoad){
|
|
|
model.visible = false//先不显示,防止卡顿
|
|
|
}
|
|
@@ -559,7 +530,7 @@ export const enter = (dom, isLocal) => {
|
|
|
//console.log(msg)
|
|
|
bus.emit('transformChanged', msg )
|
|
|
})
|
|
|
- spliceFromArr(model,true)
|
|
|
+ spliceFromArr(model, props, true)
|
|
|
|
|
|
|
|
|
if(props.mode == 'single'){//模型查看页
|
|
@@ -581,7 +552,7 @@ export const enter = (dom, isLocal) => {
|
|
|
let onError = function ( xhr ) {
|
|
|
bus.emit('loadError', xhr)
|
|
|
console.log('loadError!!!!!!!!!', Potree.Common.getNameFromURL(props.url), props.size, xhr)
|
|
|
- spliceFromArr(model,false)
|
|
|
+ spliceFromArr(model, props, false)
|
|
|
}
|
|
|
|
|
|
|
|
@@ -994,13 +965,65 @@ export const enter = (dom, isLocal) => {
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
- //sdk.hideGrid()
|
|
|
-
|
|
|
-
|
|
|
- console.log('版本: 2022.12.20-1')
|
|
|
+ function spliceFromArr(model, props, loaded){
|
|
|
+ //let autoLoads.find()
|
|
|
+ props.loadFinish = true
|
|
|
+ props.loading = false
|
|
|
+
|
|
|
+ if (loaded) {
|
|
|
+ props.loaded = true
|
|
|
+ props.model = model
|
|
|
+ } else {
|
|
|
+ props.error = true
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (!loadNext()) {
|
|
|
+ if (autoLoads.filter(e => !e.loadFinish).length == 0 && autoLoads.filter(e => e.loaded).length > 0 && !props.isFirstLoad) {//设置相机位置:当自动开始加载第一个模型时(其余的也跟着自动加载),等这批加载完后;
|
|
|
+ let autoLoadsDone = autoLoads.filter(e => e.loaded).map(e => e.model)
|
|
|
+ console.log('所有模型加载完毕')
|
|
|
+ autoLoads.filter(e => e.loaded && e.show).forEach(e => e.model.visible = true)
|
|
|
+
|
|
|
+ MergeEditor.focusOn(autoLoadsDone, 1000, true, true)
|
|
|
+ autoLoads.length = 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- return sdk
|
|
|
+ function loadNext(){
|
|
|
+ let haventLoad = autoLoads.filter(e => !e.loading && !e.loadFinish);
|
|
|
+ let loading = autoLoads.filter(e => e.loading);
|
|
|
+ let needLoad = haventLoad.slice(0, maxLoadingCount - loading.length)
|
|
|
+ needLoad.forEach(e => startLoad(e))
|
|
|
+ return haventLoad.length > 0
|
|
|
+ }
|
|
|
+
|
|
|
+ function startLoad(prop){
|
|
|
+ /* if(prop.raw.visible !== 1){//用于临时隐藏
|
|
|
+ setTimeout(()=>{
|
|
|
+ spliceFromArr(null, prop, false)
|
|
|
+ prop.bus.emit('loadError' )
|
|
|
+ },1)
|
|
|
+ return
|
|
|
+ } */
|
|
|
+
|
|
|
+ if(prop.loading || prop.loadFinish)return
|
|
|
+
|
|
|
+ Potree.Log(`--开始加载--`, { font: { color: '#f68' } });
|
|
|
+ console.log('id:', prop.id, ', title:', prop.title, ', filename:', Potree.Common.getNameFromURL(prop.url), ', type:', prop.type, prop)
|
|
|
+
|
|
|
+ prop.unlit = prop.renderType != 'normal'
|
|
|
+ prop.maximumScreenSpaceError = 70
|
|
|
+ prop.prefix = prop.raw.prefix
|
|
|
+ Potree.addModel(prop, prop.done, prop.progressFun, prop.onError)
|
|
|
+ prop.loading = true
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return sdk
|
|
|
}
|
|
|
|
|
|
export default enter
|