Babylon引擎(三)

五、模型加载 

        Babylon支持加载的模型文件有obj、stl、gltf三种三维文件格式 ,具体情况如下:

        Babylon:  引擎自带文件格式,可以用声明的方式定义所有的几何体和场景

        obj/mtl:它是一种简单的三维文件格式,MTL文件常同OBJ一起使用。

        gltf: 一种通用的用于定义场景、模型以及动画的文件格式

        stl:立体成型技术,广泛用于快速成型,三维打印机的模型文件通用格式 

具体使用方法(加载GLTF格式,其它类似)如下所示:

1    let  Task = loader.addMeshTask("tk_gltf", "", "./model/", "DamagedHelmet.gltf");
            //创建加载任务
2        Task.onSuccess = (task)=> {                      //任务加载成功后
3             for(let mesh of task.loadedMeshes){         //遍历加载到的模型
4                 mesh.position=new BABYLON.Vector3(0,2,0);  //设置每个物体的位置
5                 mesh.scaling=new BABYLON.Vector3(3.0,3.0,3.0); //设置缩放比
6                 meshArray.push(mesh); }};                       //将模型添加到数组
7             Task.onError =  (task, message, exception)=> {         //提示简单的错误信息
8             console.log('kjzTask short error message:${message}, specific error
        information:${exception}.');
9        }

六、贴图

(1)纹理贴图 

        材质决定了物体的颜色及质感,而纹理贴图的实质是一系列颜色值,使用纹理贴图时,只需将读取后的信息嵌入到材质中,再将此材质应用到几何对象。具体使用方法如下:

1     var mat = new BABYLON.StandardMaterial("mat", scene);             //创建标准材质
2     var texture = new BABYLON.Texture("textures/box.jpg", scene);    //加载纹理贴图
3     mat.diffuseTexture = texture;       //设置标准材质的漫反射纹理贴图

(2)法向贴图 

        法向贴图是法向量数据,使用它可以渲染出许多细节,与光源的合理搭配可以极大提升 画面的真实感 ,具体使用方法与纹理贴图类似,只需读取贴图相关数据,并赋值给材质对象的bumpTexture属性。

(3)光照贴图 

        光照贴图可以减少阴影计算量,并能创建出解析度很高的静态阴影,在使用上同纹理贴图类似。

(3)高光贴图 

        高光贴图可以模拟出物体高光反射效果,在贴图中像素的颜色值越大,物体表面对光线的反射能力就越强。使用方法同纹理贴图类似。

七、粒子系统

        粒子系统通常在程序中用来模拟一些特定的模糊现象,例如火、爆炸、烟尘,发光物体的尾部轨迹等。

(1)精灵

        精灵(Sprites)是一种2D图像或者动画,使用它来显示带有alpha通道的图像,它始终面向摄像机,可以在离观测者较远的地方模拟树木等模型。

(2)粒子与粒子系统

        粒子通常是小精灵,用于模拟难以重现的现象,如火、烟、水或者抽象的视觉效果,粒子是由粒子系统管理,通过粒子系统的控制可以设置粒子的很多属性,例如颜色、大小、生命周期、发射方向和粒子速度等。

(3)粒子发射器

        它代表了粒子系统附着的网格和位置 ,它有多种不同的发射器类型,比较常用的有点发射器、盒子发射器、球形发射器、锥形发射器,系统默认的粒子发射器是盒子发射器。

(4)粒子动画

        粒子动画原理是加载包括动画每一帧画面的纹理图,然后换帧播放,粒子效果如同动画播放一样,两者的区别只是代码的使用上略有不同。

(5)GPU粒子

        粒子渲染在GPU中进行,可以提高粒子系统中活动粒子的容量和渲染速率。

(6)固定颗粒系统(SPS)

        它是单个可更新的网格,其中每个固定颗粒只是这个网格中的单独部分或面。它可以缩放、旋转、平移、纹理 、移动等。

        它可以看成由几何体等大型颗粒构成的粒子系统,但没有粒子发射器、粒子物理性质和粒子回收器等。其用法是首先创建固体颗粒系统,然后从SPS添加粒子,最后构建SPS网格。

八、物理引擎

        Babylon中有一个物理引擎插件系统,允许开发人员将物理交互添加进场景中。它支持Cannon.js物理引擎与Oimo.js等物理引擎。 

启用物理引擎代码 如下:

1    var scene = new BABYLON.Scene(engine);                //创建场景
        2    var gravityVector = new BABYLON.Vector3(0, -9.81, 0); //初始化重力加速度
        3    var physicsPlugin = new BABYLON.CannonJSPlugin();    //初始化物理引擎插件
        4    scene.enablePhysics(gravityVector, physicsPlugin);   //启用物理引擎

        说明:要想使用Oimo.js物理引擎,只需将scene.enablePhysics()中的第二个参数更改为new BABYLON.OimoJSPlugin()即可。

物理引擎中另一个概念是关节,它是两个物体之间的约束,使用关节可以将两个物体以一体的方式约束在一起。引擎支持多种类型的关节,如距离、铰链、球、插座、车轮、滑块、点对点、弹簧等关节 。

九、渲染到纹理

        `渲染到纹理技术可以很方便地在渲染出的画面中添加各种特效,例如SSAO技术,它能显著增强场景的深度和真实感,并且能让画面更细腻,让场景细节更加明显。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值