美文网首页three.js简易教程
three.js(12)-透视投影相机

three.js(12)-透视投影相机

作者: 姜治宇 | 来源:发表于2021-11-23 10:49 被阅读0次

透视投影相机PerspectiveCamera

透视投影相机比较常用,也肥肠容易理解。比如电影院的投影仪,当我们把手靠近时,就会在幕布上投下巨大的影子,而远离时则影子变小。 camera.png
PerspectiveCamera( fov, aspect, near, far )
param.png

参数基本上都是固定的,我们实际关心的是相机的摆放位置和朝向。

相机位置(position)

相机的位置如果不设定,默认是在原点(0,0,0)的位置。而物体如果不指定位置,默认也是创建在原点的。这样的话,相机就在物体的肚子里面了,这样是看不到物体的。

相机角度(lookAt)

相机放好了,然后就得保证镜头的朝向。如果你把镜头朝向物体的反方向,这样是拍摄不到物体的。
我们一般设定相机是朝向原点位置,这样可以保证看到物体。


pos.png

下面是一个相机由近及远的效果。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/build/three.js"></script>
    <title>Document</title>
</head>

<body>
    <div id="webgl"></div>
</body>

</html>
<script>
    var scene = new THREE.Scene();
    console.log(scene);
    //几何体
    var geometry = new THREE.BoxGeometry(100, 100, 100); //创建一个立方体几何对象Geometry
    //材质
    var material = new THREE.MeshBasicMaterial({
        color: 0x00ffff
    });
    //合成对象
    var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
    scene.add(mesh); //网格模型添加到场景中

    //创建相机对象
    var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 100, 600);


    /**
     * 创建渲染器函数
     */
    var renderer = new THREE.WebGLRenderer();//画布
    renderer.setSize(1000, 500);//设置渲染区域尺寸
    renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
    //将渲染好的canvas追加到dom
    var cont = document.getElementById('webgl');
    cont.appendChild(renderer.domElement);
    render();
    function render() {
        let count = 0;
        let time = setInterval(() => {
            console.log(count);
            if (count < 200) {
                camera.position.set(count, count, count); //慢慢移动镜头
            } else {

                clearInterval(time);

            }

            camera.lookAt(new THREE.Vector3(0,0,0)); //设置相机朝向(指向原点位置)
            renderer.render(scene, camera);//渲染必须有场景和相机两个对象
            count+=10;
        }, 1000);

    }
</script>
camera.gif

通过图示看到,一开始是看不到物体的,因为相机在物体肚子里面,然后慢慢移动镜头跳出物体才看到物体。

相关文章

  • three.js(12)-透视投影相机

    透视投影相机PerspectiveCamera 透视投影相机比较常用,也肥肠容易理解。比如电影院的投影仪,当我们把...

  • 03-Three.js 场景对浏览器的自适应

    透视投影相机PerspectiveCamera自适应渲染 正投影相机OrthographicCamera自适应渲染

  • Three.js基础探寻三——透视投影照相机

    5.透视投影照相机构造函数 透视投影照相机(Perspective Camera)的构造函数是: - fov 可视...

  • three.js学习笔记(一)

    1、OrthographicCamera 正交投影照相机 2、PerspectiveCamera 透视投影照相机 ...

  • 相机投影方式

    相机分为: 透视投影相机:也叫中心投影,较为接近视觉效果正交投影相机:也叫平行投影,没有近大远小的效果 中心投影 ...

  • webgl初级

    四大组建:一、相机1、透视相机:透视投影符合人们心里习惯,即离视点近的物体大,离视点远的物体小。2、正投影相机:就...

  • three.js的两种相机

    THREE.js支持两种相机类型,透视相机(PerspectiveCamera,Css3的3d渲染也存在persp...

  • Three.js基础探寻二——正交投影照相机

    1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式。 针对投影方式照相机分为正交投影照相机和透视投影照...

  • 相机矩阵(Camera Matrix)

    投影 透视投影(perspective projection) 透视投影属于中心投影。透视投影图简称为透视图或透视...

  • [OpenGLES] 透视投影的“小孔成像”原理

    在OpenGL里经常会使用到两种投影方式: 正交投影 透视投影 物体在透视投影中会呈现出“近大远下”的透视现象大家...

网友评论

    本文标题:three.js(12)-透视投影相机

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