본문 바로가기

전체 글

(52)
[JavaScript] 프로토타입에 대해 이해해보자 자바스크립트 관련 글은 잘 안쓰는편인데, 프로토타입 개념만큼은 중요하다고 판단해서 블로그에 포스팅 함으로 써 정리해보고자 한다. Prototype vs Class 우선 자바스크립트는 객체기반 언어이다. 객체 지향과는 다른데, 필자는 class 가 없다는 점이 가장 다르다고 생각한다. 물론 ECMA 6 부터는 class 라는 문법이 새로 추가됬지만, 그렇다고 JS 가 갑자기 자바나 C# 같은 객체지향형 언어로 바뀌었다는건 아니다. 그냥 보기 편해졌을뿐. 필자는 자바부터 배워왔기 때문에 class 용어에 익숙하다. 덕분에 프로토타입은 이해하기 어려웠고 매우 어색했다. 하지만 js 에서는 프로토타입은 아주 중요한 개념이고 고급 자바스크립트 개발자로 거듭나기 위해서는 꼭 이해해야만 하는 과정이므로 포기해서는 안..
[UE4] 웹 동영상 재생하는 플러그인 개발 (WebMediaPlayer) 이번에는 필자가 만든 플러그인에 대해 소개하는 시간을 가지도록 하겠다. 마켓 플레이스에 올려보려고 시도해봤으나 퇴짜 맞았고, 혼자 가지고 있기도 아깝고 해서 깃허브에 올리고 가볍게 홍보도 해보고자 한다. 언리얼 미디어 프레임워크와 http 모듈을 활용해서 비디오 재생 플러그인을 만들었다. 완성하고 보니 미디어 프레임워크에 크게 의존하고 있다는걸 알게 되었는데 (이게 퇴짜 원인 인듯하다) 비디오 캐싱을 통해 서버단 트래픽도 아껴 줄 수 있고, 무엇보다 블루프린트로 쉽게 구성 할 수 있도록 만들어두어서 잘 쓰면 나름 합리적인 플러그인이 될 수 있다고 생각한다. 서두는 이쯤에서 하고 예제로 만든 (예제 만드는게 가장 오래 걸렸다) 맵을 보도록 하겠다. 실행 영상 URL 집어 넣으면 알아서 다운로드 한 후 재생..
UE4 렌더 타깃을 사용하여 CCTV 를 만들어보자 이번 포스팅에서는, 렌더타깃을 사용해서 CCTV 와 같이, 인 게임에서 실시간으로 씬을 캡쳐해서 게임 내에서 출력 해보는 과정을 알아 볼 것이다. 우선 과정을 마치면 아래와 같은 결과를 얻을 수 있다. 수영장을 실시간으로 캡쳐하여 인 게임 TV 에 보여주고 있다. Scene Capture 액터 두기 모드 탭에서, 'Scene' 이라고 검색하면 두가지의 캡쳐 방식이 나온다. 2D 캡쳐는 말 그대로, 화면을 2D 로 캡쳐 한다는 것을 의미한다. 이는 CCTV 와 같은 평면의 화면에 출력할때 좋다. 큐브 캡쳐는 입체로 캡쳐를 하게 되는데, VR 과 같이 360도 화면에서 사용 할 수 있다. 우리의 목적은 CCTV 를 만드는것 이므로, 2D 캡쳐를 사용하도록 하겠다. 배치해보면, 카메라가 나온다. 이 카메라를 ..
[UE4] 언리얼 엔진에서 .pmx 임포트 하기 MMD (미쿠미쿠댄스) 프로그램에서 사용되는 확장자인 .pmx 파일로 만들어진 모델파일을 언리얼엔진에서 불러와 적용해보려고 한다. 추가로 .vmd 파일 (Vocaloid Motion Data) 파일도 적용하여 MV 영상 을 제작해 내는것을 목표로 한다. 언리얼 엔진에서는, 비공식적으로 플러그인을 통해 .pmx 파일을 임포트 할 수 있는 기능을 제공했다. 하지만 지금은 개발이 중단됬는지 4.16 버전 까지만 나왔고, 현재 필자가 사용하는 4.24.1에 대응하는 플러그인은 없었다. https://github.com/bm9/IM4U bm9/IM4U IM4U Plugin Release Repository for Unreal Engine 4 .**DEVELOPMENT DISCONTINUED** - bm9/IM4U..
[UE4] SteamVR 모션 컨트롤러가 작동하지 않을 때 VR 게임을 개발하면서, 모션 컨트롤러의 사용은 필수이다. 4.24 로 엔진 버전을 올리고 늘 똑같이 MotionControllerComponent 를 추가해서 실행해봤는데 안된다. MotionSource 도 제대로 설정했는데 안된다. '아무키' 노드를 연결하고 모션 컨트롤러 키를 눌러봤는데 안된다. 이상한 마음에 VR 템플릿을 가져와서 실행해보니 된다. 결론적으로는 내 프로젝트 어디선가 문제가 발생했다는건데, 며칠간 삽질 한 결과 SteamVR Manifest 관련 문제임을 알게 되었다. 해결하기 관련 자료를 찾아봤는데, 정확히 저 파일이 어떤 역할을 하는지 알아내지 못했다. 우선 VR 템플릿이 잘 작동하니 파일을 대충 읽어보고 config 폴더에 붙여넣었다. VR 템플릿을 하나 만든다. config ..
[UE4] License for package Android SDK Build-Tools not accepted. 오류 해결 언리얼 엔진 4.21 버전에서, 안드로이드 앱으로 패키징을 할때 Build-Tools 가 라이선스 승인이 안되어 있다는 오류가 발생했다. 이전에도 (4.19 사용당시)꽤 자주 발생 했었는데, 이번에 정리를 하면서 해결책을 확실히 잡아두는 편이 좋다고 판단 했고 이번에 글을 쓰기로 마음 먹었다. 이 오류의 원인은 UE4가 안드로이드 SDK 26.0.1을 기본으로 사용하고 있는데 빌드는 26.0.2로 시도하려고 했기 때문이다. 즉, AndroidCodeWorks 으로 SDK 를 설치했다면 26.0.1이 기본으로 설치, 라이선스 승인을 했겠지만, 빌드할 때는 26.0.2를 찾기 때문에 당연히 설치도 안됬고 라이선스 승인도 안됐을것 이다. 그렇다면, 해결책은 두가지 인데. 빌드를 26.0.1으로 할것이냐, 26..
[UE4] VisualStudio 를 위한 인텔리센스 구성 언리얼 엔진에서 C++ 프로그래밍을 하다 보면(사실 인텔리 센스 문제는 C, C++ 계열에선 좀 심각한 편이다) 가장 불편한 것 중 하나가 바로 "인텔리 센스"이다. 외국에서는 "인텔리 노센스"라는 말이 나올 정도. 필자도 언리얼 위에 C++ 코드를 당연히 작성해보았고, 한없는 불편함을 느꼈다. 오늘, 그 불편함은 극도로 커졌고 이번 겨울방학에 언리얼을 정말 열심히 하겠다는 마음에, 인텔리센스를 고쳐보기로 마음먹었고, 해냈다. 이 포스팅을 보면 아래와 같은 멋진 인텔리 센스 효과를 얻을 수 있고, 독자분들의 언리얼 개발 속도는 크게 향상될 것이라고 믿는다. (VS 2017에서 테스트했으며, 이전 버전에서도 돌아갈 것이다.) 인텔리 센스 적용 결과 설치할 익스텐션 visual assist whole tom..
[C++] 이중 포인터 사용 예 심심해서 지식인을 돌다가, 재미있는 질문글을 발견 하고 답변을 달고 있었다. (내가 글을 열심히 썼는데, 누가 먼저 답변하고 채택됬다고 더 안올라간다 ;;;) 아까워서, 나름 포인터 이해에도 한층 도움을 준듯 하여 블로그에 남긴다. 질문의 요지는 이것이다. 여기서 왜, ip 변수의 값이 바뀌지 않느냐 인데... 그 풀이를 남기면 다음과 같다. int *ip = NULL; 에서, ip 포인터 변수는 아무것도 가르키지 않게 된다. f(ip); 에서, f 를 호출 할 때 nullptr 을 복제하여 f(int *p) 에 넘겨준다. 보다 싶이, nullptr (0) 가 넘어감을 볼 수 있다. 여기서 짚어야 하는 점은, main() 의 ip 포인터 변수가 복제되어 f() 에 넘어갔기 때문에 f() 부분의 p 와 m..