前言
前面讲完了小demo、相机和灯光,接下来应该讲元素物体和材质了。不过打算先跳转一下,讲一下babylonjs中的空间坐标系。因为前面展示demo的时候,x,y,z轴有点乱,是试出来的。
这一章节也会比较简单。
左手笛卡尔坐标
因为threejs用的是右手笛卡尔坐标。所以两个有点反。
说一下笛卡尔坐标系。
在原本的二维直角坐标系,再添加一个垂直于 x-轴,y-轴的坐标轴,称为 z-轴,这z-轴与 x-轴,y-轴相互正交于原点。如下图所示符合右手定则的称之为右手系,反之则为左手系。
右手定则:以右手握住z轴,当右手的四指从正向x轴以π/2角度转向正向y轴时,大拇指的指向就是z轴的正向。[左手定则同理]
简单的说, 就是不符合右手坐标系的,都是坐标坐标系,不要拿左手去套。
babylonjs中实践
你会发现,握住z轴,手是从y到了x,所以这是一个左手坐标系。
babylonjs坐标细节
如上图,为什么是这样子的视角呢,y轴朝上。
这个其实是视角问题,调整相机就行了。
那为什么ground在xz的平面上呢。
查看CreateGround函数,会发现没有配置项管他在哪个面上的。
就是说,默认是在xz面上,给转到xy面上就行。绕x轴转90度。
ground.rotation.x = - Math.PI / 2;
ground.rotation = new BABYLON.Vector3(- Math.PI / 2, 0, 0)