最近根据项目需求需要加载和克隆带动画的FBX模型,但是发现直接用Object.clone方法无法对fbx模型进行克隆,于是查资料解决克隆问题。

废话不多说,直接正题:

所需脚本:

threer97表示R97版本的threejs。

下边是官网给出加载fbx模型的例子:

var loader = new THREE.FBXLoader();//Samba Dancing idle_2loader.load( '../model/fbx/Samba Dancing.fbx', function ( object ) {mixers=object.mixer = new THREE.AnimationMixer( object );var action = object.mixer.clipAction( object.animations[0]);action.play();object.traverse( function ( child ) {if ( child.isMesh ) {child.castShadow = true;child.receiveShadow = true;}} );object.scale.set(0.5,0.5,0.5);object.position.set(0,0,0);scene.add( object );} );

现在想克隆这个模型,我先把第一次加载的模型及模型的顶点信息和贴图材质保存在全局变量(scope.personpre,scope.referenceModel)中,留着克隆用,代码变化如下:

var loader = new THREE.FBXLoader();loader.load( "../model/fbx/greenmushroom_idle.fbx", function ( object ) {object.traverse( function ( child ) {scope.mixers=object.mixer = new THREE.AnimationMixer( object );var action = object.mixer.clipAction( object.animations[0]);action.play();if ( child.isMesh ) {child.castShadow = true;child.receiveShadow = true;}});object.scale.set(0.5,0.5,0.5);object.position.set(100,120,30);scope.scene.add(object);scope.personPre=object;scope.referenceModel = object.children[1];});

scope是我的一个类索引,大家不用理会,看成window即可,注意最后一行,我们加载的fbx模型它会有一个子元素数组,其中有一个元素存储的是mesh信息,我的模型的mesh在第二个,所以我把它取出来保存,如不明白,可以参考下图:

其中的红线标出的才是模型显示的关键。

接下来就是克隆,需要用上一步保存的顶点和贴图信息 new一个新的mesh,赋值给用预制体克隆的person,person才会绘制到屏幕上:

var scope=this;
var refObject = this.referenceModel;
var mesh=new THREE.Mesh( refObject.geometry, refObject.material );
mesh.position.set(0,0,10);
mesh.scale.set(0.2,0.2,0.2);
mesh.rotation.x=-0.25*Math.PI;
var person=this.personPre.clone();
person.animations=this.clip;
person.children[1]=mesh;
person.traverse( function ( child ) {if ( child.isMesh ) {child.castShadow = true;child.receiveShadow = true;}
});
this.scene.add( person );

大功告成,此方法的缺点是所有的克隆模型共用一个动画,无法单独控制动画,后续改进正在研究,小弟不才,如有疏漏,多多指导。

threejs中FBX格式模型的加载与克隆相关推荐

  1. pmd格式模型 html加载,Three.js 模型载入

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? obj格式 THREE.OBJLoader(manager)manager 加载器使用的loadingManager,默 ...

  2. tensorflow中保存模型、加载模型做预测(不需要再定义网络结构)

    下面用一个线下回归模型来记载保存模型.加载模型做预测 参考文章: http://blog.csdn.net/thriving_fcl/article/details/71423039 训练一个线下回归 ...

  3. Three.js(十四)—— 模型文件加载

    文章目录 14.Three.js 加载外部模型文件 14.1 Three.js 数据结构.导入导出 Threejs导出模型信息 自定义模型加载器文件 加载Three.js导出的模型数据 14.2 加载 ...

  4. 3D模型的加载与使用

     http://www.hewebgl.com/article/getarticle/126 1.感谢词 亲爱的朋友: 您们好.感谢您阅读WebGL中文网的初级课程,学习到本课,我们假设您已经学习 ...

  5. 5.2 TensorFlow:模型的加载,存储,实例

    背景 之前已经写过TensorFlow图与模型的加载与存储了,写的很详细,但是或闻有人没看懂,所以在附上一个关于模型加载与存储的例子,CODE是我偶然看到了,就记下来了.其中模型很巧妙,比之前nump ...

  6. 5.1 Tensorflow:图与模型的加载与存储

    这里写目录标题 前言 快速应用 存储与加载,简单示例 存储的文件 tf.train.Saver与存储文件的讲解 核心定义 存储文件的讲解 保存图与模型进阶 按迭代次数保存 按时间保存 更详细的解释 前 ...

  7. Matlab编程技巧:打开模型时加载数据字典

    本文研究通过回调函数,在打开模型时加载数据字典到工作空间中. 文章目录 1 问题引入 2 简单例程 2.1 模型配置 2.2 数据字典表格 2.3 创建脚本 3 效果演示 4 总结 1 问题引入 在& ...

  8. 【Unity学习】fbx格式模型分离和坐标轴调整

    fbx格式模型分离 在AssetStore下载的低模有的时候需要修改,将某一部分模型单独拎出来做动画或者别的使用.这里提供一下我个人的思路,将fbx格式模型导入3Dmax,然后根据如何利用3Dmax分 ...

  9. 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3

    备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...

最新文章

  1. 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax
  2. Harris算子的运用 用于图像配准
  3. java字符串反转方法【全】
  4. $.post $.getScript
  5. Linux上(Redhat7)实现NFS文件共享服务
  6. 手机技巧:手机电量为啥到20%就会提醒充电,看完你就懂了!
  7. 小程序 封装table组件
  8. Solr 访问 403 错误
  9. Ubuntu安装aira2及开机启动配置
  10. shell脚本文件中ll提示找不到命令
  11. 开源组件XStream 修复11个漏洞并公开 PoC
  12. jsp分页代码mysql_jsp分页(jsp分页完整代码)
  13. QXDM 存储log的方法
  14. OpenSSH私钥BEGIN OPENSSH PRIVATE KEY与BEGIN RSA PRIVATE KEY格式转换方式
  15. 三相电流滞环跟踪PWM控制
  16. 华为否认提前发年终奖 网传消息实为销售激励计划
  17. 自学网络结构(一):Neural Architecture Search With Reinforcement Learning
  18. MATLAB提取图片点击处的坐标代码(仅供参考)
  19. javax.net.ssl.SSLHandshakeException: No appropriate protocol
  20. 移动端 vue 个人组件库

热门文章

  1. 2021-07-21实用型OEM信息修改
  2. 中央广播电视总台4K超高清频道国庆开播
  3. 阿里妈妈自动分享工具
  4. 安卓开发之模拟智能家电实例(IO写法)
  5. 精益生产的奥秘 -- 优思学院
  6. 食用香精香料行业现状调研及趋势分析报告
  7. 贝叶斯网络(belief network)及相关知识整理
  8. matlab 同步原理搜集
  9. 【数据分发服务DDS】软件定义汽车【一】- 概述
  10. iOS QQ第三方登录