2016-08-21 20 views
0

各メッシュには、textureCoords [i] [j]という形式のtextureCoordsがあります。「i」は頂点IDで、「j」は素材の特定のテクスチャが使用されていることを示すtexture channelIDです。Assimpの素材からテクスチャチャンネルIDを取得するには?

material-> GetTexture(aiTextureType_DIFFUSE、n、& texturePath)を使用してメッシュに使用されるテクスチャを見つけることができますが、どのようにchannelIDを取得できますか?

答えて

1

マテリアルからテクスチャパスを直接読み取ることができます。テクスチャ座標の

if(material->GetTextureCount(aiTextureType_DIFFUSE) > 0) { 
    aiString path; 
    material->GetTexture(aiTextureType_DIFFUSE, 0, &path); 
    printf("Diffuse Texture: %s\n", path.data.c_str()); 
} 

if(aiM->mTextureCoords[0]) 
    for (int j = 0; j < aiM->mNumVertices; j++) 
     vd.texCoord1 = Vector2(aiM->mTextureCoords[0][j].x, aiM->mTextureCoords[0][j].y); 
+0

は、応答をありがとうございました。あなたの例から、私はチャンネルのために "i"、頂点のために "j"を見つけました(私はそれが反対であると教えました)。 mTextureCoords [i] [j]の "i"は素材内の特定のテクスチャに対応します(素材は最大8つのテクスチャを含むことができ、 "i"は0から7までの範囲にあり、 "i"これらの8つのテクスチャのいずれかに関連しています) –

+1

通常、テクスチャの異なるメッシュはノード内に別々のメッシュとして保存されるため、複数のテクスチャ座標を使用する必要はありません。テクスチャ座標の値は、通常、デコルテテクスチャと同じ座標を使用しないライトマップテクスチャを使用するときです。 – codetiger

関連する問題