KR20190110539A - 솔버용의 다수의 힘 어레이를 사용한 향상된 가상 현실 시스템 - Google Patents

솔버용의 다수의 힘 어레이를 사용한 향상된 가상 현실 시스템 Download PDF

Info

Publication number
KR20190110539A
KR20190110539A KR1020197020371A KR20197020371A KR20190110539A KR 20190110539 A KR20190110539 A KR 20190110539A KR 1020197020371 A KR1020197020371 A KR 1020197020371A KR 20197020371 A KR20197020371 A KR 20197020371A KR 20190110539 A KR20190110539 A KR 20190110539A
Authority
KR
South Korea
Prior art keywords
avatar
user
program code
virtual
array
Prior art date
Application number
KR1020197020371A
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 딥모션, 인크.
Publication of KR20190110539A publication Critical patent/KR20190110539A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • 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/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16
    • G06F3/005Input arrangements through a video camera
    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • 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/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • 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/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

상호 작용식 아바타 디스플레이 시스템은, 센서에 의해 감지되는 사용자의 움직임에 응답하여 가상 공간 내에서 움직이는 아바타를 포함하는 가상 공간의 컴퓨터 생성 뷰를 제공한다. 감지되는 움직임의 수는, 아바타 움직임의 자유도의 수보다 더 적다. 상호 작용식 아바타 디스플레이 시스템은, 아바타의 움직일 수 있는 바디 부분에 적용할 가속도의 어레이를 계산하고, 아바타에 대한 제약의 세트, 및 어쩌면 또한, 가상 공간에서의 환경 오브젝트도 고려하여, 움직일 수 있는 바디 부분의 질량 및 움직일 수 있는 바디 부분에 대한 역동역학 힘값의 어레이 및 밸런스 제어 힘값의 어레이 및 이동 제어 힘값의 어레이 중 하나 또는 둘 모두로부터 계산되는 힘의 어레이로부터 운동 방정식의 해를 구하는 것에 의해 가속도의 어레이를 계산한다.

Description

솔버용의 다수의 힘 어레이를 사용한 향상된 가상 현실 시스템
관련 출원에 대한 상호 참조
본 출원은 미국 특허 가출원 제62/433,764호(출원일: 2016년 12월 13일, 발명의 명칭: "VIRTUAL REALITY SYSTEM")에 대한 우선권을 주장하며, 이 기초출원은 참고로 본 명세서에 통합된다.
발명의 분야
본 개시내용은 일반적으로 가상 현실에 관한 것이다. 본 개시내용은 특히, 사용자로부터의 입력에 기초하여 사용자에 대한 가상 현실 환경을 생성 및 제시하기 위한 장치 및 기술에 관한 것이다.
가상 현실 환경에서, 사용자는, 종종, 헤드 마운트형 디스플레이(head-mounted display: HMD) 또는 핸드헬드 VR 컨트롤러와 같은 VR/AR(virtual reality/augmented reality: 가상 현실/증강 현실) 입력 디바이스로부터 감지되는 액션과 같은 사용자 액션에 응답하여, 컴퓨터에 의해 생성되는 감각 입력을 제시 받는다. 가상 현실 컴퓨터 시스템의 출력은, 시각적 출력, 오디오 출력, 터치 출력(햅틱, 압력, 온도 등) 및 다른 출력을 포함할 수도 있을 것이다. 출력은 사용자를 몰입시키는 방식으로 사용자에게 제시된다. 예를 들면, 사용자는, 사용자를 경험에 몰입시키기 위해 사용자의 눈을 덮는 헤드기어를 착용하고 있을 수도 있을 것이다. 헤드기어는 머리 움직임에 관한 센서 입력을 프로세서에게 제공할 수도 있을 것이다. 시각적 출력을 생성하는 프로세서가, 사용자가 사용자의 머리 움직임에 대해 풍경을 안정적인 것으로 인식하도록, 센서 입력에 기초하여 그 시각적 출력을 수정할 수 있는 경우, 그것은 경험을 몰입적으로 만들 수 있다. 시각적 출력은, 명백한 삼차원(three-dimensional: 3D) 뷰를 형성하도록 사용자에게 제시되는, 한 쪽 눈당 하나씩의 두 개의 비디오 피드의 형태일 수 있을 것이다.
프로세서는 컴퓨터 생성 화상(computer-generated imagery: CGI) 기술을 사용하여 시각적 출력을 생성한다. CGI 출력을 생성하는 하나의 접근법은, 오브젝트의 기하학적 모델 및 장면 설명을 포함하는 메모리에 프로세서가 액세스하는 것이다. 장면 설명은, 가상 공간에서의 다양한 오브젝트에 대한 위치를 나타낼 수도 있을 것이다. 오브젝트는, CGI 기술 분야에서 일반적으로 알려져 있는 바와 같은, 솔리드 오브젝트(solid object), 광원, 배경, 텍스처 등일 수 있다. 프로세서 또는 별개의 그래픽 칩에 의해 실행되는 프로그램 코드로서 구현될 수도 있을 렌더러(renderer)는, 이들 오브젝트, 그들의 위치, 및 가상 "카메라"의 파라미터(예를 들면, 가상 카메라가 "위치되는" 가상 공간 내의 위치인 명시된 뷰포인트(viewpoint), 가상 카메라의 카메라 앵글인 명시된 뷰 방향, 및 어쩌면 또한 카메라의 뷰잉 윈도우(viewing window)의 경계)를 취한다. 그들 요소를 나타내는 데이터로부터, 렌더러는, 장면 내의 모든 것이 카메라 파라미터와 관련이 있는 곳을 (어쩌면 90분의 1초마다 한 번씩) 결정하고 (3D 뷰잉(viewing)의 경우 각각의 눈마다 하나씩) 이미지를 생성한다.
몰입감 있는 경험을 위해, 가상 공간의 좌표계는, 사용자에 의해 점유되고 있는 실세계 공간의 좌표계에 대해 고정되어야 한다는 것이 종종 요구된다. 사용자가 사용자의 머리를 회전하는 경우, 프로세서는, 풍경이 사용자에 대해 이동되고 있지 않다는 것을 사용자가 인식하도록, 사용자의 머리 움직임과 정렬되도록 카메라 앵글을 이동시킬 것을 원할 것이다. 실세계 공간에서 사용자가 이리저리 돌아다니는(또는 사용자가 한 장소에 실제로 고정되더라도, 사용자 이동을 제공하는 장치 상에서 이동하는) 능력이 있는 경우, 프로세서는, 디스플레이된 풍경이, 실세계 공간에서의 사용자 자신의 움직임의 사용자의 인식과 일치하도록, 가상 카메라의 뷰포인트의 위치를 상응하게 이동시킬 것을 원할 것이다.
프로세서가 카메라 뷰포인트 및 뷰 앵글에 대한 조정을 행하는 방법을 알기 위해, 프로세서는 움직임에 관한 정보를 제공받는다. 이것은, 헤드기어 상에 장착되는 가속도계 및/또는 자이로스코프 및 움직임을 검출할 다른 센서의 센서 데이터의 형태일 수도 있을 것이다. 따라서, VR 장비(rig)는, 회전 센서, 다른 모션/방위 센서, 프로세서, 필요한 화상을 생성하기 위한 프로그램 코드 등을 갖는 헤드기어를 포함할 수도 있을 것이다. 몇몇 VR HMD는, 방 규모 공간에서 HMD 및 다른 컨트롤러의 위치 결정을 위한 다른 기술을 사용할 수도 있을 것이다.
종래의 VR 및 아바타 애니메이션 시스템은 그들의 용도를 가지고 있지만, 그러나, 여전히 향상이 요망되고 있다.
상호 작용식(interactive) 아바타 디스플레이 시스템은, 센서에 의해 감지되는 사용자의 움직임에 응답하여 가상 공간 내에서 움직이는 아바타를 포함하는 가상 공간의 컴퓨터 생성 뷰(computer-generated view)를 제공한다. 감지되는 움직임의 수는, 아바타 움직임의 자유도의 수보다 더 적다. 상호 작용식 아바타 디스플레이 시스템은, 아바타의 움직일 수 있는 바디 부분(movable body part)에 적용할 가속도의 어레이를 계산하고, 아바타에 대한 제약(constraint)의 세트, 및 어쩌면 또한, 가상 공간에서의 환경 오브젝트도 고려하여, 움직일 수 있는 바디 부분의 질량 속성 및 움직일 수 있는 바디 부분에 대한 역동역학 힘값(inverse dynamics force value)의 어레이 및 밸런스 제어 힘값의 어레이 및 이동 제어 힘값(locomotion control force value)의 어레이 중 하나 또는 둘 모두로부터 계산되는 힘의 어레이로부터 운동 방정식의 해를 구하는 것에 의해 가속도의 어레이를 계산한다.
도 1은 역동역학 토크(inverse dynamic torque)를 예시한다.
도 2는 메인 바디 프레임에 인가되는 밸런스 토크(balance torque)를 예시한다.
도 3은 이동 토크(locomotion torque)를 예시한다.
도 4는 힘 어레이 벡터의 성분에 의한 합산을 예시한다.
도 5는 합산된 힘 어레이 벡터 및 제약에 대한 해를 구하기 위한 솔버(solver)를 예시한다.
도 6은 사용자와의 상호 작용을 위해 물리적 엔진을 사용하는 VR 시스템을 예시한다.
도 7은 본 명세서에서 설명되는 기능을 수행하기 위해 프로세서에 의해 사용될 수도 있는 구조를 예시한다.
도 8은 본 명세서에서 설명되는 프로세스를 수행하기 위해 사용될 수도 있는 컴퓨터의 예를 예시한다.
도면은 본 명세서에서 설명되는 실시형태를 이해하는 데 필수적인 것은 아니다.
하기의 설명에서, 다양한 실시형태가 설명될 것이다. 설명의 목적 때문에, 실시형태에 대한 완전한 이해를 제공하기 위해 특정한 구성 및 세부 사항이 기술된다. 그러나, 실시형태는 특정한 세부 사항 없이도 실시될 수도 있다는 것이 기술 분야에서 숙련된 자에게 또한 명백할 것이다. 더구나, 설명되고 있는 실시형태를 모호하게 하지 않기 위해, 널리 공지된 피쳐는 생략될 수도 있거나 또는 단순화될 수도 있다.
실시형태가 실행할 기본 하드웨어는 VR 장비일 수 있는데, VR 장비는, 사용자가 그들의 얼굴에 착용하는 헤드기어(헤드 마운트형 디스플레이, 또는 "HMD")를 포함할 수도 있을 것이고, 헤드기어 및 사용자의 손에 계기가 갖춰진 글러브(instrumented glove)를 착용하는 경우 사용자가 볼 수 있는 시각적 출력을 포함한다. VR 장비(또는 더 일반적으로, 기본 하드웨어)는, 코드를 실행하고 기본 하드웨어 기능을 수행하는 데 필요로 되는 바와 같은 프로세서, 프로그램 스토리지, 데이터 스토리지 메모리 및 통신 요소를 포함한다. 기본 하드웨어의 예는, 글러브 대신, 오큘러스 터치(Oculus Touch)(상표명) 컨트롤러 또는 HTC 바이브(HTC Vive)(상표명) 컨트롤러 또는 PSVR의 MOVE(상표명) 컨트롤러와 같은 핸드헬드 VR "컨트롤러"의 사용자를 포함한다.
VR 장비는 사용자의 머리의 6 자유도(degrees-of-freedom: DOF) 모션 추적 및 손마다 적어도 3 DOF의 손 방위를 가질 수 있다. 옵션 사항으로(optionally), 각각의 손에 대한 위치 추적이 또한 있으며, 손마다 6 DOF로 나타난다. 이 데이터는 VR 위치 추적 센서로부터 판독되며 종래의 방식으로 메모리에 저장될 수 있다. 몇몇 실시형태에서, 위치에 대해서는 없고 손 방위에 대해서만 단지 세 개의 DOF를 가질 수도 있는 단순화된 컨트롤러가 사용된다. 위치 감지는 행하기가 더 어렵지만, 그러나, 하이 엔드 VR에서는 행해질 수 있다.
몇몇 실시형태에서, VR 장비는, 머리 및 양쪽 손 외에, 뼈대(bones)로부터의 더욱 포괄적인 위치 감각 입력을 제공하기 위해, 사용자의 임의적인 바디 부분, 예컨대 무릎 및 발에 부착될 수 있는 추가적인 VR 위치 추적기를 포함할 수 있다. 일반적으로 "위치" 추적은, 병진 위치 및 회전 위치(방위로 또한 칭해짐) 둘 모두를 포함할 수 있다. 몇몇 VR 장비는, 세 개의 방위 추적기를 가지며, 추가적인 추적기가 추가될 수 있고, 따라서, 아바타가 3 내지 6개의 추적기로부터의 센서 입력을 사용하여 애니메이션화될 수도 있을 것이다. 달리 나타내지 않는 한, 몇몇 개수의 추적기를 사용하는 여기에서의 예는 상이한 수의 추적기를 가지고 작용할 수 있다.
또한, VR 장비의 기능을 수행하기 위해 그 VR 장비가 실행하는 코드를 개발자가 생성할 수 있는 개발 시스템인 별개의 하드웨어 시스템이 또한 있을 수도 있을 것이다. 하기에 설명되는 기능에서, 코드는 VR 장비에 의해 실행되지만, 그러나 그들 피쳐 중 몇몇은 개발 시스템에서 생성된다. 개발 시스템은 개발자의 사용자 인터페이스, 컴파일러 및 개발 도구와 같은 프로그램을 위한 스토리지, 및 개발 시스템이 VR 장비에 코드 업데이트를 전송할 수 있는 통신 링크를 가질 것이다.
몇몇 실시형태에서, 개발 시스템과 VR 장비 사이에는 프로그램 배포 플랫폼이 존재하며, 그에 의해, VR 장비는, 개발 시스템이 프로그램/앱 및/또는 그에 대한 업데이트를 이전에 로딩했던 온라인 애플리케이션 배달 스토어 또는 서비스일 수도 있는 프로그램 배포 플랫폼과 상호 작용한다.
몇몇 실시형태에서, VR 장비의 프로세싱 부분은 분리되고, 유선(wire)을 통해 HMD에 연결된다. 몇몇 실시형태에서, VR 장비의 프로세싱 부분은 분리되고 HMD와 무선으로 통신한다. 몇몇 실시형태에서, VR 장비의 프로세싱 부분은 헤드기어 내부에 임베딩된다. 다른 변형예도 가능하다.
VR 장비의 시각적 출력은, 가상 공간에 존재하도록 모델링되는 오브젝트에 의해 정의되는 가상 공간의 컴퓨터 생성 화상에 대응한다. VR 효과를 위해, 가상 공간에서 모델링되는 시각적 오브젝트를 포함하는 장면이 사용자의 물리적 기준 프레임에서 일정하게 유지되는 것처럼 사용자에게 보이도록, 시각적 출력은, 사용자가 헤드기어를 움직임에 따라, 변할 것이다.
전신 아바타(full body avatar)
가상 공간에 존재하도록 모델링되는 오브젝트는, VR 장비의 사용자를 위한 전신 아바타의 모델을 포함할 수 있다. 더 일반적인 경우에, 전신 아바타는 VR 시스템 또는, 시스템의 출력이 다수의 입력에 기초한 아바타 이동의 시뮬레이션 또는 표현인 다른 시스템의 일부일 수 있는 애니메이션 프로세스에서 사용되는데, 다수의 입력 중 하나는, 아바타의 애니메이션이 인간 또는 다른 바디의 감지된 움직임을 따르도록, 또는 인간 또는 다른 바디의 감지된 움직임에 의해 구동되도록 하는, 인간 또는 다른 센서 검출 바디(sensored body)로부터 감지되는 움직임이다. 달리 나타내지 않는 한, 더욱 일반적인 경우가 적용될 것으로 이해되어야 하지만, 본 명세서에서의 많은 예는 다양한 개념을 예시하기 위해 VR 장비를 사용한다. 그러한 예시 및 예에서, 사용자의 머리가, 어쩌면 병진, 회전에서, 어떻게 움직이고 있는지를 나타내는 센서를 포함하는 헤드 마운트형 디스플레이를 착용하고 있는 머리와 같은 센서 검출 바디 부분을 갖는, 그리고 또한, 사용자의 손이, 어쩌면 병진, 회전, 뿐만 아니라, 손목 및 손가락 움직임과 같은 개개의 관절(joint) 움직임에서, 어떻게 움직이고 있는지를 나타내는 센서를 포함하는 사용자의 손에 착용되는 계기가 갖춰진 글러브를 갖는 사용자, 일반적으로 사람이 존재한다. 그 다음, 프로세싱 시스템, VR 장비 또는 그 밖의 것은, 그들 센서 입력을 사용하여, 본 명세서에서 아바타로 언급되는, 관절로 이어진 캐릭터를 애니메이팅하도록 작업을 부과받는다.
애니메이션은 때로는 센서 판독치가 기록 및 저장된 이후 발생할 수도 있을 것이지만, 그러나, 종종, 애플리케이션은, 센서 판독 이후 어떤 시간 지연에서 애니메이션을 생성할 수 있는 것과 같은, 실시간 또는 거의 실시간에서 발생하는 애니메이션을 가지는데, 이 경우, 그 시간 지연은 60 또는 90초당 프레임(frames per second: FPS) 비디오 시퀀스 중 하나의 프레임이거나, 또는 그 시간 지연은, 프로세싱 시스템이 사용되는 애플리케이션에 대해 수용 가능한 지연인 적은 수의 프레임이다. 몇몇 경우에, 프레임을 생성하는 데 필요한 모든 프로세싱을 수행하는 데 1/90 초 미만이 이용 가능하다. 사용자의 움직임에 의해 사용자가 아바타를 애니메이팅하고 있다는 그리고, 아바타로 하여금, 아바타가 애니메이팅되는 가상 공간의 환경과 상호 작용하게 하고 있다는 인상을 생성하기 위해, 애니메이션은 상호 작용식 시스템에서 실시간으로 또는 거의 실시간으로 사용자에 대해 디스플레이될 수도 있을 것이다. 환경은 아바타가 상호 작용하는 환경 오브젝트를 포함할 수도 있는데, 그 환경 오브젝트는 사용자의 실세계에서 존재하는 요소를 표현할 수 있고, 예컨대, 사용자가 서 있는 플로어가 아바타가 통과할 수 없는 플로어 환경 오브젝트에 의해 표현되고, 환경 오브젝트는, 가상 공간에서는 존재하지만 그러나 사용자의 실세계 공간에서는 존재하지 않는 가상 벽, 박스, 볼(ball), 도구 등을 포함할 수도 있을 것이다.
본 명세서에서 설명되는 바와 같이, 아바타는 센서 판독치보다 더 많은 자유도를 가질 수도 있을 것이다. 예를 들면, 센서 판독치는, 사용자의 양쪽 손의 회전 및 병진 및 사용자의 머리의 회전의 표시만을 제공할 수도 있을 것이지만, 아바타는 머리 회전, 양쪽 손의 각각의 회전, 양쪽 손의 각각의 병진뿐만 아니라, 몸통(torso)의 병진, 팔꿈치, 무릎, 발 배치, 다리 회전 등에 대한 자유도도 또한 갖는다.
아바타는, 머리, 목, 등, 골반, 엉덩이, 무릎, 발목, 발, 어깨, 팔꿈치, 손목 및 손과 같은 바디 부분을 갖는 관절로 이어진 캐릭터로서 모델링될 수 있다. 각각의 바디 부분은 위치 제약(예를 들면, 그들은 그들이 부착되는 다른 바디 부분에 부착된 채로 유지되어야 함) 및 관절 한계 제약(joint limit constraint)(예를 들면, 팔꿈치가 제한된 운동 범위를 가짐)을 갖는다.
전신 아바타는 메모리에서 캐릭터 모델로서 표현된다. 그 캐릭터 모델에서는, 소켓 관절(socket joint), 힌지 관절(hinge joint), 유니버설 관절(universal joint), 미끄럼 관절(prismatic joint), 또는 다른 관절 타입을 사용하여 자신의 모체 바디 부분(parent body part)에 각각 연결되는 바디 부분이 있다. 캐릭터 모델은, (뼈대에서와 같이) 약간의 강성 및 (피부 및 근육에서와 같이) 약간의 유연성을 갖는 반 강체(semi-rigid body)를 포함할 수도 있을 것이다. 바디 부분 각각은, 제로가 아닌 정의 가능한 질량을 가지고 모델링된다(비록 일부는 부작용 없이 제로 질량을 가지고 모델링될 수도 있을 것이다).
캐릭터 모델을 프로세싱함에 있어서, 기본 하드웨어는, 제약을 충족시키는 그리고 가상 세계에서 다른 물리화된 오브젝트와 상호 작용하는 것의 물리적 현상과 또한 부합하도록 바디 부분의 움직임을 제어하는, 다른 바디 부분과의 상호 작용에 따라 바디 부분의 움직임을 제약할 물리적 엔진을 실행할 것이다.
전신 아바타의 계층 구조는 고정될 수도 있을 것이고, 그 결과, VR 장비는 런타임시에 변경되지 않는 하나의 계층 구조의 바디 부분 상에서 동작한다. 다른 실시형태에서, 사용자가 계층 구조를 스위칭할 수 있을지도 모른다. 예를 들면, 사용자는, 바디 부분 및 계층 구조에서의 대응하는 변화와 함께, 가상의 인간으로부터 가상의 새 여덟 개의 다리가 달린 생명체로 변할 수 있다. 계층 구조가 동일하게 유지될 수도 있을 것이지만(예를 들면, 각각의 팔꿈치에 각각 연결되고 둘 모두가 몸통에 연결되는 두 개의 팔), 바디 부분의 사이즈 조정은 사용자마다 변할 수도 있을 것이다.
전신 아바타의 움직임은, (사용자의 머리 및 손의 움직임을 나타내는 센서로부터 판독되는 데이터에 의해 결정되는 바와 같은) 실세계 머리 및 손의 움직임에 의해 구동될 수 있다. 통상적으로, 사용자는, 바디 부분의 움직임을, 실세계에서 그들의 대응하는 사용자 바디 부분의 움직임과 매치하도록, VR 장비의 추적기 하에서 직접적으로 예상할 것이다. 그러나, VR 장비에 의해 직접적으로 추적되지 않는 바디 부분의 움직임의 경우, 아바타 추적 시스템은 VR 디스플레이 출력에서 사용자에게 렌더링될 그들의 위치 및 방위를 결정할 것이다. 아바타 추적 시스템은, 아바타 캐릭터 모델의 물리적 제약을 사용하고 다른 가상 세계 제약은 전신 아바타를 정의하기 위해 사용된다. 이것은, 특정한 이동 사이클을 따르도록, 목적하는 포즈를 추적하도록, 그리고 여전히 밸런스를 맞춘 상태로 유지하도록 가상 아바타를 구동시킨다. 이것은, 시뮬레이팅된 아바타의 골격의 각각의 관절에 대한 소정의 토크를 결정 및 적용하는 것에 의해 행해질 수 있다.
허상의 손(ghost hand)은, VR HMD 및 손 컨트롤러/글러브에 의해 추적되는 사용자의 머리 및 손에 대응하는 허상의 엔드 이펙터(end effector)로서 구현될 수도 있을 것이다.
"허상의 손" 기술은, 시뮬레이팅된 손 위치와 사용자의 실제 손 위치 사이의 불일치를 조정하기 위해 사용될 수 있다. 아바타 시스템은, 손의 시뮬레이팅된 위치에서 고도로 상세한 손 모델을 가상 세계에서 렌더링할 수 있다. 동시에, 허상의 손은, VR HMD 및 손 컨트롤러/글러브에 의해 추적되는 사용자의 머리 및 손에 대응하는 엔드 이펙터에 1 대 1 매핑하는 덜 침습적인 허상의 스타일로서 렌더링될 수도 있을 것이다.
전신 아바타 교정
VR 장비를 사용함에 있어서, 사용자는, 미리 결정된 신체 움직임에서 사용자의 움직임을 관찰하고, 사용자의 바디 부분에 대한 바디 부분 길이(및 어쩌면 다른 특성)를 계산하고, 그들 길이 및 특성을 사용하여 전신 아바타의 캐릭터 모델을 업데이트하는 교정 프로그램에 진입할 수도 있을 것이다. VR 장비는, 가상 세계에서 사용자 또는 사용자의 바디 부분의 일부를 시뮬레이팅할 때, 그 업데이트된 캐릭터 모델을 사용할 것이다. 따라서, 사용자가 키가 큰 사람이면, 사용자의 아바타는 가상 세계에서 키가 더 클 것이고, 사용자가 더 짧은 암 스팬(arm span)을 가지면, 가상 세계에서의 아바타는 더 짧은 리치(reach)를 가질 것이다.
교정 프로세스에서, 사용자는 소정의 포즈를 취하도록 요청받는다. 예를 들면:
a) 사용자가 몸통을 똑바로 세우고, 다리를 서로 가깝게 하고, 팔을 전방으로 곧게 수평으로 유지한 상태에서, VR 장비가, 위치 감지를 위해 이용 가능한, 기본 하드웨어의 일부인 센서로부터 사용자의 머리, 손 등의 위치를 기록한다.
b) 사용자가 몸통을 똑바로 세우고, 다리를 모으고, 상완을 전방으로 곧게 수평인 그대로 곧게 수평으로 유지하고, 하완을 상방으로 직각으로 구부린 상태에서, VR 장비가 그 위치를 기록한다.
c) 사용자가 몸통을 똑바로 세우고, 다리를 서로 가깝게 하고, 팔을 바디 측면을 따라 자연스럽게 떨어뜨린 상태에서, VR 장비가 그 위치를 기록한다.
다른 자세가 요청될 수도 있을 것이다. 요청은, 지시 사항을 따르기 위해 시각적 출력 상에서 사용자에게 제시될 수 있다. VR 장비 프로세서는, 아바타 관절의 대략적인 상대적 위치를 계산하기 위한 그리고 사용자의 바디에 더욱 정확하게 맞도록 교정되는 전신 아바타 골격을 가지기 위한 프로그램 코드를 포함한다.
물리적 솔버 및 다수의 힘 어레이
하이 레벨에서, 본 명세서에서 설명되는 가상 현실 시스템은, 가상 현실 하드웨어 또는 다른 디바이스에 의해 측정되는 바와 같은, 사용자의 바디 부분의 움직임에 대응하는 데이터에 의해 표현될 수 있는 입력을 받아들인다. 데이터는, 지장을 주는 지연 없이 디스플레이될 수 있도록, 1/90초 또는 1/90초의 몇몇 단위 이내와 같은, 거의 실시간으로 획득되는 것 및 거의 실시간으로 프로세싱되는 것을 필요로 한다. 사용자의 바디 부분의 움직임은, 몇몇 좌표 공간에서 위치 "트랙(track)"으로서 기록 및 참조될 수 있다. 시간에 걸친 위치 트랙으로부터, 미분 또는 다른 방법에 의해 속도 트랙이 획득될 수 있고, 시간에 걸친 속도 트랙으로부터, 미분 또는 다른 방법에 의해 가속도 트랙이 획득될 수 있다.
본 명세서에서 설명되는 바와 같은 물리적 엔진은, 사용자의 바디 부분 중 단지 몇몇으로부터의 입력을 사용하여 자연스러운 모습의 움직임 데이터(또는 애니메이션 비디오 그 자체)를 출력할 수 있다. 예를 들면, 가상 현실 시스템에서의 애니메이팅된 아바타는, (가능한 경우) 아바타의 대응하는 바디 부분을 사용자의 것과 매칭시키면서, 사용자의 오른손, 왼손 및 머리의 움직임의 입력에만 기초하여 자연스럽게 이동하도록 만들어질 수도 있을 것이다. 다른 입력이 제공될 수도 있을 것이다. 예로서, 사용자는 곡선을 그리는 모션에서 그들의 계기가 갖춰진 오른손을 위로 그리고 오른쪽으로 움직일 수도 있을 것이다. 그 다음, 물리적 엔진은 아바타의 오른손을 충족시키는 목표로서 그 위치 트랙을 사용한다. 목표가 아바타에 대한 리치를 넘을 만큼 충분히 사용자의 손이 멀리 이동하는 경우, 물리적 엔진은, 아바타의 바디의 다른 부분, 예컨대 다리를 이동시킬 방법을 결정할 것이고, 그 결과, 가상 현실 공간에서, 비록 물리적 엔진이 사용자의 다리(이것은 심지어 움직이고 있지 않을 수도 있을 것임)의 움직임에 관한 입력을 갖지 않는 경우에도, (아바타 손이 아바타로부터 분리되지 않으면서) 오른손이 목표 위치에 도달할 수 있도록 아바타는 걷기 시작한다.
센서 검출 사용자 신체 부위에 대응하는 아바타 바디 부분을 이동시키는 것 외에, 예를 들면, 그들 아바타 바디 부분을 사용자의 움직임으로부터 결정되는 목표 위치/방위까지 추적하게 하는 것 외에, 물리적 엔진은 또한, 아바타의 모션을 자연스럽게 보이게 그리고 실세계에서 운동 법칙이 동작하는 방법과 맞춰지게 만들도록 작용한다. 예를 들면, 아바타의 질량 중심이 아바타의 지원 폴리곤(supporting polygon)(예를 들면, 아바타의 양쪽 발을 포함하는 컨벡스 헐(convex hull)인 그라운드 상의 폴리곤) 외부에서 끝나는 경우, 운동 법칙은, (점착성의 발이 없는 경우) 아바타가 넘어져야 한다는 것을 지시한다. 물리적 엔진은, 대신, 아바타가 넘어지기보다는 밸런스를 회복하기 위해 자신의 다리를 이리저리 움직여야 한다는 것을 결정할 것이다. 다리를 구동하여 밸런스를 유지하기 위해 어떤 리밸런싱 또는 셔플링이 필요로 되는지를 결정하는 것에 대한 프로세싱은, 물리적 엔진의 밸런스 컨트롤러에 의해 행해질 수 있다. 아바타 바디 부분을 추적하는 동안, 아바타의 캐릭터 프레임의 대응하는 움직임이 있을 수도 있을 것이다. 물리적 엔진은, 입력 VR 디바이스의 트랙으로부터, 캐릭터 프레임의 목적하는 선속도 및 각속도를 계산하고, 사용자의 하이 레벨 이동 의도와 매치하도록 아바타의 결정된 "이동 요구(locomotion need)"를 충족시키는 데 필요로 되는 토크를 생성하는 이동 컨트롤러를 포함할 수 있다. 자연스럽게 보일 뿐만 아니라, 사용자의 추적된 엔드 이펙터가 있어야 하는 곳에 대한 사용자의 기대와도 또한 매치하는 아바타 애니메이션을 생성하기 위해서, 본 명세서에서 설명되는 물리적 엔진은, 추적 요구, 밸런스 요구 및 이동 요구를 동시에 충족시킬 수 있다.
종래 기술의 접근법에서, 사용자는, 가상의 현실 시스템이 자연스럽게 보이는 움직임을 위한 모션 캡처(motion capture: "mocap(모캡)")를 수행하는 것을 허용하기 위해 많은 디바이스를 사용하여 또는 많은 오브젝트와 함께 센서 검출된다. 배우(actor)의 전신 모션을 캡처하기 위해서는, 모캡 시스템은 통상적으로, 배우의 모든 필수적인 바디 부분의 위치의 직접적인 추적을 행하기 위해 20 내지 100개의 규모의 상당한 수의 센서를 필요로 한다. 모캡 시스템에서 사용되는 물리적 시뮬레이션은 없으며, 배우의 바디 부분의 추적된 모션을, 배우의 휴머노이드 토폴로지와 유사한 토폴로지를 갖는 추상 골격으로 다시 겨냥하기 위해 운동학적 접근법(kinematic approach)만이 사용된다. 이것은 다루기 힘들 수 있고, 따라서, 사용자의 움직임을 추적하는 아바타에 대해 자연스럽게 보이는 움직임을, 그 사용자로부터의 몇몇 입력만으로부터 생성할 수 있다는 이점이 있다.
애니메이션은 관절로 이어지는 골격 데이터 구조체를 사용한다. 관절로 이어지는 골격 데이터 구조체는, 뼈대의 리스트, 관절이 두 개 이상의 뼈대를 연결하는 관절의 리스트, 관절의 허용된 움직임 범위를, 종종 허용된 각도의 항으로 명시하는 관절 제약(joint constraint)을 포함한다. 이러한 관절로 이어지는 골격 데이터 구조체는 트리 구조체로 간주될 수 있다. 애니메이션이 완료되는 경우, 애니메이션 프로세스는 제약을 준수하고, 그 결과, 하나의 뼈대가 관절에 의해 다른 뼈대에 연결되는 경우, 뼈대는 분리되지 않고 관절은 그 관절에 대한 허용된 운동 범위 내에서만 이동한다.
역운동학(Inverse Kinematics: IK)은, 몇몇 바디 부분에 대한 목표 위치를 받아들이고, 관절 회전의 어떤 세트가, 아바타의 바디 부분이 목표 시간에 그들의 목표 위치와 조우하게 되는 것으로 나타날지를 결정한다. IK는 아바타 애니메이션 시스템에서 일반적으로 사용된다. 입력 데이터에서 모든 바디 부분이 표현되지는 않는 경우, 즉, 그들의 트랙이 입력의 일부가 아닌 경우, IK 엔진은, 다른 바디 부분이 목표 위치 제약 조건을 충족시키고 있는 경우에 그들 바디 부분이 있을 수도 있는 곳을 추론할 수 있다. 그러나 때때로 이것은 부자연스럽게 보인다.
IK 솔버는, 관절로 이어진 다관절 뼈대 구조체의 체인, 및 그로부터 엔드 이펙터 뼈대의 몇몇 목표 위치를 제공받고, 그것은, 엔드 이펙터(하드웨어 위치 추적기에 부착되는 체인 상의 최종 세그먼트)가 입력 위치를 추적하도록, 다관절 뼈대 구조체의 베이스로부터 엔드 이펙터까지의 중간 관절의 중간 관절 회전을 계산할 것이다. 예를 들면, 소정의 시간에 손가락 끝이 소정의 위치에 있어야 한다는 것이 제약인 경우, IK 솔버는, 중간 관절 타입에 의해 요구되는 어떠한 기하학적 형상의 제약도 위반하지 않으면서, 아바타의 손가락 끝이 그 소정의 시간에 그 소정의 위치에 있는 속성을 갖는 뼈대 구조체의 골격 포즈 및 위치를 결정할 것이다. IK 기반의 추적 시스템의 한계는 부자연스러운 포즈(예를 들면, "뒤로 꺽인 팔꿈치") 생성을 포함하는데, 그 이유는, 그것이, 기저의 골격의 운동을 지배하는 모든 역학 및 물리적 법칙을 무시하기 때문이며, 종종, 그것이 물리적으로 실제의 양식으로 결과와 충돌할 것으로 기대되는 환경의 디지털 오브젝트와 잘 상호 작용하지 않고, 하위 몸통 움직임 또는 걷기와 같은 이동을 잘 핸들링하지 못하기 때문이다. 예를 들면, IK 기반의 VR 아바타 시스템의 공통적인 문제는, 그것이 아바타의 발과 다리를 둘 곳을 알지 못한다는 것 및 그것이 하체(lower body)의 키 프레임 애니메이션을 IK 추적 상체(IK-tracked upper body)와 혼합하는 것을 필요로 한다는 것, 또는 고정된 발로부터 손과 머리와 같은 추적된 엔드 이펙터까지 그것이 IK 체인을 실행할 수 있도록 아바타의 발이 땅에 고정되는 것을 그것이 요구할 것이다는 것이다.
향상된 아바타 애니메이션 시스템 및 시뮬레이션 엔진은 사용자의 생체 기계적 전신 휴머노이드 모델(bio-mechanical full body humanoid model)의 시뮬레이션에 기초할 수 있다. 이 모델은, 관절 제약(예를 들면, 다리는 엉덩이 및 무릎에 연결되어야 함), 관절 한계(예를 들면, 팔꿈치는 5도에서부터 180도까지 구부러질 수 있지만, 그 이상은 구부러질 수 없다), 및 질량 속성 및 바디 부분의 충돌 형상을 포함하면서 메모리에 저장된다. 예를 들면, 팔꿈치 및 회전의 변화하는 각도를 갖는 솔루션을 허용하는"힌지" 관절이 팔꿈치를 모델링할 수 있다. 데이터는 또한, 근육 세부 정보를 포함할 수 있는데, 근육 세부 정보는 골격의 관절에 작용되는 토크로서 시뮬레이팅될 수 있다. 사용자의 생체 기계적 모델은, 아바타와 상호 작용할 수 있는 테이블, 벽, 장애물 등과 같은 동적으로 시뮬레이팅된 다른 환경 오브젝트와 함께, 지상 충돌 및 중력을 사용하여 실시간으로 시뮬레이팅된다.
시뮬레이션 엔진이 제한된 수의 뼈대(통상적으로 1 내지 6개의 뼈대)의 목표 위치를 수신하는 경우, 나머지 사용자 뼈대가 어디에 위치되는지를 추측하기 위해 그들을 IK 솔버로 전달하는 대신, 엔진은 그들 목표 위치를 복수의 힘 어레이 생성기(force array generator)에 입력한다. 몇몇 예에서, 두 개의 힘 어레이 생성기가 사용되고, 다른 예에서는, 두 개 이상이 사용된다. 아바타의 결과적으로 나타나는 이미지는 모션에서 더욱 자연스럽게 보일 것이고 공유된 가상 공간에서 다른 시뮬레이팅된 환경 오브젝트 또는 다른 사용자의 아바타와 상호 작용할 수 있다. 시뮬레이션 엔진은, 아바타의 각각의 뼈대의 목표를 프로세싱하고 그들을 힘 어레이 생성기에 제공한다.
하나의 힘 어레이 생성기는, 추적된 뼈대의 위치 목표가 충족되도록 아바타의 전신 골격을 구동하기 위해, 역동역학 프로세스를 사용하여, 아바타의 각각의 제어된 가상 근육에 의해 가해질 필요가 있는 힘을 나타내는 힘 어레이(ID 힘 어레이)를 계산한다. 상황에 따라, 힘은, 가상 근육이 바디 부분 상의 소정의 힘줄 부착 위치에 적용하는 토크일 수도 있을 것이다. 따라서, 바디 부분 상의 소정의 장소에 힘이 인가되는 경우, 이것은 그 바디 부분의 회전 지점에서 인가되고 있는 토크와 동등할 수도 있을 것이다.
역동역학을 사용하여, 물리적 엔진은, 사용자의 바디에 부착되는 VR/AR 센서로부터의 입력 위치와 매치하도록, 관절로 이어진 다수의 강체(articulated multiple rigid body)에 대한 기저의 트리 구조체의 엔드 이펙터를 구동시킬 힘 또는 토크의 어레이를 계산할 수 있다.
전진 동역학 계산은, 골격의 바디 부분에 인가되는 주어진 몇몇 가속도 및 힘이 그들 바디 부분을 새로운 위치 또는 각도로 이동시키는 방법을 고려한다. 역동역학에서, 위치 및 각도는 입력이고, 출력은, 인가되는 힘 및 가속도로부터 이상적으로 된 골격의 사지(limb)의 위치 및 각도 궤도를 산출하는 상이한 식의 세트를 사용하여 그들 위치 및 각도에 도달하는 데 필요한 힘 및/또는 가속도이다. 역동역학은, 특정한 위치 및 각도 궤도에 도달하기 위해 적용될 필요가 있는 관절 모멘트 및 가속도 및 힘을 유도하기 위해 사용된다.
몇몇 실시형태에서, 물리적 엔진은, 뉴턴-오일러(Newton-Euler) 운동 방정식과 같은, 뉴턴 역학에 기초하는 운동 방정식에 대해 인코딩되는 프로그램 코드 및 데이터의 저장된 표현을 사용하는데, 오브젝트에 인가되는 힘 및 (오브젝트의 질량×오브젝트의 선형 가속도)는 동일하다. 따라서, 목적하는 가속도에 필요한 힘은, 가속도에 대한 값 및 저장된 질량 값으로부터 계산될 수 있고, 인가된 힘으로부터 나타나는 가속도는, (힘의 값÷오브젝트의 질량에 대한 저장된 값)으로부터 계산될 수 있다. 뉴턴-오일러 방정식에서, 회전은, 모멘트를, 오브젝트의 저장된 질량 관성 모멘트×각속도와 동일하게 하는 것에 의해 다루어진다. 이들 방정식은 아바타의 강체 뼈대를 수학적으로 모델링한다. 이들 방정식으로부터 물리적 엔진은 역동역학을 사용하여, 관절에 의해 영향을 받는 뼈대 또는 부착된 뼈대의 움직임에 기초하여 각각의 관절에서의 토크(모멘트) 값을 유도한다.
다른 실시형태에서, 물리적 엔진은, 먼저, IK 프로세스를 실행하여, (손 추적과 같은 VR 입력에 의해 결정되는) 목표 위치를 갖는 엔드 이펙터로 이어지는 IK 체인의 중간 관절의 목표 각도 위치(angular position)에 대응하는 목표 각도의 어레이를 계산 및 저장하고, 그 다음, 물리적 엔진은, PD 컨트롤러를 사용하여 목표 각도의 어레이로부터 ID 힘 어레이를 계산할 수도 있을 것이다. 예를 들면, 물리적 엔진은, Torque(i) = Kp(i) * (TargetAngle(i) - CurrentAngle(i)) + Kd * (TargetAngularVelocity(i) - CurrentAngularVelocity(i))를 계산할 수도 있을 것인데, 여기서, Torque(i)는 ID 힘 어레이에서의 i 번째 값이고, TargetAngle(i)는 IK 프로세스에 의해 계산되는 목표 각도의 어레이에서의 i 번째 값이고, CurrentAngle(i)는 관절의 현재 방위의 어레이에서의 i 번째 값이다. TargetAngularVelocity 및 CurrentAngularVelocity에 대한 값은, 관절의 목표 각도 및 현재 각도를 차이를 계산하는 것에 의해 계산될 수 있다. Kp(i) 및 Kd(i)는, 관절에서 ID 토크를 생성하기 위해 사용되는 PD 컨트롤러의 강성(stiffness) 항 및 댐퍼(damper) 항을 나타내는 PD 컨트롤러 상수이다.
다른 실시형태에서, 물리적 엔진은, VR 입력 추적의 위치 및 방위를 추적하기 위해, 엔드 이펙터에서 단일의 PD 컨트롤러를 실행하여 엔드 이펙터에서의 목적하는 토크/힘을 계산하고, 그 다음, PD 컨트롤러에 의해 계산되는 엔드 이펙터에서의 목적하는 힘 및 토크를 유도하기 위해, 야코비안 전치 변환 프로세스(Jacobian transpose transform process)를 사용하여 모든 중간 관절에서 필요로 되는 토크를 계산한다.
다른 힘 어레이 생성기는, 추적된 위치로부터 아바타의 암시된 이동 속도 및 방향 진행 방향(direction heading)를 유도하고, 이동 제어 프로세스를 사용하여, 아바타의 밸런스를 잃지 않으면서 목적하는 방향에서 목적하는 속도로 이동하도록 그리고 자연스럽게 이동하도록 아바타에게 가동성을 부여하는(mobilize) 토크를 계산한다. 그러한 이동 힘 어레이 생성기(locomotion force array generator)의 하나의 실시형태는 역진자(inverted pendulum) 프로세스를 사용하여 이동 요구와 매칭하는 목적하는 다리 스윙 각도를 생성하고, 그 다음, 상기에서 설명되는 ID 프로세스를 실행하여, 이동 요구를 충족시키는 목적하는 각도로 다리를 구동시키는 데 필요한 토크의 세트를 계산한다.
또 다른 힘 어레이 생성기는 밸런싱 제어 프로세스를 사용하여, 아바타 몸통을 똑바로 세워 유지하는데 필요한 따라서 아바타의 발로 밸런스를 유지하는데 필요한 힘의 밸런스를 계산한다. 밸런스 힘 어레이 생성기(force array generator)의 하나의 실시형태는, 몸통을 사지에 연결하는 관절을 찾기 위해 관절을 검색하고, 더 이전 단계에서 계산되는 이들 관절에 대한 이동 힘 어레이 및 ID 힘 어레이를 합산하는 것에 의해 이들 관절에 의해 인가되는 몸통에 대한 순 총합 토크(net aggregated torque)를 계산한다. 그 다음, 밸런스 힘 어레이 생성기는, PD 컨트롤러를 사용하여, Td = Kp * (몸통의 목적하는 방위 - 몸통의 현재의 방위) + Kd * 몸통의 각속도를 통해 목적하는 순 밸런스 토크(net balance torque)를 통해 목적하는 순 밸런스 토크(Td)를 계산할 수 있는데, 여기서 Kp 및 Kd는 PD 컨트롤러 상수이다. 그 다음, 생성기는, 밸런스를 달성하기 위해, 목적하는 순 밸런스 토크(Td)로부터, ID 힘 어레이 및 이동 힘 어레이에 의해 인가되는 몸통에 대한 현재의 순 토크(net torque)를 감산하여, 몸통에 대한 손실 토크(missing torque)(Tm)를 획득할 것이다. 마지막으로, 생성기는, 몸통을 사지에 연결하는 관절인 Tmover를 할당하는 것에 의해, 손실 토크(Tm)를 몸통에 적용할 것이다.
그 다음, 솔버는 다수의 개별적으로 결정된 힘 어레이를, 예컨대 설명되는 그들 힘 어레이 생성기 중 두 개 또는 세 개를 사용하는 것에 의해, 하나의 힘 어레이로 결합한다. 그 다음, 접촉력, 중력 등과 같은 다른 힘이 쉽게 추가될 수 있다. 그 다음, 솔버는, 질량을 아는 상태에서 바디 부분에 대한 운동 방정식 F=ma의 해를 구하는, 아바타 및 다른 환경 오브젝트에 대해 구성되는 접촉 제약(contact constraint), 관절 제약, 모터 제약(motor constraint) 등과 같은 물리적 제약에 대해 제약 방정식 C(a) = 0의 해를 또한 구하는 가속도 값의 어레이를 찾으려고 시도한다.
공지된 가속 값 어레이를 사용하여, 그리고 이전 프레임의 위치 및 속도에 대한 값을 가지면, 시뮬레이션 엔진은 강체 시스템(rigid body system)과 함께 가속도 값을 사용할 수 있고, 미래의 하나의 시간 단계 전방 대한 가속도를 적분하여 새로운 속도 값을 획득할 수 있고, 또한, 속도 값을 적분하여 시뮬레이팅된 환경에서의 아바타 바디 부분 및 다른 동적 오브젝트의 새로운 위치 값을 획득할 수 있다.
이 프로세스는, 통상적으로 비디오 프레임 또는 설정된 수의 비디오 프레임에 대응하는 각각의 클록 사이클마다 반복될 수 있다.
시뮬레이션 엔진은 영화 사전 시각화 애플리케이션( movie pre-visualization application)에 사용될 수 있는데, 이 경우, 배우는 디지털 환경에서 상이한 장면을 신속하게 실연하기 위해 저가의 VR/AR 디바이스를 착용한다. 시뮬레이션 엔진은, 값 비싼 모션 캡처 기기를 사용하지 않고도 디지털 환경에서 더 자연스럽게 움직이고 상호 작용하는 배우의 디지털 표현을 제공할 수 있다.
시뮬레이션 엔진은 의료 또는 트레이닝 애플리케이션을 위해 사용될 수 있는데, 이 경우, 시뮬레이팅된 아바타는, 사용자의 입력 추적자 위치를 추적할 뿐만 아니라, 상이한 스타일의 모션 하에서 아바타의 관절 응력 및 압력 분포와 같은 생체 의학 정보를 또한 디스플레이할 수도 있을 것이다.
몇몇 실시형태에서, VR/AR 아바타 추적 시스템의 축소 버전은, 전신 골격 대신에 사용자의 부분 골격만을 시뮬레이팅한다. 몇몇 실시형태에서, VR/AR 아바타 추적 시스템은, 사용자 움직임으로부터, 동물, 로봇 또는 머신과 같은 비 휴머노이드 아바타 캐릭터로 변환한다. 아바타가 사용자의 체형 및 골격과 일대일 대응 관계를 가지지는 않을 수도 있을 것이지만, 연결은 부분적인 또는 추상적인 것에 대해 이루어질 수 있다. 아바타 추적 시스템은, 또한, 비대칭적인 체형 및 스케일에 걸쳐 입력 모션의 목표를 재설정하기 위해 사용될 수 있다.
몇몇 AR 및 MR 애플리케이션에서, 아바타 추적 시스템은, 시뮬레이팅된 아바타 상에서의 사용자의 전신 또는 부분적인 바디 렌더링 또는 이미징을 포함한다.
아바타 추적 시스템은 또한, 애니메이터가 현실적인 키 프레임 애니메이션을 만들기 위한, 가격이 저렴하고 경량인 실시간 모션 캡처("mocap") 대체 시스템으로서 사용될 수 있다.
도 1은 역동역학 토크가 나타내는 것의 예를 도시한다. 역동역학 토크는, 오른손이 목표 컨트롤러의 위치 및 방위에 도달하도록 세 개의 오른팔 관절(어깨, 팔꿈치, 손목)을 구동시키기 위해 계산될 수 있다. 대응하는 바디 부분에 부착되는 VR 위치 추적기를 향하는 더 많은 엔드 이펙터를 추적하기 위해서는, 좌측 팔, 목, 및 다리와 같은 다른 추적 사지에 대한 추가적인 토크가 있을 수 있다.
도 2는, 휴머노이드의 메인 바디 프레임의 직립 방위를 유지하기 위해, 메인 바디 프레임(여기서는 몸통 및 기초 뼈대(root bone)를 포함함)에 적용되는 밸런스 토크의 예를 도시한다. 이 예시에서, 토크 T1, T4, T7, T8 및 T9는, 바디 프레임을 똑바로 유지하는 데 가장 큰 영향을 끼친다. 밸런서 제어 프로세스(balancer control process)의 출력은, 바디 프레임 수직 방향에 영향을 주는 이들 관절에 적용되는 이들 세트의 토크일 수 있다.
도 3은 이동 토크의 예를 도시한다. 이들은 주로 두 다리(스윙 레그(swing leg) 및 스탠스 레그(stance leg))에 대한 하체 토크에 집중된다. 이들 토크는, 전체 캐릭터의 선형 속도에 중요한 역할을 하는 스윙 레그의 스윙 방향 및 형상에 영향을 준다. 스탠스 레그(스탠스 힙 관절, 무릎 관절, 발목 관절을 포함함)에 대한 토크는, 캐릭터의, 각속도인 회전 속도를 결정하고 그들은 선형 속도에도 또한 영향을 미친다. 전반적으로, 이동 컨트롤러의 출력은, 하체 관절이 전체 캐릭터를 목적하는 선형 속도 및 각속도로 구동하기 위한 힘 어레이이다.
도 4는 힘 어레이 벡터의 성분에 의한 합산을 예시한다.
도 5는, F, M(모든 뼈대의 관성 모멘트 및 질량을 포함하는 질량 속성 매트릭스에 의해 표현됨), C(시스템에서의 접촉 제약 및 관절 제약에 대한 제약 함수)가 주어지면, A(모든 관절의 가속도 벡터를 포함하는 가속 매트릭스)에 대한 연립 방정식을 풀기 위한, 합산된 힘 어레이 벡터 및 제약에 대해 해를 구할 솔버를 예시한다. 이것은 ID, 밸런싱 컨트롤러, 이동 컨트롤러 또는 VR/AR 아바타 추적을 수행하는 몇몇 서브세트의 간단한 조합을 허용한다.
몇몇 실시형태에서, ID 모듈이 요구된다.
허상의 손
몇몇 실시형태에서, 전신 아바타의 움직임은 아바타의 가상의 손 대신 허상의 손을 사용한다. 예를 들면, 아바타의 움직임(예를 들면, 목적하는 포즈의 관절 회전)은, 가상의 손의 위치보다는 허상의 손의 위치를 사용한다. 그들 위치에서, 업데이트 틱(update tick)에 걸쳐 역운동학 또는 역동역학을 사용하는 것 및 그 다음 목적하는 포즈를 사용하여 요구되는 관절 토크를 유도하는 것과 같은, 종래의 캐릭터 제어가 수행될 수 있다.
VR 장비는 전신 아바타를 모델링하고, 물리적 엔진을 사용하여, 캐릭터 모델의 요소는 가상 공간의 물리적 제약과 부합하게 이동하는데, 예컨대 이 경우, 사용자의 손 움직임은 가상 세계의 다른 오브젝트에 의한 제약에 종속되는 아바타의 몸통의 움직임으로 나타날 수도 있을 것이다. 그러나, 사용자가 그들의 손을 벽돌 벽을 통과하여 한 위치로 이동시킬 수 있게 되는 가상의 벽돌 벽과 같은, 물리적 세계에서는 존재하지 않는 어떤 가상 세계 제약이 있을 수도 있을 것이다.
아바타 손은, 예컨대 기본 하드웨어의 글러브 내의 실세계 3 DOF 또는 6 DOF 모션 추적 디바이스에 의해 캡처되는 사용자의 물리적 손 움직임에 기초하여 위치 결정되는 시각적 출력에서 (그들이 카메라 시야 내에 있을 때) 나타난다. 아바타 손은, 솔리드 오브젝트를 통해 손이 이동할 수 없는 제약과 같은, 가상 공간의 제약에 종속하여 이동된다. 사용자의 실세계의 손 및 아바타 손의 위치가 (예컨대, 실세계 대응측 제약(real-world counterpart constraint)을 갖지 않는 가상 세계 제약에 기인하여) 일탈하는(diverge) 경우, 가상의 손은 제약된 위치에서 디스플레이되고 시각적 출력은, 실세계 손 위치에 대응하는 가상 세계의 위치에서 디스플레이되는 "허상의 손"을 포함한다. 이 것은 양쪽 손에 대해 행해질 수 있다. 따라서, 허상의 손은 사용자 손의 실제 위치 및 방위를 반영한다.
허상의 손은 오브젝트에 의해 제약되지 않으며 반투명한 것으로서 렌더링될 수도 있을 것이고, 한편, 가상의 손은 반투명하지 않고 다른 오브젝트와의 충돌의 제약을 따른다. 허상의 손 및 가상의 손의 위치는, 실세계에서는 사용자의 손이 오브젝트와 조우하지 않는 가상 공간에서 가상의 손이 오브젝트와 조우하는 경우 일탈할 것이다. 사용자가 솔리드 벽(solid wall)을 가상의 손으로 때리는 예에서, 사용자의 손이 그 충돌 지점을 지나 계속 움직일 수 있다면, 허상의 손은 계속 나아가고 솔리드 벽의 다른 면 상에서 나타날 것이다. 그들이 반투명하기 때문에, 그들은 뷰를 완전히 가리지는 않는다. 그들은 또한 개재하는 오브젝트(intervening object) 없이 렌더링될 수 있고, 그 결과, 사용자는, 심지어 허상의 손이 솔리드 오브젝트 또는 다른 오브젝트 뒤에 있는 경우에도, 허상의 손을 볼 수 있다.
일탈(divergence)은 다수의 방식으로 핸들링될 수 있다. 하나의 방식은, 모든 바디 부분을 제약하고 충돌 지점에서 가상의 손을 멈추게 하는 것일 것이다. 이것은 사용자에게, 가상의 손이 벽에 기대고 있고, 허상의 손이 벽 너머에 있고 가상 팔꿈치(및 어쩌면 가상의/제약된 및 허상의/제약되지 않은 대응부를 갖는 다른 바디 부분)가 허상의 팔꿈치 약간 뒤에 있는(그 결과 하완 바디 부분의 길이에 대한 제약이 두 경우 모두에서 충족되게 됨) 것처럼 보일 것이다. 다른 접근법은, 가상의 하완이 허상의 하완과 반드시 평행하지 않도록 몇몇 제약을 완화하는 것이다.
다른 접근법에서, 육체에서 분리된(disembodied) 허상의 손 외에는, 허상의 바디 부분이 존재하지 않는다. 그 경우, 다른 바디 부분을 고려 또는 렌더링하거나 또는 관절 제약을 고려할 필요가 없다. 역운동학/동역학 컨트롤러를 사용하여, 허상의 손은 가상의 손에 대한 목표로서 취급될 수도 있을 것이고, 그 결과, 컨트롤러에 의해 생성되는 팔 관절에 대한 토크는, 허상의 손을 따르는 소정의 포즈를 취하도록 가상의 팔을 구동하려고 시도하지만 그러나 동시에 가상의 손은 벽과 충돌하고 따라서 벽으로부터 힘을 받게 되고, 그 힘은 전체 아바타 골격을 거쳐 전파된다. 최종 거동은 물리 엔진에 의해 시뮬레이팅된다. 벽이 관절의 토크를 상쇄하기에(counterbalance) 충분한 마찰을 제공하지 못하면, 가상의 손은 벽의 표면을 따라 이동할 것이고, 그렇지 않으면, 가상의 손은 손과 벽 접촉 위치에 유지될 것이다.
허상의 손 위치와 실세계 손 위치 사이에서는 어떤 작은 레이턴시가 허용 가능하다. 허상의 손은 가상 세계에서 다른 오브젝트 전방에 나타나는 것이 바람직하다. 이것은, 멀미(motion sickness)와 같은 부작용을 감소시킬 수 있다. 따라서, 가상 세계의 손을 가리는 오브젝트가 존재하는 경우, 허상의 손은 가리고 있는 오브젝트를 통해 여전히 나타날 것이다. 따라서, 허상의 손은, 그들이 가상 세계에 혼합되기 보다는 항상 보이도록, 다른 오브젝트와는 상이하게 렌더링되는 것이 바람직하다.
허상의 손은, 가상의 손이 다른 오브젝트와 상호 작용하지 않는 것을 보장하도록 디스에이블되는 다른 가상 세계 오브젝트 사이에서 충돌을 갖는 운동학적 오브젝트로서 모델링될 수 있다. 따라서, 허상의 손이 실세계 모션 센서에 의해 캡처되는 데이터를 따르지만, 동적인 (가시적인, 가상의) 손은 가상 세계에서, 표면과의 마찰과 같은, 물리적 법칙을 준수한다. 허상의 손은 또한, 손 컨트롤러 위치를 운동학적으로 추적하는 그리고 물리적으로 시뮬레이팅되지 않는 "운동학적 손"으로서 칭해질 수도 있을 것이다.
실세계 위치로부터의 아바타의 전환; 1인칭으로부터 3인칭으로 스위칭
VR 장비의 시각적 출력에서, 캐릭터 모델은 1인칭으로서 나타난다. 예를 들면, 1인칭 관점에서, 가상 공간에서의 카메라의 뷰포인트는, 사용자의 머리와 눈이 곳에 대응하고, 따라서, 캐릭터 모델의 몸통(이것은 아바타의 머리에 부착됨)은 가상 공간에서 카메라 바로 아래에 머무를 것이다. 몸통이 가상 세계에서 충분한 힘으로 다른 캐릭터 또는 오브젝트에 의해 부딪히면, VR 장비는, 물리적 엔진의 출력에 따라, 그 몸통을 힘의 방향으로 이동시킬 것인데, 이것은, 그 다음, 몸통에 부착되는, 머리를 포함할 따라서 카메라 위치를 포함할 바디 부분을 이동시킬 것이다. 이것은 사용자에게 큰 혼란을 줄 수 있다.
아바타에 대한 힘이, 아바타의 머리가 어떤 임계치보다 더 많이 이동할 그러한 힘이다는 것, 또는 다르게는 사용자에게 카메라 움직임으로서 제시하기에 바람직하지 않은 것으로 결정된다는 것을 기본 하드웨어가 결정하는 경우를 다루기 위해, 기본 하드웨어는 카메라 위치를 아바타 머리 위치로부터 연결 해제하도록(unlink) 프로그래밍된다. 그렇게 되면, 사용자는 시각적 출력 상에서 아바타를 3인칭으로 볼 것이다. 따라서, 아바타가 땅으로 넘어져야 한다는 것을 물리적 엔진이 결정하도록 하는 충분한 힘으로 아바타가 타격되는 경우, 아바타는 넘어지는 것처럼 보이지만, 그러나, 사용자의 뷰포인트는 회전하여 땅으로 떨어지지 않는다.
응답은 아바타 머리를 카메라 위치로 점진적으로 재연결하는 것일 수 있다. 예를 들면, 슬쩍 밀기(nudge)가 있는 경우, 아바타의 머리는 카메라 위치 앞으로 이동될 수도 있을 것이고 사용자는 그들 자신의 아바타의 머리의 뒤를 볼 수 있지만, 그러나, 그 다음, 가상의 머리는 자신의 이전 위치로 다시 이동할 것이고, 따라서, 카메라 위치와 재정렬할 것이다. 넘어짐과 같은 몇몇 경우에, 카메라 위치는, 아바타 머리 위치를 향해 천천히 향하는 것과 같이 움직이는 것 또는 한 카메라로부터 다른 카메라로 스위칭하는 것으로 사용자에 의해 해석될 수도 있는 카메라 위치의 단일의 불연속적인 변경일 수도 있을 것이다. 일단 아바타 머리 위치 및 카메라 위치가 다시 정렬되면, 그 다음, 그들은 다시 연결될 수 있고, 그 결과, 전신 아바타가, 그 다음, 1인칭에 있는 것으로 인식된다.
파지하기(grabbing)/던지기 관절
물리적 엔진은 가상 공간에 존재하는 오브젝트의 모델에 대해 동작하는데, 예컨대, 오브젝트가 충돌하는 경우, 그들이, 그 다음, 오브젝트에 할당되는 질량 및 오브젝트가 다른 오브젝트에 부착되는 것(예를 들면, 손은 팔에 부착된 채로 남아 있음)과 같은 제약에 종속하여, 충돌의 추정된 힘과 부합하게 이동 및 가속되는 것을 보장한다. 오브젝트는, 예를 들면, 오브젝트를 가상의 손의 손가락 오브젝트로 감싸는 것에 의해, 가상 공간에서 "파지될" 수 있다. 단순히 물리적 엔진 제약에 의존하는 것은, 다양한 이유 때문에 사용자에게 까다로운 것임을 증명할 수 있고, 따라서, 가상 공간에서 파지 및 던지기 액션을 달성하는 데 필요한 모션을 통해 사용자가 VR 장비를 조작하는 것을 어렵게 만든다. 이것은, 특히, 오브젝트의 파지를 시그널링하는 사용자에 대한 햅틱 피드백이 거의 또는 전혀 없는 경우이다.
자연스러운 모습의 상호 작용을 여전히 제공하면서, 파지 및 던지기 동작을 단순화하기 위해, "부착 조건(attachment condition)"이 존재하는 경우, 손 및 파지된/던져지는 오브젝트를 손에 부착된 상태로 유지하는 새로운 관절이 추가된다. 부착을 통해, 물리적 엔진은 오브젝트가 손에 있다는 것을 보장할 것인데, 팔이 어깨에 부착된 채로 유지되는 것을 물리적 엔진이 보장하는 것과 거의 같은 방식이다. 부착 조건의 예는, 손의 손가락이 오브젝트에 터치하고 있고, 오브젝트가 또한 손의 손바닥과 터치하고 있고, 손가락이 오므려져 있는 경우이다.
"분리 조건(detachment condition)"이 존재하는 경우, 관절은 제거된다. 분리 조건의 예는, 손이 최소 속도 이상으로 움직이고 있고 손가락이 펴져 있는 것이다. 따라서, 사용자가 가상의 공의 가상의 던지기를 달성하기 위해서, 초기 파지는, 볼을 손에 고정시킬 것이고, 사용자가 와인드업 및 던지기 모션을 수행한 이후, 관절은 사라지고, 그 다음, 물리적 엔진은, 던져진 오브젝트가 손으로부터의 운동량을 갖게 되고 분리됨에 따라, 던져진 오브젝트의 경로를 제공할 것인데, 이것은 자연스러운 던지기 모션을 나타낸다.
관절은, 연결을 유지하기 위해 무한한 임펄스를 제공할 필요는 없고, 따라서, 물리적으로 그럴듯한 방식으로 파괴될 수 있다. 던지기는, 물리적 시뮬레이션의 결과로서 관절이 파괴되는 경우 자연스럽게 발생할 수 있거나 또는 애플리케이션 이벤트에 연결되는 것에 의해 프로그래밍 방식으로 제어될 수 있다. 후자의 경우, 관절은 제거되고 새로운 선형 및 각속도가 피파지물(grabee)에 대해 설정될 수 있다.
무기 휘두르기
무기는 일체형 오브젝트(one-piece object)로서 모델링될 수 있고, 하나 또는 다수의 관절을 통해 가상의 손에 부착될 수 있다. 대안적으로, 무기는 "3개의 단편의 스틱(3 segment stick)"과 같은 다관절 연체(multi-joint soft body)로서 모델링될 수 있고 아바타 골격의 일부로서 부착될 수 있다. 후자의 경우, 무기가 가상 세계에서 목표에 부딪치는 경우, 그 충격은 모든 무기 내 관절 및 무기와 가상의 손 사이의 관절에 걸쳐 분산된다. 그 다음, 힘이 손목, 팔, 어깨 및 몸통에 걸쳐 전파된다. 이렇게 하여, 무기 및 아바타가, 존재의 환영을 파괴하지 않으면서 가상 세계 오브젝트와 물리적으로 상호 작용한다. 무기 충돌은 가상의 손과 허상의 손에 대한 약간의 일탈을 제공할 수 있지만, 그러나 힘이 다른 바디 부분에 걸쳐 실적으로 전파되는 것을 통해, 일탈이 감소된다.
몇몇 실시형태에서, 무기는 동적인 손에 견고하게 부착된다. 다른 실시형태에서, 무기는, 구부릴 수 있는 동적 관절을 사용하여 동적인 손에 연결된다. 후자는, 충격 동안 충격 흡수를 도울 수 있다.
하드웨어 구현예
하나의 실시형태에 따르면, 본 명세서에서 설명되는 기술은, 펌웨어, 메모리, 다른 스토리지, 또는 조합으로, 프로그램 명령어에 따라 기술을 수행하도록 프로그래밍되는 하나의 또는 일반화된 컴퓨팅 시스템에 의해 구현된다. 데스크탑 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 디바이스, 네트워킹 디바이스 또는 기술을 구현하기 위한 하드웨어에 내장된(hard-wired) 및/또는 프로그램 로직을 통합하는 임의의 다른 디바이스와 같은 특수 목적 컴퓨팅 디바이스가 사용될 수도 있다.
실행을 위해 하나 이상의 명령어의 하나 이상의 시퀀스를 프로세서로 운반함에 있어서, 다양한 형태의 매체가 수반될 수도 있다. 예를 들면, 명령어는, 처음에는, 원격 컴퓨터의 자기 디스크 또는 솔리드 스테이트 드라이브 상에서 유지될 수도 있다. 원격 컴퓨터는 명령어를 동적 메모리에 로드하고 명령어를 네트워크 연결을 통해 전송할 수 있다. 컴퓨터 시스템에 로컬한 네트워크 인터페이스가 데이터를 수신할 수 있다. 버스는 데이터를 메인 메모리로 반송하고(carry), 프로세서는, 메인 메모리로부터, 명령어를 검색하여(retrieve) 실행한다. 메인 메모리에 의해 수신되는 명령어는, 옵션 사항으로, 프로세서에 의한 실행 이전 또는 이후에 저장될 수도 있다.
VR 시스템은, 헤드기어, 계기가 갖춰진 글러브, 프로세서, 메모리, 및 이들 부품 사이에서 데이터 및/또는 전력을 전달하기 위한 케이블링 또는 무선 연결과 같은, 기본 하드웨어를 포함할 수도 있을 것이다. 통신은, 로컬 네트워크 또는 내부 채널에 연결되는 네트워크 링크에 대한 양방향 데이터 통신 결합일 수도 있을 것이다. 무선 링크가 또한 구현될 수도 있다.
네트워크 링크는 통상적으로 하나 이상의 네트워크를 통해 다른 데이터 디바이스에 데이터 통신을 제공한다. 예를 들면, 네트워크 링크는 로컬 네트워크를 통해 호스트 컴퓨터에 또는 인터넷 서비스 공급자(Internet Service Provider: ISP)에 의해 운영되는 데이터 기기에 연결을 제공할 수도 있다. 이러한 방식으로, VR 장비는 업데이트 및 프로그래밍을 획득할 수도 있을 뿐만 아니라, 업로드 정보를 제공할 수도 있을 것이다. 컴퓨터 시스템은, 네트워크(들), 네트워크 링크 및 통신 인터페이스를 통해, 메시지를 전송할 수 있고 프로그램 코드를 비롯한 데이터를 수신할 수 있다. 인터넷 예에서, 서버는, 인터넷을 통해, 직접적으로 또는 애플리케이션 스토어를 통해, 애플리케이션 프로그램에 대한 요청된 코드를 송신할 수도 있을 것이다. 수신된 코드는, 본 명세서에서는 VR 장비에 귀속되는 기능을 구현하기 위해 프로세서에 의해 실행될 수도 있다. 그 코드는, 장면 디자이너 및/또는 프로그래머에 의해 개발 스테이션에서 생성될 수도 있을 것이다.
도 7은, 본 명세서에서 설명되는 기능을 수행하기 위해 프로세서에 의해 사용될 수도 있을 것이고 그리고 본 명세서에서 설명되는 실시형태의 요소를 구현하기 위해 프로세서에 의해 사용될 수 있는 구조체를 예시한다. 예를 들면, 기능 블록이 참조되는 경우, 그것은 메모리에 저장되는 프로그램 코드로서 구현될 수도 있을 것이다. 도 7은, 컴퓨터 시스템의 프로세서에 의해 액세스 및 실행될 수 있는 애플리케이션을 갖는 스토리지 디바이스(702)의 단순화된 기능 블록도이다. 애플리케이션은, 서버, 클라이언트 또는 다른 플랫폼 또는 디바이스 상에서 실행하는, 본 명세서에서 설명되는 애플리케이션 중 하나 이상일 수 있고, 그 밖의 곳에서 예시되는 클라이언트 및/또는 서버 중 하나의 메모리를 나타낼 수도 있을 것이다. 스토리지 디바이스(702)는, 프로세서에 의해 액세스될 수 있는 하나 이상의 메모리 디바이스일 수 있고, 스토리지 디바이스(702)는, 하나 이상의 프로세서 판독 가능 명령어를 저장하도록 구성될 수 있는 애플리케이션 코드(710)를 저장할 수 있다. 애플리케이션 코드(710)는, 애플리케이션 로직(712), 라이브러리 함수(714), 및 애플리케이션과 관련되는 파일 I/O 함수(716)를 포함할 수 있다.
스토리지 디바이스(702)는 또한, 입력 변수(714)를 수신하도록 구성되는 하나 이상의 저장 위치를 포함할 수 있는 애플리케이션 변수(712)를 포함할 수 있다. 애플리케이션 변수(712)는, 애플리케이션에 의해 생성되는 또는 다르게는 애플리케이션에 로컬한 변수를 포함할 수 있다. 애플리케이션 변수(712)는, 예를 들면, 사용자 또는 외부 디바이스 또는 애플리케이션과 같은 외부 소스로부터 검색되는 데이터로부터 생성될 수 있다. 프로세서는, 애플리케이션 코드(710)를 실행하여, 스토리지 디바이스(702)에 제공되는 애플리케이션 변수(712)를 생성할 수 있다.
애플리케이션 변수(720)는 본 명세서에서 설명되는 기능을 수행하는 데 필요한 동작 세부 사항을 포함할 수도 있을 것이다. 애니메이션 데이터(730)는, 관절로 이어진 캐릭터 골격의 요소, 바디 컴포넌트, 요소의 질량, 관절 제약, 환경 오브젝트 및 필요로 되는 다른 세부 사항과 같은 세부 사항을 포함할 수도 있을 것이다.
하나 이상의 메모리 위치는 디바이스 데이터(722)를 저장하도록 구성될 수 있다. 디바이스 데이터(722)는, 기록된 사용자 VR 입력을 비롯한, 사용자 또는 외부 디바이스와 같은 외부 소스에 의해 공급되는(sourced) 데이터를 포함할 수 있다.
스토리지 디바이스(702)는 또한, 애플리케이션의 결과 또는 애플리케이션에 제공되는 입력을 저장하도록 구성되는 하나 이상의 저장 위치(744)를 갖는 로그 파일(740)을 포함할 수 있다. 예를 들면, 로그 파일(740)은 액션의 이력을 저장하도록 구성될 수 있다.
도 8은 예시적인 컴퓨터 시스템(800)을 예시한다. 거기에서 예시되는 바와 같이, 컴퓨터 시스템(800)은, 버스(802) 또는 정보를 전달하기 위한 다른 통신 메커니즘, 및 프로세서(804)에 제공되는 데이터 및 프로그램 명령어와 같은 정보를 프로세싱하기 위한, 버스(802)와 결합되는 프로세서(804)를 포함한다. 프로세서(804)는, 예를 들면, 범용 마이크로프로세서일 수도 있다.
컴퓨터 시스템(800)은 또한, 프로세서(804)에 의해 실행될 정보 및 명령어를 저장하기 위한, 버스(802)에 결합되는 메인 메모리(806), 예컨대 랜덤 액세스 메모리(random access memory: RAM) 또는 다른 동적 스토리지 디바이스를 포함한다. 메인 메모리(806)는 또한, 프로세서(804)에 의해 실행될 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하기 위해 사용될 수도 있다. 그러한 명령어는, 프로세서(804)가 액세스 가능한 비일시적 저장 매체에 저장되는 경우, 컴퓨터 시스템(800)을, 명령어에서 명시되는 동작을 수행하도록 커스터마이징되는 특수 목적 머신으로 만든다.
컴퓨터 시스템(800)은, 프로세서(804)에 대한 정적 정보 및 명령어를 저장하기 위한, 버스(802)에 결합되는 판독 전용 메모리(read only memory: ROM)(808) 또는 다른 정적 스토리지 디바이스를 더 포함한다. 정보 및 명령어를 저장하기 위한, 자기 디스크 또는 광학 디스크와 같은 스토리지 디바이스(810)가 제공되며 버스(802)에 결합된다.
컴퓨터 시스템(800)은, 버스(802)를 통해, 정보를 디스플레이하기 위한 디스플레이(812), 예컨대 컴퓨터 모니터 또는 VR 헤드셋에 결합될 수도 있다. 정보 및 커맨드 선택을 프로세서(804)에 전달하기 위한 입력 디바이스(814)가 버스(802)에 결합되고, VR 입력의 형태일 수도 있다. 다른 타입의 사용자 입력 디바이스는 커서 제어부(816), 예컨대, 방향 정보 및 커맨드 선택을 프로세서(804)에 전달하기 위한 그리고 디스플레이(812) 상에서 커서 이동을 제어하기 위한 마우스, 트랙볼, 또는 커서 방향 키이다.
컴퓨터 시스템(800)은, 컴퓨터 시스템과 조합하여 컴퓨터 시스템(800)으로 하여금 특수 목적 머신이 되게 하는 또는 특수 목적 머신이 되도록 컴퓨터 시스템을 프로그래밍하는 하드웨어에 내장된 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어 및/또는 프로그램 로직을 사용하여, 본 명세서에서 설명되는 기술을 구현할 수도 있다. 하나의 실시형태에 따르면, 본 명세서의 기술은, 프로세서(804)가 메인 메모리(806)에 포함되는 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨터 시스템(800)에 의해 수행된다. 그러한 명령어는, 스토리지 디바이스(810)와 같은 다른 저장 매체로부터 메인 메모리(806)로 판독될 수도 있다. 메인 메모리(806)에 포함되는 명령어의 시퀀스의 실행은, 프로세서(804)로 하여금, 본 명세서에서 설명되는 프로세스 단계를 수행하게 한다. 대안적인 실시형태에서, 하드웨어에 내장된 회로부(circuitry)가 소프트웨어 명령어 대신 또는 소프트웨어 명령어와 조합하여 사용될 수도 있다.
본 명세서에 사용되는 바와 같은 용어 "저장 매체"는, 머신으로 하여금 특정한 방식으로 동작하게 하는 데이터 및/또는 명령어를 저장하는 임의의 비일시적 매체를 지칭한다. 그러한 저장 매체는 불휘발성 매체 및/또는 휘발성 매체를 포함할 수도 있다. 불휘발성 매체는, 예를 들면, 스토리지 디바이스(810)와 같은 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(806)와 같은 동적 메모리를 포함한다. 일반적인 형태의 저장 매체는, 예를 들면, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광학 데이터 저장 매체, 구멍의 패턴을 갖는 임의의 물리적인 매체, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지를 포함한다.
저장 매체는 송신 매체와는 별개이지만, 그러나 송신 매체와 연계하여 사용될 수도 있다. 송신 매체는, 저장 매체 사이에서 정보를 전달하는 데 참여한다. 예를 들면, 송신 매체는, 버스(802)를 포함하는 와이어를 비롯한, 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 송신 매체는 또한, 전파(radio-wave) 및 적외선 데이터 통신 동안 생성되는 것과, 같은 음파 또는 광파의 형태를 취할 수 있다.
실행을 위해 하나 이상의 명령어의 하나 이상의 시퀀스를 프로세서(804)로 운반함에 있어서, 다양한 형태의 매체가 수반될 수도 있다. 예를 들면, 명령어는, 처음에는, 원격 컴퓨터의 자기 디스크 또는 솔리드 스테이트 드라이브 상에서 유지될 수도 있다. 원격 컴퓨터는 명령어를 동적 메모리에 로드하고 명령어를 네트워크 연결을 통해 전송할 수 있다. 컴퓨터 시스템(800)에 로컬한 모뎀 또는 네트워크 인터페이스가 데이터를 수신할 수 있다. 버스(802)는 데이터를 메인 메모리(806)로 반송하고, 프로세서(804)는, 메인 메모리로부터, 명령어를 검색하여 실행한다. 메인 메모리(806)에 의해 수신되는 명령어는, 옵션 사항으로, 프로세서(804)에 의한 실행 이전 또는 이후에, 스토리지 디바이스(810) 상에 저장될 수도 있다.
컴퓨터 시스템(800)은 또한, 버스(802)에 결합되는 통신 인터페이스(818)를 포함한다. 통신 인터페이스(818)는, 로컬 네트워크(822)에 연결되는 네트워크 링크(820)에 양방향 데이터 통신 결합을 제공한다. 무선 링크가 또한 구현될 수도 있다. 임의의 그러한 구현예에서, 통신 인터페이스(818)는, 다양한 타입의 정보를 나타내는 디지털 데이터 스트림을 반송하는 전기, 전자기 또는 광학 신호를 전송 및 수신한다.
네트워크 링크(820)는 통상적으로 하나 이상의 네트워크를 통해 다른 데이터 디바이스에 데이터 통신을 제공한다. 예를 들면, 네트워크 링크(820)는 로컬 네트워크(822)를 통해 호스트 컴퓨터(824) 또는 인터넷 서비스 공급자(ISP)(826)에 의해 운영되는 데이터 기기에 연결을 제공할 수도 있다. ISP(826)는, 이어서, "인터넷"(828)으로 현재 일반적으로 칭해지는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스를 제공한다. 로컬 네트워크(822) 및 인터넷(828) 둘 모두는 디지털 데이터 스트림을 반송하는 전기, 전자기 또는 광학 신호를 사용한다. 컴퓨터 시스템(800)으로 그리고 컴퓨터 시스템으로부터 디지털 데이터를 반송하는, 다양한 네트워크를 통한 신호 및 네트워크 링크(820) 상에서의 그리고 통신 인터페이스(818)를 통한 신호는 송신 매체의 예시적인 형태이다.
컴퓨터 시스템(800)은, 네트워크(들), 네트워크 링크(820) 및 통신 인터페이스(818)를 통해, 메시지를 전송할 수 있고 프로그램 코드를 비롯한 데이터를 수신할 수 있다. 인터넷 예에서, 서버(830)는, 인터넷(828), ISP(826), 로컬 네트워크(822) 및 통신 인터페이스(818)를 통해 애플리케이션 프로그램에 대한 요청된 코드를 송신할 수도 있을 것이다. 수신된 코드는, 그것이 수신될 때, 프로세서(804)에 의해 실행될 수도 있고, 및/또는 나중의 실행을 위해 스토리지 디바이스(810), 또는 다른 불휘발성 스토리지에 저장될 수도 있다.
본 명세서에 설명되는 프로세스의 동작은, 본 명세서에서 달리 지시되지 않는 한 또는 다르게는 문맥에 의해 명백하게 부정되지 않는 한, 임의의 적절한 순서로 수행될 수 있다. 본 명세서에서 설명되는 프로세스(또는 그 변형예 및/또는 조합예)는, 실행 가능한 명령어를 가지고 구성되는 하나 이상의 컴퓨터 시스템의 제어 하에 수행될 수도 있고, 하드웨어 또는 그 조합에 의해, 하나 이상의 프로세서 상에서 집합적으로 실행하는 코드(예를 들면, 실행 가능한 명령어, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서 구현될 수도 있다. 코드는, 예를 들면, 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령어를 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독 가능 저장 매체 상에 저장될 수도 있다. 컴퓨터 판독 가능 저장 매체는 비일시적일 수도 있다.
형태 "A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나"의 어구와 같은 접속 언어(conjunctive language)는, 달리 명시적으로 언급되지 않는 한 또는 다르게는 문맥에 의해 명백하게 부정되지 않는 한, 한 항목, 항목 등이 A이거나 또는 B이거나 또는 C, 또는 A 및 B 및 C의 세트의 임의의 비지 않은(nonempty) 서브세트 중 어느 한 쪽일 수도 있다는 것을 제시하기 위해 일반적으로 사용되는 바와 같은 맥락을 가지고 달리 이해된다. 예를 들면, 세 개의 멤버를 갖는 세트의 예시적인 예에서, 접속 어구(conjunctive phrase) "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"는 다음 세트 중 임의의 것을 가리킨다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 따라서, 그러한 접속 언어는, A 중 적어도 하나, B 중 적어도 하나 및 C 중 적어도 하나 각각이 존재하는 것을 소정의 실시형태가 요구한다는 것을 암시하도록 일반적으로 의도되는 것은 아니다.
본 명세서에서 제공되는 임의의 그리고 모든 예, 또는 예시적인 언어(예를 들면, "와 같은(such as)")의 사용은, 본 발명의 실시형태를 더 잘 조명하도록 의도되는 것에 불과하며, 달리 요구되지 않는 한, 본 발명의 범위에 대해 제한을 부과하지 않는다. 명세서 중의 어떠한 언어도, 임의의 청구되지 않은 요소를 본 발명의 실시에 필수적인 것으로 나타내는 것으로 해석되지 않아야 한다.
전술한 명세서에서, 본 발명의 실시형태는 구현예마다 변할 수도 있는 수많은 특정한 세부 사항을 참조하여 설명되었다. 따라서, 명세서 및 도면은, 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다. 본 발명의 범위의 유일하고 배타적인 지표(indicator), 및 본 출원인에 의해 본 발명의 범위가 되도록 의도되는 것은, 임의의 후속하는 수정을 비롯한, 본 출원으로부터 발행되는 청구범위가 발행되는 특정한 형태의, 그러한 청구범위의 세트의 글자 그대로의 그리고 등가의 범위이다.
본 개시내용의 판독 이후, 기술 분야에서 통상의 지식을 가진 자는 다른 실시형태를 구상할 수 있다. 다른 실시형태에서, 상기에서 개시되는 발명의 조합 또는 부조합이 유리하게 만들어질 수 있다. 컴포넌트의 예시적인 배치는 예시의 목적을 위해 도시되며, 본 발명의 대안적인 실시형태에서는, 조합, 추가, 재배치 등이 고려된다는 것이 이해되어야 한다. 따라서, 예시적인 실시형태와 관련하여 본 발명이 설명되었지만, 기술 분야에서 숙련된 자는 수많은 수정이 가능하다는 것을 인식할 것이다.
예를 들면, 본 명세서에서 설명되는 프로세스는, 하드웨어 컴포넌트, 소프트웨어 컴포넌트, 및/또는 이들의 임의의 조합을 사용하여 구현될 수도 있다. 따라서, 명세서 및 도면은, 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다. 그러나, 청구범위에서 기술되는 바와 같은 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않으면서, 명세서 및 도면에 대해 다양한 수정 및 변경이 이루어질 수도 있다는 것 및 본 발명은 다음의 청구범위의 범위 내에 있는 모든 수정예 및 등가예를 포괄하도록 의도된다는 것이 명백할 것이다.
지금까지 설명된 바와 같이, 본 개시내용은 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 상호 작용식 아바타 디스플레이 시스템을 제조하고 사용하는 것을 제공하는데, 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이되, 컴퓨터 생성 뷰는, 사용자의 움직임에 응답하여 가상 공간에서 움직이는 아바타를 포함하고, 상호 작용식 아바타 디스플레이는 다음을 포함한다: 프로세서, 프로세서에 결합되고, 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리, 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한, 프로세서에 결합되는 데이터 메모리, 사용자의 실세계 좌표계에서의 복수의 사용자 바디 부분 위치를 감지하기 위한 센서. 프로그램 메모리는 다음을 포함할 수도 있을 것이다: a) 센서 출력으로부터 추적된 바디 부분의 위치 및 방위를 결정하기 위한 프로그램 코드, 추적된 바디 부분은, 센서 중 하나 이상에 영향을 끼치는 사용자 바디 부분임, b) 아바타의 추적된 요소의 모션 목표를 생성하기 위한 프로그램 코드, 모션 목표는, 추적된 바디 부분 중 하나 이상의, 사용자의 실세계 좌표계에서의 위치 또는 방위에 대응하는 가상 공간에서의 위치 또는 방위임, c) 힘값의 제1 어레이를 계산하기 위한 프로그램 코드, 제1 어레이 내의 힘값은, 특정한 아바타 바디 부분에 대한 힘에 대응하는 역동역학 힘값이고, 제1 어레이는, 모션 목표에 의해 명시되지 않는 적어도 하나의 자유도를 비롯한, 복수의 아바타 자유도의 역동역학 힘값에 대응함, d) 힘값의 제2 어레이를 계산하기 위한 프로그램 코드, 제1 어레이 내의 힘값은, 밸런스 제어 힘값 또는 이동 제어 힘 중 어느 하나이고, 제2 어레이는, 가상 공간에서 아바타의 밸런스를 유지하는 데 필요한 밸런스 제어 힘 또는 모션 목표를 고려하여 아바타의 추적된 요소의 정렬을 유지하기 위해 아바타를 전체적으로 이동시키는 데 필요한 이동 제어 힘 중 어느 하나에 대응함, e) 제1 어레이 및 제2 어레이를 합산된 힘 어레이로 결합하기 위한 프로그램 코드, f) 아바타에 대한 제약의 세트를 결정하기 위한 프로그램 코드, g) 합산된 힘 어레이 및 아바타에 대한 제약의 세트를 고려하여 아바타의 요소의 운동 방정식에 대한 해를 계산하기 위한 프로그램 코드, 해는 가속도의 어레이를 포함하되, 가속도의 어레이 내의 가속도 값은, 강체 시스템으로서 특정한 아바타 바디 부분에 적용될 가속도임, 가속도의 어레이에 기초하여 아바타 바디 부분의 위치 및/또는 속도를 업데이트하기 위한 프로그램 코드.
몇몇 실시형태에서, 그들은, 시뮬레이션 클록을 전진시키는 것, 비디오 프레임 출력을 생성하는 것, 및 센서 출력으로부터 추적된 바디 부분의 위치 및 방위를 결정하기 위한 프로그램 코드를 반복하는 것, 힘의 어레이를 결합하는 것이 성분별 가산(component-by-component addition)을 포함하는 것, 밸런스 제어 힘값 및 이동 제어 힘값에 대한 힘값의 제2 어레이 및 힘값의 제3 어레이 둘 모두를 계산하기 위한 프로그램 코드로서, 제1 어레이 및 제2 어레이를 합산된 힘 어레이로 결합하기 위한 프로그램 코드는 또한 제3 어레이를 합산된 힘 어레이에 결합하는, 밸런스 제어 힘값 및 이동 제어 힘값에 대한 힘값의 제2 어레이 및 힘값의 제3 어레이 둘 모두를 계산하기 위한 프로그램 코드 중 하나 이상을 포함한다. 합산된 힘 어레이는, 시뮬레이팅된 중력 및/또는 아바타의 상호 작용으로부터의 기여 및/또는 환경 오브젝트 및/또는 다른 아바타와의 상호 작용으로부터의 기여를 포함할 수도 있다.
제약의 세트는, 물리적 제약, 접촉 제약, 관절 제약, 및/또는 모터 제약 중 하나 이상을 포함할 수도 있을 것이다.
가상 현실 시스템은 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공할 수 있는데, 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 시각적 출력은, 가상 공간의 가상 좌표계가 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 사용자의 머리 움직임과 함께 변하고, 가상 현실 시스템은: 프로세서, 프로세서에 결합되고, 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리, 프로세서에 결합되고, 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리, 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 을 포함하고, 프로그램 메모리는 다음을 포함한다: a) 가상 공간에서 전신 아바타를 생성하기 위한 프로그램 코드, 전신 아바타는, 센서에 의해 감지되는 복수의 사용자 바디 부분의 움직임에 대응하는 전신 아바타의 움직임을 표현하기에 충분한 복수의 아바타 바디 부분에 대응함, 및 b) 복수의 아바타 바디 부분 중 하나 이상에 관해 정의되는 관절 제약 및 물리적 제약에 따라 그리고 복수의 사용자 바디 부분 중 하나 이상의 감지된 움직임에 따라 복수의 아바타 바디 부분 중 하나 이상의 움직임 및/또는 위치를 결정하기 위한 프로그램 코드.
복수의 아바타 바디 부분은, 머리, 목, 등, 골반, 엉덩이, 무릎, 발목, 발, 어깨, 팔꿈치, 손목 및 손을 포함할 수도 있을 것이다. 관절 제약은 아바타 바디 부분의 계층적 트리 그래프 구조에 의해 정의될 수도 있을 것인데, 이 경우, 그래프의 에지는 두 개의 아바타 바디 부분 사이의 관절에 대응하고 각각의 관절은 소켓 관절, 힌지 관절, 또는 유니버설 관절을 포함한다. 가상 현실 시스템은, 아바타 바디 부분에 대한 사이즈가, 복수의 사용자 바디 부분 중 대응하는 부분의 실제 사이즈의 추정치에 대응하는 교정 데이터를 갖는 교정 데이터로부터 결정되는 것, 및 사용자의 특정한 포즈를 요청하기 위한 프로그램 코드, 사용자가 특정한 포즈에 있을 때 센서 데이터를 기록하기 위한 프로그램 코드, 센서 데이터에 기초하여 아바타 바디 부분에 대한 사이즈를 계산하기 위한 프로그램 코드, 및 계산된 사이즈를, 아바타 바디 부분을 애니메이팅함에 있어서 사용하기 위한 아바타 바디 부분 사이즈로서 저장하기 위한 프로그램 코드를 포함할 수도 있을 것이다.
가상 현실 시스템은 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공할 수 있는데, 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 시각적 출력은, 가상 공간의 가상 좌표계가 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 사용자의 머리 움직임에 따라 변한다. 가상 현실 시스템은, 프로세서, 프로세서에 결합되고, 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리, 프로세서에 결합되고, 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리, 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함할 수도 있을 것이다. 프로그램 메모리는 다음을 포함할 수도 있을 것이다: a) 센서 데이터에 기초하여 사용자 손의 궤도를 계산하기 위한 프로그램 코드, b) 사용자 손의 궤도에 대응하는 가상 공간에서의 가상의 손의 위치를 결정하기 위한 프로그램 코드, c) 가상의 손의 궤도를 사용자 손의 궤도에 매칭시키는 것이 가상 공간의 제약을 위반할 것인지의 여부를 결정하기 위한 프로그램 코드, 및 d) 가상의 손의 표현을 가상의 손의 위치에서 그리고 가상의 손의 별개의 표현을 제약되지 않는 위치(unconstrained position)에서 디스플레이하기 위한 프로그램 코드, 제약되지 않는 위치는, 가상의 손이, 가상 공간의 제약을 제거한 상태에서, 사용자 손의 궤도와 정렬되는 경우에 가상의 손이 가상의 공간에서 있을 곳임.
가상 공간의 제약은, 솔리드 오브젝트가 다른 솔리드 오브젝트를 관통할 수 없다는 제약일 수도 있을 것이다. 별개의 표현은, 카메라 위치와 제약되지 않는 위치 사이에 있는 가상 공간의 임의의 개재하는 오브젝트를 통해 볼 수 있고 반투명하게 표시되는 제약되지 않는 위치에 있는 가상의 손의 표현일 수도 있을 것이다.
가상 현실 시스템은 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공할 수도 있을 것인데, 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 시각적 출력은, 가상 공간의 가상 좌표계가 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 사용자의 머리 움직임에 따라 변한다. 가상 현실 시스템은, 프로세서, 프로세서에 결합되고, 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리, 프로세서에 결합되고, 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리, 실세계 좌표계에서의 복수의 사용자 바디 부분 위치를 감지하기 위한 센서를 포함할 수도 있을 것이다. 프로그램 메모리는 다음을 포함할 수도 있을 것이다: a) 아바타 바디 부분에 대한 가상의 힘을 결정하기 위한 프로그램 코드, b) 사용자에 대한 1인칭 시점으로부터 아바타 바디 부분을 시각적 출력에서 표현하기 위한 프로그램 코드, 1인칭 시점에서, 가상 공간의 장면이 렌더링되는 카메라 위치는 아바타 머리의 눈 위치와 정렬됨, c) 가상의 힘이 아바타 머리를 임계량보다 더 많이 이동시킬 것인지의 여부를 결정하기 위한 프로그램 코드, 및 d) 카메라 위치 및 아바타 머리의 눈 위치를 연결 해제하기 위한 프로그램 코드.
가상 현실 시스템은, 아바타 바디 부분이 카메라 시야 내에 있을 때 시각적 출력에서 아바타 바디 부분을 디스플레이하기 위한 프로그램 코드, 및/또는 카메라 위치 및 아바타 머리의 눈 위치를 재정렬 및 재연결하기 위한 프로그램 코드를 포함할 수도 있을 것이다.
재정렬은 연속적인 프로세스, 또는 카메라 위치의 불연속적인 이동을 갖는 단계적 프로세스(step process)일 수도 있을 것이다.
가상 현실 시스템은 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공할 수도 있을 것인데, 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 시각적 출력은, 가상 공간의 가상 좌표계가 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 사용자의 머리 움직임에 따라 변한다. 가상 현실 시스템은 다음을 포함할 수도 있을 것이고: 프로세서, 프로세서에 결합되고, 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리, 프로세서에 결합되고, 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리, 실세계 좌표계에서의 복수의 사용자 바디 부분 위치를 감지하기 위한 센서, 및 프로그램 메모리, 프로그램 메모리는 다음을 포함할 수도 있을 것이다: a) 부착 조건이 존재하는지의 여부를 결정하기 위한 프로그램 코드, b) 손과 파지된 오브젝트 사이에 새로운 관절을 삽입하도록 아바타 캐릭터 모델을 수정하기 위한 프로그램 코드, c) 분리 조건이 존재하는지의 여부를 결정하기 위한 프로그램 코드, 및 d) 손과 파지된 오브젝트 사이의 새로운 관절을 제거하도록 아바타 캐릭터 모델을 수정하기 위한 프로그램 코드.
본 명세서에서 인용되는 공개 공보, 특허 출원, 및 특허를 비롯한, 모든 참조 문헌은, 마치 각각의 참조 문헌이 참고로 통합되도록 개별적으로 그리고 명시적으로 명시되고 본 명세서에서 그 전체가 기술되는 것과 동일한 정도로, 참고로 본 명세서에 통합된다.

Claims (22)

  1. 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 상호 작용식 아바타 디스플레이 시스템(interactive avatar display system)으로서, 상기 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰(computer-generated view)이되, 상기 컴퓨터 생성 뷰는, 상기 사용자의 움직임에 응답하여 상기 가상 공간에서 움직이는 아바타를 포함하고, 상기 상호 작용식 아바타 디스플레이는,
    프로세서;
    상기 프로세서에 결합되고, 상기 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리;
    상기 프로세서에 결합되고, 상기 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리;
    상기 사용자의 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함하되, 상기 프로그램 메모리는,
    a) 센서 출력으로부터 추적된 바디 부분의 위치 및 방위를 결정하기 위한 프로그램 코드로서, 상기 추적된 바디 부분은, 상기 센서 중 하나 이상에 영향을 끼치는 사용자 바디 부분인, 상기 바디 부분의 위치 및 방위를 결정하기 위한 프로그램 코드;
    b) 상기 아바타의 추적된 요소의 모션 목표를 생성하기 위한 프로그램 코드로서, 상기 모션 목표는, 상기 추적된 바디 부분 중 하나 이상의, 상기 사용자의 상기 실세계 좌표계에서의 위치 또는 방위에 대응하는 상기 가상 공간에서의 위치 또는 방위인, 상기 모션 목표를 생성하기 위한 프로그램 코드;
    c) 힘값의 제1 어레이를 계산하기 위한 프로그램 코드로서, 상기 제1 어레이 내의 힘값은, 특정한 아바타 바디 부분에 대한 힘에 대응하는 역동역학 힘값(inverse dynamics force value)이고, 상기 제1 어레이는, 상기 모션 목표에 의해 명시되지 않는 적어도 하나의 자유도를 비롯한, 복수의 아바타 자유도의 역동역학 힘값에 대응하는, 상기 힘값의 제1 어레이를 계산하기 위한 프로그램 코드;
    d) 힘값의 제2 어레이를 계산하기 위한 프로그램 코드로서, 상기 제1 어레이 내의 힘값은, 밸런스 제어 힘값(balance control force value) 또는 이동 제어 힘(locomotion control force) 중 어느 하나이고, 상기 제2 어레이는, 상기 가상 공간에서 상기 아바타의 밸런스를 유지하는 데 필요한 밸런스 제어 힘 또는 상기 모션 목표를 고려하여 상기 아바타의 상기 추적된 요소의 정렬을 유지하기 위해 상기 아바타를 전체적으로 이동시키는 데 필요한 이동 제어 힘 중 어느 하나에 대응하는, 상기 힘값의 제2 어레이를 계산하기 위한 프로그램 코드;
    e) 상기 제1 어레이 및 상기 제2 어레이를 합산된 힘 어레이로 결합하기 위한 프로그램 코드;
    f) 상기 아바타에 대한 제약의 세트를 결정하기 위한 프로그램 코드;
    g) 상기 합산된 힘 어레이 및 상기 아바타에 대한 상기 제약의 세트를 고려하여 상기 아바타의 요소의 운동 방정식에 대한 해를 계산하기 위한 프로그램 코드로서, 상기 해는 가속도의 어레이를 포함하되, 상기 가속도의 어레이 내의 가속도 값은, 강체 시스템(rigid body system)으로서 특정한 아바타 바디 부분에 적용될 가속도인, 상기 해를 계산하기 위한 프로그램 코드, 및
    h) 상기 가속도의 어레이에 기초하여 상기 아바타 바디 부분의 위치 및/또는 속도를 업데이트하기 위한 프로그램 코드를 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  2. 제1항에 있어서,
    시뮬레이션 클록을 전진시키는 것;
    비디오 프레임 출력을 생성하는 것, 및 센서 출력으로부터 상기 추적된 바디 부분의 위치 및 방위를 결정하기 위한 상기 프로그램 코드를 반복하는 것을 더 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  3. 제1항에 있어서, 힘의 어레이를 결합하는 것은 성분별 가산(component-by-component addition)을 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  4. 제1항에 있어서,
    밸런스 제어 힘값 및 이동 제어 힘값에 대한 힘값의 제2 어레이 및 힘값의 제3 어레이 둘 모두를 계산하기 위한 프로그램 코드를 더 포함하되, 상기 제1 어레이 및 상기 제2 어레이를 합산된 힘 어레이로 결합하기 위한 상기 프로그램 코드는 또한 상기 제3 어레이를 합산된 힘 어레이에 결합하는, 상호 작용식 아바타 디스플레이 시스템.
  5. 제1항에 있어서, 상기 합산된 힘 어레이는 시뮬레이팅된 중력으로부터의 기여를 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  6. 제1항에 있어서, 상기 합산된 힘 어레이는 상기 아바타의 상호 작용으로부터의 기여를 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  7. 제6항에 있어서, 상기 합산된 힘 어레이는, 환경 오브젝트 및/또는 다른 아바타와의 상호 작용으로부터의 기여를 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  8. 제1항에 있어서, 상기 제약의 세트는, 물리적 제약, 접촉 제약(contact constraint), 관절 제약(joint constraint) 및/또는 모터 제약(motor constraint) 중 하나 이상을 포함하는, 상호 작용식 아바타 디스플레이 시스템.
  9. 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 가상 현실 시스템으로서, 상기 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 상기 시각적 출력은, 상기 가상 공간의 가상 좌표계가 상기 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 상기 사용자의 머리 움직임과 함께 변하며, 상기 가상 현실 시스템은,
    프로세서;
    상기 프로세서에 결합되고, 상기 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리;
    상기 프로세서에 결합되고, 상기 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리;
    상기 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함하되, 상기 프로그램 메모리는:
    a) 상기 가상 공간에서 전신 아바타(full body avatar)를 생성하기 위한 프로그램 코드로서, 상기 전신 아바타는, 상기 센서에 의해 감지되는 복수의 사용자 바디 부분의 움직임에 대응하는 상기 전신 아바타의 움직임을 표현하기에 충분한 상기 복수의 아바타 바디 부분에 대응하는, 상기 가상 공간에서 전신 아바타를 생성하기 위한 프로그램 코드, 및 b) 상기 복수의 아바타 바디 부분 중 하나 이상에 관해 정의되는 관절 제약 및 물리적 제약에 따라 그리고 상기 복수의 사용자 바디 부분 중 하나 이상의 감지된 움직임에 따라 상기 복수의 아바타 바디 부분 중 하나 이상의 움직임 및/또는 위치를 결정하기 위한 프로그램 코드를 포함하는, 가상 현실 시스템.
  10. 제9항에 있어서, 상기 복수의 아바타 바디 부분은, 머리, 목, 등, 골반, 엉덩이, 무릎, 발목, 발, 어깨, 팔꿈치, 손목 및 손을 포함하는, 가상 현실 시스템.
  11. 제9항에 있어서, 상기 관절 제약은 아바타 바디 부분의 계층적 트리 그래프 구조에 의해 정의되되, 그래프의 에지는 두 개의 아바타 바디 부분 사이의 관절에 대응하고 각각의 관절은 소켓 관절(socket joint), 힌지 관절(hinge joint) 또는 유니버설 관절(universal joint)을 포함하는, 가상 현실 시스템.
  12. 제9항에 있어서, 아바타 바디 부분에 대한 사이즈는, 상기 복수의 사용자 바디 부분 중 대응하는 부분의 실제 사이즈의 추정치에 대응하는 교정 데이터를 갖는 교정 데이터로부터 결정되는, 가상 현실 시스템.
  13. 제12항에 있어서,
    상기 사용자의 특정한 포즈를 요청하기 위한 프로그램 코드;
    상기 사용자가 특정한 포즈에 있을 때 센서 데이터를 기록하기 위한 프로그램 코드;
    상기 센서 데이터에 기초하여 상기 아바타 바디 부분에 대한 상기 사이즈를 계산하기 위한 프로그램 코드, 및 계산된 사이즈를, 상기 아바타 바디 부분을 애니메이팅함에 있어서 사용하기 위한 아바타 바디 부분 사이즈로서 저장하기 위한 프로그램 코드를 더 포함하는, 가상 현실 시스템.
  14. 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 가상 현실 시스템으로서, 상기 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 상기 시각적 출력은, 상기 가상 공간의 가상 좌표계가 상기 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 상기 사용자의 머리 움직임과 함께 변하며, 상기 가상 현실 시스템은,
    프로세서;
    상기 프로세서에 결합되고, 상기 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리;
    상기 프로세서에 결합되고, 상기 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리;
    상기 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함하되, 상기 프로그램 메모리는,
    a) 센서 데이터에 기초하여 사용자 손의 궤도를 계산하기 위한 프로그램 코드;
    b) 상기 사용자 손의 상기 궤도에 대응하는 상기 가상 공간에서의 가상의 손의 위치를 결정하기 위한 프로그램 코드;
    c) 상기 가상의 손의 궤도를 상기 사용자 손의 상기 궤도에 매칭시키는 것이 상기 가상 공간의 제약을 위반할 것인지의 여부를 결정하기 위한 프로그램 코드, 및
    d) 상기 가상의 손의 표현을 상기 가상의 손의 상기 위치에서 그리고 상기 가상의 손의 별개의 표현을 제약되지 않는 위치(unconstrained position)에서 디스플레이하기 위한 프로그램 코드로서, 상기 제약되지 않는 위치는, 상기 가상의 손이, 상기 가상 공간의 상기 제약을 제거한 상태에서, 상기 사용자 손의 상기 궤도와 정렬되는 경우에 상기 가상의 손이 상기 가상의 공간에서 있을 곳인, 상기 디스플레이하기 위한 프로그램 코드를 포함하는, 가상 현실 시스템.
  15. 제14항에 있어서, 상기 가상 공간의 상기 제약은, 솔리드 오브젝트(solid object)가 다른 솔리드 오브젝트를 관통할 수 없다는 제약인, 가상 현실 시스템.
  16. 제14항에 있어서, 상기 별개의 표현은, 상기 카메라 위치와 상기 제약되지 않는 위치 사이에 있는 상기 가상 공간의 임의의 개재하는 오브젝트(intervening object)를 통해 볼 수 있고 반투명하게 표시되는 상기 제약되지 않는 위치에 있는 상기 가상의 손의 표현인, 가상 현실 시스템.
  17. 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 가상 현실 시스템으로서, 상기 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 상기 시각적 출력은, 상기 가상 공간의 가상 좌표계가 상기 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 상기 사용자의 머리 움직임과 함께 변하며, 상기 가상 현실 시스템은,
    프로세서;
    상기 프로세서에 결합되고, 상기 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리;
    상기 프로세서에 결합되고, 상기 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리;
    상기 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함하되, 상기 프로그램 메모리는,
    a) 아바타 바디 부분에 대한 가상의 힘을 결정하기 위한 프로그램 코드;
    b) 상기 사용자에 대한 1인칭 시점(first person perspective)으로부터 상기 아바타 바디 부분을 상기 시각적 출력에서 표현하기 위한 프로그램 코드로서, 상기 1인칭 시점에서, 상기 가상 공간의 장면이 렌더링되는 카메라 위치는 아바타 머리의 눈 위치와 정렬되는, 상기 아바타 바디 부분을 상기 시각적 출력에서 표현하기 위한 프로그램 코드;
    c) 상기 가상의 힘이 상기 아바타 머리를 임계량보다 더 많이 이동시킬 것인지의 여부를 결정하기 위한 프로그램 코드, 및
    d) 상기 카메라 위치 및 상기 아바타 머리의 상기 눈 위치를 연결 해제하기(unlinking) 위한 프로그램 코드를 포함하는, 가상 현실 시스템.
  18. 제17항에 있어서, 아바타 바디 부분이 카메라 시야 내에 있을 때 상기 시각적 출력에서 상기 아바타 바디 부분을 디스플레이하기 위한 프로그램 코드를 더 포함하는, 가상 현실 시스템.
  19. 제17항에 있어서, 상기 카메라 위치 및 상기 아바타 머리의 상기 눈 위치를 재정렬 및 재연결하기 위한 프로그램 코드를 더 포함하는, 가상 현실 시스템.
  20. 제19항에 있어서, 상기 재정렬은 연속적인 프로세스인, 가상 현실 시스템.
  21. 제19항에 있어서, 상기 재정렬은 상기 카메라 위치의 불연속적인 이동을 갖는 단계적 프로세스(step process)인, 가상 현실 시스템.
  22. 사용자가 볼 수 있는 디바이스 상에 적어도 시각적 출력을 제공하는 가상 현실 시스템으로서, 상기 시각적 출력은, 카메라 위치 및 카메라 앵글로부터의 가상 공간의 컴퓨터 생성 뷰이고, 상기 시각적 출력은, 상기 가상 공간의 가상 좌표계가 상기 사용자의 실세계 좌표계에 대해 고정되는 모습을 생성하도록 상기 사용자의 머리 움직임과 함께 변하며, 상기 가상 현실 시스템은,
    프로세서;
    상기 프로세서에 결합되고, 상기 프로세서에 의한 실행을 위한 프로그램 명령어를 포함하는 프로그램 메모리;
    상기 프로세서에 결합되고, 상기 프로세서에 의해 액세스 가능한 데이터를 저장하기 위한 데이터 메모리;
    상기 실세계 좌표계에서의 복수의 사용자 바디 부분의 위치를 감지하기 위한 센서를 포함하되, 상기 프로그램 메모리는,
    a) 부착 조건이 존재하는지의 여부를 결정하기 위한 프로그램 코드;
    b) 손과 파지된 오브젝트 사이에 새로운 관절을 삽입하도록 아바타 캐릭터 모델을 수정하기 위한 프로그램 코드;
    c) 분리 조건(detachment condition)이 존재하는지의 여부를 결정하기 위한 프로그램 코드, 및
    d) 상기 손과 상기 파지된 오브젝트 사이의 상기 새로운 관절을 제거하도록 상기 아바타 캐릭터 모델을 수정하기 위한 프로그램 코드를 포함하는, 가상 현실 시스템.
KR1020197020371A 2016-12-13 2017-12-13 솔버용의 다수의 힘 어레이를 사용한 향상된 가상 현실 시스템 KR20190110539A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662433764P 2016-12-13 2016-12-13
US62/433,764 2016-12-13
PCT/US2017/066226 WO2018112112A1 (en) 2016-12-13 2017-12-13 Improved virtual reality system using multiple force arrays for a solver

Publications (1)

Publication Number Publication Date
KR20190110539A true KR20190110539A (ko) 2019-09-30

Family

ID=62489984

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197020371A KR20190110539A (ko) 2016-12-13 2017-12-13 솔버용의 다수의 힘 어레이를 사용한 향상된 가상 현실 시스템

Country Status (6)

Country Link
US (1) US10657696B2 (ko)
EP (1) EP3552199A4 (ko)
JP (1) JP2020502709A (ko)
KR (1) KR20190110539A (ko)
CA (1) CA3045908A1 (ko)
WO (1) WO2018112112A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10096133B1 (en) 2017-03-31 2018-10-09 Electronic Arts Inc. Blendshape compression system
US10497163B1 (en) * 2017-05-16 2019-12-03 Electronic Arts Inc. Computer architecture for animation of a character in a simulation based on muscle activation data
US10535174B1 (en) 2017-09-14 2020-01-14 Electronic Arts Inc. Particle-based inverse kinematic rendering system
US10386938B2 (en) * 2017-09-18 2019-08-20 Google Llc Tracking of location and orientation of a virtual controller in a virtual reality system
US10477186B2 (en) * 2018-01-17 2019-11-12 Nextvr Inc. Methods and apparatus for calibrating and/or adjusting the arrangement of cameras in a camera pair
ES2725128B2 (es) * 2018-03-15 2020-07-22 Univ Rey Juan Carlos Método implementado por ordenador, sistema y producto del programa de ordenador para simular el comportamiento de una mano que interactúa con objetos en un entorno virtual.
GB201813450D0 (en) * 2018-08-17 2018-10-03 Hiltermann Sean Augmented reality doll
WO2020054954A1 (en) * 2018-09-11 2020-03-19 Samsung Electronics Co., Ltd. Method and system for providing real-time virtual feedback
WO2020068739A1 (en) 2018-09-27 2020-04-02 Dakiana Research Llc Moving an avatar based on real-world data
JP7271251B2 (ja) * 2019-03-22 2023-05-11 日産自動車株式会社 情報処理装置及び情報処理方法
US10978019B2 (en) * 2019-04-15 2021-04-13 XRSpace CO., LTD. Head mounted display system switchable between a first-person perspective mode and a third-person perspective mode, related method and related non-transitory computer readable storage medium
GB201906420D0 (en) 2019-05-07 2019-06-19 Farley Adam Virtual augmented and mixed reality systems with physical feedback
US10748350B1 (en) * 2019-05-17 2020-08-18 Roblox Corporation Modification of animated characters
CN110174951B (zh) * 2019-05-30 2022-06-21 郑州爱普锐科技有限公司 基于vr实训设备的人物动作识别方法
US10902618B2 (en) * 2019-06-14 2021-01-26 Electronic Arts Inc. Universal body movement translation and character rendering system
CN111857367B (zh) * 2019-07-10 2023-06-27 深圳市工匠社科技有限公司 虚拟角色控制方法及装置
KR20220051266A (ko) * 2019-09-06 2022-04-26 스포츠 데이타 랩스, 인코포레이티드 시뮬레이션된 동물 데이터 및 모델을 생성하기 위한 시스템
CN110721473B (zh) * 2019-10-10 2022-10-04 深圳市瑞立视多媒体科技有限公司 物体抛出方法、装置、设备及计算机可读存储介质
EP3813023A1 (en) * 2019-10-21 2021-04-28 Dassault Systèmes Computer-implemented method for making a skeleton of a modeled body take a posture
CN113052781B (zh) * 2019-12-26 2024-04-12 华为技术有限公司 图像检测方法、装置、设备、系统和存储介质
US11972353B2 (en) 2020-01-22 2024-04-30 Electronic Arts Inc. Character controllers using motion variational autoencoders (MVAEs)
US11504625B2 (en) 2020-02-14 2022-11-22 Electronic Arts Inc. Color blindness diagnostic system
US11648480B2 (en) 2020-04-06 2023-05-16 Electronic Arts Inc. Enhanced pose generation based on generative modeling
US11232621B2 (en) 2020-04-06 2022-01-25 Electronic Arts Inc. Enhanced animation generation based on conditional modeling
US11776193B1 (en) * 2020-04-28 2023-10-03 Apple Inc. Granular motion control for a virtual agent
WO2021241190A1 (ja) * 2020-05-25 2021-12-02 ソニーグループ株式会社 メディア配信装置およびメディア配信方法、並びにプログラム
JP6801138B1 (ja) 2020-07-16 2020-12-16 株式会社バーチャルキャスト 端末装置、仮想オブジェクト操作方法、及び仮想オブジェクト操作プログラム
CN112000228B (zh) * 2020-09-04 2024-04-05 河北大学 一种沉浸式虚拟现实中控制移动的方法及系统
EP4264487A4 (en) * 2020-12-21 2024-07-03 Icuemotion Llc OPEN MOTOR SKILLS EVALUATION AND REINFORCEMENT SYSTEM
US11830121B1 (en) 2021-01-26 2023-11-28 Electronic Arts Inc. Neural animation layering for synthesizing martial arts movements
KR20220111918A (ko) 2021-02-03 2022-08-10 삼성전자주식회사 캐릭터 애니메이션 동작 제어 방법 및 장치
US11887232B2 (en) 2021-06-10 2024-01-30 Electronic Arts Inc. Enhanced system for generation of facial models and animation
US11670030B2 (en) 2021-07-01 2023-06-06 Electronic Arts Inc. Enhanced animation generation based on video with local phase
US11562523B1 (en) 2021-08-02 2023-01-24 Electronic Arts Inc. Enhanced animation generation based on motion matching using local bone phases
KR102641519B1 (ko) * 2021-08-11 2024-02-29 한국전자기술연구원 메타버스 제공 방법, 메타버스 제공 장치, 및 메타버스 제공 시스템
CN114089833A (zh) * 2021-11-23 2022-02-25 清华大学 一种虚拟现实身体所有权的量化方法、系统及电子设备
KR102464437B1 (ko) 2022-05-04 2022-11-09 주식회사 엠펀치 기가 픽셀 미디어 객체 감상 및 거래를 제공하는 메타버스 기반 크로스 플랫폼 서비스 시스템
CN116652971A (zh) * 2023-07-31 2023-08-29 江苏云幕智造科技有限公司 一种不同刚度物体识别与机械手抓取力控制方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL119082A (en) * 1996-08-16 2001-04-30 Virtue Ltd A method for creating graphic characters
US7135003B2 (en) * 2001-06-29 2006-11-14 Honda Giken Kogyo Kabushiki Kaisha Feedback estimation of joint forces and joint moments
US7333111B2 (en) * 2003-04-25 2008-02-19 Honda Giken Kogyo Kabushiki Kaisha Joint component framework for modeling complex joint behavior
US20060277466A1 (en) 2005-05-13 2006-12-07 Anderson Thomas G Bimodal user interaction with a simulated object
US7573477B2 (en) 2005-06-17 2009-08-11 Honda Motor Co., Ltd. System and method for activation-driven muscle deformations for existing character motion
US7403202B1 (en) * 2005-07-12 2008-07-22 Electronic Arts, Inc. Computer animation of simulated characters using combinations of motion-capture data and external force modelling or other physics models
JP4682791B2 (ja) * 2005-10-12 2011-05-11 ソニー株式会社 操作空間物理量算出装置及び操作空間物理量算出方法、並びにコンピュータ・プログラム
US9067097B2 (en) * 2009-04-10 2015-06-30 Sovoz, Inc. Virtual locomotion controller apparatus and methods
US8253746B2 (en) * 2009-05-01 2012-08-28 Microsoft Corporation Determine intended motions
KR101671900B1 (ko) * 2009-05-08 2016-11-03 삼성전자주식회사 가상 세계에서의 객체를 제어하는 시스템, 방법 및 기록 매체
US20100302253A1 (en) 2009-05-29 2010-12-02 Microsoft Corporation Real time retargeting of skeletal data to game avatar
US9245177B2 (en) * 2010-06-02 2016-01-26 Microsoft Technology Licensing, Llc Limiting avatar gesture display
US9401178B2 (en) * 2010-08-26 2016-07-26 Blast Motion Inc. Event analysis system
US8860732B2 (en) 2010-09-27 2014-10-14 Adobe Systems Incorporated System and method for robust physically-plausible character animation
US9381426B1 (en) * 2013-03-15 2016-07-05 University Of Central Florida Research Foundation, Inc. Semi-automated digital puppetry control
US9536138B2 (en) * 2014-06-27 2017-01-03 Microsoft Technology Licensing, Llc Dynamic remapping of components of a virtual skeleton
US9984505B2 (en) * 2014-09-30 2018-05-29 Sony Interactive Entertainment Inc. Display of text information on a head-mounted display

Also Published As

Publication number Publication date
JP2020502709A (ja) 2020-01-23
WO2018112112A1 (en) 2018-06-21
EP3552199A1 (en) 2019-10-16
US10657696B2 (en) 2020-05-19
US20180165864A1 (en) 2018-06-14
EP3552199A4 (en) 2020-06-24
CA3045908A1 (en) 2018-06-21

Similar Documents

Publication Publication Date Title
US10657696B2 (en) Virtual reality system using multiple force arrays for a solver
CA3111430C (en) Systems and methods for generating complementary data for visual display
Borst et al. Realistic virtual grasping
US11928765B2 (en) Animation implementation method and apparatus, electronic device, and storage medium
CN112001989B (zh) 虚拟对象的控制方法及装置、存储介质、电子装置
JP7437327B2 (ja) 異種入力の補間のための方法およびシステム
Caserman et al. A survey of full-body motion reconstruction in immersive virtual reality applications
US7403202B1 (en) Computer animation of simulated characters using combinations of motion-capture data and external force modelling or other physics models
Badler et al. Real-time control of a virtual human using minimal sensors
US20170003738A1 (en) Systems and methods for immersive physical interaction with a virtual environment
Shum et al. Real-time physical modelling of character movements with microsoft kinect
WO2018222753A1 (en) Eye tracking calibration techniques
Zuher et al. Recognition of human motions for imitation and control of a humanoid robot
JP4463120B2 (ja) 身まねロボットシステムとその身まね動作制御方法
Kenwright Generating responsive life-like biped characters
Caserman et al. Analysis of inverse kinematics solutions for full-body reconstruction in virtual reality
Kenwright Real-time physics-based fight characters
Kenwright Real-Time Reactive Biped Characters: Staying Upright and Balanced
Teleb et al. Data glove integration with 3d virtual environments
US20120223953A1 (en) Kinematic Engine for Adaptive Locomotive Control in Computer Simulations
US11887259B2 (en) Method, system, and apparatus for full-body tracking with magnetic fields in virtual reality and augmented reality applications
Kim et al. Realtime performance animation using sparse 3D motion sensors
White et al. A virtual reality application for stroke patient rehabilitation
Charles Real-time human movement mapping to a virtual environment
Friðriksson et al. Become your Avatar: Fast Skeletal Reconstruction from Sparse Data for Fully-tracked VR.