问题描述:当前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文件)的更多相关文章

  1. 如何将SolidWorks文件另存为.obj文件及如何打开.obj格式文件

    原网站:http://fans.solidworks.com.cn/forum.php?mod=viewthread&tid=40238) OBJ文件是Alias Wavefront公司为它的 ...

  2. web开发常用图片格式

    web开发常用图片格式有:gif   jpg/jpeg    png gif:图片压缩率高,可以显示动画,但是只能显示256色,可能造成颜色丢失. jpg:图片压缩率高(有损压缩),可以用小文件来显示 ...

  3. java11 Guava:谷歌开发的集合库

    Guava:谷歌开发的集合库,通过build path->Add External JARs 把guava.jar包加进去. 版本控制工具:.CVS .SVN .git 所以需要下载git客户端 ...

  4. (5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

  5. 关于http接口开发中json格式数据编码问题处理

    关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...

  6. 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标。确保已运行还原,且“netcoreapp2.0”已包含在项目的 TargetFrameworks 中。

    升级 vs201715.6.3之后发布出现 错误 : 资产文件“项目\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标.确保已运行还原,且 ...

  7. java实现将文件压缩成zip格式

    以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...

  8. Linux下zip格式文件的解压缩和压缩

    Linux下zip格式文件的解压缩和压缩 Linux下的软件包很多都是压缩包,软件的安装就是解压缩对应的压缩包.所以,就需要熟练使用常用的压缩命令和解压缩命令.最常用的压缩格式有.tar.gz/tgz ...

  9. Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

    项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...

随机推荐

  1. Oracle数据文件转移操作

    由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下.本文主要描述Oracle表空间数据文件移动的操作步骤. ...

  2. 树莓派上的软件安装和卸载命令汇总 [ZT]

    转自:http://www.eeboard.com/bbs/thread-40823-1-1.html基础命令 安装软件 apt-get install softname1 softname2 sof ...

  3. [Redis]Redis的快速配置使用(图)

    --------------------------------------------------------------------------------------------------- ...

  4. Python类的进阶.md

    属性绑定 在python中可以给类对象动态的绑定属性 但是由于这种特性,随意动态绑定也会带来麻烦,因此可用__slots__来限制可绑定的属性名称 __slots__的绑定对于子类是不生效的,只对当前 ...

  5. JAVAWEB 一一SpringMVC(XML配置)

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...

  6. ArcGIS案例学习笔记3_1_地理配准案例_目视找点

    ArcGIS案例学习笔记3_1_地理配准案例_目视找点 计划时间:第3天上午 方法:地理配准/添加链接点/左键/右键/输入坐标 数据:江苏省.zip 矢量:省界,市界,GPS WGS84 地理坐标系 ...

  7. C# Excel导数据

    遇到的几个坑,记录一下. 隐藏表,隐藏行,隐藏列, 单元格合并 => 拆分并填充内容, 显示隐藏列,结果那个列 还是不显示出来,拖动旁边的列也不显示. 结果在旁边的列上,按左右箭头键就出来了,也 ...

  8. kali下的miranda工具只适合同一路由下使用

    在终端输入如下命令: miranda -v -i eth0 上面的命令是指定打开网卡eth0,返回结果如下: miranda提示输入开启upnp的主机,现在我们不知道哪台主机开启了upnp,输入命令“ ...

  9. 03_java基础(四)之方法的创建与调用

    import org.junit.Test; public class Main { public static void main(String[] args) { System.out.print ...

  10. Dao层向sql语句传递多个参数

    手动封装: serviceImpl层 Map<String, Object> params = new HashMap<String, Object>(2);params.pu ...