美文网首页
threejs - 2 - 相机

threejs - 2 - 相机

作者: 大批 | 来源:发表于2018-04-07 12:31 被阅读729次

:)


简介

常见的相机有两类:透视相机正交相机

  • 透视相机:成像有近大远小的感觉
  • 正交相机:没有近大远小的感觉,类似工程制图

透视相机

透视相机在ThreeJs里面对应的类是THREE.PerspectiveCamera,这个类需要4个参数:视角、近平面距离、远平面距离、宽高比。如果在加上相机的位置和相机照相的方向(lookAt)就可以在三维空间中唯一确定一个空间,出现在这个空间的物体最后就会被渲染出来(近大远小)。

图片来自网络

正交相机

正交相机在ThreeJs里面对应的类是THREE.OrthographicCamera,这个类需要6个参数:左边偏移(偏移是相对于相机中心位置,不是坐标),右偏移,上偏移,下偏移,近平面距离、远平面距离。当然这个相机也是需要一个位置和lookAt方向的


相机demo

在原点添加一个立方体,使用不同的相机观察

    var scene = new THREE.Scene();
    /**
     * 视角 : 45度
     * 宽高比 : window.innerWidth / window.innerHeight
     * 近平面距离 : 1
     * 远平面距离 : 1000
     */
    var camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,1000);
    camera.position.set(10,10,10); // 相机的位置
    camera.lookAt(0,0,0); // 相机看着的方向

    /**
     * OrthographicCamera( left, right, top, bottom, near, far )
     * 这里的 20 不是坐标  是偏移量哈
     * 这里添加了一个比例,如果相机的宽度个高度的比例和渲染的比例对不上,最后渲染出来就会变形
     */
    var acspet = window.innerWidth / window.innerHeight;
    var camera1 = new THREE.OrthographicCamera(-5 * acspet,5 * acspet ,5,-5,1,100);
    camera1.position.set(10,10,10);
    camera1.lookAt(0,0,0);

    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);

    var box = new THREE.Mesh(
        new THREE.BoxGeometry(2,2,2),
        new THREE.MeshBasicMaterial({
            color: 0xffff00,wireframe:true
        })
    );
    box.position.set(0,0,0);
    scene.add(box);

    document.getElementById("content").appendChild(renderer.domElement);
    // 这里切换不同的相机
    renderer.render(scene,camera1);
透视相机 正交相机

主要的相机就这两种:正交相机透视相机


相机辅助线

有时候我们想看看相机的可视范围,这时候就需要添加一些辅助线帮助我们创建设置相机参数。使用的是THREE.CameraHelper这个类需要注意的是需要事先将相机对象添加到场景中

场景中可以有多个相机,不同的相机有不同的视角,最后使用不同的视角渲染出来的效果就不同。还有一个意识需要建立起来,就是 camera 和 renderer是独立的,不同的不同的renderer渲染到的dom不同,不同的camera角度不同可以结合起来使用


End

相关文章

  • threejs - 2 - 相机

    :) 简介 常见的相机有两类:透视相机 和 正交相机 透视相机:成像有近大远小的感觉 正交相机:没有近大远小的感觉...

  • threejs相机只在水平或垂直方向上平移

    threejs 相机水平和垂直移动,这个功能在threejs提供了很方便的操作方法,在threejs里相机enab...

  • ThreeJS总结

    ThreeJS 里元素如下: 1.场景(Scene):是物体、光源等元素的容器, 2.相机(Camera):控制...

  • 02、添加材质、光源以及物体对象的阴影

    threejs中添加新的材质和灯光以及设置阴影属性 首先,threejs的初始化,需要创建场景、相机、渲染器 创建...

  • ThreeJs 认识相机

    一、前言 3D 世界中的相机是一个抽象的描述,其模拟了我们在真实世界中透过相机来看世界的这么一个场景。当我们透过相...

  • three.js浅谈@相机

    相机的种类 上一节我们了解了threejs绘制一个场景的过程,这一节我们来认识以下什么是相机相机分为4种 透视相机...

  • Threejs之三大组件

    Threejs的三大组件是场景,相机和渲染器。初学Threejs,完成了第一个样例,效果如下: 代码如下: 1.相...

  • ThreeJs 天空盒子 图片加载变黑问题

    threeJS功能实现不可缺少scene(场景), camera(相机), renderer(渲染器)三个核心组件...

  • three.js

    threejs官网 三维场景基本要素: 场景(Scene):模型、灯光等 相机(Camera):观察场景的视角 渲...

  • Three.js的相机控件OrbitControls.js

    通过Three.js的相机控件OrbitControls.js可以对Threejs的三维场景进行缩放、平移、旋转操...

网友评论

      本文标题:threejs - 2 - 相机

      本文链接:https://www.haomeiwen.com/subject/uctyhftx.html