首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >3D建模问题

3D建模问题
EN

Stack Overflow用户
提问于 2009-09-07 17:20:20
回答 2查看 183关注 0票数 0

我有一个3D建模问题,这与XNA这样的3D框架无关。换句话说,我必须自己运行计算(尽管使用一些框架功能也可以)。

我有一组N个三维点,让我们称它们为p1 to pN。虽然这些点是未知的,但当相机具有由单位向量U1描述的方向时,我知道它们的投影2D位置(pp1到ppN)。

当相机方向不同时,我如何找出这些点的投影,就像不同的向量U2所描述的那样?

如有任何帮助,我们将非常感谢:)

谢谢

EN

回答 2

Stack Overflow用户

发布于 2009-09-07 17:27:14

你不能。当您只知道相机的位置和方向以及点的投影时,您不知道该点的实际位置-它可以是从相机通过投影平面到无穷远的直线上的任何位置。因此,你甚至无法分辨(在一般情况下)该点是否对处于不同位置和方向的相机可见。

但是,如果你对这些点有所了解--例如,它们形成了一个已知大小的立方体--你就可以利用这些知识和这些点的投影来计算点的位置,进而找到这些点在其他相机位置和方向上的投影。

票数 1
EN

Stack Overflow用户

发布于 2009-09-07 17:45:15

我可能完全错了,因为我已经很长时间没有接触3D数学或矩阵了。

基于http://www.songho.ca/opengl/gl_transform.html

公式:

代码语言:javascript
运行
复制
D * M * P * W * V = S
Data * Model * Perspective * W * Viewport = Screen

您知道M1P1W1V1S1

您正在寻找给定了M2P2=P1W2=W1V2=V1S2

此外,您还知道D1=D2 (三维点不移动)。

代码语言:javascript
运行
复制
D1 * M1 * P1 * W1 * V1 = S1
D1 * M2 * P1 * W1 * V1 = S2

求解D1并将其等同于:

代码语言:javascript
运行
复制
D1 = S1 * M1^-1 * P1^-1 * W1^-1 * V1^-1
D1 = S2 * M2^-1 * P1^-1 * W1^-1 * V1^-1
S1 * M1^-1 * P1^-1 * W1^-1 * V1^-1 = S2 * M2^-1 * P1^-1 * W1^-1 * V1^-1

删除相似术语:

代码语言:javascript
运行
复制
S1 * M1^-1 = S2 * M2^-1

现在解决S2的问题:

代码语言:javascript
运行
复制
S1 * M1^-1  * M2 = S2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1390269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档