- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的第一个 libgdx 3D 游戏中,我现在从 createBox
切换到 createRect
,仅创建可见面(如果一堵墙位于另一堵墙的左侧,它的右脸是看不见的......)。我正在创建 4 个模型:
正面
背面
rightFace
左脸
他们几乎是按照他们实际应该的方式绘制的。但有一个大问题:只有当我朝正 z 方向
方向看时,侧面才可见。如果我看另一侧(负 z 方向),它们不会绘制。如果我从负x 方向
观察正面和背面,则只会绘制正面和背面。这和正常现象有关系吗?我已将它们设置为:
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 方法,您会注意到参数具有 00
、01
、10
或 11
后缀。这里,当看脸时,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。请注意,法线不用于面部剔除,它最常用于照明等。指定不正确/相反的法线将不会导致面部被剔除(但可能会导致不正确/黑色照明) .
关于java - Libgdx ModelBuilder.createRect 仅从一侧可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089088/
在我的第一个 libgdx 3D 游戏中,我现在从 createBox 切换到 createRect,仅创建可见面(如果一堵墙位于另一堵墙的左侧,它的右脸是看不见的......)。我正在创建 4 个模
我目前正在创建一个体素引擎,以便熟悉其中涉及的许多概念,这对我来说也恰好是一个优化练习。在搜索时,我在多个网站上看到多个来源表明我不使用 ModelBuilder().createBox() 或 cr
我是一名优秀的程序员,十分优秀!