KR20210111821A - 3 차원 콘텐츠 내에서의 객체 위치설정 및 이동 - Google Patents

3 차원 콘텐츠 내에서의 객체 위치설정 및 이동 Download PDF

Info

Publication number
KR20210111821A
KR20210111821A KR1020217024817A KR20217024817A KR20210111821A KR 20210111821 A KR20210111821 A KR 20210111821A KR 1020217024817 A KR1020217024817 A KR 1020217024817A KR 20217024817 A KR20217024817 A KR 20217024817A KR 20210111821 A KR20210111821 A KR 20210111821A
Authority
KR
South Korea
Prior art keywords
displayed object
displayed
adjusting
input
implementations
Prior art date
Application number
KR1020217024817A
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 KR20210111821A publication Critical patent/KR20210111821A/ko

Links

Images

Classifications

    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/163Wearable computers, e.g. on a belt
    • 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/0304Detection arrangements using opto-electronic means
    • 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/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
    • 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
    • G06F9/451Execution arrangements for user interfaces
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts

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 Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Architecture (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 명세서에 개시된 다양한 구현예들은, 예를 들어 디바이스 상에 제공하는 향상 현실(ER) 설정에서, 3D 레이아웃에 객체의 더 직관적이고 효율적인 위치설정을 가능하게 하는 디바이스들, 시스템들, 및 방법들을 포함한다. 일부 구현예들에서, 객체들은 객체의 위치설정 동안 선택적으로 인에이블되는 시뮬레이션된 물리학에 기초하여 자동으로 위치설정된다. 일부 구현예들에서, 객체들은 시뮬레이션된 물리학 및 정렬 규칙들에 기초하여 자동으로 위치설정된다. 일부 구현예들에서, 객체들은, 제2 객체와 그룹화된 제1 객체가 제2 객체의 이동에 응답하여 자동으로 제2 객체와 함께 이동하지만 제2 객체와는 독립적으로 이동가능하도록 기준들에 기초하여 자동으로 함께 그룹화된다.

Description

3 차원 콘텐츠 내에서의 객체 위치설정 및 이동
본 개시내용은 대체적으로 3 차원(3D) 콘텐츠를 생성하는 것에 관한 것으로, 특히 3D 레이아웃들 내의 이러한 콘텐츠 내에 객체들을 삽입하고 위치설정하기 위한 시스템들, 방법들, 및 디바이스들에 관한 것이다.
3D 콘텐츠를 생성하는 것은 매우 시간 소모적이고, 직관적이지 않으며, 어려울 수 있다. 그러한 생성은 3D 객체들을 정확한 위치들에, 그리고 다른 3D 객체들과 관련하여, 공들여 위치설정하고 회전시키기 위해 마우스 또는 다른 컴퓨터-기반 입력 디바이스를 사용하는 것을 종종 필요로 한다.
본 명세서에 개시된 다양한 구현예들은 3D 레이아웃 내의 객체의 더 직관적이고 효율적인 위치설정을 가능하게 하는 디바이스들, 시스템들, 및 방법들을 포함한다.
일부 구현예들에서, 프로세서를 갖는 전자 디바이스가 방법을 구현한다. 본 방법은 3 차원(3D) 그래픽 레이아웃 내의 위치에서 디스플레이된 객체의 위치설정을 개시하는 입력을 획득한다. 획득된 입력에 응답하여 디스플레이된 객체를 위치설정한 후에, 본 방법은 적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 디스플레이된 객체의 위치를 조정한다. 예들로서, 디스플레이된 객체의 위치는 시뮬레이션된 중력에 따라 그리고/또는 3D 그래픽 레이아웃 내의 다른 객체와 디스플레이된 객체의 충돌에 따라 3D 그래픽 레이아웃 내에서 병진(translation)될 수 있다. 디스플레이된 객체의 위치를 조정한 후에, 본 방법은 디스플레이된 객체에 대해 적어도 하나의 시뮬레이션된 물리학 모델을 디스에이블한다.
일부 구현예들에서, 프로세서를 갖는 전자 디바이스는 선택적으로 물리학을 사용함으로써 3D 레이아웃 내의 객체를 위치설정하는 방법을 구현한다. 전자 디바이스는 사용자 인터페이스 내에 디스플레이된 3D 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 예를 들어, 디바이스 상에 제공하는 향상 현실(ER; enhanced reality) 설정에서, 사용자는 개발되고 있는 앱의 3D 레이아웃에 추가하기 위한 가상 테이블 객체를 선택하고, 테이블을 가상으로 잡고 있는 손을 내밀고, 그 위치에서 테이블을 놓거나, 드롭하거나, 던질 수 있다.
전자 디바이스는 3D 레이아웃 내의 객체의 위치설정 동안 객체에 대해 시뮬레이션된 물리학을 인에이이블한다. 일부 구현예들에서, 물리학은 객체에 대해서만 인에이블되고 다른 객체들에 대해 인에이블되지 않는다. 일부 구현예들에서, 예컨대, 사용자가 바닥 꽃병(floor vase)을 의도치 않게 넘어뜨리는 것을 방지하면서 사용자가 테이블을 사용하여 소파를 밀 수 있게 하기 위해, 객체 및 선택 기준에 기초하여 선택되는 다른 선택된 객체들에 대해 물리학이 인에이블된다.
전자 디바이스는 위치설정을 개시하는 입력 및 시뮬레이션된 물리학에 기초하여 3D 레이아웃 내의 객체를 위치설정한다. 일례에서, 사용자는 테이블을 드롭하고 테이블은 시뮬레이션된 중력에 기초하여 바닥 위의 위치로 낙하할 것이다. 다른 예에서, 사용자는 의자를 밀고, 의자는, 의자와 벽 사이의 물리적 상호작용을 시뮬레이션하는 것에 기초하여 의자가 벽에 부딪힐 때 이동을 멈출 것이다. 객체의 이동은 시뮬레이션된 물리학 단독 또는 시뮬레이션된 물리학 및 객체가 다른 객체와 정렬되는 위치로 이동하는 결과를 가져오는 정렬 기준과 같은 추가적인 이동 영향 요인들에 기초할 수 있다. 전자 디바이스는 객체의 위치설정이 종료되었다고 결정하는 것에 기초하여, 객체 및 위치설정 프로세스 동안 시뮬레이션된 물리학이 인에이블된 임의의 다른 객체들에 대해 시뮬레이션된 물리학을 디스에이블한다. 예를 들어, 객체가 배치되면, 물리학은 객체 및 관련 객체들에 대해 턴오프될 수 있다.
일부 구현예들에서, 프로세서를 갖는 전자 디바이스는 시뮬레이션된 물리학 및 정렬 기준에 기초하여 3D 레이아웃 내의 객체를 위치로 이동시키기 위한 방법을 구현한다. 전자 디바이스는 사용자 인터페이스 내에 디스플레이된 3D 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 예를 들어, 디바이스 상에 제공하는 ER 설정에서, 3D 앱 제작자 또는 다른 사용자는 개발되고 있는 앱의 레이아웃에 추가할 의자 객체를 선택하고 테이블 근처의 장소 위에 의자를 드롭할 수 있다. 전자 디바이스는 3D 레이아웃 내의 제1 최종 위치를 향한 이동 경로를 따라 객체의 이동을 개시한다. 예를 들어, 제1 최종 위치는 테이블의 일면 근처의 바닥 상에 있을 수 있다. 제1 최종 위치는 시뮬레이션된 물리학에 기초하여 결정된다. 객체가 제1 최종 위치로의 이동을 시작하는 동안, 디바이스는 객체를 제1 최종 위치에 기초하여 식별되는 제2 객체와 정렬시키는 것에 기초하여 객체에 대한 제2 최종 위치를 결정한다. 예를 들어, 의자가 바닥을 향해 이동하기 시작함에 따라, 디바이스는 의자가 테이블 근처에 착지할 것임을 신속하게 식별하고 테이블과 더 잘 정렬되는, 의자에 대한 상이한 최종 위치를 계산할 수 있다. 전자 디바이스는 제2 최종 위치에 기초하여 이동 중에 객체의 이동 경로를 변경한다. 예를 들어, 의자의 이동 경로는 물리학-기반 위치설정을 정렬-기반 위치설정과 블렌딩하도록 변경될 수 있다. 이는 사용자에게 덜 거슬리거나 그렇지 않으면 덜 불쾌한 더 매끄러운 이동을 제공할 수 있다.
일부 구현예들에서, 프로세서를 갖는 전자 디바이스는, 제1 객체가 제2 객체의 이동에 응답하여 자동으로 제2 객체와 함께 이동하도록 그룹화가 제1 객체를 제2 객체와 연관시키는, 그러나 제1 객체가 제2 객체와 독립적으로 이동할 수 있는 기준들에 기초하여 객체 배치 중에 그룹화를 인에이블하는 방법을 구현한다. 전자 디바이스는 사용자 인터페이스 내에 디스플레이된 3 차원(3D) 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 예를 들어, 디바이스 상에 제공하는 ER 설정에서, 3D 앱 제작자 또는 다른 사용자는 개발되고 있는 앱의 레이아웃에 추가할 꽃병 객체를 선택하고, 손을 뻗고, 테이블 상에 꽃병을 놓거나 드롭할 수 있다. 전자 디바이스는 위치설정을 개시하는 입력에 기초하여 3D 레이아웃 내의 객체를 위치설정하며, 예를 들어, 시뮬레이션된 중력에 기초하여 객체의 낙하를 시뮬레이션하는 것에 기초하여 테이블 상의 위치를 선택한다. 전자 디바이스는 기준들, 예컨대 근접성, 표면 유형, 객체 유형 등에 기초하여 객체와 제2 객체의 그룹화를 인에이블한다. 그룹화에 기초하여, 객체는 제2 객체의 이동에 응답하여 자동으로 제2 객체와 함께 이동하지만, 객체는 제2 객체와 독립적으로 이동할 수 있다. 꽃병/테이블 예에서, 꽃병은 테이블이 이동될 때 이동하지만, 꽃병이 테이블과 독립적으로 이동될 수 있다.
일부 구현예들에 따르면, 비일시적 컴퓨터 판독가능 저장 매체는 본 명세서에 기술된 방법들 중 임의의 방법을 수행하거나 또는 그의 수행을 야기하도록 컴퓨터 실행가능한 명령어들을 그 안에 저장하고 있다. 일부 구현예들에 따르면, 디바이스는 하나 이상의 프로세서들, 비일시적 메모리, 및 하나 이상의 프로그램들을 포함하고; 하나 이상의 프로그램들은 비일시적 메모리에 저장되며 하나 이상의 프로세서들에 의해 실행되도록 구성되고, 하나 이상의 프로그램들은 본 명세서에 설명된 방법들 중 임의의 방법을 수행하거나 그의 수행을 야기하기 위한 명령어들을 포함한다.
본 개시내용이 당업자들에 의해 이해될 수 있도록, 더 상세한 설명이 일부 예시적인 구현예들의 양태들에 대한 참조에 의해 이루어질 수 있으며, 이들 중 일부는 첨부 도면들에 도시된다.
도 1은 일부 구현예들에 따른 예시적인 동작 환경의 블록도이다.
도 2는 일부 구현예들에 따른 예시적인 제어기의 블록도이다.
도 3은 일부 구현예들에 따른 예시적인 디바이스의 블록도이다.
도 4는 일부 구현예들에 따른, 장면 생성을 위해 선택적으로 물리학을 사용하는 예시적인 방법을 도시하는 흐름도이다.
도 5는 일부 구현예들에 따른, ER 설정에서 객체의 배치를 개시하는 사용자 액션을 예시하는 블록도이다.
도 6은 일부 구현예들에 따른 물리학의 선택적 사용에 기초하여 ER 설정에서 위치설정된 후 도 5의 객체의 최종 위치를 도시한 블록도이다.
도 7은 일부 구현예들에 따른, 시뮬레이션된 물리학에 따라, 그리고 다른 객체와 정렬되도록, 장면 내의 객체의 배치 중에 객체를 이동시키는 예시적인 방법을 도시하는 흐름도이다.
도 8은 도 5 및 도 6의 ER 설정에서 제2 객체의 배치를 개시하는 사용자 액션을 도시하는 블록도이다.
도 9는 일부 구현예들에 따른 물리학 및 정렬 규칙들에 기초하여 위치설정된 후 도 8의 제2 객체의 최종 위치를 도시한 블록도이다.
도 10은 일부 구현예들에 따른 기준들에 기초하여 객체 배치 중에 그룹화를 인에이블하는 예시적인 방법을 도시하는 흐름도이다.
도 11은 도 5 및 도 6의 ER 설정에서 제2 객체의 배치를 개시하는 사용자 액션을 도시하는 블록도이다.
도 12는 일부 구현예들에 따라, 위치설정되고 다른 객체와 그룹화된 후 도 11의 제2 객체의 최종 위치를 도시한 블록도이다.
도 13은 제1 객체가 밀릴 때 도 11 및 도 12의 제2 객체가 제1 객체와 함께 이동하는 것을 도시한 블록도이다.
도 14는 제2 객체가 밀릴 때 도 11 내지 도 13의 제2 객체가 제1 객체와는 독립적으로 이동하는 것을 도시한 블록도이다.
일반적인 실시에 따라, 도면에 도시된 다양한 특징부들은 축척대로 그려지지 않을 수 있다. 따라서, 다양한 특징부들의 치수들은 명료함을 위해 임의대로 확대 또는 축소될 수 있다. 부가적으로, 도면들 중 일부는 주어진 시스템, 방법 또는 디바이스의 컴포넌트들 모두를 도시하지는 않을 수 있다. 마지막으로, 동일한 도면 번호들은 명세서 및 도면들 전반에 걸쳐 동일한 특징부들을 나타내기 위해 사용될 수 있다.
도면들에 도시된 예시적인 구현예들의 완전한 이해를 제공하기 위해 다수의 세부사항들이 설명된다. 그러나, 도면들은 단지 본 개시내용의 일부 예시적인 양태들만을 도시할 뿐이며, 따라서 제한적인 것으로 고려되지 않는다. 통상의 기술자는 다른 효과적인 양태들 또는 변형들이 본 명세서에 설명되는 특정 세부사항들 모두를 포함하지는 않음을 인식할 것이다. 또한, 잘 알려진 시스템들, 방법들, 컴포넌트들, 디바이스들 및 회로들은 본 명세서에 설명되는 예시적인 구현예들의 더 적절한 양태들을 불명확하게 하지 않기 위해 철저히 상세하게 설명되지 않았다.
도 1은 일부 구현예들에 따른 예시적인 동작 환경(100)의 블록도이다. 관련 특징부들이 도시되어 있지만, 당업자는 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시되는 예시적인 구현예들의 더 적절한 양태들을 불명료하게 하지 않도록 하기 위해 예시되지 않았음을 인식할 것이다. 이를 위해, 비제한적인 예로서, 동작 환경(100)은 제어기(110) 및 디바이스(120)를 포함하며, 이들 중 하나 또는 둘 모두는 물리적 설정(105) 내에 있을 수 있다. 물리적 설정은 다양한 사람들이 전자 시스템들의 사용없이 감지하고/하거나 그와 상호작용할 수 있는 세계를 지칭한다. 물리적 공원과 같은 물리적 설정들은, 예를 들어, 물리적 야생 동물, 물리적 나무들, 및 물리적 식물들과 같은 물리적 요소들을 포함한다. 사람들은 예를 들어, 시각, 후각, 촉각, 미각, 및 청각을 포함하는 하나 이상의 감각들을 사용하여, 물리적 설정을 직접 감지하고/하거나 달리 그와 상호작용할 수 있다.
일부 구현예들에서, 제어기(110)는 사용자에 대한 향상 현실(ER) 경험을 관리 및 조정하도록 구성된다. 사용자는 ER 경험의 콘텐츠 제작자 또는 소비자일 수 있다. 일부 구현예들에서, 제어기(110)는 소프트웨어, 펌웨어, 또는 하드웨어의 적합한 조합을 포함한다. 제어기(110)는 도 2와 관련하여 아래에서 더욱 상세히 설명된다. 일부 구현예들에서, 제어기(110)는 물리적 세팅(105)에 대해 로컬 또는 원격인 컴퓨팅 디바이스이다.
일례에서, 제어기(110)는 물리적 설정(105) 내에 위치된 로컬 서버이다. 다른 예에서, 제어기(110)는 물리적 세팅(105) 외부에 위치된 원격 서버(예컨대, 클라우드 서버, 중앙 서버 등)이다. 일부 구현예들에서, 제어기(110)는 하나 이상의 유선 또는 무선 통신 채널들(144)(예컨대, 블루투스, IEEE 802.11x, IEEE 802.16x, IEEE 802.3x 등)을 통해 디바이스(120)와 통신가능하게 결합된다.
일부 구현예들에서, 디바이스(120)는 ER 경험을 사용자에게 제시하도록 구성된다. 일부 구현예들에서, 디바이스(120)는 소프트웨어, 펌웨어, 또는 하드웨어의 적합한 조합을 포함한다. 디바이스(120)는 도 3과 관련하여 아래에서 더욱 상세히 설명된다. 일부 구현예들에서, 제어기(110)의 기능들은 디바이스(120)에 의해 제공되거나 이와 조합된다.
일부 구현예들에 따르면, 사용자가 물리적 설정(105) 내에 존재하는 동안 디바이스(120)는 사용자에게 향상 현실(ER) 경험을 제시한다. 물리적 설정과는 대조적으로, 향상 현실(ER) 설정은 전자 시스템을 사용하여 다양한 사람들이 감지하고/하거나 그렇지 않으면 그와 상호작용할 수 있는 완전히(또는 부분적으로) 컴퓨터-생성된 설정을 지칭한다. ER에서, 사람의 움직임들이 부분적으로 모니터링되고, 그것에 응답하여, ER 설정에서의 적어도 하나의 가상 객체에 대응하는 적어도 하나의 속성이 하나 이상의 물리 법칙들을 준수하는 방식으로 변경된다. 예를 들어, ER 시스템이 위쪽을 바라보는 사람을 검출하는 것에 응답하여, ER 시스템은 그러한 소리 및 외관이 물리적 설정에서 어떻게 변화할 것인지에 부합하는 방식으로 사람에게 제시되는 다양한 오디오 및 그래픽을 조정할 수 있다. ER 설정에서의 가상 객체(들)의 속성(들)에 대한 조정들은 또한, 예를 들어, 이동의 표현들(예컨대, 음성 커맨드들)에 응답하여 이루어질 수 있다.
사람은, 시각, 후각, 미각, 촉각, 및 청각과 같은 하나 이상의 감각들을 사용하여 ER 객체를 감지하고/하거나 그와 상호작용할 수 있다. 예를 들어, 사람은 다차원 또는 공간 음향 설정을 생성하는 객체들을 감지하고/하거나 그와 상호작용할 수 있다. 다차원 또는 공간 음향 설정들은 사람에게 다차원 공간에서 개별적인 음향 소스들에 대한 인식을 제공한다. 그러한 객체들은 또한 음향 투명도를 인에이블할 수 있는데, 이는 컴퓨터-생성 오디오의 유무와 상관없이 물리적 설정으로부터 오디오를 선택적으로 통합할 수 있다. 일부 ER 설정들에서, 사람은 음향 객체들만을 감지하고/하거나 이들과만 상호작용할 수 있다.
가상 현실(VR)은 ER의 일례이다. VR 설정은 하나 이상의 감각들에 대한 컴퓨터-생성 감각 입력들만을 포함하도록 구성되는 향상된 설정을 지칭한다. VR 설정은 사람이 감지하고/하거나 그와 상호작용할 수 있는 복수의 가상 객체들을 포함한다. 사람은 컴퓨터-생성 설정 내의 사람의 액션들의 적어도 일부의 시뮬레이션을 통해, 그리고/또는 컴퓨터-생성 설정 내의 사람 또는 그녀의 존재의 시뮬레이션을 통해, VR 설정 내의 가상 객체들을 감지하고/하거나 이들과 상호작용할 수 있다.
혼합 현실(MR; mixed reality)은 ER의 다른 예이다. MR 설정은 컴퓨터-생성 감각 입력들(예컨대, 가상 객체들)을 물리적 설정으로부터의 감각 입력들, 또는 물리적 설정으로부터의 감각 입력들의 표현과 통합하도록 구성된 향상된 설정을 지칭한다. 현실 스펙트럼 상에서, MR 설정은 한편으로의 완전히 물리적인 설정과, 다른 한편으로의 VR 설정 사이에 존재하지만, 이들을 포함하지는 않는다.
일부 MR 설정들에서, 컴퓨터-생성 감각 입력들은 물리적 설정으로부터의 감각 입력들에 대한 변경들에 기초하여 조정될 수 있다. 또한, MR 설정들을 제시하기 위한 일부 전자 시스템들은 실제 객체들(즉, 물리적 설정으로부터의 물리적 요소들 또는 이들의 표현들)과 가상 객체들 사이의 상호작용을 가능하게 하기 위하여 물리적 설정에 대한 장소 및/또는 배향을 검출할 수 있다. 예를 들어, 시스템은, 예를 들어 가상 나무가 물리적 구조물에 대해 고정된 것으로 보이도록, 이동들을 검출하고 그에 따라 컴퓨터-생성 감각 입력들을 조정할 수 있다.
증강 현실(AR; augmented reality)은 MR의 예이다. AR 설정은 하나 이상의 가상 객체들이 물리적 설정(또는 그의 표현) 상에 중첩되는 향상된 설정을 지칭한다. 일례로서, 전자 시스템은 불투명 디스플레이, 및 물리적 설정의 비디오 및/또는 이미지들을 캡처하기 위한 하나 이상의 이미징 센서들을 포함할 수 있다. 그러한 비디오 및/또는 이미지들은, 예를 들어, 물리적 설정의 표현들일 수 있다. 비디오 및/또는 이미지들은 가상 객체들과 조합되며, 이 조합은 이어서 불투명 디스플레이 상에 디스플레이된다. 물리적 설정은 물리적 설정의 이미지들 및/또는 비디오를 통해 간접적으로 사람에 의해 보여질 수 있다. 따라서, 사람은 물리적 설정 상에 중첩된 가상 객체들을 관찰할 수 있다. 시스템이 물리적 설정의 이미지들을 캡처하고, 캡처된 이미지들을 사용하여 불투명 디스플레이 상에 AR 설정을 디스플레이할 때, 디스플레이되는 이미지들은 비디오 패스-스루(pass-through)라고 불린다. 대안적으로, 투명 또는 반투명 디스플레이가 AR 설정을 디스플레이하기 위한 전자 시스템에 포함될 수 있어서, 개인이 투명 또는 반투명 디스플레이들을 통해 직접 물리적 설정을 볼 수 있다. 가상 객체들은, 개인이 물리적 설정 위에 중첩된 가상 객체들을 관찰하도록 반투명 또는 투명 디스플레이 상에 디스플레이될 수 있다. 또 다른 예에서, 가상 객체들을 물리적 설정 상으로 투영하기 위해 투영 시스템이 사용될 수 있다. 예를 들어, 가상 객체들은 물리적 표면 상에 또는 홀로그래프로서 투영되어, 개인이 물리적 설정 상에 중첩된 가상 객체들을 관찰할 수 있다.
AR 설정은 또한 물리적 설정의 표현이 컴퓨터-생성 감각 데이터에 의해 수정되는 향상된 설정을 지칭할 수 있다. 예를 들어, 물리적 설정의 표현의 적어도 일부가 그래픽적으로 수정되어(예를 들어, 확대됨), 수정된 부분이 (원래 캡처된 이미지(들)의 충실하게 재현된 버전은 아닐 수 있지만) 원래 캡처된 이미지(들)을 여전히 대표한다. 대안적으로, 비디오 패스-스루를 제공하는 데 있어서, 하나 이상의 센서 이미지들은 이미지 센서(들)에 의해 캡처된 시점과는 상이한 특정 시점을 부과하기 위해 수정될 수 있다. 다른 예로서, 물리적 설정의 표현의 부분들은 그래픽적으로 그 부분들을 모호하게 하거나 배제함으로써 변경될 수 있다.
증강 가상성(AV)은 MR의 다른 예이다. AV 설정은 가상 또는 컴퓨터-생성 설정이 물리적 설정으로부터의 하나 이상의 감각 입력들을 통합하는 향상된 설정을 지칭한다. 그러한 감각 입력(들)은 물리적 설정의 하나 이상의 특성들의 표현들을 포함할 수 있다. 가상 객체는, 예를 들어 이미징 센서(들)에 의해 캡처된 물리적 요소와 연관된 색상을 포함할 수 있다. 대안적으로, 가상 객체는, 예를 들어, 이미징, 온라인 날씨 정보, 및/또는 날씨-관련 센서들을 통해 식별된 날씨 조건들과 같은, 물리적 설정에 대응하는 현재 날씨 조건들과 일치하는 특성들을 채택할 수 있다. 다른 예로서, AR 공원은 가상 구조물들, 식물들 및 나무들을 포함할 수 있지만, AR 공원 설정 내의 동물들은 물리적 동물들의 이미지들로부터 정확하게 재현된 특징부들을 포함할 수 있다.
다양한 시스템들은 사람들이 ER 설정들을 감지하고/하거나 그와 상호작용할 수 있게 한다. 예를 들어, 헤드 장착형 시스템은 하나 이상의 스피커들 및 불투명 디스플레이를 포함할 수 있다. 다른 예로서, 외부 디스플레이(예컨대, 스마트폰)가 헤드 장착형 시스템 내에 통합될 수 있다. 헤드 장착형 시스템은 물리적 설정의 오디오를 캡처하기 위한 마이크로폰들, 및/또는 물리적 설정의 이미지들/비디오를 캡처하기 위한 이미지 센서들을 포함할 수 있다. 투명 또는 반투명 디스플레이가 또한 헤드 장착형 시스템에 포함될 수 있다. 반투명 또는 투명 디스플레이는, 예를 들어, (이미지들을 표현하는) 광이 그를 통해 사람의 눈으로 지향되는 기판을 포함할 수 있다. 디스플레이는 또한 LED들, OLED들, 규소 상의 액정, 레이저 스캐닝 광원, 디지털 광 프로젝터, 또는 이들의 임의의 조합을 포함할 수 있다. 광이 투과되는 기판은 광학 반사기, 홀로그래픽 기판, 광 도파관, 광학 조합기, 또는 이들의 임의의 조합일 수 있다. 투명 또는 반투명 디스플레이는, 예를 들어 투명/반투명 상태와 불투명 상태 사이에서 선택적으로 전환할 수 있다. 다른 예에서, 전자 시스템은 투영-기반 시스템일 수 있다. 투영-기반 시스템에서, 이미지들을 사람의 망막 상으로 투영하기 위해 망막 투영이 사용될 수 있다. 대안적으로, 투영-기반 시스템은 또한, 예를 들어, 가상 객체들을 홀로그래프로서 투영하거나 물리적 표면 상에 투영하는 것과 같이, 가상 객체들을 물리적 설정으로 투영할 수 있다. ER 시스템의 다른 예들은 그래픽을 디스플레이하도록 구성된 윈도우, 헤드폰, 이어폰, 스피커 배열, 그래픽을 디스플레이하도록 구성된 렌즈, 헤드 업 디스플레이, 그래픽을 디스플레이하도록 구성된 자동차 윈드쉴드, 입력 메커니즘(예컨대, 햅틱 기능을 갖거나 갖지 않는 제어기들), 데스크톱 또는 랩톱 컴퓨터, 태블릿, 또는 스마트폰을 포함한다.
도 2는 일부 구현예들에 따른 제어기(110)의 일례의 블록도이다. 소정의 특정 특징부들이 예시되어 있지만, 당업자들은 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시된 구현예들의 더 적절한 양태들을 불명확하게 하지 않도록 하기 위해 예시되지 않았음을 이해할 것이다. 이를 위해, 비-제한적인 예로서, 일부 구현예들에서, 제어기(110)는 하나 이상의 프로세싱 유닛들(202)(예를 들어, 마이크로프로세서들, 주문형 집적 회로(ASIC)들, 필드-프로그래밍가능 게이트 어레이(FPGA)들, 그래픽 프로세싱 유닛(GPU)들, 중앙 프로세싱 유닛(CPU)들, 프로세싱 코어들 등), 하나 이상의 입력/출력(I/O) 디바이스들(206), 하나 이상의 통신 인터페이스들(208)(예를 들어, 범용 직렬 버스(USB), FIREWIRE, THUNDERBOLT, IEEE 802.3x, IEEE 802.11x, IEEE 802.16x, 모바일 통신들을 위한 글로벌 시스템(GSM), 코드 분할 다중 액세스(CDMA), 시분할 다중 액세스(TDMA), 글로벌 포지셔닝 시스템(GPS), 적외선(IR), 블루투스, 지그비, 또는 유사한 유형의 인터페이스), 하나 이상의 프로그래밍(예를 들어, I/O) 인터페이스들(210), 메모리(220), 및 이들 및 다양한 다른 컴포넌트들을 상호연결시키기 위한 하나 이상의 통신 버스들(204)을 포함한다.
일부 구현예들에서, 하나 이상의 통신 버스들(204)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부를 포함한다. 일부 구현예들에서, 하나 이상의 I/O 디바이스들(206)은 키보드, 마우스, 터치패드, 조이스틱, 하나 이상의 마이크로폰들, 하나 이상의 스피커들, 하나 이상의 이미지 센서들, 하나 이상의 디스플레이들 등 중 적어도 하나를 포함한다.
메모리(220)는 동적-랜덤 액세스 메모리(DRAM), 정적 랜덤-액세스 메모리(SRAM), 더블-데이터-레이트 랜덤-액세스 메모리(DDR RAM), 또는 다른 랜덤-액세스 솔리드-스테이트(solid-state) 메모리 디바이스들과 같은 고속 랜덤-액세스 메모리를 포함한다. 일부 구현예들에서, 메모리(220)는 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 솔리드-스테이트 저장 디바이스들과 같은 비휘발성 메모리를 포함한다. 메모리(220)는 선택적으로, 하나 이상의 프로세싱 유닛들(202)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 메모리(220)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 구현예들에서, 메모리(220) 또는 메모리(220)의 비일시적 컴퓨터 판독가능 저장 매체는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 선택적인 운영 체제(230) 및 ER 경험 모듈(240)을 포함하는 그들의 서브세트를 저장한다.
운영 체제(230)는 다양한 기본 시스템 서비스들을 처리하고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다. 일부 구현예들에서, ER 모듈(240)은 ER 경험들을 생성, 편집, 또는 경험하도록 구성된다. 3D 콘텐츠 생성 유닛(242)은 하나 이상의 사용자들에 대한 ER 경험들의 일부(예컨대, 하나 이상의 사용자들에 대한 단일 ER 경험, 또는 하나 이상의 사용자들의 각자의 그룹들에 대한 다수의 ER 경험들)로서 사용될 3D 콘텐츠를 생성 및 편집하도록 구성된다. 콘텐츠 생성 ER 경험이 ER 모듈(240)에 의해 제공되어 그러한 콘텐츠의 생성을 용이하게 할 수 있다. 예를 들어, 사용자는, 예를 들어, 손 제스처들, 음성 커맨드들, 입력 디바이스 입력들 등을 통해 입력을 제공하는 것에 기초하여, 생성되거나 편집되고 있는 3D 콘텐츠 내의 가상 객체들을 사용자가 선택하고, 놓고, 이동시키고, 달리 구성할 수 있게 하는 ER-기반 사용자 인터페이스를 보고 그렇지 않으면 경험할 수 있다. 객체 위치설정 유닛(244)은, 예컨대 시뮬레이션된 물리학, 정렬 규칙들, 그룹화 등을 사용하여, 본 명세서에 개시된 위치설정 기법들을 사용하여 그러한 3D 콘텐츠 생성 또는 편집 경험 동안 객체들의 위치설정을 용이하게 하도록 구성된다. 이들 모듈들 및 유닛들이 단일 디바이스(예컨대, 제어기(110)) 상에 존재하는 것으로 도시되어 있지만, 다른 구현예들에서, 이들 모듈들 및 유닛들의 임의의 조합이 별개의 컴퓨팅 디바이스들 내에 위치될 수 있다는 것을 이해하여야 한다.
게다가, 도 2는 본 명세서에 설명된 구현예들의 구조적 개략도와는 대조적으로 특정 구현예에 존재하는 다양한 특징부들의 기능 설명으로서 더 의도된다. 당업자들에 의해 인식되는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 일부 아이템들은 분리될 수 있다. 예를 들어, 다양한 구현예들에서, 도 2에서 별개로 도시된 일부 기능 모듈들은 단일 모듈로 구현될 수 있고, 단일 기능 블록들의 다양한 기능들은 하나 이상의 기능 블록들에 의해 구현될 수 있다. 모듈들의 실제 수량 및 특정 기능들의 분할 그리고 특징부들이 그들 사이에서 어떻게 할당되는지는 구현예들마다 다를 것이고, 일부 구현예들에서, 특정 구현예들에 대해 선택된 하드웨어, 소프트웨어, 또는 펌웨어의 특정 조합에 부분적으로 의존한다.
도 3은 일부 구현예들에 따른, 디바이스(120)의 예의 블록도이다. 소정의 특정 특징부들이 예시되어 있지만, 당업자들은 본 개시내용으로부터, 다양한 다른 특징부들이 간결함을 위해 그리고 본 명세서에 개시된 구현예들의 더 적절한 양태들을 불명확하게 하지 않도록 하기 위해 예시되지 않았음을 이해할 것이다. 이를 위해, 비-제한적인 예로서, 일부 구현예들에서 디바이스(120)는 하나 이상의 프로세싱 유닛들(302)(예를 들어, 마이크로프로세서들, ASIC들, FPGA들, GPU들, CPU들, 프로세싱 코어들 등), 하나 이상의 입력/출력("I/O") 디바이스들 및 센서들(306), 하나 이상의 통신 인터페이스들(308)(예를 들어, USB, FIREWIRE, THUNDERBOLT, IEEE 802.3x, IEEE 802.11x, IEEE 802.16x, GSM, CDMA, TDMA, GPS, IR, 블루투스, ZIGBEE, SPI, I2C, 또는 유사한 유형의 인터페이스), 하나 이상의 프로그래밍(예를 들어, I/O) 인터페이스들(310), 하나 이상의 디스플레이들(312), 하나 이상의 내부 또는 외부 대면 이미지 센서 시스템들(314), 메모리(320), 및 이들 및 다양한 다른 컴포넌트들을 상호연결시키기 위한 하나 이상의 통신 버스들(304)을 포함한다.
일부 구현예들에서, 하나 이상의 통신 버스들(304)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부를 포함한다. 일부 구현예들에서, 하나 이상의 I/O 디바이스들 및 센서들(306)은 관성 측정 유닛(inertial measurement unit, IMU), 가속도계, 자력계, 자이로스코프, 온도계, 하나 이상의 생리학적 센서들(예를 들어, 혈압 모니터, 심박수 모니터, 혈중 산소 센서, 혈당 센서 등), 하나 이상의 마이크로폰들, 하나 이상의 스피커들, 햅틱 엔진, 하나 이상의 심도 센서들(예를 들어, 구조화된 광, 빛의 비행시간(time-of-flight) 등) 등 중 적어도 하나를 포함한다.
일부 구현예들에서, 하나 이상의 디스플레이들(312)은 ER 경험을 사용자에게 제시하도록 구성된다. 일부 구현예들에서, 하나 이상의 디스플레이들(312)은 홀로그래픽, 디지털 광 프로세싱(DLP), 액정 디스플레이(LCD), 실리콘 액정 표시장치(LCoS), 유기 발광 전계-효과 트랜지터리(OLET), 유기 발광 다이오드(OLED), 표면-전도 전자-방출기 디스플레이(SED), 전계-방출 디스플레이(FED), 양자점 발광 다이오드(QD-LED), 마이크로 전자기계 시스템(MEMS), 또는 유사한 디스플레이 유형들에 대응한다. 일부 구현예들에서, 하나 이상의 디스플레이들(312)은 회절, 반사, 편광, 홀로그래픽 등의 도파관 디스플레이들에 대응한다. 예를 들어, 디바이스(120)는 단일 디스플레이를 포함한다. 다른 예에서, 디바이스(120)는 사용자의 각각의 눈을 위한 디스플레이를 포함한다.
일부 구현예들에서, 하나 이상의 이미지 센서 시스템들(314)은 사용자의 눈들을 포함하는 사용자의 얼굴의 적어도 일부분에 대응하는 이미지 데이터를 획득하도록 구성된다. 예를 들어, 하나 이상의 이미지 센서 시스템들(314)은 하나 이상의 RGB 카메라들(예컨대, 상보형 금속-산화물-반도체(CMOS) 이미지 센서 또는 전하-결합 디바이스(CCD) 이미지 센서를 구비함), 흑백 카메라, IR 카메라, 이벤트-기반 카메라 등을 포함한다. 다양한 구현예들에서, 하나 이상의 이미지 센서 시스템들(314)은 플래시 또는 글린트 소스와 같은 사용자의 얼굴의 일부분 상에 광을 방출하는 조명원들을 추가로 포함한다.
메모리(320)는 DRAM, SRAM, DDR RAM, 또는 다른 랜덤-액세스 솔리드-스테이트 메모리 디바이스들과 같은 고속 랜덤-액세스 메모리를 포함한다. 일부 구현예들에서, 메모리(320)는 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 솔리드-스테이트 저장 디바이스들과 같은 비휘발성 메모리를 포함한다. 메모리(320)는 선택적으로, 하나 이상의 프로세싱 유닛들(302)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. 메모리(320)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 구현예들에서, 메모리(320) 또는 메모리(320)의 비일시적 컴퓨터 판독가능 저장 매체는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 선택적인 운영 체제(33) 및 ER 모듈(340)을 포함하는 그들의 서브세트를 저장한다.
운영 체제(330)는 다양한 기본 시스템 서비스들을 처리하고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다. 일부 구현예들에서, ER 모듈(340)은 ER 환경들을 생성, 편집, 제시, 또는 경험하도록 구성된다. 3D 콘텐츠 생성 유닛(342)은 하나 이상의 사용자들에 대한 ER 경험들의 일부(예컨대, 하나 이상의 사용자들에 대한 단일 ER 경험, 또는 하나 이상의 사용자들의 각각의 그룹들에 대한 다수의 ER 경험들)로서 사용될 3D 콘텐츠를 생성 및 편집하도록 구성된다. 콘텐츠 생성 ER 경험이 ER 모듈(340)에 의해 제공되어 그러한 콘텐츠의 생성을 용이하게 할 수 있다. 예를 들어, 사용자는, 예를 들어, 손 제스처들, 음성 커맨드들, 입력 디바이스 입력들 등을 통한 입력을 제공하는 것에 기초하여, 생성되거나 편집되고 있는 3D 콘텐츠 내의 가상 객체들을 사용자가 선택하고, 놓고, 이동시키고, 그렇지 않으면 구성할 수 있게 하는 ER-기반 사용자 인터페이스를 보고 그렇지 않으면 경험할 수 있다. 객체 위치설정 유닛(344)은, 예컨대 시뮬레이션된 물리학, 정렬 규칙들, 그룹화 등을 사용하여, 본 명세서에 개시된 위치설정 기법들을 사용하여 그러한 3D 콘텐츠 생성 또는 편집 경험 동안 객체들의 위치설정을 용이하게 하도록 구성된다. 이들 모듈들 및 유닛들이 단일 디바이스(예컨대, 디바이스(120)) 상에 존재하는 것으로 도시되어 있지만, 다른 구현예들에서, 이들 모듈들 및 유닛들의 임의의 조합이 별개의 컴퓨팅 디바이스들 내에 위치될 수 있다는 것을 이해하여야 한다.
게다가, 도 3은 본 명세서에 설명된 구현예들의 구조적 개략도와는 대조적으로 특정 구현예들에 존재하는 다양한 특징부들의 기능 설명으로서 더 의도된다. 당업자들에 의해 인식되는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 일부 아이템들은 분리될 수 있다. 예를 들어, 다양한 구현예들에서, 도 3에서 별개로 도시된 일부 기능 모듈들은 단일 모듈로 구현될 수 있고, 단일 기능 블록들의 다양한 기능들은 하나 이상의 기능 블록들에 의해 구현될 수 있다. 모듈들의 실제 수량 및 특정 기능들의 분할 그리고 특징부들이 그들 사이에서 어떻게 할당되는지는 구현예들마다 다를 것이고, 일부 구현예들에서, 특정 구현예들에 대해 선택된 하드웨어, 소프트웨어, 또는 펌웨어의 특정 조합에 부분적으로 의존한다.
일부 구현예들에서, 프로세서를 갖는 전자 디바이스가 방법을 구현한다. 본 방법은 3 차원(3D) 그래픽 레이아웃 내의 위치에서 디스플레이된 객체의 위치설정을 개시하는 입력을 획득한다. 일례에서, 3D 레이아웃 내의 디스플레이된 객체의 위치설정을 개시하는 입력을 획득하는 것은, 예컨대, 사용자의 손 또는 신체 제스처 또는 입력 디바이스의 이동을 검출하기 위해, 전자 디바이스의 프로세서에 동작가능하게 결합된 이미지 센서를 사용하여 입력 객체의 3D 이동을 획득하는 것을 수반한다.
획득된 입력에 응답하여 디스플레이된 객체를 위치설정한 후에, 방법은 적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 디스플레이된 객체의 위치를 조정한다. 예들로서, 디스플레이된 객체의 위치는 시뮬레이션된 중력에 따라 그리고/또는 3D 그래픽 레이아웃 내의 다른 객체와 디스플레이된 객체의 충돌에 따라 3D 그래픽 레이아웃 내에서 병진될 수 있다. 다른 예에서, 디스플레이된 객체의 위치를 조정하는 것은, 디스플레이된 객체 및 제2 디스플레이된 객체가 객체 분류술(taxonomy)에서 공통 범주(classification)를 공유하는지 여부를 결정하는 것, 디스플레이된 객체 및 제2 디스플레이된 객체가 공통 범주를 공유한다는 결정에 따라, 디스플레이된 객체 및 제2 디스플레이된 객체 중 적어도 하나를 서로를 향해 병진시키는 것을 수반한다. 다른 예에서, 본 방법은 3D 그래픽 레이아웃 내의 평면을 식별하고, 디스플레이된 객체를 평면 상으로 이동시킴으로써 디스플레이된 객체의 위치를 조정한다.
디스플레이된 객체의 위치를 조정한 후에, 본 방법은 디스플레이된 객체에 대해 적어도 하나의 시뮬레이션된 물리학 모델을 디스에이블한다. 예를 들어, 디스플레이된 객체는 시뮬레이션된 중력에 기초하여 더 이상 이동되지 않을 수 있거나, 또는 사용자, 입력 디바이스, 또는 다른 디스플레이된 객체들과의 시뮬레이션된 충돌들에 기초하여 더 이상 이동되지 않을 수 있다.
일부 구현예들에서, 디스플레이된 객체는 제2 디스플레이된 객체와 그룹화된다. 그러한 그룹화에 따르면, 디스플레이된 객체의 이동을 나타내는 입력에 응답하여 제2 디스플레이된 객체가 디스플레이된 객체와 함께 이동하지만, 디스플레이된 객체의 위치는 제2 객체의 이동을 나타내는 입력에 응답하여 유지된다.
도 4는 장면 생성을 위해 선택적으로 물리학을 사용하는 예시적인 방법을 도시하는 흐름도이다. 일부 구현예들에서, 방법(400)은 디바이스(예를 들어, 도 1 내지 도 3의 제어기(100) 또는 디바이스(120))에 의해 수행된다. 방법(400)은 모바일 디바이스, 헤드 장착형 디바이스(HMD), 데스크톱, 랩톱, 서버 디바이스에서, 또는 서로 통신하는 다수의 디바이스들에 의해 수행될 수 있다. 일부 구현예들에서, 방법(400)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 구현예들에서, 방법(400)은 비일시적 컴퓨터 판독가능 매체(예를 들어, 메모리)에 저장된 프로세서 실행 코드에 의해 수행된다.
블록(402)에서, 방법(400)은 사용자 인터페이스 내에 디스플레이된 3 차원(3D) 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 일례에서, 3D 앱 제작자는 개발되고 있는 앱의 레이아웃에 추가하기 위한 테이블 객체를 선택하고, 테이블을 가상으로 잡고 있으면서 손을 뻗고, 테이블을 그의 위치로부터 원하는 위치로 보내기 위해 테이블을 놓거나, 드롭하거나, 던진다. 일부 구현예들에서, 이 예에서의 테이블과 같은 객체는 다수의 객체들, 예컨대 테이블, 의자, 소파, 어플라이언스, 디바이스, 페인팅, 버튼, 사용자 인터페이스 제어부 등을 포함하는 객체 선반으로부터 선택된다. 입력은 3D 손 제스처 또는 3D 입력 디바이스의 3D 이동, 예컨대 사용자가 6 자유도 입력 디바이스를 사용하여 테이블을 이동시키는 것을 식별함으로써 획득될 수 있다. 입력은 드롭 액션, 던지는 액션, 슬라이딩 액션, 또는 임의의 다른 유형의 사용자-기반 액션을 포함할 수 있다.
블록(404)에서, 방법(400)은 3D 레이아웃 내의 객체의 위치설정 동안 객체에 대해 시뮬레이션된 물리학을 인에이블한다. 일부 구현예들에서, 시뮬레이션된 물리학은 객체에 대해서만 인에이블되고 다른 객체들에 대해 인에이블되지 않는다. 일부 구현예들에서, 일부 객체들, 예컨대 바닥, 벽, 천정, 및 다른 이동불가능한 객체들은, 예컨대, 사용자가 벽을 관통하는 중간에 의자를 위치설정하는 것을 방지하기 위해, 물리학을 인에이블시킬 수 있다. 일부 구현예들에서, 시뮬레이션된 물리학들은 객체 및 다른 객체들 중 일부에 대해 인에이블된다. 이들 다른 객체들은 다른 객체들의 유형, 다른 객체들로부터 떨어져있는 거리/객체들의 근접성, 사용자에 의한 이동 또는 제스처의 속도, 객체가 벽인지 또는 다른 이동불가능한 객체인지, 사용자의 선호도, 및 다른 기준들을 고려하는 선택 기준들에 기초하여 선택될 수 있다. 기준들은, 사용자가 예를 들어 다른 책들을 밀기 위해 책을 사용할 수 있지만 사용자 인터페이스 아이콘들의 스택을 의도치 않게 넘어뜨리지 않도록 자동으로 또는 수동으로 선택될 수 있다. 시뮬레이션된 물리학이 인에이블되는 이동불가능한 객체 또는 다른 객체들은 다른 객체들로부터 하이라이트되거나 달리 그래픽으로 구별될 수 있다. 일부 구현예들에서, 그래픽 표시자들은 위치설정되고 있는 활성 객체뿐만 아니라, 활성 객체가 시뮬레이션된 물리학에 따라 상호작용할 수 있는 임의의 이동불가능한 객체들 또는 다른 객체들을 구별하거나 식별하기 위해 사용된다.
블록(406)에서, 방법(400)은 위치설정을 개시하는 입력 및 시뮬레이션된 물리학에 기초하여 3D 레이아웃 내의 객체를 위치설정한다. 예를 들어, 사용자는 테이블을 드롭하고 테이블은 중력에 기초하여 바닥으로 낙하한다. 다른 예에서, 사용자는 의자를 밀고, 의자는 그것이 벽과 부딪힐 때 이동을 중단한다. 이동의 결정은 물리학 단독, 물리학 및 정렬 규칙들, 또는 이동 기준들 및 규칙들의 다른 조합들에 기초할 수 있다.
블록(408)에서, 방법(400)은 객체의 위치설정이 종료되었다고 결정하는 것에 기초하여 객체에 대해 시뮬레이션된 물리학을 디스에이블시킨다. 예를 들어, 객체가 배치되었으면, 객체에 대해 물리학이 턴오프된다. 물리학은 미리 결정된 양의 시간 후에, 또는 사용자 입력 또는 일부 다른 이벤트에 기초하여, 위치설정 직후에 턴 오프될 수 있다.
도 5 및 도 6은 물리학의 선택적 사용에 기초하여 위치설정되는 객체를 예시한다. 도 5는 ER 설정(505)에서 객체(525)의 배치를 개시하는 사용자 액션을 예시하는 블록도이다. 도 5는 테이블을 바닥(130) 위에 위치설정하기 위해 테이블을 드롭하는 의도를 갖고 객체(525)(예컨대, 가상 테이블)를 잡고있는 사용자를 도시한다. 도 6은 물리학의 선택적 사용에 기초하여 ER 설정(505)에서 위치설정된 후 객체(525)의 최종 위치를 도시한 블록도이다. 구체적으로, 객체(525)는 중력에 기초하여 바닥(130)으로 떨어지고, 그의 최종 위치에서 도 6에 도시되어 있다.
도 7은 시뮬레이션된 물리학에 따라, 그리고 다른 객체와 정렬되도록, 장면 내의 객체의 배치 중에 객체를 이동시키는 예시적인 방법을 도시하는 흐름도이다. 일부 구현예들에서, 방법(700)은 디바이스(예를 들어, 도 1 내지 도 3의 제어기(100) 또는 디바이스(120))에 의해 수행된다. 방법(700)은 모바일 디바이스, 헤드 장착형 디바이스(HMD), 데스크톱, 랩톱, 서버 디바이스에서, 또는 서로 통신하는 다수의 디바이스들에 의해 수행될 수 있다. 일부 구현예들에서, 방법(700)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 구현예들에서, 방법(700)은 비일시적 컴퓨터 판독가능 매체(예컨대, 메모리)에 저장된 프로세서 실행 코드에 의해 수행된다.
블록(702)에서, 방법(700)은 사용자 인터페이스 내에 디스플레이된 3D 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 그러한 입력을 획득하는 것은 블록(402)에 대해 전술된 바와 유사한 프로세스들을 수반할 수 있다.
블록(704)에서, 방법(700)은 3D 레이아웃 내의 제1 최종 위치를 향한 시뮬레이션된 물리학에 기초한 이동 경로에 따라 객체의 이동을 개시한다. 예를 들어, 이동은 가상 공간 내의 위치로부터 바닥 위의 최종 위치를 향한 객체의 낙하일 수 있다. 그러한 예에서, 방법(700)은 객체가 놓아졌는지를 검출할 수 있고, 이어서 객체의 가상 속성들, 예컨대, 질량, 현재 속도 방향, 현재 속도 크기 등, 및 다른 속성들, 예컨대, 지구의 질량에 기초하여 객체의 시뮬레이션된 낙하를 결정할 수 있다. 중력 및 다른 물리학-기반 이동의 모델링은 다양한 정도의 복잡도 및 정확도의 물리학 방정식들, 모델들, 및 시스템들에 기초할 수 있다. 예를 들어, 방법(700)은 실제 중력을 모방하는 시뮬레이션된 가속도에 기초하여, 또는 보다 효율적인 계산을 용이하게 하기 위해 실제 중력과 상이한 시뮬레이션된 가속도 등에 기초하여, 공기 저항을 고려하거나 고려하지 않고 중력에 기초하여 낙하를 모델링할 수 있다.
시뮬레이션된 물리학에 기초하여 개시되는 이동은 일반적으로 (직선, 아크 등을 통해) 최종 위치를 향하지만, 이동이 개시될 때 최종 위치가 명확히 결정될 필요는 없다. 그러한 최종 위치는, 객체가 위치에 정지하게 될 것, 예컨대, 테이블 상부 위에, 바닥 위에, 벽에 기대어, 다른 객체에 기대어, 위로부터 스트링 또는 다른 객체 등에 의해 매달려 정지하게 될 것이라는 결정에 기초하여, 초기에 또는 이동 중의 나중 시점에 결정될 수 있지만 반드시 그러할 필요는 없다.
블록(706)에서, 방법(700)은 객체를 제2 객체와 정렬시키는 것에 기초하여 객체에 대한 제2 최종 위치를 결정한다. 제2 객체는 제1 최종 위치에 기초하여 식별되는데, 예컨대 최종 위치가 제2 객체와 연관된 경계 박스 내에 있다는 것을 식별한다. 제2 최종 위치의 결정은 객체가 제1 최종 위치로 이동되기 전에 발생할 수 있다. 예를 들어, 객체가 제1 최종 위치를 향해 이동하기 시작할 때, 방법(700)은 상이한 최종 위치를 계산하여 그 제1 최종 위치 부근의 다른 객체와 정렬될 수 있다. 객체의 정렬은 객체를 병진 또는 회전시키는 것, 예컨대 6 자유도에서의 이동을 수반할 수 있다. 특정 예로서, 의자가 테이블에 인접한 바닥 상의 위치를 향해 중력에 기초하여 이동하기 시작함에 따라, 방법(700)은 의자가 테이블 근처에 착지할 것임을 식별하고 의자의 최종 위치(6 자유도에서의 중심 좌표 및 배향)를 테이블과 정렬되도록 변경한다. 일부 구현예들에서, 제2 최종 위치를 결정하는 것은, 제1 객체와 연관된 방향 벡터(예컨대, 정면(front facing) 벡터) 및 제2 객체와 연관된 정렬 규칙을 결정하는 것, 및 방향 벡터 및 정렬 규칙에 기초하여 객체를 제2 객체와 정렬시키는 것을 포함한다. 의자/테이블 예에서의 그러한 정렬 규칙은 의자의 중심이 테이블의 측면, 중심, 또는 다른 특징부로부터 거리 X이어야 하고 의자가 테이블의 측면, 중심, 또는 다른 특징부를 향해야 한다는 것을 특정할 수 있다.
객체에 대한 정렬 규칙들은 경계 박스들 내에 위치설정되는 객체들(예컨대, 특정 유형들의 객체들)에 대한 정렬을 특정하는 하나 이상의 경계 박스들을 수반할 수 있다. 예를 들어, 4 측면의 테이블의 정렬 규칙들은 테이블의 제1 측면과 연관된 제1 경계 박스 내에 위치된 의자가 정렬 규칙들의 제1 세트에 기초하여 위치설정되고, 테이블의 제2 측면과 연관된 제2 경계 박스 내에 위치된 의자가 정렬 규칙들의 제2 세트에 기초하여 위치설정되며, 테이블의 제3 측면과 연관된 제3 경계 박스 내에 위치된 의자는 정렬 규칙들의 제3 세트에 기초하여 위치설정되고, 테이블의 제4 측면과 연관된 제4 경계 박스 내에 위치된 의자가 정렬 규칙들의 제4 세트에 기초하여 위치설정된다는 것을 특정할 수 있다. 정렬 규칙들은 객체에 대한 메타데이터로서 저장될 수 있다. 예를 들어, 테이블에 대한 메타데이터는 소정 경계 박스들에 대해 배치된 객체들이 테이블과 어떻게 정렬되어야 하는지를 특정할 수 있다.
다수의 정렬 규칙들이 특정 환경에서 객체의 위치설정에 적용될 수 있다. 예를 들어, 의자의 위치설정은 바닥 정렬 규칙들(의자가 그 다리를 바닥에 기대 정지해 있을 것임을 특정함) 및 테이블 정렬 규칙들(테이블을 향한 의자 배향 또는 테이블로부터의 특정 거리를 특정함)에 기초할 수 있다. 방법(700)은 정렬 규칙 우선순위에 기초하여 상충하는 정렬 규칙들을 고려하도록 구성될 수 있는데, 예컨대 바닥의 정렬 규칙이 테이블의 정렬 규칙보다 더 높은 우선순위에 있다는 것을 특정한다. 일부 구현예들에서, 방법(700)은, 그렇게 하는 것이 물리적 제약(예컨대, 벽 또는 다른 이동불가능한 객체 내에 의자를 위치설정하지 않음) 또는 더 높은 우선순위 정렬 규칙들을 위반하지 않을 때마다 정렬 규칙들을 준수하려고 시도한다. 일부 구현예들에서, 방법(700)은, 다른 제약 또는 더 높은 우선순위 정렬 규칙과 충돌하는 것을 피하면서(예컨대, 의자를 벽 속으로 들어가게 하지 않고 벽에 기대어 맞붙여 놓음) 정렬 규칙을 가능한 근접하게 만족하는 정렬을 결정한다(예컨대, 의자를 테이블로부터 0.5 피트보다는 테이블로부터 0.2 피트 이동시킴).
블록(708)에서, 방법(700)은 제2 최종 위치에 기초하여 이동 중에 객체의 이동 경로를 변경한다. 정렬-기반 위치설정과 물리학-기반 위치설정을 블렌딩하거나 달리 조정하기 위해 객체의 이동 경로가 변화한다. 블렌딩은 시뮬레이션된 물리학-기반 이동의 종료시 임의의 튐(jerking) 또는 갑작스런 정렬/이동을 피하거나 감소시킴으로써, 예컨대, 객체의 배향을 이동의 마지막 프레임 내 또는 후가 아니라 오히려 그것이 이동할 때 변경함으로써, 사용자 경험을 개선할 수 있다. 위의 의자/테이블 예를 계속하면, 의자가 테이블에 인접하도록 측방향으로 병진되는 동안 그리고 의자가 테이블의 중심을 향하도록 회전하는 동안, 시뮬레이션된 중력에 기초하여 의자가 바닥을 향해 하방으로 낙하할 수 있다. 일부 구현예들에서, 이동 경로는 사용자에게 순차적으로 디스플레이되는 다수의 프레임들을 통해 도시되고, 이동 경로를 변경하는 것은 다수의 프레임들에서 이동 경로를 따라 객체의 위치를 변경하는 것을 수반한다.
도 8 및 도 9는 시뮬레이션된 물리학에 따라, 그리고 다른 객체와 정렬되도록, 객체의 배치 중에 객체를 이동시키는 것을 도시한다. 도 8은 제2 객체(810)의 배치를 개시하는 사용자 액션을 도시하는 블록도이다. 이러한 예에서, 사용자(120)는 객체(525)(예컨대, 가상 테이블) 근처의 바닥(130) 위로 제2 객체(810)(예컨대, 가상 의자)를 내밀고 제2 객체(810)를 놓는다. 사용자(120)는 제2 객체(810)가 객체(525)에 인접한 위치에서 바닥(130)에 낙하하도록 의도한다. 도 9는 물리학 및 정렬 규칙들에 기초하여 위치설정된 후의 도 8의 제2 객체(810)의 최종 위치를 도시한 블록도이다. 구체적으로, 제2 객체(810)는 처음에 똑바로 아래로 낙하했지만 낙하하는 동안 이동 경로를 변경하여(예컨대, 우측으로 병진되고 회전함), 객체(525)에 인접한 정렬된 위치에 정지하게 된다. 따라서, 제2 객체(810)는 시뮬레이션된 물리학 및 테이블의 정렬 규칙들 둘 모두에 기초하여 동시에 이동되었다.
도 10은 기준들에 기초하여 장면 내의 객체 배치 중에 그룹화를 인에이블하는 예시적인 방법(1000)을 도시하는 흐름도이다. 일부 구현예들에서, 방법(1000)은 디바이스(예를 들어, 도 1 내지 도 3의 제어기(100) 또는 디바이스(120))에 의해 수행된다. 방법(1000)은 모바일 디바이스, 헤드 장착형 디바이스(HMD), 데스크톱, 랩톱, 서버 디바이스에서, 또는 서로 통신하는 다수의 디바이스들에 의해 수행될 수 있다. 일부 구현예들에서, 방법(1000)은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 일부 구현예들에서, 방법(1000)은 비일시적 컴퓨터 판독가능 매체(예를 들어, 메모리)에 저장된 프로세서 실행 코드에 의해 수행된다.
블록(1002)에서, 방법(1000)은 사용자 인터페이스 내에 디스플레이된 3 차원(3D) 레이아웃 내의 객체의 위치설정을 개시하는 입력을 획득한다. 그러한 입력을 획득하는 것은 블록(402)에 대해 전술된 바와 유사한 프로세스들을 수반할 수 있다. 블록(1004)에서, 방법(1000)은 위치설정을 개시하는 입력에 기초하여 3D 레이아웃의 객체를 위치설정한다. 일부 구현예들에서, 객체는 사용자가 그것을 위치설정한 장소에 유지된다. 다른 구현예들에서, 객체는 예를 들어 시뮬레이션된 물리학-기반 이동 또는 정렬 규칙들에 기초하여 위치로 이동한다.
블록(1006)에서, 방법(1000)은 객체가 제2 객체의 이동에 응답하여 자동으로 제2 객체와 함께 이동하는 기준들에 기초하여 객체 및 제2 객체의 그룹화를 인에이블하지만, 객체는 제2 객체와는 독립적으로 이동가능하다. 기준들은 근접성에 기초할 수 있는데, 예컨대 객체들은 서로 미리 결정된 거리 내에 있는 경우 자동으로 그룹화된다. 기준들은 객체 유형(들)에 기초할 수 있는데, 예컨대 객체들은 그 다른 객체가 테이블 유형의 객체일 때 다른 객체의 상부에 대한 근접성에 기초하여 자동으로 그룹화된다. 기준들은 표면 유형에 기초할 수 있는데, 예컨대 객체들은 테이블, 트레이 등인 제2 객체에 기초하여 자동으로 그룹화된다. 기준들은 표면 속성들에 기초할 수 있는데, 예컨대, 객체들은 제2 객체가 평평하고, 대략 수평인 것 등에 기초하여 자동으로 그룹화된다. 일부 구현예들에서, 그룹화는 객체가 제2 객체와 연관된 경계 박스 내에 있다고 결정하는 것, 객체가 제2 객체의 특정 표면과 접촉하고 있다고 결정하는 것에 기초하여, 또는 객체가 정렬 규칙에 기초하여 제2 객체에 대해 자동으로 위치설정되었다고 결정하는 것에 기초하여 인에이블된다.
일부 구현예들에서, 객체들은 객체들이 기준들을 더 이상 만족시키지 않는다고 결정하는 것에 기초하여 자동으로 그룹해제(ungroup)된다. 예를 들어, 꽃병이 트레이의 상부 위에서 그룹화되는 경우, 객체들은, 예를 들어, 사용자가 꽃병를 위로 집어 올리고 그것을 다른 표면의 상부 위의 위치로 이동시킬 때, 꽃병이 더 이상 트레이 상부 표면 위에 있지 않음을 검출하는 것에 기초하여 자동으로 그룹해제될 수 있다.
도 11 내지 도 14는 기준들에 기초하여 장면 내에서의 객체 배치 중에 그룹화를 인에이블하는 것을 도시한다. 도 11은 도 5 및 도 6의 ER 설정에서 제2 객체(1110)의 배치를 개시하는 사용자 액션을 도시하는 블록도이다. 이러한 예에서, 사용자(120)는 객체(525)(예컨대, 가상 테이블) 위로 제2 객체(1110)(예컨대, 가상 책)를 내밀고 제2 객체(1110)를 놓는다. 사용자(120)는 제2 객체(1110)가 객체(525)의 상부 위에 낙하하여 정지하도록 의도한다. 제2 객체는 예상된 바와 같이 이동하고, 객체(525)와 자동으로 그룹화된다. 도 12는 객체(525) 위에 위치설정되고 그룹화된 후의 제2 객체(1110)의 최종 위치를 도시하는 블록도이다. 도 13은 객체(525)가 밀릴 때 제2 객체(1110)가 어떻게 객체(525)와 이동하는지를 도시한 블록도이고, 객체들(525, 1110)은 객체(525)가 이동될 때 함께 이동한다. 또한, 객체(1110)는 테이블(525)의 이동 또는 회전의 속도에 무관하게 테이블(525)과 이동하며, 이러한 이동 전에, 그 동안에, 및 그 후에 테이블(525)에 대해 동일한 상대 위치에 유지된다. 이는, 마찰이 테이블의 느린 수평 이동 중에 객체(1110)가 테이블과 이동하게 할 수 있지만 더 빠른 이동 또는 테이블을 틸팅하고/회전시키는 이동 중에 객체(1110)가 낙하하거나 슬라이딩하게 할 수 있는, 시뮬레이션된 물리학에 기초한 이동과는 다를 수 있다. 도 14는 제2 객체(1110)가 밀릴 때 제2 객체(1110)가 어떻게 객체(525)와 독립적으로 이동하는지를 도시한 블록도로서, 제2 객체(1110)는 객체(525)를 이동시키지 않고 이동한다.
본 명세서에 개시된 다양한 구현예들은 직관적이고 사용하기 쉬운 객체들을 위치설정하기 위한 기법들을 제공한다. 객체들이 시뮬레이션된 물리학에 기초하여 이동할 때, 그러한 이동은 현실 세계 물리학에 따라 3D 객체들과 상호작용하는 데 익숙한 사용자들에게 대체로 자연스럽다. 특정 객체 또는 객체들에 대해 선택적으로 그러한 물리학을 턴온 및 턴오프시키기 위한 본 발명의 일부 구현예들에 따른 이러한 시뮬레이션된 물리학의 선택적 사용은 사용자 경험을 개선할 수 있다. 시뮬레이션된 물리학이 인에이블되지 않은 객체들은 의도치 않게 이동되거나, 전복되거나, 손상되거나, 기타 등등이 될 수 없기 때문에, 시뮬레이션된 물리학이 선택된 객체들에 대해서만 인에이블된다면, 사용자는 의도치 않은 객체 상호작용들을 더 쉽게 회피할 수 있다.
물리학-기반 이동들을 정렬 규칙-기반 이동들과 조합하는 것은 또한 사용자 경험을 개선할 수 있다. 그러한 객체 이동들에 의해, 사용자는 종종 객체들을 지루하게 정렬시키거나 위치설정하는 시간을 보내야 하는 것을 피할 수 있다. 3D 앱들 및 다른 콘텐츠를 3D 개발 환경에서 개발하는 맥락에서의 자동 정밀 배치는 사용자의 상당한 양의 시간을 절약할 수 있다. 사용자는 의도된 위치들을 향해 객체들을 쉽게 드롭하거나, 밀거나, 또는 던질 능력을 부여받는다. 그렇게 한 후에, 사용자는 반드시 추가 액션을 취할 필요 없이 적절히 정렬된 위치들로 이동하는 객체들을 보고/경험한다. 사용자의 상호작용은 최소일 수 있는데, 예컨대 사용자가 원하는 객체 위치들을 달성하기 위해, 객체를 단지 대략적으로 위치설정할 것을 요구할 수 있다.
또한, 기준들에 기초하여 그룹화를 인에이블함으로써 조합된 이동(예컨대, 그룹화는 제1 객체가 제2 객체의 이동에 응답하여 자동으로 제2 객체와 이동하도록, 제1 객체를 제2 격체와 연관시키지만, 제1 객체는 제2 객체와 독립적으로 이동가능함)을 위해 직관적이고 쉽게 객체들을 그룹화하는 능력이 또한 사용자 경험을 개선할 수 있다. 객체들은 자동으로 그룹화될 수 있고, 이어서, 사용자가 객체 그룹들을 공들여 식별하고, 그러한 그룹들 내의 객체들에 대한 이동 파라미터들을 특정하고, 이후에 그러한 객체들을 그룹해제할 필요 없이, 직관적으로 이동될 수 있다. 오히려 객체들은 예를 들어, 실제 세계에서 객체가 어떻게 상호작용하는지를 모방하거나 그렇지 않으면 이와 유사한 그룹화 기준에 근거하여, 적절한 상황에서 자동으로 함께 그룹화되고, 사용자들이 자연스럽게 예상하는 대로 이동하고, 상황이 더 이상 적절하지 않을 때 자동으로 그룹해제될 수 있다.
본 명세서에 개시된 기법들은 다수의 상이한 맥락에서 적용가능하다. 일부 구현예들에서, 본 기법들은 ER-기반 게임, 앱, 비디오, 또는 사용자 인터페이스에 포함될 3D 콘텐츠를 생성 또는 편집하는 데 사용된다. 일부 구현예들에서, 본 기법들은 ER 설정에서 객실 또는 다른 실내 환경에서 객체들을 배치하는 데 사용된다. 다른 구현예들에서, 본 기법들은 예를 들어, ER 설정에서 나무들, 잔디, 건축 구조들을 포함하는 가상 실외 세계에 객체들을 배치하는 데 사용된다. 일부 구현예들에서, 본 기법들은 서로 정렬된 순서화된 객체들을 생성하는 데 사용된다. 다른 구현예들에서, 본 기법들은, 예를 들어, 사용자가 시뮬레이션된 물리학에 따라 낙하하고 흩어지는 객체들의 버킷을 드롭할 수 있게 함으로써 랜덤 또는 무질서 관계를 생성하는 데 사용된다.
본 명세서에 개시된 기법들은 강체(rigid body) 객체들뿐만 아니라 유연체(soft body) 객체들에 적용가능하며, 유체, 다중-파트 객체들, 근육 시스템 구성요소들을 포함하는 객체들, 및 골격계 구성요소들을 포함하는 객체들에 사용될 수 있다. 객체 내의 구성요소들은 객체에 그리고 그 내에서 적용되는 시뮬레이션된 물리학에 기초하여 이동될 수 있다. 일부 구현예들에서, 객체들은 객체들의 이동을 결정하는 데 사용되는 가중치 분포 또는 다른 가상 특성들을 갖는다. 일부 구현예들에서, 객체들은 객체들의 조성 또는 다른 특성들 및 구부림, 번들거림, 또는 파손 규칙들에 기초하여 시뮬레이션된 물리학에 기초하여 구부러지거나, 부서지거나, 파손될 수 있다.
본 명세서에서 정의된 다양한 프로세스들은 사용자의 개인 정보를 획득하고 활용하는 옵션을 고려한다. 예를 들어, 그러한 개인 정보는 전자 디바이스 상에 개선된 프라이버시 스크린을 제공하기 위해 활용될 수 있다. 그러나, 그러한 개인 정보가 수집되는 범위까지, 그러한 정보는 사용자의 통지된 동의에 의해 획득되어야 한다. 본 명세서에 기술된 바와 같이, 사용자는 그들의 개인 정보의 사용에 대한 지식 및 제어를 가져야 한다.
개인 정보는 적법하고 합리적인 목적을 위해서만 적절한 당사자들에 의해 활용될 것이다. 그러한 정보를 활용하는 그러한 당사자들은 적어도 적절한 법률 및 규정에 따른 프라이버시 정책들 및 관행들을 준수할 것이다. 또한, 그러한 정책들은 잘 확립되고, 사용자-액세스가능하고, 정부/산업 표준들 또는 그 이상을 준수하는 것으로 인식되어야 한다. 또한, 이들 당사자들은 임의의 합리적이고 적법한 목적들 밖에서 그러한 정보를 배포하거나, 판매하거나, 달리 공유하지 않을 것이다.
그러나, 사용자들은 그러한 당사자들이 개인 정보에 액세스하거나 달리 획득할 수 있는 정도를 제한할 수 있다. 예를 들어, 설정들 또는 다른 선호도들은 사용자들이 그들의 개인 정보가 다양한 엔티티들에 의해 액세스될 수 있는지 여부를 판정할 수 있도록 조정될 수 있다. 또한, 본 명세서에 정의된 일부 특징들이 개인 정보를 사용하는 것과 관련하여 설명되지만, 이러한 특징들의 다양한 양상들은 그러한 정보를 사용할 필요 없이 구현될 수 있다. 일례로서, 사용자 선호도들, 계정 이름들, 및/또는 위치 이력이 수집되면, 이 정보는 정보가 각자의 사용자를 식별하지 않도록 가려지거나 달리 일반화될 수 있다.
다수의 특정 세부사항들은 청구되는 주제 내용의 철저한 이해를 제공하기 위해 본 명세서에 기재된다. 그러나, 당업자들은 청구되는 주제 내용이 이들 특정 세부사항들 없이 실시될 수 있음을 이해할 것이다. 다른 경우들에 있어서, 통상의 기술자에 의해 알려진 방법들, 장치들 또는 시스템들은 청구되는 주제 내용이 가려지지 않도록 상세히 설명되지 않았다.
구체적으로 달리 언급되지 않는다면, 본 명세서 전반에 걸쳐 "프로세싱", "컴퓨팅", "계산", "결정", 및 "식별" 등과 같은 용어들을 이용하는 논의들은, 메모리들, 레지스터들, 또는 컴퓨팅 플랫폼의 다른 정보 저장 디바이스들, 송신 디바이스들, 또는 디스플레이 디바이스들 내에서 물리적 전자 또는 자기 양들로서 표현되는 데이터를 조작 또는 변환하는, 하나 이상의 컴퓨터들 또는 유사한 전자 컴퓨팅 디바이스 또는 디바이스들과 같은 컴퓨팅 디바이스의 작동들 또는 프로세스들을 지칭한다는 것이 이해된다.
본 명세서에 논의된 시스템 또는 시스템들은 임의의 특정 하드웨어 아키텍처 또는 구성에 제한되지 않는다. 컴퓨팅 디바이스는 하나 이상의 입력들에 반응하는 결과를 제공하는 컴포넌트들의 임의의 적합한 배열을 포함할 수 있다. 적합한 컴퓨팅 디바이스들은 범용 컴퓨팅 장치로부터 본 주제 내용의 하나 이상의 구현예들을 구현하는 특수 컴퓨팅 장치까지 컴퓨팅 시스템을 프로그래밍 또는 구성하는, 저장된 소프트웨어에 액세스하는 다목적 마이크로프로세서-기반 컴퓨터 시스템들을 포함한다. 임의의 적합한 프로그래밍, 스크립팅, 또는 다른 유형의 언어 또는 언어들의 조합들은 본 명세서에 포함된 교시들을, 컴퓨팅 디바이스를 프로그래밍 또는 구성하는 데 사용될 소프트웨어로 구현하는 데 사용될 수 있다.
본 명세서에 개시된 방법들의 구현예들은 이러한 컴퓨팅 디바이스들의 동작에서 수행될 수 있다. 위 예들에 제시된 블록들의 순서는 달라질 수 있는데, 예를 들어, 블록들이 재정렬되거나, 조합되거나, 또는 하위-블록들로 나뉠 수 있다. 소정의 블록들 또는 프로세스들은 병렬로 수행될 수 있다.
본 명세서에서 "~ 하도록 적응되는(adapted to)" 또는 "~ 하도록 구성되는(configured to)"의 사용은 부가적인 태스크들 또는 단계들을 수행하도록 적응되거나 또는 구성되는 디바이스들을 배제하지 않는 개방적이고 포괄적인 언어로서 의도된다. 부가적으로, "~에 기초하여"의 사용은, 하나 이상의 인용 조건들 또는 값들"에 기초한" 프로세스, 단계, 계산, 또는 다른 작동이, 실제로, 인용된 것들 이상으로 부가적인 조건들 또는 값에 기초할 수 있다는 점에서 개방적이고 포괄적인 것으로 의도된다. 본 명세서에 포함된 표제들, 목록들, 및 번호는 단지 설명의 용이함을 위한 것이며 제한적인 것으로 의도되지 않는다.
용어들 "제1", "제2" 등이 다양한 객체들을 설명하기 위해 본 명세서에서 사용될 수 있지만, 이들 객체들은 이들 용어들에 의해 제한되어서는 안 된다는 것이 또한 이해될 것이다. 이러한 용어들은 하나의 객체를 다른 객체와 구별하는 데에만 사용된다. 예를 들어, 모든 "제1 노드"의 발생이 일관되게 재명명되고 모든 "제2 노드"의 발생이 일관되게 재명명되기만 한다면, 제1 노드는 제2 노드로 지칭될 수 있고, 유사하게, 제2 노드는 제1 노드로 지칭될 수 있으며, 이는 설명의 의미를 변경한다. 제1 노드 및 제2 노드는 둘 모두 노드들이지만, 그것들은 동일한 노드가 아니다.
본 명세서에서 사용되는 용어는 단지 특정 구현예들만을 설명하는 목적을 위한 것이고, 청구범위를 제한하도록 의도되지 않는다. 본 구현예들의 설명 및 첨부된 청구범위에 사용되는 바와 같이, 단수형들("a", "an" 및 "the")은 문맥상 명확하게 달리 나타나지 않으면 복수형들도 또한 포함하도록 의도된다. 또한, 본 명세서에서 사용되는 바와 같은 용어 "또는"은 열거되는 연관된 아이템들 중 하나 이상의 아이템의 임의의 그리고 모든 가능한 조합들을 나타내고 그들을 포괄하는 것임이 이해될 것이다. 본 명세서에서 사용될 때 용어들 "포함한다(comprise)" 또는 "포함하는(comprising)"은 언급된 특징들, 정수들, 단계들, 동작들, 객체들, 또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 객체들, 컴포넌트들 또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 추가로 이해될 것이다.
본 명세서에서 사용되는 바와 같이, 맥락에 의존하여, 진술된 선행 조건이 사실"인 경우(if)"라는 용어는 그가 사실"일 때(when)", 그가 사실"일 시(upon)" 또는 그가 사실"이라고 결정하는 것에 응답하여(in response to determining)" 또는 그가 사실"이라는 결정에 따라(in accordance with a determination)" 또는 그가 사실"임을 검출하는 것에 응답하여(in response to detecting)"를 의미하는 것으로 해석될 수 있다. 유사하게, 어구 "[진술된 선행 조건이 사실이라고] 결정되는 경우" 또는 "[진술된 선행 조건이 사실]인 경우" 또는 "[진술된 선행 조건이 사실]일 때"는, 맥락에 의존하여, 진술된 선행 조건이 사실"이라고 결정할 시" 또는 그가 사실"이라고 결정하는 것에 응답하여" 또는 그가 사실"이라는 결정에 따라" 또는 그가 사실"임을 검출할 시" 또는 그가 사실"임을 검출하는 것에 응답하여"를 의미하는 것으로 해석될 수 있다.
본 발명의 상세한 설명 및 발명의 내용은 모든 면에서 도시적이고 예시적이지만, 제한적이지 않은 것으로 이해될 것이며, 본 명세서에 개시된 발명의 범주는 예시적인 구현예들의 상세한 설명에만 의존하여 결정되지 않고, 특허법에서 허용되는 전체 범위에 따라 결정될 것이다. 본 명세서에 도시되고 기재된 구현예들은 단지 본 발명의 원리에 대한 예시일뿐이고, 다양한 변형예가 본 발명의 범주 및 사상을 벗어나지 않고 당업자들에 의해 구현될 수 있음이 이해될 것이다.

Claims (22)

  1. 방법으로서,
    프로세서를 갖는 전자 디바이스에서,
    3 차원(3D) 콘텐츠 개발 환경의 사용자 인터페이스 내의 3D 그래픽 레이아웃 내의 위치에서 디스플레이된 객체의 위치설정을 개시하는 입력을 획득하는 단계;
    적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 단계; 및
    상기 디스플레이된 객체의 상기 위치를 조정한 후에, 상기 디스플레이된 객체에 대해 상기 적어도 하나의 시뮬레이션된 물리학 모델을 디스에이블하는 단계를 포함하며, 상기 적어도 하나의 시뮬레이션된 물리학 모델은 상기 객체의 위치설정이 종료되었다고 결정하는 것, 미리 결정된 양의 시간, 또는 사용자 입력에 기초하여 디스에이블되는, 방법.
  2. 제1항에 있어서, 상기 3D 레이아웃 내의 상기 디스플레이된 객체의 위치설정을 개시하는 상기 입력을 획득하는 단계는, 상기 전자 디바이스의 상기 프로세서에 동작가능하게 결합된 이미지 센서를 사용하여 입력 객체의 3D 이동을 획득하는 단계를 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 단계는, 시뮬레이션된 중력에 따라 상기 3D 그래픽 레이아웃 내에서 병진(translation)시키는 단계를 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 단계는, 상기 3D 그래픽 레이아웃 내의 다른 객체와 상기 디스플레이된 객체의 충돌에 따라 상기 디스플레이된 객체를 병진시키는 단계를 포함하는, 방법.
  5. 제1항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 단계는,
    상기 디스플레이된 객체 및 제2 디스플레이된 객체가 객체 분류술(taxonomy)에서 공통 범주(classification)를 공유하는지 여부를 결정하는 단계, 및 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체가 공통 범주를 공유한다는 결정에 따라, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체 중 적어도 하나를 서로를 향해 병진시키는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 3D 그래픽 레이아웃 내의 평면을 식별하는 단계를 추가로 포함하고, 적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 단계는 상기 디스플레이된 객체를 상기 평면 상으로 이동시키는 단계를 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 디스플레이된 객체 및 제2 디스플레이된 객체를 그룹화하는 단계를 추가로 포함하고, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체를 그룹화하는 단계는,
    상기 디스플레이된 객체의 이동을 나타내는 입력에 응답하여 상기 제2 디스플레이된 객체를 상기 디스플레이된 객체와 함께 이동시키는 단계; 및
    상기 제2 객체의 이동을 나타내는 입력에 응답하여 상기 디스플레이된 객체의 상기 위치를 유지하는 단계를 포함하는, 방법.
  8. 동작들을 수행하도록 디바이스 상에서 실행가능한 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 동작들은,
    3 차원(3D) 콘텐츠 개발 환경의 사용자 인터페이스 내의 3D 그래픽 레이아웃 내의 위치에서 디스플레이된 객체의 위치설정을 개시하는 입력을 획득하는 것;
    적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 것; 및
    상기 디스플레이된 객체의 상기 위치를 조정한 후에, 상기 디스플레이된 객체에 대해 상기 적어도 하나의 시뮬레이션된 물리학 모델을 디스에이블하는 단계를 포함하며, 상기 적어도 하나의 시뮬레이션된 물리학 모델은 상기 객체의 위치설정이 종료되었다고 결정하는 것, 미리 결정된 양의 시간, 또는 사용자 입력에 기초하여 디스에이블되는, 비일시적 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 3D 레이아웃 내에서 상기 디스플레이된 객체의 위치설정을 개시하는 상기 입력을 획득하는 것은, 상기 전자 디바이스의 상기 프로세서에 동작가능하게 결합된 이미지 센서를 사용하여 입력 객체의 3D 이동을 획득하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  10. 제8항 또는 제9항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은, 시뮬레이션된 중력에 따라 상기 3D 그래픽 레이아웃 내에서 병진시키는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은, 상기 3D 그래픽 레이아웃 내의 다른 객체와 상기 디스플레이된 객체의 충돌에 따라 상기 디스플레이된 객체를 병진시키는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  12. 제8항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은,
    상기 디스플레이된 객체 및 제2 디스플레이된 객체가 객체 분류술에서 공통 범주를 공유하는지 여부를 결정하는 것, 및 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체가 공통 범주를 공유한다는 결정에 따라, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체 중 적어도 하나를 서로를 향해 병진시키는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서, 상기 동작들은,
    상기 3D 그래픽 레이아웃 내의 평면을 식별하는 것을 추가로 포함하고, 적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 것은 상기 디스플레이된 객체를 상기 평면 상으로 이동시키는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 동작들은 상기 디스플레이된 객체 및 제2 디스플레이된 객체를 그룹화하는 것을 추가로 포함하고, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체를 그룹화하는 것은,
    상기 디스플레이된 객체의 이동을 나타내는 입력에 응답하여 상기 제2 디스플레이된 객체를 상기 디스플레이된 객체와 함께 이동시키는 것; 및
    상기 제2 객체의 이동을 나타내는 입력에 응답하여 상기 디스플레이된 객체의 상기 위치를 유지하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 시스템으로서,
    비일시적 컴퓨터 판독가능 저장 매체; 및
    상기 비일시적 컴퓨터 판독가능 저장 매체에 결합된 하나 이상의 프로세서들을 포함하며, 상기 비일시적 컴퓨터 판독가능 저장 매체는, 상기 하나 이상의 프로세서들 상에서 실행될 때, 시스템으로 하여금 동작들을 수행하게 하는 프로그램 명령어들을 포함하고, 상기 동작들은,
    3 차원(3D) 콘텐츠 개발 환경의 사용자 인터페이스 내의 3D 그래픽 레이아웃 내의 위치에서 디스플레이된 객체의 위치설정을 개시하는 입력을 획득하는 것;
    적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 것; 및
    상기 디스플레이된 객체의 상기 위치를 조정한 후에, 상기 디스플레이된 객체에 대해 상기 적어도 하나의 시뮬레이션된 물리학 모델을 디스에이블하는 단계를 포함하며, 상기 적어도 하나의 시뮬레이션된 물리학 모델은 상기 객체의 위치설정이 종료되었다고 결정하는 것, 미리 결정된 양의 시간, 또는 사용자 입력에 기초하여 디스에이블되는, 시스템.
  16. 제15항에 있어서, 상기 3D 레이아웃 내에서 상기 디스플레이된 객체의 위치설정을 개시하는 상기 입력을 획득하는 것은, 상기 전자 디바이스의 상기 프로세서에 동작가능하게 결합된 이미지 센서를 사용하여 입력 객체의 3D 이동을 획득하는 것을 포함하는, 시스템.
  17. 제15항 또는 제16항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은, 시뮬레이션된 중력에 따라 상기 3D 그래픽 레이아웃 내에서 병진시키는 것을 포함하는, 시스템.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은, 상기 3D 그래픽 레이아웃 내의 다른 객체와 상기 디스플레이된 객체의 충돌에 따라 상기 디스플레이된 객체를 병진시키는 것을 포함하는, 시스템.
  19. 제15항에 있어서, 상기 디스플레이된 객체의 상기 위치를 조정하는 것은,
    상기 디스플레이된 객체 및 제2 디스플레이된 객체가 객체 분류술에서 공통 범주를 공유하는지 여부를 결정하는 것, 및 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체가 공통 범주를 공유한다는 결정에 따라, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체 중 적어도 하나를 서로를 향해 병진시키는 것을 포함하는, 시스템.
  20. 제15항 내지 제19항에 있어서, 상기 동작들은,
    상기 3D 그래픽 레이아웃 내의 평면을 식별하는 것을 추가로 포함하고, 적어도 하나의 시뮬레이션된 물리학 모델을 사용하여 상기 디스플레이된 객체의 상기 위치를 조정하는 것은 상기 디스플레이된 객체를 상기 평면 상으로 이동시키는 것을 포함하는, 시스템.
  21. 제15항 내지 제20항 중 어느 한 항에 있어서, 상기 동작들은 상기 디스플레이된 객체 및 제2 디스플레이된 객체를 그룹화하는 것을 추가로 포함하고, 상기 디스플레이된 객체 및 상기 제2 디스플레이된 객체를 그룹화하는 것은,
    상기 디스플레이된 객체의 이동을 나타내는 입력에 응답하여 상기 제2 디스플레이된 객체를 상기 디스플레이된 객체와 함께 이동시키는 것; 및
    상기 제2 객체의 이동을 나타내는 입력에 응답하여 상기 디스플레이된 객체의 상기 위치를 유지하는 것을 포함하는, 시스템.
  22. 제8항에 있어서, 상기 동작들은 선택 기준들에 기초하여 상기 3D 그래픽 레이아웃 내의 상기 디스플레이된 객체 전부보다 적은 서브세트에 대해 상기 적어도 하나의 시뮬레이션된 물리학 모델을 인에이블하도록 결정하는 것을 추가로 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020217024817A 2019-02-08 2020-02-06 3 차원 콘텐츠 내에서의 객체 위치설정 및 이동 KR20210111821A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962802978P 2019-02-08 2019-02-08
US62/802,978 2019-02-08
PCT/US2020/016914 WO2020163549A1 (en) 2019-02-08 2020-02-06 Object positioning and movement in three dimensional content

Publications (1)

Publication Number Publication Date
KR20210111821A true KR20210111821A (ko) 2021-09-13

Family

ID=69780308

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024817A KR20210111821A (ko) 2019-02-08 2020-02-06 3 차원 콘텐츠 내에서의 객체 위치설정 및 이동

Country Status (5)

Country Link
US (1) US20210365107A1 (ko)
KR (1) KR20210111821A (ko)
CN (1) CN113412471A (ko)
DE (1) DE112020000725T5 (ko)
WO (1) WO2020163549A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11657588B2 (en) * 2020-10-16 2023-05-23 Adobe Inc. Physics based manipulation
US11943565B2 (en) * 2021-07-12 2024-03-26 Milestone Systems A/S Computer implemented method and apparatus for operating a video management system
CN114529705B (zh) * 2022-04-22 2022-07-19 山东捷瑞数字科技股份有限公司 一种三维引擎编辑器的界面布局处理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200530846A (en) * 2003-10-02 2005-09-16 Ageia Technologies Inc Physics processing unit
KR101690469B1 (ko) * 2008-07-15 2016-12-27 임머숀 코퍼레이션 메시지 콘텐츠를 진동촉각 메시징을 위한 가상 물리적 속성들로 맵핑하기 위한 시스템 및 방법, 및 비일시적인 컴퓨터 판독가능 매체
US9183676B2 (en) * 2012-04-27 2015-11-10 Microsoft Technology Licensing, Llc Displaying a collision between real and virtual objects
US9904055B2 (en) * 2014-07-25 2018-02-27 Microsoft Technology Licensing, Llc Smart placement of virtual objects to stay in the field of view of a head mounted display
US20170092001A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Augmented reality with off-screen motion sensing
US9893974B2 (en) * 2015-10-11 2018-02-13 Microsoft Technology Licensing, Llc Synchronization of data for colliding bodies
IL292911B2 (en) * 2016-08-11 2023-11-01 Magic Leap Inc Automatic positioning of a virtual object in three-dimensional space
US20180060948A1 (en) * 2016-08-24 2018-03-01 Wal-Mart Stores, Inc. Apparatus and method for providing a virtual shopping environment
WO2018207662A1 (ja) * 2017-05-11 2018-11-15 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
US10977818B2 (en) * 2017-05-19 2021-04-13 Manor Financial, Inc. Machine learning based model localization system
CN107393019B (zh) * 2017-07-31 2020-11-20 天堃众联科技(深圳)有限公司 一种基于粒子的布料模拟方法与装置
US11977725B2 (en) * 2019-08-07 2024-05-07 Human Mode, LLC Authoring system for interactive virtual reality environments

Also Published As

Publication number Publication date
US20210365107A1 (en) 2021-11-25
WO2020163549A1 (en) 2020-08-13
DE112020000725T5 (de) 2022-01-05
CN113412471A (zh) 2021-09-17

Similar Documents

Publication Publication Date Title
KR102596341B1 (ko) 환경에서 객체들을 조작하기 위한 방법들
KR102322589B1 (ko) 3차원 콘텐츠 내의 위치-기반 가상 요소 양식
US11372655B2 (en) Computer-generated reality platform for generating computer-generated reality environments
US20210365107A1 (en) Object positioning and movement in three dimensional content
US11379033B2 (en) Augmented devices
US20220326837A1 (en) Methods for providing an immersive experience in an environment
CN112074800B (zh) 用于在沉浸水平之间切换的技术
US20210073545A1 (en) Object Detection With Instance Detection and General Scene Understanding
KR20200099592A (ko) 합성 현실 설정을 위한 오브젝티브-이펙추에이터의 구성
US20230343049A1 (en) Obstructed objects in a three-dimensional environment
US20230100689A1 (en) Methods for interacting with an electronic device
US12002165B1 (en) Light probe placement for displaying objects in 3D environments on electronic devices
US11087528B1 (en) 3D object generation
US11442549B1 (en) Placement of 3D effects based on 2D paintings
US12099659B1 (en) Translation of visual effects
US20230350539A1 (en) Representations of messages in a three-dimensional environment
US20230260239A1 (en) Turning a Two-Dimensional Image into a Skybox
CN117480472A (zh) 用于在环境中提供沉浸式体验的方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal