rebuild everything works
This commit is contained in:
parent
594c6ac8dc
commit
c101c2f2f8
23
app.js
23
app.js
@ -7,26 +7,34 @@ import Region from "./region.js";
|
||||
|
||||
let voxels = [];
|
||||
voxels[Region.I(0, 0, 0)] = true;
|
||||
voxels[Region.I(1, 0, 0)] = true;
|
||||
voxels[Region.I(1, 1, 0)] = true;
|
||||
voxels[Region.I(1, 2, 0)] = true;
|
||||
|
||||
|
||||
let surfaceCubeGeometry = new T.BufferGeometry();
|
||||
surfaceCubeGeometry.setAttribute("position", new T.BufferAttribute(new Float32Array(), 3));
|
||||
let surfaceCubeObject = new T.Mesh(
|
||||
surfaceCubeGeometry,
|
||||
new T.MeshPhongMaterial({color:0x666666, wireframe:false, flatShading:true, side:T.DoubleSide})
|
||||
new T.MeshPhongMaterial({color:0x666666, wireframe:false, flatShading:false, side:T.BackSide})
|
||||
);
|
||||
|
||||
|
||||
let surfaceCubeNormalHelper;
|
||||
|
||||
let rebuildSurface = inVoxels =>
|
||||
{
|
||||
let { pos, ind } = Region.Surface(inVoxels);
|
||||
|
||||
surfaceCubeGeometry.setAttribute("position", new T.BufferAttribute(pos, 3));
|
||||
surfaceCubeGeometry.setIndex(ind);
|
||||
let surfaceCubePositions = new T.BufferAttribute(pos, 3);
|
||||
surfaceCubePositions.setUsage( T.DynamicDrawUsage );
|
||||
|
||||
surfaceCubeGeometry.dispose();
|
||||
surfaceCubeGeometry = new T.BufferGeometry();
|
||||
surfaceCubeGeometry.setAttribute("position", surfaceCubePositions);
|
||||
surfaceCubeGeometry.setIndex(ind);
|
||||
surfaceCubeGeometry.computeVertexNormals();
|
||||
if(surfaceCubeNormalHelper) surfaceCubeNormalHelper.update();
|
||||
surfaceCubeObject.geometry = surfaceCubeGeometry;
|
||||
|
||||
};
|
||||
rebuildSurface(voxels);
|
||||
|
||||
@ -50,7 +58,7 @@ Scene({
|
||||
|
||||
inScene.add(surfaceCubeObject);
|
||||
|
||||
inScene.add(new T.GridHelper(10, 10));
|
||||
//inScene.add(new T.GridHelper(10, 10));
|
||||
inScene.add(new T.AxesHelper( 5 ));
|
||||
|
||||
inScene.add( hitHelper );
|
||||
@ -76,6 +84,9 @@ Scene({
|
||||
index = Region.I(Math.floor(hit.point.x), Math.floor(hit.point.y), Math.floor(hit.point.z));
|
||||
voxels[index] = true;
|
||||
rebuildSurface(voxels);
|
||||
inScene.remove(surfaceCubeNormalHelper);
|
||||
surfaceCubeNormalHelper = new VertexNormalsHelper( surfaceCubeObject, -0.2 );
|
||||
inScene.add(surfaceCubeNormalHelper);
|
||||
hitHelper.position.set(hit.point.x, hit.point.y, hit.point.z);
|
||||
console.log(index, hit);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user