Strange textures when loading md5 model in AssImp

Started by
10 comments, last by Corvwyn 10 years, 11 months ago

I've finally gotten AssImp to work in DirectX11, but the textures are all wrong. I seem to remember seeing something similar before, but I can't remember what caused it.

Any ideas? I've included a screenshot (Print screen didn't seem to work, so I just took a picture for now).

Advertisement

It looks to me like the texcoords are stuck at a particular value, causing it to look like the texture is stretched across the whole model. Have you tried loading a simpler model yet? I would start out with something like a square or cube, where you can assign known values to each vertex. Then when you load the model through AssImp, you can inspect the results and ensure that everything was properly read in and interpreted.

Maybe the model creator mapped the texture to -1 .. 0 on one axis, and you activated texture coordinate clamping. The result would then look just like this.

----------
Gonna try that "Indie" stuff I keep hearing about. Let's start with Splatter.

Thanks for the replies.

Jason:

Good idea! I'll try with a cube or something and see what happens.

Schromph:

The texture coordinates are set to D3D11_TEXTURE_ADDRESS_WRAP. I've been messing around with texture coordinates/settings, but it didn't seem to help.

Another strange thing, that isn't really noticable in the screenshot is that the model only seems to be textured on the inside. When I loaded a cube and looked at one side, the surface I was facing disappeared and I could only see the inside.

I haven't been able to test out your idea yet Jason. I'll see if I can do that today.

After some research I assume that the reason the model seems to be textured on the inside is because of culling. Maybe it will work if I adjust CullMode and FrontCounterClockwise in the rasterizer state. Too bad I'm stuck at work at the moment :p

Setting the parameter aiProcess_FlipWindingOrder while importing fixed the problem with culling. It now works correctly with CULL_BACK. When using CULL_NONE faces that shouldn't be shown seem to be rendered. Anyone have a clue what's happening?

While testing I set the texture coordinates to always be 0.0f, 0.0f, and it didn't affect the result at all. Why doesn't changing the texture coordinates have any effect? I've tried using the same shader to render a simple textured square without loading it from AssImp, and the textures work.

The only way I got anything to change was to mess with the normals (switched z and y). At least all the textures didn't look as strange as they do in the screenshot. I never really got the textures to show properly though. I have aiProcess_MakeLeftHanded enabled, so the normals should be correct. I have also tried just about every parameter I can pass to the AssImp importer, without success.

I'm using these settings while importing:


const aiScene* scene = importer.ReadFile( inFilename,
aiProcess_CalcTangentSpace |
aiProcess_MakeLeftHanded |
aiProcess_Triangulate |
aiProcess_JoinIdenticalVertices |
aiProcess_SortByPType |
aiProcess_FlipUVs |
aiProcess_GenSmoothNormals | 
aiProcess_RemoveRedundantMaterials  |
aiProcess_FlipWindingOrder );

I'm using the mesh Bob.md5mesh included with AssImp. The only change I've done to the model is that I converted the textures to DDS, but it works in AssImpView. Maybe I have to do something special with this model to get it to work with DirectX(11)?
https://assimp.svn.sourceforge.net/svnroot/assimp/trunk/test/models-nonbsd/MD5/

I can of course provide the code or more screenshots showing the problem, if that would be of help. One good thing about all these problems is that I've gotten more understanding about texture coordinates, buffers etc. I'd really like this to just work soon though.

Edit: Added some more info.

When I switch the z and y normals, this happens:

Anyone know what the problem is?

Have you checked that your input layout matches the data in the vertex buffer?

This topic is closed to new replies.

Advertisement