找回密码
 立即注册

QQ登录

只需一步,快速开始

Felix.Li Wyn认证

超级版主

101

主题

2853

帖子

5384

积分

超级版主

Rank: 8Rank: 8

积分
5384

Wyn高级认证Wyn认证

Felix.Li Wyn认证
超级版主   /  发表于:2024-11-19 16:47  /   查看:5  /  回复:0
本帖最后由 Felix.Li 于 2024-11-20 15:20 编辑

前置小章节-点击跳转


3D场景中的相机多种多样,默认的相机RotateCamera 就是我们可以以场景为中心,去旋转和右键平移,今天分享另一种相机,叫做跟随相机,顾名思义,这种相机就是跟随的,他需要你去指定一个模型然后就会随着模型的移动而移动------跟随。
先看一下下面的场景:
跟随相机示例.gif

首先我们自己准备好可以运动的模型。
可以参考官网:
https://www.grapecity.com.cn/sol ... l/3dScene/animation

有了动画剩下的就是添加跟随相机和切换使用相机了。
创建跟随相机的方法:
  1. scene.createFollowCamera = (followCameraName, followModelName) => {
  2.   const model = scene.getMeshByName(followModelName) || scene.getNodeByName(followModelName);
  3.   const followCamera = new BABYLON.FollowCamera(followCameraName, new BABYLON.Vector3(0, 0, 0), scene, model);
  4.   followCamera.radius = 10; // 摄像机与车辆的距离
  5.   followCamera.heightOffset = 5; // 摄像机的高度
  6.   followCamera.rotationOffset = 180; // 摄像机的旋转角度

  7.   // 将摄像机的目标设置为车辆
  8.   followCamera.lockedTarget = model;
  9. }
复制代码
在其他地方调用并创建一个跟随相机:
  1. scene.createFollowCamera("followCamerPersion1","persion_1");
复制代码


切换使用的相机:
  1. let walkFollowCamera = scene.cameras.filter(item => (item.name == "followCamerPersion1"))[0];
  2.         //初始相机
  3.         let arcRotateCamera = scene.cameras.filter(item => (item.name == "ArcRotateCamera"))[0];
  4.         arcRotateCamera.detachControl();
  5.         scene.activeCamera = walkFollowCamera;
  6.         walkFollowCamera.attachControl(true);let walkFollowCamera = scene.cameras.filter(item => (item.name == "followCamerPersion1"))[0];
  7.         //初始相机
  8.         let arcRotateCamera = scene.cameras.filter(item => (item.name == "ArcRotateCamera"))[0];
  9.         arcRotateCamera.detachControl();
  10.         scene.activeCamera = walkFollowCamera;
  11.         walkFollowCamera.attachControl(true);
复制代码


上述代码中: followCamerPersion1是我们自己创建的相机,ArcRotateCamera是内置相机,最后一段就是关闭内置相机,启动跟随相机,那么一个简单的,跟着人走的视角就有了。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部