Three.js加载外部模型的教程详解


Posted in Javascript onNovember 10, 2017

1.  首先我们要在官网: https://threejs.org/ 下载我们three.js压缩包,并将其中的build文件夹下的three.js通过script标签对的src属性导入到我们的页面中

2.  创建three.js核心对象

Scene(场景)

Camera(相机)

Light(光源)

Mesh(模型)

Renderer(渲染器)

最后一步就是渲染显示在我们的页面上了renderer.render(scene,camera)

3.  OBJ模型的导入

<script type="text/javascript" src="js/OBJLoader.js"></script>
 <script type="text/javascript" src="js/MTLLoader.js"></script>

Three.js加载外部模型的教程详解

4.  .JS模型的导入

首先我们需要将.OBJ模型的文件转换成.JS文件的模型

.obj格式转.js格式使用的是threejs.org官方提供的一个convert_obj_three.py的工具,这个工具的使用需要安装python环境

转换过程:

    将convert_obj_three.py和要转换的.obj文件和.mtl文件放在同一个目录下

Three.js加载外部模型的教程详解

打开cmd,切换到对应的目录下

python convert_obj_three.py -i infile.obj -o outfile.js [-t ascii|binary]

    可以得到两种编码方式的.js文件(二进制binary和ascii)

出现的问题,转换格式的问题:

   打开.obj文件,

Three.js加载外部模型的教程详解

将mtllib关键字后面改成 .mtl文件相对于.obj文件的路径

Three.js加载外部模型的教程详解

将文件中的这些?改成字母,乱码

Three.js加载外部模型的教程详解

.mtl文件中的newmtl 关联到.obj文件中

Three.js加载外部模型的教程详解

这是.obj文件中的

5.  准备导入

Ascii

Three.js加载外部模型的教程详解

Binary

需要导入

<script src="js/BinaryLoader.js"></script>

Three.js加载外部模型的教程详解

PS:three.js 外部模型加载json

用blender做模型可以直接导出json文件(导出插件可以从three.js包里找到)。从网上下载模型,网上的模型很多事3ds max做的,我就用3ds max把模型格式转换成obj,再导入blender处理好模型后导出json文件。

导出json文件时选项勾选如果选择了SCENE可连灯光一同导出加载时需要用ObjectLoader

var loader = new THREE.ObjectLoader(); 
loader.load('youscene1.json',function(obj){ 
  obj.scale.x = obj.scale.y = obj.scale.z =100; 
  scene.add(obj); 
});

导出json文件时如果不勾选scene,需要页面中添加灯光否则模型全黑,加载时用JSONLoader

var loader = new THREE.JSONLoader(); 
      loader.load( "noscene.json",function( geometry, materials ) { 
        materials[ 0 ].shading = THREE.FlatShading; 
        mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) ); 
        mesh.position.x = 0; 
        mesh.position.y = 0; 
        mesh.position.z = 0; 
        mesh.scale.x = mesh.scale.y = mesh.scale.z =100; 
        scene.add( mesh ); 
      });

总结

以上所述是小编给大家介绍的Three.js加载外部模型的教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript客户端脚本的设计和应用
Aug 21 Javascript
jMessageBox 基于jQuery的窗口插件
Dec 09 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
复制js对象方法(详解)
Jul 08 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
js接收并转化Java中的数组对象的方法
Aug 11 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
Aug 24 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
微信小程序使用npm包的方法步骤
Aug 13 Javascript
vue2导航根据路由传值,而改变导航内容的实例
Nov 10 #Javascript
three.js加载obj模型的实例代码
Nov 10 #Javascript
vue router-link传参以及参数的使用实例
Nov 10 #Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
Nov 10 #Javascript
js+html获取系统当前时间
Nov 10 #Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 #Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
Nov 10 #Javascript
You might like
聊天室php&amp;mysql(一)
2006/10/09 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
基于jquery的拖动布局插件
2011/11/25 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Python探索之SocketServer详解
2017/10/28 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
python判断变量是否为列表的方法
2020/09/17 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
高级Java程序员面试要点
2013/08/02 面试题
网页美工求职信
2014/02/15 职场文书
高一学生期末评语
2014/04/25 职场文书
工程承包协议书
2014/10/20 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis