Qt canvas3d 学习之obj 模型转成json格式后无法显示的问题解决
多多指教:Qt/QML专业中文社区 2015-06-27 301 阅读
今天又浸水了,我尝试把3d max模型库中的模型转成obj,然后再转成json,然后去在canvas3d中加载这个模型,什么鬼啊,一直加载不了,里面空空的,真的空吗? 我在JSONLoader.js中修改源码,不断的调试并没有什么进展,后来就直接对比两个json模型的数据,一个是能正常显示的一个是不正常的,能正常显示模型的json 的 materia数据: "materials": [ { "DbgColor" : 15658734, "DbgIndex" : 0, "DbgName" : "wire_188188188", "colorAmbient" : [0.0, 0.0, 0.0], "colorDiffuse" : [0.58984, 0.58984, 0.58984], "colorSpecular" : [0.35, 0.35, 0.35], "illumination" : 2, "opticalDensity" : 1.0, "specularCoef" : 29.411765, "transparency" : 1.0, //就在这里 "transparent" : true }] 不能正常显示模型的Json的materia数据: "materials": [ { "DbgColor" : 15658734, "DbgIndex" : 0, "DbgName" : "wire_188188188", "colorAmbient" : [0.0, 0.0, 0.0], "colorDiffuse" : [0.58984, 0.58984, 0.58984], "colorSpecular" : [0.35, 0.35, 0.35], "illumination" : 2, "opticalDensity" : 1.0, "specularCoef" : 29.411765, "transparency" : 0.0, //就在这里 "transparent" : true } 发现他们的两个不同之处就在transparency,一个然人疑惑的问题来了,为啥transparency(透明度) 的值被设置成1.0,还能正常显示出来,反倒0.0的时候就没有显示呢?明明 transparency 值设置成1.0应该就全透明了,什么鬼?折磨半天,我在源码中打印相关信息的时候发现,看截图:
这次终于明白为啥会加载这个模型会看不到了,因为transparency已经被重命名为opacity,当opacity(不透明都)为1时,也就完全不透明了。所以我重新在json数据中修改成1后就显示模型出来了。 在不断调试中还遇到一个解不同的问题: var request = new XMLHttpRequest(); request.open("GET", "3dmodels/man/sofa4.json"); request.onreadystatechange = function () { if (request.readyState === XMLHttpRequest.DONE) { console.log(request.responseText); } } request.send(); 这段源码中本来是去读取json模型的时候把这个模型的所有数据都打印出来,如果打印出游数据,正面已经加载完了,神奇的是有些模型能打印出数据,也正常加载显示,但是有些面多好多倍的模型打印出来的数据是空的,但是他也能正常加载显示,我也搞不通,也许那个加载obj模型的方法是行得通的,我因为去读取obj的数据的时候打印的数据时空的,还有在缓冲值cached中它也是undefined的,所以就以为它是无法通过OBJLoader.js来加载Obj格式模型,以后有空再研究这个问题。 最后希望研究canvas3d的真正大神们快点出资料啊,博客啊,小弟这个几天研究的头都爆炸了,做梦都在想着three.js源码的构架(今天下午还真因为小睡在梦中想出来这个问题所在之处呢,源码在脑袋中不停翻滚,感觉豪爽,也好痛苦完),继续这样小弟可能会疯掉了呜呜。作者:多多指教:Qt/QML专业中文社区
多多指教:Qt/QML专业中文社区
原文地址:Qt canvas3d 学习之obj 模型转成json格式后无法显示的问题解决, 感谢原作者分享。
→qml实现幻灯片 ←QML不同目录文件之间相互调用
发表评论
您可能感兴趣的博客
您可能感兴趣的代码