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高级程序设计 读书笔记之八 Function类及闭包
Feb 27 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
Javascript中内建函数reduce的应用详解
Oct 20 Javascript
JS匿名函数实例分析
Nov 26 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
JS原生数据双向绑定实现代码
Aug 14 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
在vue项目中安装使用Mint-UI的方法
Dec 27 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
基于Vue实现微前端的示例代码
Apr 24 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数组中的重复值的实现代码
2011/07/17 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
起点页面传值js,有空研究学习下
2010/01/25 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
jquery禁用右键示例
2014/04/28 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
行政专员工作职责
2013/12/22 职场文书
优秀毕业生求职信范文
2014/01/02 职场文书
小学毕业家长寄语
2014/01/19 职场文书
责任担保书范文
2014/05/21 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
开除通知书范本
2015/04/25 职场文书
房贷收入证明范本
2015/06/12 职场文书
航班延误投诉信
2015/07/02 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python