Clean up java side
This commit is contained in:
parent
ad95b64b88
commit
2eeb45b1e9
@ -56,15 +56,6 @@ public class FluidSim {
|
|||||||
//Buffers that contain w vector directions to add to the simulation
|
//Buffers that contain w vector directions to add to the simulation
|
||||||
ByteBuffer wAdditionVector;
|
ByteBuffer wAdditionVector;
|
||||||
|
|
||||||
// ByteBuffer x = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer x0 = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer u = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer v = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer w = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer u0 = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer v0 = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
// ByteBuffer w0 = ByteBuffer.allocateDirect(DIM * DIM * DIM * 4);
|
|
||||||
|
|
||||||
//The densities for every voxel for the current frame
|
//The densities for every voxel for the current frame
|
||||||
float[] densityArrayView = new float[DIM * DIM * DIM];
|
float[] densityArrayView = new float[DIM * DIM * DIM];
|
||||||
//Should be set to add water to the current frame
|
//Should be set to add water to the current frame
|
||||||
@ -137,10 +128,20 @@ public class FluidSim {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void simChunks(FluidSim[][][] simArray, int step, float timestep){
|
||||||
|
for(int x = 0; x < simArray.length; x++){
|
||||||
|
for(int y = 0; y < simArray[0].length; y++){
|
||||||
|
for(int z = 0; z < simArray[0][0].length; z++){
|
||||||
|
simArray[x][y][z].simulate(step, timestep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs a frame of the fluid simulation
|
* Runs a frame of the fluid simulation
|
||||||
*/
|
*/
|
||||||
public void simulate(int step, float timestep){
|
private void simulate(int step, float timestep){
|
||||||
|
|
||||||
//
|
//
|
||||||
// Add forces and density here
|
// Add forces and density here
|
||||||
@ -152,30 +153,6 @@ public class FluidSim {
|
|||||||
//
|
//
|
||||||
writeNewStateIntoBuffers();
|
writeNewStateIntoBuffers();
|
||||||
|
|
||||||
// if(x.position() > 0){
|
|
||||||
// x.position(0);
|
|
||||||
// }
|
|
||||||
// if(x0.position() > 0){
|
|
||||||
// x0.position(0);
|
|
||||||
// }
|
|
||||||
// if(u.position() > 0){
|
|
||||||
// u.position(0);
|
|
||||||
// }
|
|
||||||
// if(v.position() > 0){
|
|
||||||
// v.position(0);
|
|
||||||
// }
|
|
||||||
// if(w.position() > 0){
|
|
||||||
// w.position(0);
|
|
||||||
// }
|
|
||||||
// if(u0.position() > 0){
|
|
||||||
// u0.position(0);
|
|
||||||
// }
|
|
||||||
// if(v0.position() > 0){
|
|
||||||
// v0.position(0);
|
|
||||||
// }
|
|
||||||
// if(w0.position() > 0){
|
|
||||||
// w0.position(0);
|
|
||||||
// }
|
|
||||||
simulate(
|
simulate(
|
||||||
DIM,
|
DIM,
|
||||||
0,
|
0,
|
||||||
|
|||||||
@ -21,63 +21,27 @@ public class Main {
|
|||||||
|
|
||||||
|
|
||||||
public static void main(String args[]){
|
public static void main(String args[]){
|
||||||
|
|
||||||
|
int dim = 1;
|
||||||
|
int i = 0;
|
||||||
|
long time = 0;
|
||||||
|
long lastTime = 0;
|
||||||
|
Scanner scan = new Scanner(System.in);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
GLFWContext.init();
|
GLFWContext.init();
|
||||||
|
|
||||||
//init shader program
|
//init shader program
|
||||||
Mesh.initShaderProgram();
|
Mesh.initShaderProgram();
|
||||||
int dim = 1;
|
|
||||||
FluidSim[][][] simArray = new FluidSim[dim][1][1];
|
|
||||||
for(int x = 0; x < simArray.length; x++){
|
|
||||||
for(int y = 0; y < simArray[0].length; y++){
|
|
||||||
for(int z = 0; z < simArray[0][0].length; z++){
|
|
||||||
simArray[x][y][z] = new FluidSim();
|
|
||||||
simArray[x][y][z].setup(new Vector3i(x,y,z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//set sim adjacencies
|
|
||||||
for(int x = 0; x < simArray.length; x++){
|
|
||||||
for(int y = 0; y < simArray[0].length; y++){
|
|
||||||
for(int z = 0; z < simArray[0][0].length; z++){
|
|
||||||
FluidSim current = simArray[x][y][z];
|
|
||||||
|
|
||||||
for(int i = -1; i < 2; i++){
|
|
||||||
for(int j = -1; j < 2; j++){
|
|
||||||
for(int k = -1; k < 2; k++){
|
|
||||||
if(i == j && j == k && k == 0){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(
|
|
||||||
0 <= x + i && x + i < simArray.length &&
|
|
||||||
0 <= y + j && y + j < simArray[0].length &&
|
|
||||||
0 <= z + k && z + k < simArray[0][0].length
|
|
||||||
){
|
|
||||||
current.setNeighbor(i+1,j+1,k+1,simArray[x+i][y+j][z+k]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
FluidSim[][][] simArray = initFluidSim(dim,1,1);
|
||||||
}
|
|
||||||
}
|
Mesh[][][] meshArray = initMeshes(dim,1,1,simArray);
|
||||||
// FluidSim sim = new FluidSim();
|
|
||||||
// sim.setup();
|
|
||||||
Mesh[][][] meshArray = new Mesh[dim][1][1];
|
|
||||||
for(int x = 0; x < simArray.length; x++){
|
|
||||||
for(int y = 0; y < simArray[0].length; y++){
|
|
||||||
for(int z = 0; z < simArray[0][0].length; z++){
|
|
||||||
meshArray[x][y][z] = new Mesh(simArray[x][y][z], new Vector3i(z * 16, y * 16, x * 16));
|
|
||||||
meshArray[x][y][z].meshInitially();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Mesh mesh = new Mesh(sim);
|
|
||||||
// mesh.meshInitially();
|
|
||||||
int i = 0;
|
|
||||||
long time = 0;
|
|
||||||
long lastTime = 0;
|
|
||||||
Scanner scan = new Scanner(System.in);
|
|
||||||
while(true){
|
while(true){
|
||||||
try {
|
try {
|
||||||
TimeUnit.MILLISECONDS.sleep(2);
|
TimeUnit.MILLISECONDS.sleep(2);
|
||||||
@ -88,23 +52,10 @@ public class Main {
|
|||||||
//Transfer data
|
//Transfer data
|
||||||
//
|
//
|
||||||
lastTime = System.currentTimeMillis();
|
lastTime = System.currentTimeMillis();
|
||||||
// for(int x = 0; x < simArray.length; x++){
|
|
||||||
// for(int y = 0; y < simArray[0].length; y++){
|
|
||||||
// for(int z = 0; z < simArray[0][0].length; z++){
|
|
||||||
// simArray[x][y][z].transfer();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
//
|
||||||
//Simulate
|
//Simulate
|
||||||
//
|
//
|
||||||
for(int x = 0; x < simArray.length; x++){
|
FluidSim.simChunks(simArray,i,0.001f);
|
||||||
for(int y = 0; y < simArray[0].length; y++){
|
|
||||||
for(int z = 0; z < simArray[0][0].length; z++){
|
|
||||||
simArray[x][y][z].simulate(i, 0.001f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
time = time + (System.currentTimeMillis() - lastTime);
|
time = time + (System.currentTimeMillis() - lastTime);
|
||||||
//
|
//
|
||||||
//Remesh
|
//Remesh
|
||||||
@ -131,4 +82,56 @@ public class Main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static FluidSim[][][] initFluidSim(int dimx, int dimy, int dimz){
|
||||||
|
FluidSim[][][] simArray = new FluidSim[dimx][dimy][dimz];
|
||||||
|
for(int x = 0; x < simArray.length; x++){
|
||||||
|
for(int y = 0; y < simArray[0].length; y++){
|
||||||
|
for(int z = 0; z < simArray[0][0].length; z++){
|
||||||
|
simArray[x][y][z] = new FluidSim();
|
||||||
|
simArray[x][y][z].setup(new Vector3i(x,y,z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//set sim adjacencies
|
||||||
|
for(int x = 0; x < simArray.length; x++){
|
||||||
|
for(int y = 0; y < simArray[0].length; y++){
|
||||||
|
for(int z = 0; z < simArray[0][0].length; z++){
|
||||||
|
FluidSim current = simArray[x][y][z];
|
||||||
|
|
||||||
|
for(int i = -1; i < 2; i++){
|
||||||
|
for(int j = -1; j < 2; j++){
|
||||||
|
for(int k = -1; k < 2; k++){
|
||||||
|
if(i == j && j == k && k == 0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(
|
||||||
|
0 <= x + i && x + i < simArray.length &&
|
||||||
|
0 <= y + j && y + j < simArray[0].length &&
|
||||||
|
0 <= z + k && z + k < simArray[0][0].length
|
||||||
|
){
|
||||||
|
current.setNeighbor(i+1,j+1,k+1,simArray[x+i][y+j][z+k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return simArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Mesh[][][] initMeshes(int dimx, int dimy, int dimz, FluidSim[][][] simArray){
|
||||||
|
Mesh[][][] meshArray = new Mesh[dimx][dimy][dimz];
|
||||||
|
for(int x = 0; x < simArray.length; x++){
|
||||||
|
for(int y = 0; y < simArray[0].length; y++){
|
||||||
|
for(int z = 0; z < simArray[0][0].length; z++){
|
||||||
|
meshArray[x][y][z] = new Mesh(simArray[x][y][z], new Vector3i(z * 16, y * 16, x * 16));
|
||||||
|
meshArray[x][y][z].meshInitially();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return meshArray;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user