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 渲染层 的相关文章

随机推荐

  • 用于测试 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到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考