현재 유니티와 vuforia 엔진을 이용해서 물체인식을 하는 프로그램을 만들고 있습니다. <div>간단하게 설명드리면 osmo의 칠교처럼 실제로 칠교조각을 맞추고 그 맞춘 조각을 카메라를 통해서 비추면</div> <div>맞았는지 안맞았는지 확인하는 프로그램입니다 ㅠㅠ</div> <div><br></div> <div>vuforia 엔진을 통해 물체인식을 할 수 있도록 만들었습니다.</div> <div>다만 만약 l 모양으로 있는 조각을 맞추라는 문제가 나오면, 실제로 맞추는 조각을 맞출 때 l (세로모양)과 ㅡ(누워있는 모양) 을 구분해야하는데 ㅠㅠ </div> <div>어떻게 구분해야하는지 감이 안잡힙니다 ㅠㅠ</div> <div><br></div> <div>검색을 해보니 각 물체의 position을 통해 각도를 구할 수 있다는데 .. 어떻게 구하는지 감이 안옵니다 ㅠㅠ 제가 수학을 못하는 것도 가장 큰 이유중에 하나이겠죠 ㅠㅠ</div> <div>현재 짜놓은 코드를 일부를 보여드리겠습니다 ㅠㅠ</div> <div><br></div> <div><br></div> <div><font face="Menlo"><span style="color:#444444;">ImageTargetBehaviour</span><span style="color:#444444;"> </span><span style="color:#444444;">itb</span><span style="color:#444444;"> = </span><span style="color:#444444;">GetComponent</span><span style="color:#444444;"><</span><span style="color:#444444;">ImageTargetBehaviour</span><span style="color:#444444;">> ();</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector2</span><span style="color:#444444;"> </span><span style="color:#444444;">targetSize</span><span style="color:#444444;"> = </span><span style="color:#444444;">itb</span><span style="color:#444444;">.</span><span style="color:#444444;">GetSize</span><span style="color:#444444;"> ();</span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;">return</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">value</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">is</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">width</span><span style="font-style:italic;color:#999988;">, </span><span style="font-style:italic;color:#999988;">height</span><span style="font-style:italic;color:#999988;"> </span><br><span style="color:#444444;"> </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;">ImagetargetBehaviour</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">return</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">centor</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">position</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">value</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">in</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">unity</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">screen</span><span style="font-style:italic;color:#999988;"> </span><br><br><span style="color:#444444;"> </span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vLDl</span><span style="color:#444444;"> = </span><span style="color:#009695;">new</span><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> (-</span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">x</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">, </span><span style="color:#f57c00;">0</span><span style="color:#444444;">, -</span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">y</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">하단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vLUl</span><span style="color:#444444;"> = </span><span style="color:#009695;">new</span><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> (-</span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">x</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">, </span><span style="color:#f57c00;">0</span><span style="color:#444444;">, </span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">y</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">상단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vRUl</span><span style="color:#444444;"> = </span><span style="color:#009695;">new</span><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> ( </span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">x</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">, </span><span style="color:#f57c00;">0</span><span style="color:#444444;">, </span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">y</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">우측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">상단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vRDl</span><span style="color:#444444;"> = </span><span style="color:#009695;">new</span><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> ( </span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">x</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">, </span><span style="color:#f57c00;">0</span><span style="color:#444444;">, -</span><span style="color:#444444;">targetSize</span><span style="color:#444444;">.</span><span style="color:#444444;">y</span><span style="color:#444444;"> / </span><span style="color:#f57c00;">2.0f</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">우측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">하단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;">vector3</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">in</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">dicate</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">X</span><span style="font-style:italic;color:#999988;">,</span><span style="font-style:italic;color:#999988;">Z</span><span style="font-style:italic;color:#999988;">,</span><span style="font-style:italic;color:#999988;">Y</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">position</span><br><span style="color:#444444;"> </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;">it</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">is</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">position</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">located</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">in</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">unity</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">scene</span><br><br><br><span style="color:#444444;"> </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">모서리</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표를</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">스크린</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표계로</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">변환</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vLDs</span><span style="color:#444444;"> = </span><span style="color:#3363a4;">Camera</span><span style="color:#444444;">.</span><span style="color:#444444;">main</span><span style="color:#444444;">.</span><span style="color:#444444;">WorldToScreenPoint</span><span style="color:#444444;">(</span><span style="color:#444444;">vLDl</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">하단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">코너의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">스크린</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vLUs</span><span style="color:#444444;"> = </span><span style="color:#3363a4;">Camera</span><span style="color:#444444;">.</span><span style="color:#444444;">main</span><span style="color:#444444;">.</span><span style="color:#444444;">WorldToScreenPoint</span><span style="color:#444444;">(</span><span style="color:#444444;">vLUl</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">상단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">코너의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">스크린</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vRUs</span><span style="color:#444444;"> = </span><span style="color:#3363a4;">Camera</span><span style="color:#444444;">.</span><span style="color:#444444;">main</span><span style="color:#444444;">.</span><span style="color:#444444;">WorldToScreenPoint</span><span style="color:#444444;">(</span><span style="color:#444444;">vRUl</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">우측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">상단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">코너의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">스크린</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="color:#3363a4;">Vector3</span><span style="color:#444444;"> </span><span style="color:#444444;">vRDs</span><span style="color:#444444;"> = </span><span style="color:#3363a4;">Camera</span><span style="color:#444444;">.</span><span style="color:#444444;">main</span><span style="color:#444444;">.</span><span style="color:#444444;">WorldToScreenPoint</span><span style="color:#444444;">(</span><span style="color:#444444;">vRDl</span><span style="color:#444444;">); </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Image</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">Target의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">우측</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">하단</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">코너의</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">스크린</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">좌표</span><br><span style="color:#444444;"> </span><span style="font-style:italic;color:#999988;">//</span><span style="font-style:italic;color:#999988;">vector3</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">indicate</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">X</span><span style="font-style:italic;color:#999988;">,</span><span style="font-style:italic;color:#999988;">Z</span><span style="font-style:italic;color:#999988;">,</span><span style="font-style:italic;color:#999988;">Y</span><span style="font-style:italic;color:#999988;"> </span><span style="font-style:italic;color:#999988;">positon</span><br></font></div> <div><font face="Menlo"><span style="font-style:italic;color:#999988;"><br></span></font></div> <div><font face="Menlo">코드 설명을간단하게 하면.. 타겟이 인식됬을 경우 타겟의 좌표를 받아오고..( 좌표는 타겟의 가운데 점입니다.) </font></div> <div><font face="Menlo">그 좌표를 이용해 해당되는 타겟의 사이즈를 받아온 뒤, 벡터로 변환하는 과정입니다 ㅠㅠ</font></div> <div><font face="Menlo"><br></font></div> <div><font face="Menlo">어찌어찌해서 결국에 실제 스크린(ex.모바일 앱일 경우 휴대폰 화면) 에 있는 위치를 알 수 있는 상황까지 왔는데 ..</font></div> <div><br></div> <div><font face="Menlo">제 생각에는 스크린에서 잡히는 물체의 위치를 통해 각도를 구해서 회전한 정도에 따라 이 물체가 어떠한 상태인지 판단하는 것이 좋을 것같다고 생각되어집니다 ..</font></div> <div><font face="Menlo"><br></font></div> <div><font face="Menlo">모든 물체는 사각형입니다. (실제로 칠교조각은 정사각형이 아니나, 물체를 인식하는 과정에서 이미지가 사각형밖에 올라가지않아서 그렇게 됬습니다 ㅠㅠ)</font></div> <div><font face="Menlo"><br></font></div> <div><font face="Menlo">현재 unity scene에 위치한 좌표를 알 수 있고, 그 좌표를 통해서 실제 스크린에서 그 물체의 좌표를 받아올 수 있습니다 ㅠㅠ</font></div> <div><font face="Menlo"><br></font></div> <div><font face="Menlo">이 상황에서 제가 칠교조각이 제대로 위치하고 있는지 알 수 있는 방법이 있을까요?ㅠㅜㅜㅜㅜㅜㅜ</font></div> <div><font face="Menlo">정말 죄송한 말이지만.. 만약 가능하다면 자세하게 설명을 해주시면 정말정말 은혜는 잊지않고 항상 감사하며 살겠습니다 ㅠㅠㅠ </font></div> <div><font face="Menlo">조언 부탁드립니다 ㅠㅠ</font></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.