当前位置:  开发笔记 > 后端 > 正文

如何在WPF中创建偏离中心的PerspectiveCamera?

如何解决《如何在WPF中创建偏离中心的PerspectiveCamera?》经验,为你挑选了1个好方法。

我试图或多或少地重新创建Johnny Lee的Wii头部跟踪应用程序,但使用增强现实工具包进行跟踪,使用WPF进行图形处理.要做到这一点,我需要使用top,bottom,right和left参数创建一个透视摄像头来创建我的视锥体,而不是视野和宽高比(对于熟悉OpenGL的人,我想使用WPF等效物) glFrustum而不是gluPerspective)

问题是,WPF的PerspectiveCamera类似乎没有这些选项.如果我不得不使用MatrixCamera,我可以手动创建投影矩阵,但我想避免这种情况.有谁知道更好的方法吗?



1> Jonathan Sch..:

我从未找到过这样做的内置方式,所以我自己写了.它背后的数学可以在OpenGL glFrustum文档中找到.如果有其他人遇到过这个问题,这应该适合你:

public Matrix3D CreateFrustumMatrix(double left, double right, double bottom, double top, double near, double far)
{
    var a = (right + left) / (right - left);
    var b = (top + bottom) / (top - bottom);
    var c = -(far + near) / (far - near);
    var d = -2 * far * near / (far - near);

    return new Matrix3D(
        2 * near / (right - left), 0,                         0, 0,
        0,                         2 * near / (top - bottom), 0, 0,
        a,                         b,                         c, -1,
        0,                         0,                         d, 0);
}

只需将MatrixCamera.ProjectionMatrix设置为该方法的返回值,就可以了.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有