报错: THREE.GLTFLoader: No DRACOLoader instance provided
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'
return new Promise((resolve, reject) => {
const loader = new GLTFLoader()
const dracoLoader = new DRACOLoader()
dracoLoader.setDecoderPath('/static/draco/')
loader.setDRACOLoader(dracoLoader)
loader.load(gltfPath, function (obj) {
resolve(obj)
使用DRACOLoader 加载
本例子
加载glb文件,显示一个房子的
模型的线框。
用trav
erse遍历
模型里的所有子对象,如果是网格对象用child.mat
erial.wireframe = true;使其显示线框。
相关技术英文网站搜索关键字:three.js model wireframe
目录前言下载依赖改造插件主要代码效果
最近需要做一个three.js加载三维模型的,才发现three.js的官网和网上的示例挺乱的。甚至有人说把three.js的全部demo下载下来,替换其中的页面,学习者自己操作起来挺难的。这里我就已在vue项目中为例,介绍一下如何实现使用three.js加载三维模型。
npm install three --save
three.js官网demo里提供了加载gltf模型的插件,但是这里需要改造一下
GLTFLoader.js
import
下面来安装
gltf-pipeline;该插件的作用是把现有的
gltf格式
模型进行压缩,跟图片压缩一样。缩小体积,更快的
加载。
npm i -g
gltf-pipeline
用法:在命令行或终端中输入以下命令,格式为:
gltf-pipeline -i 原始文件
使用前端three.js加载3d模型过程中,往往会出现模型大小过大导致前端加载时间过长,降低用户体验。
本文所记录的是笔者在使用gltf-pipeline压缩3d模型中踩坑DRACOLoader与解决的一个过程。
所采用的three库版本为 ^0.138.2
解决方案与介绍
通过gltf-pipeline可以大幅度压缩gltf/glb模型文件。
并且有如下的作用
将 glTF 转换为 glb(和反向)
将缓冲区/纹理保存为嵌入或单独的文件
将 glTF 1.0 模型转换为 glTF 2.0(使用KH
three.js glTF加载器
对于three > = v0.103.0的注释
请注意,从three.js r103开始, GLTFLoader包含在three软件包中,不再需要安装three-gltf-loader 。
可以通过访问
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' ;
该软件包将不再维护。
yarn add three-gltf-loader
npm i --save three-gltf-loader
three.js的r111 包装为易于导入的模块,其中包括TypeScript类型定义。
import * as THREE from 'three' ;
import GLTFLoader from 'three-gltf-loader' ;
const loa
Three中的加载脚本很多,但是核心思想是差不多的,就是文件用文件解析器加载,图片用图片解析器加载,然后json转换为对象,但是由于gltf格式可以自己编辑所以有的源码参考意义不大,glb及拓展材质都没用上就还没有翻译,以后可能会补上。
该源码位置在three.js源码examples\js\loaders文件夹下
* @author Rich Tibb...
CentOS 7运行.sh脚本提示syntax error: unexpected end of file。脚本是通过本地电脑的notepad++编辑之后用ftp上传到CentOS 7服务器上的。
错误原因:
shell脚本在本地电脑编辑的,格式是dos(可以用vi编辑该shell脚本,进入命令行模式,输入:set ff 回车即可看到左下角显示fileformat=dos),在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以本地修改的sh文件在CentOS上运行每行都会多了一个CR,因此就会报错