我制作了一个带有α通道的.png纹理的3d模型。纹理在A帧中不能正确呈现。我用Autodesk创建了模型,并将模型导出为.OBJ,然后使用obj2gltf将.obj格式转换为.gltf格式。透明度在A帧中没有正确显示.如图像所示,模型存在一些渲染问题。
该模型在我测试过的所有浏览器中都呈现错误: Chrome、Firefox和Safari (iOS)。当从obj2gltf导出时,如果不使用--checkTransparency,则模型不会显示任何透明度。如果从<a-assets>或内联调用它,则不起作用。我还将模型导入Blender,然后使用搅拌机出口商作为搅拌机出口商导出,而A帧根本无法识别透明度。如果作为带有.OBJ标记的<a-obj-model>加载,模型也不会正确显示。
<a-assets><a-asset-item id="tree" src="assets/tree02.gltf"></a-asset-item></a-assets>
<a-entity gltf-model="#tree" position="0 0 -10" material="alphaTest: 0.5"></a-entity>
https://i.imgur.com/HbFoBBb.png,这就是它在A帧中出现的方式
https://i.imgur.com/1zk3uVl.png --这就是模型在玛雅中的样子,以及它应该如何出现。
发布于 2019-01-10 01:11:54
透明度似乎在这里工作,您的问题似乎是经典的opengl排序顺序+透明度+深度缓冲区。有些叶子在前面先呈现,所以后面的叶子不会渲染,因为它们前面已经有什么东西了。绘制所有叶子的最佳方法是在渲染之前按距离对所有叶子进行预排序,但在加载外部模型时,这通常是不可行的。
我建议你试着在A帧的材料中激活side:double和depthTest: false。另外,使用obj模型而不是gltf,这样您就可以与它一起使用material组件(不能在gltf模型中使用物质组件)。
<a-entity obj-model="obj:#tree" material="src: #yourTreeTexture; side: double; depthTest: false">
depthTest会做到这一点,尽管它可能会渲染你场景中的其他东西。试着找出最好的选择。
https://stackoverflow.com/questions/54119599
复制相似问题