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 相关文章推荐
关于Blog顶部的滚动导航条代码
Sep 25 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
Jan 17 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
使用webpack打包koa2 框架app
Feb 02 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
微信小程序canvas开发水果老虎机的思路详解
Feb 07 Javascript
vue中实现图片压缩 file文件的方法
May 28 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
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+oracle 分页类
2006/10/09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
详解django2中关于时间处理策略
2019/03/06 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
python对文件的操作方法汇总
2020/02/28 Python
Python如何实现FTP功能
2020/05/28 Python
python中的django是做什么的
2020/07/31 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
《郑和远航》教学反思
2014/04/16 职场文书
甘南现象心得体会
2014/09/11 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
检讨书范文大全
2015/05/07 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL