Procházet zdrojové kódy

全景贴图抗锯齿

xzw před 2 roky
rodič
revize
946ab48e66
3 změnil soubory, kde provedl 31 přidání a 14 odebrání
  1. 5 1
      js/Hot.js
  2. 16 7
      js/main_2020_show.js
  3. 10 6
      js/manage.js

+ 5 - 1
js/Hot.js

@@ -29,6 +29,9 @@ window.initHot = function(model){
     
     var defaultTex1 = Texture.load(g_HotImage.point);
     var defaultTex2 = Texture.load(g_HotImage.point2)    
+    dealMap(defaultTex1,{ignoreResize:true}  );
+    dealMap(defaultTex2,{ignoreResize:true}  ); //这张图改为linear有黑边
+    
     
     /* var _boxMat = new THREE.MeshBasicMaterial({ 
         color: "#eeeeee",
@@ -431,7 +434,8 @@ window.initHot = function(model){
             if(styleImg.length){
                 tex1 = Texture.load(styleImg[0].src);
                 tex2 = Texture.load(styleImg[1]&&styleImg[1].src || styleImg[0].src); 
-                
+                dealMap(tex1,{ignoreResize:true}  )
+                dealMap(tex2,{ignoreResize:true}  )
             }else{
                 tex1 = defaultTex1;
                 tex2 = defaultTex2; 

+ 16 - 7
js/main_2020_show.js

@@ -19044,12 +19044,16 @@ window.Modernizr = function(n, e, t) {
               , A = (e("../scene/SceneRenderer"),
             e("../enum/GLCubeFaces"),
             e("../exception/BasicException"))
+             
               , y = e("../tile/TileUtils")
               , C = e("events").EventEmitter
               , I = new o(i)
               , E = new r.SphereBufferGeometry(.1)
               , b = new r.PlaneBufferGeometry(.4,.4,1,1)
               , w = d.load("images/marker-256x256.png");
+              
+              w.anisotropy = browser.isMobile() ? 1 : 3 //add
+              
             n.prototype = Object.create(C.prototype),
             n.prototype.enter = function() {
                 var e = null;
@@ -19617,6 +19621,9 @@ window.Modernizr = function(n, e, t) {
           , h = e("../enum/RenderLayers")
           , u = e("../enum/RenderOrder")
           , d = s.load("images/reticule-256x256.png");
+          
+        d.anisotropy = browser.isMobile() ? 1 : 4; //各向异性  
+          
         n.prototype = Object.create(r.Mesh.prototype),
         n.prototype.move = function(e, t, i) {
             this.hidden = i,
@@ -25319,7 +25326,7 @@ window.Modernizr = function(n, e, t) {
               , o = n.context
               , a = n.state
               , s = new r.Texture(null);
-            s.flipY = !1,
+            s.flipY = !1,  
             i !== !0 && (i = !1),
             s.generateMipmaps = i;
             var l = n.paramThreeToGL(s.format)
@@ -27635,7 +27642,7 @@ window.Modernizr = function(n, e, t) {
                 if (this.zoomRenderTarget && this.zoomRenderTarget.width === this.qualityManager.getMaxZoomPanoSize())
                     return;
                 var e = this.zoomRenderTarget;
-                if (this.zoomRenderTarget = this.initTiledPano(this.qualityManager.getMaxZoomPanoSize(), !1),
+                if (this.zoomRenderTarget = this.initTiledPano(this.qualityManager.getMaxZoomPanoSize(), !browser.isMobile()/* !1 */),
                 e) {
                     var t = e.width
                       , i = this.zoomRenderTarget.width;
@@ -27688,7 +27695,7 @@ window.Modernizr = function(n, e, t) {
                 if (r && s(r.renderTarget),
                 r = a(l),
                 !r) {
-                    var c = this.initTiledPano(l, !1);
+                    var c = this.initTiledPano(l, !browser.isMobile()/* !1 */);
                     r = o(c.width),
                     r.renderTarget = c
                 }
@@ -27816,7 +27823,7 @@ window.Modernizr = function(n, e, t) {
             return n
         }
         ,
-        l.prototype.initTiledPano = function(e, t) {
+        l.prototype.initTiledPano = function(e, antialias) {
             var i = this.sceneRenderer.renderer
               , n = (i.context,
             new h.WebGLRenderTargetCube(e,e,{
@@ -27825,8 +27832,10 @@ window.Modernizr = function(n, e, t) {
               , r = new h.CubeTexture([]);
             n.texture = r,
             r.image = [null, null, null, null, null, null],
-            r.flipY = !0,
-            t ? (r.generateMipmaps = !0,
+            r.flipY = !0, 
+            
+            //antialias: 如果抗锯齿的话,采用mipmap,会增加一倍的存储消耗。原版本都是不抗锯齿的。但是抗锯齿效果更柔和
+            antialias ? (r.generateMipmaps = !0,
             r.magFilter = h.LinearFilter,
             r.minFilter = h.LinearMipMapLinearFilter) : (r.generateMipmaps = !1,
             r.magFilter = h.LinearFilter,
@@ -28412,7 +28421,7 @@ window.Modernizr = function(n, e, t) {
                 if(tileClass == '1k')return this.getPanoSize(r.STANDARD);
                  
                 if(tileClass == '4k' && this.useUltraHighResolutionPanos ){
-                    this.getPanoSize(r.ULTRAHIGH);
+                    return this.getPanoSize(r.ULTRAHIGH);
                 }else{//'2k'
                     return this.getPanoSize(r.HIGH);
                 }

+ 10 - 6
js/manage.js

@@ -160,12 +160,16 @@ var toPrecision = function(e, t) {
 }
 
 
-var dealMap = (map)=>{//使不resize  when   image is not power of two
-    map.wrapS = map.wrapT = THREE.ClampToEdgeWrapping;
-    map.minFilter = THREE.LinearFilter;
-    //map.magFilter = THREE.LinearFilter;
-    map.generateMipmaps = true;  
-    
+var dealMap = (map, o={} )=>{
+    //使不resize  when   image is not power of two  ,但缩小时会有锯齿
+    if(!o.ignoreResize){
+        if(!map.image || !THREE.Math.isPowerOfTwo(map.image.width ) || !THREE.Math.isPowerOfTwo(map.image.height )){
+            map.wrapS = map.wrapT = THREE.ClampToEdgeWrapping;
+            map.minFilter = THREE.LinearFilter; 
+            map.generateMipmaps = true;
+        } 
+    }        
+    if(!browser.isMobile()) map.anisotropy = 3
 }