java - 在模型上重复纹理

标签 java opengl 3d libgdx

我正在创建一个小游戏,你在迷宫中。迷宫以二维数组组织,描述x和z位置以及 block 类型。所以它是基于图 block 的。假设每个 block 是1 m3。现在我的角色是 2m 高,迷宫应该是 4m 高。因此,如果该瓷砖上有墙,我会相互添加 4 个方 block 。当然,即使使用视锥体和背面剔除,这也会对 100 * 100 米/图 block 迷宫产生巨大的性能影响。由于这是我的第一个 3D 游戏,我希望保持简单,并且不想使用高级剔除技术(八叉树或其他技术:P)。因此,我尝试创建 1*4*1 block 而不是 1*1*1 并将它们作为 Walls 添加到我的世界中。它工作得很好,性能再次完美(60 FPS),但是纹理(64*64px)被拉伸(stretch),看起来真的很难看。

所以我的问题是:

  1. 是否可以每米重复纹理,而不是 拉伸(stretch)吗?
  2. 或者我需要修改纹理才能拥有它 4 次 一样高?
  3. 或者还有更好的解决方案吗?

编辑:我发现,Texture具有TextureWrap模式。我将其设置为 TextureWrap.Repeat,但我无法在 Texture 上设置 UV。如果您要从 Texture 创建 Sprite,您可以轻松地将它们设置为 4 以重复 Texture 4 次。但我无法将 Sprite 添加到我的 Model 中,只能添加 Texture 。有没有办法重复这些Texture

最佳答案

如果有人在使用 ModelBuilder.createRect 方法时更改 UV 时遇到问题,那么这可能会有所帮助:

...
Model rect = modelBuilder.createRect ...

Matrix3 mat = new Matrix3();
mat.scl(2);
rect.meshes.get(0).transformUV(mat);

instance = new ModelInstance(rect); 
...

这样你就会得到 2x2 纹理重复。 (我浪费了一些时间寻找这个解决方案。我用它来重复大地面上的草纹理)

关于java - 在模型上重复纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908241/

相关文章:

java - java中的碰撞在基于网格的碰撞系统中检测得不够快

3d - 在meshlab中着色网格边缘

C++/OpenGL | "undefined reference to ` _imp__ChoosePixelFormat@ 8`"等等

c++ - OpenGL 立方体贴图 : Writing to mipmap

algorithm - 是否有将 2D 视频转换为 3D 视频的算法?

algorithm - 使用(部分)统一网格表示减少3D A *寻路中的节点数量

java - PDF-A 文件验证

java - 通过获取当前时间进行SQL查询

javascript - 使用脚本删除旧的 SonarQube 项目

c++ - 我正在努力理解着色器中的某些东西