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 相关文章推荐
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
JS+CSS实现可拖动的弹出提示框
Feb 16 Javascript
JS、jQuery中select的用法详解
Apr 21 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
May 09 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
vue 路由守卫(导航守卫)及其具体使用
Feb 25 Javascript
JsonServer安装及启动过程图解
Feb 28 Javascript
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
javascript自定义加载loading效果
Sep 15 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
layer.prompt输入层的例子
2019/09/24 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python中的Numpy入门教程
2014/04/26 Python
一则python3的简单爬虫代码
2014/05/26 Python
Python解析树及树的遍历
2016/02/03 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python数据类型之List列表实例详解
2019/05/08 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
酒店管理毕业生自荐信
2013/10/24 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
单位工作证明书格式
2014/10/04 职场文书
2014年大学生工作总结
2014/11/20 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android