ColladaLoader2.js - 随机颜色覆盖 .dae 文件设置 (three.js)
Posted
技术标签:
【中文标题】ColladaLoader2.js - 随机颜色覆盖 .dae 文件设置 (three.js)【英文标题】:ColladaLoader2.js - random colors are overwriting .dae file settings (three.js) 【发布时间】:2016-04-15 09:46:25 【问题描述】:我正在使用 Three.js (r73) - 基于 ColladaLoader.js 中的一个错误,我转换到 ColladaLoader2.js。但是,当我使用 ColladaLoader2.js 加载 .dae 文件时,它不会采用 .dae 文件中定义的颜色,而是应用随机颜色。每次刷新页面时,对象的颜色都会随机变化。另外,我注意到灯光的阴影不再适用。
这里有两个例子来说明这个问题。这两个示例之间的唯一区别是一个使用 ColladaLoader.js,另一个使用 ColladaLoader2.js。其他一切都一样。
Ex 1 - ColladaLoader.js - .dae 文件加载并按预期显示(与 Blender 中的外观相同,这是 .dae 文件的导出位置) http://ngndev.com/share/three/cl.html
Ex 2 - ColladaLoader.js - 注意颜色和没有阴影?这是同一个 .dae 文件。尝试刷新页面。颜色每次都会变成一些随机的颜色。 http://ngndev.com/share/three/cl-2.html
有没有人遇到过这种情况或有解决方案?
下面是示例的摘录,展示了我如何添加 .dae。我实际上是在打开 .dae,遍历然后将其添加到场景中(如果它按名称匹配)。
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
//Load in the part
loader.load('e3d-ppppp7.dae', function (collada)
voxel = collada.scene;
voxel.traverse(function (child)
if (child.name.match("^e3d-"))
scene.add( child );
);
);
【问题讨论】:
ColladaLoader2
正在开发中。在 r.74dev 分支中尝试更新版本。如果你发现了一个bug,那么你可以在three.js网站上报告这个bug。
谢谢@WestLangley - 我被定向到更新的 ColladaLoader2.js 文件,这解决了问题。不幸的是,我的“向上”轴现在被扔掉了(如果您刷新上面的示例 #2,您将看到)。我尝试添加和删除“loader.options.convertUpAxis = true;”但这并没有解决问题。
作为一种解决方法,请尝试在加载程序回调中旋转几何图形。 mesh.geometry.rotateX( - Math.PI / 2 )
.
我实施了这个变通办法,它成功了。如果它对其他人有用 - 我正在导入无数的“THREE.Group”和“THREE.Mesh”对象,所以我必须调整解决方法以适用于这两种情况(“几何”进一步嵌套在“集团”情况)。感谢@WestLangley 的快速回复
【参考方案1】:
ColladaLoader2
正在开发中以取代 ColladaLoader
。试试three.js开发版(本例为r.74dev)
如果您在新加载程序中发现错误,请报告它会有所帮助。请参阅three.js guidelines 了解如何报告错误。
three.js r.73
【讨论】:
以上是关于ColladaLoader2.js - 随机颜色覆盖 .dae 文件设置 (three.js)的主要内容,如果未能解决你的问题,请参考以下文章
在HTML+CSS中如何实现上一个div覆盖下一个div的border-top部分?