three.js 如何根据 mvp 矩阵来做渲染啊?

2020-12-19 13:19:11 +08:00
 cs3230524

不是很懂 3D,有熟悉的简单解释一下么。 这是矩阵信息

{
    "viewport": [-105, 0, 851, 1136], // Viewport
    "models": [
    {
        "name": "pinball", 
        "mvprojection": [ // Model View Projection
            2.394426, -0.04623331, -0.1083115, -0.1077713, 
            0.0528238, 1.809534, -0.05749675, -0.05720999, 
            -0.2414996, -0.06555773, -0.9975035, -0.9925284, 
            -187.2699, -213.9585, 399.7688, 407.75
        ],
        "projection": [ //Projection
            0, -1.811002, 0, 0, 
            2.407058, 0, 0, 0, 
            0.02137727, 0.0334729, -1.005013, -1, 
            0, 0, -10.02506, 0
        ],
        "modelmatrix": [  //Model
            0.02752107, 0.9937948, 0.1077713, 0, 
            -0.9981321, 0.02143729, 0.05720999, 0, 
            0.05454468, -0.1091445, 0.9925284, 0, 
            110.6072, -74.17903, -407.75, 1
        ]
    }
]}

这是一个物体

        var planeGeometry = new THREE.PlaneGeometry(60, 20);
        var planeMaterial = new THREE.MeshBasicMaterial({
          color: 0xAAAAAA
        });
        var plane = new THREE.Mesh(planeGeometry, planeMaterial);

所以我应该怎么操作啊?

1801 次点击
所在节点    3D
2 条回复
Chanran
2020-12-19 16:23:49 +08:00
有了 MVP 直接 WebGL 渲染啊,three.js 帮你做的事就是帮你隐藏了 MVP 矩阵计算的复杂性的。
gggxxxx
2020-12-19 20:26:00 +08:00
有精力的话,mvp 还是值得看看公式,不难。
mvp 就是 m 和 v 和 p 三个矩阵相乘,在 shader 里决定 vertex 的最终位置就是每个点乘以 mvp 后的位置。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX