文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

three.js Mool3D模型类如何使用

2023-07-05 20:15

关注

这篇文章主要介绍“three.js Mool3D模型类如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“three.js Mool3D模型类如何使用”文章能帮助大家解决问题。

Model类

场景加载

加载场景主要使用引擎中的model类来实现,引擎中model类主要功能有配置文件模型加载、场景切换、单一自定义模型加载、场景下动画的控制等~

//下方为简单场景的加载import { Viewer } from "../Threejs/index";export class Index extends Viewer {  constructor(options) {    super(options);    this.initModel();  }}

推荐通过继承主类的方式扩展业务代码,上方是一个最简单的场景加载示例。细心的同学可以发现上方只是初始化了一个model类而已如何完成场景的加载的,当然完成场景加载还需要一个触发场景的条件,这我们通常可以在容器文件中实现。下方就是最简单的场景加载容器

//vue文件//初始化const init = () => {  const el = refmap.value;  sceneA = new Index({    el: el as HTMLElement,    tween: TWEEN,    path: "../public/scene/", //基础路径  });  setScene(1);};//切换场景const setScene = (id) => {  switch (id) {    case 1:      sceneA.setScene(1, () => {          //场景加载成功回调      });      sceneA.flyTo({ //相机位置        position: [0, 5, 6],        controls: [0, 0, 0],        duration: 2000,      });      break;    default:      break;  }};

场景配置文件

上方代码通过场景id加载场景,那是如何知道需要加载哪些模型呢?引擎通过config.json文件约束不同场景下所依赖的模型文件,配置文件存放路径为基础路径下(../public/scene/) 下方详细介绍配置文件~

[  {    "name": "mool", //名称    "target": false, //是否被鼠标拾取    "layeridx": 1, //场景id    "scale": 1, //场景缩放    "positionX": 50, //场景初始位置    "positionY": 120,    "positionZ": 170,    "layers": [ //场景模型配置对象      {        "name": "./glb/building1.glb"      },      {        "name": "./glb/building2.glb"      }    ]  }  ......]

递归处理场景模型

照着上方的操作,我们完成了场景的加载。这时场景已经呈现在画面上,如果我们需要修改场景模型的材质等操作怎么做呢? 当然模型类中也考虑到这一点,提供了一个回调处理解码的模型,具体怎么操作见下方~

constructor(options) {    super(options);    this.initModel();    //这是在加载场景模型之前执行的回调,所以建议放在初始化类时完成回调的注册,这样会在模型加载过程中递归去修改模型    this.model.deepFunction.push(({ e , item }) => {     // e:模型碎片Mesh / item:场景配置文件      e.scale.set(300, 300, 300);    });}

不推荐什么方法都放在constructor中去调用,由于模型加载时才会去设置当前场景的id,如在constructor中初始化天空和灯光等,会出现无效的情况,出现这种情况是因为场景id默认值为1,都加载到场景1中去了。所以模型类提供一个场景加载成功的回调,在里面初始化场景需要的一些修饰类如灯光、天空、环境贴图等~

sceneA.setScene(1, () => {    //场景加载成功回调    sceneA.initEnvironment({      path: "exr.exr",      type: "exr",    });});

加载独立模型

如何加载独立于场景配置文件之外的模型呢?模型类提供GLBFBX两种类型模型加载方法,具体见下方说明~

//加载glb/gltf模型this.model.loadModel(  "../public/scene/glb/walk.glb",  this.sceneidx,  (glb, animations) => {    glb:为模型对象    animations:模型动画    ...模型自定义修改  });//加载fbx模型this.model.loadFbxModel(  "../public/scene/glb/walk.fbx",  this.sceneidx,  (fbx, animations) => {    fbx:为模型对象    animations:模型动画     ...模型自定义修改  });

注意上方只提供加载模型,不会主动添加到场景中,需修改定制化模型参数之后手动将其add到场景中~

动画

模型类中提供两种执行动画的方法,一种是执行场景下的所有动画,一种是执行某个名称的动画。具体使用见下方说明~

//执行场景下的所有动画this.model.playAllClipes(this.sceneidx);//传入场景的id//执行某名称的动画this.model.playNameClipes(this.sceneidx,'mool');//传入场景的id和动画名称

关于“three.js Mool3D模型类如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯