JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Three.js学习之正交投影照相机大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

Three.js是一个3Djs库,webGL开源框架中比较优秀的一个。除了webGL以外,Three.js还提供了基于Canvas、SVG标签的渲染器,调试建议使用Chrome或者Firefox。

1.照相机

  图形学中的照相机定义了三维空间到二维屏幕的投影方式。

  针对投影方式照相机分为正交投影照相机和透视投影照相机。

2.两种相机的区别与适用范围

  正交投影:

Three.js学习之正交投影照相机

  透视投影:

Three.js学习之正交投影照相机

  正交投影就像数学课上画的;而透视投影有一个基本点,就是远处的物体比近处的物体小,远大近小。

  对于制图、建模软件通常使用正交投影;而对于其他大多数应用,通常使用透视投影。

3.正交投影照相机

  正交投影照相机的构造函数:

.orthographicCamera(left,right,top,bottom,near,far)

  六个参数分别代表正交投影照相机拍摄到的六个面的位置。

  其中,

near表示近平面与相机中心点的垂直距离

far表示远平面与相机中心点的垂直距离

Three.js学习之正交投影照相机

  若要保持照相机的横纵比例

,(right-left)

(top-bottom)

的比例需与canvas的宽高比例一致。

  由图可见near与far的值应为正值,且

far>near

。如果最后两个值是(0,0),也就是near和far值相同了,视景体深度没有了,整个视景体都被压成个平面了,就会显示不正确。

4.正交投影照相机实例

  源码:

<meta charset="UTF-8">

3.js测试二

<body onload="init()">

<canvas id="mainCanvas" width="400px" height="300px" ></canvas>

<script type="text/javascript" src="js/three.min.js"&gt;</script>

<script type="text/javascript"&gt;

  function init() {

    var renderer = new THREE.WebGLRenderer({

      canvas: document.getElementById('mainCanvas')

    });

    renderer.setClearColor(0x000000);

    var scene = new THREE.Scene();

    // 设置照相机

    var camera = new THREE.orthographicCamera(-2,2,1.5,-1.5,1,10);

    camera.position.set(0,5);

    //camera.lookAt(new THREE.Vector3(0,0));

    scene.add(camera);

    // 创建立方体

    var cube = new THREE.Mesh(new THREE.CubeGeometry(1,1),new THREE.MeshBasicMaterial({

          color: 0xff0000,wireframe: true

        })

    );

    scene.add(cubE);

    // render

    renderer.render(scene,camera);

  }

</script>

  其中,THREE.MeshBasicMaterial(基础网格材质)的

wireframe

属性如果为

true

,则将材质渲染成线框。

可以看到当前位置后面的边会与前面的完全重合:

Three.js学习之正交投影照相机

  

4.1 改变视景体长宽比例

  这里canvas的宽高比为4:3,照相机的水平距离为4,垂直距离为3,因此长宽比例保持不变(1:1)。

  若将照相机的水平距离减小为2,

.orthographicCamera(-1,10);

  物体会被拉长:

Three.js学习之正交投影照相机

  照相机的视野范围变窄了,导致正方体在视野范围内的横向比例增加了,因此表现为正方体变宽了。

  

4.2 改变相机位置

  例子中的相机位置是(0,5),由于照相机默认是面向z轴负方向放置的,所以能看到原点处的正方体。

  将照相机的位置向右移动1个单位:

.orthographicCamera(-2,10);

camera.position.set(1,5);

  照相机面对着物体,所以照相机右移,所照的物体向左移:

Three.js学习之正交投影照相机

  

4.3 改变视景体位置

  将视景体设置的更靠右:

.orthographicCamera(-1,3,5);

  和右移照相机一样。

Three.js学习之正交投影照相机

  

4.4 改变照相机角度

);

camera.lookAt(new THREE.Vector3(0,0));

  但是现在照相机沿z轴负方向观察的,因此观察不到正方体,只看到一片黑。我们可以通过lookAt函数指定它看着原点方向:

);

  注意,lookAt函数接受的是一个THREE.Vector3的实例,不要写成camera.lookAt(0,0)

  好了,以上就是Three.js学习之正交投影照相机的全部内容,希望给大家学习Three.js有所帮助,小编陆续还会更新关于Three.js的文章,请大家继续关注菜鸟教程。

大佬总结

以上是大佬教程为你收集整理的Three.js学习之正交投影照相机全部内容,希望文章能够帮你解决Three.js学习之正交投影照相机所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。