问题标签 [skybox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenGL:天空盒放大太多
我正在尝试在游戏中实现天空盒。我使用的图像是:
不幸的是,它被极度放大,只显示了纹理的几个像素。它看起来像这样:
这是我创建天空盒的代码:
这是天空盒的渲染代码:
片段着色器很简单:
和顶点着色器一样:
编辑:这是我生成投影矩阵的代码:
这是我的 FoV:
c - 我正在尝试在 C 中使用 openGL 创建一个天空盒,但只得到一个黑屏
我正在尝试使用 C 语言中的 OpenGL 创建一个天空盒。我查看了很多教程并查看了很多人的代码,我认为我没有错过任何内容,但还是出现了黑屏。我是不是把整件事都搞错了?
html - Three.js: displaying a over a canvas with skybox
I created a skybox on a Three.js canvas like this:
My problem is that any 'div' I try to add above the canvas is hidden behind the skybox whatever z-index I give it. They show up if I do not add the skybox. Does anybody know why and how to fix it?
opengl - 将 3D 系统投影到球体上时的云台锁定
我正在我的游戏中制作一个天空盒。游戏中有一个太阳系,里面有一些东西(首先是太阳和地球,背景是星星)。玩家在这个太阳系的一个星球上。太阳系使用天空盒向玩家展示,2D 精灵投影到天空盒的相应位置。Skybox 是用 OpenGL 渲染的(实际上是 Java 的 LWJGL)[1]
首先,所有身体都在 3D 空间中进行跟踪。我可以获得它们的坐标、相对方向等。所有轨道都是独立定义的(又名,发生在任意平面上)。此外,行星具有四元数旋转。以全 3D 渲染系统,没有问题。
将系统投影到天空盒完全是另一回事。从理论上讲,我认为我应该能够这样做;
1.计算玩家正在看的方向向量(完全旋转无关 - 向量只需指向正确的方向)。
2.将这个方向向量乘以他们行星的方向(四元数)来计算“观察方向”
3.计算从行星到被观察物体的方向矢量
4.找到向量之间的旋转,并相应地旋转天空盒。
但是,当我向 OpenGL 提供我的角度时,会发生 Gimbal Locking 并且轨道应该是直的:完全弯曲(尽管围绕一个单轴旋转可以正常工作)。我可以通过哪些方式尝试防止这种情况发生?我不知所措。
[1]:我的地形实际上是一个扁平的方形体素网格,我将玩家的坐标缩放到它上面,然后假装它是一个 3D 星球。
opengl - 使用 OpenGL/GLSL 时立方体映射无法正常工作
我对立方体映射技术有一个奇怪的行为:我所有的像素着色器都返回黑色。所以我有一个黑屏。
情况如下:
我有一个仅由简单的立方体网格(天空盒)和轨迹球相机组成的场景。
现在让我们检查资源(6 个独立纹理的方面):
这是图像详细信息:
如您所见,这些纹理需要以 GL_RGB 格式加载。
现在,对于初始化部分,让我们看一下客户端 C++ 纹理加载代码(我使用“DevIL”库来加载我的图像):
关于主循环部分,这是我发送给着色器程序的信息(纹理和矩阵数据):
如您所见,立方体贴图纹理绑定到纹理单元 1。
现在这里是顶点着色器:
最后是片段着色器:
所以所有编译和执行的程序都显示以下结果:
但我想准确地说我使用的是 NVIDIA NSight 调试器,我想首先向您展示立方体贴图已正确加载到 GPU 上:
如您所见,它是在上面的代码中编写的,我的纹理是绑定到单元纹理 1 的 RGB 纹理,它是 GL_TEXTURE_CUBE_MAP 纹理类型。所以直到这里一切似乎都是正确的!
如果我在片段着色器中替换该行:
按行:
我有以下结果(我直接将模型空间中的顶点坐标渲染为颜色)没有线框:
与线框相同的结果:
另外,我想准确地说:
总是返回“0”值,所以我没有错误!
所以我认为这最后两张图片表明矩阵信息是正确的,顶点坐标也是正确的(此外,我使用的是轨迹球相机,当我移动到我的场景中时,我可以识别立方体架构)。所以对我来说,我在着色器程序中恢复的所有信息都是正确的,除了立方体采样器!我认为问题出在这个采样器上。但是,正如您在上面看到的那样,立方体贴图似乎已正确加载。
在这种情况面前,我真的很迷茫。我不明白为什么所有像素着色器都返回 #000000 颜色(我也尝试使用 RGBA 格式,但结果是一样的)。
image - Three.js 天空盒没有完全或根本没有加载
我在我的 Three.js 画布中插入了一个天空盒,如下所示:
我的问题是图像根本不加载或完全取决于浏览器。
在 Chrome 上,它们几乎总是被加载(有时一张脸没有被加载)。在 Firefox 上,它们几乎从未在第一次加载(我得到黑色背景)。我试图添加一个 settimer 来等待完整的加载,但它不会改变任何东西。似乎它们已加载或未加载或部分加载,但无需等待。
我做错什么了吗?图像是否有特定的格式?
c++ - 渲染动态立方体贴图 (OpenGL)
我正在尝试将场景渲染 6 次并将它们放在立方体贴图的两侧。在继续学习几何着色器之前,我想先正确地做到这一点,这将允许一次完成。代码如下:
我已经修改了我之前项目中的代码,该项目实现了用于 IBL 和反射/折射的静态立方体贴图。如果您认为有必要,我会提供着色器代码。在这个阶段,只有乱码被渲染。
最终结果
实际场景
更新 大方块是我的 setViewMat 函数中的一个错误的结果,它没有应用堆叠转换。它现在只渲染场景,纹理是黑色的。我使用 AMD gDEBugger 来查看生成的立方体贴图,它只是黑色的。所以我认为要么是我最初的 fbo 绑定,要么是我在第一遍中渲染每一面的方式有问题。
unity3d - Unity5的天空盒包在哪里找?
我对 Unity 还很陌生,我正在学习将天空盒添加到我的场景的教程。在教程中,他们使用 Unity4 并且他们执行 Assets>Import Package>Skybox,但我在 Unity 5 中没有看到这个选项。有人知道它在哪里吗?
c++ - 延迟渲染天空盒 OpenGL
我刚刚实现了延迟渲染,但无法让我的天空盒正常工作。我尝试在渲染循环的最后渲染我的天空盒,我得到的只是黑屏。这是渲染循环:
下面是天空盒的渲染函数
这是天空盒的顶点着色器:
天空盒的片段着色器只是将输出颜色设置为texture(cubeMap, TexCoord)
. 正如您从顶点着色器中看到的那样,我将位置的z
组件设置为w
使其深度始终为 1。我还将深度函数设置为GL_LEQUAL
使其无法通过深度测试。这不仅应该在尚未绘制其他对象的地方绘制天空盒吗?为什么会导致黑屏?
我知道我已经正确设置了天空盒,因为如果我自己绘制天空盒,它会显示得很好。
opengl - 你如何制作一个单一的图像天空盒?
我已经让天空盒工作了,除了它需要六个文件。我想了解如何使用 1 个文件而不是 6 个文件。我在整个互联网上都查看过,找不到任何可行的方法。这是将图像放入立方体贴图中的 loadCubeMap 函数: