So I can seem to figure this out, I'm making a scene with tileable textures, I made them so they snap together in udk, but I'm still getting these ugly seams. I've spent hours already trying to figure out why I'm getting this\/
I export the meshes from Maya using axemesh, I've tried a variety of different settings while exporting it (obey hard edges/ auto triangulate/consolidate geometry/etc) So what is the best way of export, maybe I'm messing up here.
I've narrowed it down to being something with the lighting and have been searching through forums with no luck.
Here is the scene with only textures (notice no weird seams)
and lighting only (ugly seams)
Also, these only have the ugly cgtexture diffuse because I was testing to see if it worked (which is doesn't)
Right now the modular pieces are square, someone said try just a flat plane, which still didn't work
Any advice I will definitely try and post right away
Thank you for your help!
Replies
That should tell Unreal to calculate lighting across the surface more evenly. I can't remember how to do this in Maya, but there should be a tutorial for straight editing of Vertex normals. That might help. Might not.
Sadly, UED has trouble with seams across things like this. They seem to like to build modular-with-intent-to-cover-seamy-areas-with-'covermeshes'.
Also, did you setup 2nd channel UVs for light mapping? Check smoothing groups as well.
Your problem is very common. Sometimes, modular pieces need to be bigger, and sometimes using Unreal's CSG Brushes is the way to go.
Otherwise it's always nice to try and end a modular piece with a natural seam. I know it's not always that nice to use tiles/plates of different kinds, but it's damn convenient. You can make the seams pretty unnoticeable. Even if you are to make a big concrete floor there it'd just look pretty natural to see some seams if it covers a huge area.
But yeah, it looks like you've got way too much difference in there.
As some other people suggested it may be a smoothing issue.
Good luck with it.
-Dave
I've had the normals hard (or i go 'normals' -> harden edges) in maya prior to using axmesh
I tried making the normals like a table. This ended up with the face facing to the inside of the box so i thought I did it backwards and flipped the UVs the other way, still no luck (C) I tried making the boxes bigger with no luck (B) I thought that it was maybe because when I unwrapped it I made the other sides really small, it was messing with the lighting, so I made all the sides take up the same UV space, still nothing (A)
I then tried the CSG ADD button, that makes those boxes (I think its called a brush, when I click on it in udk it says 'persistenLevel.Brush_3', sorry I dont know the right term for it) and created the boxes next to each other and place my material on these and no seam!!(D)....so I'm not sure what I'm doing differently when I import the meshes I made but for some reason they are acting differently. I can't use the brushes for this project because they have to be meshes I made
Cholden how can I check smooth groups?
There is only 1 UV channel
I just tried creating unique uvs and it made it look worse. Maybe I went about making a 2nd set wrong, from what I remember from my teacher:
1) double click on the static mesh
2) Mesh -> Generate unique UVs..
3) hit apply
is that right?
Philipk -> One of my friends suggested I do this, but I wanted a concrete floor so I was unsure of what a natural seam would look like in a concrete floor I was thinking of like a vent or something but I didnt because that would look ridiculous tiled...concrete, vent, concrete, vent, all over the place. I guess I could make all of the tiles bigger but I feel like I'd still have problems because bigger tiles have to meet somewhere.
When I was flippin through forums I found some people said to turn off the ambient occlusion in world settings because of this weird black glow. I think I have it off but wanted to make sure to narrow down the possible problems. Its this box right?
Thank you all for the help, I'm still trying to fix this, so if there are any other thoughts/suggestions feel free to shoot them my way so I can try em out.
If you open any static mesh in the content browser of UDK, Click Mesh > Generate Unique UVs... > then click Apply. This will automatically generate a lightmap UV channel. It may not be as good as manually created UVs, but works fine.
Smoothing groups, google it, look it up, learn it, understand it. These are cripplingly important to game art, normal map rendering, etc. They go beyond Unreal.
Typically you wouldn't have depth in your tiles they would be more or less flat planes, why create depth if you're going to cover it up?
BUT, you can still run into seam issues even with mostly flat planes as you found out. That is probably because the normals on the seam edge don't exactly line up perfectly.
In most cases you copy instances of your tile around the edges, weld it all together, move the extra tiles out of the 0-1 renderable UV space and bake. Then remove the extra tiles and export your single mesh. At least that was the old fix for the seam issue, its possible they could of put some funky voodoo in UDK to counter act this, because its pretty common.
Also keep in mind that you can design your tiles around the seams, plan your UV's well, your smoothing breaks and if whenever possible cover seams up so they won't be a problem.
You should read an article Eric Chadwick has on his website, specifically welcome to splitsville.
http://www.ericchadwick.com/examples/provost/byf2.html
It will probably be helpful to check out the polycount wiki, link at the top of every page, next to the forum link. There is a metric ton of normal map info there.
-For smoothing groups in Maya you don't have to worry beyond hard/soft edges. It's the same thing as Max's smoothing groups--Max's "smoothing groups" just allow for more specific smoothing relationships but are more tedious to set up.
-The brushes in Unreal are 'BSP' (Binary Space Partitions, I think). That's a whole different kind of actor to Unreal. The boxes you made are static meshes. Yes, they're both boxes, but Unreal sees and treats them as two different types of data. So the difference isn't your fault there.
-The way you're generating unique UVs for channel 2 sounds like the same method cholden described.
Either way, I suspect this isn't a lightmap issue, and is a straight up lighting calculation issue instead.
To help check, go to the static mesh editor (double click on the mesh in the content browser) and change the lightmap resolution to 0 to force Vertex lighting. That'll at least eliminate one more variable for now.
-and yes, that's how you shut off Screenspace Ambient occlusion for your level. That will help minimize confusion in regards to what's a shadow bake and what was AO. It probably won't help the lighting issue though.
To be honest, the easiest way to resolve this is probably to remove the depth to the blocks, stitch it together the floor in MAYA, and the reproject the floor UVs and them import it as one big mesh. Either that, or work a groove/cut into the edges of every block so the seam makes sense.
I finally got it! It was a combination of all your advice, I made it a flat plane, made sure all the normals looked like an upside down table and then also made a 2nd UV channel in udk. I'm soo happy
You guys are all awesome!
Thanks
I gotta test tweaking the vertex normals too.
The issue that most people are having is related to they way UDK handles lightmapping. Unfortunately, I have yet to see a perfect solution.
Uploaded with ImageShack.us
its four modular pieces
maybe somebody willing to do so,could remake these exact wall pieces in max and export to udk and if it works you could share with me your steps on doing so. the point of this is, that the wall pieces i made are very low poly and if that effects the lighting along with the shape,we will have the same model and can track down what the problem is. if somebody would be willing to do so,or have a better idea i would appreciate it so much!
edit:
ok this is after i changed the meshes material and added a cement one from udk assets.the shadows appear fine.
Uploaded with ImageShack.us
the seams are better but i think thats the tiling of the material on the uv's of my meshes. does this change anything?
another edit:
i changed the material back to the stucco material i had like in the previous picture but this time in the material editor i removed the normal map. it lessened the seams and made them overall more hidden,but still persistent. here's a picture:
Uploaded with ImageShack.us
Uploaded with ImageShack.us
top piece:
Uploaded with ImageShack.us
What I mean is to make those two pieces one piece. Here's my mockup of what you have right now:
I've circled in red the two UV edges you need to weld. Actually, they don't have to be welded, they just need to be congruent. The reason you're seeing a seam is because the texture pixels on one edge stop and start in a different place. You can see this in the top picture on the right - the numbers and grids don't line up. By moving your UV shells next to each other, you make sure that the texture flows from one part to the next. Using a tiling texture is another way to make sure it transitions well.
Here's an example - UVs split apart, seams apparent:
UVs next to each other, seams disappear:
Notice that the top and bottom are still separate pieces. They just occupy different parts of the same texture sheet. Hope that helps. Let us know what you come up with.
the uv's,so you took the two triangle shaped uv's in the image above and just dragged them down to fit on the top seam of the bottom door shaped pieces? since i have seperate meshes,uv's can only be viewed one mesh at a time(correct me if im wrong) so how can i do what you're asking? the reason i didnt make it all one piece to begin with is because those two triangles at the top is going to not only be on top of that door opening but also on another mesh of a solid wall.and i would have to have the extra geometry if i did what you are saying. right?
For your particular example, I wouldn't worry about breaking it apart too much. You'll get a bit more texels out of mirrored geometry, but at the cost of it looking mirrored (like in your first example, where you can see the seam). Were it me, I'd make the lower part with the doorway one piece, and the upper part one piece. Then you can just instance the top piece to your other wall without an issue.
Even if it takes a bit more geometry, that's ok. It's one of the tradeoffs of modularity. Geometry is cheap and you can have lots of it without a problem. Even UDK can display hundreds of thousands, if not millions of untextured polygons without a problem. What's expensive is textures and lighting. So when UDK loads your lower doorway mesh, it sees it has UVs. Great. Then it goes and gets the stucco texture, and everything looks good. Then it loads your upper triangular part, but wait! It's already loaded the texture it needs, the stucco texture from before. So it's saved a step. Then it loads your next wall, which uses the same texture...and on and on. So reusing those textures, even with more geometry, will run better than loading individual textures for each mesh. That's the beauty of modularity - you can have all these different meshes using the same textures, which increases performance. You just have to make sure that the textures line up, which you do with your UVs. That's what I was doing by moving the triangular part next to the bottom part.
EDIT - Ok, here's a clearer example with a lot of images. It's all in Max, but it works the same in UDK. I made 4 meshes - the bottom doorway, the top triangular piece, a wall without a doorway and a wooden beam. I selected all four pieces and put an Unwrap UVW modifier on them and edited my UVs. Here they are.
And here are the UVs for each piece. Notice that the UVs for the wall and the doorway overlap, so they're using the same texture pixels. That's so the top piece lines up with both of them, increasing modularity. All the pieces of the wood beam are stacked on top of each other, so each side is the same. Again, these are 4 separate meshes, that could be imported into UDK individually.
Now, here's the texture sheet, 1024x1024, that I applied to the pieces.
Notice the brick texture. There's no UVs over it, so it doesn't appear on any of the pieces. If you made a little fireplace mesh, or a windowsill, you could put the UVs on top of that and have brick in your scene. Finally, here's the pieces textured, along with a little house I built from the pieces.
You could do the same thing in UDK. Just import your meshes and attach the same texture to each one, then move the pieces around however you want. I hope that somewhat clears things up for you. Let us know if you get stuck.
At 128, 64 and lower, there's a chance that the game engine will grab a red brick pixel instead of a brown concrete pixel, because they're too close together. By padding your UV shells, you make sure than when the player is away from your house, there isn't a big red spot on it from the brick texture. If the textures are the same, or really close in color like the top and bottom piece, it won't matter because they're all the same brownish color.
so to fix my problem, i should make the triangle meshes one mesh and the two door meshes another mesh. once this is done i select them all, plus the seperate solid wall piece i mentioned earlier, and put an unwrap UVW modifier on all of the selected meshes and align the top triangle uv shells to where the are touching(but not welded to) the bottom door uv shells and also the bottom solid wall uv shell. and the wall shell and the door shell would be on top of one another and be aligned that way?
Two other points. First, Many artists use more pieces to cover up their seams rather than making everything line up all the time. For instance, you might put a wooden board or a row of bricks on the corner of your house. That not only hides the seam but breaks up the model with something visually interesting. That's something to try out.
Second, you're going to have a hard time with that original stucco texture. The saturated, darker spot is going to be recognizable as tiling, no matter how you lay out your textures. A little bit is ok, but something that big is going to stand out. If you can't find a texture that's less spotty, you might try desaturating that one a bit, or cloning out the darker spots. Good luck with it and show us your progress.
Uploaded with ImageShack.us
If you disable mipmapping at the hardware level, you may be able to reproduce the artifacts with some games as well. It's a screen space thing, if an object uses a 512 texture and only occupies 128 pixels on-screen, that texture is going to look mangled, in different ways, each and every frame. Mipmaps solve this. It's a visual quality thing.
As far as atlasing a model, be it for modularity or just keeping things lighter on the render process, you could add details over the places where your "geometry tiling" breaks with seams.
I mean, as opposed to adding "tiling padding" (a waste of texture space imo). In other words, say you have a wall which tiles a painted concrete texture and it uses only 1/8 corner of an atlas, where the seams are, you can add pipes over that area, signs, etc to make it unseen or less noticed. Break up the geometry with more geometry, basically, and then there is no seam to be seen. You'll find in some cases you need to tile extra padding in there and other cases geometry is a better approach.