//画墙、地板、门、窗、环境等 function decorate3D(layer3D) { this.scene = layer3D.scene3D.scene; this.parameter = layer3D.layer.parameter; this.materials = layer3D.materials; this.collidableMeshes=layer3D.collectMeshes.collidableMeshes; this.roomWallMeshes=layer3D.collectMeshes.roomWallMeshes; this.arrowMeshes=layer3D.collectMeshes.arrowMeshes; this.layer3D = layer3D; this.floors = { index:0, selectId:null, floorImg:null }; //里面的元素是json格式,主要分为wallId,floorId,material,type //this.paintSet=[]; this.wallSet={submeshes:[],subMaterials:[],verticesStart:0,indexStart:0}; }; //使得墙透明 decorate3D.prototype.transparentWall=function(value) { for(var i=0;ifloor) { this.collidableMeshes[i].visibility=0; } } for(var i=0;ifloor) { this.roomWallMeshes[i].visibility=0; } } }; //删除某一层的内容 decorate3D.prototype.deleteOneFloor=function(floor) { for(var i=0;i0;--i) { heights[i] = heights[i-1]; pt1=new BABYLON.Vector3(inpoints[i].x, bottom, inpoints[i].y); pt2=new BABYLON.Vector3(inpoints[i-1].x, bottom, inpoints[i-1].y); var toward=-1*towards[num]; var mesh=this.drawSideWall(pt1,pt2,height+heights[i],id); towards.push(toward); this.collidableMeshes[this.collidableMeshes.length-1].toward=toward; points.push({point1:inpoints[i],point2:inpoints[i-1]}); --num; wallmeshes.push(mesh); collindex.push(mesh.planindex); } heights[0] = heights[1]; pt1=new BABYLON.Vector3(inpoints[0].x, bottom, inpoints[0].y); pt2=new BABYLON.Vector3(outpoints[0].x, bottom, outpoints[0].y); var mesh=this.drawSideWall(pt1,pt2,height+heights[0],id); toward=calculateLine.getToward(inpoints[0],outpoints[0],outpoints[1]); towards.push(-1*toward); this.collidableMeshes[this.collidableMeshes.length-1].toward=-1*toward; points.push({point1:inpoints[0],point2:outpoints[0]}); wallmeshes.push(mesh); collindex.push(mesh.planindex); var _topWallmesh=BABYLON.Mesh.MergeMeshes(topWallmeshes); var topCSG = BABYLON.CSG.FromMesh(_topWallmesh); var finalTopMesh = topCSG.toMesh("wallopen",this.materials.wallmaterial, this.scene,true); _topWallmesh.dispose(); _topWallmesh=null; finalTopMesh.floor=floor; this.roomWallMeshes.push(finalTopMesh); var wallmesh=BABYLON.Mesh.MergeMeshes(wallmeshes); wallmesh.subMeshes = []; this.wallSet.subMaterials=[]; for(var i=0;i