问题标签 [orthographic]

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 投票
2 回答
2098 浏览

flash - flash 10 正交投影

我一直在玩一些新的 flash 10 3d 可能性,发现在 3d 中旋转精灵相当容易:

简单而有效,这显示了卡片的透视旋转。

现在我想使用正交投影,但我不知道从哪里开始。DisplayObject 确实有一个 perspectiveProjection 成员,但它当然只能进行透视投影。也许我应该使用 transform.matrix3D?

我认为这应该不会太难,但我不知道如何解决这个问题。

更新:正如其中一条评论所暗示的:将perspectiveProjection.fieldOfView 设置为接近0(10 实际上在我的设置中产生比0.1 更好的结果)你会得到一个几乎正交的投影,这可能已经足够好了。

0 投票
2 回答
347 浏览

directx - 我该如何实现精灵遮罩?

使用 DirectX,我正在渲染纹理多边形(正交),因此它们充当 HUD 精灵。现在我不确定如何在这个系统中实现精灵屏蔽?

所以基本上说我有一个精灵,我怎样才能让它只在我定义的屏幕的给定部分呈现?如果它的一部分移动到屏幕的这一部分之外,你看不到它吗?

0 投票
2 回答
1830 浏览

.net - WPF 正交相机。视野区域

我将正交相机添加到我的项目中。我想在屏幕上按比例显示我的图表。例如,高度为 4,宽度为 4(区域从 -2 到 2)。

我将宽度设置为 4,它完全适合我的方形宽度。但我的身高有问题。图表顶部和底部总是超出屏幕空间。为什么会发生这种情况以及如何将相机视图设置为相同的宽度和高度?

相机位置:0,0,5 视口尺寸:571.5x497

在图像上,我们可以在从 2 到 -2 的垂直轴点上看到,但在垂直轴上更多。如何使它们相同?

图片:http: //i076.radikal.ru/1003/96/273c74ed9add.png

对不起我的英语不好。

0 投票
1 回答
1364 浏览

opengl - 使用 GLOrtho 查看 3D 场景的侧面、正面、顶部透视图

作为大学项目的一部分,我正在构建一个游戏关卡编辑应用程序。在我的应用程序中,我有多个视口、一个透视视口和三个正交视图,它们都设置为查看同一场景。

我已经成功地设置了正交视图,并且可以翻译和缩放它们以模拟滚动和缩放。不幸的是,我遇到了一个问题——我的场景仍然包含 3 个维度,因此在某些深度的正交模式下查看的对象在超出我的剪裁体积时会被剪裁。

大多数 3D 创作工具或关卡编辑器允许您以正交模式查看所有对象,而不管深度如何。

我想我需要做的是在适当的维度上缩放我的场景,以便所有值都介于 1 和 -1 之间,有没有一种简单的方法来解决这个问题?还是有其他更好的方法。

非常感谢您的帮助,丹

0 投票
1 回答
915 浏览

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

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

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

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

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

这就是我的意思:

替代文字

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

0 投票
1 回答
1566 浏览

opengl - opengl中的正交投影和纹理坐标

我正在用 Opengl 编写一个 2D 游戏。我已经设置了正交投影,因此我可以很容易地知道四边形将在屏幕上的哪个位置结束。问题是,我还希望能够将像素直接映射到纹理坐标,所以我还对纹理应用了正交变换(使用 gluOrtho2d)。现在我可以直接使用整数和 glTexCoord2i 映射像素。问题是,在谷歌搜索/阅读/询问之后,我发现没有人真正知道(显然)glTexCoord2i 的行为,但它在我使用的方式上工作得很好。我编写的一些示例测试代码如下:

那么,我正在做的事情有什么问题吗,或者我正在做的事情是否正确?

0 投票
1 回答
6418 浏览

3d - 在 XNA 中使用 CreateOrthographicOffCenter

我试图弄清楚如何在 XNA 中绘制图形,其他人建议这样做。但在我尝试使用它之前...

如果我创建并使用这个相机,并将 LEFT,TOP 设置为 0 并且 WIDTH=256 和 HEIGHT=240,我渲染到屏幕上的任何东西都会使用这些坐标吗?那么宽度和高度为 1 的框,如果设置为 0,0 会占用 0,0 到 1,1 的空间吗?

0 投票
1 回答
2783 浏览

3d - 使用正交矩阵将 3D 坐标转换为 2D 屏幕坐标

我有一个在 3D 空间中存储顶点的场景。我想做的是从等距角度正交渲染这些顶点。

在我所有的搜索中,显而易见的答案是使用像 OpenGL 等中的正交相机。

问题是我想从头开始写这篇文章以帮助我理解,所以我真的在寻找相机内部的理论。

如何在 3D 空间中获取任意点并使用正交矩阵从中获取屏幕坐标?

目前我有我的正交矩阵:

其中 r 为右,l 为左,t 为上,b 为下,f 为远,n 为近。

我将围绕 y 轴的旋转附加到此,然后将顶点坐标与该矩阵相乘,我相信该矩阵会将我的世界空间顶点转换为我的视图空间坐标...

但它仍然是一个 3D 矢量,所以我很好奇我如何推断 2D 屏幕坐标。

任何帮助都会很棒。

谢谢,乔恩

0 投票
3 回答
4804 浏览

opengl-es - 在半渲染正交场景之上将 OpenGL 切换到透视模式?

我们有一个以正交模式运行的大部分 2D 游戏,但其中一部分显示了在其他 2D 对象之间渲染的 3D 模型。如何切换到透视模式,渲染该模型,然后切换回以正交模式渲染其他对象?

如果你能展示它是如何在 OpenGL ES 中完成的,那就太棒了。

0 投票
2 回答
1630 浏览

opengl - OpenGL中的扑克牌“3D”旋转 - 透视?

(Mac OS X、Cocoa、C/C++、OpenGL,在数学上有些挑战。)

Project 是一款实时 (30fps) 扑克游戏,具有 2D 视图。使用 glOrtho 为正交投影设置 OpenGL 视图;相机总是直视卡片/桌子。迄今为止,它本质上是一个 2D 图像合成引擎。

我的扑克牌是预先构建的纹理(带有 alpha),因此渲染:

这很好用,并提供 1:1 像素映射,以获得高图像质量。

问题:我如何(便宜、快速地)使用 OpenGL“翻转”或扭曲我的卡片?旋转部分并不难,但我在透视方面遇到了麻烦。

具体来说,我想到了 iPhone 应用程序(例如音乐)中 UIViews 的水平翻转动作。UIView 将通过水平收缩来翻转,呈现出透视的外观(视图的“后”坐标将垂直收缩。)

感谢您提供任何帮助或提示。