谷歌开发的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系统 ...
随机推荐
- RabbitMQ系列教程之四:路由(Routing)(转载)
RabbitMQ系列教程之四:路由(Routing) (使用Net客户端) 在上一个教程中,我们构建了一个简单的日志系统,我们能够向许多消息接受者广播发送日志消息. 在本教程中,我们将为其添加一项功能 ...
- 今天折腾phantomjs+selenium的笔记
1.debian8里安装phantomjs的方法: 参照:http://www.cnblogs.com/lgh344902118/p/6369054.html a.去https://bitbucket ...
- 简单实现"回车!=提交"(去除表单的回车即提交)
-------------------------------------------------------------------------------------------------- 实 ...
- LISTVIEW显示JPEG缩略图
http://www.ctsys.cn/files/SHOW_FILES.ASPX?ID=22 许多的JPEG图片浏览器(如由我设计的<JPEG浏览缩放器>),都可以将JPEG缩略图放置到 ...
- 开发一个FTP软件
一.开发一个多并发的FTP server 需求: .允许同时支持多用户在线 .用户认证 .用户空间配额 .权限限制 .可上传下载.上传下载过程中显示进度条 .用户可远程切换目录.查看服务端文件列表等 ...
- ubuntu14安装TensorFlow
1.安装ubuntu 网址:https://www.cnblogs.com/blog4matto/p/5581914.html 选择ubuntu14的原因:最初是想安装16的,后来发现总出问题,网上查 ...
- 给RabbitMQ发送消息时,设置请求头Header。
消费者的请求头 生产者设置请求头 由于消费者那里,@Payload是接受的消息体,使用了@Header注解,需要请求头,生产者这边就要设置请求头,然后rabbitTemplate再调用convertA ...
- cgi调用linux系统命令
1.例如:建一个目录:system("mkdir yourdir").(1)首先:要用root用户如果cgi中要用root用户,则必须在boa.conf文件中配置,将User no ...
- 接收Android数据 递归显示表格数据
<html> <head> <title>展示</title> <script type="text/javascript" ...
- git库初次下载
1.右键Git Batch Here==>输入 git config --list 确认2.再次输入ssh-keygen -t rsa -C “修改后的邮箱” 3.回车多次 找到 生成序列目录 ...