问题标签 [zbuffer]

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 投票
1 回答
2081 浏览

c++ - 从相机获取每个像素的深度

我有一个网格模型,并且使用 VTK,从给定的相机位置(x,y,z)渲染了它的视图。我可以将其保存到 RGB 图像 (640x480),但我还想保存深度图,其中每个像素存储来自相机的深度值。

我已尝试按照此示例Zbuffer使用渲染窗口给出的值。问题是唯一存储范围[0,1]中的值。相反,我正在尝试创建合成范围图像,在其中存储每个像素与相机的深度/距离。类似于 Kinect 生成的图像,我试图从网格模型的特定视点创建一个。Zbufer

编辑- 添加一些代码

我当前的代码:

加载网格

创建一个相机并将其放置在某个地方

从 z 缓冲区获取结果

在本例中,这给出了 0.999995。由于值在 [0,1] 之间,我不知道如何解释,如您所见,我已将相机设置为在 z 轴上 650 个单位,因此我假设该像素的 z 距离(位于渲染 RGB 中的对象上)应接近 650。

0 投票
1 回答
4233 浏览

opengl - 对数深度缓冲区线性化

如何线性化对数深度缓冲区?

片段着色器中线性深度缓冲区的可视化

球体顶点着色器

左边部分显示对数深度缓冲区线性化或更确切地说它的缺乏,而右边显示线性化而不log只是 gl_Position = matrix * vec4(position,1.0f); 在此处输入图像描述

0 投票
2 回答
386 浏览

opengl - DirectX 和 OpenGL 之间的模板选项

我正在实现一个仿真层。除了模板的东西(我的阴影重叠)之外,其他一切都有效。

我只是想知道我是否在逻辑上做事 - 如果我正在做出正确的结论/假设:

以下是上面使用的。glAble() 只是 glEnable/glDisable 的包装器。

0 投票
1 回答
2447 浏览

glsl - 在 WebGL 中将 Z 缓冲区渲染为纹理

当我像这样创建 z-buffer 纹理时:

我得到了一个合适的 z 缓冲区,然后我可以将其用于阴影(并且我的阴影渲染得很好)。但是,如果我创建一个颜色纹理,并使用 z 值为纹理着色,我的阴影会有很多伪影(即使偏差很大)。颜色缓冲区是这样创建的:

这是写入颜色缓冲区的片段着色器程序:

当我将这两个纹理渲染到某个表面时,它们看起来很相似。

所以我的问题是,为什么我的颜色纹理不起作用?gl_FragCoord.z 不是写入 z 缓冲区的正确 z 值吗?根据http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_FragCoord.xml它是。绑定颜色缓冲区时,纹理协调是否不同?还是z值不正确?

0 投票
1 回答
125 浏览

graphics - 旋转球体数据集的遮挡剔除

我目前正在执行一项任务,其中我必须为球体数据集实现一个仅 CPU 的光栅化器。数据集是静态的,因此在运行时不会发生变化,即使整个数据集可以在摄像机前旋转。

现在的想法是实现一些遮挡剔除方法,以便从相机的角度来看被其他球体遮挡的球体不会进入光栅化器的下一个阶段,(针对 z 缓冲区和像素着色进行测试)浪费CPU时间。

我一直在寻找实现这一目标的可能方法。首先,我想到了一个在八叉树中维护场景模型的分层 Z 缓冲实现。然而,由于数据集旋转,我需要重新计算每一帧的八叉树,这可能非常昂贵。我对吗?

我不确定在这种情况下,空间散列或一些更便宜的计算球体数据集的分层组织是否会更有益。对此有什么想法吗?请注意,这必须在 CPU 上完全实现。

0 投票
1 回答
2474 浏览

opengl - 为什么 openGL glDepthFunc() 不起作用?

我正在玩openGL,我试图摆脱蓝色标记的三角形。我用这个代码:

是的,我用

在我的主循环中。我读过问题可能是投影矩阵。我使用这些值:

我试图改变近和远的价值,但它仍然是一样的。我也在尝试更改 glDepthFunc 的参数,但它也没有帮助我。那么,有什么想法吗??非常感谢

我的结果

0 投票
1 回答
277 浏览

three.js - Three.js - 使用 TrackballControls 旋转时透明对象的行为不像透明

当我将两个对象添加到场景中并将它们的透明度设置为具有一定不透明度并使用 TrackballControls 我通过鼠标旋转场景时,最初远离相机的对象失去了透明度。

我读到这是 Z 缓冲区问题,将首先显示来自相机的更多对象。但是当我使用 TrackballControls 旋转场景时,相机会改变它的位置,因此应该正确显示透明对象。但事实并非如此。

在这张图片中 - 右侧是前视图,左侧是未正确显示的后视图:

http://www.foto-ondruskova.cz/Experiment/lenses.jpg

请问有什么解决办法吗?

0 投票
0 回答
476 浏览

opengl - z-buffer(深度缓冲区)值的绝对限制

我正在尝试使用 z 缓冲区来测量距离,但我发现了一个意想不到的问题。

我知道 z-buffer 通过我的代码返回一个 0..1 浮点数:

然后我使用回调函数对 z-buffer 值进行后处理:

一切正常,直到我达到24 个距离单位,如下所示。


我有 3 个变量,近平面(视口)、平面camera_high。最后一个是相机与地面的距离。它正在看一架飞机(这意味着是地面)。那是程序输出:

常量浮动近平面 = 0.2; 常量浮动远平面= 200;

常量浮动近平面 = 20;

常量浮动近平面 = 24;


尽管我的nearplanefarplane的位置,我只是无法在24之外的 z 缓冲区中得到任何差异。

0 投票
1 回答
136 浏览

java - 为什么java多线程不能加速图形程序

我正在尝试绘制一个取消多个线程的三角形,每个线程将绘制三角形的一个独立部分。但它的运行速度比只使用一个线程要慢得多。有什么问题?

这是代码:

和可运行的:

0 投票
1 回答
300 浏览

java - 自定义 3D 渲染

所以我最近一直在互联网上如此努力地刺激,并且遇到了一些有趣的游戏。基本示例是Minecraft4k。它是为几年前的 Java4k 竞赛而制作的,但我真正感兴趣的是渲染是如何完成的。每年都有很多这样的游戏,但我真的找不到太多关于创作者如何合成 3D 世界的信息,更不用说用最少的代码了。

将要实现的基础是多边形填充、z 排序和某种“雾”,以防止绘制过多的景观(实际上是可选的)。我已经阅读了扫描线填充算法并有一个工作示例,但我不知道如何让任何形式的 z 缓冲工作。所以问题是,有没有人对这种自定义 3D 渲染工作有任何经验?如果是这样,您可以指出我的任何提示/指针/资源吗?

我知道这是一个浅薄的问题,也许不够充分,但我想我会在这里尝试。提前致谢!