问题标签 [perspective]

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 回答
915 浏览

graphics - 仅使用正交渲染模拟 3D“卡片”

我正在从正交角度渲染纹理四边形,并希望通过修改 UV 和四边形四个点(左上、右上、左下、右下)的顶点位置来模拟“深度”。

我发现如果我使左上角和右下角 y 位置相同,我不会得到线性“倾斜”,而是会出现扭曲的,其中覆盖顶部三角形(构成四边形)的纹理似乎底部三角形纹理看起来正常时被压扁。

我可以更改四边形上四个点中的任何一个 UV(但仅在 2D 空间中,无论如何它都是正交投影,因此 3D 空间并不重要)。所以基本上我试图在正交投影中模拟二维四边形的透视,有什么想法吗?它甚至在数学上可能/可行吗?

理想情况下,我想要一种情况,我可以通过一个函数设置 x/y 旋转以及虚拟 z“位置”(模拟 z 深度),并在内部看到它计算位置/uvs 以创建 3D 效果. 看起来这应该都是数学的,可以将一组 2D 变换应用于四边形的每个角以模拟深度,我只是不知道如何实现它。我猜它需要三角学或其他东西,我正在尝试计算数学但没有取得太大进展。

这就是我的意思:

替代文字

左上角是卡片,中间是 x 度旋转的卡片,最右边是 x 和 y 不同度数旋转的卡片。

0 投票
1 回答
248 浏览

image-processing - HMM 用于文档图像中的透视估计,无法理解算法

这是一篇论文,它是关于估计包含文本和一些噪声或非文本对象的二进制图像的透视。

PDF文件

该算法使用隐马尔可夫模型:实际上两个条件 T - 文本 B - 背景(即噪声)

算法本身很难理解。问题是我已经阅读了有关隐马尔可夫模型的内容,并且我知道它使用必须知道的概率。但是在这个算法中我无法理解,如果他们使用 HMM,他们如何获得这些概率(将状态从 S1 更改为另一个状态的概率,例如 S2)?

我在那篇论文中也没有找到任何关于培训的内容。所以,如果有人理解它,请告诉我。还有可能在不知道状态变化概率的情况下使用 HMM 吗?

编辑:可能他们正在使用一些估计,而不知道 HMM 参数(概率)

0 投票
2 回答
5784 浏览

math - 在透视图中计算 3D 对象的 2D 角度

想象一张照片,标出建筑物的正面。

鉴于建筑物的正面是一个矩形,有 90 度角。但是,因为它是一张照片,所以会涉及透视,并且脸部的平行边缘将在地平线上会聚。

对于这样一个矩形,你如何计算与它成直角的面的边缘向量的 2D 角度?

在下图中,蓝色是照片上标记的脸,我想知道如何计算另一张脸红线的 2D 向量:

例如 http://img689.imageshack.us/img689/2060/leslievillestarbuckscor.jpg

因此,如果您暂时忽略图片,并专注于线条,其中一个面部轮廓(内角等)是否有足够的信息来了解角落另一侧的面部路径?公式是什么?

例子

我们知道两者都是矩形 - 也就是说每个角都是直角 - 并且它们彼此成直角。那么,如何仅使用第一张脸的位置知识来确定第二张脸的矢量呢?

0 投票
0 回答
1188 浏览

perspective - 透视倾斜

我计划为给定的 2D 图像创建 3D 立体图像。

为此,我将给定 2D 图像作为左眼视图,现在我必须创建右眼视图。

我开始知道透视旋转、透视倾斜、透视扭曲等。将创建右眼视图。

假设在图像中,如果一些物体离相机非常近,而一些物体离相机很远,那么图像应该是

即从中心,上部应向右旋转/倾斜,下部应向左旋转。

并假设在图像中,如果某些对象离相机有些远,有些则非常远,那么变换应该是

Tha只是上部将向右旋转/倾斜,下部应保持原样。

我可以为这种透视倾斜或旋转找到任何转换矩阵吗?

什么是 4 点透视旋转,它将如何工作?

提前致谢

0 投票
1 回答
1669 浏览

wpf - WPF 3D透视相机问题

我正在开发一个 3D 翻转控件,它可以水平、垂直翻转,并且可以具有任何大小和正方形或矩形形状。

当我让它工作时,我遇到了透视相机的一个非常奇怪的问题。当我创建一个 MeshGeometry3D 时,我会根据内容的适当比例进行缩放。如果宽度>高度,一切都很好。但是,如果高度 > 宽度,则 3d 网格的尺寸太小。

解决此问题的唯一方法是(如果高度 > 宽度)将透视相机上的 UpDirection 从 0 1 0 更改为 1 0 0 并应用 90 度旋转变换。当我这样做时,一切看起来都很完美。

有谁知道这是为什么?在调整网格大小时,透视相机是否只考虑宽度?

谢谢!

0 投票
7 回答
25532 浏览

3d - 移动相机以适应 3D 场景

我正在寻找一种算法来适应视口内的边界框(在我的例子中是 DirectX 场景)。我知道在正交相机中使边界球居中的算法,但对于边界框和透视相机需要相同的算法。我不能只更改 FOV,因为此应用程序将 FOV 作为用户可编辑变量,因此它必须移动相机。

我有大部分数据:

  • 我有相机的向上矢量
  • 我有边界框的中心点
  • 我有从相机点到盒子中心的观察向量(方向和距离)
  • 我已经将这些点投影在垂直于相机的平面上,并检索了描述最大/最小 X 和 Y 坐标在观察平面内或外的系数。

我遇到的问题:

如何找到相机位置,使其尽可能完美地填充视口(如果纵横比远非 1.0,则它只需要填充屏幕轴之一)?

我尝试了其他一些事情:

  • 使用边界球体和切线来找到移动相机的比例因子。这不能很好地工作,因为它没有考虑透视投影,其次球体对我的使用来说是不好的边界体,因为我有很多扁平和长的几何形状。
  • 迭代调用该函数以获得相机位置的越来越小的误差。这有点奏效,但有时我会遇到奇怪的边缘情况,即相机位置过冲过多并且误差因素增加。此外,在执行此操作时,我没有根据边界矩形的位置重新定位模型。我找不到可靠、可靠的方法来做到这一点。

请帮忙!

0 投票
2 回答
1752 浏览

math - 我的 2D/3D 转换工作完美,如何进行透视

尽管这个问题的背景是关于制作 2d/3d 游戏,但我遇到的问题归结为一些数学问题。虽然它是一个 2.5D 的世界,但让我们假装它只是 2d 这个问题。

xDistX 和 yDistX 确定 x 轴的角度,xDistY 和 yDistY 确定投影上 y 轴的角度(以及网格的大小,但为了简单起见,我们假设这是 1 像素)。

像这样的“正常”坐标系

因此,x 方向上的每一步都将导致投影到右端 1 个像素,向下 0 个像素。投影的 y 方向上的每一步都将导致向右 0 步和向下 1 个像素。选择正确的 xDistX、yDistX、xDistY、yDistY 时,您可以投影任何三度或二度系统(这就是我选择这个的原因)。

到目前为止一切顺利,当它被绘制时,一切都很好。如果“我的系统”和思维定势清晰,让我们继续展望。我想为这个网格添加一些视角,所以我添加了一些额外的,如下所示:

现在真正困难的部分......如果你在投影上有一个(xa,ya)点并想要计算原始点(x,y)怎么办。对于第一种情况(没有透视),我确实找到了反函数,但是对于具有透视的公式,如何做到这一点。可能数学技能还不足以解决这个问题。

(我依稀记得很久以前mathematica可以为某些特殊情况创建反函数......它可以解决这个问题吗?有人可以试试吗?)

0 投票
2 回答
3338 浏览

eclipse - Ubuntu 崩溃,Eclipse 丢失 .metadata,Java Perspective 消失,丢失,丢失

我在 Ubuntu 10.04 LTS 上运行 Eclipse Galileo。Ubuntu 今天在我身上崩溃了,重新启动后,我发现 Eclipse 完全失去了 Java 透视图(就像透视图和所有关联的视图都不存在一样),并且我工作区中的 .metadata 目录是空的,除了 version.ini。

那是怎么回事?为什么会这样?我该如何预防?我怎样才能从中恢复?

0 投票
3 回答
9224 浏览

eclipse - 导出单个 Eclipse 透视图和设置

我为我的 Eclipse 定制了一个特殊的 Latex 透视图,并将这个透视图保存为“MyLatex”。我什至在我的 texlipse 首选项中添加了快捷方式,这样我就可以输入“tab”+strg+space 来插入表格。

现在我想把这个提供给朋友。我发现我可以使用 Export->General->Settings,但这会导出所有透视图。

有没有办法只导出透视“myLatex”和texlipse编辑器模板?

最好的问候菲利普

0 投票
1 回答
3302 浏览

java - 透视图/变换矩阵

如何在 Java 中进行透视图转换?据我了解,我可以使用一些神奇的 4 维矩阵来确定 FOV、纵横比以及近视和远视距离,但我不知道如何创建该矩阵。

我能够在 Java 中实现“PerspectiveTransform”,但是在使用以下内容时我看不到任何效果

我知道最底部的“1”可能需要为 1/d,其中“d”是距离,但无论我在那里尝试什么数字,我都没有效果。更改其他数字确实会产生影响,但在我尝试之前我不知道它们会产生什么影响(而且我不能无限猜测)。我知道并且能够让“quadToQuad”功能工作,但我不得不再次猜测要使用哪个“quads”。

所以我需要一个资源来向我解释如何根据 FOV、纵横比、距离等提出我需要的矩阵。我已经阅读了“交互式计算机图形学”第 5 版的相关部分。爱德华·安吉尔,不明白。

我要做的是将鸟瞰图像转换为人眼图像。使用谷歌地球时可以看到一个例子。

谢谢