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 02 Javascript
jQuery实现的导航条切换可显示隐藏
Oct 22 Javascript
jQueryMobile之Helloworld与页面切换的方法
Feb 04 Javascript
JavaScript学习笔记之数组的增、删、改、查
Mar 23 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
微信小程序使用第三方库Immutable.js实例详解
Sep 27 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
Mar 24 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
Oct 20 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
输出控制类
2006/10/09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
numpy基础教程之np.linalg
2019/02/12 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
Django Celery异步任务队列的实现
2019/07/24 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
联想C++笔试题
2012/06/13 面试题
4S店售后客服自我评价
2014/04/09 职场文书
中国梦团日活动总结
2014/07/07 职场文书
我的1919观后感
2015/06/03 职场文书