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 相关文章推荐
Opacity.js
Jan 22 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
Sep 29 Javascript
jquery中ajax学习笔记4
Oct 16 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
js 数值转换为3位逗号分隔的示例代码
Feb 19 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 Javascript
基于JavaScript实现随机颜色输入框
Dec 10 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
May 08 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
JavaScript组合继承详解
Nov 07 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+mysql分页代码详解
2008/03/27 PHP
php 结果集的分页实现代码
2009/03/10 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
12条写出高质量JS代码的方法
2018/01/07 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
详解Python Socket网络编程
2016/01/05 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
servlet面试题
2012/08/20 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
节能标语大全
2014/06/21 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers
JS高级程序设计之class继承重点详解
2022/07/07 Javascript
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS