Jump to content

  • Log In with Google      Sign In   
  • Create Account


Strange textures when loading md5 model in AssImp


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 29 April 2013 - 11:31 PM

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).

Attached Thumbnails

  • screenshot_front.jpg

Edited by Corvwyn, 09 May 2013 - 05:33 AM.


Sponsor:

#2 Jason Z   Crossbones+   -  Reputation: 4911

Like
1Likes
Like

Posted 30 April 2013 - 05:03 AM

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.



#3 Schrompf   Prime Members   -  Reputation: 954

Like
1Likes
Like

Posted 30 April 2013 - 05:21 AM

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.

#4 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 30 April 2013 - 05:26 AM

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.


Edited by Corvwyn, 30 April 2013 - 05:50 AM.


#5 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 02 May 2013 - 01:58 AM

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.


Edited by Corvwyn, 02 May 2013 - 02:04 AM.


#6 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 03 May 2013 - 02:36 AM

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



#7 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 04 May 2013 - 09:00 AM

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?


Edited by Corvwyn, 06 May 2013 - 02:01 AM.


#8 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 06 May 2013 - 02:03 AM

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:

Attached Thumbnails

  • screenshot_switchedzynormals.jpg

Edited by Corvwyn, 09 May 2013 - 05:35 AM.


#9 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 11 May 2013 - 01:47 AM

Anyone know what the problem is?

#10 Adam_42   Crossbones+   -  Reputation: 2467

Like
2Likes
Like

Posted 11 May 2013 - 04:17 AM

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



#11 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 11 May 2013 - 05:36 PM

I thought I went through this so thoroughly, but what do you know...

Seems like normal and texturecoords have been switched when creating the input layout. No wonder the "normals" affected the textures the way they did.

Many thanks for the advice! I'll check it out when I get home. My fingers are itching to fix this.

#12 Corvwyn   Members   -  Reputation: 331

Like
0Likes
Like

Posted 12 May 2013 - 02:00 PM

It worked! Don't know how I managed to miss that. Thanks!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS