Collada 纹理上的线框覆盖 - three.js

Posted

技术标签:

【中文标题】Collada 纹理上的线框覆盖 - three.js【英文标题】:wireframe overlay on Collada textures - three.js 【发布时间】:2012-01-17 23:48:59 【问题描述】:

当我使用带有 .jpg 纹理的 Collada 模型时,three.js 似乎在纹理上覆盖了线框网格。 我的问题 - 有没有办法移除线框?

这里有一个例子; http://movealpha.com/dae/test1.html

这是同一个示例,移除了 Collada 纹理以显示底层线框; http://movealpha.com/dae/test2.html

这是一个问题还是有一种简单的方法可以删除线框覆盖?

ps。感谢 mrDoob 提供了一个真正令人敬畏的 javascript 库 - 我们共同不值得!

【问题讨论】:

【参考方案1】:

mrdoob 在 github 上回答了这个问题; https://github.com/mrdoob/three.js/issues/885

这是他的答案的副本

这是 CanvasRenderer 的限制。设置 material.overdraw = true 可能会改善事情。您可以找到具有您所需要的材料的对象 想要改变:

var object = collada.scene.getChildByName( 'object_name', true );
object.material.overdraw = true;

【讨论】:

【参考方案2】:

通过为 collada.scene 中的所有(!)子项设置 material.overdraw=0.5,它对我有用。在我的例子中,孩子里面有孩子。

var loader = new THREE.ColladaLoader();
loader.load( 'model.dae', function ( collada ) 
var dae = collada.scene;
for (var i=0; i<dae.children.length; i++) 
        for (var j=0; j<dae.children[i].children.length; j++) 
            dae.children[i].children[j].material.overdraw=0.5;
        
    
scene.add(dae);    

【讨论】:

以上是关于Collada 纹理上的线框覆盖 - three.js的主要内容,如果未能解决你的问题,请参考以下文章

更改 Three.js collada 对象的纹理和颜色

如何使用 THREE.js 向 collada 文件 (.dae) 添加纹理?

如何在 Three.js 中用 ShaderMaterial 替换 Collada 导入的纹理?

无法使用 Three.js 加载从搅拌机导出的纹理 Collada

加载collada纹理时如何调用函数? (三.js)

将纹理应用到线框