<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>GoReal</title>
    <link>https://gogoreality.tistory.com/</link>
    <description>언리얼/유니티 관련 프로그래밍 공부, 코딩 공부, 블루프린트 등 </description>
    <language>ko</language>
    <pubDate>Sun, 10 May 2026 20:03:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Real_Go</managingEditor>
    <image>
      <title>GoReal</title>
      <url>https://tistory1.daumcdn.net/tistory/5972768/attach/45f0d5632f914a50932119624b608b27</url>
      <link>https://gogoreality.tistory.com</link>
    </image>
    <item>
      <title>쿼터니언 변환 이해</title>
      <link>https://gogoreality.tistory.com/53</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnTkJl/dJMcadAvQfR/YLSTiRzDRtYN1RocFaqMP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnTkJl/dJMcadAvQfR/YLSTiRzDRtYN1RocFaqMP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnTkJl/dJMcadAvQfR/YLSTiRzDRtYN1RocFaqMP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnTkJl%2FdJMcadAvQfR%2FYLSTiRzDRtYN1RocFaqMP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;896&quot; height=&quot;668&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 배운 로드리게스 변환 공식으로 부터 축에 대한 회전 결과는 위와같이 나온다는 것을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 쿼터니언 회전은 어떻게 계산 될까&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lhs 와 rhs 에 따라 시계방향이 + 일 수도 있고 - 일 수도 있는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 rhs 기준으로는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반시계방향이 + 고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와같은 회전은 기준 축 N 을 (xi+yj+zk) 의 3d vector로 표현할 수 있고 회전 값 theta 를 w 로 표현할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 보통 실수부에 직교성을 가지는 수를 허수라고 표현함에 따라&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;xi+yj+zk 는 허수 부고 w 는 회전 량을 나타내는 실수 부가 되어 복소수로 표현되겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 qz 를 먼저 생각해볼까&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;qz는 z 축에 대한 w 만큼 회전이다. 그렇다면 n=&amp;nbsp; (0,0,1) 이 될테고 이 축에 대한 회전은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v' = v cos &amp;theta; +(1-cos &amp;theta;)(V &amp;middot; (0,0,1))+((0,0,1)x V) sin &amp;theta; 이 될텐데 V 를&amp;nbsp; vx,vy,vz 의 벡터라고 보면 \&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외적은 아래와같이 계산될거고&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw7Ohs/dJMcai9FiDw/OOJxAxqqHyJbRf2KaQAbu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw7Ohs/dJMcai9FiDw/OOJxAxqqHyJbRf2KaQAbu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw7Ohs/dJMcai9FiDw/OOJxAxqqHyJbRf2KaQAbu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw7Ohs%2FdJMcai9FiDw%2FOOJxAxqqHyJbRf2KaQAbu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;581&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v' = v &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;cos &amp;theta;&lt;span&gt; + (1-cos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;) (0,0,vz)+ (-vy, vx, 0)sin &amp;theta; 가 될거고 이걸 vx,vy,vz 로 분류하면&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(vx cos &amp;theta; - vysin &amp;theta;, vycos &amp;theta; + vxsin &amp;theta;, vz) 가 돼서&amp;nbsp;&lt;br /&gt;V' = (v'x, v'y, v'z) 라 할때&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;v'x = vx cos &amp;theta; - vysin&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;v'y= vycos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta; + vxsin&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;v'z = vz&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;가 된다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;여기서 Z 축 단위벡터 k = (0,0,1) 에 대한 회전 쿼터니언을&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;q= k sin&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;theta; + cos &amp;theta; 로 놓고 q^-1 = - k sin &amp;theta;+cos &amp;theta; 라고 두면&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;v' = qvq^-1 로 된다고 보면 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;qv = (cos &amp;theta; +&lt;b&gt;k&lt;/b&gt;sin &amp;theta; )(vx&lt;b&gt;i&lt;/b&gt;+vy&lt;b&gt;j&lt;/b&gt;+vz&lt;b&gt;k&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; = cos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;(vx&lt;b&gt;i&lt;/b&gt;+vy&lt;b&gt;j&lt;/b&gt;+vz&lt;b&gt;k&lt;/b&gt;)+ &lt;b&gt;k&lt;/b&gt;sin &amp;theta; (vx&lt;b&gt;i&lt;/b&gt;+vy&lt;b&gt;j&lt;/b&gt;+vz&lt;b&gt;k&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; = cos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;(vx&lt;b&gt;i&lt;/b&gt;+vy&lt;b&gt;j&lt;/b&gt;+vz&lt;b&gt;k&lt;/b&gt;) + sin &amp;theta;(-vy&lt;b&gt;i&lt;/b&gt;+vx&lt;b&gt;j&lt;/b&gt;-vz)&lt;br /&gt;&amp;nbsp; = (vxcos &amp;theta;-vysin &amp;theta;)&lt;b&gt;i, &lt;/b&gt;(vycos&amp;theta; + vxsin&amp;theta;)&lt;b&gt;j&lt;/b&gt;, vzcos &amp;theta; &lt;b&gt;k,&amp;nbsp;&lt;/b&gt;-vzsin &amp;theta; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(qv)q^-1 계산하면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; ((vxcos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;-vysin&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;)&lt;/span&gt;&lt;b&gt;i &lt;/b&gt;+(vycos&amp;theta; + vxsin&amp;theta;)&lt;b&gt;j &lt;/b&gt;+ vzcos&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;k &lt;/b&gt;-vzsin&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;)(cos &amp;theta; - &lt;b&gt;k&lt;/b&gt;sin &amp;theta;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; = (vx cos^2 &amp;theta;-vysin &amp;theta;cos &amp;theta;)i+(vycos^2 &amp;theta;+vxsin &amp;theta;cos &amp;theta;)j+vzcos^2 &amp;theta; k - vzsin &amp;theta;cos &amp;theta; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -vx sin &amp;theta;cos &amp;theta; (ik)+vysin^2 &amp;theta; (ik) -vyksin &amp;theta;cos &amp;theta; (jk)-vxsin^2 &amp;theta;(jk)+vzsin &amp;theta;cos &amp;theta;(k*(-k))-vzsin^2 &amp;theta;(k)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;ik= -j , jk = -i, k*(-k) = 1&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(vx cos^2&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;-vysin&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;)i+(vycos^2&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;+vxsin&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;)j+vzcos^&lt;/span&gt;2 &amp;theta; k - vzsin&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-vx sin&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta; (-j)+vysin^2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta; (-j) -vysin&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta; (-i)-vxsin^2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;(-i)+vzsin&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;cos&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;(1)-vzsin^2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;theta;(k)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;뭐 이거 계산하면 배각공식 반각공식 난무한다. 여튼 계산 결과로는&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Z축으로 &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;psi;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;만큼 돌리고 싶으면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;sin&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;psi;&lt;/span&gt;&lt;span&gt;/2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;cos&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;psi;&lt;/span&gt;&lt;span&gt;/2&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 표현된다....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 결국&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sJXsV/dJMcajtXNrL/kpykJDj2rt65ZkgSAb2ejk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sJXsV/dJMcajtXNrL/kpykJDj2rt65ZkgSAb2ejk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sJXsV/dJMcajtXNrL/kpykJDj2rt65ZkgSAb2ejk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsJXsV%2FdJMcajtXNrL%2FkpykJDj2rt65ZkgSAb2ejk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;312&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 렇게 깡으로 계산된다고.... (Z-&amp;gt;Y-&amp;gt;X 순서 Right Handed&amp;nbsp; 로 회전한다는 전제 하에)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>계산</category>
      <category>쿼터니언</category>
      <category>회전</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/53</guid>
      <comments>https://gogoreality.tistory.com/53#entry53comment</comments>
      <pubDate>Mon, 15 Dec 2025 23:27:21 +0900</pubDate>
    </item>
    <item>
      <title>쿼터니언 이해 예습 - 로드리게스 회전 공식</title>
      <link>https://gogoreality.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아 쿼터니언 변환 글 쓰다가 수학적 설명을 이어갈려고 했더니&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 로드리게스 양반 회전 공식으로 넘어가야되는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글이 너무 장황해질 거 같아 먼저 여기서 짧게 짚고 넘어가야되겠다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로드리게스 회전 공식은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/covhbV/dJMcabisb7a/0p2YtrcktgJXFbnyZk9KJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/covhbV/dJMcabisb7a/0p2YtrcktgJXFbnyZk9KJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/covhbV/dJMcabisb7a/0p2YtrcktgJXFbnyZk9KJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcovhbV%2FdJMcabisb7a%2F0p2YtrcktgJXFbnyZk9KJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;902&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;902&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 축 N 에 대해서 V라는 벡터가 theta 만큼 회전한 벡터 V' 에 대해서 V 와 theta 와 N 으로 설명이 되야한다는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 V=Va+Vb 로 벡터 더하기로 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V' = 같은 N 축 방향 벡터라 Va로 퉁칠수 있어서 V'=Va+V'b 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 이 회전 원을 위에서 보면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X1cd5/dJMcafZrOh5/Q2X5fJB1b1iMlUA5x1ySuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X1cd5/dJMcafZrOh5/Q2X5fJB1b1iMlUA5x1ySuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X1cd5/dJMcafZrOh5/Q2X5fJB1b1iMlUA5x1ySuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX1cd5%2FdJMcafZrOh5%2FQ2X5fJB1b1iMlUA5x1ySuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;845&quot; height=&quot;756&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아 일단 회전하는 반경 단면과 벡터 V가 만나는 점을 P 라고 할때 벡터 OP 와 회전 중심 축 N 벡터가 직교하는 동시에 (NxVb) 수직인 벡터는 OW 가 되겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 기준으로 할때&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OP 에서 cos&amp;theta;&amp;nbsp; 하면 OR 인데 이걸 &amp;theta;&amp;nbsp; 기준으로 회전하면 벡터 OQ 의 가로 성분이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OW 의 sin&amp;theta; 하면 OS 인데 이걸 회전 돌려버리면 OQ 벡터의 세로 성분이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OW = N x Vb 로 설명할 수 있고 OP 벡터는 Vb 로 설명할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OQ = Vb cos &amp;theta;&amp;nbsp; + (N x Vb) sin &amp;theta;&amp;nbsp; 가 되고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V=Va+Vb 였으니까&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vb = V-Va&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OQ = (V-Va)cos &amp;theta;&amp;nbsp; +N x (V-Va) sin &amp;theta;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;nbsp; (V-Va)cos &amp;theta; + &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;N x&lt;span&gt; V sin &amp;theta; - N x Va sin &amp;theta;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 N 과&amp;nbsp; Va 는 평행하기때문에 평행한 벡터는 x 연산하면 0 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OQ = (V-Va)cos &amp;theta;+ N x V sin &amp;theta;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 OQ = V'b 라고 할 수 있는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V' = V'a+ V'b 였는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;같은 축 공유해서 V'a = Va 고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V'b = OQ 를 통해 (V-Va)cos &amp;theta;+ N x V sin &amp;theta; 라는걸 알 고 있으니까&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V'= Va+ &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(V-Va)cos &amp;theta;+ N x V sin &amp;theta;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;= Va- Va cos &amp;theta; + Vcos &amp;theta; +(NxV)sin &amp;theta;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;= Va(1-cos &amp;theta;)+ V cos &amp;theta;+ ( N x V) sin &amp;theta;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLgJ9Q/dJMcahJKiyk/GfPsJvh1RNnn3dOG8ASUDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLgJ9Q/dJMcahJKiyk/GfPsJvh1RNnn3dOG8ASUDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLgJ9Q/dJMcahJKiyk/GfPsJvh1RNnn3dOG8ASUDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLgJ9Q%2FdJMcahJKiyk%2FGfPsJvh1RNnn3dOG8ASUDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1393&quot; height=&quot;628&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Va 가 N 축으로 V 벡터를 사영 내린거라 Va=&amp;nbsp; V &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; N 축으로 정사영 내린 것을 들춰내면 식이 딱딱 맞아 떨어진다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>로드리게스 BBX 음식</category>
      <category>벡터</category>
      <category>회전</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/52</guid>
      <comments>https://gogoreality.tistory.com/52#entry52comment</comments>
      <pubDate>Mon, 15 Dec 2025 21:47:42 +0900</pubDate>
    </item>
    <item>
      <title>ECEF-&amp;gt;Unreal 회전 좌표계 변환</title>
      <link>https://gogoreality.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ECEF 란 무엇인가....Earth-Centered Earth-Fixed 의 준말로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지구중심고정좌표계&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122; text-align: start;&quot;&gt;라고 하는 지구의 중력 중심을 원점으로 하는 좌표계인데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #ffffff; color: #3366cc; text-align: start;&quot; href=&quot;https://ko.wikipedia.org/wiki/GPS&quot;&gt;GPS&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122; text-align: start;&quot;&gt;에서 사용되는 좌표체계이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPtQv7/dJMcadtIlTL/jS4XlDRTernrq6XZpPZAg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPtQv7/dJMcadtIlTL/jS4XlDRTernrq6XZpPZAg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPtQv7/dJMcadtIlTL/jS4XlDRTernrq6XZpPZAg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPtQv7%2FdJMcadtIlTL%2FjS4XlDRTernrq6XZpPZAg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;578&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 사는 곳은 대부분 지구 표면에 붙어있을테니 x,y,z 점의 지구 중심으로부터의 길이는 구의 반지름 대량 6300 km 가 나와야 할 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회전은 어떨까? 지구 중심에서 적도를 둘레로 하는 원의 면적에서 경도 회전값이&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경도를 둘레로 하는 원의 회전 값에서 위도가 결정될 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9NWMR/dJMcadN0pGV/3X7yArvgadjhU01wKdqvc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9NWMR/dJMcadN0pGV/3X7yArvgadjhU01wKdqvc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9NWMR/dJMcadN0pGV/3X7yArvgadjhU01wKdqvc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9NWMR%2FdJMcadN0pGV%2F3X7yArvgadjhU01wKdqvc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;735&quot; height=&quot;717&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;717&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 흔히 아는 38선은 위도 38 도에 북한과 남한을 가로지르는 군사 경계선이고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동경 135도는 하루의 정의가 지구가 자전을 한바퀴하는 것이기에 360도를 24시간으로 나누면 나오는 15도가 한시간의 기준이 되어 경도가 0이 기준점이 되는 그리니치 천문점이 있는 영국으로부터 일본과 한국이 약 135도 즉 9시간 만큼의 시차가 먼저 앞서게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 우리는 지구로부터 위도 38도 경도 135 정도의 위치에 있다는 것을 어림짐작할 수 있는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 위치에서 NED/ENU 를 구하면 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byLJUM/dJMcadUL9u2/ES8zR8xbPQLFA0te7ciDH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byLJUM/dJMcadUL9u2/ES8zR8xbPQLFA0te7ciDH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byLJUM/dJMcadUL9u2/ES8zR8xbPQLFA0te7ciDH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyLJUM%2FdJMcadUL9u2%2FES8zR8xbPQLFA0te7ciDH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;1265&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Up Vector 축으로 0도면 북쪽&amp;nbsp; 90도면 동쪽이 되는 거고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;North Vector 를 축으로 Roll 이, East Vector 를 축으로 Pitch 가 결정될 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로는 북쪽이 yaw 값 0도가 되면 NED, 동쪽이&amp;nbsp; yaw 값&amp;nbsp; 0도 가되면 ENU 가 된다고 생각하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NED to Unreal 변환을 해주면 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;//&amp;nbsp;1)&amp;nbsp;로컬(예:&amp;nbsp;NED/ENU)&amp;nbsp;기준&amp;nbsp;바디&amp;nbsp;회전&amp;nbsp;(FOM에서&amp;nbsp;받은&amp;nbsp;Psi,Theta,Phi) &lt;br /&gt;double&amp;nbsp;psiDeg&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;FMath::RadiansToDegrees(AttitudeRad.X);&amp;nbsp;//&amp;nbsp;Yaw&amp;nbsp;(Z) &lt;br /&gt;double&amp;nbsp;thetaDeg&amp;nbsp;=&amp;nbsp;FMath::RadiansToDegrees(AttitudeRad.Y);&amp;nbsp;//&amp;nbsp;Pitch&amp;nbsp;(Y) &lt;br /&gt;double&amp;nbsp;phiDeg&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;FMath::RadiansToDegrees(AttitudeRad.Z);&amp;nbsp;//&amp;nbsp;Roll&amp;nbsp;(X) &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;FOM:&amp;nbsp;Z-Y-X&amp;nbsp;(yaw-pitch-roll)&amp;nbsp;&amp;rarr;&amp;nbsp;Unreal&amp;nbsp;Rotator&amp;nbsp;매핑&amp;nbsp;(필요에&amp;nbsp;따라&amp;nbsp;부호&amp;nbsp;조정) &lt;br /&gt;FRotator&amp;nbsp;BodyLocalRot( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thetaDeg,&amp;nbsp;&amp;nbsp;//&amp;nbsp;Pitch &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psiDeg,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Yaw &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;phiDeg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Roll &lt;br /&gt;); &lt;br /&gt;FQuat&amp;nbsp;Q_bodyLocal&amp;nbsp;=&amp;nbsp;BodyLocalRot.Quaternion(); &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;2)&amp;nbsp;&quot;로컬&amp;nbsp;좌표계&amp;nbsp;&amp;rarr;&amp;nbsp;언리얼&amp;nbsp;월드&quot;&amp;nbsp;프레임&amp;nbsp;회전 &lt;br /&gt;//&amp;nbsp;예)&amp;nbsp;언리얼에서&amp;nbsp;+X=East,&amp;nbsp;-Y=North,&amp;nbsp;+Z=Up&amp;nbsp;이면, &lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ENU의&amp;nbsp;(East,North,Up)&amp;nbsp;&amp;rarr;&amp;nbsp;(X,-Y,Z)&amp;nbsp;로가는&amp;nbsp;고정&amp;nbsp;회전이라&amp;nbsp;보정&amp;nbsp;Quat&amp;nbsp;하나&amp;nbsp;정의해둘&amp;nbsp;수&amp;nbsp;있음. &lt;br /&gt;FRotator&amp;nbsp;LocalToWorldFrameRot( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0,&amp;nbsp;&amp;nbsp;//&amp;nbsp;Pitch&amp;nbsp;보정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0,&amp;nbsp;&amp;nbsp;//&amp;nbsp;Yaw&amp;nbsp;보정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Roll&amp;nbsp;보정 &lt;br /&gt;); &lt;br /&gt;//&amp;nbsp;필요하면&amp;nbsp;여기서&amp;nbsp;축&amp;nbsp;뒤집기/좌우&amp;nbsp;반전&amp;nbsp;같은&amp;nbsp;것&amp;nbsp;넣어줌 &lt;br /&gt;FQuat&amp;nbsp;Q_localFrameToWorld&amp;nbsp;=&amp;nbsp;LocalToWorldFrameRot.Quaternion(); &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;3)&amp;nbsp;최종&amp;nbsp;월드&amp;nbsp;회전&amp;nbsp;(순서는&amp;nbsp;프로젝트&amp;nbsp;컨벤션에&amp;nbsp;따라&amp;nbsp;한번&amp;nbsp;뒤집어&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있음) &lt;br /&gt;FQuat&amp;nbsp;Q_world&amp;nbsp;=&amp;nbsp;Q_localFrameToWorld&amp;nbsp;*&amp;nbsp;Q_bodyLocal; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;4)&amp;nbsp;세팅 &lt;br /&gt;Actor-&amp;gt;SetActorRotation(Q_world);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요런 흐름을 가져가면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니면 Actor Location 은 냅두고 Relative rotation 만 깡으로 박아넣어서 바꾸던가&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>ECEF</category>
      <category>ned</category>
      <category>Rotation</category>
      <category>unreal</category>
      <category>언리얼</category>
      <category>회전좌표계변환</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/51</guid>
      <comments>https://gogoreality.tistory.com/51#entry51comment</comments>
      <pubDate>Mon, 8 Dec 2025 23:53:50 +0900</pubDate>
    </item>
    <item>
      <title>저비용으로 나무를 머티리얼 활용만으로 최대한 사실 적으로 만들기</title>
      <link>https://gogoreality.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 나무는 참 애증의 관계다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어셋에 있는 나무들은 참 많지만 FBX 모델링 되어있고 있는 그대로는 쓸 지언정 커스텀하기가 까다롭다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 나무는 LOD 세팅이 가장 중요한 것 중 하나다. Full 모델의 수많은 Vertex 와 Complex polygon 덩어리가 심지어 군집해&amp;nbsp;&lt;br /&gt;있어야만 자연스럽다니... 렌더링 입장에서는 헬이 아닐 수 없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 보통 나무들은 LOD 를 가장 낮춘 버전으로 평면을 + 형 또는 * 형으로 배치한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 이전 글에도 있었는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 이게 일반적인 머티리얼 세팅만 갈기면 빛에 의해 뾰족한 엣지 섀도윙이 심하게 일어난다는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 시각적으로 굉장히 불편감을 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpRWYZ/dJMb99LCNuj/wQkDmudQx2wnHLSK78jgUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpRWYZ/dJMb99LCNuj/wQkDmudQx2wnHLSK78jgUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpRWYZ/dJMb99LCNuj/wQkDmudQx2wnHLSK78jgUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpRWYZ%2FdJMb99LCNuj%2FwQkDmudQx2wnHLSK78jgUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1058&quot; height=&quot;604&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광원이 측면을 바라볼 경우 더 확실히 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 이거에 대한 1차적인 해결은 Lit 을 바꾸는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unlit 으로 해서 빛에 대한 영향을 최대한 뺀다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wpkXG/dJMcaiPh7uo/SafNKvIwn4Avkk5lm5HY2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wpkXG/dJMcaiPh7uo/SafNKvIwn4Avkk5lm5HY2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wpkXG/dJMcaiPh7uo/SafNKvIwn4Avkk5lm5HY2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwpkXG%2FdJMcaiPh7uo%2FSafNKvIwn4Avkk5lm5HY2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1340&quot; height=&quot;780&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언릿으로 하면 베이스 컬러가 빠지는데 당황하지 말고 이미시브 컬러에 배치해주면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1896&quot; data-origin-height=&quot;998&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpapo9/dJMcabJr75d/dailJLpJ7y6dPcFaAXKo9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpapo9/dJMcabJr75d/dailJLpJ7y6dPcFaAXKo9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpapo9/dJMcabJr75d/dailJLpJ7y6dPcFaAXKo9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdpapo9%2FdJMcabJr75d%2FdailJLpJ7y6dPcFaAXKo9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1896&quot; height=&quot;998&quot; data-origin-width=&quot;1896&quot; data-origin-height=&quot;998&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 티가 더 안나게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 밝다 싶으면 이미시브를 Multiply 해서 낮춰주면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2289&quot; data-origin-height=&quot;1111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTBVJB/dJMcagRvTpV/gM1bPJT4DHhvdfkRO6yXK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTBVJB/dJMcagRvTpV/gM1bPJT4DHhvdfkRO6yXK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTBVJB/dJMcagRvTpV/gM1bPJT4DHhvdfkRO6yXK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTBVJB%2FdJMcagRvTpV%2FgM1bPJT4DHhvdfkRO6yXK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2289&quot; height=&quot;1111&quot; data-origin-width=&quot;2289&quot; data-origin-height=&quot;1111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 문제가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Emissive 라서 밤에도 밝다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/besKqo/dJMcabo8uSU/4nSM9vgox5rphYHYgLTAdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/besKqo/dJMcabo8uSU/4nSM9vgox5rphYHYgLTAdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/besKqo/dJMcabo8uSU/4nSM9vgox5rphYHYgLTAdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbesKqo%2FdJMcabo8uSU%2F4nSM9vgox5rphYHYgLTAdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1074&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엌....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 지금 나는 UltraDynamicSky 어셋을 썼지만 Directional Light 값을 파싱하든 뭘하는 좋다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Material Parameter Collection 을 하나 만들어서 이 낮-&amp;gt; 밤 시간대에 따른 변화를 제공하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 경우 0~2400 으로 시:분을 Float 으로 표현하는 값을 매핑해야되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12시에 제일 밝고 밤에는 제일 어두우니까 가우시안, 코사인, 톱니 모양 등 종형 형태의 함수를 활용하여 Intensity 를 조절하고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이미시브 컬러에 같이 반영할 필요가 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9iuY/dJMcabinsii/on1sIOrwYeRbacrSy5VcP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9iuY/dJMcabinsii/on1sIOrwYeRbacrSy5VcP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9iuY/dJMcabinsii/on1sIOrwYeRbacrSy5VcP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9iuY%2FdJMcabinsii%2Fon1sIOrwYeRbacrSy5VcP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;390&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IPdYr/dJMcaiIwECF/MT1y9M0g42L4VBd7igjvTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IPdYr/dJMcaiIwECF/MT1y9M0g42L4VBd7igjvTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IPdYr/dJMcaiIwECF/MT1y9M0g42L4VBd7igjvTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIPdYr%2FdJMcaiIwECF%2FMT1y9M0g42L4VBd7igjvTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;328&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 MPC 를 Scalar paramter 의 name 을 선언해주고&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dog4K9/dJMcaihu0vJ/uAysdK0bdhchYqkG62bV7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dog4K9/dJMcaihu0vJ/uAysdK0bdhchYqkG62bV7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dog4K9/dJMcaihu0vJ/uAysdK0bdhchYqkG62bV7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdog4K9%2FdJMcaihu0vJ%2FuAysdK0bdhchYqkG62bV7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1229&quot; height=&quot;688&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 그래프는 대략 0~2400 Domain 을 -1~1 로 정규화 Domain으로 바꾼다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(0.5(cos(ㅠx)+1))^2 를 한건데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프로 이해하자면 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dilepZ/dJMcaaw0eQP/QA8glCbwjxeWZRECgCjj3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dilepZ/dJMcaaw0eQP/QA8glCbwjxeWZRECgCjj3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dilepZ/dJMcaaw0eQP/QA8glCbwjxeWZRECgCjj3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdilepZ%2FdJMcaaw0eQP%2FQA8glCbwjxeWZRECgCjj3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;693&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 이렇게 해서 가변적으로 바꾸면 머티리얼에서&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/smhme/dJMcajgl8Qy/UKKNbbpXNFd3zGlzIlJDc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/smhme/dJMcajgl8Qy/UKKNbbpXNFd3zGlzIlJDc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/smhme/dJMcajgl8Qy/UKKNbbpXNFd3zGlzIlJDc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsmhme%2FdJMcajgl8Qy%2FUKKNbbpXNFd3zGlzIlJDc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2142&quot; height=&quot;1206&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 MPC 를 냅다 드래그 한다음에 None 으로 뜨는거 아까 세팅해놓은 Intensity 로 바꿔주고 Multiply 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 낮에는 이러다가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1947&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGXQCn/dJMcadmTYQj/7ChRle7fqCbXcRLbeOoSI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGXQCn/dJMcadmTYQj/7ChRle7fqCbXcRLbeOoSI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGXQCn/dJMcadmTYQj/7ChRle7fqCbXcRLbeOoSI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGXQCn%2FdJMcadmTYQj%2F7ChRle7fqCbXcRLbeOoSI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1947&quot; height=&quot;1068&quot; data-origin-width=&quot;1947&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밤에는 요렇게...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/enJGEh/dJMcaaRi2Nr/4W3wzJWO1MyuB4SShOdRn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/enJGEh/dJMcaaRi2Nr/4W3wzJWO1MyuB4SShOdRn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/enJGEh/dJMcaaRi2Nr/4W3wzJWO1MyuB4SShOdRn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FenJGEh%2FdJMcaaRi2Nr%2F4W3wzJWO1MyuB4SShOdRn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1942&quot; height=&quot;1100&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 핵심은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Plane 3개 교차로 만든 야매 나무는&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Av4OP/dJMcaaRi2NB/AGe8arUpgp2ZbhwrF3QR71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Av4OP/dJMcaaRi2NB/AGe8arUpgp2ZbhwrF3QR71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Av4OP/dJMcaaRi2NB/AGe8arUpgp2ZbhwrF3QR71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAv4OP%2FdJMcaaRi2NB%2FAGe8arUpgp2ZbhwrF3QR71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;812&quot; height=&quot;652&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 보면 이런데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빛에 민감하면 더 구려보이므로 Unlit + Emissive 로 최대한 덜 티나게 할것&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 필드의 광원 위치나 강도, 낮밤 등에 따라 Emissive 를 Control 할 수 있는&amp;nbsp; Material Paramete Collection 의 value 값&amp;nbsp;&lt;br /&gt;파싱 등으로 해결 할 수 있다는 점을 눈여겨 보면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에는 나무가 살짝씩 바람에 흔들리는 머티리열 연출을 해보이도록 하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>Emissive</category>
      <category>Material</category>
      <category>Tree</category>
      <category>unreal</category>
      <category>나무</category>
      <category>언리얼</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/50</guid>
      <comments>https://gogoreality.tistory.com/50#entry50comment</comments>
      <pubDate>Wed, 3 Dec 2025 06:27:39 +0900</pubDate>
    </item>
    <item>
      <title>블렌더&amp;gt;언리얼 FBX 텍스쳐 무손실 export 및 import 방법</title>
      <link>https://gogoreality.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 프로세싱에서 우리가 아는 PNG 는 JPG 에 비하면 10배는 용량이 큰 압축된 형태의 이미지 (즉 손실이 비교적 적은)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이지만 그럼에도 손실이 어느 정도 있는 편이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 압축이 되다보면 손실이 나고 감마가 이중으로 되면서 Color 차이가 희미해지는 문제가 생긴다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAlc8Y/dJMcaiV3jLq/2Dp3qkHJ0kxaFzN2PFjbUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAlc8Y/dJMcaiV3jLq/2Dp3qkHJ0kxaFzN2PFjbUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAlc8Y/dJMcaiV3jLq/2Dp3qkHJ0kxaFzN2PFjbUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAlc8Y%2FdJMcaiV3jLq%2F2Dp3qkHJ0kxaFzN2PFjbUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 열화된 이미지를 텍스쳐로 불러와서 머티리얼 작업을 하면 이렇게 열화된 렌더링을 마주치게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3D 모델링 팀이랑 협업할 때 범용성을 위해 FBX 를 받는 다면 따라서 추출 방법과 임포트 세팅 방법이 정규화되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IIgjS/dJMcac9nt1p/9lu3jXznYTKJnIVUwSVAT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IIgjS/dJMcac9nt1p/9lu3jXznYTKJnIVUwSVAT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IIgjS/dJMcac9nt1p/9lu3jXznYTKJnIVUwSVAT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIIgjS%2FdJMcac9nt1p%2F9lu3jXznYTKJnIVUwSVAT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1790&quot; height=&quot;950&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 블렌더에서 Render Setting 했을 때 원래대로라면 보여야하는 이미지인것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차이가 많이 난다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이유는 이미지를 텍스쳐로 추출하는 과정과 언리얼에서 텍스쳐 세팅하는 과정에서 확연하게 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1056&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KNeDQ/dJMcai2O4q4/VIkdR5lu91hEWNEA6FYIY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KNeDQ/dJMcai2O4q4/VIkdR5lu91hEWNEA6FYIY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KNeDQ/dJMcai2O4q4/VIkdR5lu91hEWNEA6FYIY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKNeDQ%2FdJMcai2O4q4%2FVIkdR5lu91hEWNEA6FYIY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1056&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1056&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 위와같이 블렌더에서 임포트할때는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp; UV Editing 가서 해당 텍스쳐를 선택하고 Image 탭을 눌러서 Save As 를 누른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. File Format 을 Open EXR 로 하고 Color 를 RGB, Color Depth 를 Float (Full), Codec 은 무손실인 ZIP, Color Space 를&amp;nbsp;&lt;br /&gt;언리얼에 맞춰서 ACES2065-1 로 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1785&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nP33V/dJMcahXcE7T/ssVcnRh53wCK4pnkoCVF51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nP33V/dJMcahXcE7T/ssVcnRh53wCK4pnkoCVF51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nP33V/dJMcahXcE7T/ssVcnRh53wCK4pnkoCVF51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnP33V%2FdJMcahXcE7T%2FssVcnRh53wCK4pnkoCVF51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1785&quot; height=&quot;1080&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1785&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 언리얼에서 이 EXR 파일을 텍스쳐 임포트를 하고나서 텍스쳐 세팅을 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 압축 세팅을 Default-&amp;gt; HDR 로 바꾼다. HDR Compressed 랑 혼동하지 않도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 소스 컬러 세팅에 인코딩 오버라이드를 sRGB 로 해주고 색 공간(Color Space) 를 ACES API/ACEScg 로 바꿔준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하고 블렌더 머티리얼에 있는 머티리얼 세팅이랑 스칼라값들은 최대한 비슷하게 가져가면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;통상적으로 집 같은 거는 러프니스(Roughness) 를 1로 세팅한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 한 결과를 보겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2330&quot; data-origin-height=&quot;928&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3j4eZ/dJMb995V7DP/MLJuQI3VjlNqKI1rrmwFxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3j4eZ/dJMb995V7DP/MLJuQI3VjlNqKI1rrmwFxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3j4eZ/dJMb995V7DP/MLJuQI3VjlNqKI1rrmwFxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3j4eZ%2FdJMb995V7DP%2FMLJuQI3VjlNqKI1rrmwFxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2330&quot; height=&quot;928&quot; data-origin-width=&quot;2330&quot; data-origin-height=&quot;928&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;머티리얼 노드의 블렌드 모드를 Translucent 로 하면 좀 더 진하고 또렷하게 표현되고&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2358&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPjYJp/dJMcabo8udN/glX720wapH9E8Sn5USknq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPjYJp/dJMcabo8udN/glX720wapH9E8Sn5USknq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPjYJp/dJMcabo8udN/glX720wapH9E8Sn5USknq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPjYJp%2FdJMcabo8udN%2FglX720wapH9E8Sn5USknq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2358&quot; height=&quot;954&quot; data-origin-width=&quot;2358&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 세팅인 Opaque 로 하면 조금 옅어지는 감이 있지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 기존&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2379&quot; data-origin-height=&quot;933&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bivJZP/dJMcafE4MKX/G60pHriu2xvnypseHMNrmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bivJZP/dJMcafE4MKX/G60pHriu2xvnypseHMNrmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bivJZP/dJMcafE4MKX/G60pHriu2xvnypseHMNrmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbivJZP%2FdJMcafE4MKX%2FG60pHriu2xvnypseHMNrmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2379&quot; height=&quot;933&quot; data-origin-width=&quot;2379&quot; data-origin-height=&quot;933&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 위와같이 기존 텍스쳐의 근본적인 문제보다는 훨씬 개선되는 걸 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나저나 Opaque 랑 Translucent 랑 차이가 좀 있긴 하네....&amp;nbsp; 색 대비 퀄리티가...&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>Material</category>
      <category>texture</category>
      <category>unreal</category>
      <category>렌더링</category>
      <category>머티리얼</category>
      <category>블렌더</category>
      <category>언리얼</category>
      <category>익스포트 세팅</category>
      <category>임포트 세팅</category>
      <category>텍스쳐</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/49</guid>
      <comments>https://gogoreality.tistory.com/49#entry49comment</comments>
      <pubDate>Wed, 3 Dec 2025 05:36:36 +0900</pubDate>
    </item>
    <item>
      <title>변수 변화값 탐지 알고리즘</title>
      <link>https://gogoreality.tistory.com/48</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1577&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tlNfx/dJMcabWMLYe/hhb3InFOQGA4t2955EikO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tlNfx/dJMcabWMLYe/hhb3InFOQGA4t2955EikO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tlNfx/dJMcabWMLYe/hhb3InFOQGA4t2955EikO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtlNfx%2FdJMcabWMLYe%2Fhhb3InFOQGA4t2955EikO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1577&quot; height=&quot;546&quot; data-origin-width=&quot;1577&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부에서 트리거 되어 날라오는 값에 대해서&amp;nbsp;&lt;br /&gt;Prev 값이 같으면 변화 탐지 여부 false 날리고&amp;nbsp;&lt;br /&gt;값이 다르면 Prev = Btn3 값으로 매핑해준다음 탐지여부 true 날리면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변화 여부 탐지하게 된다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 계속 Topic 처럼 주기적으로 날아오는 데이터에 대해서는&amp;nbsp;&lt;br /&gt;값이 같으면 정지 한거로 간주하고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;값이 다르면 이동 중인걸로 바꿀 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/48</guid>
      <comments>https://gogoreality.tistory.com/48#entry48comment</comments>
      <pubDate>Fri, 31 Oct 2025 15:04:49 +0900</pubDate>
    </item>
    <item>
      <title>지나간 경로 표시하는 법</title>
      <link>https://gogoreality.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Chaos Vehicle 갖고 할거다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dalr0T/btsQ2gSzTgH/46BqJc7a4mp3sueAzMVq7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dalr0T/btsQ2gSzTgH/46BqJc7a4mp3sueAzMVq7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dalr0T/btsQ2gSzTgH/46BqJc7a4mp3sueAzMVq7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdalr0T%2FbtsQ2gSzTgH%2F46BqJc7a4mp3sueAzMVq7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1331&quot; height=&quot;585&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Path 라는 vector array 변수를 만들고 Set Timer by Event 로 1초마다 Vector 어레이값을 그때의 Actor Location 을 집어넣어&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Array Size를 늘리면서 값을 추가한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfuxVQ/btsQ2zRN9lw/JWctte7abhWx1YqDUPiM31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfuxVQ/btsQ2zRN9lw/JWctte7abhWx1YqDUPiM31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfuxVQ/btsQ2zRN9lw/JWctte7abhWx1YqDUPiM31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfuxVQ%2FbtsQ2zRN9lw%2FJWctte7abhWx1YqDUPiM31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;770&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tick 에서는 Array 가 잘 추가되고 있나 확인하는 걸 해본거고 딱히 중요하진 않다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BeginPlay에도 아까 전에 해놓은 배열 추가 이벤트를 실행하는 거고...&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 P 버튼 눌러서 For Loop 으로 Location [i] 와 Location [i+1] 간에 Line 을 그려서 For 문을 돌려서 길이 생기도록 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 잘보이고 오래남게 하려고 Duration 을 10초로 주고 Thickness를 50으로 변경하겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1853&quot; data-origin-height=&quot;1161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P5Mm7/btsQ4WSvHRr/jh8KKGERkj7QUHjRfduNL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P5Mm7/btsQ4WSvHRr/jh8KKGERkj7QUHjRfduNL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P5Mm7/btsQ4WSvHRr/jh8KKGERkj7QUHjRfduNL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP5Mm7%2FbtsQ4WSvHRr%2Fjh8KKGERkj7QUHjRfduNL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1853&quot; height=&quot;1161&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1853&quot; data-origin-height=&quot;1161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 이렇게 표시되다가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EJQ0F/btsQ4XKDUmh/TTyn8qdTKuaND2DUMvVTR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EJQ0F/btsQ4XKDUmh/TTyn8qdTKuaND2DUMvVTR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EJQ0F/btsQ4XKDUmh/TTyn8qdTKuaND2DUMvVTR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEJQ0F%2FbtsQ4XKDUmh%2FTTyn8qdTKuaND2DUMvVTR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1954&quot; height=&quot;1269&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 얼마나 거지같이 운전했는지 돌아볼 수 있게 해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>경로</category>
      <category>기동로</category>
      <category>디버그라인</category>
      <category>로그</category>
      <category>이동 경로</category>
      <category>자동차</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/47</guid>
      <comments>https://gogoreality.tistory.com/47#entry47comment</comments>
      <pubDate>Mon, 6 Oct 2025 00:48:39 +0900</pubDate>
    </item>
    <item>
      <title>[GUI] 언리얼 미니맵 아이콘 위치 표시 및 줌에 따른 크기 조절</title>
      <link>https://gogoreality.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 객체의 양만큼 아이콘을 만드는 것이 핵심인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;image 라는 위젯은 위젯블루프린트에서 즉석으로 create 할 수는 없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 미니맵을 띄우는 메인화면과 이미지를 위젯 컴포넌트로 가지는 서브 위젯 블루프린트를&amp;nbsp;&lt;br /&gt;갯수 만큼 띄워서 위젯 위로 덮어씌우는 방식으로 진행한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUZF2n/btsQXU1QY59/GsEDkC73KO0Glcm7aYBkck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUZF2n/btsQXU1QY59/GsEDkC73KO0Glcm7aYBkck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUZF2n/btsQXU1QY59/GsEDkC73KO0Glcm7aYBkck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUZF2n%2FbtsQXU1QY59%2FGsEDkC73KO0Glcm7aYBkck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;194&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저기서 WBP_Unit 은&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2555&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ba7Ky/btsQVOhzdhX/e5CeQVRFQHyNA46Xt2WZn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ba7Ky/btsQVOhzdhX/e5CeQVRFQHyNA46Xt2WZn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ba7Ky/btsQVOhzdhX/e5CeQVRFQHyNA46Xt2WZn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBa7Ky%2FbtsQVOhzdhX%2Fe5CeQVRFQHyNA46Xt2WZn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2555&quot; height=&quot;1170&quot; data-origin-width=&quot;2555&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 이미지만 냅다 박은 UI 를 말한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거를 아이콘 생성 이벤트에서 호출한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RsijU/btsQVj98ZoB/AdKm7wDkhNERlkngj1Tws1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RsijU/btsQVj98ZoB/AdKm7wDkhNERlkngj1Tws1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RsijU/btsQVj98ZoB/AdKm7wDkhNERlkngj1Tws1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRsijU%2FbtsQVj98ZoB%2FAdKm7wDkhNERlkngj1Tws1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2210&quot; height=&quot;870&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;870&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 블루프린트 설명하면 표시할 클래스의 모든 액터들을 For each Loop 돌려서 찾아서 각 객체 군 마다 Create WBP_Unit Widget 을 수행하고 return value로 unit box 라는 변수를 만들고 그 안의 child 인 image 를 끌어와서 각 객체 군 image A, image B, image C 라는 변수를 생성해서 할당해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 경우 무장 상태에 따라 객체들의 아이콘이 다르기에 Switch 문으로 분기점이 있고 분기점이 없으면 없는대로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 Set Brush 노드를 연결한다. 이때 지금은 보기좋게 In Brush를 각각 다 변수로 선언했는데&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccjrrx/btsQVFLR2Yf/2JCQ7cpeKfz1zT4poaChFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccjrrx/btsQVFLR2Yf/2JCQ7cpeKfz1zT4poaChFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccjrrx/btsQVFLR2Yf/2JCQ7cpeKfz1zT4poaChFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fccjrrx%2FbtsQVFLR2Yf%2F2JCQ7cpeKfz1zT4poaChFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;288&quot; height=&quot;699&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 Default 이미지를 선정해주면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 Set Brush (icon image 변수(이미지 위젯), brush 변수(위젯에 할당할 실제 이미지)) 를 수행한다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Add Child to Canvas&lt;/b&gt; 를 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 핵심이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 메인 UI 를 main panel 이라는 변수로 선언했다면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Add child to Canvas (target: main panel &amp;lt;- content: unit box) 가 되게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 Return 한 값을 Set Position, Set Size를 Default 값을 해준다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;image array 라는 배열 변수에 Add image 변수 값&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 해주면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgEGqD/btsQWPtuQRW/n56pKh9R8fzrUnv6TOxmrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgEGqD/btsQWPtuQRW/n56pKh9R8fzrUnv6TOxmrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgEGqD/btsQWPtuQRW/n56pKh9R8fzrUnv6TOxmrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgEGqD%2FbtsQWPtuQRW%2Fn56pKh9R8fzrUnv6TOxmrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;602&quot; height=&quot;496&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 배열 타입 변수는 이미지의 배열타입이라고 보면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 미니맵에서의 객체 위치 업데이트 방법이다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1853&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZeoMW/btsQW7OhxTX/ZTJ5d73NDthSK0HVjJ4smK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZeoMW/btsQW7OhxTX/ZTJ5d73NDthSK0HVjJ4smK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZeoMW/btsQW7OhxTX/ZTJ5d73NDthSK0HVjJ4smK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZeoMW%2FbtsQW7OhxTX%2FZTJ5d73NDthSK0HVjJ4smK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1853&quot; height=&quot;716&quot; data-origin-width=&quot;1853&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Indicate 라는 이벤트에서 타깃 클래스로 한 모든 액터를 찾은 다음 그 객체의 World Location 과 위에서 내려보는 SceneCapture 카메라의 Actor Location 을 빼서 카메라로부터의 상대 위치를 구한다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그걸 Projected Map Length 로 나눈 값을 MiniMap Size 에 곱한다음 위젯 0,0 으로 부터 X,Y 떨어져있는 만큼 더해준다.&amp;nbsp;&lt;br /&gt;필자는 미니맵을 우하단에 놓을 것이기 때문에 1630, 898 이였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌상단에 놓을거면 굳이 안더해도 될거같다. 그렇게 한다음 Clamp 로 미니맵의 바운더리를 지정한다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Set Render Transform 의 X,Y 값에 넣어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체의 Get World Rotation&amp;nbsp; Return Value Z(Yaw) 값을 받아 위젯에선 +180으로 보간해준다음 Transform Angle 에 넣어준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거는 90를 했나 180도를 했나 가물가물한데 실제 객체 방향이랑 위젯에서의 Angle 이 보간을 해주긴해야한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 카메라로부터 FOV 값을 받아와서 Zoom Control 에 따른 Transform Scale 을 변화시킨다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;FOV 값이 작아질 수록 확대되는 거니까&amp;nbsp; FOV 값 x 에 대해서 Lerp(Alpha:(90 -x)/89, Range:1~3)를 수행했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러면 Zoom 이 안됐을 때 FOV 가 90이니까 0이여서 Scale은 1이 돼고, Zoom 을 최대로 땡겨서 FOV 가 1 이면&amp;nbsp;&lt;br /&gt;89/89 = 1 이 되는데 이게 Lerp 범위에선 제일 Maximum 이니까 3을 뽑게돼서 즉 줌에 따른 0~1 값을 1~3 으로 치환시켜주는 함수가 Lerp 인데 이걸 써서 확대되면 아이콘도 더 확대돼어 보이도록 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그리고 결정적으로 이 Set Render Transform 할 Target 은 Image Array 값의 각 컴포넌트들이기에 For 문 돌면서 저 Set Render Transform 을 반복해주면 된다. 그리고 Damage State 에 따라 Opacity 까지 변화를 주면 끝!&amp;nbsp;&lt;br /&gt;for (int i = 0; i&amp;lt;Array Size; i++)&lt;br /&gt;{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; Set RenderTransform (target: get (ImageArray[i]))&lt;br /&gt;&amp;nbsp; &amp;nbsp;if ( ImageArray[i].DamageState == Destroy)&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Set Render Opacity (target: get(ImageArray[i], Opacity: 0.3)&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라고 생각하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 꺼에서도 말했지만&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wKf1W/btsQWRLyPFi/qYazmQNNft7N1d8SQCioE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wKf1W/btsQWRLyPFi/qYazmQNNft7N1d8SQCioE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wKf1W/btsQWRLyPFi/qYazmQNNft7N1d8SQCioE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwKf1W%2FbtsQWRLyPFi%2FqYazmQNNft7N1d8SQCioE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1051&quot; height=&quot;351&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Projected Map Length 는 카메라가 프로젝션 하고 있는 FOV 를 계산해서 실제 맵 길이에 tan 값을 곱하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baksLY/btsQYGIQZs2/VI9zG2KXx6yP3QpDCJUUa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baksLY/btsQYGIQZs2/VI9zG2KXx6yP3QpDCJUUa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baksLY/btsQYGIQZs2/VI9zG2KXx6yP3QpDCJUUa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaksLY%2FbtsQYGIQZs2%2FVI9zG2KXx6yP3QpDCJUUa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1386&quot; height=&quot;868&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 이해가 안될까봐 다시 한번 나의 공식을 설명하자면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애초에 초기 FOV 가 90 인 카메라가 바라볼때 맵 전체가 담기는 위치에 높이값을 놓을거라&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tan 45 = 1 이잖슴? 그래서 맵 절반 길이만큼 카메라가 높이 있을 것이고 이걸 이용해 공식이 유도된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;projected map length 에 대한 FOV 와의 상관관계 공식이.....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여튼 이 이벤트들을 업데이트 해주면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1528&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvS9yO/btsQVFE4MBF/uRQGmfoXqx0bWVLmm0lmF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvS9yO/btsQVFE4MBF/uRQGmfoXqx0bWVLmm0lmF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvS9yO/btsQVFE4MBF/uRQGmfoXqx0bWVLmm0lmF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvS9yO%2FbtsQVFE4MBF%2FuRQGmfoXqx0bWVLmm0lmF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1528&quot; height=&quot;778&quot; data-origin-width=&quot;1528&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 Zoom 에 의한 FOV 조절에 따라 Projected Map Length 가 바뀌기에 갱신하는 Event 에서&amp;nbsp;&lt;br /&gt;Update Variables 를 하고&amp;nbsp;&lt;br /&gt;각 객체의 위치를 업데이트 해야하기에 Indicate 이벤트를 계속 수행한다.&amp;nbsp;&lt;br /&gt;이게 widget 에서 행하는 계속해서 갱신하는 값이고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명했던 아이콘 생성은&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s5yKy/btsQVD1FIK8/WglT1sczbA9jp6MgAakGaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s5yKy/btsQVD1FIK8/WglT1sczbA9jp6MgAakGaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s5yKy/btsQVD1FIK8/WglT1sczbA9jp6MgAakGaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs5yKy%2FbtsQVD1FIK8%2FWglT1sczbA9jp6MgAakGaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;758&quot; height=&quot;218&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼을 클릭하면 아이콘을 일단 생성하는 걸로 (생성은 1회성 이벤트로 충분하다)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 1: 아이콘 생성&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 2: 아이콘 위치/상태 업데이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 3: 카메라 줌에 따른 아이콘 위치 업데이트 스케일 조정&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 Interaction : 이벤트 1&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tick 으로 계속 갱신: 이벤트 2, 이벤트 3&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엄밀히 말하면 이벤트 3은 줌이 발생할 때만 값 갱신하면 되긴 하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별거 아닌거 Tick 에 몰아넣으면 컴퓨터 과부화 온다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이렇게 업데이트 해주고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbMMkS/btsQVAKFuOX/Hsrogl50NBL5Wgee3STVHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbMMkS/btsQVAKFuOX/Hsrogl50NBL5Wgee3STVHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbMMkS/btsQVAKFuOX/Hsrogl50NBL5Wgee3STVHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbMMkS%2FbtsQVAKFuOX%2FHsrogl50NBL5Wgee3STVHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;538&quot; height=&quot;376&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ 버튼 눌러서 FOV 를 줄여버리면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XSA0G/btsQVTQDYHY/KN5kHezBHH5PrrlMaq6Lkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XSA0G/btsQVTQDYHY/KN5kHezBHH5PrrlMaq6Lkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XSA0G/btsQVTQDYHY/KN5kHezBHH5PrrlMaq6Lkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXSA0G%2FbtsQVTQDYHY%2FKN5kHezBHH5PrrlMaq6Lkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;378&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이콘이 좀 더 크고 잘 보이게된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>UI</category>
      <category>미니맵</category>
      <category>아이콘</category>
      <category>언리얼</category>
      <category>위젯</category>
      <category>위젯생성</category>
      <category>위치업데이트</category>
      <category>크기조절</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/46</guid>
      <comments>https://gogoreality.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 1 Oct 2025 01:09:37 +0900</pubDate>
    </item>
    <item>
      <title>[머티리얼] 오버레이 기능과 포스트프로세싱으로 다중 객체 원거리 식별하기</title>
      <link>https://gogoreality.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 객체가 선택됐다는 걸 나타내기 위해서는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오버레이로 객체 테두리를 밝게 빛내는 기능을 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G2k1r/btsQXZhKDjF/M8HNpAEFMQusvVeJ3ydXwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G2k1r/btsQXZhKDjF/M8HNpAEFMQusvVeJ3ydXwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G2k1r/btsQXZhKDjF/M8HNpAEFMQusvVeJ3ydXwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG2k1r%2FbtsQXZhKDjF%2FM8HNpAEFMQusvVeJ3ydXwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;438&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 아웃라인이라는 머티리얼을 만들어줬다. 이름은 자기맘대로 해도된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;1099&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0RMK4/btsQYPeCYc3/XeCk0hFkR1hCWmnLLThytk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0RMK4/btsQYPeCYc3/XeCk0hFkR1hCWmnLLThytk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0RMK4/btsQYPeCYc3/XeCk0hFkR1hCWmnLLThytk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0RMK4%2FbtsQYPeCYc3%2FXeCk0hFkR1hCWmnLLThytk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1244&quot; height=&quot;1099&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;1099&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Material 을 Masked 에 Unlit 으로 하고 양면에 체크해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Emisive Color 는 Intensity 곱으로 밝기 강도 조절 가능하게 해주고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TwoSidedSign (1-x) 가 opacity mask&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VertexNormalWS에서 LineThickness 라고 이름 지은 Scalar Parameter 를 곱해서 월드 포지션 오프셋에 연결해준다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOrIwJ/btsQWMXRbxU/zoXqrRQ3yEA3CJ93zA7wl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOrIwJ/btsQWMXRbxU/zoXqrRQ3yEA3CJ93zA7wl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOrIwJ/btsQWMXRbxU/zoXqrRQ3yEA3CJ93zA7wl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOrIwJ%2FbtsQWMXRbxU%2FzoXqrRQ3yEA3CJ93zA7wl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1033&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸&amp;nbsp; 오버레이 머티리얼에 지정해주면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2061&quot; data-origin-height=&quot;1147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LLYYI/btsQXz4XRbS/Fw9j09VulpJaHKecdhgQ30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LLYYI/btsQXz4XRbS/Fw9j09VulpJaHKecdhgQ30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LLYYI/btsQXz4XRbS/Fw9j09VulpJaHKecdhgQ30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLLYYI%2FbtsQXz4XRbS%2FFw9j09VulpJaHKecdhgQ30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2061&quot; height=&quot;1147&quot; data-origin-width=&quot;2061&quot; data-origin-height=&quot;1147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 나오게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 하는 이유는 가까이서 선택 여부를 표시하는 거로도 가능하지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1561&quot; data-origin-height=&quot;1087&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3sX0q/btsQYOmupmm/SU75qxubgt5OynPM8wpxa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3sX0q/btsQYOmupmm/SU75qxubgt5OynPM8wpxa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3sX0q/btsQYOmupmm/SU75qxubgt5OynPM8wpxa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3sX0q%2FbtsQYOmupmm%2FSU75qxubgt5OynPM8wpxa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1561&quot; height=&quot;1087&quot; data-origin-width=&quot;1561&quot; data-origin-height=&quot;1087&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 멀리서 보면 객체가 어디있는지 잘 안보이게 되는데&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1487&quot; data-origin-height=&quot;1003&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zrCpo/btsQVq87018/sLA6MVVR1jMV0E6shVSt0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zrCpo/btsQVq87018/sLA6MVVR1jMV0E6shVSt0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zrCpo/btsQVq87018/sLA6MVVR1jMV0E6shVSt0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzrCpo%2FbtsQVq87018%2FsLA6MVVR1jMV0E6shVSt0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1487&quot; height=&quot;1003&quot; data-origin-width=&quot;1487&quot; data-origin-height=&quot;1003&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오버레이 기능을 하면 좀 빛나보인다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 여전히 잘 안보이는데&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ulYJw/btsQXTojwuW/gz2Vm00lrLw3icLSJUQW1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ulYJw/btsQXTojwuW/gz2Vm00lrLw3icLSJUQW1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ulYJw/btsQXTojwuW/gz2Vm00lrLw3icLSJUQW1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FulYJw%2FbtsQXTojwuW%2Fgz2Vm00lrLw3icLSJUQW1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트프로세스 볼륨을 추가해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HBdMM/btsQWQeOqYk/Yz8P34FJaHUmmahUuxjOI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HBdMM/btsQWQeOqYk/Yz8P34FJaHUmmahUuxjOI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HBdMM/btsQWQeOqYk/Yz8P34FJaHUmmahUuxjOI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHBdMM%2FbtsQWQeOqYk%2FYz8P34FJaHUmmahUuxjOI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;368&quot; height=&quot;652&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bloom 을 메서드 스탠다드를 활성화시켜주고 강도를 올려준다. 3~5정도?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IvSfG/btsQW2sCnlw/jRJ8Jw7eELNex8EC7auhZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IvSfG/btsQW2sCnlw/jRJ8Jw7eELNex8EC7auhZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IvSfG/btsQW2sCnlw/jRJ8Jw7eELNex8EC7auhZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIvSfG%2FbtsQW2sCnlw%2FjRJ8Jw7eELNex8EC7auhZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;758&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;758&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인텐시티도 올려줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1708&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQHPCk/btsQWipdyhr/KSVwCpmIC7Z4uqNFU52ou0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQHPCk/btsQWipdyhr/KSVwCpmIC7Z4uqNFU52ou0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQHPCk/btsQWipdyhr/KSVwCpmIC7Z4uqNFU52ou0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQHPCk%2FbtsQWipdyhr%2FKSVwCpmIC7Z4uqNFU52ou0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1708&quot; height=&quot;1125&quot; data-origin-width=&quot;1708&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 더 잘보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1081&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmtdI9/btsQXxsweaT/3N7hrixFk1mC2xxaDgkjeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmtdI9/btsQXxsweaT/3N7hrixFk1mC2xxaDgkjeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmtdI9/btsQXxsweaT/3N7hrixFk1mC2xxaDgkjeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmtdI9%2FbtsQXxsweaT%2F3N7hrixFk1mC2xxaDgkjeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1081&quot; height=&quot;488&quot; data-origin-width=&quot;1081&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 더 가시성이 생긴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI 에서 껐다 켰다하면서 가시화를 조절할 수 있는게 장점인데&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pRwEX/btsQVV8IQ5y/yzZ3sJidOHqmKKr3S7deLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pRwEX/btsQVV8IQ5y/yzZ3sJidOHqmKKr3S7deLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pRwEX/btsQVV8IQ5y/yzZ3sJidOHqmKKr3S7deLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpRwEX%2FbtsQVV8IQ5y%2FyzZ3sJidOHqmKKr3S7deLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1212&quot; height=&quot;682&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 set overlay material 을 버튼에 매핑하면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRDtRi/btsQVquBybU/HKGwmjJhVKeug94aXrMzRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRDtRi/btsQVquBybU/HKGwmjJhVKeug94aXrMzRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRDtRi/btsQVquBybU/HKGwmjJhVKeug94aXrMzRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRDtRi%2FbtsQVquBybU%2FHKGwmjJhVKeug94aXrMzRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1350&quot; height=&quot;526&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨블루프린트에 대충 UI 띄우고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/458320383&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/e8RJn/hyZKmaaVvQ/KuKQlN8kgYfvapNl3bfkAk/img.jpg?width=1552&amp;amp;height=944&amp;amp;face=0_0_1552_944,https://scrap.kakaocdn.net/dn/otN3T/hyZJZOpn4G/BHOY0pGECGMbR8Xu4yeEE0/img.jpg?width=1552&amp;amp;height=944&amp;amp;face=0_0_1552_944&quot; data-video-width=&quot;860&quot; data-video-height=&quot;523&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;523&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'GoReal'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/458320383?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;523&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 딸깍 누를때마다 바뀌는 걸 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 여러 객체에다 적용할 경우&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1655&quot; data-origin-height=&quot;923&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1ib2P/btsQYRpZK5l/xrR2mDxCTpV6ElkMEGKsB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1ib2P/btsQYRpZK5l/xrR2mDxCTpV6ElkMEGKsB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1ib2P/btsQYRpZK5l/xrR2mDxCTpV6ElkMEGKsB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1ib2P%2FbtsQYRpZK5l%2FxrR2mDxCTpV6ElkMEGKsB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1655&quot; height=&quot;923&quot; data-origin-width=&quot;1655&quot; data-origin-height=&quot;923&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 색상으로 하나 머티리얼 또 파서&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B6KSJ/btsQYRpZLII/a5k27fXGg29ENv1MvBLXy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B6KSJ/btsQYRpZLII/a5k27fXGg29ENv1MvBLXy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B6KSJ/btsQYRpZLII/a5k27fXGg29ENv1MvBLXy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB6KSJ%2FbtsQYRpZLII%2Fa5k27fXGg29ENv1MvBLXy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1619&quot; height=&quot;1119&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐가 뭔지 식별이 잘 안되다가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1806&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lTXex/btsQVqagDeJ/8nQWy2tKvczmZFmQCrYULK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lTXex/btsQVqagDeJ/8nQWy2tKvczmZFmQCrYULK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lTXex/btsQVqagDeJ/8nQWy2tKvczmZFmQCrYULK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlTXex%2FbtsQVqagDeJ%2F8nQWy2tKvczmZFmQCrYULK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1806&quot; height=&quot;1122&quot; data-origin-width=&quot;1806&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아 빨간놈들 저깄고 파란놈들 여깄구나...&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 알 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군집 객체에서 팀별 구분을 하거나 아군 적군 식별 할 때 유용하게 쓸 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오버레이 + 포스트프로세스볼륨 Bloom 값 조절&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 좀더 잘 보이게 하는 핵심 포인트라고 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Set Overlay 는 mesh 컴포넌트에서 할당해야 하니&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액터에서 Set Overlay Material 안뜨는데요? 라는 멍청한 질문은 하면 안된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>객체구분</category>
      <category>머티리얼</category>
      <category>식별</category>
      <category>언리얼</category>
      <category>오버레이</category>
      <category>포스트프로세싱</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/45</guid>
      <comments>https://gogoreality.tistory.com/45#entry45comment</comments>
      <pubDate>Tue, 30 Sep 2025 22:44:10 +0900</pubDate>
    </item>
    <item>
      <title>루멘 해제로 머티리얼 반짝임(플리커링) 문제 해결</title>
      <link>https://gogoreality.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 5에서 작업을 하다보면 이상하게 반짝이는 경우가 생긴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 플리커링이라고 하는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/457667533&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/gPloj/hyZGilZQgZ/Ej8XYQpvo20RtPlpnekeB1/img.jpg?width=816&amp;amp;height=748&amp;amp;face=0_0_816_748,https://scrap.kakaocdn.net/dn/blSQhA/hyZGbAodDu/4TKawhUkHkfvZOY7Bylkvk/img.jpg?width=816&amp;amp;height=748&amp;amp;face=0_0_816_748&quot; data-video-width=&quot;816&quot; data-video-height=&quot;748&quot; data-video-origin-width=&quot;816&quot; data-video-origin-height=&quot;748&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'GoReal'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/457667533?service=daum_tistory&quot; width=&quot;816&quot; height=&quot;748&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 해결하는 방법은&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bssBeH/btsQgPAvbKw/gGo4SMZ087N2s8Dv415pWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bssBeH/btsQgPAvbKw/gGo4SMZ087N2s8Dv415pWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bssBeH/btsQgPAvbKw/gGo4SMZ087N2s8Dv415pWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbssBeH%2FbtsQgPAvbKw%2FgGo4SMZ087N2s8Dv415pWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;880&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 세팅&amp;gt;렌더링&amp;gt;글로벌 일루미네이션&amp;gt;다이내믹 글로벌 일루미네이션 메서드를 Lumen 에서 Standalon Ray Traced 로 &lt;br /&gt;바꾸는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 이렇게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/457668059&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/mGyFR/hyZGUZaFoE/gdKKz4wz0EO7lMGLpAeKf1/img.jpg?width=816&amp;amp;height=748&amp;amp;face=0_0_816_748,https://scrap.kakaocdn.net/dn/bqwctR/hyZF8p8WGt/IduaD4tSNkSBXvHY7WWjMK/img.jpg?width=816&amp;amp;height=748&amp;amp;face=0_0_816_748&quot; data-video-width=&quot;816&quot; data-video-height=&quot;748&quot; data-video-origin-width=&quot;816&quot; data-video-origin-height=&quot;748&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'GoReal'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/457668059?service=daum_tistory&quot; width=&quot;816&quot; height=&quot;748&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플리커링이 사라졌다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루멘이 이런게 아직 문제여서 현장에서는 제외하는 경우가 있다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal</category>
      <category>루멘</category>
      <category>머티리얼</category>
      <category>반짝임</category>
      <category>쉐이더</category>
      <category>언리얼</category>
      <category>플리커링</category>
      <author>Real_Go</author>
      <guid isPermaLink="true">https://gogoreality.tistory.com/44</guid>
      <comments>https://gogoreality.tistory.com/44#entry44comment</comments>
      <pubDate>Mon, 1 Sep 2025 23:25:49 +0900</pubDate>
    </item>
  </channel>
</rss>