Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. public static Model createCardModel(float width, float height, float thickness, TextureRegion backImage, TextureRegion faceImage) {
  2.  
  3. float dx = width / 2;
  4. float dy = height / 2;
  5. float dz = thickness / 2;
  6.  
  7. ColorAttribute cAttr = ColorAttribute.createDiffuse(Color.BLACK);
  8. TextureAttribute backAttr = TextureAttribute.createDiffuse(backImage);
  9. TextureAttribute faceAttr = TextureAttribute.createDiffuse(faceImage);
  10.  
  11. Material colorMat = new Material(cAttr);
  12. Material backMat = new Material(backAttr);
  13. Material faceMat = new Material(faceAttr);
  14.  
  15. ModelBuilder modelBuilder = new ModelBuilder();
  16.  
  17. int attr = VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal | VertexAttributes.Usage.TextureCoordinates;
  18. modelBuilder.begin();
  19. MeshPartBuilder mpb = modelBuilder.part("box", GL20.GL_TRIANGLES, attr, colorMat);
  20. mpb.rect(-dx,-dy,-dz, -dx,dy,-dz, dx,dy,-dz, dx,-dy,-dz, 0,0,-1);
  21. modelBuilder.part("front", GL20.GL_TRIANGLES, attr, faceMat)
  22. .rect(dx,-dy,-dz, -dx,-dy,-dz, -dx,dy,-dz, dx,dy,-dz, 0,0,-1);
  23. modelBuilder.part("back", GL20.GL_TRIANGLES, attr, backMat)
  24. .rect(-dx,-dy,dz, dx,-dy,dz, dx,dy,dz, -dx,dy,dz,0,0,1);
  25. modelBuilder.part("bottom", GL20.GL_TRIANGLES, attr, colorMat)
  26. .rect(-dx,-dy,dz, -dx,-dy,-dz, dx,-dy,-dz, dx,-dy,dz, 0,-1,0);
  27. modelBuilder.part("top", GL20.GL_TRIANGLES, attr, colorMat)
  28. .rect(-dx,dy,-dz, -dx,dy,dz, dx,dy,dz, dx,dy,-dz, 0,1,0);
  29. modelBuilder.part("left", GL20.GL_TRIANGLES, attr, colorMat)
  30. .rect(-dx,-dy,dz, -dx,dy,dz, -dx,dy,-dz, -dx,-dy,-dz, -1,0,0);
  31. modelBuilder.part("right", GL20.GL_TRIANGLES, attr, colorMat)
  32. .rect(dx,-dy,-dz, dx,dy,-dz, dx,dy,dz, dx,-dy,dz, 1,0,0);
  33. mpb.setUVRange(backImage);
  34.  
  35. Model model = modelBuilder.end();
  36. return model;
  37. }
  38.  
  39.  
  40.  
  41. public class Model3d {
  42.  
  43. private ModelBatch modelBatch;
  44. private Environment environment;
  45. private PerspectiveCamera camera = new PerspectiveCamera();
  46.  
  47. private ArrayList<AbstractGameCard> cards = new ArrayList();
  48.  
  49. public Model3d(Viewport viewport) {
  50. modelBatch = new ModelBatch();
  51.  
  52. environment = new Environment();
  53. environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
  54. environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 0, 20, 20));
  55.  
  56. //camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
  57. camera = new PerspectiveCamera(45, viewport.getWorldWidth(), viewport.getWorldHeight());
  58. camera.position.set(0, 0, 200);
  59. camera.lookAt(0, 0, 0);
  60. camera.near = 1f;
  61. camera.far = 300f;
  62. camera.update();
  63. }
  64.  
  65. public void addReferenceToCard(AbstractGameCard card) {
  66. cards.add(card);
  67. }
  68.  
  69. public void render() {
  70. //Нужно проверять карты на существование и удалять, если карта удалена
  71. modelBatch.begin(camera);
  72. for(AbstractGameCard card : cards) {
  73. if(card.isModelRendering()) { //Это просто булева, отвечающая за то, нужно ли выводить 3д модель или нет.
  74. modelBatch.render(card.getInstance(), environment);
  75. }
  76. }
  77. modelBatch.end();
  78. }
  79.  
  80. public void dispose() {
  81. modelBatch.dispose();
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement