KR100227796B1 - 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 - Google Patents
3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 Download PDFInfo
- Publication number
- KR100227796B1 KR100227796B1 KR1019960065752A KR19960065752A KR100227796B1 KR 100227796 B1 KR100227796 B1 KR 100227796B1 KR 1019960065752 A KR1019960065752 A KR 1019960065752A KR 19960065752 A KR19960065752 A KR 19960065752A KR 100227796 B1 KR100227796 B1 KR 100227796B1
- Authority
- KR
- South Korea
- Prior art keywords
- polygon
- extracted
- font
- extracting
- closed
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/22—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
- G09G5/24—Generation of individual character patterns
- G09G5/246—Generation of individual character patterns of ideographic or arabic-like characters
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
본 발명은 3차원 모델링 및 애니메이션, 가상 현실, 방송, 가상 스튜디오, 영화, 그리고 문서 작성 등에서 효과적인 3차원 폰트를 손쉽게 지원하기 위하여, 도우즈의 트루 타입 폰트로부터 3차원 폰트를 자동 생성할 수 있는 3차원 폰트 생성 기법과, 상기 3차원 폰트 생성 기법을 이용하여 여러 글꼴의 3차원 폰트 데이타 세트를 생성할 수 있는 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법에 관해 개시된다.
Description
본 발명은 3차원 모델링 및 애니메이션, 가상 현실, 방송, 가상 스튜디오, 영화, 그리고 문서 작성 등에서 효과적인 3차원 폰트를 손쉽게 지원하기 위하여, 윈도우즈의 트루 타입 폰트로부터 3차원 폰트를 자동 생성할 수 있는 3차원 폰트 생성 기법과, 상기 3차원 폰트 생성 기법을 이용하여 여러 글꼴의 3차원 폰트 데이타 세트를 생성할 수 있는 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법에 관한 것이다.
생성된 3차원 폰트 데이타 세트는 표준 인터페이스를 이용하여 여러 응용프로그램에서 직접 활용할 수 있다. 3차원 폰트 데이타 세트의 효율적인 저장을 위해 3차원 공간 정보를 모두 저장하지 않고, 단면의 정보만을 갖도록 하고, 실제 응용시에 표준 인터페이스의 3차원 확장 기능을 이용하여 생성하게 함으로써, 많은 양과 종류의 글꼴에 대한 데이타 크기를 줄일 수 있다.
본 발명은 멀티미디어 정보 표현, 컴퓨터 그래픽스, 3차원 기법을 이용한 사용자 인터페이스 분야 등에 적용될 수 있다.
최근까지 3차원 모델링 디자인 도구에서 3차원 폰트의 활용은 일일이 수작업으로 원하는 글자를 그리거나, 필요한 순간마다 글자를 하나씩 새로이 생성하여 사용함으로써, 많은 노력과 시간을 필요로 하였다. 또한, 한글 혹은 한자를 처리하는 우리 문화 환경에서의 이러한 기법은 많은 부담을 디자이너에게 지우고 있었다.
따라서, 본 발명은 상기한 단점을 해결하기 위해 트루 타입 폰트로부터 각 글자의 외곽선을 추출하여 각 외곽선들이 이루는 루프의 위상관계를 행렬 방식으로 규정한 뒤 모자이크 세공(Tessellation)을 통해 포함관계 행렬(Facet)을 생성하는 과제로서, 3차원 폰트 데이타 세트의 자동 생성 및 3차원 폰트 데이타 세트의 저장방식과, 3차원 폰트 데이타 세트와 표준 인터페이스를 이용한 효과적인 활용 방안을 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명은 2차원 정보만을 저장하고 있는 MS-윈도우즈의 트루 타입 서체로부터 3차원 폰트를 자동 생성하기 위하여 필요한 외곽선 정보를 추출하는 단계와, 상기 단계에서 추출된 외곽선 정보를 이용하여 생성된 폐 다각형들의 포함관계를 행렬로 생성하는 단계와, 상기 단계에서 생성된 폐다각형들의 포함관계를 행렬을 이용하여 위상관계를 지정하는 단계로 이루어진 것을 특징으로 한다.
본 발명은 3차원 폰트 데이타가 별도로 생성되어 저장되어 있으므로, 디자이너들이 3차원 폰트 제작에 필요한 시간과 노력을 들이지 않아도 된다. 또한, 표준 인터페이스를 이용하여 사용자들이 원하는 형태 및 효과 등을 얼마든지 자유자재로 구현할 수 있다.
제1도는 본 발명이 적용되는 하드웨어 구성도.
제2도는 본 발명이 적용되는 시스템의 소프트웨어 모듈 구성도.
제3도는 본 발명에 따른 3차원 폰트 생성 기법에 대한 기본 동작 흐름도.
제4도는 3차원 폰트 생성 기법에서 사용되는 외곽선 추출에 대한 동작 흐름도.
제5도는 3차원 폰트 생성 기법에서 사용되는 위상관계 추출에 대한 동작 흐름도.
제6도는 3차원 폰트 생성 기법에서 사용되는 폐다각형 리스트를 이용한 포함관계 행렬 생성에 대한 동작 흐름도.
제7(a)도 내지 제7(c)도는 루프간의 위상관계의 예시도.
제8(a)도 및 제8(b)도는 스타티스트(Startest)를 이용한 컨벡스헐(convexhull) 꼭지점의 판정 방법을 나타낸 도면.
제9(a)도 및 제9(b)도는 컨백스헐(convexhull) 꼭지점을 이용한 방향 판정 방법을 나타낸 도면.
* 도면의 주요부분에 대한 부호의 설명
11 : 프로세서 12 : 주기억 장치 메모리 영역
13 : 메모리 내의 공유 메모리 영역 14 : 입출력 전용 처리기
15 : 보조 기억 장치
본 발명에서 제안하는 3차원 글꼴 생성 방법은 MS-윈도우즈(Windows)에 설치되어 있는 서체로부터 윤곽선을 추출하여 3차원 서체를 구성한다. 이 서체는 미려한 출력의 질을 제공하는 트루 타입 서체인데 3차원 글꼴 생성 방법은 MS-윈도우즈에 설치되어 있는 어떠한 트루 타입 서체도 사용 가능하므로 영문은 물론 한글, 한자 및 일본어를 비롯한 다국어 서체에서 자유롭게 미려한 3차원 서체를 만들어서 사용할 수 있다.
본 발명에서 제안하는 3차원 글꼴 생성 알고리즘은 다음과 같다.
첫째, 사용할 서체(트루 타입 서체)를 지정한다.
둘째, 문자의 캐릭터 코드(character code)를 확인한다.
셋째, 서체 종류와 character code에 해당하는 윤곽선 정보를 MS-윈도우즈 시스템으로부터 생성해 낸다. 윤곽선 정보를 글자를 이루는 폐곡선(contour)의 집합으로 이루어져 있고, 각각의 폐곡선은 폐곡선의 타입과 폐곡선을 이루는 꼭지점(vertex)의 리스트로 구성된다. 폐곡선의 형태는 폴리 라인(poly line) 또는 베지어 곡선(Bezier corve)이다.
넷째, 추출된 윤곽선 정보로부터 3차원 문자 또는 모델을 구성한다. 3차원 문자는 앞면, 뒷면, 그리고 옆면으로 이루어진다. 먼저 앞면을 만들기 위해서는 윤곽선 정보의 각각 폐곡선이 내부(inner) 폐곡선인지 외부(outer) 폐곡선인지 결정해야 하며, 내부 폐곡선은 어느 외부 폐곡선에 속한 것인지도 알아내야 한다.
다섯째, 내부 혹은 외부 폐곡선을 결정하면서 폐곡선의 종류에 따라 꼭지점의 방향 즉, 꼭지점의 배열 순서가 시계 방향인지 시계 반대방향인지를 확인하여, 외부 폐곡선은 시계방향, 내부 폐곡선은 시계반대방향이 되도록 조정한다.
여섯째, 이것이 결정되면 각각의 외부 폐곡선과 그에 해당하는 내부 폐곡선을 하나의 세트로 하여 모자이크 세공을 하여 기본적인 삼각형으로 쪼갠다. 모든 삼각형은 하나의 표준(normal) 값을 갖는다. 이렇게 하여 앞면이 완성된다.
일곱째, 뒷면을 구성하기 위해서는 앞면의 삼각형 데이터를 그대로 복사하여 사용하되 각각의 꼭지점의 z값을 -depth로 지정한다. 깊이(Depth)는 3차원 문자의 두께이고 앞면 꼭지점의 z밧은 0이다. 표준 값도 앞면의 표준의 역-벡터(inversevector)로 지정한다.
여덟째, 옆면은 앞면과 뒷면의 꼭지점 사이를 폐곡선의 꼭지점 차례대로 연결하여 삼각형을 구성하고, 각각의 삼각형마다 표준 값을 계산한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
제1도는 본 발명이 작동되는 하드웨어 환경(hardware environment)을 보여 준다. 제1도에서 Pi(1<=i=n)(11)는 프로세서, Mem(12)는 주기억장치 메모리 영역, SM(13)은 메모리내의 공유 메모리 영역(shared memory area), IOP(14)는 입출력 전용 처리기, DISK(15)는 보조기억장치인 디스크이다. 상술한 바와 같이 본 발명은 단일 프로세서 혹은 다중 프로세서와 공유 메모리 영역을 포함하는 일반적인 하드웨어 환경에서 작동이 가능하다.
제2도는 본 발명이 적용되는 시스템의 소프트웨어 모듈 구성도를 보여준다. 본 발명이 적용되는 시스템의 소프트웨어는 기본적으로 윈도우즈(Windows NT 3.51)(21)을 기반으로 구성된다. 3D 폰트 제너레이터(Font Generator)(23)는 2차원 정보만을 저장하고 있는 트루 타입 서체로부터 3차원 폰트를 생성하기 위하여 자체적인 기능을 이용하고, 또는 3D Font API(22)를 통하여 기본적인 기능을 제공받는다. 3D 폰트 제너레이터(23)와 3D Font API(22)는 OpenGL(24)에서 제공하는 3차원 입체적 기능(Geometry Function)을 사용하고, 하드웨어 인터페이스(H/W Dependent Interface)(25)를 사용하는 3차원 그래픽 가속기와 OpenGL(24)과의 상호작용을 하여 준다.
제3도는 본 발명에 따른 3차원 폰트 생성 기법에 대한 동작 흐름도이다.
3차원 폰트 생성은 첫째, 2차원 폰트(TrueType Fonts)로부터 외곽선을 추출(31)하는 단계와, 둘째, 추출된 외곽선의 위상 관계 추출 및 규정(32)하는 단계와, 셋째, 추출된 위상 관계로부터 포함관계 행렬(Facet)을 생성(33)하는 단계로, 크게 3가지 단계로 나눌 수 있다.
이상과 같은 과정을 거치면 원하는 글자에 대한 3차원 폰트의 삼각형 세트를 얻을 수 있다. 이들의 상세한 설명은 제4도, 제5도 그리고, 제6도의 설명에서 상세히 설명하기로 한다.
제4도는 3차원 폰트 생성 기법에서 사용되는 외곽선 추출에 대한 동작 흐름도이다. 3차원 폰트를 생성하기 위해서는 우선 폰트에 관련된 데이터를 추출하여야 하는데, 이들 중에서 가장 중요한 것은 폰트의 외곽선에 관한 정보이다. 본 발명에서는 MS-윈도우즈 상의 트루 타입 폰트로부터 외곽선을 추출한다. 트루 타입 폰트로부터 외곽선을 추출하기 위해서는 GetGlyOutline이라는 함수를 사용한다(401). 이 함수는 특정한 코드의 문자를 입력받으면 이로부터 이 문자의 외곽선을 추출하여 돌려준다. 트루 타입 폰트는 라인 세그먼트(Line Segment)와 2차 스플라인(Quadric Spline)을 사용하고 있다. 외곽선을 추출한다는 것은 위의 두 곡선의 집합을 얻어 내는 것에 해당하게 된다. 일반적으로 삼각형의 집합으로 Facetting을 하기 위해서는 일단 직선이 아닌 곡선 부분을 먼저 직선화하는 과정이 필요하므로 추출한 2차 스플라인 곡선을 직선화하는 과정이 반드시 포함되어야 한다.
GetGlyOutline에 의하여 추출된 외곽선이 곡선일(402) 경우에는 이 곡선상의 중심점을 추출하여(403) 양끝점과 서로 연결한다(404). 이렇게 하여 하나의 곡선을 2개의 직선으로 구성한 다음 이 두선분의 중심점과 곡선상의 1/4, 3/4에 위치하고 있는 점과의 거리가 미리 지정한 오차 범위에 없으면(405) 각 선분에 대하여(403)과 (404)의 동작을 연속하여 실행한다. 이러한 과정을 거치게 되면 폰트의 외곽선은 모두 직선화가 이루어지게 된다. 모든 직선은 일차적으로 여러개의 리스트로 구성되며(407) 다시 폐다각형의 리스트로 구성되어(408, 409) 위상관계 설정 동작이 수행되는 모듈로 전달된다(410).
본 발명에서는 위에서 설명한 직선화 과정에서 입력으로 오차를 부여하여 직선과 본래 곡선과의 최대 오차 정도를 설정함으로써 곡선에 얼마만큼 근접한 직선의 집합을 만들어 낼지에 관하여 지정이 가능하다.
제5도는 3차원 폰트 생성 기법에서 사용되는 폐 다각형 리스트를 이용한 포함관계 행렬 생성에 대한 동작 흐름도이다.
제4도에서 설명한 과정이 끝이 나면 외곽선들은 서로 연결된 것끼리 모여서 여러 개의 루프를 형성하게 된다. 하지만 이들 루프들은 아무런 상관관계가 없이 모여있게 되므로 이들을 이용해서 삼각형으로 나눈다는 것은 불가능하다. 이를 해결하기 위하여 우선 이들 루프들 간의 위상 관계를 부여함으로써 삼각형으로 나누는 과정(tesselation이라고 한다)을 수행하기 위해 전처리를 하게 된다.
일반적으로 영문화권의 글자나 한글의 자소 모양을 보면 하나의 외곽루프에 0 또는 그 이상의 내부 루프를 가지는 형식으로 되어있다. 하지만 한자의 글자 모양을 관찰하여 보면 이러한 형태뿐만 아니라 내부 루프의 내부에 다시 아일런드(island)로 다른 외곽 루프를 가지는 경우가 존재하며, 심한 경우에는 다시 그 내부에 내부루프를 가지는 경우도 관찰할 수 있다.
이러한 경우의 대표적인 예는 '國'자 혹은 '圖'자를 살펴보면 이해할 수 있다.
또한, 이러한 문제점들 외에도 복잡한 모양을 갖는 문자의 경우나 적당하지 않은 크기를 갖는 문자의 경우에 외곽선들이 서로 교차하여 이들의 위상 관계를 규정짓기가 아주 어려운 경우가 많다.
삼각형으로 나누는 과정(Tesselation)을 수행하기 위해서는 이와 같은 경우를 고려하여 위상 관계를 우선 명확하게 규정지어야 한다. 그렇지 않으면 삼각형으로 나누는 과정을 수행하는 과정에서 어느 부분을 삼각형으로 나누는 과정을 수행해야하고 어느 부분을 하면 안되는 부분인가를 구분지을 수 없게 되어 뚫려있어야 할 부분이 막혀있는 경우가 많이 발생하게 된다.
본 발명에서는 다중중첩 되어있는 루프들의 위상관계를 규정짓기 위하여 행렬방식을 사용한다. 이러한 행렬방식을 사용함으로써 루프들간의 내외부 관계를 판별할 수 있게 된다.
우선 두 개의 루프가 있는 경우 어떻게 서로 간의 포함관계를 규정지을 수 있는가에 대해 살펴보면 일반적으로 폐 다각형의 내부에 한 점에서 외부로 사선을 그리는 경우 이 사선과 폐 다각형의 선분들과의 교차점이 홀수가 된다. 반대로 외부의 한 점에서 사선을 그리는 경우 교차점은 없거나 짝수가 된다는 점을 이용한다.
하지만 이렇게 하는 경우 아무런 문제가 없는 것은 아니다. 가장 중요한 사항은 어떤 경우에는 폐 다각형의 꼭지점을 통과하는 경우가 문제가 된다는 것이다. 이렇게 꼭지점을 통과하는 경우는 꼭지점을 기준으로 양쪽의 폐 다각형의 변이 사선의 같은 방향에 있는 경우와 서로 다른 방향에 있는 경우를 각각 다르게 해석하여야 하는데, 전자의 경우는 2개의 교차점이 있는 경이고 후자의 경우는 1개의 교차점이 있는 것으로 판별하여야 한다.
이와 같이 한 점과 폐 다각형과의 내외부 관계가 규정지어지고 포함관계가 만들어지면 두 루프를 대상으로 한 폐 다각형의 모든 점이 다른 폐 다각형의 내부에 위치하는 경우 앞의 다각형이 뒤의 다각형에 포함된다고 할 수 있다.
제5도는 각각의 루프의 위치 즉, 내부 혹은 외부인지를 규정하는 행렬생성 과정의 흐름도를 나타낸다. 다각형 포함관계 행렬 생성 시작(501)으로부터, 우선 폐다각형 리스트에서 i번째 다각형인 제1다각형을 추출한다(502). 추출된 다각형이 리스트의 맨 마지막 것이면(503) 작업을 종료한다. 추출된 다각형이 리스트의 맨 마지막이 안이면(503)다음 폐 다각형 리스트에서 j번째 다각형인 제2다각형을 추출한다(504). 이것이 리스트의 마지막 것이면(505) 상기 (502)단계로 돌아가면서 다음의 폐다각형을 적용하여 다시 시작한다. 추출된 폐다각형 i와 j가 같은 것이면 (507) 상기 (504)단계로 복기하게 된다. 다각형 2가 다각형 1에 포함(508)이 된다면 행렬 (i, j)를 TRUE(509)로 하고, 아니면 FALSE(510)로 채워 넣은 후 상기(504) 단계로 복귀하게 된다.
제7(a)도 내지 제7(c)도는 일 실시예로서, (701)의 루프간의 위상관계를 행렬(702), (703)로 표현한 것이다. (701)과 같은 모양을 갖는 루프들이 있는 경우를 보면, (7012)는 (7013)을 포함하고, (7011)은 (7012)를 포함하고, (7014)는 (7015)를 포함하며, (7017)과 (7018)은 (7016)에 포함되며, (7011), (7014)와 (7016)은 각각 아무런 관계가 없이 서로 존재하고 있다. 이 경우를 (702), (703)에서 행렬로 표현한다. (702), (703)에서 첫번째 행은 포함하는 루프를 나타내고, 첫번째 열은 포함되는 루프를 나타낸다.
제6도는 루프의 포함관계 행렬을 이용한 위상관계 추출에 대한 동작 흐름도를 나타낸다.
제7(b)도의 (702) 행렬로부터 어떻게 외곽 루프의 내부 루프를 구별하는가에 관하여 살펴본다. 제5도의 설명에서 보았듯이 가장 외곽을 차지하는 루프는 다른 어떤 루프에도 포함이 되지 않는다는 것을 알 수 있다. 그러므로 가장 외곽루프에 해당하는 루프는 해당 행이 모두 F인 것을 찾으면 된다(602). 이 경우 (7011), (7014) 그리고 (7016)이 해당된다. 이렇게 가장 외곽 루프를 찾게 되면 각각의 루프에만 포함이 된 루프를 찾는다. 그렇게 하면 (7011)에는 (7012)가, (7014)에는 (7015)가 그리고 (7016)에는 (7017)과 (7018)이 연결이 된다. 그렇게 하고 이미 사용된 루프는 모두 TRUE나 FALSE가 아닌 다른 값으로 지정을 하면 제7(c)도의 행렬 (703)이 만들어진다.
이렇게 하면 이제 남은 것은 (7013)이 존재하게 되며, 이 루프는 현재 상태에서 다른 어떤 루프에도 포함되지 않은 루프로 인식된다.
이렇게 하면 원하는 형태의 다음과 같은 루프 간의 위상관계를 판별할 수 있게 된다.
● 외부 1번 - 내부 2번
● 외부 3번
● 외부 4번 - 내부 5번
● 외부 6번 - 내부 7번 8번
이렇게 함으로써 원하는 위상관계를 모두 판별하게 된다. 다음 과정은 이렇게 찾은 위상관계를 이용하여 루프의 방향을 적당하게 바꾸어 주어야 하는데, 그 이유는 현재 사용자는 모자이크 세공(tessellation) 루틴에는 큰 문제가 없지만 일반적으로 루프를 저장하는 방식을 맞게 지정해 놓아야 현재 사용하는 모자이크 세공 부분이 바뀌더라도 문제가 없기 때문이다. 일반적으로 사용하는 루프의 저장 방식은 외곽루프의 경우는 꼭지점이 시계반대 방향으로 저장되어야 하고, 내부루프의 경우는 시계방향으로 저장되어야 한다. 이렇게 만드는 과정은 폐 다각형이 볼록한 경우는 문제가 없지만 오목한 경우는 문제가 발생하게 된다. 그러므로 우선 폐다각형의 컨벡스헐(Convexhull)을 먼저 만들고, 이 컨벡스헐의 꼭지점이 저장된 순서로써 해당 폐 다각형의 꼭지점이 저장된 순서를 유추하여야 한다.
이러한 컨백스헐을 만드는 작업은 스타티스트(startest)라는 기법을 사용하여 각각의 꼭지점이 컨벡스헐의 꼭지점이 되는가에 대하여 판별한 후 폐 다각형의 꼭지점들 중에서 컨벡스헐을 만드는 꼭지점들만을 모아서 연결하면 원하는 컨벡스헐을 만들게 된다. 이 과정에서 사용되는 기법은 제8(a)도 및 제8(b)도에서 보는 바와 같이 특정 꼭지점을 바로 전의 인접한 꼭지점을 연결하였을 때, 다른 꼭지점들을 연결한 직선과의 각의 크기들이 모두 예각인가, 아니면 둔각이 존재하는가에 따라서 해당 꼭지점이 컨벡스헐의 꼭지점이 되는가 그렇지 않은가를 판별하는 것이다.
이렇게 만들어진 컨벡스헐을 이용하여 특정 꼭지점 주변의 꼭지점이 어떠한 순서로 연결되는가를 판별하면 폐다각형의 꼭지점 방향이 어떤 방향으로 이루어졌는가를 판별할 수 있다. 즉, 제9(a)도 및 제9(b)도와 같이 외곽 루프의 경우에 특정한 점을 중심으로 이전 꼭지점과 다음 꼭지점을 잇는 변과의 각의 크기를 판정하여 이것이 예각이면 적당한 방향을 이루는 것이고, 그렇지 않으면 방향이 반대로 이루어진 것임을 알 수 있다. 반면 내부루프의 경우는 이와 반대의 경우를 가지고 있어야 함을 알 수 있다.
이 과정을 살펴보면 많은 오버헤드(overhead)를 가지고 있는데, 이들 중에서 가장 많은 부하가 걸리는 부분이 컨벡스헐을 만드는 부분임을 알 수 있다. 그래서 단지 루프의 방향을 판정하기 위해서라면 컨벡스헐을 이루는 꼭지점을 찾는 과정에서 먼저 3개의 인접한 컨벡스헐의 꼭지점이 찾아지면 이것을 이용하여 방향검사를 한다. 이렇게 하는 경우 글자의 외곽선이 보통 수십개가 나오는 경우가 많으므로 계산 시간을 많이 단축할 수 있다.
제6도의 동작 흐름을 설명하면 다음과 같다. 행렬상에서 모든칸이 FALSE인 다각형을 추출(602)한 후 이를 외곽 루프로 지정한다(603). 추출된 다각형에 포함된 다각형이 있는지(604)를 조사한 후, 있다면 이를 추출하고(605) 내부 루프로 규정한다(606). 지금까지 선택된 다각형에 의하여 포함된 다른 다각형들을 이 다각형에 의하여 포함되지 않은 것으로 행렬을 수정한다(607). 계속하여 행렬상에서 포함관계가 지정된 부분이 있다면 (602)로 돌아가 다시 시작한다. 그렇지 않다면 위상관계를 저장한다(609). 위상관계를 저장한 수 외각 루프는 반시계 방향으로 내부 루프는 시계방향으로 꼭지점이 지정되도록 방향을 수정한다(610).
상기 결과를 가지고 이제는 모자이크 세공 기능으로 글자의 외곽선 정보를 이용하여 글자의 면들을 삼각형으로 나누는 작업을 진행하게 된다.
본 발명에서 사용한 OpenGL은 모자이크 세공을 통한 포함관계 행렬(Facet) 생성을 위하여 다음과 같은 3가지의 라이브러리를 제공하여 준다.
첫째, OpenGL Library
둘째, OpenGL Utility Library
셋째, Auxiliary Library
본 발명에서는 OpenGL 유틸리티 라이브러리에서 제공하는 모자이크 세공 기능을 사용한다. 이 기능은 우선 삼각형으로 나누고자 하는 면의 외곽 루프를 입력으로 주고, 다음은 그 면의 내부 루프들을 지정한 후에 라이브러리에서 제공하는 특정한 함수를 호출하면 그 함수에서 입력된 면을 삼각형의 조합으로 나누어주게 된다.
상술한 바와 같이 본 발명은 3차원 기능을 보유 또는 필요로 하는 어플리케이션에서 필수적으로 갖추어야 할 범용 3차원 글꼴 생성기로서, 인간과 컴퓨터의 원활한 의사 소통, 다양한 정보의 전달 및 표시, 3차원 객체의 용이한 처리를 위하여 다수의 어플리케이션들이 급격히 3차원 그래픽 기능을 수행하고 있는 추세이다.
이러한 3차원 그래픽 기능을 사용하는 어플리케이션들은 단순히 기하학적인 3차원 형태를 다루는 것을 목적으로 하는 CAD(Computer Aided Design) 또는 3차원 컴퓨터 그래픽 소프트웨어에서 그치지 않고, 인간에게 더 큰 시각적, 사실감을 부여함으로써 생산성을 증가시킬 수 있는 다양한 응용분야로 파급, 발전되고 있다.
현재 파급되고 있는 다양한 응용분야를 들면 다음과 같다.
1. 가상현실(Virtual Reality)
2. 멀티미디어(Multimedia)
3. 과학 자료 가시화(Scientific Data Visualization)
4. 정보 가시화(Information visualization)
5. 사용자 인터페이스(User Interface)
6. 네트웍 어플리케이션
그러나, 현재 3차원 글꼴을 사용할 수 있는 환경은 영문이나 가능한 형편이고, 이것 또한 상당히 제한된 분야에서만 가능하다. 본 발명은 이러한 단점을 보안하여 영문 뿐만 아니라 한글/한자를 자동으로 사용자가 원하는 문장을 3차원 형태로 변화할 뿐만 아니라 이를 범용적인 3차원 객체로 생성해낼 수 있기 때문에 다양한 응용분야에서 표준적으로 3차원 글꼴을 사용할 수 있다.
Claims (4)
- 2차원 정보만을 갖고 있는 포트로 부터 3차원 표현이 가능한 3차원 한글/한자 폰트를 자동으로 생성함에 있어서, 2차원 정보만을 저장하고 있는 MS-윈도우즈의 트루 타입 서체로부터 3차원 폰트를 자동 생성하기 위하여 필요한 외곽선 정보를 추출하는 제1단계와, 상기 제1단계에서 추출된 외곽선 정보를 이용하여 생성된 폐 다각형들의 포함관계를 행렬로 생성하는 제2단계와, 상기 2단계에서 생성된 폐 다각형들의 포함관계를 행렬을 이용하여 위상관계를 지정하는 제3단계로 이루어진 것을 특징으로 하는 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법.
- 제1항에 있어서, 상기 제1단계는 GetGlyOutline이라는 함수를 사용하여 외곽선을 추출하는 단계와, 상기 GetGlyOutline에 의해 추출된 외곽선이 곡선인가를 확인하는 단계와, 상기 확인된 외곽선이 곡선이 아닐 경우에는 여러 직선 조각을 모아서 폐 다각형을 형성하는 단계로 진행하고, 상기 확인된 외곽선이 곡선일 경우에는 상기 곡선상의 중심점을 추출하여 양끝점과 서로 연결한 후 상기 두 선분의 중심점과 곡선상의 1/4, 3/4에 위치하고 있는 점과의 거리가 미리 지정한 오차 범위에 있는가를 확인하는 단계와, 상기 확인 결과 미리 지정한 오차 범위 내에 없으면 두개의 곡선으로 나누어 각각에 대하여 다시 직선화한 후 상기 곡선상의 중심점을 추출하는 단계로 복귀하는 단계와, 상기 확인 결과 미리 지정한 오차 범위 내에 있으면 만들어진 선분들의 리스트를 구성하고, 여러 직선 조각을 모아서 폐 다각형을 형성하는 단계와, 상기 형성된 폐 다각형들의 리스트를 저장하고, 정보를 위상관계 설정 부분으로 전달한 후 외곽선 추출을 종료하는 단계로 이루어진 것을 특징으로 하는 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법.
- 제1항에 있어서, 상기 제2단계는 다각형 포함관계 행렬 생성 시작으로부터, 우선 폐 다각형 리스트에서 제1다각형을 추출하는 단계와, 상기 추출된 제1다각형이 리스트의 마지막 다각형 인지를 확인하는 단계와, 상기 확인 결과 마지막 다각형이면 작업을 종료하고, 추출된 다각형이 리스트의 맨 마지막이 안이면 다음 폐 다각형 리스트에서 제2다각형을 추출하는 단계와, 상기 추출된 제2다각형이 리스트의 마지막 다각형인지를 확인하는 단계와, 상기 확인 결과 마지막 다각형이면 상기 폐 다각형 리스트에서 제1다각형을 추출하는 단계로 복귀하고, 추출된 다각형이 리스트의 맨 마지막이 안이면 상기 추출된 제1다각형과 상기 제2다각형이 동일한 것인지를 확인하는 단계와, 상기 추출된 제1다각형과 상기 제2다각형이 동일한 것이면 상기 폐 다각형 리스트에서 제2다각형을 추출하는 단계로 복귀하고, 동일하지 않으면 상기 제2다각형이 상기 제1다각형에 포함되는지를 확인하는 단계와, 상기 확인결과 제2다각형이 제1다각형에 포함이 되면 행렬의 (i, j)칸을 '참'으로 하고, 포함이 안되면 '거짓'으로 채워 넣은 후, 상기 폐 다각형 리스트에서 제2다각형을 추출하는 단계로 복귀하는 단계로 이루어진 것을 특징으로 하는 3차원 한글/한자 폰트제작을 위한 3차원 폰트 생성 기법.
- 제1항에 있어서, 상기 제3단계는 행렬상에서 모든칸이 '거짓'인 다각형을 추출한 후 이를 외곽 루프로 지정하고, 추출된 다각형에 포함된 다각형이 있는지를 확인하는 단계와, 상기 확인결과 추출된 다각형에 포함된 다각형이 있다면, 추출된 다각형에만 포함된 다각형을 추출하고, 이 루프들을 외곽 루프의 내부 루프로 규정한 후, 지금까지 선택된 다각형에 의하여 포함된 다른 다각형들을 이 다각형에 의하여 포함되지 않은 것으로 행렬을 수정하는 단계와, 상기 추출된 다각형에 포함된 다각형이 있는지를 확인하는 단계에서 추출된 다각형에 포함된 다각형이 없거나, 상기 행렬을 수정이 끝나면 행렬상에서 포함관계가 지정된 부분이 남아있는지를 확인하는 단계와, 상기 확인결과 남아 있으면 상기 행렬상에서 모든칸이 '거짓'인 다각형을 추출하는 단계로 복귀하고, 남아 있지 않으면 위상관계를 저장하고, 외곽 루프는 반시계 방향으로 하고, 내부 루프는 시계 방향으로 꼭지점이 지정되도록 방향을 수정한 후 위상관계 지정을 종료하는 단계로 이루어진 것을 특징으로 하는 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960065752A KR100227796B1 (ko) | 1996-12-14 | 1996-12-14 | 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960065752A KR100227796B1 (ko) | 1996-12-14 | 1996-12-14 | 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980047276A KR19980047276A (ko) | 1998-09-15 |
KR100227796B1 true KR100227796B1 (ko) | 1999-11-01 |
Family
ID=19487871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960065752A KR100227796B1 (ko) | 1996-12-14 | 1996-12-14 | 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100227796B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101332946B1 (ko) * | 2012-02-17 | 2013-11-25 | 아시아나아이디티 주식회사 | 컨벡스 헐을 이용한 비정형 입력 데이터에 대한 이상 데이터 판단 방법 |
-
1996
- 1996-12-14 KR KR1019960065752A patent/KR100227796B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980047276A (ko) | 1998-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Litwinowicz et al. | Animating images with drawings | |
JP2690110B2 (ja) | 走査変換方法 | |
US6157750A (en) | Methods of transforming a basic shape element of a character | |
EP0926628A2 (en) | mpparatus and method for generating progressive polygon data | |
JPH04287292A (ja) | トリミングされたパラメトリック面のレンダリング方法及び装置 | |
US10452788B2 (en) | Modeling a three-dimensional object having multiple materials | |
JPH05324776A (ja) | 機能強化された立体モデル生成装置 | |
US5640589A (en) | Method and device for generating graphic data using a writing motion model | |
US8107729B2 (en) | Method for improving character outlines using multiple alignment zones | |
US6822658B1 (en) | Rendering a silhouette edge | |
US6532009B1 (en) | Programmable hardwired geometry pipeline | |
KR100227796B1 (ko) | 3차원 한글/한자 폰트 제작을 위한 3차원 폰트 생성 기법 | |
Junior et al. | A 3D modeling methodology based on a concavity-aware geometric test to create 3D textured coarse models from concept art and orthographic projections | |
JP2009122998A (ja) | ソリッド/サーフェースモデルから外形線を抽出する方法及びコンピュータソフトウエアプログラム | |
Feng et al. | B-spline free-form deformation of polygonal object as trimmed Bezier surfaces | |
US7330183B1 (en) | Techniques for projecting data maps | |
Rohmer et al. | Real-time continuous self-replicating details for shape deformation | |
JPH05324775A (ja) | コンピュータ支援設計装置および方法 | |
Ženka et al. | New dimension for sketches | |
TWI240222B (en) | Method and apparatus for processing graphics perspective transformations | |
Lu et al. | Solid mathematical marbling | |
CN117911575B (zh) | 折线计算优化方法、装置、计算机设备及存储介质 | |
Lin et al. | Progressive mesh metamorphosis | |
Bendels et al. | Image and 3D-Object Editing with Precisely Specified Editing Regions. | |
Varley | SKETCH INPUT OF 3D MODELS-Current Directions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20070730 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |