- Home /
Rotation problem with screen space texture projection
Hello to everyone.
I'am developing a solution that project specific texture on a screen with transformations: move, scale, rotation. Move and scale works fine.
But a have a problem with rotation. When I try to rotate uv coords they looks quite different then object rotation in Unity. My code looks like:
Matrix4x4 rot = Matrix4x4.TRS(new Vector3( 0.0f, 0.0f, 0f), Quaternion.Euler(0f, 0.0f, -angle ), Vector3.one ); gameObject.renderer.material.SetMatrix("_Matrix0", rot );
And UV calculations in shader looks like this:
float2 screenUV = IN.screenPos.xy / IN.screenPos.w;
float2 uv = mul(_Matrix0, float4(screenUV, 1.0, 1.0)).xy;
As result I've got this:
Red color - original sprite in 3D space. Yellow color: projected texture on a 2D plane.
But if I choose 2D screen everything looks ok:
So the problem is in the way how screen UV coords works.
Does anybody have same problems with uv rotation ? I belive that exists some additional calculation that take in account sreen aspect ration in UV rotation.
I am be very glad for any ideas and solutions. Thanks in advance.
Answer by Kos-Dvornik · Sep 05, 2014 at 03:48 PM
Project was done. Sources can be founded here: https://www.assetstore.unity3d.com/en/#!/content/13593
Your answer
Follow this Question
Related Questions
Assigning UV Map to model at runtime 0 Answers
Rotating Textures 0 Answers
Rotating texture uv on sphere 0 Answers
Unity4.5 AnimationCurve - Is the property "_MainTex.rotation" valid ? 0 Answers
Project Texture Coordinates From Camera 2 Answers