- Home /
Texture question
A little background on the problem.
I have the most current version of unity.
I have re-downloaded a new copy and re-installed just in case of corruption.
I've created a Celtic Knot style pattern I plan to wrap around multiple objects. I've saved it in both Tiff and Jpeg format.
Next I created an Object, nothing special, just a deformed sphere I planned to use as a rock in my environment. I exported it from blender as a FBX, and drug it into unity. Mesh works fine, and shows up with the default defuse material without issues.
Then I applied my jpeg as a texture. Only problem is, it isn't displaying the texture, Just the most prevalent color.
I immediately thought - "Must be a scaling issue." After adjusting the tiling to the following settings of: .0001, .001, .01, .1, 1, 5, 10, 20, 50, 100, 1000, Then I gave up.
I created a sphere in unity, and applied the texture to that. Renders perfect the first time.
Now I've done UV maps before, Its been my favorite way of importing to date, but this is something quick I wanted to use on terrain elements that I planned to create rapid fire. Creating a UV map for each will kind of put a damper on my parade.
Is there any way to get unity to correctly print the Jpeg or Tiff texture on a homemade model without a UV map?
Answer by Wolfram · Jun 05, 2012 at 01:51 PM
The problem is that your imported model has no (or no valid) UV info, which is required for texturing. Noticing how many people are having problems with textured models coming from Blender, it seems that UV mapping export is disabled per default for some reason or something.
So you need to make sure the info is exported from Blender, respectively search Unity Answers and/or the web about that topic, it has been asked many times before.
I had done the search several times. Only workaround I've managed is actually unwrap/creation of a UV map and importing the Texture separate.
Now if unity is unable to apply a texture to a model without being hand-fed UV data that's fine. I was hoping there was a way to avoid that sillyness.
I'll take your answer as a solid "No there isn't."
Thank you for your time.
It is impossible for an application to just "know" how you'd like a texture mapped on an arbitrary 3D object which can have any shape. There are certain possibilities and heuristics trying to guess or approximate that (for example, doing a spherical projection, or specialized algorithms trying to map repeating textures as regularly as possible on complex 3D-surfaces), but no general solution that works for all cases (or even two sufficiently different ones) exists.
Also, there is generaly no need to implement any of these algorithms in the Unity base editor (you can always implement your own methods yourself, though), since all modelling tools are dedicated to the exact task of mapping textures exactly where you want them to.
I think it is easier trying to figure out why a texturing you applied in a program such as Blender doesn't get correctly imported into Unity, than to have Unity guess what the users wants its objects to look like based on some inadequate heuristics.
The texture was not exported via blender, only the model. FBX Exports from Blender do not include materials/texture data, or at least not anything helpful. (lol) Only the UV data, should you unwrap it, ever makes it into the file. I've used the blender -> unity transfer quite a few times for intricate and animated models, this was my first foray into this less complicated texturing method. I'm not assigning blame on unity, nor on blender.
The texture was made in photoshop and applied using unity. It's a basic tile intended to be repeated over the object, I hadn't realized unity would need information to do so that's all. Especially after playing with the basic set of objects included in unity, and using the tile/offset to get a handle on how that bit works on the game engine side. I assume that the pre-made objects come with suitable 'heuristics' on how to apply textures, given your explanation.
I've used several other editors and never before encountered this problem before. Heck even the old bryce landscape engine would give it a guess, so maybe you can see how I would be confused?
Apologies, while I adapt to the Unity Conventions. I didn't mean to slight this engine, I'm actually quite impressed with it. ^.^
Also, could you stab a guess at why it colored the object, with what I'm guessing is just the top-left corner pixel color from the Tiff/Jpeg Textures? Seems weird it would change colors at all if its not hazarding a guess on how to apply the texture.
Thanks for the information all around.
No problem, and no need to apologize. It would be nice if programs do things more like we expect, ins$$anonymous$$d of having to tell them every tiny bit again and again ;-) Textured models need UV like lit models need normals, and shapes need 3D positions, you can't have one without the other. Standard primitives come with standard mapping, so that's why the Unity objects more or less work fine with textures.
Yes, your Blender model will probably assume UVs of [0,0] for all vertices, and therefor also every point on its surface, and [0,0] will essentially display the upper left pixel of your texture everywhere.
Your answer
Follow this Question
Related Questions
Assigning UV Map to model at runtime 0 Answers
texture maps render on one side only 1 Answer
Render to Texture artifacts 0 Answers