|
@@ -100,12 +100,12 @@ export default {
|
|
|
// actions
|
|
|
actions: {
|
|
|
init ({ dispatch, commit, state, rootGetters }) {
|
|
|
- console.log('Init Project module', state.id)
|
|
|
+ console.log(`Init Project module ${state.id}`, state)
|
|
|
dispatch('sizingBuilding')
|
|
|
dispatch('build3dObjs')
|
|
|
},
|
|
|
sizingBuilding ({ dispatch, commit, state, rootGetters }) {
|
|
|
- console.log('sizingBuilding')
|
|
|
+ console.log('sizingBuilding, state', state)
|
|
|
let totalW = rootGetters['Projects/totalW']
|
|
|
// console.log('totalW', totalW)
|
|
|
let margin = rootGetters['Projects/marginBetweenBuildings']
|
|
@@ -139,7 +139,7 @@ export default {
|
|
|
x: x,
|
|
|
// y: -1 * state.size.y / 2 + 10 + Math.random() * 30, // -10 + Math.random() * this.size.y / 2
|
|
|
y: -state.size.y / 4,
|
|
|
- z: -10 + Math.random() * 10
|
|
|
+ z: 0// -10 + Math.random() * 10
|
|
|
})
|
|
|
|
|
|
// WINDOWS
|
|
@@ -211,10 +211,10 @@ export default {
|
|
|
console.log('build3dObjs')
|
|
|
// http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/
|
|
|
|
|
|
- let backGeom = new THREE.BoxGeometry(state.size.x, state.size.y, state.wall.wallW)
|
|
|
- let backMesh = new THREE.Mesh(backGeom)
|
|
|
- backMesh.position.z = -0.5 * state.size.z
|
|
|
- let backBSP = new ThreeBSP(backMesh)
|
|
|
+ let frontGeom = new THREE.BoxGeometry(state.size.x, state.size.y, state.wall.wallW)
|
|
|
+ let frontMesh = new THREE.Mesh(frontGeom)
|
|
|
+ frontMesh.position.z = 0.5 * state.size.z
|
|
|
+ let frontBSP = new ThreeBSP(frontMesh)
|
|
|
|
|
|
// https://medium.com/techtrument/multithreading-javascript-46156179cf9a
|
|
|
let winGeom = new THREE.BoxGeometry(state.wall.winW, state.wall.winH, state.wall.wallW)
|
|
@@ -223,7 +223,7 @@ export default {
|
|
|
|
|
|
for (var i = 0; i < state.wall.nbrWinX; i++) {
|
|
|
for (var j = 0; j < state.wall.nbrWinY; j++) {
|
|
|
- winMesh.position.z = -0.5 * state.size.z
|
|
|
+ winMesh.position.z = 0.5 * state.size.z
|
|
|
winMesh.position.x = -0.5 * state.size.x + state.wall.margin + state.wall.winW * 0.5 + i * (state.wall.winW + state.wall.paddingX)
|
|
|
winMesh.position.y = 0.5 * state.size.y - state.wall.margin - state.wall.winH * 0.5 - j * (state.wall.winH + state.wall.paddingY)
|
|
|
// winMesh.updateMatrix()
|
|
@@ -231,23 +231,18 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
let windowsBSP = new ThreeBSP(windowsGeom)
|
|
|
- backBSP = backBSP.subtract(windowsBSP)
|
|
|
+ let frontWindowedBSP = frontBSP.subtract(windowsBSP)
|
|
|
|
|
|
- // let winBSP
|
|
|
- // for (var i = 0; i < state.wall.nbrWinX; i++) {
|
|
|
- // for (var j = 0; j < state.wall.nbrWinY; j++) {
|
|
|
- // winMesh.position.z = -0.5 * state.size.z
|
|
|
- // winMesh.position.x = -0.5 * state.size.x + state.wall.margin + state.wall.winW * 0.5 + i * (state.wall.winW + state.wall.paddingX)
|
|
|
- // winMesh.position.y = 0.5 * state.size.y - state.wall.margin - state.wall.winH * 0.5 - j * (state.wall.winH + state.wall.paddingY)
|
|
|
- // winBSP = new ThreeBSP(winMesh)
|
|
|
- // backBSP = backBSP.subtract(winBSP)
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- backMesh = backBSP.toMesh()
|
|
|
- let faceMesh = backMesh.clone()
|
|
|
- faceMesh.position.z = 0.5 * state.size.z
|
|
|
- let faceBSP = new ThreeBSP(faceMesh)
|
|
|
+ // console.log('state.Faces_opaques', state.Faces_opaques)
|
|
|
+ let backWindowedMesh
|
|
|
+ if (state.Faces_opaques === 3) {
|
|
|
+ backWindowedMesh = frontMesh.clone()
|
|
|
+ } else {
|
|
|
+ let frontWindowedMesh = frontWindowedBSP.toMesh()
|
|
|
+ backWindowedMesh = frontWindowedMesh.clone()
|
|
|
+ }
|
|
|
+ backWindowedMesh.position.z = -0.5 * state.size.z
|
|
|
+ let backWindowedBSP = new ThreeBSP(backWindowedMesh)
|
|
|
|
|
|
let rightGeom = new THREE.BoxGeometry(state.wall.wallW, state.size.y, state.size.z)
|
|
|
let rightMesh = new THREE.Mesh(rightGeom)
|
|
@@ -260,23 +255,24 @@ export default {
|
|
|
// leftMesh.position.z = 0.5 * state.size.z
|
|
|
let leftBSP = new ThreeBSP(leftMesh)
|
|
|
|
|
|
- let buildingBSP = backBSP.union(rightBSP)
|
|
|
- buildingBSP = buildingBSP.union(faceBSP)
|
|
|
+ let buildingBSP = frontWindowedBSP.union(rightBSP)
|
|
|
+ buildingBSP = buildingBSP.union(backWindowedBSP)
|
|
|
buildingBSP = buildingBSP.union(leftBSP)
|
|
|
- // buildingBSP = buildingBSP.union(topBSP)
|
|
|
- // buildingBSP = buildingBSP.union(floorBSP)
|
|
|
|
|
|
// convert back to three.js mesh
|
|
|
let building = buildingBSP.toMesh()
|
|
|
|
|
|
// create a classical material for building
|
|
|
// let topColor = `hsla(201, 100%, 95%, 1)`
|
|
|
- let hTop = Math.round(195 + Math.random() * 10)
|
|
|
- let sTop = Math.round(100)
|
|
|
- let lTop = Math.round(95)
|
|
|
- let hFloor = Math.round(205 + Math.random() * 10)
|
|
|
- let sFloor = Math.round(40 + Math.random() * 20)
|
|
|
- let lFloor = Math.round(5 + Math.random() * 15)
|
|
|
+ let hTop = Math.round(190 + Math.random() * 20)
|
|
|
+ let sTop = Math.round(20 + Math.random() * 60)
|
|
|
+ let lTop = Math.round(75)
|
|
|
+ // let hFloor = Math.round(205 + Math.random() * 10)
|
|
|
+ let hFloor = hTop
|
|
|
+ // let sFloor = Math.round(30 + Math.random() * 40)
|
|
|
+ let sFloor = sTop
|
|
|
+ // let lFloor = Math.round(10 + Math.random() * 20)
|
|
|
+ let lFloor = Math.round(10)
|
|
|
let topColor = `hsla(${hTop}, ${sTop}%, ${lTop}%, 1)`
|
|
|
commit('setTopColor', topColor)
|
|
|
let floorColor = `hsla(${hFloor}, ${sFloor}%, ${lFloor}%, 1)`
|
|
@@ -291,7 +287,7 @@ export default {
|
|
|
building.material = new THREE.MeshPhongMaterial(materialOpts)
|
|
|
// commiting walls
|
|
|
commit('setWalls3dObj', building)
|
|
|
- let buildingPos = { ...state.position, ...{ z: state.position.z - 0.5 * state.size.z } }
|
|
|
+ let buildingPos = { ...state.position, ...{ z: state.position.z + 0.5 * state.size.z } }
|
|
|
commit('setWallsPos', buildingPos)
|
|
|
|
|
|
// TOP & FLOOR
|
|
@@ -339,6 +335,17 @@ export default {
|
|
|
commit('setLevels3dObj', levelsMesh)
|
|
|
let levelsPos = { ...state.position }
|
|
|
commit('setLevelsPos', levelsPos)
|
|
|
+
|
|
|
+ // // repère
|
|
|
+ // let repGeom = new THREE.BoxGeometry(1, 1, 1)
|
|
|
+ // let repMesh = new THREE.Mesh(repGeom)
|
|
|
+ // let repOpts = {
|
|
|
+ // color: 0x0000ff,
|
|
|
+ // shininess: 30
|
|
|
+ // }
|
|
|
+ // repMesh.material = new THREE.MeshPhongMaterial(repOpts)
|
|
|
+ // repMesh.position = { ...state.position, ...{ y: 0 } }
|
|
|
+ // commit('setRep3dObj', levelsMesh)
|
|
|
},
|
|
|
loadContents ({ dispatch, commit, state }) {
|
|
|
console.log('loadContents')
|