KR102319568B1 - 3d 모델링 방법 및 이러한 방법을 수행하는 장치 - Google Patents

3d 모델링 방법 및 이러한 방법을 수행하는 장치 Download PDF

Info

Publication number
KR102319568B1
KR102319568B1 KR1020210070310A KR20210070310A KR102319568B1 KR 102319568 B1 KR102319568 B1 KR 102319568B1 KR 1020210070310 A KR1020210070310 A KR 1020210070310A KR 20210070310 A KR20210070310 A KR 20210070310A KR 102319568 B1 KR102319568 B1 KR 102319568B1
Authority
KR
South Korea
Prior art keywords
mesh
editable
module
renderable
modeling
Prior art date
Application number
KR1020210070310A
Other languages
English (en)
Inventor
황재식
Original Assignee
주식회사 트라이폴리곤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 트라이폴리곤 filed Critical 주식회사 트라이폴리곤
Priority to KR1020210070310A priority Critical patent/KR102319568B1/ko
Application granted granted Critical
Publication of KR102319568B1 publication Critical patent/KR102319568B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 3D 모델링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 3D(dimension) 모델링 방법은 에디터블 메쉬 모듈이 에디터블 메쉬를 생성하는 단계, 빌더가 에디터블 메쉬를 삼각면으로 분할하여 렌더러블 메쉬로 생성하는 단계와 렌더러블 메쉬 모듈이 렌더러블 메쉬를 기반으로 3D 모델을 생성하는 단계를 포함할 수 있다.

Description

3D 모델링 방법 및 이러한 방법을 수행하는 장치{Method for 3D(dimension) modeling and apparatus for performing the method}
본 발명은 3D 모델링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 사용자의 3D 모델링을 보다 편리하게 하기 위한 3D 모델링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다.
전세계 게임 시장은 180조원으로 추정되며 전체 모바일 게임의 50% 이상, 스팀 게임의 25% 이상이 유니티(unity) 엔진, 언리얼(unreal) 엔진으로 제작되고 있다. 게다가 실시간 그래픽스 기술의 비약적인 발전으로 게임뿐만 아니라 제조업, 영화, 애니메이션 그리고 건축 등 다양한 방면에서도 이들 엔진이 활발히 사용되고 있다.
하지만, 기존의 유니티, 언리얼 엔진용 모델링 툴은 완성도가 높지 않고 프로토타입핑에 국한되어 있다. 그리고 게임, 영화, 애니메이션 산업에 많이 사용되는 3ds Max와 Maya 등의 3D 모델링 툴은 전문가용이다 보니 배우기가 쉽지 않고 별도의 프로그램이라 게임 엔진과의 데이터 연동에 많은 불편함이 존재한다. 또한 기존 3D 모델링 툴의 모델링 기술은 콘텐츠 개발에 직접 사용될 수 없다.
따라서, 이러한 문제점을 해결하기 위해 리얼타임 렌더링 컨텐츠 제작에 최적화된 3D 모델링 솔루션의 개발이 필요하다. 또한, 차세대 3D 모델링 툴을 개발해 기존의 3ds Max, Maya 등의 외부 모델링 툴을 사용했을 때 발생하는 데이터 익스포트(export)/임포트(import) 문제를 해결하고, 게임 엔진 내에서 누구나 쉽게 로우 폴리곤 모델링부터 하이 폴리곤 모델링까지 할 수 있는 차세대 3D 모델링 툴에 대한 개발이 필요하다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은, 리얼타임 렌더링 컨텐츠 제작에 최적화된 3D 모델링 툴을 제공하는 것을 목적으로 한다.
또한, 본 발명은, 외부 모델링 툴을 사용했을 때 발생하는 데이터 익스포트(export)/임포트(import) 문제를 해결하고, 게임 엔진 내에서 누구나 쉽게 로우 폴리곤 모델링부터 하이 폴리곤 모델링까지 할 수 있는 차세대 3D 모델링 툴을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 실시예에 따르면, 3D(dimension) 모델링 방법은 에디터블 메쉬 모듈이 에디터블 메쉬를 생성하는 단계, 빌더가 상기 에디터블 메쉬를 삼각면으로 분할하여 렌더러블 메쉬로 생성하는 단계와 렌더러블 메쉬 모듈이 상기 렌더러블 메쉬를 기반으로 3D 모델을 생성하는 단계를 포함할 수 있다.
한편, 상기 빌더는 상기 에디터블 메쉬에 대응되어 미리 생성된 캐쉬 버퍼를 기반으로 상기 렌더러블 메쉬의 버퍼인 버텍스 버퍼와 인덱스 버퍼의 데이터를 생성할 수 있다.
또한, 상기 캐쉬 버퍼는 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼와 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼를 포함하고, 상기 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼는 버텍스의 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열을 저장하고, 상기 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼는 페이스 폴리곤을 삼각화한 트라이앵글인덱스(triangleIndices)에 대한 배열을 저장할 수 있다.
본 발명의 다른 실시예에 따르면, 3D(dimension) 모델링을 수행하는 3D 모델링 엔진은 에디터블 메쉬를 생성하기 위해 구현된 에디터블 메쉬 모듈, 상기 에디터블 메쉬를 삼각면으로 분할하여 렌더러블 메쉬로 생성하기 위해 구현된 빌더와 상기 렌더러블 메쉬를 기반으로 3D 모델을 생성하기 위해 구현된 렌더러블 메쉬 모듈을 포함할 수 있다.
한편, 상기 빌더는 상기 에디터블 메쉬에 대응되어 미리 생성된 캐쉬 버퍼를 기반으로 상기 렌더러블 메쉬의 버퍼인 버텍스 버퍼와 인덱스 버퍼의 데이터를 생성할 수 있다.
또한, 상기 캐쉬 버퍼는 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼와 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼를 포함하고, 상기 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼는 버텍스의 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열을 저장하고, 상기 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼는 페이스 폴리곤을 삼각화한 트라이앵글인덱스(triangleIndices)에 대한 배열을 저장할 수 있다.
본 발명에 의하면, 리얼타임 렌더링 컨텐츠 제작에 최적화된 3D 모델링 툴이 제공될 수 있다.
또한, 본 발명에 의하면, 외부 모델링 툴을 사용했을 때 발생하는 데이터 익스포트(export)/임포트(import) 문제를 해결하고, 게임 엔진 내에서 누구나 쉽게 로우 폴리곤 모델링부터 하이 폴리곤 모델링까지 할 수 있는 차세대 3D 모델링 툴이 제공될 수 있다.
도 1은 본 발명의 실시예에 따른 3D 모델링 엔진을 나타낸 개념도이다.
도 2는 본 발명의 실시예에 따른 빌더 모듈의 동작을 나타낸 개념도이다.
도 3은 본 발명의 실시예에 따른 빌더 모듈의 동작을 나타낸 개념도이다.
도 4는 본 발명의 실시예에 따른 커맨드 모듈의 동작을 나타낸 개념도이다.
도 5a 내지 도 5c는 본 발명의 실시예에 따른 에디터블 메쉬 모듈의 기능을 나타낸 개념도이다.
도 6은 본 발명의 실시예에 따른 에디터블 메쉬 모듈의 기능을 나타낸 개념도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여 지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 바람직한 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 3D 모델링 엔진을 나타낸 개념도이다.
도 1을 참조하면, 3D 모델링 엔진은 OS(operating system) 레이어, 게임 엔진 레이어의 상위 계층에 위치할 수 있다.
3D 모델링 엔진은 컨텍스트 모듈(context module)(100), 모드 모듈(mode module)(110), 에디터블 메쉬 모듈(editable mesh module)(120), 빌더 모듈(builder module)(130), 렌더러블 메쉬 모듈(renderable mesh module)(140), 커맨드 모듈(command module)(150), 3rd 파티 모듈(3rd party module)(160), 유틸리티 모듈(utility module)(165), 툴 모듈(tool module)(170), 모티파이어 모듈(modifier module)(180)를 포함할 수 있다.
본 발명의 실시예에 따른 3D 모델링 엔진은 유니티 엔진, 언리얼 엔진의 에디터 플러그인으로 작동할 뿐만 아니라 유니티, 언리얼 엔진로 만들어진 어떠한 형태의 어플리케이션에서도 일관되게 동작할 수 있다.
컨텍스트 모듈(context module)(100)은 에디터 콘텍스트 모듈(editor context module)(103), 어플리케이션 콘텍스트 모듈(application context module)(106)을 포함할 수 있다. 컨텍스트 모듈(context module)(100)은 게임 엔진 문맥과 3D 모델링 엔진 문맥 관련 처리를 위해 구현될 수 있다.
컨텍스트 모듈(100)의 게임 엔진 문맥 처리는 게임 엔진의 종속적인 요청에 대한 처리일 수 있다. 또한, 게임 엔진 문맥 처리는 요청에 따른 결과를 반환하는 처리, 카메라, 화면, 데이터의 입출력과 관련된 처리를 포함할 수 있다. 또한, 컨텍스트 모듈(100)의 게임 엔진 문맥 처리는 3D 모델링 엔진 기반의 에디터, 어플리케이션 별로 3D 모델링 엔진 콘텍스트 클래스를 상속받아 메서드를 재정의하여 해당 문맥에 맞게 처리를 포함할 수 있다.
컨텍스트 모듈(100)의 3D 모델링 엔진 문맥 처리는 현재 활성화되어 에디팅되고 있는 오브젝트 관련 정보를 가지고 요청시 리턴 처리를 하는 것을 포함할 수 있다. 컨텍스트 모듈(100)의 3D 모델링 엔진 문맥 처리를 통해 활성화된 오브젝트와 관련된 에디터블 메쉬(EdMesh), 셀렉션(Selection), 모디파이어(Modifier) 모듈, 툴(Tool) 모듈에 대한 정보 등이 획득되고, 획득된 정보는 컨텍스트 모듈에 저장될 수 있다.
모드 모듈(110)은 게임 엔진에서 이벤트 발생시 이벤트 정보를 3D 모델링 엔진으로 전송하여 처리하기 위해 구현될 수 있다. 모드 모듈(110)은 3D 모델링 엔진의 에디터, 어플리케이션 각각의 문맥에 맞도록 구현된 에디터 모드 모듈(113) 및 어플리케이션 모드 모듈(116)을 포함할 수 있다.
이벤트 정보를 발생시키는 이벤트는 입력 이벤트(키보드, 마우스, 터치 스크린 등등), 출력 이벤트(화면에 출력될 타이밍에 호출), 업데이트 이벤트(매 틱마다 호출)를 포함할 수 있다.
에디터블 메쉬 모듈(editable mesh module)(120)은 고용량의 3D 메쉬(Mesh)의 실시간 에디팅을 위해 구현될 수 있다.
에디터블 메쉬 모듈(120)은 하위 모듈로서 에드메쉬(EdMesh)(121), 이터레이터(iterators)(122), 트랙커(tracker)(123), 헬퍼(helper)(124), 피커(picker)(125), 오버레이(overlay) (126), 셀렉션(selection)(127), 하이라이트(highlight)(128)를 포함할 수 있다.
에드메쉬(121)는 메쉬를 구성하는 기본 엘레멘트(element)인 버텍스(Vertex), 엣지(Edge), 페이스(Face)를 연결 순환 메쉬구조(connectivity cycle mesh structure)를 이용해서 효율적으로 관리하기 위해 구현될 수 있다.
이터레이터(122) 및 트랙커(123)는 각 엘레멘트를 손쉽게 순회하기 위해 구현될 수 있다.
헬퍼(124)는 버텍스, 엣지 및 페이스를 좀 더 쉽게 조작하기 위해 구현될 수 있다.
오버레이(126)는 수만, 수십만개의 버텍스, 엣지, 페이스를 빠르게 시각화하기 위해 구현될 수 있다
피커(125)는 고용량의 엘레멘트를 부하없이 빠르게 선택하기 위해 구현될 수 있다.
셀렉션(127)은 마지막으로 선택된 엘레멘트를 효율적으로 관리하기 위해 구현될 수 있다.
하이라이트(128)는 커서가 가리키는 엘레멘트를 관리하기 위해 구현될 수 있다.
구체적인 에디터블 메쉬 모듈(120)의 기능은 후술된다.
빌더 모듈(builder module)(130)은 에디터블 메쉬 모듈(120)을 기반으로 생성된 에디터블 메쉬를 렌더러블 메쉬로 변환하여 렌더러블 메쉬 모듈(140)로 전달하기 위해 구현될 수 있다. 빌더 모듈(130)은 에디터블 메쉬 데이터를 실제 렌더링 가능한 데이터 포맷인 렌더러블 메쉬 데이터로 변화시킬 수 있다. 구체적으로 빌더 모듈(130)은 에디터블 메쉬의 지오메트리 데이타를 렌더러블 메쉬 형태로 변환할 수 있다.
본 발명의 실시예에 따르면, 에디터블 메쉬는 컨벡스 헐(convex hull)뿐만 아니라 컨케이브(concave) 폴리곤 형태의 면을 가질 수 있을 뿐만 아니라 구멍이 있는 폴리곤까지 처리할 수 있다. 하지만, 위와 같은 폴리곤 형태의 면은 바로 렌더링될 수 없기 때문에 렌더링 가능한 형태인 삼각형 폴리곤으로 변환되는 과정이 빌더 모듈에서 수행될 수 있다. 기존의 3D 모델링 엔진의 경우, 컨벡스 헐(convex hull), 컨케이브(concave) 폴리곤 형태의 면, 구멍이 있는 폴리곤에 대한 처리가 어려웠으나, 본 발명에서는 에디터블 메쉬 모듈(120), 빌더 모듈(130), 렌더러블 메쉬 모듈(140)를 기반으로 이러한 다양한 형태의 3D 모델에 대한 처리가 가능하다.
구체적인 빌더 모듈(130)의 동작은 후술된다.
렌더러블 메쉬 모듈(140)은 빌더 모듈(130)로부터 수신한 렌더러블 메쉬 데이터를 저장할 수 있다.
커맨드 모듈(command module)(150)은 에디터블 메쉬를 조작하는 다양한 방식을 커맨드라는 디자인 패턴을 사용해서 모듈화한 것이다.
에디터블 메쉬를 조작하는 방법은 두 가지이다. 제1 조작 방법은 에디터블 메쉬에서 제공하는 메서드를 직접 호출하는 방법이고 제2 조작 방법은 커맨드를 사용하는 것이다.
에디터블 메쉬에서 제공하는 메서드를 직접 호출해서 조작하기 위해서 에디터블 메쉬의 아키텍처에 대한 깊은 이해가 밑바탕되어야 한다. 그리고, 에디터블 메쉬에서 제공하는 메서드를 직접 호출하는 방식은 언두(Undo)/리두(Redo)를 지원하지 않기 때문에 변경된 사항을 되돌리는 루틴도 직접 구현을 해주어야 한다. 따라서, 제2 조작 방법인 커맨드를 사용하는 방식이 필요하다.
커맨드 방식을 사용하면 에티터블 메쉬를 다루는 많은 기능이 쉽게 모듈화될 수 있고, 에디터블 메쉬를 변경되기 전후로 되돌리는 것도 함수 호출 한번으로 하는 것이 가능하다. 그리고 커맨드 방식은 복수개의 커맨드를 다시 하나의 커맨드로 묶어서 단일한 단위로 수행할 수 있도록 한다.
커맨드는 에디터블 메쉬의 조작뿐만 아니라 실행취소(Undo)와 재실행(Redo)을 필요로 하는 모든 루틴에서 활용할 수 있다. 가령 툴(Tool) 모듈이나 모디파이어(Modifier) 모듈의 변경에도 커맨드 방식이 사용될 수 있다.
3rd 파티 모듈(160)은 라이브러리의 제공을 위해 구현될 수 있다. 3rd 파티 모듈(160)은 픽사(Pixar)에 개발한 지오메트리를 하드웨어 가속을 이용해서 분할(Subdivide) 해주는 라이브러리(OpenSubdiv), 다각형을 정점 추가 없이 삼각화(Triangulation) 시켜주는 라이브러리(poly2tri), 2D 불린(Boolean) 연산 라이브러리(clipper) 등을 제공할 수 있다.
유틸리티 모듈(165)은 3D 모델링 엔진에서 전역적으로 사용할 수 있는 유틸리티 함수를 모아놓은 모듈이다.
툴 모듈(170)은 모디파이어 모듈(180)과는 반대로 파괴적(destructive) 모델링 방식인 메쉬에 직접 변형을 가하는 모델링을 수행하기 위해 구현될 수 있다. 툴 모듈(170)은 하위 모듈로 툴(tool)(173), 툴 세트(tool set)(176), 툴 디스크립션(tool description)(179)를 포함할 수 있다.
툴(173) 상에는 모든 툴 클래스의 최상위 부모 클래스로 공통 인터페이스가 정의되고, 툴(173)을 상속받은 하위 클래스가 공통 인터페이스를 재정의(override)해서 고유한 기능을 구현할 수 있다.
툴(173)은 에디터 모드에서 발생한 키보드, 마우스 이벤트를 재정의된 툴의 메서드에서 감지할 수 있어서 유저의 입력에 따른 에디터블 메쉬를 수정할 수 있다. 이러한 입력에 따른 에디터블 메쉬의 수정은 커맨드 객체를 통해 이루어져서 실행 취소(undo)와 재실행(redo)를 기본적으로 보장한다.
각 툴(173)의 메타 정보는 툴 디스크립션(179)를 통해 기술될 수 있다. 각 툴(173)의 메타 정보는 툴의 별칭, 툴팁, 아이콘 파일명, 버튼 이름, UI(user interface) 버튼 또는 아이콘으로 배치될 때 순서 등을 포함할 수 있다. 각 툴의 메타 정보는 툴 데이타베이스에 저장되어서 쉽게 활용할 수 있다.
툴 세트(176)는 원하는 툴들만 모아서 사용 가능하게 한다. 툴 세트(176)를 기반으로 툴 구성을 자유자재로 변경하는 것이 가능하다. 일반적으로 모디파이어 모듈(180)이 툴 세트(176)의 인스턴스를 소유하고 있다. 각 모디파이어 모듈(180)에 필요한 툴들로 툴 세트(176)가 구성되고 모디파이어 모듈(180)이 선택되면 해당 모디파이어의 툴 세트(176) 안의 툴들만 활성화되어 노출되기 때문에 각 모디파이어마다 고유한 툴 구성이 가능하다.
모티파이어 모듈(modifier module)(180)은 비파괴적(Non-destructive) 모델링을 위해 구현될 수 있다.
모디파이어(181)에 대한 정보는 모디파이어 세트(modifier Set)(182)에 저장되며 상위 모디파이어 결과에 변형을 가할 수 있다. 모디파이어(181)에 의한 변형은 모디파이어 세트(182)에 저장된 순서에 영향을 받는다. 따라서, 모피파이어 세트(182) 내의 모디파이어(181)의 순서를 변경하거나 새로운 모디파이어(181)를 삽입, 추가, 제거하는 것만으로도 에디터블 메쉬를 직접 에디팅하지 않고 지오메트리를 변경하는 것이 가능하다.
이러한 방법을 통해 원본 메쉬를 직접 수정하지 않고, 원본 메쉬의 원형을 보존하면서 메쉬의 편집이 가능하도록 한다. 그리고 모디파이어(180)를 접으면(collapse) 접히는 곳까지 적용된 변화가 메쉬 상에 그대로 남을 수 있다.
프로세서(미도시)는 컨텍스트 모듈(context module), 모드 모듈(mode module), 에디터블 메시 모듈(editable mesh module), 빌더 모듈(builder module), 렌더러블 메시 모듈(renderable mesh module), 커맨드 모듈(command module), 3rd 파티 모듈(3rd party module), 유틸리티 모듈(utility module), 툴 모듈(tool module), 모티파이어 모듈(modifier module)의 동작을 제어하기 위해 구현될 수 있다.
도 2는 본 발명의 실시예에 따른 빌더 모듈의 동작을 나타낸 개념도이다.
도 2에서는 에디터블 메쉬를 렌더러블 메쉬로 변환하기 위한 빌더 모듈의 동작이 개시된다.
도 2를 참조하면, 에디터블 메쉬(200)는 버텍스, 엣지, 루프 그리고 페이스 등의 엘레멘트로 이루어지고, 편집에 최적화된 자료 구조를 가질 수 있다. 엘레멘트에 대한 정보는 메모리 풀로 관리될 수 있다.
에디터블 메쉬(200)는 편집에는 최적화되었으나, 화면에 표시하기에는 적합하지 않은 구조를 가지고 있다. 따라서, 에디터블 메쉬(200)를 화면에 렌더링하기 위해서 적합한 자료 구조인 렌더러블 메쉬(250)가 생성되어야 한다.
즉, 에디터블 메쉬(200)는 어떠한 형태의 폴리곤도 처리할 수 있는 능력을 가지고 있다. 하지만, 폴리곤이 렌더링되기 위해서는 삼각면으로 분할된 후 렌더러블 메쉬(250)에 저장되어야 하고, 빌더(230)는 에디터블 메쉬(200)를 삼각면으로 분할하여 렌더러블 메쉬(250)를 생성할 수 있다.
에디터블 메쉬(200)는 보통 외부의 이벤트 처리를 담당하는 툴 모듈 상에서 커맨드를 실행시켜서 수정될 수 있다. 에디터블 메쉬(200)는 새로운 버텍스, 엣지, 페이스를 추가한다던지 기존의 엘레멘트를 제거한다던지 아니면 버텍스를 움직이는 등 다양한 방법으로 수정될 수 있다. 수정시 메모리 풀에서 버텍스 배열이나 연결 구조가 변경되었을 때와 그렇지 않을 때가 구분되어야만 한다.
메모리 풀에서 버텍스 배열이나 연결 구조가 바뀌는 경우는 토폴로지(Topology)가 변한 것이다. 메모리 풀에서 버텍스 배열이나 연결 구조가 바뀌지 않는 경우(예를 들어, 일부 버텍스의 내용(예를 들어, 버텍스의 위치 등) 바뀌었을 경우), 토폴로지가 변하지 않은 것이다. 토폴로지는 버텍스, 엣지, 페이스 등의 연결 구조이고, 토폴로지인 연결 구조 자체가 변하는 경우와 토폴로지인 연결 구조 자체가 변하지 않는 경우로 구분될 수 있다.
렌더러블 메쉬(250)에 대한 정보는 버텍스 버퍼와 인덱스 버퍼 상에 저장될 수 있다. 버텍스 버퍼는 버텍스 정보에 관련된 버텍스 배열에 대한 정보를 포함할 수 있고, 인덱스 버퍼는 삼각면 배열로 버텍스 배열의 인덱스에 대한 정보를 포함할 수 있다.
빌더(230)는 에디터블 메쉬(200)를 기반으로 렌더러블 메쉬(250)의 버퍼인 버텍스 버퍼와 인덱스 버퍼를 채우기 위해 에디터블 메쉬(200)에 미리 생성된 캐쉬 버퍼(210, 220)를 사용할 수 있다.
본 발명의 캐쉬 버퍼는 루프 메모리 풀(EdLoopPool)(210)의 캐쉬 버퍼, 페이스 메모리 풀(EdFacePool)(220)의 캐쉬버퍼를 포함할 수 있다.
루프 메모리 풀(EdLoopPool)(210)의 캐쉬 버퍼는 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열을 저장할 수 있고, 페이스 메모리 풀(EdFacePool)(220)의 캐쉬 버퍼는 트라이앵글인덱스(triangleIndices)에 대한 배열을 저장할 수 있다.
루프 메모리 풀(EdLoopPool)(210)의 캐쉬 버퍼의 포지션(Positions), 노말(Normals), 유브이(UVs)는 각각 버텍스의 위치, 노멀, UV 좌표에 대한 배열에 대한 정보를 저장하고, 페이스 메모리 풀(EdFacePool)(220)의 캐쉬 버퍼의 triangleIndices는 페이스 폴리곤을 삼각화한 결과에 대한 정보를 저장할 수 있다.
에디터블 메쉬(200)를 구성하는 엘레멘트인 루프(Loop)는 3D 모델의 페이스를 구성하는 버텍스와 엣지 아이디에 대한 정보 및 페이스의 방향성에 대한 정보까지 담고 있는 데이타 구조이다. 따라서, 루프를 순회하면 페이스의 모든 버텍스가 순서대로 참조될 수 있다. 일반적으로 렌더러블 메쉬(250) 생성시 페이스 단위로 처리된다. 그리고 렌더러블 메쉬(250)의 버텍스는 위치뿐만 아니라 노말과 UV 좌표의 속성도 가지고 있어서 이 속성 중 하나라도 다르다면 서로 다른 버텍스로 처리되기 때문에 루프의 개수만큼의 렌더링용 캐쉬 버텍스 버퍼 크기가 할당될 수 있다.
에디터블 메쉬의 변화시 루프 메모리 풀(EdLoopPool)(210), 페이스 메모리 풀(EdFacePool)(220)에 저장된 캐쉬 데이터의 일부 또는 전체가 갱신될 수 있다.
빌더(230)의 에디터블 메쉬(200)의 렌더러블 메쉬(250)로의 빌드 동작시 성능 저하의 최소화를 위해 별다른 가공 없이 포지션(Positions), 노말(Normals), 유브이(UVs) 배열은 바로 렌더러블 메쉬(250)의 해당 버퍼로 바로 할당될 수 있다.
또한, 빌더(230)의 에디터블 메쉬(200)의 렌더러블 메쉬(250)로의 빌드 동작시 triangleIndices 배열은 각 페이스별 삼각화된 인덱스를 렌더러블 메쉬(250)의 triangles 배열에 복사될 수 있다.
빌더(230)는 이러한 방식을 기반으로 에디터블 메쉬(200)를 빠르게 렌더러블 메쉬(250)로 변화시킬 수 있다.
도 3은 본 발명의 실시예에 따른 빌더 모듈의 동작을 나타낸 개념도이다.
도 3에서는 외부 요청을 기반으로 에디터블 메쉬 상의 변화 정보가 렌더러블 메쉬 정보로 업데이트되는 과정이 개시된다.
도 3을 참조하면, 툴 모듈은 이벤트 정보를 수신할 수 있다(단계 S310).
툴 모듈은 파괴적 모델링 방식인 메쉬에 직접 변형을 가하는 모델링을 수행할 수 있다. 툴 모듈은 메쉬에 직접 변형을 가하는 모델링을 위한 이벤트 정보를 수신할 수 있다.
툴 모듈은 메쉬에 직접 변형을 가하는 모델링을 위한 명령을 생성하여 커맨드 모듈로 전송하고(단계 S320), 빌더 모듈로 렌더러블 메쉬를 새롭게 빌딩할 것을 지시하는 빌딩을 요청할 수 있다(단계 S330).
커맨드 모듈은 에디터블 메쉬 모듈로 에디터블 메쉬의 업데이트를 요청할 수 있다(단계 S340).
구체적으로 커맨트 모듈은 툴 모듈로부터 메쉬에 직접 변형을 가하는 모델링을 위한 명령을 수신하고, 에디터블 메쉬 모듈로 에디터블 메쉬의 업데이트를 요청할 수 있다. 에디터블 메쉬 모듈은 이벤트 정보를 기반으로 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼 상의 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열, 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼 상의 triangleIndices에 대한 배열에 대한 업데이트를 진행할 수 있다.
빌더 모듈은 툴 모듈로부터 수신한 빌딩 요청을 기반으로 렌더러블 메쉬 모듈로 렌더러블 메쉬의 업데이트를 요청할 수 있다(단계 S350).
렌더러블 메쉬 모듈은 이벤트 정보를 기반으로 이벤트 정보에 대응되는 렌더러블 메쉬의 업데이트를 진행할 수 있다.
도 4는 본 발명의 실시예에 따른 커맨드 모듈의 동작을 나타낸 개념도이다.
도 4에서는 에디터블 메쉬를 조작하기 위한 커맨드 모듈의 동작이 개시된다.
도 4를 참조하면, 에디터블 메쉬를 조작하는 방법은 크게 두 가지가 있다. 첫번째 방법은 에디터블 메쉬에서 제공하는 메서드를 직접 호출하는 방법이고 다른 하나는 커맨드를 사용하는 방법이다.
전술한 바와 같이 에디터블 메쉬의 메서드를 직접 호출하고 조작하기 위해서는 에디터블 메쉬의 아키텍처에 대한 깊은 이해가 밑바탕 되어야 해서 전문가가 아닌 경우 사용이 어렵다. 또한, 이러한 방법은 실행 취소(Undo)/재실행(Redo)를 지원하지 않기 때문에 변경된 사항을 되돌리는 루틴도 직접 구현해야 한다.
이러한 단점을 해결하기 위해서 본 발명에서는 커맨드 모듈을 기반으로 에디터블 메쉬가 조작될 수 있다. 커맨드 모듈은 커맨드라는 디자인 패턴을 사용해서 모듈화한 것이다. 커맨드를 사용하면 에디터블 메쉬를 다루는 많은 기능을 쉽게 모듈화할 수 있다. 또한, 커맨드를 통해 에디터블 메쉬를 변경되기 전후로 되돌리는 것도 함수 호출 한번으로 수행될 수 있다. 그리고 복수개의 커맨드를 다시 하나의 커맨드로 묶어서 단일한 단위로 수행할 수 있도록 한다.
또한, 커맨드는 에디터블 메쉬의 조작 뿐만 아니라 실행 취소(Undo)와 재실행(Redo)이 필요한 모든 루틴에서 활용될 수 있다.
예를 들어, 툴 모듈 또는 모디파이어 모듈을 기반으로 한 변경에서도 커맨드 방식이 사용될 수 있다.
도 4에서는 3D 모델링 엔진의 커맨드 클래스 계층도가 개시된다.
일반적으로 커맨드는 다음의 두 가지 타입으로 나뉜다.
커맨드 모듈의 커맨드는 비조합 커맨드와 조합 커맨드로서 2가지 타입(제1 타입 커맨드(410) 및 제2 타입 커맨드(420))으로 나뉠 수 있다.
제1 타입 커맨드(410) : 비조합 커맨드에서 직접 상속된 커맨드
제2 타입 커맨드(420) : 조합 커맨드에서 상속된 커맨드
제1 타입 커맨드(410)는 구현에 대한 실질적인(concrete) 코드를 내장하고 있고 제2 타입 커맨드(420)는 이미 만들어진 커맨드를 어떻게 조합할지에 대한 코드로 구성될 수 있다.
커맨드는 크게 세 가지 액션으로 이루어질 수 있고, 세가지 액션은 실행(execute), 실행 취소(undo), 재실행(redo)를 포함할 수 있다.
제1 타입 커맨드(410)는 실행과 실행 취소에 대한 코드를 직접 작성하고 재실행의 경우 실행부 코드로 대신할 수 있다.
제2 타입 커맨드(420)는 실행의 코드만 직접 작성을 한다. 하지만 실행 취소는 조합한 커맨드를 거꾸로 순회하며 각 커맨드의 Undo 함수를 호출하는 식으로 동작하고 재실행의 경우는 조합된 순서로 각 커맨드 Redo 함수를 호출하는 방식으로 동작을 해서 별도의 코드 작성이 없이 생성될 수 있다.
본 발명의 실시예에 따른 3D 모델링 엔진은 커맨드 모듈을 기반으로 커맨드를 편리하게 사용하기 위한 특별한 인터페이스를 제공하여 바로 커맨드의 생성과 실행을 하나의 함수 호출만으로도 가능하게 한다. 각각의 커맨드는 스태틱(static) 형식의 크리에이트(create) 메서드를 포함하고 있고 이를 호출해서 커맨드 객체를 바로 생성해서 사용할 수 있다. 예를 들어, CreateVertexCMD.Create() 메서드를 사용해서 특정 위치의 버텍스를 생성하는 커맨드를 생성하고 바로 실행시킬 수 있다.
그리고 커맨드는 생성(Created), 실행(Executed), 실행 취소(Undone), 재실행(Redone) 상태 중 하나를 가진다.
이러한 상태는 위에서 설명한 액션에 따라 커맨드 생성(created) 이후, 커맨드 실행(excuted)이 수행될 수 있다. 커맨드 실행(excuted) 이후, 실행 취소(undone)가 될 수 있다. 실행 취소(undone) 이후, 재실행(redone)이 수행되고, 재실행(redone) 이후, 실행 취소(undone)가 수행될 수 있다.
본 발명의 실시예에 따른 3D 모델링 엔진에서 커맨드를 사용할 때의 장점은 아래와 같다.
실행되는 기능을 일관된 인터페이스로 캡슐화할 수 있다. 무슨 기능이든지 상관없이 커멘드를 상속 받은 클래스로 모듈화하면 실행(Execute) 메서드 호출로 해당 기능을 실행할 수 있고 실행 취소와 재실행도 실행 취소(Undo)/재실행(Redo) 메서드 호출로 바로 수행할 수 있다.
또한, 실행되는 기능이 실체가 있는 데이터로 저장될 수 있다. 기능이 클래스 객체로 저장되기 때문에 기능에 필요한 입력 인자 뿐만 아니라 이를 실행하는 부분과 실행 취소 부분까지 모듈화될 수 있다. 따라서, 실행되는 기능이 쉽게 재사용될 수 있을 뿐만 아니라 시리얼라이제이션될 수 있기 때문에 데이터처럼 기능 자체가 저장되고 전송될 수 있다.
도 5a 내지 도 5c는 본 발명의 실시예에 따른 에디터블 메쉬 모듈의 기능을 나타낸 개념도이다.
도 5a 내지 도 5c에서는 에디터블 메쉬에서 편집 가능한 연결 순환 메쉬 구조가 개시된다.
도 5a 내지 도 5c를 참조하면, 에디터블 메쉬 모듈에서는 연결 순환 메쉬 구조를 기반으로 버텍스, 엣지, 페이스의 연결 정보를 빠르게 탐색하기 위해서 연결 순환 메쉬 구조가 사용될 수 있다.
도 5a에서는 원형 순환 리스트(disk cycle list)가 개시된다.
원형 순환 리스트는 버텍스에 연결된 모든 엣지를 순환하는 리스트이다.
버텍스는 자신을 시작점이나 끝점으로 참조하는 엣지들 중 하나의 엣지 아이디를 가진다. 버텍스가 가지는 엣지 아이디에 대응되는 엣지를 시작으로 버텍스에 연결된 모든 엣지에 대한 순회가 가능하다. 버텍스의 위치에 대한 정보는 버텍스 메모리 풀에서 별도의 배열에 저장된다.
엣지는 엣지를 구성하는 두 버텍스의 아이디 그리고 두 버텍스 각각에서 원형 순환 리스트를 이루는 이전 엣지와 다음 엣지의 아이디에 대한 정보를 가진다.
즉, 제1 버텍스(500)가 선택되는 경우, 제1 버텍스(500)를 시작점이나 끝점으로 참조하는 엣지들 중 하나인 제1 엣지(510)의 아이디에 대한 정보가 탐색된다. 탐색된 제1 엣지(510)에는 제1 엣지(510)를 구성하는 두 버텍스(500, (505))의 아이디와 두 버텍스 각각에서 원형 순환 리스트를 이루는 이전 엣지와 다음 엣지의 아이디에 대한 정보가 매핑되어 있다. 따라서, 제1 엣지(510)와 원형 순환 리스트를 이루는 다음 엣지의 아이디(예를 들어, 제2 엣지(520)의 아이디)를 기반으로 제2 엣지(520)가 탐색될 수 있다.
제2 엣지(520)의 탐색 이후, 제2 엣지(520)와 원형 순환 리스트를 이루는 다음 엣지의 아이디(예를 들어, 제3 엣지의 아이디)를 기반으로 제3 엣지(530)가 탐색될 수 있다. 이러한 방식으로 제1 엣지, 제2 엣지, ?, 제n 엣지로 순차적으로 버텍스에 연결된 모든 엣지가 순환될 수 있다.
도 5b는 방사 순환 리스트(radical cycle list)이다.
방사 순환 리스트는 엣지를 포함하는 모든 페이스를 순환하는 리스트이다.
전술한 바와 같이 엣지는 엣지를 구성하는 두 버텍스의 아이디와 두 버텍스 각각에서 원형 순환 리스트를 이루는 이전 엣지와 다음 엣지의 아이디에 대한 정보를 가질 수 있다. 또한, 엣지(540)는 엣지(540)에 연결된 루프(550, 560)에 관련된 루프 아이디에 대한 정보를 가질 수 있다.
루프(550, 560)는 루프(550, 560)가 가리키는 엣지(540)를 포함하는 페이스(555, 565)를 순회할 수 있는 방사 순환 리스트의 이전 루프 아이디와 다음 루프 아이디에 대한 정보를 가질 수 있다.
따라서, 하나의 엣지(540)가 선택되는 경우, 엣지(540)와 연결된 루프(550, 560)에 대한 정보가 획득 가능하다. 즉, 방사 순환 리스트를 기반으로 하나의 엣지(540)를 포함하는 모든 페이스(555, 565)를 순환하고, 하나의 엣지(540)를 포함하는 모든 페이스(555, 565)에 대한 정보가 획득될 수 있다.
원형 순환 리스트에서 엣지를 회전하는 순서와 방사 순환 리스트에서 페이스를 회전하는 순서는 정해져 있지 않을 수 있다. 도 5(b)와 같이 가까운 것부터 시계 방향 혹은 반시계 방향으로 회전하는 것처럼 일정한 규칙이 따로 존재하지 않을 수 있다.
도 5c는 고리 순환 리스트(loop cycle list)이다.
고리 순환 리스트는 페이스(575, 585)를 구성하는 루프(570, 580)를 순환하는 리스트이다. 각각의 루프(570, 580)는 방향성을 가지고 인접한 루프를 참조하며 루프(570, 580)에 대응하는 버텍스와 엣지도 참조할 수 있다. 루프(570, 580)를 차례로 순회하면 페이스(575, 585)를 이루는 버텍스와 엣지도 역시 차례로 순회될 수 있다.
루프(570, 580)는 자신이 속한 페이스(575, 585)의 아이디 그리고 루프(570, 580)가 가리키는 버텍스와 엣지 아이디를 가질 수 있다. 또한, 루프(570, 580)는 방사 순환 리스트와 고리 순환 리스트를 위한 별도의 루프 아이디 정보를 가질 수 있다. 구체적으로 루프(570, 580)는 루프(570, 580)에 의해 지시되는 엣지를 포함하는 페이스를 순회할 수 있는 방사 순환 리스트의 이전 루프 아이디와 다음 루프 아이디를 가질 수 있다. 또한, 루프(570, 580)는 페이스(575, 585)를 구성하는 엣지와 버텍스를 순차적으로 순회하기 위한 고리 순환 리스트의 이전 루프 아이디와 다음 루프 아이디를 가질 수 있다.
본 발명에서는 위와 같은 원형 순환 리스트, 방사 순환 리스트 및 고리 순환 리스트를 기반으로 버텍스, 엣지, 페이스의 연결 정보에 대한 빠르게 탐색이 가능하다.
도 6은 본 발명의 실시예에 따른 에디터블 메쉬 모듈의 기능을 나타낸 개념도이다.
도 6에서는 에디터블 메쉬에서 구멍이 있는 페이스를 표현하기 위한 자료 구조가 개시된다.
도 6을 참조하면, 에디터블 메쉬의 페이스는 기본적으로 구멍을 가질 수 있다. 본 발명에서는 페이스 상의 구멍을 관리하기 위한 메모리 풀이 별도로 존재하고, 페이스의 각 구멍마다 고유한 홀(hole) 아이디가 할당될 수 있다. 페이스 상에서 홀 아이디를 통해 구멍에 접근이 가능하다. 페이스 상의 구멍의 형태 역시 단순 다각형의 형태를 가지며 페이스처럼 고리 순환 리스트 자료 구조로 표현될 수 있다.
하나의 페이스(600) 상에 제1 홀(610), 제2 홀(620) 및 제3 홀(630)이 위치할 수 있고, 제1 홀(610), 제2 홀(620) 및 제3 홀(630) 각각에 대한 홀 아이디가 할당될 수 있다.
제1 홀(610), 제2 홀(620) 및 제3 홀(630) 각각은 전술한 고리 순환 리스트(loop cycle list)로 표현될 수 있다. 제1 홀(610), 제2 홀(620) 및 제3 홀(630) 각각에 대응되는 루프는 방향성을 가지고 인접한 홀의 루프를 참조하며 루프에 대응하는 버텍스와 엣지도 참조할 수 있다. 페이스 상에 홀에 대응되는 루프가 차례로 순회되면서 페이스 상에 위치한 홀에 대한 정보가 표현될 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.

Claims (6)

  1. 3D(dimension) 모델링 방법은,
    에디터블 메쉬 모듈이 에디터블 메쉬를 생성하는 단계;
    빌더가 상기 에디터블 메쉬를 삼각면으로 분할하여 렌더러블 메쉬로 생성하는 단계; 및
    렌더러블 메쉬 모듈이 상기 렌더러블 메쉬를 기반으로 3D 모델을 생성하는 단계를 포함하되,
    상기 빌더는 상기 에디터블 메쉬에 대응되어 미리 생성된 캐쉬 버퍼를 기반으로 상기 렌더러블 메쉬의 버퍼인 버텍스 버퍼와 인덱스 버퍼의 데이터를 생성하고,
    상기 캐쉬 버퍼는 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼와 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼를 포함하고,
    상기 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼는 버텍스의 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열을 저장하고,
    상기 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼는 페이스 폴리곤을 삼각화한 트라이앵글인덱스(triangleIndices)에 대한 배열을 저장하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 삭제
  4. 3D(dimension) 모델링을 수행하는 3D 모델링 엔진은,
    에디터블 메쉬를 생성하기 위해 구현된 에디터블 메쉬 모듈;
    상기 에디터블 메쉬를 삼각면으로 분할하여 렌더러블 메쉬로 생성하기 위해 구현된 빌더; 및
    상기 렌더러블 메쉬를 기반으로 3D 모델을 생성하기 위해 구현된 렌더러블 메쉬 모듈을 포함하되,
    상기 빌더는 상기 에디터블 메쉬에 대응되어 미리 생성된 캐쉬 버퍼를 기반으로 상기 렌더러블 메쉬의 버퍼인 버텍스 버퍼와 인덱스 버퍼의 데이터를 생성하고,
    상기 캐쉬 버퍼는 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼와 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼를 포함하고,
    상기 루프 메모리 풀(EdLoopPool)의 캐쉬 버퍼는 버텍스의 포지션(Positions), 노말(Normals), 유브이(UVs)에 대한 배열을 저장하고,
    상기 페이스 메모리 풀(EdFacePool)의 캐쉬 버퍼는 페이스 폴리곤을 삼각화한 트라이앵글인덱스(triangleIndices)에 대한 배열을 저장하는 것을 특징으로 하는 3D 모델링 엔진.
  5. 삭제
  6. 삭제
KR1020210070310A 2021-05-31 2021-05-31 3d 모델링 방법 및 이러한 방법을 수행하는 장치 KR102319568B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210070310A KR102319568B1 (ko) 2021-05-31 2021-05-31 3d 모델링 방법 및 이러한 방법을 수행하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210070310A KR102319568B1 (ko) 2021-05-31 2021-05-31 3d 모델링 방법 및 이러한 방법을 수행하는 장치

Publications (1)

Publication Number Publication Date
KR102319568B1 true KR102319568B1 (ko) 2021-11-01

Family

ID=78519015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210070310A KR102319568B1 (ko) 2021-05-31 2021-05-31 3d 모델링 방법 및 이러한 방법을 수행하는 장치

Country Status (1)

Country Link
KR (1) KR102319568B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018533099A (ja) * 2015-09-24 2018-11-08 カリフォルニア インスティチュート オブ テクノロジー 三次元ディスプレイを用いたデータ可視化システム及び方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018533099A (ja) * 2015-09-24 2018-11-08 カリフォルニア インスティチュート オブ テクノロジー 三次元ディスプレイを用いたデータ可視化システム及び方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BMesh Sturcture. [online], 2020년 3월, 인터넷: <URL: https://wiki.blender.org/wiki/Source/Modeling/BMesh/Design> 1부.* *
폴리곤, "UModeler Menu Menual", 2018년 12월, 인터넷: <URL: https://cafe.naver.com/tripolygon/43> 1부.* *

Similar Documents

Publication Publication Date Title
Lipp et al. Interactive visual editing of grammars for procedural architecture
CN103914865B (zh) 形成几何图案的面的组
US8983805B2 (en) Modeled object updating
JP6498872B2 (ja) 2dビューを用いた3dモデル化オブジェクトの設計
CN105761303A (zh) 在3d建模组件上创建包围盒
CN104750907A (zh) 三维建模对象的设计
CN102142152A (zh) 用于在计算机屏幕上显示对象的方法、装置和程序
EP2911072B1 (en) Designing a physical system constrained by equations
Li Pm4vr: A scriptable parametric modeling interface for conceptual architecture design in vr
US20200262073A1 (en) Engineering autonomous systems with reusable skills
KR102319566B1 (ko) 3d 모델링 데이터 관리 방법 및 이러한 방법을 수행하는 장치
Audrito et al. Extensible 3D simulation of aggregated systems with FCPP
US11714691B2 (en) Extensible command pattern
Conlan The blender python API: Precision 3D modeling and add-on development
KR102319568B1 (ko) 3d 모델링 방법 및 이러한 방법을 수행하는 장치
Koh Voxel synthesis for architectural design
CN108553900B (zh) 一种基于ue引擎的可叠加存储反复使用的方法
KR102055952B1 (ko) 오브젝트들의 원형 스태거드 패턴의 설계
US11625900B2 (en) Broker for instancing
Vilgertshofer et al. A graph transformation based method for the semi-automatic generation of parametric models of shield tunnels
Nieto et al. Abstracting rigging concepts for a future proof framework design
US8682464B2 (en) System and method for generating a three-dimensional image
CN109859321B (zh) 一种基于Unity的无缝贴花创建方法及工具
Revie Designing a Data-Driven Renderer
KR102488877B1 (ko) 모델 기반 3차원 그래픽 인터페이스 방법 및 이를 위한 3차원 그래픽 인터페이스 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant