当前位置: 首页 > news >正文

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 errorinformation:${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技术,它能显著增强场景的深度和真实感,并且能让画面更细腻,让场景细节更加明显。

http://www.dtcms.com/a/251512.html

相关文章:

  • 基于Ultralytics的RT-DETR改进思考
  • BEV 感知算法评价指标简介
  • Appium框架下载时卡主的解决办法(ERR_TLS_CERT_ALTNAME_INVALID)
  • 基于根茎式思维深化后的提示词设计案例
  • 【精选】计算机毕业设计基于SpringBoot高校社团管理系统 社团信息维护 活动发布报名 成员审核与公告发布平台源码+论文+PPT+讲解
  • 智能土木通 - 土木工程专业知识问答系统01:项目简介
  • 4.es、kibana容器的下载安装
  • C#最佳实践:为何应减少方法参数
  • 【python】 args和kwargs区别
  • 【git】有两个远程仓库时的推送、覆盖、合并问题
  • HarmonyOS Grid 网格拖拽完全指南
  • Vue 3 路由跳转全面指南(Composition API + <script setup>)
  • 高效便捷版,多功能一键直达!
  • 行为设计模式之Strategy(策略)
  • 深入理解滑动窗口算法:原理、应用与 C++ 实现
  • 行列式的性质 线性代数
  • Go语言--语法基础5--基本数据类型--输入输出(2)
  • 自主学习-《Absolute Zero: Reinforced Self-play Reasoning with Zero Data》
  • 用Jmeter进行接口测试
  • HarmonyOSNext性能核弹:用Node-API引爆ArkTS/C++跨语言
  • MySQL事务:从原理到实践
  • 软件测试用例(一)
  • 私域到底怎么做?
  • 【分析学】 从确界定理出发——实数系完备定理
  • 第十七章:SD如何制作三视图(基础)
  • 如何写一个简单的python类class
  • Gartner《Reference Architecture for Federated Analytics》学习心得
  • Unity Addressable使用之入门篇
  • WebAssembly的本质与核心价值
  • 基于SVD的推荐系统:详尽的原理与实践解析