Advertisement
Architector_4

Java/Processing 3D test

Oct 13th, 2018
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.04 KB | None | 0 0
  1. //OYE! Random pastebin explorers!
  2. //This is a Processing sketch: processing.org
  3. //Basically Java, but with more stuff.
  4. //Yeah sure, take this code and do whatever you want with it. To run it you only need Processing, so yeah, go ahead. lol
  5.  
  6.  
  7.  
  8.  
  9. import com.jogamp.newt.opengl.GLWindow;
  10. GLWindow r;
  11. PImage test;
  12. float SpeedCoef=16.6;
  13. float SpeedCoefSmooth=16.6;
  14. int PrevMillis=0;
  15. void box(float x,float y,float z,float sx,float sy,float sz){
  16.  pushMatrix();
  17.  translate(x+sx/2,y+sy/2,z-sz/2);
  18.  box(sx,sy,sz);
  19.  popMatrix();
  20. }
  21. void sphere(float x,float y,float z,float s){
  22.  pushMatrix();
  23.  translate(x+s/2,y+s/2,z+s/2);
  24.  sphere(s);
  25.  popMatrix();
  26. }
  27.  
  28. float rx=0,ry=0,rz=0;
  29. float x=0,y=0,z=0;
  30.  
  31. float xx=55,yy=586,zz=318,angle=34,angle2=43;
  32. //float xx=50,yy=50,zz,angle,angle2;
  33. float Speed=1;
  34. float Sensitivity=0.3;
  35. void setup(){
  36.   r=(GLWindow)surface.getNative();
  37.   size(640,480,P3D);
  38.   surface.setResizable(true);
  39. }
  40.  
  41. void draw(){
  42.   background(0);
  43.   SpeedCoef=min((millis()-PrevMillis)/(100.0/6),5);
  44.   PrevMillis=millis();  
  45.   SpeedCoefSmooth+=(SpeedCoef-SpeedCoefSmooth)*0.1;
  46.  
  47.   //rx+=(key("uparrow")-key("downarrow"))/360.0*3.14*SpeedCoef;
  48.   //ry+=(key("rightarrow")-key("leftarrow"))/360.0*3.14*SpeedCoef;
  49.   //rotateX(rx);
  50.   //rotateY(ry);
  51.  
  52. //  x+=(key("a")-key("d"))*SpeedCoef;
  53. //  y+=(key("space")-key("ctrl"))*SpeedCoef;
  54. //  z+=(key("w")-key("s"))*SpeedCoef;
  55. //  translate(x,y,z);
  56.  
  57.  
  58.  
  59.  
  60.   println("gg",key("space")-key("ctrl"),angle,angle2,rotX(0,0,angle),rotX(rotX(0,0,angle),rotX(0,key("ctrl")-key("space"),angle),angle2));
  61.   angle+=(key("rightarrow")-key("leftarrow"))*SpeedCoef*PI;
  62.   angle2+=(key("downarrow")-key("uparrow"))*SpeedCoef*PI;
  63.   if(m2==1&tm2==0){angle+=(mouseX-width/2)*Sensitivity; angle2+=(mouseY-height/2)*Sensitivity;}
  64.   angle2=clamp(angle2,-89,89);
  65.  
  66.   angle%=360;
  67.  
  68.   Speed=(1+key("shift"))/(key("alt")+1);
  69.   xx+=rotX(rotX(key("d")-key("a"),key("s")-key("w"),angle),rotX(sign(angle2)*(key("a")-key("d")),key("space")-key("ctrl"),angle),angle2)*SpeedCoef*Speed;
  70.   yy+=rotX(rotY(key("d")-key("a"),key("s")-key("w"),angle),rotY(sign(angle2)*(key("a")-key("d")),key("space")-key("ctrl"),angle),angle2)*SpeedCoef*Speed;
  71.   zz+=rotX(key("space")-key("ctrl"),key("w")-key("s"),angle2)*SpeedCoef*Speed;
  72.  
  73.   println(xx,yy,zz,angle,angle2);
  74.   camera(xx,yy,zz,xx+rotX(rotX(0,-1,angle),0,angle2)*10,yy+rotX(rotY(0,-1,angle),0,angle2)*10,zz+rotX(0,1,angle2)*10,0,0,-1);
  75.   ambientLight(64,64,64);
  76.   directionalLight(255,255,255,0,0,-1);
  77.  
  78.  
  79.   noStroke();
  80.   sphere(xx,yy,zz,10);
  81.   sphere(xx+rotX(rotX(0,-1,angle),0,angle2)*10,yy+rotX(rotY(0,-1,angle),0,angle2)*10,zz+rotX(0,1,angle2)*10,5);
  82.  
  83.   fill(64,128,32);
  84.   rect(0,0,width,height);
  85.   fill(255);
  86.  
  87. //  if(m1==1){texture(test);}
  88.  
  89.   //draw 3D stuff now
  90.   stroke(0);
  91.   box(360,240,0,20,20,-50);
  92.  
  93.  
  94.  
  95.  
  96.   camera(); noLights();
  97.   hint(DISABLE_DEPTH_TEST);
  98.  
  99.   //draw 2D stuff now
  100.   fill(0,128); noStroke();
  101.   rect(0,0,30,20);
  102.   fill(255);
  103.   text(floor(frameRate),0,15);
  104.   stroke(0);
  105.   button(40,40,50,20,"Hey!",12,false);
  106.  
  107.  
  108.  
  109.  
  110.   hint(ENABLE_DEPTH_TEST);
  111.   ScrollVelocity*=0.9;
  112.   tm1=tm2=tmc=mwup=mwdown=0;
  113.   if(m2==1){
  114.   r.setPointerVisible(false);
  115.   r.warpPointer(width/2,height/2);
  116.   r.confinePointer(true);
  117.   }else{r.confinePointer(false); r.setPointerVisible(true);}
  118.  
  119. }
  120.  
  121. float clipx1=0,clipx2=0,clipy1=0,clipy2=0;
  122.  
  123. void clip2(float x1, float y1, float sizex, float sizey){
  124.   clip(x1,y1,sizex,sizey);
  125.   clipx1=x1; clipx2=x1+sizex; clipy1=y1; clipy2=y1+sizey;
  126.  
  127. }
  128. void noclip2(){
  129.   noClip();
  130.   clipx1=clipx2=clipy1=clipy2=0;
  131.  
  132.  
  133. }
  134. boolean inclip(float x, float y){
  135.  
  136.   if(x>clipx1&x<clipx2&y>clipy1&y<clipy2|clipx1==clipx2){return true;}
  137.   return false;
  138. }
  139.  
  140.  
  141. boolean button(float x, float y, float sizex, float sizey,String text,float TextSize,boolean hold){
  142. return button(x,y,sizex,sizey,text,TextSize,hold,255);}
  143.  
  144. boolean button(float x, float y, float sizex, float sizey,String text,float TextSize,boolean hold,int a){
  145. return button(x,y,sizex,sizey,text,TextSize,hold,128,120,64,a);}
  146.  
  147. boolean button(float x, float y, float sizex, float sizey,String text,float TextSize,boolean hold,int r,int g,int b){
  148. return button(x,y,sizex,sizey,text,TextSize,hold,r,g,b,255);}
  149.  
  150. boolean button(float x, float y, float sizex, float sizey,String text,float TextSize,boolean hold,int r,int g,int b,int a){
  151.   sizex-=1; sizey-=1;
  152.   boolean Pressed=false;
  153.   if(ButtonsWorking){stroke(0);}else{noStroke();}
  154.   if(mouseX>x&mouseX<x+sizex&mouseY>y&mouseY<y+sizey&ButtonsWorking&inclip(mouseX,mouseY)){
  155.   fill(r+40,g+40,b+40,a);
  156.     if(mwup!=0|mwdown!=0){ButtonScrolled=true;}
  157.     if((tm1==1|(ButtonPressed&m1==1))&(1-int(ButtonName.equals(text)|ButtonName.equals("")))*int(ButtonPressed)==0
  158.     &((1-tm1)*int(!hold))==0){//if(!hold){m1=0;}
  159.     ButtonPressed=true; Pressed=true; fill(r-32,g-32,b-32,255); ButtonName=text;}
  160.     if(tm2==1){Button2Pressed=true;}
  161.  
  162.   }else{
  163.   fill(r,g,b,a);}
  164.   rect(x,y,sizex,sizey);
  165.   fill(255);
  166.   textSize(12);
  167.   textSize(max(min(sizex/textWidth(text)*12,sizey*0.6,TextSize)-1,0.1));
  168.   textAlign(CENTER,CENTER);
  169.   text(text,x+sizex/2,y+sizey/2);
  170.   textSize(12);
  171.   textAlign(LEFT,DOWN);
  172. return Pressed;}
  173.  
  174.  
  175.  
  176.  
  177. float clamp(float in,float min,float max){
  178.   if(in!=in){return max(0,min);}
  179.  return max(min(in,max),min);
  180. }
  181.  
  182.  
  183.  
  184. int sign(float in){
  185.   if(in<0){return -1;}
  186.   if(in>0){return 1;}
  187.   return 0;
  188. }
  189.  
  190.  
  191. float angle(float x, float y){
  192.   if(x==-0){x=0;}
  193.   if(y==-0){y=0;}
  194. return y!=0?(x<0?(180*sign(y)-(atan(y/abs(x))/(PI)*180)):atan(y/abs(x))/(PI)*180):sign(x)<0?(180):0;
  195. //return y!=0?(-sign(x)*(180*sign(y)-(atan(y/abs(x))/(PI)*180))/(PI)*180):sign(x)<0?(180):0;
  196. }
  197. float rotX(float x, float y, float degrees){
  198.   return sqrt(x*x+y*y)*cos((angle(x,y)+degrees)/180*PI);
  199. }
  200.  
  201. float rotY(float x, float y, float degrees){
  202.   return sqrt(x*x+y*y)*sin((angle(x,y)+degrees)/180*PI);
  203. }
  204.  
  205. int m1=0; int m2=0; int mc=0; int mwup=0; int mwdown=0;
  206. int tm1=0; int tm2=0; int tmc=0;
  207. float ScrollVelocity=0;
  208. boolean ButtonPressed=false;
  209. boolean SliderPressed=false;
  210. boolean Button2Pressed=false;
  211. boolean ButtonsWorking=true;
  212. boolean ButtonScrolled=false;
  213. String ButtonName="";
  214. char lowercase(char in){
  215. return str(in).toLowerCase().charAt(0);
  216. }
  217. char uppercase(char in){
  218. return str(in).toUpperCase().charAt(0);
  219. }
  220.  
  221. int key(String name){
  222.  try{return Keys.getInt(1,name);}catch(Exception e){Keys.addColumn(name); return 0;}
  223. }
  224.  
  225. void mouseWheel(MouseEvent event) {
  226.  if(event.getCount()==1){mwdown++; ScrollVelocity+=7;}
  227.  if(event.getCount()==-1){mwup++; ScrollVelocity-=7;}
  228. }
  229. void mouseReleased(){
  230. if(mouseButton==LEFT){m1=0; ButtonPressed=false; SliderPressed=false; ButtonName="";}
  231. if(mouseButton==CENTER){mc=0;}
  232. if(mouseButton==RIGHT){m2=0; Button2Pressed=false; SliderPressed=false;}
  233. //mouseStuff();
  234. }
  235. void mousePressed(){
  236. if(mouseButton==LEFT){m1=1; tm1=1;}
  237. if(mouseButton==CENTER){mc=1; tmc=1;}
  238. if(mouseButton==RIGHT){m2=1; tm2=1;}
  239. TextField="";
  240. TextFieldUsed=false;
  241. }
  242. String codeKey(int in,char key){
  243.  if(in==16&int(key)==0){return "pgup";}
  244.  if(in==SHIFT){return "shift";}
  245.  if(in==ESC){return "escape";}
  246.  if(in==CONTROL){return "ctrl";}
  247.  if(in==0){return "weirdkey";}
  248.  if(in==2){return "home";}
  249.  if(in==3){return "end";}
  250.  if(in==5){return "printscreen";}
  251.  if(in==8){return "backspace";}
  252.  if(in==9){return "tab";}
  253.  if(in==10){return "enter";}
  254.  if(in==11){return "pgdown";}
  255.  if(in==16){return "pgup";}
  256.  if(in==18){return "alt";}
  257.  if(in==20){return "capslock";}
  258.  if(in==32){return "space";}
  259.  if(in==37){return "leftarrow";}
  260.  if(in==38){return "uparrow";}
  261.  if(in==39){return "rightarrow";}
  262.  if(in==40){return "downarrow";}
  263.  if(in==19|in==148){return "pause";}
  264.  if(in==192|in==96){return "tidle";}
  265.  if(in==97){return "f1";}
  266.  if(in==98){return "f2";}
  267.  if(in==99){return "f3";}
  268.  if(in==100){return "f4";}
  269.  if(in==101){return "f5";}
  270.  if(in==102){return "f6";}
  271.  if(in==103){return "f7";}
  272.  if(in==104){return "f8";}
  273.  if(in==105){return "f9";}
  274.  if(in==106){return "f10";}
  275.  if(in==107){return "f11";}
  276.  if(in==108){return "f12";}
  277.  if(in==128){return "numpad0";}
  278.  if(in==129){return "numpad1";}
  279.  if(in==130){return "numpad2";}
  280.  if(in==131){return "numpad3";}
  281.  if(in==132){return "numpad4";}
  282.  if(in==133){return "numpad5";}
  283.  if(in==134){return "numpad6";}
  284.  if(in==135){return "numpad7";}
  285.  if(in==136){return "numpad8";}
  286.  if(in==137){return "numpad9";}
  287.  if(in==138){return "numpad.";}
  288.  if(in==139){return "numpad+";}
  289.  if(in==140){return "numpad-";}
  290.  if(in==141){return "numpad*";}
  291.  if(in==142){return "numpad/";}
  292.  if(in==147){return "delete";}
  293.  if(in==157){return "windows";}
  294.  return str(lowercase(char(in)));
  295. }
  296.  
  297.  
  298. String TextField="";
  299. boolean TextFieldUsed=false;
  300. String TextFieldText="";
  301. Table Keys=new Table();
  302.  
  303.  
  304. void keyPressed(){
  305. //if(codeKey(keyCode,key).equals("shift")){concmd("textshift 1");}
  306. if(TextFieldUsed){
  307.   if(codeKey(keyCode,key).length()==1){
  308.   TextFieldText+=key;
  309.   }else{
  310.   try{if(codeKey(keyCode,key).equals("backspace")){TextFieldText=TextFieldText.substring(0,TextFieldText.length()-1);}}catch(Exception e){TextFieldText="";}
  311.   if(codeKey(keyCode,key).equals("space")){TextFieldText+=" ";}
  312.   }
  313.  
  314. }else{
  315. try{Keys.setInt(1,codeKey(keyCode,key),1);}catch(Exception e){ Keys.addColumn(codeKey(keyCode,key)); Keys.setInt(1,codeKey(keyCode,key),1); println("KEY ",keyCode,"(",codeKey(keyCode,key),") ADDED!");}
  316. try{Keys.setInt(1,"t"+codeKey(keyCode,key),1);}catch(Exception e){ Keys.addColumn("t"+codeKey(keyCode,key)); Keys.setInt(1,"t"+codeKey(keyCode,key),1); println("KEY ",keyCode,"(","t"+codeKey(keyCode,key),") ADDED!");}
  317. try{Keys.setInt(1,"tt"+codeKey(keyCode,key),1-Keys.getInt(1,"tt"+codeKey(keyCode,key)));}catch(Exception e){ Keys.addColumn("tt"+codeKey(keyCode,key)); Keys.setInt(1,"tt"+codeKey(keyCode,key),1); println("KEY ",keyCode,"(","tt"+codeKey(keyCode,key),") ADDED!");}
  318. }    
  319.  
  320. //if(codeKey(keyCode,key).equals("escape")){key=char(0);}
  321. }
  322. void keyReleased(){
  323.  
  324. try{Keys.setInt(1,codeKey(keyCode,key),0);}catch(Exception e){ Keys.addColumn(codeKey(keyCode,key)); Keys.setInt(1,codeKey(keyCode,key),0); println("KEY ",keyCode,"(",codeKey(keyCode,key),") ADDED!");}
  325.  
  326.  
  327. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement