{"id":2186,"date":"2025-02-17T07:46:01","date_gmt":"2025-02-17T07:46:01","guid":{"rendered":"https:\/\/playgama.com\/blog\/uncategorized\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/"},"modified":"2025-02-17T07:46:01","modified_gmt":"2025-02-17T07:46:01","slug":"how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity","status":"publish","type":"post","link":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/","title":{"rendered":"How can I compute a perpendicular vector to adjust normal maps in Unity?"},"content":{"rendered":"<h2>Computing Perpendicular Vectors for Adjusting Normal Maps in Unity<\/h2>\n<h3>Understanding Perpendicular Vectors in 3D Space<\/h3>\n<p>In 3D graphics, a perpendicular vector is crucial for tasks like adjusting normal maps, which are used to simulate intricate details on the surface of a 3D model without increasing the polygon count. To compute a perpendicular vector, you need to leverage cross products from vector mathematics, which are foundational in game development math.<\/p>\n<h3>Math Behind Perpendicular Vector Calculation<\/h3>\n<ul>\n<li><strong>Dot Product:<\/strong> Measures the angle between two vectors.<\/li>\n<li><strong>Cross Product:<\/strong> Results in a vector that is perpendicular to two given vectors. If you have two non-parallel vectors <em>A<\/em> and <em>B<\/em>, their cross product yields a vector that is orthogonal to both.<\/li>\n<\/ul>\n<p>The formula for the cross product of two vectors <em>A<\/em> (ax, ay, az) and <em>B<\/em> (bx, by, bz) is:<\/p>\n<pre><code>Cx = ay * bz - az * by<br>Cy = az * bx - ax * bz<br>Cz = ax * by - ay * bx<\/code><\/pre>\n<h3>Implementing in Unity<\/h3>\n<p>To adjust normal maps in Unity, you can calculate a perpendicular vector using Unity\u2019s built-in vector operations. Here\u2019s a simple code snippet:<\/p>\n<pre><code>using UnityEngine;<br><br>public class PerpendicularVectorCalculator : MonoBehaviour {<br>  public Vector3 vectorA;<br>  public Vector3 vectorB;<br><br>  void Start() {<br>      Vector3 perpendicularVector = Vector3.Cross(vectorA, vectorB).normalized;<br>      Debug.Log(perpendicularVector);  \/\/ Outputs the normalized perpendicular vector<br>  }<br>}<\/code><\/pre>\n<h3>Common Use Cases in Unity<\/h3>\n<ul>\n<li><strong>Normal Mapping:<\/strong> Adjust the normals dynamically by computing perpendicular vectors when lighting conditions change.<\/li>\n<li><strong>Tangent Calculations:<\/strong> Determine triads for ensuring consistent normals and texture mapping across complex shapes.<\/li>\n<\/ul>\n<h3>Key Considerations<\/h3>\n<p>When using perpendicular vectors in normal maps, ensure the vertices and normals are consistently calculated to avoid visual artifacts. Using Unity\u2019s conventions and functions helps maintain compatibility with physics and graphics calculations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Computing Perpendicular Vectors for Adjusting Normal Maps in Unity Understanding Perpendicular Vectors in 3D Space In 3D graphics, a perpendicular vector is crucial for tasks like adjusting normal maps, which are used to simulate intricate details on the surface of a 3D model without increasing the polygon count. To compute [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","om_disable_all_campaigns":false,"footnotes":""},"categories":[10],"tags":[611,11],"class_list":["post-2186","post","type-post","status-publish","format-standard","hentry","category-unity","tag-3d-graphics","tag-unity"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog\" \/>\n<meta property=\"og:description\" content=\"Computing Perpendicular Vectors for Adjusting Normal Maps in Unity Understanding Perpendicular Vectors in 3D Space In 3D graphics, a perpendicular vector is crucial for tasks like adjusting normal maps, which are used to simulate intricate details on the surface of a 3D model without increasing the polygon count. To compute [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\" \/>\n<meta property=\"og:site_name\" content=\"Playgama Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-17T07:46:01+00:00\" \/>\n<meta name=\"author\" content=\"Joyst1ck\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joyst1ck\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\"},\"author\":{\"name\":\"Joyst1ck\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/6b64e28292b443ca9325ab8fbff293b2\"},\"headline\":\"How can I compute a perpendicular vector to adjust normal maps in Unity?\",\"datePublished\":\"2025-02-17T07:46:01+00:00\",\"dateModified\":\"2025-02-17T07:46:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\"},\"wordCount\":242,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#organization\"},\"keywords\":[\"3D Graphics\",\"Unity\"],\"articleSection\":[\"Unity\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\",\"url\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\",\"name\":\"How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog\",\"isPartOf\":{\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#website\"},\"datePublished\":\"2025-02-17T07:46:01+00:00\",\"dateModified\":\"2025-02-17T07:46:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/10.2.1.50:8080\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How can I compute a perpendicular vector to adjust normal maps in Unity?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#website\",\"url\":\"https:\/\/10.2.1.50:8080\/blog\/\",\"name\":\"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/10.2.1.50:8080\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#organization\",\"name\":\"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80\",\"url\":\"https:\/\/10.2.1.50:8080\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/playgama.com\/blog\/wp-content\/uploads\/2026\/04\/cropped-playgama-scaled-1.png\",\"contentUrl\":\"https:\/\/playgama.com\/blog\/wp-content\/uploads\/2026\/04\/cropped-playgama-scaled-1.png\",\"width\":2559,\"height\":523,\"caption\":\"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80\"},\"image\":{\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/6b64e28292b443ca9325ab8fbff293b2\",\"name\":\"Joyst1ck\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c6aab82e8ae992522b6f4923a83a792ca9e8e33ecaaff6f701d177f1b0c68b2d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c6aab82e8ae992522b6f4923a83a792ca9e8e33ecaaff6f701d177f1b0c68b2d?s=96&d=mm&r=g\",\"caption\":\"Joyst1ck\"},\"url\":\"https:\/\/playgama.com\/blog\/author\/volzhin-ivan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/","og_locale":"en_US","og_type":"article","og_title":"How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog","og_description":"Computing Perpendicular Vectors for Adjusting Normal Maps in Unity Understanding Perpendicular Vectors in 3D Space In 3D graphics, a perpendicular vector is crucial for tasks like adjusting normal maps, which are used to simulate intricate details on the surface of a 3D model without increasing the polygon count. To compute [&hellip;]","og_url":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/","og_site_name":"Playgama Blog","article_published_time":"2025-02-17T07:46:01+00:00","author":"Joyst1ck","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Joyst1ck","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#article","isPartOf":{"@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/"},"author":{"name":"Joyst1ck","@id":"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/6b64e28292b443ca9325ab8fbff293b2"},"headline":"How can I compute a perpendicular vector to adjust normal maps in Unity?","datePublished":"2025-02-17T07:46:01+00:00","dateModified":"2025-02-17T07:46:01+00:00","mainEntityOfPage":{"@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/"},"wordCount":242,"commentCount":0,"publisher":{"@id":"https:\/\/10.2.1.50:8080\/blog\/#organization"},"keywords":["3D Graphics","Unity"],"articleSection":["Unity"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/","url":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/","name":"How can I compute a perpendicular vector to adjust normal maps in Unity? - Playgama Blog","isPartOf":{"@id":"https:\/\/10.2.1.50:8080\/blog\/#website"},"datePublished":"2025-02-17T07:46:01+00:00","dateModified":"2025-02-17T07:46:01+00:00","breadcrumb":{"@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/playgama.com\/blog\/unity\/how-can-i-compute-a-perpendicular-vector-to-adjust-normal-maps-in-unity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/10.2.1.50:8080\/blog\/"},{"@type":"ListItem","position":2,"name":"How can I compute a perpendicular vector to adjust normal maps in Unity?"}]},{"@type":"WebSite","@id":"https:\/\/10.2.1.50:8080\/blog\/#website","url":"https:\/\/10.2.1.50:8080\/blog\/","name":"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80","description":"","publisher":{"@id":"https:\/\/10.2.1.50:8080\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/10.2.1.50:8080\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/10.2.1.50:8080\/blog\/#organization","name":"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80","url":"https:\/\/10.2.1.50:8080\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/playgama.com\/blog\/wp-content\/uploads\/2026\/04\/cropped-playgama-scaled-1.png","contentUrl":"https:\/\/playgama.com\/blog\/wp-content\/uploads\/2026\/04\/cropped-playgama-scaled-1.png","width":2559,"height":523,"caption":"Playgama Blog: \ud83c\udfae Insights, Tutorials, and Creative Inspiration for Game Development \ud83d\ude80"},"image":{"@id":"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/6b64e28292b443ca9325ab8fbff293b2","name":"Joyst1ck","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10.2.1.50:8080\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c6aab82e8ae992522b6f4923a83a792ca9e8e33ecaaff6f701d177f1b0c68b2d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c6aab82e8ae992522b6f4923a83a792ca9e8e33ecaaff6f701d177f1b0c68b2d?s=96&d=mm&r=g","caption":"Joyst1ck"},"url":"https:\/\/playgama.com\/blog\/author\/volzhin-ivan\/"}]}},"_links":{"self":[{"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/posts\/2186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/comments?post=2186"}],"version-history":[{"count":0,"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/posts\/2186\/revisions"}],"wp:attachment":[{"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/media?parent=2186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/categories?post=2186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/playgama.com\/blog\/wp-json\/wp\/v2\/tags?post=2186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}