zjs_project 1 anno fa
parent
commit
07689dbaeb

+ 1 - 0
src/mixins/wallMethod.js

@@ -504,6 +504,7 @@ export default {
 						modelItem.wallScaleX = wallScaleX;
 						modelItem.wallScaleY = wallScaleY;
 						modelItem.wallRotateY = wallRotateY;
+						console.log("XXXXXXXXXXXXXXXX", modelWidth, modelItem)
 						//新版下,符合条件的不止一个了,因为新版下是以模型里面的几何体为单元,个数较多
 						this.gltfWalls.forEach(gltfItem=>{
 							if(gltfItem.spaceId == spaceObj.spaceId 

+ 5 - 1
src/pages/webgl_rxdz/webgl_rxdz.vue

@@ -167,7 +167,7 @@
 			console.log("***onLoad-webgl_rxdz***", this.$route.query)
 			var that = this;
 			this.houseId = '100296';//
-			this.childLayout = '0';//4-测试户型
+			this.childLayout = '4';//4-测试户型
 			let unit = window.screen.width / 750;//单位rpm 对应 px 的值
 			that.canvasHeight = window.screen.height - (200 * unit) + (20 * unit);
 			
@@ -680,6 +680,10 @@
 							space.hardboundEffect = list;
 							console.warn("submitHouse: ", list,space);
 						}
+						let wallList = this.wallList.find(it=>it.id==space.wallId);
+						if(wallList){//找到当前空间的墙体数据
+							space.wallList = JSON.stringify(wallList);
+						}
 						houseData.houseJson.push(space)
 					})
 					//寻找styleList里面出现最多次数的风格

+ 42 - 16
src/pages/webgl_rxdz_look/webgl_rxdz_look.vue

@@ -145,8 +145,7 @@
 			this.resetControl = resetControl;
 			function init() {
 
-                scene.background = new THREE.Color("#F2F2F2");
-                scene.environment = new THREE.Color("#F2F2F2");
+                scene.background = new THREE.Color("#FFFFFF");
 
 				// 创建相机位置
 				camera = new THREE.PerspectiveCamera( 80, window.screen.width / window.screen.height, 0.1, 10000 );
@@ -155,19 +154,34 @@
                 that.camera = camera;
 
                 // 环境光会均匀的照亮场景中的所有物体
-                const ambientLight = new THREE.AmbientLight(0xFFEFE0, 1.48 );
-                scene.add( ambientLight );
+                const ambientLight = new THREE.AmbientLight(0xFFEFE0, 3);
+                scene.add(ambientLight);
                 //平行光
-                const light = new THREE.DirectionalLight(0xFFF8E5, 1.96 );
-                light.position.set(-14.8, 9.188, -7.448); //default; light shining from top
+                const light = new THREE.DirectionalLight(0xFFF8E5, 3);
+                light.position.set(-3, 9, 3); //default; light shining from top
+                light.castShadow = true; // default false
+                // 默认情况下光投影相机区域是一个长宽高为10x10x500的长方体区域,光源投射方向为通过坐标原点
+                light.shadow.camera.left = -100; // default
+                light.shadow.camera.right  = 100; // default
+                light.shadow.camera.top  = 100; // default
+                light.shadow.camera.bottom  = -100; // default
+                
+                light.shadow.mapSize.width = 8192; // default
+                light.shadow.mapSize.height = 8192; // default
+                // light.shadow.camera.near = 0.1; // default
+                // light.shadow.camera.far = 500; // default
+                
+                // light.shadow.bias = -0.01;
+                // light.shadow.radius = 1;
+                // light.shadow.darkness = 1; // 设置阴影强度为0.5
                 scene.add(light);
 				//antialias 这个值得设置为false,不然IOS上截图会失效
                 renderer = that.renderer = new THREE.WebGLRenderer({
 					canvas:canvas3d, 
 					alpha: true,
-					// 如果想保存three.js canvas画布上的信息,注意设置preserveDrawingBuffer
-					preserveDrawingBuffer: true,
 				});
+				renderer.shadowMap.enabled = true;//产生阴影
+				renderer.shadowMap.type = THREE.PCFSoftShadowMap; // 阴影属性
                 renderer.outputEncoding = THREE.sRGBEncoding;
                 renderer.outputColorSpace = THREE.SRGBColorSpace;
                 // renderer.toneMappingExposure = 0.1;//色调映射的曝光级别。默认是1
@@ -518,7 +532,7 @@
 				}
                 if(this.curHouseObj){
                     const spaceDetail = this.curHouseObj;
-                    const spaceList =spaceDetail.houseJson;
+                    const spaceList = spaceDetail.houseJson;
                     // 交换centerX, centerY;上一页面已经处理过了,这里不在需要处理
                     for (let index = 0; index < spaceList.length; index++) {
                         var element = spaceList[index];
@@ -536,6 +550,7 @@
 						element.wallMoveValue = "[0,0,0,0]"
                         this.spaceList.push(element);
                         this.wallIds.push(element.wallId);
+						this.wallList.push(JSON.parse(element.wallList));
 						if(element.isSelected){ // 默认选中空间
 						    this.curSpaceObj = element;
 						}
@@ -552,13 +567,24 @@
             },
             // 获取墙体数据
             async getHouseTypeSpaceWalls(){
-                let data = {id:this.wallIds}
-                const res = await requestConfig('getHouseTypeSpaceWalls', data, true);
-                console.log("墙体数据:", res.list)
-                let wallList = [];
-                if(res.success){
-                    wallList = this.wallList = res.list;
-                }
+                // let data = {id:this.wallIds}
+                // const res = await requestConfig('getHouseTypeSpaceWalls', data, true);
+                // console.log("墙体数据:", res.list)
+                // let wallList = [];
+                // if(res.success){
+                //     wallList = this.wallList = res.list;
+                // }
+				let wallList = [];
+				if(this.wallList && this.wallList.length>0){
+					wallList = this.wallList;
+				}else{
+					let data = {id:this.wallIds}
+					const res = await requestConfig('getHouseTypeSpaceWalls', data, true);
+					console.log("墙体数据:", res.list)
+					if(res.success){
+					    wallList = this.wallList = res.list;
+					}
+				}
                 let wallArr = []
                 for (let index = 0; index < wallList.length; index++) {//每个空间对应一个数据
                     let element = JSON.parse(wallList[index].wallJson);