Преглед изворни кода

fix: 模型重新用2k,然后换4k颜色贴图

xzw пре 2 недеља
родитељ
комит
ec8dc92c27

+ 1 - 1
public/static/data/data.json

@@ -688,7 +688,7 @@
         ],
         "53": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 51, 0, 1]
       },
-      "combine": 1,
+      "combine": 1, 
       "texParts": { "52": [0], "53": [1] },
       "view": {
         "yaw": 0.18462127290443853,

BIN
public/static/models/1/a-4k.jpg


BIN
public/static/models/1/lz080.glb


BIN
public/static/models/10/a-4k.jpg


BIN
public/static/models/10/lz050.glb


BIN
public/static/models/11/a-4k.jpg


BIN
public/static/models/11/lz349.glb


BIN
public/static/models/2/a-4k.jpg


BIN
public/static/models/2/lz048.glb


BIN
public/static/models/3/a-4k-Default.jpg


BIN
public/static/models/3/a-4k-material_0.jpg


BIN
public/static/models/3/lz015-016.glb


BIN
public/static/models/4/a-4k-51.jpg


BIN
public/static/models/4/a-4k-52.jpg


BIN
public/static/models/4/a-4k-53.jpg


BIN
public/static/models/4/lz051-052-053.glb


BIN
public/static/models/5/a-4k.jpg


BIN
public/static/models/5/lz081.glb


BIN
public/static/models/6/a-4k.jpg


BIN
public/static/models/6/lz075.glb


BIN
public/static/models/7/a-4k.jpg


BIN
public/static/models/7/lz076.glb


BIN
public/static/models/8/a-4k.jpg


BIN
public/static/models/8/lz032.glb


BIN
public/static/models/9/a-4k.jpg


BIN
public/static/models/9/lz063.glb


+ 31 - 4
src/modelViewer/ModelManager.js

@@ -565,6 +565,31 @@ export default class ModelManager extends THREE.EventDispatcher{
             }  
         } 
         model.structureOpacity = data.structureOpacity || 1
+        
+        { //替换成4k   暂时没有不同材质共用贴图的情况,不考虑,一般不同mesh对应不同材质和贴图
+            let materials2 = []
+            model.traverse(e=>{
+                if(e.material && !materials2.includes(e.material)){ 
+                    materials2.push(e.material )
+                }
+            })
+            materials2.forEach(mat=>{
+                let src = Common.joinUrl(model.props.prefixUrl, 'a-4k'+(materials2.length>1? '-'+mat.name:'')+'.jpg')
+                texLoader.load(src, (tex)=>{
+                    console.log('替换4k')
+                    tex.colorSpace = 'srgb' 
+                    tex.anisotropy = settings.aniso 
+                    model.materials_.forEach(mat_=>{
+                        if((mat_.originName || mat_.name) == mat.name){
+                            mat_.map = tex;
+                        } 
+                    })
+                    viewer.dispatchEvent('content_changed')
+                }) 
+            }) 
+            
+        }
+        
         model.traverse(e=>{
             //console.log('traverseName', e.name)
             if(e.material){ 
@@ -578,10 +603,11 @@ export default class ModelManager extends THREE.EventDispatcher{
                         let name = "copy_"+a
                         let mat = materials.find(e=>e.name == name)
                         if(!mat){
-                            mat = materials.length ? materials[0].clone() : e.material
+                            mat = materials.length ? materials[0].clone() : e.material 
                             materials.push(mat)
                             mat.emissive.set(data.materials[a].emissive)
                             mat.emissiveIntensity = 0
+                            mat.originName = mat.name
                             mat.name = name 
                             mat.emiss_texs = data.materials[a].tex || [] 
                         }
@@ -646,12 +672,13 @@ export default class ModelManager extends THREE.EventDispatcher{
   
         
   
-  
+        
   
         model.materials_.forEach(material=>{
             //material.premultipliedAlpha = true
             //material.glslVersion =  THREE.GLSL3
-             
+                
+            
             
             material.initialOpacity = material.opacity
              
@@ -797,7 +824,7 @@ export default class ModelManager extends THREE.EventDispatcher{
                 );  
                 
                 //console.log(shader.vertexShader)
-                console.log(shader.fragmentShader)
+                //console.log(shader.fragmentShader)
                 //console.log(shader.uniforms)