Many blocks.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
origin
sigonasr2, Sig, Sigo 3 years ago
parent 7aaa75d5a5
commit c39412e144
  1. 10
      src/sig/Block.java
  2. 13
      src/sig/Panel.java
  3. 13
      src/sig/SigRenderer.java

@ -0,0 +1,10 @@
package sig;
public class Block {
Vector pos;
Mesh block;
Block(Vector pos,Mesh block) {
this.pos=pos;
this.block=block;
}
}

@ -103,10 +103,11 @@ public class Panel extends JPanel implements Runnable {
Matrix matCamera = Matrix.PointAt(SigRenderer.vCamera, vTarget, vUp);
Matrix matView = Matrix.QuickInverse(matCamera);
for (Triangle t : SigRenderer.cube.triangles) {
for (Block b : SigRenderer.blocks) {
for (Triangle t : b.block.triangles) {
Triangle triProjected = new Triangle(),triTransformed=new Triangle(),triViewed=new Triangle();
//matWorld = Matrix.MakeTranslation(10,0,0);
matWorld = Matrix.MakeTranslation(b.pos.x,b.pos.y,b.pos.z);
triTransformed.A = Matrix.MultiplyVector(matWorld,t.A);
triTransformed.B = Matrix.MultiplyVector(matWorld,t.B);
@ -131,11 +132,14 @@ public class Panel extends JPanel implements Runnable {
//System.out.println(-Vector.dotProduct(normal,Vector.normalize(cameraRay)));
//float dp = Math.max(0.1f,Math.min(1,-1/Vector.dotProduct(normal,cameraRay)));
Vector center = Vector.divide(Vector.add(triTransformed.A,Vector.add(triTransformed.B,triTransformed.C)),3);
/*Vector center = Vector.divide(Vector.add(triTransformed.A,Vector.add(triTransformed.B,triTransformed.C)),3);
Vector cameraRay2 = Vector.subtract(center,SigRenderer.vCamera);
float dp = Math.max(0.1f,Math.min(1,(1f/((cameraRay2.x-center.x)*(cameraRay2.x-center.x)+
(cameraRay2.y-center.y)*(cameraRay2.y-center.y)+
(cameraRay2.z-center.z)*(cameraRay2.z-center.z))*4)));
(cameraRay2.z-center.z)*(cameraRay2.z-center.z))*4)));*/
float dp = Math.max(0.1f,Math.min(1,(1f/((b.pos.x-SigRenderer.vCamera.x)+
(b.pos.y-SigRenderer.vCamera.y)*(b.pos.y-SigRenderer.vCamera.y)+
(b.pos.z-SigRenderer.vCamera.z)*(b.pos.z-SigRenderer.vCamera.z))*4)));
triViewed.A = Matrix.MultiplyVector(matView,triTransformed.A);
triViewed.B = Matrix.MultiplyVector(matView,triTransformed.B);
@ -200,6 +204,7 @@ public class Panel extends JPanel implements Runnable {
}
}
}
}
/*Collections.sort(accumulatedTris, new Comparator<Triangle>() {
@Override

@ -10,6 +10,7 @@ import java.awt.event.MouseMotionListener;
import java.io.File;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.awt.Toolkit;
@ -19,7 +20,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene
public static boolean WIREFRAME = false;
public static Mesh cube;
public static List<Block> blocks = new ArrayList<Block>();
public static int SCREEN_WIDTH=1280;
public static int SCREEN_HEIGHT=720;
public final static long TIMEPERTICK = 16666667l;
@ -84,7 +85,15 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene
SigRenderer(JFrame f) {
//cube = new Mesh(OBJReader.ReadOBJFile("teapot.obj",false));
cube = new Mesh("cube.obj","dirt.png");
Mesh dirtCube = new Mesh("cube.obj","dirt.png");
for (int x=0;x<32;x++) {
for (int y=0;y<32;y++) {
blocks.add(new Block(
new Vector(x,0,y),
dirtCube
));
}
}
Panel p = new Panel();

Loading…
Cancel
Save