首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何创建一个轴测斜/骑兵/内阁与三个?

我如何创建一个轴测斜/骑兵/内阁与三个?
EN

Stack Overflow用户
提问于 2014-09-24 16:08:03
回答 2查看 1K关注 0票数 7

我在THREE.js等距相机中找到了关于如何创建(轴测)等距相机的例子,但是如何创建轴测斜线呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-26 12:52:12

你可以用一个斜的内阁视角渲染一个场景,在这个场景中,相机是一个正交的,并且在渲染之前,你的网格的几何是用剪切矩阵倾斜的。

代码语言:javascript
运行
复制
// create shear matrix
var alpha = Math.PI / 6; // or Math.PI / 4

var Syx = 0,
    Szx = - 0.5 * Math.cos( alpha ),
    Sxy = 0,
    Szy = - 0.5 * Math.sin( alpha ),
    Sxz = 0,
    Syz = 0;

var matrix = new THREE.Matrix4();

matrix.set(   1,   Syx,  Szx,  0,
            Sxy,     1,  Szy,  0,
            Sxz,   Syz,   1,   0,
              0,     0,   0,   1  );

// apply shear matrix to geometry                  
mesh.geometry.applyMatrix4( matrix ); // this is the work-around

编辑:您也可以使用Matrix4.makeShear()方法填充剪切矩阵。

three.js r.144

票数 8
EN

Stack Overflow用户

发布于 2020-09-10 02:48:11

基于@WestLangley的代码,这里是如何进行斜投影,而不修改几何,只是相机的矩阵。

代码语言:javascript
运行
复制
// shear matrix
// ref: http://www.flipcode.com/documents/matrfaq.html#Q43
//        | 1    Syx  Szx  0 |
//        |                  |
//        | Sxy  1    Szy  0 |
//    M = |                  |
//        | Sxz  Syz  1    0 |
//        |                  |
//        | 0    0    0    1 |
//        |                  |

var alpha = Math.PI / 6; // or Math.PI / 4

var Syx = 0,
    Szx = - 0.5 * Math.cos( alpha ),
    Sxy = 0,
    Szy = - 0.5 * Math.sin( alpha ),
    Sxz = 0,
    Syz = 0;

var matrix = new THREE.Matrix4();

matrix.set(   1,   Syx,  Szx,  0,
            Sxy,     1,  Szy,  0,
            Sxz,   Syz,   1,   0,
              0,     0,   0,   1  );

// apply shear matrix to camera
camera.projectionMatrix.multiply(matrix);
camera.projectionMatrixInverse.getInverse( camera.projectionMatrix );

您将在调用projectionMatrix之后进行这些camera.updateProjectionMatrix()修改。我查看了camera.updateProjectionMatrix的代码,找出了如何做到这一点,包括学习它存储的逆矩阵。

一个轻微的缺点是它移动了一些视图,但你可以移动相机的位置或圆顶的边界来解释这一点。(也许还有更好的方法。)

小提琴

three.js r.120

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

https://stackoverflow.com/questions/26021618

复制
相关文章

相似问题

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