当前位置: 首页 > 面试题库 >

Libgdx ModelBuilder.createRect仅从一侧可见

裴俊智
2023-03-14
问题内容

现在,在我的第一个libgdx
3D游戏中,我从切换createBoxcreateRect,仅创建可见的面孔(如果一堵墙在另一堵墙壁的左侧,则其右面不可见…)。我正在创建4个模型:

  1. frontFace
  2. backFace
  3. rightFace
  4. leftFace

他们几乎被画出了实际的样子。但是有一个大问题:只有当我看正面时,侧面才可见z-Direction。如果我看着另一侧(负z-Direction),它们不会画。如果我以负数看待它们的正面和背面,它们只会画图x-Direction。这和法线有关吗?我将它们设置为:

normal.x = 0;
normal.y = 1;
normal.z = 0;

那是错误吗?我应该如何设置法线?他们代表什么?我对照明的法线贴图有一些基本想法,是否一样?

重要说明:我已禁用背面剔除,但没有任何区别。视图视锥剔除已打开。如果需要更多信息,请发表评论,我会尽快添加它们。谢谢


问题答案:

也许没有直接关系,但仍需注意:除调试/测试外,请勿将createRect或createBox用于其他任何用途。而是将多个形状组合到单个模型/节点/零件中。甚至更好,请尽可能使用建模应用程序。

您没有指定如何禁用背面剔除。但是请记住,您不应该在着色器/渲染上下文之外更改opengl状态(这样做将导致无法预料的行为)。要禁用背面剔除,您可以使用material属性IntAttribute.CullFace(请参阅:https :
//github.com/libgdx/libgdx/wiki/Material-and-environment#wiki-
intattribute
),DefaultShader(或默认ModelBatch)配置defaultCullFace成员来指定背面剔除(请参阅http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/shaders/DefaultShader.Config.html#defaultCullFace)或(不建议使用的)静态DefaultShader#defaultCullFace成员(请参见http:/
/libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/shaders/DefaultShader.html#defaultCullFace)。

正面是正面还是背面是基于顶点缠绕的。换句话说:您提供矩形角的顺序用于确定哪一侧是正面,哪一侧是背面。如果您使用的RECT方法之一,您会发现的参数,都要么有00011011后缀。在这里,当看脸时,左下为00,左上为01,右上为11,右下为10。

对于矩形,通常是垂直于矩形的垂直面。例如,如果您在XZ平面上有一个矩形,且其正面位于顶部,则其法线为X = 0,Y = 1,Z =
0。如果其正面面向底部,则其法线为X = 0,Y = -1,Z = 0。同样,如果您在XY平面上有一个矩形,则其法线为X = 0,Y = 0,Z = 1或X
= 0,Y = 0,Z = -1。请注意,法线不用于人脸剔除,它最常用于照明等。指定不正确/相反的法线 不会
导致人脸被剔除(尽管可能会导致不正确/黑色照明)。



 类似资料:
  • 这可能令人困惑,但出于某种奇怪的原因,在:将始终出现以下错误:。尝试其他方法,如:工作正常。但这表示: 填充选项(padx、ipadx、pady和ipady)可以采用表示左/右和上/下填充的2元组。 那么,发生了什么。。。 下面是一些也有错误的完整代码: 更新:我发现你不能在Tkinter,甚至Tcl/Tk...

  • 嘿,我的游戏代码有问题。例如,有没有办法检查我的玩家sprite(英雄)右侧是否与obstacle_sprite组发生碰撞? 我只能弄清楚如何检查一般的碰撞,但如果玩家的右侧与障碍物相撞,我只想获得真正的输出。 在我的代码中,我使用一个隐形精灵作为hitbox,并将玩家吸引到这个隐形精灵中以检查碰撞,但使其看起来像障碍物拒绝玩家移动。

  • 问题内容: 任何方法都可以在左右两侧(水平?)获得箱形阴影,而没有任何骇客或图像。我在用: 但它给周围的阴影。 我周围没有边界。 问题答案: 注意: 我建议您在下面查看@Hamish的答案;它不涉及此处描述的解决方案中不完善的“掩盖”。 您可以使用多个框阴影来接近;每一面一个 编辑 在顶部和底部的顶部再添加2个阴影,以遮盖流血的阴影。

  • 问题内容: 我如何在tkinter窗口小部件居中的情况下向tkinter窗口添加填充?我试过了: 和 我只想在标签顶部填充30像素。 问题答案: 填充选项和的和方法可利用一个 2元组 表示左/右和上/下填充。 这是一个例子:

  • 问题内容: 有没有办法只在底部放阴影?我有一个菜单,彼此相邻有2张图像。我不想要正确的阴影,因为它会重叠正确的图像。我不喜欢为此使用图像,因此有一种方法可以将其仅放置在底部,例如: 或类似的? 问题答案: 更新4 与更新3相同,但具有现代的CSS(=较少的规则),因此不需要在伪元素上进行特殊定位。 更新3 我以前所有的答案都一直在使用额外的标记来创建此效果,而这并不是必需的。我认为这是一种 更 清

  • 问题内容: 以任何方式在左侧和右侧(水平?)上获得盒子阴影,而没有骇客或图像。我在用: 但它给周围的阴影。 我周围没有边界。 问题答案: 注意: 我建议在下面查看@Hamish的答案;它不涉及此处所述解决方案中不完善的“掩盖”。 您可以使用多个框阴影来接近;每一侧一个 编辑 在顶部和底部的顶部再添加2个阴影,以掩盖流血的阴影。