threejs初步知识点总结

1. webGL:一种网络标准,定义了一些较底层的图形接口。

2. Three.js:一个3Djs库,webGL开源框架中比较优秀的一个。除了webGL以外,Three.js还提供了基于Canvas、SVG标签的渲染器。

3. 使用

<head>

<script type=”text/javascript” src=”js/three.js”></script>

</head>

webGL的渲染需要canvas,Three.js可以生成,也可以自定义canvas:

<body onload=”init()”>

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

</body>

在js中定义一个init函数,在HTML加载后执行:

function init(){

}

Three.js程序要包括三大组建:场景(Scene)、相机(Camera)、渲染器(Renderer),以及你创建的物体。

6.渲染器(Renderer):渲染器将和Canvas元素进行绑定,接着上面的:

var renderer = new THREE.WebGLRenderer({

canvas: document.getElementById(‘mainCanvas’)

}); 如果想要Three.js生成Canvas元素,在HTML中就不需要定义canvas,在js中可以这样写:

var renderer = new THREE.WebGLRenderer();

renderer.setSize(400,300);

document.getElementsByTagName(‘body’)[0].appendChild(renderer.domElement);

第二行设置了Canvas的宽高。第三行将渲染器对应的Canvas元素添加到<body>中。

下面这句可以设置背景为黑色:

renderer.setClearColor(0x000000);

7. 场景(Scene)

在Three.js中添加的物体都是添加到场景中的。在程序最开始的时候进行实例化,然后将物体添加到场景中即可。

var scene = new THREE.Scene();

8.照相机(Camera)

webGL和Three.js使用的坐标系是右手坐标系:

相机分正投影相机和透视投影相机。这里先定义一直透视投影的照相机,:

var camera = new THREE.PerspectiveCamera(45,4/3,1,1000);

//四个参数分别对应:视角、近处的裁面的距离、远处的裁面的距离、实际窗口的纵横比(后面会详细讨论)

camera.position.set(0,0,5);//设置相机位置

scene.add(camera);//添加到场景中。

10.渲染

  在定义了场景中的物体,设置好的照相机之后,渲染器就知道如何渲染出二维的结果了。调用渲染器的渲染函数,就能使其渲染一次了。

renderer.render(scene, camera);

二、照相机

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

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

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

  正交投影:

  透视投影:

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

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

3.正交投影照相机

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

Three.OrthographicCamera(left,right,top,bottom,near,far)

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

  其中,near表示近平面与相机中心点的垂直距离;far表示远平面与相机中心点的垂直距离。

  若要保持照相机的横纵比例,(right-left)与(top-bottom)的比例需与canvas的宽高比例一致。

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

透视投影照相机构造函数

透视投影照相机(Perspective Camera)的构造函数是:

THREE.PerspectiveCamera(fov, aspect, near, far)

– fov 可视角度

– aspect 实际窗口的纵横比

– near 近处的裁面的距离

– far 远处的裁面的距离

  只有离相机的距离大于near值,小于far值,且在相机的可视角度之内,才能被相机投影到。

  让我们通过几张透视照相机投影的图详细了解这些参数。

透视图中,灰色的部分是视景体,是可能被渲染的物体所在的区域。

fov是视景体竖直方向上的张角(是角度制而非弧度制),如侧视图所示。

aspect等于width / height,是照相机水平方向和竖直方向长度的比值,通常设为Canvas的横纵比例。

near和far分别是照相机到视景体最近、最远的距离,均为正值,且far应大于near。

    THE END
    喜欢就支持一下吧
    点赞10 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容