标签: projection-matrix

Three.JS旋转投影,使y轴成为z轴

传统上,在3D投影中,Y轴是表示"上下"的轴.我学会了用其他引擎来思考它,因为该轴是Z轴.我想知道的是Three.JS中是否有一种方法可以使Z轴成为"上/下"轴.如果是的话,会有什么后果吗?

这是我想要的图表: 在此输入图像描述

3d projection-matrix three.js

28
推荐指数
3
解决办法
1万
查看次数

了解libGDX投影矩阵

在过去的几周里,我一直在尝试学习libGDX库.我发现很难,尤其是我第一次尝试游戏开发时,要理解相机/视口关系系统.我被告知使用的一行代码和API提到的是:

    batch.setProjectionMatrix(camera.combined);
Run Code Online (Sandbox Code Playgroud)

尽管进行了4个小时的研究,但我仍然缺乏对此代码功能的完整理解.根据我的基本理解,它"告诉"相机正在寻找的批次.我缺乏理解力令人沮丧和愤怒,如果有人能帮助我,我会很感激.代码片段的另一个问题是我不确定何时需要实现(在render方法中,create方法等).

java camera android projection-matrix libgdx

20
推荐指数
3
解决办法
6166
查看次数

通过QR分解,SVD(和Cholesky分解?)计算投影/帽子矩阵

我试图在R中计算P任意N x J矩阵的投影矩阵S:

P = S (S'S) ^ -1 S'
Run Code Online (Sandbox Code Playgroud)

我一直试图用以下功能执行此操作:

P <- function(S){
  output <- S %*% solve(t(S) %*% S) %*% t(S)
  return(output)
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,我得到的错误看起来像这样:

# Error in solve.default(t(S) %*% S, t(S), tol = 1e-07) : 
#  system is computationally singular: reciprocal condition number = 2.26005e-28
Run Code Online (Sandbox Code Playgroud)

我认为这是数值下溢和/或不稳定的结果在许多地方一样讨论R-帮助这里,但我没有足够的经验使用SVD或QR分解来解决这个问题,要不然就把这个现有的代码到行动.我也尝试了建议的代码,即将solve写成一个系统:

output <- S %*% solve (t(S) %*% S, t(S), tol=1e-7)
Run Code Online (Sandbox Code Playgroud)

但它仍然无效.任何建议,将不胜感激.

我很确定我的矩阵应该是可逆的并且没有任何共线性,只是因为我尝试用正交虚拟变量矩阵进行测试,但它仍然不起作用.

另外,我想将它应用于相当大的矩阵,所以我正在寻找一个简洁的通用解决方案.

regression r svd projection-matrix qr-decomposition

10
推荐指数
1
解决办法
3316
查看次数

OpenGL ES屏幕投影矩阵和相机投影矩阵

我有一个投影矩阵,来自增强现实应用程序中的相机校准,只要屏幕宽高比与相机图像宽高比匹配,一切都很好.当相机图像与屏幕边缘不匹配时,您将在跟踪中出现失真.

问题场景:

  • 在iPad上播放1280x720视频
  • iPhone 5S上的640x480视频.

工作场景:

  • iPad上的640x480视频
  • iPhone 5S上的1280x720视频.

目标:我想以一般方式处理此屏幕/相机纵横比不匹配.

信箱格式示例

此问题的存在是因为视图在屏幕的纵横比(iPad为4:3)中规范化了设备坐标,而投影矩阵具有相机图像的纵横比(对于720p为16:9).背景图像需要与投影矩阵匹配或增强现实的幻觉失败,所以如果我想在'fit'和'fill'之间切换,我需要更改投影矩阵以匹配图像大小.

注意:我希望在没有OpenGL特定解决方案的情况下处理这个问题.所以我正在寻找一个涉及操纵投影矩阵的更一般的数学答案.

opengl-es matrix projection-matrix ios

8
推荐指数
1
解决办法
406
查看次数

countNonZero函数在openCV中给出一个断言错误

我尝试使用countNonZero()函数进行水平投影,如下所示.

Mat src = imread(INPUT_FILE, CV_LOAD_IMAGE_COLOR);
Mat binaryImage = src.clone();
cvtColor(src, src, CV_BGR2GRAY);

Mat horizontal = Mat::zeros(1,binaryImage.cols, CV_8UC1);

for (int i = 0; i<binaryImage.cols; i++)
{
    Mat roi = binaryImage(Rect(0, 0, 1, binaryImage.rows));

    horizontal.at<int>(0,i) = countNonZero(roi);
    cout << "Col no:" << i << " >>" << horizontal.at<int>(0, i);
}
Run Code Online (Sandbox Code Playgroud)

但是在调用countonZero()函数时出现错误.错误如下.

    OpenCV Error: Assertion failed (src.channels() == 1 && func != 0) in cv::countNo
    nZero, file C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\core\src\st
    at.cpp, line 549
Run Code Online (Sandbox Code Playgroud)

有人可以指出错误吗?

c++ opencv assertion projection-matrix

8
推荐指数
1
解决办法
1万
查看次数

OpenGL - ortho Projection矩阵,glViewport

我无法解决这些问题.首先,在2D游戏中,投影矩阵应设置为正交,左,右,上,下与窗口匹配,对吗?但是当窗口调整大小时,我应该只更改glViewport,而不是投影矩阵吗?我如何保持纵横比?

有人可以解释这两件事的目的,在二维正字游戏中,这样我可以更好地理解它吗?

感觉就像OpenGL在2D设置中做了很多无用的东西.当图像已经存在时,栅格化和计算片段,将顶点坐标转换为NDC仅转换回glViewport已经存在的位置.

另外,传统的免费OpenGL如何制作我们自己的矩阵,而不是我们自己的glViewport计算呢?

谢谢.

opengl 2d viewport projection-matrix

6
推荐指数
1
解决办法
5089
查看次数

如何从Projection和ModelView矩阵中获取CATransform3D?

所有,

我有一个iphone项目,使用OpenGL-ES为给定的模型视图矩阵和给定的投影矩阵绘制3D模型.我需要用CALayer替换3D模型,所以我将模型视图矩阵的值放入CATransform3D结构并分配给它layer.transform.它运作良好,图层可见并按预期在屏幕上移动,但过了一段时间后我意识到我的图层行为不够精确,我应该考虑投影矩阵.然后出现了一个问题:当我简单地连接两个矩阵时,我的图层看起来很奇怪(它非常小,大约2个像素,而它应该是大约300个,因为它距离很远)或根本不可见.我该如何解决?

这是一段代码:

- (void)adjustImageObjectWithUserInfo:(NSDictionary *)userInfo
{
    NSNumber *objectID = [userInfo objectForKey:kObjectIDKey];
    CALayer *layer = [self.imageLayers objectForKey:objectID];
    if (!layer) { return; }

    CATransform3D transform = CATransform3DIdentity;
    NSArray *modelViewMatrix = [userInfo objectForKey:kModelViewMatrixKey];

      // Get raw model view matrix;
    CGFloat *p = (CGFloat *)&transform;
    for (int i = 0; i < 16; ++i)
    {
        *p = [[modelViewMatrix objectAtIndex:i] floatValue];
        ++p;
    }

      // Rotate around +z for Pi/2 
    transform = CATransform3DConcat(transform, CATransform3DMakeRotation(M_PI_2, 0, 0, 1));

      // Project with projection matrix
    transform …
Run Code Online (Sandbox Code Playgroud)

3d opengl-es calayer catransform3d projection-matrix

6
推荐指数
2
解决办法
3531
查看次数

将2D点反投影到3D Plucker线

我正在尝试构建一个跟踪器(手动跟踪个人项目),因此我需要使用Plucker坐标将2d点反投影到3d线.(如光线追踪)

作为输入,我有一个点的2d坐标和投影矩阵.

关于plucker坐标的网上信息概述了它们有用的原因,但是没有纸质分析地描述上述过程.(他们只是提到他们回到投影线,没有任何进一步的描述)

有人可以指出我正确的方向吗?

raytracing projection projective-geometry projection-matrix

6
推荐指数
1
解决办法
3459
查看次数

OpenGL:混合正交投影和透视投影

我想混合透视和正交视图,但我不能让它工作.

我希望X和Y坐标是正交和Z透视.为了澄清,我添加了从OpenGL坐标到屏幕显示的所需转换的草图:

所需视图的草图

(我从一个教程开始,但无法找到如何获得顶部,底部等值)

opengl projection-matrix

6
推荐指数
1
解决办法
1202
查看次数

如何从单幅图像中获取相机变换矩阵?

我有一个图像和几个已知点及其到图像平面的投影。(每个 3d 点都有到 2d 的投影)。我的目标是找到 4x4 矩阵,以便轻松计算任何 3d 点到图像平面的投影。我尝试使用本主题中的蒙特卡罗方法:如何将 2D 点反向投影为 3D? 但结果矩阵适用于 oXY 平面,不适用于 Z 坐标(非零 Z 的点投影不正确)。我还使用了 OpenCV.CalibrateCamera 方法。我得到了旋转矩阵、相机矩阵和平移向量,但它对于非零 Z 点也不好。另外,我对3个矩阵不感兴趣,我只想得到一个4x4的矩阵用于投影和非投影点。

看这张图片: 插图

我很确定我的问题已经解决,但不知道如何解决。

3d opencv matrix computer-vision projection-matrix

6
推荐指数
1
解决办法
5369
查看次数