我有一个网格(平面与一些改性剂)的材料分配给它在搅拌机,和纹理的材料使用半透明的PNG图像。
当导出到POD文件时,网格在PVRShaman中看起来仍然像在搅拌机中那样半透明,但是当我将它导入Cocos3D作为时,它看起来就像图像本身仍然是半透明的,但在背景中它背后也有一种蓝色的颜色。
知道为什么会这样吗?
在Blender中的设置似乎没有问题,因为我可以在导出后正确地显示它,但是在Cocos3D方面有什么问题呢?
发布于 2014-07-17 21:38:24
你可能是在和预倍增的阿尔法打交道。为了提高效率,Xcode (和iOS图像加载器)假设alpha将预先乘以每个纹理中的颜色,并在应用程序打包和纹理加载期间实际修改纹理。这是Xcode和iOS中一个众所周知的问题。
尝试更改PNG文件的名称,使其具有ppng文件扩展名。这将导致Xcode在构建时跳过文件操作,并导致Cocos3D对映像使用非Apple文件加载器。
有关此问题的更多信息,请参见CC3Texture类的注释或CC3Material或CC3MeshNode的texture属性。
编辑
事实证明,这是包含透明度的两个节点的呈现顺序的问题。蓝色的颜色来自于天框后面的场景背景。感兴趣的对象是在天窗前呈现的,它还具有一种包含透明度的纹理。通常情况下,Cocos3D会首先自动渲染不透明物体,然后以与摄像机距离相反的顺序呈现半透明物体。在这种情况下,skybox包含透明(有一个alpha通道),并且在感兴趣的对象之后呈现。这通常是一个很好的做法,以确保用于天框的纹理是不透明的,并且不包含alpha透明度。
还可以通过将skybox的zOrder属性设置为正值(默认为零),强制首先呈现skybox(甚至半透明的skybox)。zOrder属性可用于修复透明对象的呈现顺序。对于完全不透明的对象,它不是必需的(也没有任何影响)。
https://stackoverflow.com/questions/24781610
复制相似问题