bill 2 سال پیش
والد
کامیت
05e323f5c4
5فایلهای تغییر یافته به همراه124382 افزوده شده و 103240 حذف شده
  1. 124364 103196
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 6 5
      src/api/model.ts
  4. 6 1
      src/sdk/association.ts
  5. 5 37
      src/sdk/cover/index.js

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 124364 - 103196
public/lib/potree/potree.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
public/lib/potree/potree.js.map


+ 6 - 5
src/api/model.ts

@@ -12,6 +12,7 @@ export enum ModelType {
   SWKJ = 'swkj',
   SWMX = 'glb',
   SWSS = 'laser',
+  OSGB = 'obsg'
 }
 
 export const ModelTypeDesc: Record<ModelType, string>  = {
@@ -19,6 +20,7 @@ export const ModelTypeDesc: Record<ModelType, string>  = {
   [ModelType.SWKJ]: '四维看见',
   [ModelType.SWSS]: '四维深时',
   [ModelType.SWMX]: '三维模型',
+  [ModelType.OSGB]: 'osgb模型'
 }
 
 export interface ModelAttrs {
@@ -44,11 +46,10 @@ interface ServiceModel {
   id: number,
   hide: number,
   modelDateType: string
-  modelGlbUrl: string
+  modelUrl: string
   fusionId?: number,
   modelSize: number
   modelTitle: string
-  modelUrl?: string
   opacity: number
   bottom: number
   type: number
@@ -67,10 +68,10 @@ const serviceToLocal = (serviceModel: ServiceModel): Model => ({
   position: serviceModel.transform.position,
   rotation: serviceModel.transform.rotation,
   id: serviceModel.id.toString(),
-  url: serviceModel.modelUrl || serviceModel.modelGlbUrl,
+  url: serviceModel.modelUrl,
   title: serviceModel.modelTitle,
   fusionId: serviceModel.fusionId,
-  type:  serviceModel.type === 2 ? ModelType.SWSS : ModelType.SWMX,
+  type:  serviceModel.modelDateType === 'osgb' ? ModelType.OSGB : serviceModel.type === 2 ? ModelType.SWMX : ModelType.SWMX,
   size: serviceModel.modelSize,
   time: serviceModel.createTime
 })
@@ -81,7 +82,7 @@ const localToService = (model: Model): ServiceModel => ({
   hide: Number(!model.show),
   fusionId: model.fusionId,
   modelDateType: model.type,
-  modelGlbUrl: model.url,
+  modelUrl: model.url,
   type: model.type === ModelType.SWSS ? 2 : 3,
   modelSize: model.size,
   modelTitle: model.title,

+ 6 - 1
src/sdk/association.ts

@@ -36,10 +36,15 @@ const associationModels = (sdk: SDK) => {
       }
 
       const itemRaw = toRaw(item)
+      console.log('加载模型', {
+        ...itemRaw,
+        ...modelRange,
+        url: getResource(item.url)
+      })
       const sceneModel = sdk.addModel({
         ...itemRaw,
         ...modelRange,
-        type: ModelType.SWMX,
+        // type: ModelType.SWMX,
         url: getResource(item.url)
       })
       sceneModelMap.set(itemRaw, sceneModel)

+ 5 - 37
src/sdk/cover/index.js

@@ -21,6 +21,10 @@ export const enter = (dom, isLocal) => {
     let MergeEditor = viewer.modules.MergeEditor
     let sceneBus = mitt()
     
+    
+    MergeEditor.transformControls.pivotOnBottom = !!isLocal //中心点居于模型bound底部,因固定离地高度,旋转时旋转中心在地面上就不会变位置
+    
+    
     viewer.addEventListener('camera_changed', e => {
         var camera = e.viewport.camera
         var pos = camera.position
@@ -510,44 +514,8 @@ export const enter = (dom, isLocal) => {
                 changeOpacity(opacity){ //见笔记:透明物体的材质设置
                     if(opacity == void 0)opacity = 100
                     opacity/=100
-                    
-                  
-                    
                     if(model){
-                        if(model.isPointcloud){ 
-                            model.changePointOpacity(opacity) 
-                            //MergeEditor.updateEdgeStrength()
-                        }else{
-                            //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//记录在最外层
+                        MergeEditor.changeOpacity(model,opacity) 
                     }
                      
                 },