Applying textures to a plane game object results in spreading - unity3d

As visible in the attached image, when I apply a grass or ground texture to a plane, it all spreads around and looks like it is being stretched to fill the whole floor...
I cannot seem to find any settings that would address this. I have already triedx setting the wrap mode to repeat, according to this manual page...
Could someone please help me understand why this is caused and how I can fix it?

In the shader options you can change tiling on the X and Y direction. Greater tiling means more repeats of the texture on the plane. Tiling is defaulted to 1 when dragging a texture on which explains the stretched out look you got. For a fairly large plane try 100 by 100 or whatever fits.
To open the shader settings for the material you are using, select Forest Floor inside the inspector panel.

There is a tool on the asset store, the "Auto Texture Tiling Tool", which automates the process and has a ton of features for applying and tiling textures. It is way more useful than the Tile settings on materials. Since it is independent from shaders and materials, you can use the same materials with different tiling settings. Check it out here: https://assetstore.unity.com/packages/tools/utilities/auto-texture-tiling-tool-41613

Related

Unity 3D 2D Imported Sprites Pixelated

I have this image generated thanks to PowerPoint:
We can see here, the image is not pixelated.
But when I import this in Unity 3D, the result is:
Here you can see the sprite's parameters:
Am I using the correct tool for my sprite creation? (PowerPoint)
If the answer is "No", which tool can I use for avoid this kind of problem?
If the answer is "Yes", how can I avoid this pixelization of my sprite in Unity 3D?
Thanks a lot for your help!
PowerPoint is not the best image editor :D But your sprite looks correct, possible you just set small scale in Unity Scene window for it.
Try increasing your sprite Scale in Scene window. Select it, next in Inspector increase X Y Z Scale parameters in Transform component (it should be on top).
I just tried your image in my Unity editor and it seems fine. Make sure your Sprite Renderer transform scale is set to (1,1,1). For me even that seems not to affect the quality but it is a best practice not to have different distorted scales for everything in your scene.
One tip for improving your sprite quality is to export it in a POT resolution. Meaning that the resolution of the image should be divisible with 4. This way Unity will be able to compress the image with a much higher precision and quality. One resolution example of that is 800x800 or 1920x1080 etc.
Make sure your build target is set to Standalone and not other platform. If you are set to Android for example. check the Android specific compression in your sprite import inspector. That might also affect the quality.
To answer your question on what image editor to use, the best one, in my opinion, is Adobe Photoshop. If you don't want to pay for it, just search for any free image editing tool. But stop using PP, I'm not exactly sure how you have come up with that.

Recommendations for clipping an entire scene in Unity

I'm looking for ways to clip an entire unity scene to a set of 4 planes. This is for an AR game, where I want to be able to zoom into a terrain, yet still have it only take up a given amount of space on a table (i.e: not extend over the edges of the table).
Thus far I've got clipping working as I want for the terrain and a water effect:
The above shows a much larger terrain being clipped to the size of the table. The other scene objects aren't clipped, since they use unmodifed standard shaders.
Here's a pic showing the terrain clipping in the editor.
You can see the clipping planes around the visible part of the terrain, and that other objects (trees etc) are not clipped and appear off the edge of the table.
The way I've done it involves adding parameters to each shader to define the clipping planes. This means customizing every shader I want to clip, which was fine when I was considering just terrain.
While this works, I'm not sure it's a great approach for hundreds of scene objects. I would need to modify whatever shaders I'm using, and then I'd have to be setting additional shader parameters every update for every object.
Not being an expert in Unity, I'm wondering if there are other approaches that are not "per shader" based that I might investigate?
The end goal is to render a scene within the bounds of some plane.
One easy way would be to use Box Colliders as triggers on each side of your plane. You could then turn off Renderers on objects staying in the trigger with OnTriggerEnter/OnTriggerStay and turn them on with OnTriggerExit.
You can also use Bounds.Contains.

Making a custom skybox for Unity

I'm struggling to find any simple/up to date tutorials on how to make my own skybox for Unity. I want the skybox to be cartoony/vector based so preferably I would like to make it in Adobe Illustrator.
How do I do this? Could anyone direct me to any tutorials? Also, are there any programs that allow you to upload an image that generates a skybox for you?
Thanks!
You may create a new "Skybox/6 Sided" material, and asing it instead the default skybox material. It's the same principle, a cube with 6 images that correspond to each side "front, back, up, down, left, right".
You have to generate a cubemap to have a skybox object, young padawan.
From the Unity Manual:
http://docs.unity3d.com/Manual/class-Cubemap.html
A Cubemap is a collection of six square textures that represent the reflections on an environment. The six squares form the faces of an imaginary cube that surrounds an object; each face represents the view along the directions of the world axes (up, down, left, right, forward and back).
Cubemaps are often used to capture reflections or “surroundings” of objects; for example skyboxes and environment reflections often use cubemaps.

Sphere 360-texture low quality

I'm creating an app to show 360 images with Cardboard.
I created a scene in Unity using Cardboard camera and sphere. I mapped 360-image to a sphere texture.
When viewing the texture is low quality and has sawtooths so the details are not good quality.
Any ideas to solve this texture problem? I tried a script which creates a different kind of sphere but it didn't solve the problem.
You need to use an icoshpere for this to work, you'll still gonna get some distortion near the polls, but it's far better than the uv ones that Unity provides.
The second thing is that you'll need a high detail icoshpere for this to work, as you'll need more vertexes.
The third thing is the textures quality and size. I think the default fov for Unity is around 60, but you'll map the texture for a fov of 360, so you'll need textures of higher size compared to the on screen texture you are using.
You can look over this article if you want more details about the differences between icoshperes and uv spheres, or just go to the bottom of the article and download the unity project. The project includes already made icoshperes and you can experiment with them to find out which one is best suited for your project. I'm using the Octahedron Sphere 4 R1. Any less polys and there are too many distortion, any higher one and the fps drops to much.

How to achieve Terraria/Starbound 2d lighting?

I am making a 2d game in the perspective of Terraria/Starbound. I want the lighting to look similar to this:
Ive tried to get lighting like this by adding a material on all the sprites in my game and then giving them a sprite diffuse shader. Then I made a point light wherever I needed light. There where two problems with this though: 1) Where the light was most intense, it was draining the color of a sprite and made it lighter. 2) I noticed a big FPS drop (And I only had 1 point light!).
Is there any way of achieving lighting like this without having to write my own lighting engine? Ive search the asset store and Ive searched to see if unity has any way of handing 2D lighting from this angle but I have found nothing.
If I do have to write my own lighting engine, would that be to complex for someone who is relatively new to unity and has only had ~ 8 months experience?
Assume you are using tile map.
You need to have a field of view map, which can be achieved by reading this: http://www.redblobgames.com/articles/visibility/
Using such map, you know exactly the color tinting for each tile. Now, just blend the color to the SpriteRenderer of every tile on the map.
Somebody already created a line of sight plugin:
http://forum.unity3d.com/threads/light-of-sight-2d-dynamic-lighting-open-source.295968/
Here's my hacky solution on GitHub
There's 2 cameras.
Empty tiles on the tilemap are filled in with white blocks (only one camera renders this)
A gaussian blur is applied to the camera rendering the white blocks
Then, blend the two cameras, darkening everything not covered by the white blur.
You can adjust the "light" penetration by changing the white tile's sprite's Pixels Per Unit.