본문 바로가기

전체 글

(333)
[메시 기초] 큐브 구체 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 정육면체를 구체로 변환합니다. - Unity에서 매핑을 시각화합니다. - 변환을 비판적으로 검토합니다. - 수학을 사용하여 더 나은 접근 방식을 생각해 보세요 1. 둥근 큐브 조정하기 지난 튜토리얼에서 둥근 큐브로 완벽한 구를 만들 수 있다는 것을 눈치 채셨을 것입니다. 큐브의 세 차원의 값을 모두 같은 값으로 변경하고 Roundness를 해당 크기의 절반으로 설정합니다. 만약 이 컴포넌트로 얻고 싶은 메시가 구라고 ..
230806 C++ 라이브러리 1. 동적 라이브러리는 '공유 라이브러리'라고도 불리며, 정적 라이브러리의 문제를 해결하기 위해 만들어졌다. 프로그램이 동적 라이브러리와 링크되면, 라이브러리 모듈이 실행 파일로 복사되는 대신 동적 라이브러리가 필요하다는 정보만 기록하여 둔다. 이후 실행 파일이 실제로 실행되어 메모리로 올라가면 동적 라이브러리를 참조하여 필요한 정보를 메모리에 올리게 된다. 이후 다른 프로그램이 실행되며 같은 라이브러리 함수를 참고하고자 하면, 이미 메모리에 존재하는 동적 라이브러리를 참고하여 바로 링크 작업을 하게 된다. 2. 특정 CPU나 운영체제를 위해 최적화된 동적 라이브러리를 사용할 수 있다. 3. dynamic linking은 별다른 옵션을 주지 않으면 운영체제에서 해주며(기본 옵션이 dynamic linki..
[메시 기초] 둥근 큐브 렌더링 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 큐브에 둥근 모서리를 추가합니다. - 법선을 정의합니다 - 서브 메쉬를 사용합니다 - 사용자 지정 셰이더를 만듭니다. - 프리미티브 콜라이더를 결합합니다. 1. 큐브 합성하기 평범한 큐브는 그렇게 특별하지 않습니다. 둥근 큐브로 만들어 봅시다. 둥근 큐브로 만들어봅시다! 스크립트 파일과 클래스 이름을 RoundedCube로 변경합니다. Unity는 컴포넌트를 계속 추적하지만 연결이 끊어지면 스크립트를 다시 드래그해서 ..
[메시 기초] 큐브 렌더링 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - seamless mesh로 큐브를 만듭니다 1. 큐브 합성하기 2D 격자 문제를 해결한 다음 단계는 3D 구조를 절차적으로 생성하는 것입니다. 큐브를 살펴보겠습니다. 개념적으로 큐브는 3D 볼륨을 둘러싸도록 배치되고 6개의 2D면으로 구성됩니다. 그리드의 6개의 인스턴스로 이 작업을 수행할 수 있습니다. 이렇게 하면 6개의 개별 메쉬로 구성된 큐브가 생깁니다. 보기에는 괜찮지만 실용적이지는 않습니다. Mesh.Comb..
[메시 기초] 절차적 그리드 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 요약 - 점으로 그리드를 만듭니다. - 코루틴을 사용하여 점의 배치를 분석합니다. - 삼각형으로 표면을 정의합니다. - 법선을 자동으로 생성합니다. - 텍스처 좌표와 탄젠트를 추가합니다. 이 튜토리얼에서는 정점과 삼각형으로 구성된 간단한 그리드를 만들어 보겠습니다. 1. 렌더링이란 유니티에서 무언가를 시각화하려면 메시를 사용합니다. 이것은 다른 프로그램에서 익스포트한 3D모델일 수도 있고, 유니티에서 절차적으로 생성된 메시일 수도 있습니다. 스프라이트, UI, 파티클 시스템도 메시를 사용할 수 있으며, Unity에서도 메시를 사..
[C++] Const 상수 (포인터 상수, constexpr, const_cast) const키워드는 대상을 상수화하여 초기화 이후로 값 수정을 하지 못하게 만드는 키워드입니다. 상수에 대해서는 경쟁 상태가 발생하지 않으며, 프로그램 내의 객체가 값이 바뀔 수 없다는 것을 알면 프로그램을 해석하기가 매우 쉬워집니다. c언어를 주로 사용했던 사람은 매크로를 사용하여 매직넘버를 대체하는 습관이 있는 경우가 있는데, c++에서는 이러한 케이스를 상수로 처리하는 것을 선호합니다. - 매크로는 영향 범위가 너무 넓다 - 매크로보다 상수가 디버깅하기 쉽다 - 상수가 변경에 더 유리하다. (예: const 변수였던 것이 기획 의도 변경 등으로 런타임에 값이 변경되게 바뀌는 경우) 포인터 상수 // 포인터가 가리키는 대상의 값을 변경하지 못하게 막음 const int* val; // 포인터가 가리키는..
오브젝트 - 7 ※ 이글은 독자를 전혀 배려하지 않고 그냥 제가 정리하고 싶은 내용 정리하는 글입니다. 197p~215p 원칙의 함정 소프트웨어 설계에 절대적인 법칙이란 존재하지 않는다. 법칙에는 예외가 없지만 원칙에는 예외가 넘쳐난다. 잊지 말아야 하는 사실은 설계가 트레이드오프의 산물이라는 것이다. 설계가 적절하게 트레이드오프 할 수 있는 능력이 숙련자와 초보자를 구분하는 가장 중요한 기준이라고 할 수 있다. 디미터법칙은 하나의 도트(.)를 강제하는 규칙이 아니다 - 디미터 법칙은 결합도와 관련된 것이며, 이 결합도가 문제가 되는 것은 객체의 내부 구조가 외부로 노출되는 경우로 한정한다. 결합도와 응집도의 충돌 - 클래스는 하나의 변경 의도만을 가져야 한다. - 디미터법칙과 묻지 말고 시켜라 원칙을 무작정 따르면 애..
NestJS 입문 - 권한, 로그, 설정 이 강의는 인프런의 '따라하며 배우는 NestJS' 강의를 보고 학습한 글입니다. [무료] 따라하며 배우는 NestJS - 인프런 | 강의 이 강의를 통해 NestJS에 대해서 배울 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com queryBuilder - 쿼리를 이용한 TypeORM 사용 - 복잡한 처리를 할 때 가끔 사용할 일이 있습니다 // boards.service.ts async getAllBoards(user: User): Promise { const query = this.boardRepository.createQueryBuilder('board'); query.where('board.userId = :userId', {userId: user.id}); const bo..