此实例主要通过使用 THREE. OrthographicCamera,实现在场景中根据正交相机的投影规则绘制多个立方体。
在下面的代码中 myCamera = new THREE. OrthographicCamera(-sk, sk, s, -s, 1, 1000) 用于创建正交照相机,然后 Three.js 将按照正交投影算法自动计算几何体的投影结果;对于正交投影而言,多条直线(或其他几何图形)放置的角度不同,则这些直线在投影面上的投影结果的长短则不同。
如果刚好是直角(即正交),则其长短完全相同,即正交投影与距离无关,只与角度相关。THREE. OrthographicCamera() 方法的语法格式如下:
1 2 3 4 5 6 7 8 9
|
const myCamera = THREE.OrthographicCamera(left, right, top, bottom, near, far)
|
一般会设置左边界和右边界互为相反数,上边界和下边界互为相反数,目的是为了让图形(网格模型)能够显示在中间位置。
主要的javascript 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| var myRenderer = new THREE.WebGLRenderer(); myRenderer.setSize(window.innerWidth, window.innerHeight); myRenderer.setClearColor('white', 1); $('#myContainer').append(myRenderer.domElement);
var myScene = new THREE.Scene();
var width = window.innerWidth; var height = window.innerHeight; var k = width / height; var s = 24; var myCamera = new THREE.OrthographicCamera( -s * k, s * k, s, -s, 1, 1000, ); myCamera.position.set(-1.66, 2.21, 18.1); myCamera.lookAt(myScene.position);
var myGeometry1 = new THREE.BoxGeometry(16, 16, 16); var myMaterial1 = new THREE.MeshNormalMaterial(); var mesh1 = new THREE.Mesh(myGeometry1, myMaterial1); mesh1.translateX(-14); myScene.add(mesh1);
var myGeometry2 = new THREE.BoxGeometry(16, 16, 16); var myMaterial2 = new THREE.MeshNormalMaterial(); var mesh2 = new THREE.Mesh(myGeometry2, myMaterial2); mesh2.translateX(14); myScene.add(mesh2);
myRenderer.render(myScene, myCamera);
|