3d模型透明贴图和mesh部分属性无效的问题求助

我们目前正在用3d做一个赛车游戏,碰到模型透明贴图和mesh中部分属性无效的问题。求助高人!

1,关于赛道场景制作。 目前我用unity摆设赛道场景,并自定义脚本导出各个模型的位置,缩放和网格空间占比为json文件,再将json文件通过cocos2dx解析,并用sprite3d加载到游戏中组建场景,由于unity和cocos2dx用的坐标系不同再进行了一次坐标系转换。如果贵方能给你们的场景编辑器试用,将非常感谢。
2,目前遇到的问题:
1)透明贴图,由于场景中使用了一些面片模型加载树木,草丛等使用了含透明通道的贴图,在3.3的版本中,透明贴图90%能正常显示,3.4final版本透明贴图完全透过了场景上其他3d模型,看着就行是一面镜子一样。我不得不将工程切换到3.3版本继续开发,但是3.3版本也仍然有部分问题,并未完全解决。
2) 模型中有些属性无法处理。 比如下面这个c3t中的属性
“attributes”: {
“size”: 3,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_POSITION”
}, {
“size”: 3,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_NORMAL”
}, {
“size”: 4,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_COLOR”
}, {
“size”: 2,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_TEX_COORD”
}, {
“size”: 2,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_TEX_COORD1”
}],

其中只有position和Tex属性被正常解析使用了,其余的均不正常。我追查代码发现加载Sprite3d中的该方法genGLProgramState  如果场景中使用了灯光,法线属性可以使用。但是另外两个color和tex1不能使用。sprite3d代码中使用的shader并不包含color和tex1的使用。请问目前这块有什么额外的fbx制作规范需要遵守,我看fbx导出规范限制texcoord限制4个以内,我最多只用了2个,不知道texcoord1的属性是什么时候加载的,还是压根就没有加载。

if (hasSkin)
{
if (hasNormal && _shaderUsingLight)
shader = GLProgram::SHADER_3D_SKINPOSITION_NORMAL_TEXTURE;
else
shader = GLProgram::SHADER_3D_SKINPOSITION_TEXTURE;
}
else
{
if (hasNormal && _shaderUsingLight)
shader = GLProgram::SHADER_3D_POSITION_NORMAL_TEXTURE;
else
shader = GLProgram::SHADER_3D_POSITION_TEXTURE;
}

sprite3d用到的shader 3d_position_texture 或者3d_postion_normal_texture。这两个shader在加载属性数据时只是拷贝了顶点位置,纹理或者有光照时还加载法线。 但是color,texcoord1,texcoord2这些是什么时候加载属性数据的,这部分在源码里面我没看到,我只看到所有默认shader加载时获取了各个属性在gl中的location,但并未找到给属性对应location加载数据。

另附几张我们的demo效果看看透明贴图部分的问题,因为我远处天空用了一张半屏高的背景,下面部分是黑色的scene,所以透明贴图透过其他模型显示了黑色。

既然用UNITY3D 了, 为什么 还要多此一举,导出加载到cocos2dx ,
自己为自己挖坑啊

这个游戏是走线下厂商内置的,apk的size限制在10M以内,unity做不到这个限制。

这个是绘制顺序的问题,一般3D引擎先绘制不透明物体,最后绘制半透明的, 否则就会出现透明的把不透明的东西挡住的情况。

看看sprite3d属性里面有没有透明标识。

另外,窗子不应该做成透明的吧,貌似你的楼房只有一半,可能某些角度下是会透过去看到黑色背景。

确实,楼房只绘制了一半,还不知道是什么原因,在unity里面显示都正常。不知道问题出在哪里,请指点指点

背景是2D的吧?在3.4 final里面,把背景的globalZ设置为-1,试试。

静态模型没有蒙皮skin,用的是静态模型的shader,需要的东西,在shader里自己加上,比如tex_coord1。参考自定义shader教程,在论坛里。

加套骨骼,解决收工