アキアキノヒロロさん、単一マテリアルではできたようで良かったです。
tamane2の場合はファイル名が良くないようにも思いますが、
こちらの環境ではtamane2に対して以下のmaterialに変更することで半透明にできました。
ポイントとしては
・共通のmaterial Texturedではなくmaterial bodyUV : textured等に記載する
・renderStateの設定
・シェーダーにおいてgl_FragColor.aが1より小さい値となるようにテクスチャのアルファを下げるorMODULATE_ALPHAを使う
だと考えています。
ツイートで行っている方法も以下のtamane2と同様に
1オブジェクトに複数マテリアルを割り当てたモデルのうち、
あるマテリアルのみ半透明にしていて、
ツイートではこの時の描画順がいまいちわからない という現状を述べています。
Unity等でも半透明マテリアルは描画順(Render Queue)を後にするなど、
不透明と半透明の混合は何らかの描画順対策が必要であり、
私の場合は不透明と半透明でオブジェクトを分ける方法(明確に描画順が制御できる方法)を
取っています。
material textured
{
u_worldViewProjectionMatrix = WORLD_VIEW_PROJECTION_MATRIX
sampler u_diffuseTexture
{
mipmap = true
wrapS = CLAMP
wrapT = CLAMP
minFilter = LINEAR_MIPMAP_LINEAR
magFilter = LINEAR
}
renderState
{
cullFace = true
depthTest = true
blend = true
srcBlend = SRC_ALPHA
dstBlend = ONE_MINUS_SRC_ALPHA
}
technique
{
pass
{
vertexShader = res/shaders/textured.vert
fragmentShader = res/shaders/textured.frag
}
}
}
material bodyUV : textured
{
u_matrixPalette = MATRIX_PALETTE
u_modulateAlpha = 0.2
sampler u_diffuseTexture
{
path = body_SD.png
wrapS = REPEAT
wrapT = REPEAT
}
technique
{
pass
{
defines = SKINNING;SKINNING_JOINT_COUNT 12;VERTEX_COLOR;MODULATE_ALPHA
}
}
}
material headUV : textured
{
u_inverseTransposeWorldViewMatrix = INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX
u_matrixPalette = MATRIX_PALETTE
u_modulateAlpha = 1.0
sampler u_diffuseTexture
{
path = head_SD.png
wrapS = REPEAT
wrapT = REPEAT
}
technique
{
pass
{
defines = SKINNING;SKINNING_JOINT_COUNT 12;VERTEX_COLOR;MODULATE_ALPHA
}
}
}