Threejs利用矩阵进行镜像

由于在Threejs中没有镜像的api,要想获得镜像,就需要自己去写方法。

首先看看镜像的原理:

https://blog.csdn.net/rabbitguiming/article/details/3963213

然后根据原理写方法,这里需要用到applyMatrix这个api,另外有一点比较奇怪的是,如果我不用translateZ这个api,前面的赋值就没用,不清楚究竟是什么原理。下面的例子可以看到,赋予的z值是300,经过矩阵的计算后,变成了-300.

function initObject() {
            var geometry = new THREE.CubeGeometry(100, 100, 100);          
            var material = new THREE.MeshPhongMaterial({color:0xFF0000});
            mesh = new THREE.Mesh(geometry, material);
            var m = new THREE.Matrix4();
            var vec=new THREE.Vector3(0,0,1);

            m.set( 1-2*vec.x*vec.x, -2*vec.x*vec.y, -2*vec.x*vec.z, 0,
                -2*vec.x*vec.y, 1-2*vec.y*vec.y, -2*vec.y*vec.z, 0,
                -2*vec.x*vec.z, -2*vec.y*vec.z, 1-2*vec.z*vec.z, 0,
                0, 0, 0, 1 );
            mesh.applyMatrix(m);
            mesh.translateZ(300);          
            scene.add(mesh);
            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值