Three.js较人性化的为我们封装了易于理解的3d对象(相机,场景,光源等等),这有助于我们初窥3d的计算机世界。
在计算机的图形里面,点是最小的单位,2个点确定一条直线,3个点确定一个面,这就是计算机图形的最小组成单位,点、线、三角形。即使是一个最小的正方形,也是至少由2个面(三角形)组成。
这里面区分正反,由记录面的三个点的顺序决定,正方向与面的法向量方向相同,右手法则可以帮助记忆面的正反。这个法向量会影响到面的成像,一般与光源方向进行点乘可以计算出面的成像效果,而在渲染方面,renderer渲染器有一个属性side可以确定渲染面的哪一测,出于性能考虑three.js默认是只渲染正面,所以有时会出现面突然消失了,这个时候只需要修改成渲染双面就好了。
既然有点久要涉及到点的位置,也就有了坐标,坐标是个比复杂的概念,坐标本身是个相对的概念,所以不同的参照物有不同的坐标,最基础的是模型坐标系,物体内部的坐标系,然后是物体整体相对于场景的世界坐标系,相对于相机成像的视图坐标系,相对于相机也就是相对于用户观察则的角度,将视图正投影到浏览器的是投影坐标系,然后投影相对于浏览器的是视口坐标系,这个也是js原生的浏览器的2d坐标系。
网友评论