Skip to content
This repository was archived by the owner on Oct 19, 2020. It is now read-only.

Commit dcc8a75

Browse files
author
dominic
committed
re-added empty mesh removal
1 parent 1e05d7f commit dcc8a75

File tree

12 files changed

+53
-26
lines changed

12 files changed

+53
-26
lines changed

src/aframe/component/architecture-toolkit/closet.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import generateUvs from '../../../utils/data3d/buffer/get-uvs'
88
import cloneDeep from 'lodash/cloneDeep'
99
import getClosetData3d from '../../../scene/structure/parametric-objects/closet'
1010
import dataToMaterials from './common/data-to-materials'
11+
import removeEmptyMeshes from './common/remove-empty-meshes'
1112

1213
export default {
1314

@@ -17,7 +18,7 @@ export default {
1718

1819
updateSchema: updateSchema,
1920

20-
update: function (oldData) {
21+
update: async function (oldData) {
2122
var this_ = this
2223
var data = this_.data
2324
// remove old mesh
@@ -28,19 +29,18 @@ export default {
2829

2930
attributes.materials = dataToMaterials(data)
3031

31-
getClosetData3d(attributes)
32-
.then(data3d => {
32+
let data3d = await getClosetData3d(attributes)
33+
removeEmptyMeshes(data3d.meshes)
3334

34-
// create new one
35-
this_.mesh = new THREE.Object3D()
36-
this_.data3dView = new io3d.aFrame.three.Data3dView({parent: this_.mesh})
35+
// create new one
36+
this_.mesh = new THREE.Object3D()
37+
this_.data3dView = new io3d.aFrame.three.Data3dView({parent: this_.mesh})
3738

38-
// update view
39-
this_.data3dView.set(data3d)
40-
this_.el.setObject3D('mesh', this_.mesh)
41-
// emit event
42-
this_.el.emit('mesh-updated');
43-
})
39+
// update view
40+
this_.data3dView.set(data3d)
41+
this_.el.setObject3D('mesh', this_.mesh)
42+
// emit event
43+
this_.el.emit('mesh-updated');
4444
},
4545

4646
remove: function () {

src/aframe/component/architecture-toolkit/column.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import generateUvs from '../../../utils/data3d/buffer/get-uvs'
88
import cloneDeep from 'lodash/cloneDeep'
99
import getColumnData3d from '../../../scene/structure/parametric-objects/column'
1010
import dataToMaterials from './common/data-to-materials'
11+
import removeEmptyMeshes from './common/remove-empty-meshes'
1112

1213
export default {
1314

@@ -17,7 +18,7 @@ export default {
1718

1819
updateSchema: updateSchema,
1920

20-
update: function (oldData) {
21+
update: async function (oldData) {
2122
var this_ = this
2223
var data = this_.data
2324

@@ -31,19 +32,18 @@ export default {
3132

3233
// construct data3d object
3334

34-
var data3d = getColumnData3d(attributes)
35-
.then(data3d => {
36-
// create new one
37-
this_.mesh = new THREE.Object3D()
38-
this_.data3dView = new io3d.aFrame.three.Data3dView({parent: this_.mesh})
35+
let data3d = await getColumnData3d(attributes)
36+
removeEmptyMeshes(data3d.meshes)
3937

40-
// update view
41-
this_.data3dView.set(data3d)
42-
this_.el.setObject3D('mesh', this_.mesh)
43-
// emit event
44-
this_.el.emit('mesh-updated');
45-
})
38+
// create new one
39+
this_.mesh = new THREE.Object3D()
40+
this_.data3dView = new io3d.aFrame.three.Data3dView({parent: this_.mesh})
4641

42+
// update view
43+
this_.data3dView.set(data3d)
44+
this_.el.setObject3D('mesh', this_.mesh)
45+
// emit event
46+
this_.el.emit('mesh-updated');
4747
},
4848

4949
remove: function () {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// clean up empty meshes to prevent errors on material update
2+
export default function (meshes) {
3+
Object.keys(meshes).forEach(key => {
4+
if (!meshes[key].positions || !meshes[key].positions.length) {
5+
//console.warn('no vertices for mesh', key)
6+
delete meshes[key]
7+
}
8+
})
9+
}

src/aframe/component/architecture-toolkit/door.js

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import generateNormals from '../../../utils/data3d/buffer/get-normals'
77
import cloneDeep from 'lodash/cloneDeep'
88
import getDoorData3d from '../../../scene/structure/parametric-objects/door'
99
import dataToMaterials from './common/data-to-materials'
10+
import removeEmptyMeshes from './common/remove-empty-meshes'
1011

1112
export default {
1213

@@ -54,6 +55,7 @@ export default {
5455

5556
// construct data3d object
5657
var data3d = await getDoorData3d(attributes)
58+
removeEmptyMeshes(data3d.meshes)
5759

5860
// create new one
5961
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/floor.js

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import updateSchema from './common/update-schema.js'
77
import cloneDeep from 'lodash/cloneDeep'
88
import getFloorData3d from '../../../scene/structure/parametric-objects/floor'
99
import dataToMaterials from './common/data-to-materials'
10+
import removeEmptyMeshes from './common/remove-empty-meshes'
1011

1112
export default {
1213

@@ -30,6 +31,7 @@ export default {
3031

3132
// construct data3d object
3233
var data3d = await getFloorData3d(attributes)
34+
removeEmptyMeshes(data3d.meshes)
3335

3436
// create new one
3537
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/kitchen.js

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import updateSchema from './common/update-schema.js'
66
import cloneDeep from 'lodash/cloneDeep'
77
import getKitchenData3d from '../../../scene/structure/parametric-objects/kitchen'
88
import dataToMaterials from './common/data-to-materials'
9+
import removeEmptyMeshes from './common/remove-empty-meshes'
910

1011
export default {
1112

@@ -29,6 +30,7 @@ export default {
2930
// get meshes and materials
3031
// promise base because it loads external meshes
3132
var data3d = await getKitchenData3d(attributes)
33+
removeEmptyMeshes(data3d.meshes)
3234

3335
// create new one
3436
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/polyfloor.js

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import generateNormals from '../../../utils/data3d/buffer/get-normals'
99
import cloneDeep from 'lodash/cloneDeep'
1010
import getPolyfloorData3d from '../../../scene/structure/parametric-objects/polyfloor'
1111
import dataToMaterials from './common/data-to-materials'
12+
import removeEmptyMeshes from './common/remove-empty-meshes'
1213

1314
export default {
1415

@@ -32,6 +33,7 @@ export default {
3233

3334
// construct data3d object
3435
var data3d = await getPolyfloorData3d(attributes)
36+
removeEmptyMeshes(data3d.meshes)
3537

3638
// create new one
3739
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/railing.js

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import generateNormals from '../../../utils/data3d/buffer/get-normals'
77
import cloneDeep from 'lodash/cloneDeep'
88
import getRailingData3d from '../../../scene/structure/parametric-objects/railing'
99
import dataToMaterials from './common/data-to-materials'
10+
import removeEmptyMeshes from './common/remove-empty-meshes'
1011

1112
export default {
1213

@@ -30,6 +31,7 @@ export default {
3031

3132
// construct data3d object
3233
let data3d = await getRailingData3d(attributes)
34+
removeEmptyMeshes(data3d.meshes)
3335

3436
// create new one
3537
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/stairs.js

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import generateUvs from '../../../utils/data3d/buffer/get-uvs'
88
import cloneDeep from 'lodash/cloneDeep'
99
import getStairsData3d from '../../../scene/structure/parametric-objects/stairs'
1010
import dataToMaterials from './common/data-to-materials'
11+
import removeEmptyMeshes from './common/remove-empty-meshes'
1112

1213
export default {
1314

@@ -30,6 +31,7 @@ export default {
3031
attributes.materials = dataToMaterials(data)
3132

3233
var data3d = await getStairsData3d(attributes)
34+
removeEmptyMeshes(data3d.meshes)
3335

3436
// create new one
3537
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/wall.js

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import cloneDeep from 'lodash/cloneDeep'
88
import getWallData3d from '../../../scene/structure/parametric-objects/wall'
99
import getMaterial from '../../../scene/structure/parametric-objects/common/get-material.js'
1010
import dataToMaterials from './common/data-to-materials'
11+
import removeEmptyMeshes from './common/remove-empty-meshes'
12+
1113
export default {
1214

1315
schema: getSchema('wall'),
@@ -87,6 +89,7 @@ export default {
8789

8890
// get meshes and materials from el3d modules
8991
let data3d = await getWallData3d(attributes)
92+
removeEmptyMeshes(data3d.meshes)
9093

9194
// create new one
9295
this_.mesh = new THREE.Object3D()

src/aframe/component/architecture-toolkit/window.js

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import updateSchema from './common/update-schema.js'
66
import cloneDeep from 'lodash/cloneDeep'
77
import getWindowData3d from '../../../scene/structure/parametric-objects/window'
88
import dataToMaterials from './common/data-to-materials'
9+
import removeEmptyMeshes from './common/remove-empty-meshes'
910

1011
export default {
1112

@@ -58,6 +59,8 @@ export default {
5859

5960
// construct data3d object
6061
let data3d = await getWindowData3d(attributes, parentAttributes)
62+
removeEmptyMeshes(data3d.meshes)
63+
6164
if (deleteGlass) delete data3d.meshes.glass
6265

6366
// create new one

src/utils/data3d/buffer/get-normals.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var DEBUG = true
1+
var DEBUG = false
22

33
// methods
44

@@ -124,4 +124,4 @@ var getNormalsBuffer = {
124124
smooth: smooth,
125125
}
126126

127-
export default getNormalsBuffer
127+
export default getNormalsBuffer

0 commit comments

Comments
 (0)