three.js: 로더 예제(MMD) + 기본 개념

다운로드: https://threejs.org/ 의 download 링크를 통해 받는다. 여기서 MMD의 정의는 다음과 같다. MikuMikuDance는 일본에서 개발 및 공개 중인 3D CG 동영상 작성 툴이다. 약칭은 MMD. 이름처럼 VOCALOID 하츠네 미쿠의 3D 모델을 조작할 수 있는 프로그램이다. 이름은 VOCALOID의 대표격이라고 할 수 있는 하츠네 미쿠의 모델이 제일 먼저 나왔기 때문에 MikuMikuDance(미쿠미쿠댄스)라고 이름지어진 더보기…

MusicXML: 기초 악보 만들기

출처: https://www.musicxml.com/tutorial/hello-world/ MusicXML에서 가사가 “hello, world”인 노래는 실제로 간단한 MusicXML 파일보다는 복잡합니다. 우리는 (조건을) 더 단순하게 유지합시다. 중간 C의 전체 음을 포함하는 한 마디의 음악, 4/4 박자 기준 <?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?> <!DOCTYPE score-partwise PUBLIC “-//Recordare//DTD MusicXML 3.1 Partwise//EN” “http://www.musicxml.org/dtds/partwise.dtd”> <score-partwise version=”3.1″> <part-list> <score-part id=”P1″> <part-name>Music</part-name> </score-part> </part-list> <part id=”P1″> <measure 더보기…

OpenGL 기초 8: 텍스처(비트맵, 픽셀맵), 폴리곤 스티플, 텍스처 매핑, 축소된 서브셋(ES)

출처: http://soen.kr/lecture/library/opengl/opengl-10.htm 34. 텍스처: 비트맵 비트맵은 미리 만들어진 이미지를 의미하며 다양한 크기와 색상을 가질 수 있다. 그러나 OpenGL에서는 흑백 이미지만을 비트맵이라고 칭하며 컬러 이미지는 픽셀맵(Pixelmap)이라는 별도의 용어를 사용한다. bit가 용어가 원래 0과 1만을 의미하는 흑백적인 뜻이기 때문이라고 한다. OpenGL은 파일 입출력 기능을 제공하지 않으므로 파일이나 리소스로부터 비트맵을 생성하기 어렵다. 간단한 이미지라면 더보기…

OpenGL 기초 7: 조명, 재질, 법선

출처: http://soen.kr/lecture/library/opengl/opengl-9.htm 31. 조명 개요 OpenGL은 조명을 성격에 따라 다음 세가지로 분류한다. 주변광(Ambient) : 도처에 존재하는 빛이다. 광원에서 나온 빛이 여러 경로로 반사 및 재반사되어 방향성을 잃어버린 빛이다. 사방에서 물체의 모든 면에 골고루 비쳐지며 밝기도 일정하다. 분산광(Diffuse) : 한 방향으로 들어와서 물체의 표면에 반사되어 여러 방향으로 흩어지는 빛이다. 빛을 받는 부분이 더보기…

OpenGL 기초 6: 행렬, 출력 영역의 제한

출처: http://soen.kr/lecture/library/opengl/opengl-8.htm 29. 행렬 OpenGL은 각종 변환에 행렬을 많이 사용한다.  행렬의 수학적 특성을 잘 이용하면 빠른 속도로 연산을 수행할 수 있다. OpenGL이 변환에 사용하는 행렬은 4*4 크기의 행렬이다. 3차원 공간은 3개의 좌표로 구성되지만 연산의 편의를 위해 한차원 더 높은 4*4 행렬을 사용한다. 메모리에서 4*4 행렬을 표현하는 방법은 여러 가지가 있는데 일단 다음 더보기…

OpenGL 기초 5: 변환(관측, 모델링), 투영(직교, 원근), 뷰포트

출처: http://soen.kr/lecture/library/opengl/opengl-8.htm 24. 변환 – 개요 3차원 공간에 배치된 물체의 전체적인 변환 과정은 다음과 같다. OpenGL은 변환 단계에서 수행되는 복잡한 연산들을 행렬로 처리한다. 모든 변환 함수의 연산 결과는 현재 행렬에 반영된다. 좀 더 정확하게는 현재 선택된 행렬 스택의 최상단 행렬인데 일단은 현재 행렬이라고 생각하면 된다. 다음 함수는 행렬 연산의 목적지를 지정한다. void 더보기…

OpenGL 기초 4: 버텍스 배열, 인덱스, 색상 배열, 인터리브 배열, 출력 목록

출처: http://soen.kr/lecture/library/opengl/opengl-7.htm 19. 버텍스 배열 OpenGL은 배열로 정점의 집합을 정의하는 방법을 공식적으로 지원한다. 먼저 다음 함수를 호출하여 배열을 사용하도록 설정한다. void glEnableClientState(GLenum cap); 배열을 사용하는 것은 OpenGL 서버인 그래픽 카드의 설정과는 상관이 없고 그래픽을 그리는 클라이언트인 CPU와 상관이 있으므로 glEnable 함수를 사용하지 않는다. 어떻게 그릴 것인가의 문제가 아니고 어떻게 정보를 전달할 더보기…

OpenGL 기초 3: 3차원 좌표, 와인딩 & 컬링, 폴리곤 모드, 예제(주전자, 도넛 등) 호출

출처: http://soen.kr/lecture/library/opengl/opengl-6.htm 15. 3차원 좌표 OpenGL의 3차원 공간은 다음과 같은 좌표계로 정의되어 있다. x 축은 오른쪽으로 증가하고 y축은 위쪽으로 증가하며 z축은 사용자 반대쪽으로 증가한다. 클리핑 영역, 즉 좌표의 범위는 x, y, z 모두 -1 ~ 1 사이이다. 원점은 (0, 0, 0)이고 사용자 가까운 쪽의 왼쪽 아래는 (-1, -1, -1)이고 사용자와 먼쪽의 더보기…

OpenGL 기초 요약 2: 블렌딩, 앤티앨리어싱, GLUT

출처: http://soen.kr/lecture/library/opengl/opengl-5.htm 11. 블렌딩 블렌딩은 색상 버퍼에 이미 기록되어 있는 값과 새로 그려지는 값의 논리 연산 방법을 지정한다. 다른 모드를 사용하면 두 값을 논리적으로 연산한 결과를 써 넣음으로써 특이한 효과를 낼 수 있다. 블렌딩 기능은 glEnable(GL_BLEND); 로 사용한다. 블렌딩은 색상 버퍼에 이미 기록되어 있는 값 D와 새로 기록되는 값 S와의 연산을 정의한다. 연산 방법은 더보기…

OpenGL 기초 요약 1: 기본 타입, 색상 변경, 점, 선, 사각형, 다각형

출처: http://soen.kr/lecture/library/opengl/opengl-4.htm 1. 기본 타입 2. 함수 형식 glVertex3i(1,2,3); int arv[]={1,2,3}; glVertex3iv(arv); 3차원상의 좌표는 x, y, z 세가지 값으로 표현하는 것이 원칙적이되 분수 표현을 위해 w로 분모를 지정할 수 있다. 또 평면상의 정점인 경우는 z 좌표를 생략하고 x, y만 밝힐 수도 있다. w가 생략되면 1로 간주되며 z를 생략하면 0으로 간주한다. 더보기…