【工作应用】第2期 | 基础篇:babylonjs开发中的常见名词要素

283 阅读3分钟

前言

    第一次接触3d开发的童鞋我本人,可能会对其中的一些名词要素一头雾水,下面一起学习总结一下这些要素及其作用。

收获清单

  • 坐标系与位置
  • 材质material
  • 相机Cameras
  • 灯光Lights

知识要点

坐标系与位置

3d开发中主要涉及两种坐标系,如下图,babylon采用的是左手坐标系:
x轴朝右
y轴朝上
z轴朝里
2f26463f39e246dc6bb695758ae685d0.jpeg
这里的z轴可以理解为远小近大,如我们动态改变z轴的值可以得到以下效果:

20221016_145650.gif 知道了坐标系下一步就可以了解物体的位置【position 】、旋转【rotation】以及缩放比例【scaling】,它们的基本单位是三维向量,即BABYLON.Vector3(x,y,z)
基本用法如下,其中旋转是以角度为单位的。

//常规设置
pilot.position = new BABYLON.Vector3(2, 3, 4);

//或者,独立设置
pilot.position.x  =  2;
pilot.position.y  =  3;
pilot.position.z  =  4;

材质material

作用:美化物体,可以是颜色或纹理
创建颜色:

var rgb = new BABYLON.Color3(0.5, 0.5, 0.5);//颜色
var rgba = new BABYLON.Color3(0.5, 0.5, 0.5, 1);//透明度颜色

颜色分类:

  • 漫反射颜色:diffuseColor
  • 镜面颜色:specularColor
  • 自发光颜色:emissiveColor
  • 环境颜色:ambientColor
    纹理贴图Texture分类:
  • 漫反射纹理:diffuseTexture
  • 镜面反射纹理:specularTexture
  • 自发光纹理:emissiveTexture
  • 环境纹理【需搭配环境光使用】:ambientTexture
    创建材质通用公式
//第一个参数是材质名称,第二个是场景实例
var myMaterial = new BABYLON.StandardMaterial("myMaterial", scene);
// 添加颜色或纹理
myMaterial.diffuseColor = new BABYLON.Color3(1, 0, 1);//漫反射颜色
//PATH TO IMAGE,表示图片的路径,其实也可以使用base64格式的图片。
myMaterial.diffuseTexture = new BABYLON.Texture("PATH TO IMAGE", scene);
// 给物体设置材质
mesh.material = myMaterial

不同材质效果

20221022_113939.gif 不同纹理效果

纹理gif.gif

相机Cameras

    相机可以理解为我们的视线,创建了一个物体后,我们想要看到它就需要相机,观察视角的不同就有不同的相机类型,babylon提供了很多种相机,我们日常开发常用的是通用相机UniversalCamera,也可以根据开发需求的不同选择不同的相机类型
构建通用相机代码

// 参数顺序 : name相机名称, position相机放置的位置, scene场景实例
var camera = new BABYLON.UniversalCamera("UniversalCamera", new BABYLON.Vector3(0, 0, -10), scene);

//相机观察的目标,在这里表示:相机放在(0,0,-10),镜头对准观察 (0,0,0)
camera.setTarget(BABYLON.Vector3.Zero());

// 让相机响应用户操作
camera.attachControl(canvas, true);

灯光Lights

    灯光应该是最好理解的,想要改变物体的明暗跟颜色就要学会打灯了!
创建灯光

点光Point Light
var light = new BABYLON.PointLight("pointLight", new BABYLON.Vector3(1, 10, 1), scene);
平行光Directional Light
//第二个参数表示平行光的方向
var light = new BABYLON.DirectionalLight("DirectionalLight", new BABYLON.Vector3(0, -1, 0), scene);

聚光灯Spot Light
//第2个参数是位置、第3个参数是方向,第4个参数角度angle,第5个参数指数exponent
var light = new BABYLON.SpotLight("spotLight", new BABYLON.Vector3(0, 30, -10), new BABYLON.Vector3(0, -1, 0), Math.PI / 3, 2, scene);

半球光Hemispheric Light
//第2个参数是方向
var light = new BABYLON.HemisphericLight("HemiLight", new BABYLON.Vector3(0, 1, 0), scene);

总结

    今天回顾学习了babylonjs开发中的常见名称要素,更详细的介绍可以看官网教程