3D 游戏的 Libgdx 渲染层

2024-04-19

在我的第一个 3D 游戏中,我现在想要渲染地板,它实际上是一个平面(不是 libgdxPlane) on y = 0.

我想添加一个Texture到它,这样我就可以在每个级别有不同的楼层。

现在我的问题是:创建和渲染这种纹理地板的最佳方法是什么?

我考虑过使用基本的Block Models用做的ModelBuilder然后添加了一个Texture,但因为我只能看到 6 个 2d 面孔中的 1 个Texture就足够了,所以我想了一个Plane.

我可以添加一个Texture to a Plane,因为它是 3D 房间中的无限脸?我当时想到的最后一件事是Decals.

Are Decal是我要找的吗?我该如何使用它们?或者您还有其他解决方案吗?

任何教程或其他帮助都会很棒。

Thanks


首先关于贴花,贴花就像精灵,但在 3d 坐标中,像这样使用它:

私人贴花贴花; 私人DecalBatch 贴花Batch;

在 show() 或 create() 中

decalBatch = new DecalBatch();
CameraGroupStrategy cameraGroupStrategy = new CameraGroupStrategy(camera);
decal = Decal.newDecal(textureRegion, true);
decal.setPosition(5, 8, 1);
decal.setScale(0.02f);
decalBatch.setGroupStrategy(cameraGroupStrategy);

在渲染()中

//Add all your decals then flush()
decalBatch.add(decal);
decalBatch.flush();

还可以使用 decalBatch.dispose() 进行处理;

请注意,将来贴花将成为 3d 的一部分,我个人不鼓励您使用贴花,就像我自己使用 3d 平面一样,我看到了一些问题,要像这样使用 3d 平面,我在这里粘贴一些代码

private Model createPlaneModel(final float width, final float height, final Material material, 
            final float u1, final float v1, final float u2, final float v2) {

modelBuilder.begin();
MeshPartBuilder bPartBuilder = modelBuilder.part("rect", 
GL10.GL_TRIANGLES, Usage.Position | Usage.Normal | Usage.TextureCoordinates, 
material);
//NOTE ON TEXTURE REGION, MAY FILL OTHER REGIONS, USE GET region.getU() and so on
bPartBuilder.setUVRange(u1, v1, u2, v2);
        bPartBuilder.rect(
                -(width*0.5f), -(height*0.5f), 0, 
                (width*0.5f), -(height*0.5f), 0, 
                (width*0.5f), (height*0.5f), 0, 
                -(width*0.5f), (height*0.5f), 0,
                0, 0, -1);


        return (modelBuilder.end());
    }

纹理可以作为材质的属性添加

material.set(new TextureAttribute(TextureAttribute.Diffuse, texture)

对于具有 alpha 的透明平面,添加到其他属性

attributes.add( new BlendingAttribute(color.getFloat(3)));          
attributes.add( new FloatAttribute(FloatAttribute.AlphaTest, 0.5f));

material.set(attributes);

初始化ModelInstance以获取返回的模型

modelInstance = new ModelInstance(createPlaneModel(...))

使用 ModelBatch 对象在 render() 中渲染

modelBatch.render(modelInstance );

也请参阅这些链接。

这是我对平面与贴花的基准

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D 游戏的 Libgdx 渲染层 的相关文章

  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 透视变换矩阵的计算

    给定 3D 空间中的一个点 如何计算齐次坐标中的矩阵 将该点投影到平面上z d 其中原点是投影中心 好吧 让我们尝试解决这个问题 扩展伊曼纽尔的答案 Assuming如果您的视图向量直接沿着 Z 轴 则所有尺寸都必须按视图平面距离的比例进行
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 用于测试 Schema.org 标记的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道测试 Schema org 的好工具 http schema org http schema org 标记 Google Rich
  • 使用 Excel 进行地址、字符串操作

    我目前正在对城市地址上的一个非常大的数据源进行一些工作 其中数据看起来像这样 source 不 174 史密斯街 174 号 5 楼 史密斯街 174 号 我使用了一个函数来删除在extendoffice 上显示的重复项 https www
  • 对 matplotlib 图中两点之间的区域进行阴影处理

    如何在图中的两点之间添加阴影区域绘图库 http matplotlib org index html plot 在示例中绘图库 http matplotlib org index html下面的绘图中 我使用手动添加了阴影黄色区域Skitc
  • 如何访问我的开发人员创建的 EC2?

    我的开发人员在 AWS 上创建了一个 EC2 实例 我希望能够通过我自己的仪表板访问它 我所做的是 作为 root 用户 我为我和他创建了一个 IAM 帐户 并将我们俩分配到一个名为 PowerUsers 的组 我创建了一个组织单位并将他的
  • 使用javascript对堆栈元素进行排序

    我试图理解使用递归对堆栈元素进行排序http www geeksforgeeks org sort a stack using recursion http www geeksforgeeks org sort a stack using
  • 替代使用跨度? [复制]

    这个问题在这里已经有答案了 这是一个例子 span Hello span span world span span this span span is span span a span span sentence span 基本上 我有一个
  • 如何使用 WndProc 作为类函数[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个包含 WndProc 的类 但出现错误 Error 2 error C2440 cannot convert from LRESULT stdcall Client HWND UINT WPAR
  • 如何在 WPF 应用程序中捆绑 View、ViewModel 和 DataTemplate 以便于重用?

    情况 我想创建一个由 ViewModel 驱动的灵活应用程序 基本流程是这样的 设计主ViewModel 创建一个 UserControl 作为视图 并为主 ViewModel 创建一个 DataTemplate 以选择该视图 如果有子组件
  • 使用 Django 模型表单 + 表单向导 + Crispy - 不进行第二步

    我对 django 中的表单相当陌生 我的问题是我有一些非常大的模型 我必须将它们分解成一系列较小的表单以供用户填写 所以我一直在尝试使用脆皮表单 昨天在 YouTube 上观看 Mike Hibberts 教程 Python Django
  • 使用 Python (OpenCV) 中的霍夫线变换从模拟时钟读取时间

    我一直在尝试编写一个程序 在图片上找到钟面 然后继续从中读取时间 定位效果相当好 但阅读时间 不是那么多 cv2 HoughLines 函数返回线条所在的角度 从图像顶部开始测量 以及它们与图像左上角的距离 经过一些调整后 我成功地说服我的
  • 仅从 Internet Explorer 上的文件输入中获取文件名

    我只需要从 HTML 输入文件返回文件名
  • 是否可以将 getopts 与位置参数混合使用?

    我想设计一个 shell 脚本作为几个脚本的包装器 我想指定参数myshell sh using getopts并将其余参数以相同的顺序传递给指定的脚本 If myshell sh执行方式如下 myshell sh h hostname s
  • Android @Override 错误

    今天我终于让我的 facebook 实现工作起来了 当我开始在我的应用程序中实现它时 我通过 Override 收到以下错误 类型的 onComplete Bundle 方法 FBConnectionActivity LoginDialog
  • Windows:如何测试高dpi下的UI?

    我想测试我的应用程序的反应high dpi 设置 我指的不仅仅是 120dpi 我想测试更高的 dpi 设置 例如 150dpi 300dpi 600dpi 1000dpi 1200dpi 我的开发机器的显卡无法达到 300dpi 甚至 1
  • Angular @Input getter/setter 和非原始值

    问题 我希望能够在每次子组件绑定的对象中的属性发生更改时调用一个函数 但是 即使可以明显看到绑定的输入属性正在更新 setter 也只会被调用一次 这一切都是因为需要将子组件绑定到其父组件属性 而父组件属性恰好是具有深度嵌套属性的复杂对象
  • Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

    Cookie 没有使用以下代码附加到页面 我尝试将 IsEssential 添加到选项中 但它不起作用 使用 Asp Net Core 3 1 Razor 页面 这是我的大部分startup cs 和附加的cookie 代码 启动 cs p
  • ORDER BY 的列有时为空

    Mysql 看起来像这样 SELECT CompanyName LastName FirstName FROM JOIN ORDER BY CompanyName LastName FirstName 现在的问题是 A 列有时是空的 或者是
  • 为什么尝试使用动态参数调用扩展方法时出现错误 CS1973

    考虑以下代码 internal static class Program public static string ExtensionMethod this string format dynamic args return format
  • 使用 ffmpeg 处理流的解码数据时出错

    我正在使用以下命令 ffmpeg i video1a flv i video1b flv i video1c flv i video2a flv i video3a flv i video4a flv i video4b flv i vid
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考