threejs使用gui改变相机的参数

调节相机远近角度

  1. 定义相机的配置:

    javascript 复制代码
    const cameraConfg = reactive({ fov: 45 })
  2. gui中加入调节fov的方法

    javascript 复制代码
      const gui = new dat.GUI();
    
      const cameraFolder = gui.addFolder("相机属性设置");
      cameraFolder.add(cameraConfg, "fov", 0, 100).name("修改相机远近").onChange((num) => {
        camera.fov = num;
        camera.updateProjectionMatrix();
      });
  3. 实现效果

调节相机的位置

  1. 定义参数:

    javascript 复制代码
    const cameraConfg = reactive({
        fov: 45,
        viewX: 0, 
        viewY: 20, 
        viewZ: 10
    });
  2. 初始化相机,设置相机位置。

    javascript 复制代码
    // 2、创建相机
    const camera = new THREE.PerspectiveCamera(
        cameraConfg.fov,
        window.innerWidth / window.innerHeight,
        0.25,
        1000
    );
    camera.position.set(cameraConfg.viewX, cameraConfg.viewZ, cameraConfg.viewY);
  3. 加入gui的配置

    javascript 复制代码
      const gui = new dat.GUI();
      const cameraFolder = gui.addFolder("相机属性设置");
    
      cameraFolder.add(cameraConfg, "viewX", -50, 50).name("修改视角-x").onChange((num) => {
        cameraConfg.viewX = num;
        camera.position.set(cameraConfg.viewX, cameraConfg.viewZ, cameraConfg.viewY);
      });
      cameraFolder.add(cameraConfg, "viewY", 0, 100).name("修改视角-y").onChange((num) => {
        cameraConfg.viewY = num;
        camera.position.set(cameraConfg.viewX, cameraConfg.viewZ, cameraConfg.viewY);
      });
      cameraFolder.add(cameraConfg, "viewZ", 0, 100).name("修改视角-z").onChange((num) => {
        cameraConfg.viewZ = num;
        camera.position.set(cameraConfg.viewX, cameraConfg.viewZ, cameraConfg.viewY);
      });
  4. 最后的效果

相关推荐
患得患失9495 天前
【threejs】材质共享导致的典型问题
材质·threejs
gis分享者7 天前
学习threejs,基于噪声函数的顶点着色器动态插桩技术实现模型形变
threejs·模型·着色器·顶点·动态插桩·噪声函数·形变
gis分享者11 天前
学习threejs,打造交互式泡泡、粒子特效与科幻氛围
threejs·orbitcontrols·gltfloader·rgbeloader·ambientlight·meshphysical
陶甜也15 天前
ThreeJS曲线动画:打造炫酷3D路径运动
前端·vue·threejs
gis分享者22 天前
学习threejs,打造交互式花卉生成器
交互·threejs·生成·shadermaterial·花卉·planegeometry
患得患失9491 个月前
【ThreeJs】【性能优化】从渲染底层到业务逻辑的系统性提速方案
优化·threejs
接着奏乐接着舞。1 个月前
3D地球可视化教程 - 第3篇:地球动画与相机控制
前端·vue.js·3d·threejs
gis分享者1 个月前
学习threejs,实现粒子化交互文字
threejs·文字·shadermaterial·粒子化·icosahedron
患得患失9491 个月前
【Threejs】【工具类】Raycaster实现 3D 交互(如鼠标拾取、碰撞检测)的核心工具
3d·交互·threejs·raycaster
gis分享者2 个月前
学习threejs,使用自定义GLSL 着色器,实现水面、粒子特效
threejs·着色器·glsl·粒子·shadermaterial·unrealbloompass·水面