问题标签 [perspectivecamera]

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

wpf - WPF 3D - 将 ModelVisual3D 适合相机的视野?

我有一个长方体,它的尺寸是从 XML 导入的,所以我需要确保无论模型的大小如何,相机都能看到它的全部。这是出于预览目的。为了清楚起见,我可能会在顶部显示比例尺的标题。

我想我需要一些函数来告诉我 ModelVisual3D 是否适合FieldOfView相机的边界或 ViewPort3D 本身。

到目前为止,DependencyProperty当尺寸属性更改时,我有静态回调(尺寸属性为 s)定义如下。目前它非常粗糙,但你明白我正在寻找的想法。注释掉的部分大致显示了我正在寻找什么样的逻辑

如果有人知道注释掉的部分应该放在哪里,我将永远感激不尽。
提前致谢。

0 投票
1 回答
1518 浏览

actionscript-3 - Flash CS4绕Z轴旋转,舞台中心不变形,有可能吗?

我有三个盒子分别绕着它们的 Z 轴旋转。如果我将它们从舞台中心移开,我想要做的是让它们围绕各自的 Z 轴旋转而不会扭曲。

例如这里http://www.hupcapstudios.com/tween1.swf

有没有像...这样的内置参数

绕 x 轴旋转更明显

示例http://www.hupcapstudios.com/tweenXswf

0 投票
1 回答
1344 浏览

3d - 用于透视投影的相机旋转

我正在尝试对各种 3D 结构进行简单的透视投影,定义为多个 3D 多边形(不同的 z),每个多边形都包含多个点。该结构将由我定义的许多不同的相机查看。这些相机是通过将世界相机(眼睛)放置在我的世界坐标中的(0,0,z),look(0,0,0)和up(0,1,0)并将世界轴旋转alpha(约 x 轴)、beta(约 y)和 gamma(约 z),从而为该特定相机创建我的局部坐标系。[我意识到我可以使用 OpenGL 来做到这一点,但我想自己尝试并理解它,而不是使用黑匣子]

我的全局相机的基础是使用向量 u,v 和 w 定义的,其中 w=(eye-look).normalised =(0,0,1); u=up.cross(w)=(1,0,0) 和 v=w.cross(u)=(0,1,0)

我正在使用齐次坐标,因此 u_dashed、v_dashed、w_dashed 的变换矩阵如下所示:

T(px,py,pz) = [1,0,0,px;0,1,0,py;0,0,1,pz;0,0,0,1] 和 R = [u,0; v,0;w,0;0,0,0,1]

所以把它放在一起我得到

Tr=T(eye-look) x R' x R_zyx x R x T(-(eye-look)) 其中 R' 是 R 的转置,R_zyx 是组合的前向旋转矩阵(世界 => 局部坐标)我然后将正交投影矩阵 (O) 与透视变换矩阵 (P) ( http://www.cs.uu.nl/docs/vakken/gr/Slides/06-projection.pdf ) 相乘以确定组合变换:

C=O x P x Tr

最后 proj=(C x 4Dpoint) 并进行透视划分,即 (proj.x/proj.w, proj.y,pro.w)

或者我会更好地确定每个相机的坐标,即 R_zyx x [0;0;z;1] 和 u,v 和 w 通过 Rzyx x [ux,vx,wx,0;uy,vy,wy,0; uz,vz,wz,0;0,0,0,0]?

0 投票
5 回答
6604 浏览

opengl - 光线投射:如何正确应用投影矩阵?

我目前正在 GLSL 中进行一些光线投射,效果很好。无论如何,我现在想从正交投影到透视投影,但我不知道如何正确地这样做。有没有关于如何使用带有光线投射的投影矩阵的好的链接?我什至不确定我必须将矩阵应用于什么(可能以某种方式应用于光线方向?)。现在我这样做(伪代码):

但现在我想使用一个类似于 gluPerspective 函数的 projMatrix,这样我就可以简单地定义纵横比、fov 以及近平面和远平面。所以基本上,任何人都可以为我提供一大块代码来设置类似于 do 的 proj 矩阵gluProjection吗?其次告诉我将它与 rayDirection 相乘是否正确?

0 投票
1 回答
1120 浏览

xna - 带有第一人称相机的 XNA 中的纹理基元

所以我设置了一个 XNA 应用程序。相机处于第一人称模式,用户可以使用键盘四处移动并使用鼠标重新定位相机目标。我已经能够很好地加载 3D 模型,它们出现在屏幕上也没问题。每当我尝试绘制任何图元(纹理与否)时,无论我如何定位相机,它都不会出现在屏幕上的任何位置。

在 Initialize() 中,我有:

在 LoadContent() 中,我有:

在 Draw() 我有:

我认为我在 quadEffect 属性中做错了,但我不太确定是什么。

0 投票
3 回答
4804 浏览

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

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

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

0 投票
3 回答
1767 浏览

opengl - gluLookAt 和 glFrustum 是否会扭曲渲染?

我想知道gluLookAtwithglFrustum是否会扭曲渲染的图片。

这是渲染场景的方式:

在此处输入图像描述

这是呈现它的代码。

InitCamera被调用一次,据我所知,应该设置一个矩阵,就好像我从原点上方 2 个单位和原点前面 3 个单位的位置看向原点。也glFrustum用于创建透视图。

然后TheScene是实际绘制图片的内容:

应该画在原点和围绕它的红色圆圈的中心。但是看着它就感觉很奇怪,让我觉得绿球根本不在中心。

此外,恕我直言,粉红色的球应该画成一个完美的圆形,而不是一个椭圆。

那么,我错了,图片绘制正确,还是我设置错误?

0 投票
5 回答
2550 浏览

wpf - 在 Viewport3D 中的动画期间 WPF 闪烁

我正在编写的 WPF 应用程序中有一些奇怪的行为。当我在相机位置上运行动画时(PerspectiveCamera.PositionProperty 上的 Point3DAnimation),我在应用程序中得到了非常糟糕的闪烁伪影。对于某些帧,3D 渲染的对象似乎消失了,并允许窗口的背景显示出来。

我在下面编写了一个非常简单的示例应用程序来演示我机器上的问题。要使用它,只需编译它并使用向上和向下箭头键来放大和缩小。这个问题在我的机器上非常可重复:每次我尝试放大或缩小时,对象在动画期间闪烁,然后在动画完成后再次变为“实心”。

我正在运行 Windows 7 32 位并使用 NVIDIA GeForce 8600GT。以下是一些有趣的细节:

1)它似乎与硬件有关。我在 WPF 论坛上发了一个帖子,一位用户回复说一切对他来说都很好。我已经请了几个朋友尝试一下,其中一位报告了与我所经历的完全相同的闪烁,而另一位则说一切看起来都很好。

2) 通过 NVIDIA 控制面板强制垂直同步和启用三重缓冲并不能解决问题。

3) 降低动画所需的 FPS 显着改善了问题。在所需的低帧速率(例如 5FPS)下,闪烁消失了……但是动画看起来很糟糕。我在下面提供的示例应用程序仅显示映射到四边形的单个图像,因此我认为这不应该是处理能力的问题!

4)问题似乎与超出可视窗口的多边形顶点直接相关。如果我将程序中的 closeDist 值设置为 4(这样即使“放大”对象仍然完全适合窗口),则不会出现闪烁。但是,当我增加 closeDist 时,一旦我达到“放大”状态的顶点超出窗口的值,就会发生闪烁。随着我增加 closeDist ,闪烁似乎越来越严重。值为 9.8(就在相机的 NearPlaneDistance 完全切断对象之前),闪烁最严重。

事不宜迟,下面是示例代码!

MainWindow.xaml:

MainWindow.xaml.cs:

0 投票
1 回答
2615 浏览

c# - C# XNA - Matrix.CreatePerspectiveFieldOfView - 扩展相机可以看到的距离

我正在使用以下代码来设置我的相机。我可以看到大约100 fs 范围内的元素。我想让相机看得更远。

怎么做 ?

0 投票
0 回答
1164 浏览

android - Android 增强现实Cameraview 转换为屏幕坐标

我目前正在开发自己的增强现实应用程序。我正在尝试编写自己的 AR 引擎,因为到目前为止我看到的所有框架都只能用于 GPS 数据。它将在室内使用,我正在从另一个系统获取我的位置数据。

到目前为止,我所拥有的是:

我知道它丑陋的代码,但我只是想让对象“向量”得到正确绘制,我的位置现在是 (0,0,0)。我的屏幕尺寸硬编码在矩阵 S 和 B (800x480) 中。

结果应该存储在“转换”中,并且应该采用像 transform = {x,y,z,w} 这样的形式对于数学,我使用了这个链接: http: //www.inf.fu-berlin.de /lehre/WS06/19605_Computergrafik/doku/rossbach_siewert/camera.html

有时我的图形被绘制了,但它会跳来跳去并且不在正确的位置。我已经用 SensorManager.getOrientation 记录了滚动,它们看起来不错且稳定。

所以我认为我做错了数学,但我找不到更好的数学来源来转换我的数据。有人可以帮我吗?提前致谢

马丁