babylon101| 08. Cameras, Mesh Collisions and Gravity(相机、碰撞和重力)

本教程介绍如何在3D场景中模拟摄像机运动,包括定义并应用重力、创建椭球体防止摄像机与场景物体过近,以及启用碰撞检测避免穿模。适用于游戏开发和3D场景构建。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

在本教程中,我们将模拟摄像机运动,摄像机在地板上,与地面发生碰撞,并可能与场景中的任何对象发生碰撞,实现步骤如下:

1.Define and apply gravity  定义并添加重力

首先要做的是定义重力矢量,在地球这样的经典世界中,重力的方向沿着Y轴向下(负的),但是我们可以随意改变它!

scene.gravity = new BABYLON.Vector3(0, -9.81, 0);//定义xyz方向的重力

重力可以应用于之前在代码中定义的任何摄像机

camera.applyGravity = true;

2.Define an ellipsoid 定义一个椭球体

下一个重要的步骤是定义相机周围的椭球体,这个椭球面代表我们玩家的尺寸,当一个网格与这个椭球面接触时,会引发碰撞事件,防止我们的相机离这个网格太近:

Ellipsoid

相机上的椭球属性默认为size(0.5, 1,0.5),但是改变值会让其更高、更大、更小、更薄,这取决于调整后的轴。在下面的例子中,我们将使我们的相机的椭球比默认的稍大一点:

//Set the ellipsoid around the camera (e.g. your player's size)
camera.ellipsoid = new BABYLON.Vector3(1, 1, 1);

3.Apply collision 添加碰撞

一旦你完成了之前的设置,我们的最后一步是声明场景中的碰撞:

// Enable Collisions
scene.collisionsEnabled = true;
camera.checkCollisions = true;

声明哪些网格可能与我们的相机发生碰撞:

ground.checkCollisions = true;
box.checkCollisions = true;

现在,相机会落在y轴上,直到它与地面相撞。而且,当你把相机移得太近时,它会与盒子相撞。

4.Object vs. object collision 对象与对象的碰撞

你也可以通过网格来做同样的事情,通过 mesh.ellipsoid mesh.moveWithCollisions(velocity) 函数。这个函数将尝试根据给定的速度移动网格,并检查当前网格和所有激活了校验冲突的网格之间是否没有碰撞。

  • ArcRotateCamera

ArcRotateCamera也还可以检测碰撞,但当碰撞发生时,它不会沿着障碍物滑动,也不会移动

参考资料: https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

内容概要:本文系统阐述了利用BP神经网络结合Matlab编程实现对水质变化趋势进行科学预测的技术方法。通过构建BP神经网络模型,利用历史水质数据(如pH值、溶解氧、浊度等)进行训练,充分挖掘数据间的非线性关系,实现对未来水质状况的精准预测。该方法在处理复杂、非线性的环境数据方面表现出色,具有较强的泛化能力实用性,适用于环境监测与水资源管理领域。文中配套提供了完整的Matlab代码实现方案,涵盖数据预处理、模型构建、训练优化及预测分析全过程,便于读者复现与应用。; 适合人群:具备一定机器学习理论基础Matlab编程能力的科研人员、环境工程及相关专业的高校学生,以及从事水质监测、水污染预警水资源管理的技术人员。; 使用场景及目标:①用于水质关键参数的时间序列预测,支持水环境长期趋势分析;②为水污染早期预警系统建设、水资源保护政策制定与生态环境治理提供可靠的数据支撑技术手段;③作为教学实践案例,帮助学习者深入理解神经网络在环境科学中的建模流程与应用逻辑。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块运行与调试,重点掌握数据归一化、网络结构设计、训练参数调优及预测结果可视化等关键步骤,同时鼓励将该模型迁移至其他类似时序预测任务中进行拓展验证与性能优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值