Three.js 에서 대상을 멀리서 봤을 때 자글거리는 증상

이미지
Three.js를 사용하여 대상을 표현하는데 자글거리는 증상이 나옵니다. 카메라를 이동해서 가까이 가면 증상이 나오지 않지만 멀리 떨어지면 나오는 증상이었습니다. 대상을 구성하는 요소들이 겹치면서 자글거리는 것 같다고 생각이 들었지만 어떻게 처리해야 하는지 알 수 없었습니다. 그러다가 다음과 같은 글을 찾았습니다. https://github.com/jeromeetienne/AR.js/issues/401 댓글에 나와있는 답변에서 아래와 같은 내용을 봤습니다. var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true }); 공식 문서에서 "WebGLRenderer" -> "logarithmicDepthBuffer" 항목을 찾아보니 다음과 같은 설명과 예시를 볼 수 있었습니다. https://threejs.org/docs/index.html#api/en/renderers/WebGLRenderer ( ctrl + f -> logarithmicDepthBuffer 검색 ) https://threejs.org/examples/#webgl_camera_logarithmicdepthbuffer 이 옵션은 깊이에 관련된 옵션으로 보였고, 옵션을 적용하니 문제는 쉽게 해결되었습니다.

닌텐도 스위치 유선랜 연결하기

이미지
닌텐도 스위치에 유선 인터넷을 사용하기 위해 검색을 했습니다. 호환되는 제품의 경우 ASIX 에서 만든 'AX88179' 라는 칩을 사용한 제품이면 된다고 하더군요. 하지만 여러 제품들 중에서 'AX88179'칩을 사용했다는 설명을 찾기가 어려웠습니다. 해당 칩을 사용하면 대충 USB3.0에 기가비트를 지원하는 성능이 나오는 것 같은데, 그런 제품들 중에는 리얼텍 제품이 많이 보였습니다. 찾아보다가 컴퓨존에 'AX88179'를 키워드로 검색하니 이 칩을 사용한다고 하는 제품이 있었습니다. 2019 07 17 캡쳐 가격이 택배비 포함하면 2만원 아래네요. 스위치 인터넷설정에 들어가 '유선 접속'을 선택하면 정상적으로 사용이 가능합니다. 독에서 빼면 알아서 무선으로 변경되고, 독에 넣으면 유선으로 자동 전환 됩니다. 중국 제품인 것 같은데 생각보다 깔끔하고 좋습니다.

Three.js 에서 카메라가 가까이 다가가면 특정 부분만 사라지는 경우

Three.js를 사용한 3D 공간에 캐릭터를 표시했습니다. 카메라를 이리저리 움직이며 보던 중에 가까이 접근하면 머리카락이 사라지는 증상을 알게 되었습니다. 이 문제를 찾아보기 위해 구글에 검색을 하니 비슷한 질문을 찾게 되었습니다. https://discourse.threejs.org/t/mesh-disapear-when-camera-close/2914 https://stackoverflow.com/questions/50501392/mesh-disapear-when-camera-close 보여지고 있는 object3D 객체의 "frustumCulled"값에 false를 넣으면 됩니다. 카메라에 보이지 않아도 렌더링 대상에 넣어주는 옵션으로 보입니다. https://threejs.org/docs/index.html#api/en/core/Object3D.frustumCulled 저는 mesh에만 적용하여 사용 했는데 소스는 다음과 같습니다. object3D.traverse(function (obj) { if (obj.isMesh) { obj.frustumCulled = false; } }); Object3D.traverse() 를 사용해 내부를 돌면서 mesh만 골라 "fustumCulled"를 설정하는 겁니다. 이렇게 하니 문제가 해결되었습니다. 이 문제는 애니메이션이 있는 대상에서 자주 일어난다고 합니다.

윈도우 PHP 환경에서 로컬에 있는 MySQL 조회가 느린경우

윈도우 PHP 환경에서 로컬에 있는 MySQL 조회가 느린경우 우선적으로 DB접근 경로를 "localhost"문자열 대신 "127.0.0.1"을 입력하는 게 좋습니다. "C:\Windows\System32\drivers\etc\hosts" 파일도 건드려 보긴 했지만 효과가 없었고(재부팅을 해야 했나?), IP를 직접 입력하는 게 제일 깔끔했습니다.

윈도우 파워쉘에서 심볼릭 링크 만들기

이미지
Windows PowerShell에서 Symbolic link 만들기. 파워쉘에서 심볼릭 링크를 만들기 위해서 관리자 모드로 실행해야 합니다. 관리자 모드에서 아래 나오는 명령어를 입력하면 됩니다. (전부 소문자로 적어도 작동을 하지만 대소문자를 구별하면 읽기 편합니다.) New-item -itemType SymbolicLink -path "./linkPath" -target "./targetPath" D 드라브의 심볼릭 링크를 만드는 예.

iOS Safari에서 음소거 자동재생이 안되는 경우

모바일 브라우저는 소리를 포함한 영상을 자동재생할 수 없습니다. YouTube도 그렇고, video 태그도 그렇고, 음소거를 해야 자동재생이 가능합니다. 그럼에도 iOS에서는 무조건 막는 경우가 있는데 사용하는 폰이 절전모드인지 확인해 봐야 합니다. 절전모드로 되어있는 아이폰에서는 자동재생이 무조건 막히는 것을 확인 했습니다. (제가 가지고 있는 안드로이드 폰의 경우, 절전모드로 되어 있어도 자동재생이 가능 했습니다.)

공유기에 연결된 PC에 ping 테스트

인터넷에 연결된 공유기가 있습니다. 그 공유기에 PC가 연결되어 있는데 영상을 스트리밍 하고 있습니다. (공유기는 ipTime, 운영체제는 윈도우10을 사용하고 있습니다.) 외부에서 PC가 인터넷에 연결되어 있는 것을 확인하기 위해 일정 주기로 ping을 보내 확인하려고 했습니다. 하지만 인터넷에 연결되어 있는 IP로 ping을 보내면 PC가 아니라 공유기가 ping에 응답을 합니다. 즉, PC의 동작 여부는 알 수 없었습니다. 나름 찾아본다고 검색을 해도 공유기에 연결되어 있는 PC에 ping을 보내는 방법을 찾을 수 없었습니다. 공유기의 포트포워딩을 통해 외부의 요청 신호를 내부로 넘길 수 있지 않을까 생각을 했지만 ping은 포트와 무관하다는 내용만 찾았습니다. 그러던 중 특정 포트로 ping을 보낼 수 있는 "tcping" 이라는 도구가 있다는 것을 알았습니다. https://elifulkerson.com/projects/tcping.php (해당 페이지에 다운로드와 사용 설명이 있습니다.) 이 도구는 "tcping.exe"파일을 받아, 윈도우의 파워쉘 혹은 명령프롬프트로 현재 경로에서 바로 실행하거나 "C:\Windows\System32"경로에 두어서 전역 호출로 사용할 수 있습니다. 포트번호를 따로 적지 않으면 80포트를 기본으로 사용합니다. 80포트를 기준으로, 인터넷에 연결되어 있는 공유기에서 80포트를 포트포워딩해서 내부PC의 80포트와 연결을 한 후, 외부에서 "tcping [ip] [port]"를 입력하면 ping을 보냅니다. #아이피가 123.123.123.1 이라고 가정 tcping 123.123.123.1 80 PC에 80포트를 사용하는 프로그램(보통 웹 서버)이 동작하고 있다면 정상적으로 신호를 주고 받게 됩니다. 반대로 해당 포트를 사용하고 있지 않다면 ping은 실패를 하게 됩니다. 주의할 점은 이 방식은...