首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将3d模型与2d视频合成需要更复杂的视图矩阵计算

将3d模型与2d视频合成需要更复杂的视图矩阵计算
EN

Stack Overflow用户
提问于 2010-05-17 08:58:32
回答 1查看 493关注 0票数 0

我正在利用一些2d / 3d跟踪数据(由pfHoe提供)来帮助将一些3d模型集成到一些2d视频的播放中。

一切都很顺利……好吧..。但相对于视频背景,模型仍然有一些明显的“滑动”,我怀疑这可能是因为XNA CreatePerspective辅助方法没有考虑到pfHoe提供的一些额外数据,例如独立的水平/垂直视场角度和焦距。

谁能给我指出一些构造包含这些细节的视图矩阵的例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-18 20:50:26

这篇MSDN文章向您展示了如何编写一个方法来创建独立考虑水平和垂直视野的透视矩阵(尽管是在C++中)。

http://msdn.microsoft.com/en-us/library/bb147302%28VS.85%29.aspx

代码语言:javascript
运行
复制
D3DXMATRIX 
ProjectionMatrix(const float near_plane, // Distance to near clipping 
                                         // plane
                 const float far_plane,  // Distance to far clipping 
                                         // plane
                 const float fov_horiz,  // Horizontal field of view 
                                         // angle, in radians
                 const float fov_vert)   // Vertical field of view 
                                         // angle, in radians
{
    float    h, w, Q;

    w = (float)1/tan(fov_horiz*0.5);  // 1/tan(x) == cot(x)
    h = (float)1/tan(fov_vert*0.5);   // 1/tan(x) == cot(x)
    Q = far_plane/(far_plane - near_plane);

    D3DXMATRIX ret;
    ZeroMemory(&ret, sizeof(ret));

    ret(0, 0) = w;
    ret(1, 1) = h;
    ret(2, 2) = Q;
    ret(3, 2) = -Q*near_plane;
    ret(2, 3) = 1;
    return ret;
}   // End of ProjectionMatrix

在上面链接的文章中进一步解释了数学,以帮助您编写此方法的C#版本。祝你好运:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2846166

复制
相关文章

相似问题

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