THREE.JS自定义中心旋转轴

three.js中自带围绕X,Y,Z轴旋转的api,但要想实现任一方向的中心旋转功能尚未找到简单易懂的资料以供参考。

起初想到的是能否借助四元数来实现?但是四元数还是不太友好,不太容易理解。在吃饭反途中灵光一现,之前看到过有网友借助group实现了中心的自定义,是否同样能借助group来实现旋转轴的自定义呢?

想到这里,顿时激动起来。跑会机房开始验证。

果然可以实现!

原理很简单,借助已有的api即可实现。

首先创建模型,并将其加入一个group中

 let cloud= creatPointCloudByGeometry(geom);
 let group=new THREE.Group();
    group.position.set(0,0,0);
    group.add(cloud);

通过模型自带的旋转api控制模型围绕自身的哪个轴旋转,即确定相对自身的旋转方向。

cloud.rotation.x += gui.x;
cloud.rotation.y += gui.y;
cloud.rotation.z += gui.z;

通过旋转group实现模型的旋转相对于场景方向的控制

 group.rotation.x=gui.GroupX;
 group.rotation.y=gui.GroupY;
 group.rotation.z=gui.GroupZ;

这是我的render函数


    function render(){

        group.rotation.x=gui.GroupX;
        group.rotation.y=gui.GroupY;
        group.rotation.z=gui.GroupZ;
        
        if(gui.rotation){
            cloud.rotation.x += gui.x;
            cloud.rotation.y += gui.y;
            cloud.rotation.z += gui.z;
        }
       
        renderer.render(scene,camera);
       
        requestAnimationFrame(render);


    }

通过dat.gui实现参数的调节,效果很不错。

在这里插入图片描述
在这里插入图片描述

总结:本方法借助已有的api实现了对任意轴的中心旋转功能。

思路:

1.通过模型的旋转api确定模型相对自身的旋转方向;

2.通过group的旋转控制模型相对场景的方向

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值