谷歌开发的draco格式文件将obj文件压缩成drc文件后将大大减小文件大小(threejs加载有mtl文件的drc文件)
问题描述:当前threejs是92版本 但是当前版本还没有能够直接加载带贴图文件的drc格式的loader;
解决办法:先加载mtl文件将obj文件分解(按照mtl文件内材质贴图信息进行分解)再将分解的obj文件转成drc全部加载一遍就能解决贴图的办法 ;
代码:
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var modelObject = new THREE.Object3D();
var loadNum = 0;
var mtlLoader = new THREE.MTLLoader();
// new THREE.MTLLoader()
mtlLoader.setPath( '__PUBLIC__/wap/dracoModel/0518xialian/' );
mtlLoader.load( 'cs.mtl', function ( materials ) {
materials.preload();
new THREE.OBJLoader()
.setMaterials( materials )
.setPath( '__PUBLIC__/wap/dracoModel/0518xialian/' )
.load( 'cs.obj', function ( object ) { // object.position.x = -0.55;
// object.position.y = -0;
// object.position.z = 1.1;
object.scale.x = 0.0005;
object.scale.y = 0.0005;
object.scale.z = 0.0005;
scene.add( object ); }, onProgress, onError ); // dracoLoader.load( '__PUBLIC__/wap/images/bunny.drc', function ( geometry ) { // dracoLoader.load( '__PUBLIC__/wap/dracoModel/9015/1.drc', function ( geometry ) {
// geometry.computeVertexNormals();
// var material = new THREE.MeshStandardMaterial( { vertexColors: THREE.VertexColors } );
// var mesh = new THREE.Mesh( geometry, material );
// mesh.castShadow = true;
// mesh.receiveShadow = true;
//// mesh.position.x = -10;
//// mesh.position.y = -5;
//// mesh.position.z = -10;
// mesh.scale.x = 0.005;
// mesh.scale.y = 0.005;
// mesh.scale.z = 0.005;
// scene.add( mesh );
//
// // Release decoder resources.
// THREE.DRACOLoader.releaseDecoderModule();
//
// } ); //将素材加载到场景中回掉函数
var loaderCallback = function(geometry) { var material = null;
// console.log(loadNum);
if(loadNum === drcNameArray.length-1){
scene.add(modelObject);
}else{
geometry.computeVertexNormals();
var midName = drcNameArray[loadNum].split('.')[1];
// midName = midName.slice(0,2);
material = materials.materials[midName];
console.log(midName);
// console.log(drcNameArray[loadNum].split('.')[1]);
// console.log(materials.materials);
var mesh = new THREE.Mesh( geometry, material );
mesh.castShadow = true;
mesh.receiveShadow = true;
mesh.scale.x = 0.0003;
mesh.scale.y = 0.0003;
mesh.scale.z = 0.0003;
// // Release decoder resources.
// THREE.DRACOLoader.releaseDecoderModule();
modelObject.add(mesh);
loadNum++;
// console.log(loadNum)
dracoLoader.load("__PUBLIC__/wap/dracoModel/hongpei01/drc/" + [drcNameArray[loadNum]],loaderCallback,function(){});
}
// item.halfSize = getObjectHalfSize(modelObject); };
// dracoLoader.load("__PUBLIC__/wap/dracoModel/hongpei01/drc/" + drcNameArray[0],loaderCallback,function(){});
//将素材加载到场景中回掉函数end
} );
描述:目前我们是这么解决的;
谷歌开发的draco格式文件将obj文件压缩成drc文件后将大大减小文件大小(threejs加载有mtl文件的drc文件)的更多相关文章
- 如何将SolidWorks文件另存为.obj文件及如何打开.obj格式文件
原网站:http://fans.solidworks.com.cn/forum.php?mod=viewthread&tid=40238) OBJ文件是Alias Wavefront公司为它的 ...
- web开发常用图片格式
web开发常用图片格式有:gif jpg/jpeg png gif:图片压缩率高,可以显示动画,但是只能显示256色,可能造成颜色丢失. jpg:图片压缩率高(有损压缩),可以用小文件来显示 ...
- java11 Guava:谷歌开发的集合库
Guava:谷歌开发的集合库,通过build path->Add External JARs 把guava.jar包加进去. 版本控制工具:.CVS .SVN .git 所以需要下载git客户端 ...
- (5)微信二次开发 之 XML格式数据解析
1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...
- 关于http接口开发中json格式数据编码问题处理
关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...
- 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标。确保已运行还原,且“netcoreapp2.0”已包含在项目的 TargetFrameworks 中。
升级 vs201715.6.3之后发布出现 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标.确保已运行还原,且 ...
- java实现将文件压缩成zip格式
以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...
- Linux下zip格式文件的解压缩和压缩
Linux下zip格式文件的解压缩和压缩 Linux下的软件包很多都是压缩包,软件的安装就是解压缩对应的压缩包.所以,就需要熟练使用常用的压缩命令和解压缩命令.最常用的压缩格式有.tar.gz/tgz ...
- Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件
项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...
随机推荐
- 28.注解2.md
目录 1. 特点 2.优点 3. 源注解-部分 4.自定义注解 5.使用注解获 1. 特点 注释:给程序员阅读使用 注解:给编译器阅读使用 2.优点 简化配置文件 灵活方便 3. 源注解-部分 //修 ...
- Structs复习 访问web元素
Structs帮我们在action和http里建立了联系 主要有四种方式 我们主要用第二种(IOC 依赖容器注入 ) Jar包 web.XML <?xml version="1.0&q ...
- centos 下安装redis
一.安装redis 第一步:下载redis安装包 redis下载地址 wget http://download.redis.io/releases/redis-5.0.3.tar.gz 第二步:解压压 ...
- oracle创建数据库步骤
1.oracle安装成功后, cmd sqlplus,然后system/orcl as sysdba 2.更改scott的密码,scott的默认密码是tiger SQL> alter user ...
- php常见排序
public function actionQuickSort(){ $arr = ['5', '4', '3', '2', '1', '0']; $quickRes = $this->quic ...
- 什么是JIT,写的很好
什么是JIT 一些其他解释的网站:http://www.sohu.com/a/169704040_464084 1.动态编译(dynamic compilation)指的是“在运行时进行编译”:与之相 ...
- 04_web基础(一)之tomcat介绍
01.web引入 在这之前我们已经能够在数据库进行CRUD,在dao处进行CRUD,在service处进行CRUD,对用户来说必须在浏览器上进行CRUD,要完成这个就必须具备web知识. 而web运行 ...
- intellij idea 搜索功能快捷键
intellij idea是一款超智能的编译器,因此在信息资源的搜索功能中给我们的用户提供了很大的帮助.同样作为java编译器的eclipse和myeclipse在搜索方面就比intellij ide ...
- sql 求max和min,但是第二大,第二小怎么算?
利用子查询,但这样速度较慢. SELECT Baoming.id, Baoming.addtime AS '报名时间', CONCAT(Members.realname,Members.usernam ...
- Nodejs this详解
[Nodejs this详解] Nodejs中, 文件层this,指向的是module.export. 函数层this,指向的是global对象. 参考:http://www.jb51.net/art ...