KR101265121B1 - 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법. - Google Patents

음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법. Download PDF

Info

Publication number
KR101265121B1
KR101265121B1 KR1020120115042A KR20120115042A KR101265121B1 KR 101265121 B1 KR101265121 B1 KR 101265121B1 KR 1020120115042 A KR1020120115042 A KR 1020120115042A KR 20120115042 A KR20120115042 A KR 20120115042A KR 101265121 B1 KR101265121 B1 KR 101265121B1
Authority
KR
South Korea
Prior art keywords
message
data
voice
message data
real time
Prior art date
Application number
KR1020120115042A
Other languages
English (en)
Other versions
KR20120130145A (ko
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 KR1020120115042A priority Critical patent/KR101265121B1/ko
Publication of KR20120130145A publication Critical patent/KR20120130145A/ko
Application granted granted Critical
Publication of KR101265121B1 publication Critical patent/KR101265121B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은 본 발명은 음성엔진과 인터렉티브 3D 어플리케이션을 실시간으로 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 있어서, 미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10); 음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20); 3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30); 상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및 상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어지며, 상기 메시지 데이터를 검색하는 단계(S30)는, 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제1 단계; 및 문자열 데이터의 뒷글자 1자를 삭제한 후, 뒷글자 1자가 삭제된 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제2 단계;를 포함하여, 저장된 문자열 데이터에 대하여 제1 단계를 수행하여 대응하는 메시지 데이터가 검색되면 검색된 메시지 데이터를 리턴하고, 대응하는 메시지 데이터가 검색되지 않으면, 문자열 데이터에 1자가 남을 때까지 제2단계를 수행하는 것을 특징으로 한다.

Description

음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법.{Real time Controlling Method for 3D VR contents using 3D VR Controlling Middleware System interconnecting Voice Engine and interactive 3D Application in real time}
본 발명은 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 관한 것으로, 특히, 사용자의 음성을 인식하는 음성엔진과 인터렉티브 3D 어플리케이션을 실시간 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용한 3D 컨텐츠의 실시간 제어방법에 관한 것이다.
급속한 정보통신 기술의 발달로 인하여 유비쿼터스 컴퓨팅의 기술, 네트워크 인프라, 3D 기술, 가상현실 기술 등 미래 콘텐츠 기술을 적용한 새로운 디지털 사용자 환경이 구축됨에 따라, 기존 3D 콘텐츠 시장은 게임, 교육, 홍보, 에니메이션 등 다양한 분야로 시장을 넓혀가고 있다. 또한, PC를 기본으로, PMP, 네비게이션, MP3, 스마트폰 등 모바일 기기 및 디지털 TV 등 다양한 기기의 플렛폼에 3D 콘텐츠 즉, 3D 어플리케이션이 활용되고 있다.
이에 따라, 다양한 분야와 플렛폼에 대응할 수 있는 3D 어플리케이션의 인터페이스는 상당히 중요한 요소가 되어, 기존의 3D 어플리케이션의 주로 키보드 입력 및 터치 입력, 마우스 입력이 기반이 된 인터페이스를 넘는 다양화되고 인터렉티브한 결과를 얻을 수 있는 음성인식기반의 진보한 인터페이스가 요구되고 있다.
한편, 음성인식기술은 사람이 말하는 음성 언어를 컴퓨터가 해석해 그 내용을 문자열인 문자 데이터로 전환하여 처리해주는 기술을 말하며, 음성의 인식에는 음성엔진이 사용되어 사용자에 의하여 입력된 음성을 문자 데이터로 변환하며, 현재로서는 영어교육시스템, 네비게이션, 모바일 검색 시스템에 한정되어 사용되고 있다.
따라서,음성인식기술과 3D 콘텐츠(어플리케이션)이 접목된 인터페이스의 개발에 있어서는, 사용자의 명령등이 음성신호의 형태로 입력되는 음성엔진과 인터렉티브 3D 컨텐츠를 연동시키는 미들웨어 기술의 개발이 절실히 요구되고 있다.
그러나, 음성엔진과 3D콘텐츠(어플리케이션)의 접목에는 음성엔진에 의하여 인식된 명령 등 문자 데이터가 3D콘텐츠(어플리케이션)의 3D 데이터에서는 인식이 되지 않는다는 기술적 문제점이 있는 실정이다.
따라서, 본 발명은, 상술한 바와 같은 종래의 기술의 문제점을 해결하는, 음성엔진과 인터렉티브 3D 컨텐츠를 실시간 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용한 3D 컨텐츠의 실시간 제어방법을 제공하여,음성인식기반의 진보한 인터페이스를 제공하는 것이 가능하도록 하는 것을 목적으로 한다.
또한, 사용자의 음성을 인식하는 음성엔진에서 처리된 음성 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환함으로써 음성엔진과 인터렉티브 3D 컨텐츠를 실시간 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용한 3D 컨텐츠의 실시간 제어방법을 제공하는 것을 목적으로 한다.
나아가, 효율적으로 음성엔진에서 처리된 음성 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환하는 3D 가상현실 컨트롤 미들웨어 시스템을 이용한 3D 컨텐츠의 실시간 제어방법에 있어, 한글 음성인식에 의한 3D 컨텐츠의 실시간 제어의 성능을 향상시키는 것을 목적으로 한다.
위와 같은 목적을 달성하기 위하여, 본 발명은 음성엔진과 인터렉티브 3D 어플리케이션을 실시간으로 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 있어서, 미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10); 음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20); 3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30); 상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및 상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어지며, 상기 메시지 데이터를 검색하는 단계(S30)는, 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제1 단계; 및 문자열 데이터의 뒷글자 1자를 삭제한 후, 뒷글자 1자가 삭제된 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제2 단계;를 포함하여, 저장된 문자열 데이터에 대하여 제1 단계를 수행하여 대응하는 메시지 데이터가 검색되면 검색된 메시지 데이터를 리턴하고, 대응하는 메시지 데이터가 검색되지 않으면, 문자열 데이터에 1자가 남을 때까지 제2단계를 수행하는 것을 특징으로 한다.
또한, 또 다른 측면에서 본 발명은 음성엔진과 인터렉티브 3D 어플리케이션을 실시간으로 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 있어서, 미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10); 음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20); 3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30); 상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및 상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어지며, 3D 오브젝트의 행동을 제어하는 단계(S40)는, 메시지 데이터의 수신을 기다리는 메시지 대기 단계(S4); 메시지 데이터를 수신하는 메시지 수신 단계(S5); 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동을 실행하는 행동 실행단계(S6); 및 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동의 실행이 완료되었는 지 여부를 판단하는 행동 실행종료 판단단계(S7)를 포함하여, 종료된 것으로 판단되면 된 경우 루틴을 종료(S8)하고, 추가적인 음성입력을 받도록 통보하는 것을 특징으로 한다.
바람직하게는, 사용자로부터 음성신호를 수신하는 단계(S10)는 음성의 크기 및 음성의 속도에 기초하여 음성의 정확도를 판단하는 정확도 판단 단계(C5)를 포함하여 수행된다.
또한, 바람직하게는, 상기 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)는, 어플리케이션 유저인터페이스를 생성하여 어플리케이션 윈도우 뷰(Window View)를 생성하는 단계(C1) 및 상기 3D 오브젝트의 행동에 따라 변화되는 장면이 업데이트되어 디스플레이되도록 어플리케이션 윈도우 뷰(Window View)를 상기 3D 데이터에 연동시키는 화면 로드(Scene Load)단계(C3)를 포함하여 수행된다.
상술한 바와 같은 본 발명에 의하면, 음성엔진과 인터렉티브 3D 컨텐츠를 실시간 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템 및 이를 이용한 3D 컨텐츠의 실시간 제어방법을 제공하여, 음성인식기반의 진보한 인터페이스를 제공하는 것이 가능하게 된다.
또한, 사용자의 음성을 인식하는 음성엔진에서 처리된 음성 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환함으로써 효율적으로 음성엔진과 인터렉티브 3D 컨텐츠를 실시간 연동시키는 것이 가능하게 된다.
나아가, 효율적으로 음성엔진에서 처리된 음성 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환함으로써 한글 음성인식에 의한 3D 컨텐츠의 실시간 제어의 성능을 향상시키는 것이 가능하다.
도1은 본 발명에 따른 3D 가상현실 컨트롤 미들웨어 시스템의 구성도
도2는 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어 시스템의 세부 구성도
도3은 본 발명에 따른 3D 가상현실 컨트롤 미들웨어 시스템을 이용한 3D 컨텐츠의 실시간 제어방법의 플로우차트
도4는 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어를 이용한 3D 컨텐츠의 실시간 제어방법을 설명하기 위한 세부 플로우차트
도5는 본 발명의 일 실시예에 따른 동작 제어부의 서버 내의 플레이 루프를 설명하기 위한 플로우 차트
도6는 본 발명의 일 실시예에 따른 메시지 모듈을 구성하는 함수코드
도7은 본 발명의 일 실시예에 따른 메시지 데이터 베이스의 데이터 구조 설명
도8은 본 발명의 일 실시예에 따른 3D 데이터의 데이터 구조도
도9는 본 발명의 일 실시예에 따른 서버 내의 CMO 파일의 플레이의 예시적 화면
본 발명은 음성인식 기술로 처리된 문자열 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환해 주는 미들웨어 기술로서, 메시지 데이터는 3D콘텐츠(어플리케이션)에서 각 오브젝트 개체마다 행동 즉, 움직임 실행 및/또는 상태변화를 수행할 수 있게 하는 명령어가 된다. 이 메시지 데이터는 DB화 되어 있으며, 변환 미들웨어에 의해서 처리된다. 위와 같은 본 발명의 미들웨어를 통해 음성은 문자열 데이터로, 문자열 데이터는 메시지 데이터로 변하게 되어, 이 메시지 데이터를 통하여 3 차원 가상현실의 오브젝트의 행동의 실행 즉, 움직임 실행 및 상태변화를 제어할 수 있게 된다.
본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어 시스템은 상용화된 3D콘텐츠 제작 소프트웨어 개발 키트(SDK: Software Development Kit)인 VirtoolsTM SDK와 호환 가능하도록 실시된 경우로서, C++의 함수 형태이며, Virtools SDK엔진을 이용한다. 참고로, 이는 음성엔진 즉, 음성인식 라이브러리가 C 코드의 콜백 함수 라이브러리로 제작이 되어있고, 3D콘텐츠는 Virtools SDK C++언어로 처리하기 때문에 가능해진다. 따라서 본 발명의 일 실시예의 미들웨어 시스템은 음성엔진과 Virtools의 3D콘텐츠 제작 SDK의 호환을 위해 C++코드 형태로 제작된 경우의 예이다.
본 발명의 일 실시예의 미들웨어 시스템의 구조는 그 기능특성을 기준으로 크게 서버와 클라이언트로 구분되어 설명되며, 3DVia Virtools로 제작된 실행파일이 서버 역할을 수행하고, 프로그램 단에서 접근하는 부분이 클라이언트의 역할을 수행하는 것으로 정의되어 설명된다. 서버의 주된 역할은 3D콘텐츠의 생성 및 구성, 관리로 요약되며, 클라이언트로부터 메시지를 데이터를 기다린다. 클라이언트의 주된 역할은 음성 신호를 메시지 데이터 값으로 변환하여 서버에 전달하는 것으로 요약된다.
본 발명의 일 실시예의 미들웨어 시스템의 구현은 메시지 프로세스 함수의 제작에 그 본질이 존재하며, 메시지 프로세스 함수는 사용자의 음성신호를 받아 음성엔진 즉, 음성인식 라이브러리를 통하여, 음성 데이터 베이스로부터 원하는 문자열 데이터를 얻어온다. 음성라이브러리에서 처리 방식은 CallBack 함수를 사용한다. 즉, 음성 신호를 입력받아 문자열 데이터를 CallBack하는 방식이다. 이렇게 리턴된 문자열 데이터는 미들웨어 함수를 통해 문자열 데이터에서 메시지 데이터로의 컨버팅 과정을 거치게 된다. 컨버팅 과정은 CallBack 함수를 통해 리턴된 문자열 데이터를 메시지 데이터 베이스에서 해당되는 메시지를 검색한다. 검색한 메시지는 서버측으로 전달된다. 서버는 받은 메시지 명에 따라 해당 3D오브젝트의 실행 및 상태변화를 제어하며, 이에 따라, 이에 따라 오브젝트에 동작이 일어나며, 이는 실시간으로 사용자에게 전달된다.
이하의 발명을 실시하기 위한 구체적인 내용의 설명에 있어, 사용되는 주요 용어의 개념 및 구현 예는 다음과 같다.
음성엔진은 입력되는 음성신호의 음소를 검출하여 문자열을 인식하는 소프트웨어 또는 임베디드 소프트웨어 등의 형태로 구현 음성인식엔진으로 음성인식에 필요한 음성 데이터베이스를 포함하는 것 또는 음성 데이터베이스를 제외한 부분의 ㅇ의미로 사용된다. 참고로, 본 발명의 일 실시예에서 음성 데이터 베이스(21)를 포함하여 음성엔진은 API DLL 파일과 .Dict의 사전데이터 베이스 파일로 구성된다. .Dict 파일안에 음성 신호와 그에 맞는 문자열 데이터 파일을 포함하여 음성 신호에 대응하는 문자열 데이터를 정의·저장하여 사전화한 음성 데이터 베이스(21)가 구성된다. 메시지 데이터는 후술하는 3D 데이터가 인식할 수 있는 형태의 메시지로, 메시지 데이터는 3D콘텐츠(어플리케이션)에서 각 오브젝트마다 행동을 수행할 수 있게 하는 동작 명령어 역할을 수행하게 된다. 예를 들어, 서버의 3D 데이터 즉 오브젝트가 인식할 수 있는 M_(행동명)의 1Byte 영문 문자열과 같은 구조를 같는다. 여기서, M은 메시지임을 나타낸다.
본 발명의 일 실시예에서 메시지 데이터 베이스(22)는 SQLDB를 사용하여 구현될 수 있으며, SQL DB내 테이블로 구성되어 있으며, 테이블의 구조를 간략히 표현하면 도7의 구조와 같다.
도7을 참조하면, 메시지 데이터의 테이블은 인덱스, 음성 문자열, 메시지 문자열로 이루어지는 열들로 구성된다. 여기서, 인덱스는 행의 개수, 음성 문자열은 클라이언트로부터 받은 음성 문자열 데이터, 메시지 문자열은 서버 측으로 보낼 메시지 데이터, 단어 수는 메시지 문자열 즉, 메시지 데이터의 단어 수를 표현한다. 참고로, 도6의 경우 클라이언트로부터 전달받은 문자열 데이터가 "소리"인 경우 1번 열인 음성 문자열 값과 같은 인덱스에 있는 2번 열인 메시지 문자열을 리턴하게 된다.
본 발명의 일 실시예에 따른 설명에 있어, 3D 데이터는 3D가상현실 내의 모든 오브젝트를 의미하며, 3D 데이터는 가상현실에 실행되는 동작필요 오브젝트(Behavior Object)를 총칭한다. 도8의 3D 데이터 구조도와 같은 입력값(3D Entity)을 포함하는 구조를 가질 수 있으며, 도8의 데이터 구조도에 있어서, 각 입력값(3D Entity)은 아래와 같이 정의되어 사용된다.
3D Entity : 너비, 높이 및 깊이를 모두 가지고 있는 오브젝트
Light : 조명을 제공하는 오브젝트
Camera : 시점을 정의하는 오브젝트
Character : 사용자 또는 소프트웨어가 조작할 수 있는 지능적인 개체
3D Sprite : 너비, 높이 및 깊이를 가지고 있는 이미지 오브젝트
Grid : 값이 3D 좌표에 의해 결정되는 2D Entity 들의 집합
Curve : 3D 공간 안의 곡선을 정의하는 3D Entity 들의 집합(Curve Point 포함)
Place : 공간적으로 연관된 오브젝트들의 모임
2D Entity : 너비 높이는 있지만 깊이가 없는 오브젝트(Sprite, Sprite Text 포함)
Level : 컴포지션의 모든 오브젝트를 포함하는 요소로써, 컴포지션의 모든 element들의 루트가 된다.
Scene : 한 장면을 관리한다. 영화의 Scene과 개념은 같다.
Group : 오브젝트의 정보를 저장하고 오브젝트를 모으기 위한 데이터 구조체이다
Array : 행과 열의 형태로 나열된 셀들을 포함하는 테이블이다.
Sound : 소리 오브젝트
Mesh : 오브젝트의 모양을 결정하는 점들의 집합
Material : 메시 표면의 특성, 색상
Texture : 오브젝트의 표면에 사실감을 위해 사용하는 이미지
이하, 본 발명의 일 실시예에 따른 구체적인 실시형태를 첨부된 도면들을 참조하여 설명한다. 하기에는 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
도1은 본 발명에 따른 3D 가상현실 컨트롤 미들웨어 시스템의 구성도이며, 도2는 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어 시스템의 세부 구성도로서, 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어 시스템이 상용화된 3D 콘텐츠 제작 소프트웨어 개발 키트(SDK: Software Development Kit)인 VirtoolsTM SDK와 호환 가능하도록 실시된 경우이다.
도1을 참조하면, 본 발명에 따른 3D 가상현실 컨트롤 미들웨어 시스템은 음성입력부(10), 음성엔진처리부(20), 메시지처리부(30), 동작제어부(40) 및 3D 렌더부(50)로 구성된다.
위와 같은 구성에 의하여, 사용자의 음성을 인식하는 음성엔진에서 처리된 음성 데이터를 3D 데이터가 인식할 수 있는 메시지 데이터로 변환함으로써 음성엔진과 인터렉티브 3D 를 실시간 연동시키는 가능해지며, 음성 입력에 의하여 실행 및 상태변화가 제어되는 3D 오브젝트의 실행 및 상태변화를 실시간으로 사용자에게 시각적으로 전달할 수 있게 된다.
이하, 음성입력부(10), 음성엔진처리부(20), 메시지처리부(30), 동작제어부(40) 및 3D 렌더부(50)의 기능을 도1 및 도2를 참조하여 상세히 설명한다.
음성입력부(10)는 사용자로부터 음성신호를 수신하는 기능을 수행하며, 사용자에게 3D 콘텐츠에 신호(입력 값)를 주기 위한 처음 단계로 마이크와 같은 음성입력장치를 통하여 음성신호를 입력도록 제어된다. 이 기능은 도2의 일 실시예에 있어서, 클라이언트(Client) 내의 플레이 모듈(Play Module)의 기능의 일부로서 구현되며, 도2와 관련하여 보다 상세히 설명한다. 바람직하게는, 음성입력부(10)는 음성입력을 위한 입력장치의 연결 상태를 점검하여, 상태 메시지를 생성하여 출력하도록 구성되어, 음성인식에 필요한 장치가 올바로 연결되었는지, 사용 가능한 상태인지 여부의 상태 메시지, 예를 들면, "Ready" 또는 "Not Ready"를 출력하여 클라이언트를 통해 사용자에게 알려주도록 구성될 수 있으며, 도2의 일 실시예에 있어서, 디비셋 모듈(DB Set Module)의 일부 기능으로서 구현될 수 있다.
음성엔진처리부(20)는 음성입력부로부터 입력된 음성신호를 전달받아 음성엔진에 전송하고 음성엔진에 의하여 음성 데이터 베이스(21) 내에서 검색되어 리턴되는 상기 음성신호에 대응하는 문자열 데이터를 수신하는 기능을 수행하며, 수신된 문자열 데이터를 메시지처리부(30)로 전달한다. 문자열 데이터의 검색은 음성엔진의 음성 데이터베이스 안에 있는 단어 신호에 연관된 음성신호와 매칭되는 문자열 데이터가 있으면 해당 문자 신호에 해당되는 문자열을 클라이언트로 리턴한다. 도2의 일 실시예에 있어서, 메시지 모듈(Message Module)의 기능으로서 구현될 수 있다.
메시지처리부(30)는 음성엔진처리부로부터 문자열 데이터를 전달받아 3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터 베이스(22) 내에서 상기 문자열 데이터에 대응하는 메시지 데이터를 검색하는 기능을 수행하며, 검색된 메시지 데이터를 동작제어부(40)로 전달한다. 도2의 일 실시예에 있어서, 메시지 모듈(Message Module)의 기능으로서 구현될 수 있으며, 본 발명의 미들웨어 시스템 전체의 측면에서 3D 어플리케이션과 음성엔진의 중간 루트 역할의 핵심기능을 수행한다.
한글의 경우, 음성엔진에 의하여 음성 데이터 베이스(21) 내에서 검색되어 리턴되는 문자열 데이터는 기본적으로 2Byte로 구성되므로, 이를 바로 3D 콘텐츠(어플리케이션)로 보내게 되면 3D 콘텐츠의 3D 데이터는 이를 인식하는 것이 프로그램 상에서 알 수 없는 데이터가 들어간다. 따라서 2byte 한글 문자열 데이터를 3D 데이터가 인식가능한 1Byte의 영문 메시지인 메시지 데이터로 변환하는 작업이 필요하다. 이 경우 상기 메시지 데이터 베이스(22)는 사용자로부터 입력받는 문자열 데이터인 음성 문자열, 동작 제어부로 전달할 메시지 데이터인 메시지 문자열을 포함하는 데이터 구조를 가지고, 2Byte의 한글 문자열에 대응하는 메시지 데이터는 행동 명을 포함하는, 예를 들어, 도7의 "M_Sound" 와 같은 1Byte 영문 문자열로 구성되는 것이 바람직하다.
바람직하게는, 메시지처리부(30)는, 단어 검색확률을 높일 수 있는 형태로 전달받은 문자열 데이터를 가공하여 검색하는 방식을 수행하도록 구성될 수 있다. 한글의 경우 문자열 데이터를 가공하여 검색하는 방식으로는 문자열 데이터를 전달받아 상기 문자열 데이터에서 조사를 제거하는 방식으로 가공하여 메시지 데이터 베이스(22) 내에서 3D 데이터가 인식가능한 상기 가공된 문자열 데이터에 대응하는 메시지 데이터를 검색하거나, 전달받은 문자열 데이터의 뒷글자 1자가 삭제된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 과정을 대응되는 메시지 데이터가 검색되거나 문자열 데이터에 1자가 남을 때까지 수행하는 것이 바람직하며, 상기 검색 과정의 수행 결과 메시지 데이터가 검색되지 않는 경우 상기 음성입력부(10)는 사용자로부터 새로운 음성신호를 수신하도록 하는 메시지를 미들웨어 시스템으로, 도2의 일 실시예의 경우 클라이언트(Client) 내의 플레이 모듈(Play Module)로, 전송하도록 구성된다.
동작제어부(40)는 상기 메시지처리부로부터 상기 메시지 데이터를 수신하여 상기 메시지 데이터에 따라 3D 오브젝트의 실행 및 상태변화를 제어함으로써, 3D 오브젝트의 움직임을 실행한다. 도2의 일 실시예에서와 같이, 서버 내의 플레이 모듈 (Play Module)의 기능으로 오브젝트마다 할당된 스크립트의 형태로 구현된다. 바람직하게는, 상기 동작제어부(40)는 도5와 관련해서 설명되는 오브젝트에 대하여 생성된 메시지 수신부, 메시지 처리부, 및 종료처리부를 포함하는 스크립트를 포함하여 구성되어, 메시지 프로세스(Play Loop)를 수행한다.
3D 렌더부(50)는 상기 동작제어부에 의하여 실행 및 상태변화가 제어되는 3D 오브젝트의 실행 및 상태변화를 실시간으로 업데이트하여 디스플레이하며, 도2의 일 실시예에 있어서, 클라이언트(Client) 내의 컨넥트 모듈(Connect Module)의 기능의 일부로서 구현되며, 도2와 관련하여 후술되는 바와 같이, 3D 렌더부는 동작이 일어나는 모든 오브젝트를 보여주며, 실시간으로 사용자에게 전달한다. 어플리케이션의 Window View위에 Virtools Render view가 맵핑되어 매 프레임마다 실행되며, 실시간으로 계속 움직임이 일어나는 효과를 제공하며, 3DVia Virtools 엔진의 RenderContext 객체에서 담당하는 것으로 구성될 수 있다. 3D 렌더부는 클라이언트와 서버 View의 연동을 통해 View의 지속적인 Update를 하고, 3D 데이터를 보여주며, 실시예에 따라서는 사용자에게 플레이, 멈춤, 일시정지 등의 기능을 제공하도록 구성된다.
이하, 도2를 참조하여, 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어 시스템의 세부 구성을 상세히 설명한다.
상술한 바와 같이, 도2의 실시예는 상용화된 3D 콘텐츠 제작 소프트웨어 개발 키트(SDK: Software Development Kit)인 Virtools SDK와 호환 가능하도록 실시된 경우로서, 세부구성을 그 기능특성을 기준으로 크게 서버와 클라이언트로 구분하여 설명한다.
도2를 참조하면, 서버(Sever)는 3D 생성 모듈 (Create Module)과 플레이 모듈 (Play Module)로 구성된다.
서버 내의 3D 생성 모듈(Create Module)은 생성할 3D 콘텐츠에 Scene을 구성하고, Scene 안에 오브젝트와 카메라, 라이트 등을 생성한다. 생성된 오브젝트는 각각 메시지를 기다릴 수 있는 로직과 움직임 로직을 가지고 있다. 3D 가상세계의 배치와 명령을 마치게 되면, Save로 저장(CMO 파일생성)을 하거나 익스포트(VMO파일생성)하여 컴포지션 파일을 생성한다. 여기서, CMO, VMO파일은 3DVia Virtools의 컴포지션 파일이다. 즉, 3D 입력값(Entity)들과 각종 행동(움직인 실행 및/또는 상태변화)들로 구성된 3D 데이터 파일로, 3D Via Virtools 상에서 3D 데이터를 형상화한다. 즉, Max, Maya, Catia 등으로 제작된 3D 데이터를 Virtools의 가상현실 공간상에 배치 및 조합하여 가상 세계를 제작한다. 3D 입력값(Entity)은 (X,Y,Z) 좌표 값을 가지고 공간상에 배치되며, 2D Entity 들은 (X,Y) 좌표를 가지고 공간상에 배치된다. 또한, 가상세계를 꾸미기 위한 Light(빛효과), Material(색상), Texture(표면이미지) 등을 정의하여 오브젝트에 효과를 준다. 가상세계에 대한 세팅이 완료되면 파일을 저장(익스포트)하여 미들웨어에서 사용 가능한 형식(CMO/VMO파일)으로 제작한다. CMO(VMO)파일은 Scene과 Scene을 구성하는 3D, 2D 오브젝트 및 각종 Entity들의 모음과 행동 스크립트들로 구성되어 있다. 도8은 서버 내의 CMO 파일의 플레이의 예시적 화면이다.
서버 내의 플레이 모듈(Play Module)은 초기화(Init)와 플레이 루프 (Play Loop)를 수행하며, 본 발명의 3D 가상현실 컨트롤 미들웨어 시스템에 있어서 동작제어부(40)을 구성한다.
초기화(Init)에서는 오브젝트의 초기값을 기억하며 저장한다. 이 저장값은 사용자가 오브젝트를 움직였을 때 초기값으로 복귀를 위해 필요하다. 저장에 필요한 값은 오브젝트의 좌표 값, 오브젝트의 스케일 값, 오브젝트의 회전 값이다. 또한, 카메라 워킹에 필요한 카메라의 Navigation을 구현하며, 사용자에게 입력받을 외부 디바이스에 대한 초기화를 진행한다.
서버 내의 플레이 루프(Play Loop)는 초기화(Init)에 의하여 3D 가상현실에 대한 세팅이 끝나면 행동(움직인 실행 및/또는 상태변화)이 필요한 오브젝트에 스크립트 코드로 구현된다. 각 스크립트는 크게 메시지(즉, 메시지 데이터)를 받는 부분인 메시지 수신부, 메시지 처리(행동 부분)하는 메시지 처리부, 행동의 끝을 판단하는 종료처리부의 3가지로 구성되며, (1) 메시지 수신부(Wait Message) 루틴은 서버가 실행되면 바로 실행이 된다. 주 역할로 클라이언트로부터 메시지를 기다린다. 이 루틴은 처음 서버 시작과 함께 시작되며, 서버가 동작하는 시간과 메시지가 도착하는 시간까지 무한정 대기한다. 메시지가 도착하면 다음 루틴으로 신호를 전달한다. (2) 메시지 처리부(Play Behavior) 루틴은 행동(움직인 실행 및/또는 상태변화)에 대한 정의로 구성되어 있으며, 메시지를 받아서 실행된다. 행동은 캐릭터의 애니메이션을 플레이시키고, 오브젝트를 움직이는 역할을 한다. 이 부분은 행동이 종료될 때까지 Loop를 돌며 실행된다. (3) 종료 처리부(Test: MotionEnd?) 루틴은 동작의 종료를 알려주는 테스트 루틴이다. 오브젝트의 동작은 종료가 됐는지 매 프레임마다 검사를 진행한다. 동작의 종료가 됐으면 다시 메시지 수신부(Wait Message) 루틴으로 돌아가 클라이언트로부터 다시 메시지 신호를 받기를 기다린다. 행동이 종료되지 않았다면 신호를 그냥 통과시키면서 행동을 계속한다.
클라이언트(Client)는 초기화 모듈(Init Module), 컨넥트 모듈(Connect Module), 플레이 모듈(Play Module), 메시지 모듈 (Message Module), DB 셋 모듈(DB Set Module)로 구성된다.
클라이언트 내의 초기화 모듈(Init Module)은 Virtools Engine을 사용하기 전 최우선적으로 수행되는 초기화 작업을 하는 부분이다. 본 발명의 본 일 실시예의 미들웨어는 Virtools SDK를 사용하기 때문에 엔진에 대한 초기화 작업이 필요하다. Plug-ins(Render, Manager, Behavior, Media) DLL파일들의 경로를 초기화해주며, 주로 사용자가 설치하는 폴더 내에 DLL 파일들이 같이 설치되며, 경로도 해당 경로로 설정된다. Virtools SDK에서 제공되는 함수 및 코드들이 사용되어 구성되며, 초기화 모듈에서의 처리과정은 다음과 같이 진행될 수 있다.
(1)::CKGetPluginManager()함수를 통해서 CKPluginManager 포인터를 얻는다.
(2)::CKPluginManager::ParsePlugins()함수를 통해 경로를 등록한다.
(3)::CKCreateContext()함수를 통해서 Virtools Composition 내의 모든 객체들을 관장하는 CKContext 객체를 생성한다.
(4)3D Rendering과 관련된 작업을 관장하는 CKRenderContext객체를 생성한다.
(5) CKContext::GetRenderManager()함수를 통해서 CKRenderManager 포인터를 얻고, CKRenderManager::CreateRenderContext()함수를 통해서 RenderContext를 생성한다
컨넥트 모듈(Connect Module)은 Server File 인 CMO/VMO 파일을 Load 하는 부분이다. 음성엔진과 어플리케이션에 연동하기 위해서는 음성엔진 부분과 CMO 파일을 Connect 하는 부분이 미들웨어에서 필요하다. 양쪽의 라이브러리를 사용하여 중간의 미들웨어 코드로 연동해야 하기 때문이다. 또한 3D렌더를 담당하고 있는 모듈로써, 서버에서 제작된 Virtools View를 어플리케이션의 View에 Connect 시켜 준다. 이 모듈에서 클라이언트에 서버, 음성엔진이 연동된다. 본 발명의 3D 가상현실 컨트롤 미들웨어 시스템에 있어서 3D 렌더부(50)을 구성한다.
Virtools SDK에서 제공되는 함수 및 코드들이 사용되어 구성되며, 컨넥트 모듈에서의 처리과정은 다음과 같이 진행될 수 있다.
(1)CKContext::Load()함수를 통해서 Virtools의 CMO/VMO 파일을 클라이언트에 Load 한다.
(2)CKContext::GetCurrentLevel() 함수를 통해서 CLLevel 포인트를 얻는다.
(3)CKRenderContext::AttachViewpointToCamera()함수를 통해서 서버에서 설치해 놓은 카메라를 가져온 후 등록한다.
(4)CKLevel::addRenderContext()함수를 통해서 CKRenderContext를 Level에 등록한다.
(5)CKLevel::LaunchScene()함수를 통해서 실행할 Scene을 등록한다.
클라이언트 내의 플레이 모듈(Play Module)은 미들웨어의 구동의 역할을 한다. 미들웨어상에서 필요한 코드 및 파일이 초기화되면, 이들을 실제적으로 실행하여 미들웨어의 구동으로 메시지 처리를 준비할 수 있게 된다. 이 모듈에서 마이크를 통한 음성 신호를 입력받으며, 클라이언트 내의 플레이 모듈(Play Module)은 본 발명의 음성입력부(10)을 구성한다.
Virtools SDK에서 제공되는 함수 및 코드들이 사용되어 구성되며, 플레이 모듈에서의 처리과정은 다음과 수행될 수 있다.
(1)CKContext::Process()함수를통해서BehaviorProcess를처리한다
(2)CKContext::Process()함수를통해서BehaviorProcess를처리한다. (3)CKRenderContext::Process()함수를 통해서 Rendering Process 처리하며, 매 프레임마다 Loop를 시켜서 실시간으로 서버파일(CMO)와 통신한다.
메시지 모듈(Message Module)은 음성엔진으로 얻어온 2Byte 한글 문자열을 서버측의 1Byte 메시지로 전달하기 위해 필요한 모듈로, 미들웨어의 핵심 기능을 수행한다. 메시지 모듈에서 음성 DB와 메시지 DB와의 연동 및 처리를 수행한다. 또한 음성엔진의 콜백함수로 받은 한글 문자열의 정확도를 높이기 위한 최적화 기능도 수행하며, 검색된 메시지 데이터를 전송한다. 음성 DB 파일은 Dict 형식이며, 메시지 DB 파일은 SQL 방식을 사용한다. 메시지 모듈은 본 발명의 음성엔진처리부(20)와 메시지처리부(30)을 구성한다.
Virtools SDK에서 제공되는 함수 및 코드들이 사용되어 구성되며, 메시지 모듈에서 메시지 처리과정이 수행되며, 바람직하게는 검색 최적화 작업이 수행될 수 있다.
메시지 처리과정은 다음과 같이 수행될 수 있다.
1. Server에서 제작된 CMO파일로 메시지를 전달하기 위해 필요한 객체들을 얻어온다. 객체들은 Virtools SDK 상에서 제공되는 라이브러리를 활용한다.
(1) CKContext* pContex = (Virtools SDK연동 객체)->m_CKContext; 객체를 관장하는 Context 생성한다. pContex 객체는 Virtools 에서 사용하는 모든 객체들에 대한 관리를 관장한다.
(2) CK3dEntity* p3DObject = (CK3dEntity*)pContext-> GetObjectBuNameAndClass(Object Name, Object ID); 어디로 메시지를 보낼지 알려주어야 하기 때문에 동작이 필요한 오브젝트의 객체를 가져와서 초기화한다. 이 함수는 메시지를 받아야 하는 오브젝트를 생성해 주고 초기화해주는 역할을 담당한다.
(3) CKMessageManager*pMsgManager=pContext-> GetMessageManager(); 메시지를 보내기 위한 메시지 객체를 생성 후 초기화한다. pMsgManager는 메시지에 관한 모든 관리를 담당한다.
2. 음성신호를 음성엔진에 전달한다. 음성엔진으로부터 음성신호와 매칭되는 문자열 데이터를 콜백 함수로 리턴 받는다.
(1) CString wdmessage = Callback_VS_VSRResult() ; Callback_VS_VSRResult()함수를 실행해서 음성 라이브러리에 접근하게 되고, 해당 DB를 검색해 음성신호에 맞는 스트링 파일을 리턴해 준다.
3. 메시지 DB에 접근하기 위해 DB 객체를 가져온다. 메시지 DB는 SQL DB를 사용하기 때문에 테이블에 대한 접근이 필요하다. 어플리케이션에서 SQL 클래스를 제작하여 SQL DB와의 연결을 제공한다. 생성과 연결이 완료되면 메시지 DB로부터 원하는 메시지 명을 검색해서 가져온다.
(1) CMessageTable *m_pSetWord; SQL DB연동 클래스에 접근하기 위한 객체를 생성한다.
(2) CDBPropSet propset(DBPROPSET_ROWSET)…; SQL DB의 속성을 정해준다. 속성은 SQL 문을 통해 삽입, 삭제, 업데이트, 체인지 등의 기능의 권한을 부여한다.
(3) vsMessage.Format(“SELECT* FROM MessageTable WHERE WorldList = '%s ''wdMessage)
m_pSetWord->RunSQL(vsMessage,&propset); SQL문을 통해 SQL DB에서 원하는 데이터를 얻어온다. 얻어온 값은 스트링 값으로 보낼 메시지 데이터이다.
4. 메시지명이 있는지 판별, 검사한 후 메시지 명이 있다면 Server 측으로 해당 메시지를 전송한다. 해당 메시지는 어디로 전송될 것인지(1번 (2)항에서 정한 오브젝트가 된다), 어떤 메세지가 될 것인지(SQLDB에서 검색된 메시지명)를 변수로 가지고 전달된다.
(1) CKMessageType nMsgType = pMsgManager-> AddMessageType(vsMessage); 전송하기 전에 어떤 메시지 타입을 설정한다. 메시지 타입은 SQL DB에서 검색된 메시지명이 변수로 설정되어 전달된다.
(2) pMsgManager->SendMessageSingle(nMsgType, p3DObject); 이 부분이 메시지를 서버측(CMO)파일에 전달하는 부분으로, 메시지 타입과 어떤 오브젝트에 전달할지가 변수로 설정되어 전달된다.
검색 최적화 작업이 수행되는 경우 다음의 과정에 의하여 메시지 데이터의 검색을 최적화할 수 있게 된다.
(1) 전달된 음성 문자열을 메시지 DB로 보내 문자열을 검색한다. 검색은 SQL 의 쿼리문을 사용한다. 해당 문자열이 있으면 그에 해당되는 메시지를 리턴한다.
(2) 해당 문자열이 없다면 음성 DB로부터 추출된 문자열의 뒷글자 1자를 삭제한다. 삭제후 다시 메시지 DB를 검색한다. 문자열이 있으면 그에 해당되는 메시지를 리턴한다.
(3) 마지막 한 글자가 남을 때까지 2번 과정을 반복한다. 1글자까지 해당 DB검색이 실패하면 다시 음성 메시지 입력을 받으러 돌아간다.
DB 셋 모듈(DB Set Module)은 시스템 상태 정보를 얻어와 마이크 장비가 컴퓨터에 연결되어 있는지 구분한다. 마이크 인식 장치가 준비되면 음성인식 라이브러리를 초기화한다. 음성엔진 초기화 작업을 진행한다. 경로를 인식해 음성인식 데이터 베이스에 접근한다. 데이터 베이스 안에 단어 목록을 설정해 준다. 단어 목록은 dict파일 형식으로 제작되어 있다. 단어 등록까지 마치면 음성을 인식 받을 준비를 한다.
도3은 본 발명의 3D 가상현실 컨텐츠의 실시간 제어방법의 플로우차트이고, 도 4는 본 발명의 일 실시예에 따른 3D 가상현실 컨트롤 미들웨어를 이용한 3D 컨텐츠의 실시간 제어방법의 세부흐름을 설명하기 위한 플로우차트이다. 이하, 상술한 3D 가상현실 컨트롤 미들웨어 시스템과 관련된 설명과 중복되지 않는 범위에서, 도3 및 도4를 참조하여, 차례로, 본 발명의 3D 가상현실 컨텐츠의 실시간 제어방법과 일 실시예에 따른 3D 컨텐츠의 실시간 제어방법의 세부흐름을 상세히 설명한다.
도3을 참조하면, 본 발명은 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 컨텐츠의 실시간 제어방법으로, 미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10); 음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20); 3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30); 상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및 상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어진다.
바람직하게는, 사용자로부터 음성신호를 수신하는 단계(S10)는 도4와 관련하여 후술하는 음성의 크기, 음성의 정확도, 음성의 속도 등에 기초하여 음성의 정확도를 판단하는 정확도 판단 단계(C5)를 포함하여 수행된다.
또한, 메시지 데이터를 검색하는 단계(S30)는, 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제1 단계; 및 문자열 데이터의 뒷글자 1자를 삭제한 후, 뒷글자 1자가 삭제된 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제2 단계;를 포함하여, 저장된 문자열 데이터에 대하여 제1 단계를 수행하여 대응하는 메시지 데이터가 검색되면 검색된 메시지 데이터를 리턴하고, 대응하는 메시지 데이터가 검색되지 않으면, 문자열 데이터에 1자가 남을 때까지 제2단계를 수행하도록 구성될 수 있다.
나아가, 3D 오브젝트의 행동을 제어하는 단계(S40)는, 도4의 일 실시예와 관 관련하여 후술하는, 메시지 데이터의 수신을 기다리는 메시지 대기 단계(S4); 메시지 데이터를 수신하는 메시지 수신 단계(S5); 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동을 실행하는 행동 실행단계(S6); 및 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동의 실행이 완료되었는 지 여부를 판단하는 행동 실행종료 판단단계(S7)를 포함하여, 행동의 실행이 완료된 것으로 판단되면 된 경우 루틴을 종료(S8)하고, 추가적인 음성입력을 받도록 통보하도록 수행되는 것이 바람직하다.
나아가, 상기 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)는, 어플리케이션 유저인터페이스를 생성하여 프레임과 어플리케이션 윈도우 뷰(Window View)를 생성하는 단계(C1) 및 상기 로드되는 화면의 매 프레임이 업데이트되어 디스플레이되도록 어플리케이션 윈도우 뷰(Window View)에 연동시키는 화면 로드(Scene Load)단계(C3)를 수행함으로써 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하게 된다.
도4을 참조하여, 3D 가상현실 컨트롤 미들웨어를 이용한 3D 컨텐츠의 실시간 제어방법의 세부 흐름을 설명한다.
먼저 서버측의 세부흐름을 설명하면, 3D 데이터 생성(Create 3D Data)단계(S1)는, 3D Via Virtools상에서 3D 데이터를 형상화한다. Max, Maya, Catia 등으로 제작된 3D 데이터를 Virtools의 가상현실 공간상에서 배치 및 조합하여 가상현실 공간을 제작한다. 3D Entity은 (X,Y,Z) 좌표 값을 가지고 공간상에 배치되며, 2D Entity 들은 (X,Y) 좌표를 가지고 공간상에 배치된다. 또한 가상세계를 꾸미기 위한 Light(빛효과), Material(색상), Texture(표면이미지) 등을 정의하여 오브젝트에 효과를 준다. 가상세계에 대한 세팅이 완료되면 파일을 저장(익스포트)하여 미들웨어에서 사용 가능한 형식(CMO/VMO파일)으로 제작한다. 도2의 3D 가상현실 컨트롤 미들웨어의 3D 데이터 생성모듈(Create Module)에서 처리된다.
행동 구성(Behavior Construct)단계(S2)는, 오브젝트가 초기화되면, 클라이언트로부터 신호를 받아야되는 오브젝트를 구분한다. 행동(움직인 실행 및/또는 상태변화) 이벤트가 필요한 오브젝트에 대하여는 스크립트를 생성하고 해당 스크립트에 메세지를 기다리는 WaitMessage, 메시지가 들어왔을 때 행동해야 하는 PlayBehavior 로직을 구성한다. 도2의 3D 가상현실 컨트롤 미들웨어의 3D 데이터 생성모듈(Create Module)에서 처리된다.
초기화(Initialize)단계(S3)는 가상세계에 필수 조건인 3D Object, Material, Texture, Light, Camera 들의 초기값을 저장한다. 각 Entity 마다 좌표 값과 회전 값, 스케일 값을 저장한다. 차후 다시 원상태로 복귀를 위해 필요하다. 각 Entity 마다 좌표 값과 회전 값, 스케일 값을 저장한다. 차후 다시 원상태로 복귀를 위해 필요하다. 도2의 3D 가상현실 컨트롤 미들웨어의 서버 측 플레이 모듈(초기화)(Play Module(Init)에서 처리된다.
메시지 대기(Wait Message)단계(S4)에 있어, 서버는 항상 클라이언트로부터 메시지를 기다린다. Wait Message는 항상 Loop 상태로 매 프레임마다 실행된다.도2의 3D 가상현실 컨트롤 미들웨어의 서버 측 플레이 모듈(Play Module)(Playing Loop)에서 처리된다.
메시지 수신(Receive Massage)단계(S5)는, 클라이언트로부터 음성 신호에 대응하는 메시지 데이터를 받는다. 또한, 음성 신호로부터, 메시지 데이터의 추출이 성공했는지 실패했는지를 판단하여, 실패한 것으로 판단되면 MSG_ERROR를 통해 클라이언트에게 실패 메시지를 전달하며 다시 메시지 데이터를 전달받기 기다린다. 성공했을 경우 다음 절차를 진행한다. 도2의 3D 가상현실 컨트롤 미들웨어의 서버 측 플레이 모듈(Play Module)(Playing Loop)에서 처리된다.
행동 실행(Play Behavior Render)단계(S6)는, 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동(움직인 실행 및/또는 상태변화)을 실행한다. 캐릭터일 경우는 에니메이션 플레이를 통해 움직임이 실행되며, 3D 객체는 이동, 회전, 크기변환 등의 움직임이 실행된다. Material의 경우 색상변화, Texture의 경우 이미지 변화가 실행될 수 있다.
행동 실행 종료 판단 단계(S7)는, 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동의 실행이 완료되었는 지를 판단하고, 종료된 것으로 판단되면 된 경우 루틴을 종료(S8)하고, 음성입력 단계(C4)를 수행하여 추가적인 음성입력을 받도록 클라이언트 측에서 통보한다.
다음으로 도4를 참조하여, 클라이언트 측의 세부 흐름을 설명한다.
클라이언트 측의 초기화(Initialize)단계(C1)는, 3DVia Virtools SDK 엔진에 대한 초기화 작업 즉, 서버에서 제작된 3D 데이터 파일인 CMO(VMO) 파일의 초기화 작업을 진행한다. 엔진을 사용하기 위한 DLL파일을 등록하며, DLL파일의 경로를 초기화해주고 Virtools Composition 내의 모든 객체들을 관장하는 CKContext 객체를 생성해 준다. CKContext 생성 후 3D Rendering과 관련된 작업을 관장하는 CKRenderContext 객체를 생성해 준다. DLL파일과 3D 객체선언이 완료되면 어플리케이션UI를 생성하여 프레임과 Window View를 만들어 준다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 초기화 모듈 (Init Module)에 의하여 처리된다.
DB셋(DB Set)단계(C2)는, 시스템 상태 정보를 얻어와 마이크등 음성입력 장치가 컴퓨터에 연결되어 음성 입력장치가 준비상태인지를 판단한다. 마이크등 음성입력장치가 준비 상태이며, 음성인식 라이브러리 즉, 음성엔진의 초기화 작업을 진행한다. 또한, 음성 데이터베이스의 경로를 인식해 접근하여, 음성 데이터베이스 안에 단어 목록을 설정해 준다. 단어 목록은 dict파일 형식으로 제작되어 있다. 단어 등록까지 마치면 음성입력을 받을 준비를 한다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 DB 셋 모듈(DB Set Module)에 의하여 처리된다.
화면 로드(Scene Load)단계(C3)는, 서버에서 제작된 CMO(VMO) 파일을 Initialize 과정에서 제작해 놓은 Window View에 연동시킨다. CMO파일의 Scene 안에 존재하는 3D Entity 및 2D Entity, Light, Camera 등 모든 Entity 들의 구성요소를 초기화한다. Scene이 Load 되면, 어플리케이션 Window View는 CMO의 View로 매핑되게 되며, 프레임마다 업데이트 되기 때문에 실시간으로 3D 랜더링 되는 것처럼 사용자는 인식하게 된다.차원 가상현실 컨트롤 미들웨어의 클라이언트 측 컨넥트 모듈(Connect Module)에서 처리된다.
음성입력(Voice Input)단계(C4)는, 마이크등 음성입력 장치를 통해 음성을 입력 받는다. 또한, 음성의 크기, 음성의 속도 등에 기초하여 음성의 정확도를 판단하는 정확도 판단 단계(C5)를 수행하여 음성이 입력되었을 때 정확한 음성이 들어왔을 경우 다음 단계로 진행하며, 정확하지 않은 음성이 입력되어 음성 판별이 불가능한 경우 재입력을 받도록 실행될수 있다. 음성입력이 없는 경우 이벤트를 종료처리(C10)하도록 구성될 수 있다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 플레이 모듈( Play Module)에서 수행된다.
문자열 데이터 획득(Get Voice Signal)단계(C6)는 음성 DB에 접근해 음성신호와 매칭되는 문자열 데이터를 가져오는 단계이다. 음성DB에 등록되어 있는 목록과 사용자가 입력한 음성신호의 가장 최적화(정확한) 문자열 데이터를 검색하여 클라이언트에게 리턴해 준다. 클라이언트는 이 문자열 데이터를 전역 변수에 저장하여 클라이언트 내에서 처리할 수 있게 준비한다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 메시지 모듈 (Message Module)에서 처리된다.
메시지 데이터 획득(Get Message)단계(C7)는 전역 변수에 저장된 문자열 데이터를 메시지 DB에서 검색을 하는 단계이다. DB 검색은 SQL 쿼리 문을 통해 실행한다. 입력된 음성에 대응하는 문자열 데이터를 메시지 목록을 검색한 후 가장 상위(정확도가 높은)의 메시지 명의 메시지 데이터를 가져온다. 만약 정확한 메시지 명이 있는지 여부를 판단(C8)하여, 없을 경우 다시 음성입력 단계(C4)로 돌아가며, 메시지 명이 검색되면 다음 단계를 진행하도록 구성될 수 있다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 메시지 모듈 (Message Module) 에서 처리된다.
메시지 데이터 전송(Send message)단계(C9)는 메시지명이 메시지 데이터베이스에서 검색되면 해당 메시지 데이터를 Server(CMO 파일)측으로 전달한다. Server측에서 기다리고 있는 오브젝트의 메시지 명과 일치한다면 서버 측에서 동작을 실행한다. 전달된 메시지는 다음 음성입력이 있기 전까진 저장된 상태로 있으며, 다시 음성입력이 있을 경우 전 단계에서 검색된 메시지 데이터는 삭제된다. 3D 가상현실 컨트롤 미들웨어의 클라이언트 측 메시지 모듈 (Message Module) 에서 처리된다.
이상에서 본 발명은 실시 형태에 따라 도면에 도시된 일 실시예를 참고로 설명되었으나, 이들은 예시적인 것으로 본 발명의 권리범위는 이들에 한정되지 않으며, 다양한 변형 및 균등의 범위의 실시형태를 포함하여 청구범위에 기재된 사항에 따라 본 발명의 권리범위가 정해진다.
10: 음성입력부 20:음성엔진처리부
30: 메시지처리부 40: 동작제어부
50: 3D 렌더부

Claims (4)

  1. 음성엔진과 인터렉티브 3D 어플리케이션을 실시간으로 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 있어서,
    미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10);
    음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20);
    3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30);
    상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및
    상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어지며, 상기 메시지 데이터를 검색하는 단계(S30)는, 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제1 단계; 및 문자열 데이터의 뒷글자 1자를 삭제한 후, 뒷글자 1자가 삭제된 문자열 데이터에 대응하는 메시지 데이터를 메시지 데이터베이스에서 검색하는 제2 단계;를 포함하여, 저장된 문자열 데이터에 대하여 제1 단계를 수행하여 대응하는 메시지 데이터가 검색되면 검색된 메시지 데이터를 리턴하고, 대응하는 메시지 데이터가 검색되지 않으면, 문자열 데이터에 1자가 남을 때까지 제2단계를 수행하는 것을 특징으로 하는 3D 가상현실 컨텐츠의 실시간 제어방법.
  2. 음성엔진과 인터렉티브 3D 어플리케이션을 실시간으로 연동시키는 3D 가상현실 컨트롤 미들웨어 시스템을 이용하는 3D 가상현실 컨텐츠의 실시간 제어방법에 있어서,
    미들웨어 시스템에 연결된 음성입력장치를 통하여 사용자로부터 음성신호를 수신하는 단계(S10);
    음성 데이터베이스에 접근하여 상기 수신된 음성신호에 대응되는 문자열 데이터를 검색하여 저장하는 단계(S20);
    3D 데이터가 인식가능한 메시지 데이터를 저장하는 메시지 데이터베이스에서 상기 저장된 문자열 데이터에 대응하는 메시지 데이터를 검색하는 단계(S30);
    상기 검색된 메시지 데이터에 따라 3D 오브젝트의 행동을 제어하는 단계(S40); 및
    상기 행동이 제어되는 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)을 포함하여 이루어지며, 3D 오브젝트의 행동을 제어하는 단계(S40)는, 메시지 데이터의 수신을 기다리는 메시지 대기 단계(S4); 메시지 데이터를 수신하는 메시지 수신 단계(S5); 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동을 실행하는 행동 실행단계(S6); 및 수신된 메시지 데이터에 따라 관련된 오브젝트의 행동의 실행이 완료되었는 지 여부를 판단하는 행동 실행종료 판단단계(S7)를 포함하여, 종료된 것으로 판단되면 된 경우 루틴을 종료(S8)하고, 추가적인 음성입력을 받도록 통보하는 것을 특징으로 하는 3D 가상현실 컨텐츠의 실시간 제어방법.
  3. 제1항 또는 제2항에 있어서, 사용자로부터 음성신호를 수신하는 단계(S10)는 음성의 크기 및 음성의 속도에 기초하여 음성의 정확도를 판단하는 정확도 판단 단계(C5)를 포함하는 것을 특징으로 하는 3D 가상현실 컨텐츠의 실시간 제어방법.
  4. 제1항 또는 제2항에 있어서, 상기 3D 오브젝트의 행동을 실시간으로 업데이트하여 디스플레이하는 단계(S50)는, 어플리케이션 유저인터페이스를 생성하여 어플리케이션 윈도우 뷰(Window View)를 생성하는 단계(C1) 및 상기 3D 오브젝트의 행동에 따라 변화되는 장면이 업데이트되어 디스플레이되도록 어플리케이션 윈도우 뷰(Window View)를 상기 3D 데이터에 연동시키는 화면 로드(Scene Load)단계(C3)를 포함하여 수행되는 것을 특징으로 하는 3D 가상현실 컨텐츠의 실시간 제어방법.
KR1020120115042A 2012-10-16 2012-10-16 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법. KR101265121B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120115042A KR101265121B1 (ko) 2012-10-16 2012-10-16 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120115042A KR101265121B1 (ko) 2012-10-16 2012-10-16 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법.

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020110013945A Division KR101265123B1 (ko) 2011-02-17 2011-02-17 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어 시스템.

Publications (2)

Publication Number Publication Date
KR20120130145A KR20120130145A (ko) 2012-11-29
KR101265121B1 true KR101265121B1 (ko) 2013-05-16

Family

ID=47514393

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120115042A KR101265121B1 (ko) 2012-10-16 2012-10-16 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법.

Country Status (1)

Country Link
KR (1) KR101265121B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106558310A (zh) * 2016-10-14 2017-04-05 北京百度网讯科技有限公司 虚拟现实语音控制方法及装置
KR20180000790A (ko) 2016-06-23 2018-01-04 목포대학교산학협력단 디스플레이 기반 실시간 상호작용 헬스케어 장치 및 그 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102282487B1 (ko) 2014-05-08 2021-07-26 삼성전자주식회사 애플리케이션 실행 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180000790A (ko) 2016-06-23 2018-01-04 목포대학교산학협력단 디스플레이 기반 실시간 상호작용 헬스케어 장치 및 그 방법
CN106558310A (zh) * 2016-10-14 2017-04-05 北京百度网讯科技有限公司 虚拟现实语音控制方法及装置

Also Published As

Publication number Publication date
KR20120130145A (ko) 2012-11-29

Similar Documents

Publication Publication Date Title
US11288042B2 (en) Systems and methods for programming mobile devices
US10534605B2 (en) Application system having a gaming engine that enables execution of a declarative language
AU2019226135B2 (en) Natural language processing for language-driven synthesis of 3d scenes
CN102012906B (zh) 基于SaaS架构的三维场景管理平台及编辑浏览方法
EP3304286B1 (en) Data binding dependency analysis
US11016785B2 (en) Method and system for mirror image package preparation and application operation
CN110378063B (zh) 基于智慧建筑空间的设备部署方法、装置、以及电子设备
KR20190140802A (ko) 비디오 게임 엔진의 성능 향상을 위한 방법 및 시스템
US20120323950A1 (en) Embedded query formulation service
US11562517B2 (en) Method and system for populating a digital environment using a semantic map
CN115690375B (zh) 基于虚拟现实技术的建筑模型修改交互方法、系统及终端
KR101265121B1 (ko) 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어를 이용하는 3차원 가상현실 컨텐츠의 실시간 제어방법.
KR101265123B1 (ko) 음성엔진과 인터렉티브 3차원 어플리케이션을 실시간으로 연동시키는 3차원 가상현실 컨트롤 미들웨어 시스템.
Blumendorf et al. Dynamic user interface distribution for flexible multimodal interaction
CN106610855B (zh) 将3D模型导入3dsMAX的方法和装置
KR100692210B1 (ko) 게임 엔진에서 소정의 오브젝트를 렌더링하는 방법 및 상기랜더링 방법을 수행하는 프로그램이 기록된 기록 매체
JP7111309B2 (ja) 情報処理装置、学習装置、認識装置、静止画の生産方法、およびプログラム
KR102192376B1 (ko) 음역 모델을 이용하여 외래 동의어를 자동 추출하는 방법 및 시스템
KR20240044847A (ko) 확장된 현실을 만들기 위한 시스템 및 방법
CN114693848A (zh) 一种生成二维动画的方法、装置、电子设备及介质
CN117771663A (zh) 程序启动方法、装置、电子设备和存储介质
CN114100142A (zh) 游戏资源的处理方法及装置
CN117311708A (zh) 一种网页端3d场景内资源展示页面动态修改方法及装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160610

Year of fee payment: 4