问题标签 [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.
xna - 对使用 XNA 进行光线追踪的 World View Projection Matrix 问题感到困惑
因此,我决定重写一个用 C++ 编写的旧光线追踪器,并利用 XNA 框架在 C# 中完成。
我仍然有我的旧书并且可以按照笔记进行操作,但是我对一些想法感到困惑,我想知道是否有人可以很好地表达出来。
在上面的代码中,u' 和 v' 是为给定相机计算的标准正交基(我知道相同的名称会让人感到困惑)
如果我按照这本书的方式去做,它就会起作用。但是,我正在尝试利用 XNA 并且对如何执行相同的操作但使用矩阵感到困惑。
所以我尝试用 XNA 代码替换以下步骤
正是在这一点上,我对我应该应用的操作顺序感到困惑,以便获得任何像素 (x, y) 的方向向量?
在我的脑海中,我在想:(u,v)= ProjectionMatrix * ViewMatrix * ModelToWorld * Vertex(在模型空间中)
因此,这是有道理的
顶点(在世界空间中)= Inverse(ViewMatrix) * Inverse(ProjectionMatrix) * [u, v, 0]
我还记得一些关于视图矩阵如何被转置和倒置的事情,因为它是正交的。
opengl - OpenGL - gluPerspective / glFrustum - zNear & zFar 问题
我正在写一个太空探索应用程序。我决定以光年为单位,并准确地模拟了恒星之间的距离。经过修补和大量艰苦的工作(主要是学习绳索),我已经让相机从穿越宇宙的星际飞船的角度正常工作。
最初我没有注意 gluPerspective () 的 zNear 参数,直到我研究行星物体。由于我的比例尺是光年单位,我很快意识到由于 zNear 为 1.0f,我将无法看到这样的物体。经过实验,我得出了这些数字:
这非常有效,因为我能够巡航我的太阳系(位置 0,0,0)并靠近行星,这些行星看起来光线充足且纹理贴图。然而,其他系统(不在位置 0,0,0)更难通过,因为物体以不寻常的方式远离相机。
然而,我注意到在宇宙中巡航时开始出现奇怪的视觉故障。我身后的物体会“环绕”并显示在前方,如果我在 Y 方向旋转 180 度,它们也会出现在原来的位置。因此,当在太空中翘曲时,大多数恒星都正确地视差,但有些则出现并朝相反的方向行进(至少可以说令人不安)。
通过将 zNear 更改为 0.1f 可以立即纠正所有这些故障(但也不会解决太阳系物体)。所以我被困住了。我也尝试过使用 glFrustum 并产生完全相同的结果。
我使用以下内容来查看世界:
根据需要使用相关的相机代码进行定位。即使禁用相机功能也不会改变任何东西。我什至尝试过 gluLookAt() 并再次产生相同的结果。
使用极端 zNear / zFar 值时 gluPerspective() 是否有限制?我试图缩小范围,但无济于事。我什至通过放大所有内容并使用更大的 zNear 值将我的世界单位从光年更改为公里 - 没有。帮助!
c++ - gluLookAt() 使屏幕空白
我没有太多的OpenGL经验。我正在尝试画一个茶壶并在茶壶周围移动相机。为此,我使用了 gluLookAt 函数。问题是当我调用 gluLookAt 时屏幕是空白的,我看不到我的茶壶。
为什么 gluLookAt() 使屏幕空白,我该如何解决这个问题?当 camera() 未被调用时,代码按预期执行;展示了一个茶壶。
opencv - 来自特征点的 OpenCV 外部相机
当我从每个相机的视图中获取对象的图片时,如何使用 OpenCV 检索每个相机的旋转矩阵、平移向量和一些缩放因子?对于每张图片,我都有几个特征点的图像坐标。并非所有特征点在所有图片中都可见。我想将对象特征点的计算 3D 坐标映射到稍微不同的对象,以将第二个对象的形状与第一个对象对齐。
我听说可以使用cv::calibrateCamera(...)
,但我无法完全通过它...
有人遇到过这种问题吗?
java - 在 Android 上使用 libgdx 的立方体网格
我已经用 libgdx 做了一个网格,我正在尝试用一些颜色填充网格。
我应该使用哪个渲染参数?我正在使用透视相机。
java - libgdx:SpriteBatch 未使用 PerspectiveCamera 显示
虽然我确实具备 OpenGL 的基本知识,但我只是从 libgdx 开始。
我的问题是:为什么,具有完全相同的代码但仅从 OrthographicCamera 切换到 PerspectiveCamera 的效果不再显示我的任何 SpriteBatches ?
这是我使用的代码:
创建()方法:
和 render() 方法:
现在,如果在我的 resize(int width, int height) 方法中,我像这样设置相机:
我明白了:
但是,如果我更改相机类型:
我明白了:
我问的原因是因为我真的很喜欢 libgdx 内置的在 OpenGL 中绘制文本(字体)的能力。但是在他们的示例中,他们使用了 SpriteBatch,他们将其路径到 Font 实例,并且他们也总是使用 Ortho Camera。我想知道 SpriteBatch 和字体绘图功能是否适用于 PerspectiveCamera。
java - 如何在 jogl 中使用 gluPerspective()?
我有一个init()
方法,我正在尝试创建一个Perspective
渲染。下面是我到目前为止的代码,但我传递给的数字gluPerspective(fovy, aspect, zNear, zFar)
是错误的。我认为fovy
是视野(60度),并且是纵横比(宽度/高度) ,aspect
但我不知道是什么。zNear
zFar
c# - 寻找示例代码 Silverlight 3d c#
我想创建一个地震的可视化,如下图所示,我可以在其中移动相机并显示 100 或 1000 个小圆形物体。
. 我可以在网上找到的所有演示都显示了一个旋转的物体——我想在一个已知的世界上旋转相机。
我的世界就像上图中的地图矩形,我的数据(圆圈)显示在上面/下面。
所以我的世界应该说如果使用 Lat/Lng 之类的
172、-40 到 179、-45 并具有 Z(深度),或者它可以很容易地 23000、14000 到 29000、19000
我的图像将显示在 Z 为 0 的坐标上
谁能给我看一个演示或示例代码来做到这一点?
干杯
克里斯
matlab - 来自相同投影矩阵的不同基本矩阵
我使用两个投影矩阵 P1 和 P2(例如我使用恐龙数据集),我需要计算基本矩阵 F。所以我使用两个 Matlab 函数:
- Peter Kovesi 的函数:www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m
- 齐瑟曼:www.robots.ox.ac.uk/~vgg/hzbook/code/vgg_multiview/vgg_F_from_P.m
这些函数应该做同样的事情,但我有不同的 F 值!怎么可能?哪个是正确的功能?
如果两个点 X1 和 X2 在两个不同的图像中“相同”,则 X2^T*F*X1 = 0 ... 所以我通过使用 SURF 从两个旋转图像(5 度)中找到了两个对应点,但是 X2^T *F*X1 在这两个函数中永远不会等于零。有任何想法吗?
相反,如果我使用这个从匹配点计算 F 的函数:
- 由 Peter Kovesi 编写的 ransac 拟合基本矩阵:ransacfitfundmatrix.m
我有那个 X2^T*F*X1 = 0 .... 显然 F 与其他两个函数的两个 FI 不同...
matlab - 极线几何中的预期点不正确
我有 2 台摄像机(摄像机 2 正在平移摄像机 1)及其投影矩阵P1和P2。他们拍摄了一张图像,I1(相机 1)和I2(相机 2)512x512。
我计算基本矩阵 F:
然后我使用 RANSAC、 point1和point2找到了两个带有 SURF 的图像之间的匹配点。
我试图计算极线并通过point2
所以point2应该与 I2 中的预期点epoint非常相似,使用极线几何计算(因为 SURF 使用了很多近似值)。
正如您在 8.2 页上看到的那样。223 在Hartley & Zisserman 的书上,
其中 x' 是epoint,而 x 是point1。
我的Hπ是:
所以epoint是:
我记得,图像大小是 512x512,所以epoint.x在图像之外......正如你所看到的,epoint 与 point2 不同(很多不同)
我的问题是,为什么?我在哪里犯了一些错误?
谢谢