Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
2
Question by TheNumerus · Apr 03, 2016 at 06:12 PM · rotationnormalnormalmapsurface shaderworldpos

Wrong normals when object is rotated and using custom world aligned shader?

I have a little problem with my custom world aligned shader. It uses world position as UV for normalmap. This is probably the reason is misbehaves. When I rotate the object it flips rotation of normal map. Is there a way to fix this? I'm using Unity 5.4b10.
My code for normal:o.Normal = UnpackNormal(tex2D(_NormalTex,IN.worldPos.xz));

alt text

problem.jpeg (403.3 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

4 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by Kusras · Nov 09, 2016 at 07:55 PM

same problem...

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by Caronte3D · May 22, 2017 at 11:02 AM

Any news to solve it?

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by IgorAherne · Jun 18, 2017 at 09:40 PM

Yes, go into photoshop, go into channels tab, select green channel and press ctrl+i to invert it.

...Revert and try other channels if doesn't work

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by dayliff · Jun 19, 2017 at 12:52 PM

Without looking at your shader code I am not sure where it is breaking. When trying to implement my own world map shader I found two places where my normals were getting messed up. I'll try my best to explain my two errors, and what I did to fix them. From your screenshots, I think it is issue 2. @IgorAherne, this would work, but if the object gets rotated back the normals will be flipped again.

  1. In my implementation, I was using a series of floor pieces that snapped together, but when I rotated any piece the lighting on the normals would not rotate. My coworker found this post very helpful in fixing this issue: Forum post, specifically this section of code:

                  // reorient normals to their world axis
                     xNorm = xNorm.zyx; // hackily swizzle channels to match unity "right"
                     yNorm = yNorm.yzx; // hackily swizzle channels to match unity "up"
                     zNorm = zNorm.xyz; // no swizzle needed
          
                     // blend normals together
                    normal = xNorm * projNormal.x + yNorm * projNormal.y + zNorm * projNormal.z;
    
    
  2. After fixing issue one I realized that on any given cube the normals would be correct on all the positive sides, and incorrect on all the negative sides. I fixed this by doing some preprocessing on the normal data to make all the normal directions positive. When I combined the x, y, and z channels I used the absolute normals to calculate the red, and green channels of the normal map, but the initial normal direction to get the blue channel. If we used the absolute normal directions for the blue channel as well lighting would be flipped.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

67 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Find Normal Vector to BoxCollider 0 Answers

Issues rotating object to face normal 0 Answers

Rotate the point around the normal from two points (flip point) 2 Answers

Turn off vertex normals for surface shader using normal map. 0 Answers

Match surface rotation on all axes 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges