问题标签 [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.

0 投票
3 回答
8701 浏览

unity3d - 如何使用 Unity 5 程序天空盒添加夜空?

我正在使用 Unity 5,它是新的程序天空盒。看起来很神奇!

在我的游戏中,我有一个昼夜循环。我找不到使用夜空盒的方法,当夜幕降临时,它会慢慢出现(混合)来替换程序性天空盒。

我知道有一个着色器可以在两个天空盒之间混合,但它不适用于新的程序天空盒。

我希望能够保留程序天空盒,这样我就可以保留令人惊叹的日出/日落,但能够在晚上添加星星。

在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
1528 浏览

opengl - 为什么人们不将四面体用于天空盒?

在 3D 游戏中渲染具有固定纹理的天空时,人们通常会先在一个立方体贴图中创建 6 个纹理,然后在相机周围渲染一个立方体。在 GLSL 中,您可以使用法线而不是纹理坐标来访问纹理中的像素,并且您可以通过标准化片段相对于相机的位置来轻松获得此法线。然而,这个过程可以用围绕相机的任何形状来完成,因为当你标准化每个位置时,它总是会产生一个球体。现在我想知道:为什么它总是一个立方体而不是一个四面体?渲染一个立方体需要 12 个三角形,一个四面体只有 4 个。正如我已经说过的,任何围绕相机的形状都可以。所以四面体占用更少的 VRAM 并且渲染速度更快,没有任何缺点?为什么不使用它们?

0 投票
1 回答
1180 浏览

unreal-development-kit - 虚幻引擎 4.7 无法创建正常的天空盒

简介:所以我来自 Unreal Answerhub 站点,因为那个地方确实没有响应,并且许多教程和资源在最新版本 4.7 中已经过时,这改变了工作流程。

问题:

我最近从 Unity 切换到 Unreal,我想做的第一件事是创建一个天空盒,但它似乎唯一支持的是一个天穹,它的多边形比立方体多得多,并且生成的 .dds 立方体贴图文件太大而无法在 webgl 项目中使用。除此之外,我不知道如何设置一个简单的天空。

我期望发生的事情:

我想尝试启动并运行一个简单的传统天空盒,它使用 6 个图像而不是 dds 文件以提高性能。

我试过的:

1)我遵循了每个 4.6 教程,但没有成功,因为 4.7 稍微改变了我们使用蓝图的方式。界面也发生了变化,所以我作为一个新用户很难理解。

2)我尝试了自己在开源程序Blender中创建立方体的方法。翻转立方体的法线,并对与我的 6 张图像关联的 6 个面中的每一个进行 uv 映射。导出和导入到虚幻引擎。把它放大到很大。问题是,玩家一走,我所面对的图像似乎就更近了。有没有办法防止这种情况发生?比如让它无限或让立方体的重心跟随玩家?

我将非常感谢您的回答。你不仅会帮助我,还会帮助很多其他没有从虚幻社区得到关于这个问题的答案的人。

真挚地,

马罗斯

0 投票
0 回答
567 浏览

unity3d - 统一缩放的天空盒

我想制作类似天空盒的东西,但我希望能够对其进行缩放。我试图用平面制作一个立方体,并在中间设置一个相机。它不起作用,因为我可以看到边缘。有人知道如何解决这个问题吗?

0 投票
2 回答
1911 浏览

javascript - 三.js 天空盒

我想在 THREE.js 中创建一个 SkyBox,已经找到了一些如何创建它的提示,但是它不起作用。我尝试了所有这些,但没有任何效果。文件路径和图像路径是正确的。

有人可以解释代码有什么问题以及为什么天空盒没有出现吗?

0 投票
1 回答
541 浏览

algorithm - 全景图片转Cubemap算法

我遇到了问题。我想创建一个应用程序,让人们可以在天空盒视图中观看他们用手机拍摄的全景照片。

为此,我需要将照片切成立方体贴图。我在互联网上搜索了一个算法,但我没有找到任何东西(我能理解)。

有一些程序正在从全景图片中制作天空盒,但我不知道他们的算法:/

0 投票
0 回答
190 浏览

c# - Unity C#- 动态天空盒,没有错误但不起作用

经过大量谷歌搜索后,我的 C# 代码编译没有任何错误,但它仍然无法正常工作。即我的天空盒没有改变。
我已经确认我的路径是正确的。
我认为这一定与我引用天空盒的方式有关。我的理解是基本上有两种方法可以改变,通过代码更新天空盒。一种是通过 RenderSettings.skybox,另一种是通过参考主摄像机上的天空盒。我正在使用前一种方法。以下代码在一个空的游戏对象上。任何 Unity C# 大师都可以提供帮助吗?

0 投票
4 回答
2818 浏览

java - 在 OpenGL 中,如何使我的天空盒不覆盖我的任何实体?

我正在使用 LWJGL(目前是 ThinMatrix 的教程)在 Java 中开发 OpenGL 游戏,并且我刚刚添加了我的天空盒。然而,正如您从图片中看到的那样,它正在穿过树木并覆盖某个点后面的所有内容。

这是我的天空盒渲染代码:

如果需要,这里是我的主渲染器代码:

图片

0 投票
1 回答
2525 浏览

unreal-engine4 - 在 UE4 中将天空球体设置为亮白色

我正在尝试为我的 Unreal Engine 4 游戏设置纯白色背景。我尝试过使用天空球体进行试验(将所有颜色设置为#FFFFFF,并将云不透明度和星光亮度设置为 0.0)。背景充其量仍然是暗灰色。(如果我添加星星,星星是明亮的白色,在暗灰色的背景下)。

如何设置天空球体(或者可能是大气雾)以创建明亮的白色背景?

白色天空球体

0 投票
2 回答
189 浏览

c++ - Z-Buffer 的奇怪行为

我正在使用延迟着色方法来渲染场景,但是由于 Z-Buffer 的奇怪行为,我遇到了 Skybox 技术的问题。我创建了额外的帧缓冲区并附加了 5 个纹理,其中一个用作深度缓冲区。第一个通道是几何通道,它用所需的数据填充纹理,第二个通道渲染最终对象,并将纹理和闪电应用于主帧缓冲区,最后一个通道渲染天空盒。问题是 Skybox 被忽略(Z-Buffer 检查失败,因此它是不可见的)。

在渲染天空盒的时候,我将次帧缓冲区映射为GL_READ_FRAMEBUFFER,将主帧缓冲区(屏幕)映射为GL_DRAW_FRAMEBUFFER,所以可以使用次帧缓冲区的深度缓冲区,然后我将深度函数设置为GL_LEQUAL。只有当我将深度函数更改为 GL_GREATER(或 GL_ALWAYS)时,才能看到天空盒,但它是在对象之上渲染的。

顶点着色器:

模型矩阵是 Skybox 转换为相机坐标的产物。

glDepthFunction 设置为 GL_LEQUAL: GL_LEQUAL

glDepthFunction 设置为 GL_GREATER: GL_GREATER

Z缓冲区的内容: Z缓冲区

更新1:我试过像这样使用glBlitFramebuffer:

但它不起作用。主深度缓冲区包含黑色像素数组。

更新 2:

天空盒缓冲区: