KR20110134940A - 애플리케이션 공유 - Google Patents

애플리케이션 공유 Download PDF

Info

Publication number
KR20110134940A
KR20110134940A KR1020117026253A KR20117026253A KR20110134940A KR 20110134940 A KR20110134940 A KR 20110134940A KR 1020117026253 A KR1020117026253 A KR 1020117026253A KR 20117026253 A KR20117026253 A KR 20117026253A KR 20110134940 A KR20110134940 A KR 20110134940A
Authority
KR
South Korea
Prior art keywords
network node
windows
sharer
window
viewer
Prior art date
Application number
KR1020117026253A
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 KR20110134940A publication Critical patent/KR20110134940A/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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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
    • 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
    • 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
    • G09G5/14Display of multiple viewports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Abstract

공유자 네트워크 노드(12)의 로컬 디스플레이(508) 상의 스크린 레이아웃 내에 소프트웨어 프로세스와 관련된 윈도우(510-514)들의 낱개들이 식별된다. 공유자 네트워크 노드(12)상에서, 식별된 윈도우들(510-514)이 스크린 레이아웃(506) 내에 정렬되며 스크린 레이아웃(506)에서 어떤 다른 윈도우들에 의해 가려지지 않도록 윈도우들(510-514)의 이미지가 생성된다. 그 이미지는 공유자 네트워크 노드(12)로부터 뷰어 네트워크 노드(14)로 전송된다. 또한 공유자 및 뷰어 네트워크 노드들 상에서의 입력 장치 이벤트로부터 도출되는 명령들이 수신된다. 수신된 명령들은 명령 시퀀스로 프로세싱되고, 명령 시퀀스는 공유자 네트워크 노드(12) 상에서 실행되는 공유 프로세스로 보내진다. 공유 프로세스와 관련된 윈도우들(510-514)은 수신된 명령 시퀀스에 따라 공유자 네트워크 노드(12) 상에서 제공된다. 제공된 윈도우들(510-514)의 이미지가 생성되고 공유자 네트워크 노드(12)로부터 뷰어 네트워크 노드(14)로 전송된다.

Description

애플리케이션 공유{APPLICATION SHARING}
직접 대면하는 통신이 실용적이지 못할 때, 사람들은 보통 자신들의 통신 요구를 충족시키기 위해 하나 이상의 기술적 해결책에 의존한다. 그러한 해결책들은 통상적으로 직접 대면하는 통신의 한 개 이상의 양태를 모방하도록 설계된다. 전통적 전화통신 시스템은 통화자들 간 음성 통신을 수행할 수 있다. 즉석 메시징("채팅"이라고도 칭함) 통신 시스템은 사용자들이 즉석 메시지 서버에 의해 서로 연결되는 즉석 메시지 컴퓨터 클라이언트들을 통해 텍스트 메시지를 실시간으로 통신할 수 있게 한다. 일부 즉석 메시징 시스템은 부가적으로 사용자가 사용자 제어형 그래픽 오브젝트("아바타"라 칭함)에 의해 가상 환경 상에서 표현될 수 있게 한다. 대화식(interactive) 가상 현실 통신 시스템은 멀리 떨어진 위치에 있는 사용자들이 여러 실시간 채널을 통해 통신하게 하고 그들 각자의 아바타를 3차원 가상 공간 상에서 조종함으로써 서로와 상호작용하게 할 수 있다. 이러한 통신 모드들 각각은 통상적으로, 통신자들 사이에서 일정 형태의 데이터 공유를 다룰 수 있다.
일반적인 형태의 데이터 공유는 애플리케이션 공유로서, 이것은 한 노드("공유자 노드"라 칭함)에서 한 개 이상의 다른 노드들("뷰어(viewer) 노드")로 애플리케이션 데이터를 전송하는 일을 수반한다. 애플리케이션 공유는 원격 기술 지원, 원격 협력, 및 시연, 문서, 및 이미지의 원격 프레젠테이션 제공을 포함하는 다양하고 유용한 적용예를 가진다. 어떤 제안된 시스템에서, 공유자 노드 상의 애플리케이션 공유 프로그램은 공유자 노드 상의 체인형 디스플레이 드라이버 프로세스로부터 드로잉(drawing) 명령(가령 선과 곡선 그리기, 폰트 렌더링 및 팔레트(palette) 처리를 위한 GDI 콜)을 주기적으로 수집하고, 드로잉 명령을 오더(order) 패킷으로 패키징하며, 뷰어 노드들 각각에서 공유자 디스플레이의 공유된 보기를 정확하게 구성시키는 각자의 대응 애플리케이션 공유 프로그램으로 오더 패킷을 보낸다. 그러나 그러한 애플리케이션 공유 방식은 오더 패킷 내 드로잉 명령을 디스플레이 프로세스(가령 Microsoft® Windows® 운영체계에 의한 GDI 인터페이스)로 전달함으로써 각 뷰어 노드가 각자 자체 버전의 공유 애플리케이션을 렌더링할 것을 요한다.
필요한 것은 개선된 애플리케이션 공유 장치 및 방법이다.
한 양태에서, 본 발명은 소프트웨어 프로세스와 연관된 윈도우들의 낱개들이 공유자 네트워크 노드의 로컬 디스플레이 상의 스크린 레이아웃에서 식별되는 방법을 특징으로 한다. 공유자 네트워크 노드 상에서, 식별된 윈도우들이 스크린 레이아웃 내에 정렬되고 스크린 레이아웃 내 어떤 다른 윈도우들에 의해 가려지지 않도록 그 식별된 윈도우들의 합성 이미지가 생성된다. 합성 이미지는 공유자 네트워크 노드로부터 뷰어 네트워크 노드로 전송된다.
한 양태에서, 본 발명은 공유자 네트워크 노드 상에서의 로컬 입력 장치 이벤트로부터 도출되는 로컬 생성 명령(locally-generated commands)이 수신되는 방법을 특징으로 한다. 원격 뷰어 네트워크 노드 상의 원격 입력 장치 이벤트로부터 도출되는 원격 생성 명령(remotely-generated commands) 역시 수신된다. 수신된 명령은 명령 시퀀스로 프로세싱된다. 명령 시퀀스는 공유자 네트워크 노드 상에서 실행되는 공유 프로세스로 보내진다. 공유자 네트워크 노드의 로컬 디스플레이 상의 스크린 레이아웃 내에서, 공유 프로세스와 관련되는 하나 이상의 윈도우들이 수신된 명령 시퀀스에 따라 제공된다. 하나 이상의 윈도우가 스크린 레이아웃 내에 제공될 때 그 윈도우의 이미지가 생성된다. 그 이미지는 공유자 네트워크 노드로부터 뷰어 네트워크 노드로 전송된다.
본 발명은 또한 상술한 본 발명의 방법을 구현하도록 동작하는 장치, 및 컴퓨터가 상술한 본 발명의 방법을 구현하게 하는 컴퓨터 판독가능 명령어를 저장하는 컴퓨터 판독가능 매체를 특징으로 한다.
본 발명의 다른 특징 및 이점은 도면과 청구항을 포함하는 이하의 설명으로부터 자명해질 것이다.
도 1은 제 1 네트워크 노드 및 제 2 네트워크 노드를 포함하는 네트워크 통신 환경의 실시예에 대한 도면이다.
도 2는 애플리케이션 공유 방법의 일 실시예에 대한 흐름도이다.
도 3은 공유자 네트워크 노드의 디스플레이 상의 스크린 레이아웃의 일 실시예에 대한 도면이다.
도 4(a)는 뷰어 네트워크 노드의 디스플레이 상의 스크린 레이아웃의 일 실시예에 대한 도면이다.
도 4(b)는 뷰어 네트워크 노드의 디스플레이 상의 스크린 레이아웃의 일 실시예에 대한 도면이다.
도 5는 애플리케이션 공유 클래스 모델의 일 실시예에 대한 도면이다.
도 6은 일 실시예에서 애플리케이션 공유 프로세스의 방법을 구현하는 애플리케이션 공유 구성요소들의 실시예에 대한 도면이다.
도 7은 일 실시예에서 애플리케이션 공유 프로세스의 방법을 구현하는 애플리케이션 공유 구성요소들의 실시예에 대한 도면이다.
도 8은 일 실시예에서 애플리케이션 공유 프로세스의 방법을 구현하는 애플리케이션 공유 구성요소들의 실시예에 대한 도면이다.
도 9는 일 실시예에서 애플리케이션 공유 프로세스의 방법을 구현하는 애플리케이션 공유 구성요소들의 실시예에 대한 도면이다.
도 10은 일 실시예에서 애플리케이션 공유 프로세스의 방법을 구현하는 애플리케이션 공유 구성요소들의 실시예에 대한 도면이다.
도 11(a) 및 11(b)는 애플리케이션 공유 방법의 실시예의 흐름도들이다.
도 12는 공유자 네트워크 노드의 디스플레이 상의 스크린 레이아웃의 일 실시예에 대한 도면이다.
도 13은 공유 소프트웨어 프로세스와 연관된 윈도우들의 계층화 순서를 결정하는 방법의 일 실시예에 대한 흐름도이다.
도 14는 보기 네트워크 노드의 일 실시예와 관련된 애플리케이션 공유 프로세스의 일 실시예를 구현하는 공유 네트워크 노드의 일 실시예의 블록도이다.
도 15는 애플리케이션 공유 방법의 일 실시예에 대한 흐름도이다.
도 16은 도 1의 제 1 네트워크 노드, 도 1의 제 2 네트워크 노드, 및 가상 환경 생성자를 포함하는 네트워크 통신 환경의 실시예에 대한 도면이다.
도 17은 가상 영역에 대한 묘사를 제공하는 그래픽 사용자 인터페이스를 포함하는 네트워크 노드의 일 실시예에 대한 도면이다.
도 18은 클라이언트 네트워크 노드의 일 실시예의 구성요소들을 보이는 도 16의 네트워크 통신 환경에 대한 블록도이다.
도 19는 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 20은 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 21은 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 22는 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 23은 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 24는 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
도 25는 그래픽 사용자 인터페이스의 일 실시예에 대한 도면이다.
이하의 설명에서, 유사한 참조 부호는 유사한 구성요소를 식별하는데 사용된다. 또한, 도면은 전형적 실시예의 주요 특징을 도식적 방식으로 예시하도록 의도된다. 도면은 실제 실시예의 모든 특징이나 묘사된 구성요소의 상대적 치수를 도시하도록 의도되지 않았으며, 축적에 맞추어 도시된 것이 아니다.
Ⅰ. 용어의 정의
"윈도우(window)"는 통상적으로 사용자 인터페이스를 포함하는 디스플레이의 시각적 영역이다. 윈도우는 통상적으로 소프트웨어 프로세서의 출력을 디스플레이하며 통상적으로 사용자가 그 소프트웨어 프로세스를 위한 명령이나 데이터를 입력할 수 있게 한다. 부모(parent)를 가진 윈도우는 "자식(child) 윈도우"라 불린다. 부모를 갖지 않거나 부모가 데스크탑 윈도우인 윈도우는 "최상위 레벨 윈도우"라 불린다. "데스크탑"은 그래픽 사용자 인터페이스의 배경을 묘사하고 모든 소프트웨어 프로세스에 의해 디스플레이된 모든 윈도우의 베이스(base)로서 기능한다.
"윈도우 스크레이핑(window scraping)"이라는 용어는 다른 소프트웨어 프로세스의 디스플레이 출력으로부터 데이터를 추출하는 프로세스를 일컫는다. 그러한 추출 프로세스는 "스크레이퍼퍼" 소프트웨어 프로세스에 의해 수행된다.
"계층화(layering) 순서"("z 순서"라고도 칭함)는 그래픽 사용자 인터페이스(GUI)가 제공되는 디스플레이에 직교하는 축(통상적으로 "z 축"을 일컬음)을 따라, GUI 내 윈도우들 같은 이차원 오브젝트들을 중첩시키는 순서이다.
"합성(compositing)"은 각각의 소스들로부터 나온 시각적 요소들을 하나의 합성 이미지(여기서는 "프레임"이라고도 일컬음) 내에 결합하는 것이다.
"가리기(obscuration)"는 잠복 또는 숨기거나 덮는 것 같은 행위나 프로세스를 의미한다.
"통신자(communicant)"는 한 개 이상의 네트워크 접속을 통해 타인들과 통신하거나 상호작용하는 사람이며, 여기서 통신이나 상호작용은 가상 영역의 상황에서 발생하거나 발생하지 않을 수 있다. "사용자(user)"는 서술 목적으로 특정 관점을 규정하는 특정 네트워크 노드를 운영하는 통신자이다. "공유자(sharer)"는 공유자 네트워크 노드를 운영하는 통신자이다. "뷰어(viewer)"는 뷰어 네트워크 노드를 운영하는 통신자이다.
사용자의 "실시간 접촉자(realtime contact)"는 실시간 통신 플랫폼을 통해 사용자와 통신했던 통신자나 타인이다.
"컴퓨터"는 컴퓨터 판독가능 매체 상에 일시적으로나 영구적으로 저장되는 컴퓨터 판독가능 명령어에 따라 데이터를 프로세싱하는 어떤 기계, 기기, 또는 장치이다. "운영 체계"는 작업의 실행 및 컴퓨팅 및 하드웨어 자원 공유를 관리 및 조정하는 컴퓨터 시스템의 소프트웨어 컴포넌트이다. "소프트웨어 프로세스"(소프트웨어, 애플리케이션, 컴퓨터 소프트웨어, 컴퓨터 애플리케이션, 프로그램, 및 컴퓨터 프로그램이라고도 일컬음)는 컴퓨터가 한 개 이상의 특정 작업을 수행하기 위해 해석하고 실행할 수 있는 명령어 집합이다. 소프트웨어 프로세스는 한 개 이상의 실행 "스레드(thread)"를 가질 수 있다. "공유 소프트웨어 프로세스(shared software process)"는 뷰어 네트워크 노드와 출력이 공유되는 소프트웨어 프로세스이다. "컴퓨터 데이터 파일"은 소프트웨어 애플리케이션에 의해 사용될 데이터를 영속적으로 저장하는 정보 블록이다.
"데이터베이스"는 컴퓨터에 의해 검색될 수 있는 표준화된 포맷으로 제공되는 레코드들의 체계화된 집합이다. 데이터베이스는 한 컴퓨터 상의 한 컴퓨터 판독가능 데이터 저장 매체에 저장되거나, 한 개 이상의 컴퓨터 상의 여러 컴퓨터 판독가능 데이터 저장 매체에 저장될 수 있다.
"데이터 싱크(data sink)"(여기서는 간단히 "싱크"라 칭함)는 기기(가령 컴퓨터), 기기의 일부, 또는 데이터를 수신하는 소프트웨어 중 어느 하나이다.
"데이터 소스(data source)"(여기서는 간단히 "소스"라 칭함)는 기기(가령, 컴퓨터, 기기의 일부, 또는 데이터를 발생하는 소프트웨어 중 어느 하나이다.
"네트워크 노드"(간단히 "노드"라 칭함)는 통신 네트워크 내 접합 또는 접속 지점이다. 전형적 네트워크 노드는 단말, 컴퓨터, 및 네트워크 스위치를 포함하나, 그러한 것에 국한되지 않는다. "서버" 네트워크 노드는 정보나 서비스 요청에 응답하는 네트워크 상의 호스트 컴퓨터이다. "클라이언트" 네트워크 노드는 서버로부터 정보나 서비스를 요청하는 네트워크 상의 컴퓨터이다. "네트워크 접속"은 통신하는 두 네트워크 노드들 사이의 링크이다. "로컬 네트워크 노드"라는 용어는 현재 논의의 주요 주제가 되는 네트워크 노드를 말한다. "원격 네트워크 노드"라는 용어는 네트워크 통신 링크에 의해 로컬 네트워크 노드와 연결되는 네트워크 노드를 말한다. "접속 핸들"은 어느 네트워크 노드 상의 통신자, 자원, 또는 서비스와 네트워크 접속을 설정하는데 사용될 수 있는 포인터나 식별자(가령, URI(uniform resource identifier))이다. "공유자 네트워크 노드"는 "뷰어 네트워크 노드"라 일컫는 다른 네트워크 노드와 콘텐트를 공유하는 네트워크 노드이다. "네트워크 통신"은 네트워크 접속을 통해 한 네트워크 노드로부터 다른 네트워크 노드로 전송되거나 운반되는 모든 종류의 정보(가령, 텍스트, 음성, 오디오, 비디오, 전자 메일 메시지, 데이터 파일, 모션 데이터 스트림, 및 데이터 패킷)를 포함할 수 있다.
"통신자 상호교류(communicant interaction)"는 통신자 및, 가령 다른 통신자, 가상 영역, 또는 네트워크 서비스를 포함할 수 있는 다른 네트워크 개체 사이의 모든 종류의 직간접적 행위나 영향력에 해당한다. 통신자 상호작용의 전형적 유형은 통신자들이 실시간으로 서로 통신하는 행위, 통신자가 가상 영역으로 입장하는 행위 및 통신자가 어느 네트워크 서비스로부터 자원에 대한 액세스를 요청하는 행위를 포함한다.
"존재(presence)"는 네트워킹된 개체(가령, 통신자, 서비스, 또는 기기)의 통신 능력 및 의지를 말하며, 그러한 의지가 네트워크 상의 해당 개체의 상태에 대한 정보를 검출 및 획득하는 기능 및 해당 개체에 접속하려는 기능에 영향을 미친다.
"실시간 데이터 스트림"은 연속적인 흐름으로 구성 및 프로세싱되고 지연이 없거나 미세한 지연만을 가지고 수신되도록 설계된 데이터이다. 실시간 데이터 스트림은 음성, 비디오, 사용자 움직임, 얼굴 표정 및 기타 물리적 현상에 대한 디지털 표현뿐 아니라, 예컨대 아바타 이동 명령, 문자 채팅, 실시간 데이터 피드(feeds)(가령, 센서 데이터, 기계 제어 명령, 트랜잭션 스트림 및 주식 시세 정보 피드), 및 파일 전송을 포함해 빠른 전송이나 빠른 실행, 또는 빠른 전송 및 빠른 실행 모두로부터 이익을 얻을 수 있는 컴퓨팅 환경 내 데이터를 포함한다.
"가상 영역"("영역" 또는 "장소"라고도 일컬음)은 컴퓨터 관리 공간 또는 장면(scene)의 표현이다. 가상 영역은 통상적으로 일차원, 이차원, 또는 삼차원 표현이나, 일부 실시예에서 가상 영역은 하나의 포인트에 해당할 수 있다. 종종 가상 영역은 물리적인 실제 공간을 모방하도록 설계된다. 예를 들어 전통적인 컴퓨터 모니터를 사용할 때, 가상 영역은 삼차원 컴퓨터 생성 공간에 대한 이차원 그래픽으로서 시각화될 수 있다. 그러나, 가상 영역은 스위칭 규칙을 구현하기 위한 관련 심상을 요하지 않는다. 가상 영역은 통상적으로 가상 영역 스키마(shema)의 인스턴스를 말하며, 상기 스카마는 변수들을 사용해 가상 영역의 구조 및 콘텐츠를 규정하고, 인스턴스는 특정 맥락으로부터 결정되었던 값들을 사용해 가상 영역의 구조 및 콘텐츠를 규정한다.
"가상 영역 애플리케이션"("가상 영역 사양"이라고도 일컬음)은 가상 환경을 생성할 때 사용되는 가상 영역의 내용이다. 가상 영역 애플리케이션은 통상적으로, 가상 영역의 한 개 이상의 구역들과 관련된 실시간 스위칭 규칙, 물리, 기하학적 도형의 규정들을 포함한다.
"가상 환경"은 적어도 한 개의 가상 영역을 포함하고 통신자들 간 실시간 통신을 지원하는 컴퓨터 관리 공간에 대한 표현이다.
"구간(zone)"은 적어도 한 개의 스위칭 규칙이나 통제 규칙과 관련된 가상 영역의 한 부분이다. "스위칭 규칙"은 선행하는 한 개 이상의 조건에 종속되는 한 개 이상의 실시간 데이터 소스 및 한 개 이상의 실시간 데이터 싱크의 접속 또는 접속해제를 특정하는 명령이다. 스위칭 규칙은 가상 영역의 상황에서 통신하는 네트워크 노드들 간의 실시간 데이터 스트림의 스위칭(가령, 라우팅, 접속, 및 접속해제)을 제어한다. 관리(governance) 규칙은 자원(가령, 영역, 영역의 일부, 또는 그 영역이나 영역의 일부의 콘텐츠)에 대한 통신자의 액세스, 그 액세스의 범위, 및 그 액세스의 후속 결과(가령, 그 액세스와 관련된 레코드들을 감사하는 요건이 기록되어야 한다)를 통제한다. "렌더링 가능(renderable) 구간"은 각자의 심상과 관련된 구역이다.
가상 영역 내 어느 "위치"는 가상 영역 내 한 점, 면적, 또는 체적의 위치를 말한다. 점은 통상적으로 가상 영역 내 한 지점을 규정하는 일차원, 이차원, 또는 삼차원 좌표(가령, 평행 좌표, 극 좌표 또는 구현 좌표)의 단일 집합으로 표현된다. 좌표는 위치를 설정하는 어떤 한 개 또는 복수의 수로 규정될 수 있다. 면적은 통상적으로 가상 영역 내에서 폐쇄된 이차원 모양의 경계를 규정하는 셋 이상의 공면(planar) 교점의 삼차원 좌표로 나타낸다. 체적은 통상적으로 가상 영역 내에서 삼차원 모양의 폐쇄된 경계를 규정하는 넷 이상의 비공면(non-coplanar) 교점의 삼차원 좌표로 나타낸다.
"공간적 상태"는 사용자가 가상 영역 내에 존재를 가지는 곳을 나타내는 속성이다. 공간적 상태 속성은 통상적으로 사용자가 존재를 가지는 구역들 각각의 개개 값(가령, zone_ID 값)을 가진다.
"장소 마크(placemark)"는 가상 영역 내 어느 위치에 대해 저장된 레퍼런스(가령, 하이퍼링크)이다. 장소 마크는 통상적으로 가상 영역 내 관련 위치에 대한 보기를 사용자에게 제공하기 위해 선택될 수 있다. "장소를 마크한다"는 동사는 장소 마크를 생성하는 행위나 동작을 의미한다.
가상 영역 환경에서, "오브젝트"는 가상 영역의 기하구조와 별개로 유용하게 다뤄질 수 있는 가상 영역 내 어떤 종류의 낱개 엘리먼트이다. 전형적인 오브젝트로는 도어, 포털, 윈도우, 뷰(view) 스크린, 및 스피커폰이 포함된다. 오브젝트는 통상적으로 가상 영역의 속성 및 특성과 분리되고 별개인 속성 및 특성을 가진다. "아바타"는 가상 영역 내 통신자를 나타내는 오브젝트이다.
"더블 클릭"이라는 용어는 (가령 컴퓨터의 왼 마우스 버튼을 더블 클릭하거나, 실행 명령, 예컨대 구간에 진입하거나 오브젝트를 보는 것과 관련된 사용자 인터페이스 버튼을 한 번 클릭함으로써) 실행 명령을 엔터 또는 입력하는 행위나 동작을 말한다. "쉬프트-클릭"은 문자/숫자 입력기의 쉬프트 키가 활성화된 동안 선택 명령(가령, 컴퓨터 왼 마우스 버튼 클릭)을 엔터 또는 입력하는 행위나 동작을 말한다. "쉬프트-더블 클릭"은 문자/숫자 입력기의 쉬프트 키가 활성화된 동안 실행 명령을 엔터 또는 입력하는 행위나 동작을 말한다.
여기 사용된 것 같이 "포함한다"는 용어는 포함하는 것을 의미하나 거기에 국한되지 않으며, "포함하는"이라는 용어는 포함하는 것을 의미하나 거기에 국한되지 않는다. "~에 기반한다"는 용어는 적어도 부분적으로 ~에 기반한다는 것을 의미한다.
Ⅱ. 서론
여기 기술되는 실시예는 고 충실도, 실시간 성능, 뷰어 몰입(viewer immersion), 및 프라이버시 보호와 함께 애플리케이션 공유를 가능하게 한다. 일부 실시예에서, 소프트웨어 프로세스의 각 스레드와 연관된 스크린 콘텐트가 결정되며, 다른 윈도우 콘텐트가 없는 개별 합성 이미지(또는 프레임) 내에 합성될 수 있다. 어느 네트워크 노드 상에서 한 개 이상의 소프트웨어 애플리케이션 스레드와 관련된 윈도우들의 콘텐츠는 다른 소프트웨어 프로세스에 의해 생성될지 모를 스크린 콘텐트(가령, 애플리케이션 콘텐트, 메시지, 또는 대화 박스를 포함하는 윈도우들)에 의해 가려질 위험 없이 다른 네트워크 노드들로 브로드캐스팅될 수 있으며, 그에 따라 사용자의 즉각적 제어 밖에 있는 프로세스들에 의해 가끔 생성되는 스크린 콘텐트를 중첩함에 따른 공유 윈도우 콘텐트의 훼손을 방지할 수 있다. 이러한 특징은 스크린 콘텐트를 가리는 것을 제거하기 위해 공유자들이 제공된 표현을 인터럽트 해야 할 필요성을 없앰으로써, 공유 윈도우 콘텐트의 뷰어들에게 보다 몰입적 협력의 경험을 만들어 줄 수 있다. 또한, 공유자들이 의도된 스크린 콘텐트와 함께 개인 정보가 우연하게 공유될지 모른다는 걱정을 할 필요가 없어, 공유자의 프라이버시를 보호할 수 있다.
일부 실시예 역시 둘 이상의 통신자들이 동시에 서로와 애플리케이션 및 스크린 콘텐트를 공유하는 멀티채널 애플리케이션 공유를 가능하게 한다. 이 실시예들은 통상적으로 각 수신기가 한 공유 윈도우를 다른 공유 윈도우와 구별할 수 있도록 하는 인터페이스를 포함한다.
Ⅲ. 애플리케이션 공유
A. 서론
도 1은 네트워크(18)에 의해 서로 연결되는 제 1 네트워크 노드(12) 및 제 2 네트워크 노드(14)를 포함하는 전형적 네트워크 통신 환경(10)의 일 실시예를 보여준다. 제 1 네트워크 노드(12)는 컴퓨터 판독가능 메모리(20), 프로세서(22), 및 입출력(I/O) 하드웨어(24)(디스플레이 포함)를 포함한다. 프로세서(22)는 메모리(20)에 저장되는 적어도 한 개의 통신 애플리케이션(26)을 실행한다. 제 2 네트워크 노드(14)는 통상적으로 제 1 네트워크 노드(12)와 실질적으로 동일한 방식으로 구성된다. 동작시, 통신 애플리케이션(26)은 통상적으로 제 1 및 제 2 네트워크 노드들(12, 14) 사이에 한 개 이상의 통신 모드(가령, 텍스트, 보이스, 오디오, 및 비디오)를 제공한다. 또한, 통신 애플리케이션(26)은 제 1 및 제 2 네트워크 노드들(12, 14) 사이에 한 방향 또는 두 방향 애플리케이션 공유를 가능하게 한다.
통신 애플리케이션의 실시예들은 이하의 애플리케이션 공유 모드들 중 한 가지 이상을 구현할 수 있다:
● 소정 프로세스에 의해 생성된 모든 윈도우들을 공유;
● 오직 한 개의 윈도우를 공유하며 어떤 다른 윈도우들을 공유하지 않음;
● 소정 윈도우 및 모든 자식 윈도우들을 공유하되, 자식 윈도우들은 소정 윈도우를 생성했던 것과 동일한 프로세스에 속하거나 다른 프로세스에 속할 수 있음;
● 여러 애플리케이션을 공유. 예를 들어, 애플리케이션들 각각을 독자적으로 공유하는 대신 서로 다른 프로세스에 의해 생성된 윈도우들을 하나의 프레임으로 만든다.
도 2는 제 1 및 제 2 네트워크 노드들(12, 14) 중 하나 또는 둘 모두에서 동작되는 통신 애플리케이션(26)에 의해 구현되는 애플리케이션 공유 방법의 일 실시예를 보여준다. 이 프로세스는 통상적으로 공유자 네트워크 노드 상에서 동작되는 소프트웨어 프로세스와 관련된 한 개 이상의 문서들을 공유하라는 뷰어 네트워크 노드로부터의 요구에 응답하여 수행된다.
도 2의 방법에 따르면, 통신 애플리케이션(26)은 공유자 네트워크 노드의 디스플레이 상의 스크린 레이아웃에 소프트웨어 프로세스와 관련되는 윈도우들의 낱개들을 식별한다(도 2, 블록 500). 일부 실시예에서, 통신 애플리케이션(26)은 소프트웨어 프로세스와 관련되는 스크린 레이아웃 내 윈도우들 모두를 식별하거나, 스크린 레이아웃 내 윈도우들 중 소프트웨어 프로세스의 스레드에 할당된 핸들에 매치하는 윈도우들을 식별할 수 있다. 어떤 경우, 이 프로세스는 소프트웨어 프로세스 스레드에 의해 생성되는 부모 윈도우 및 적어도 한 개의 관련 자식 윈도우를 식별하는 동작을 수반한다. 일부 실시예에서, 통신 애플리케이션(26)은 소프트웨어 프로세스들의 지정 그룹에 의해 생성된 윈도우들 모두를 식별한다.
통신 애플리케이션(26)은 식별된 윈도우들이 스크린 레이아웃 내에 정렬되고 스크린 레이아웃 내 어떤 다른 윈도우들에 의해 가려지지 않도록 그 식별된 윈도우들의 합성 이미지를 생성한다(도 2, 블록 502). 일부 실시예에서, 이 프로세스는 스크린 레이아웃 내 식별된 윈도우들의 상대적 계층화 순서에 해당하는 식별된 윈도우들의 서로에 관한 계층화 순서를 결정하는 단계; 식별된 윈도우들 각각에 대해, 윈도우의 개별 이미지를 리트리브(retrieve)하는 단계; 및 결정된 계층화 순서에 따라 리트리브된 이미지들을 합성 이미지로 합성하는 단계를 포함한다. 일부 실시예에서, 계층화 순서를 결정하는 프로세스는, 스크린 레이아웃 내 윈도우들 각각에 대해, 개별 z 순서 값(Z-order value)을 윈도우의 개별 윈도우 핸들과 관련시킨 z 순서 리스트(Z-order list)를 생성하는 단계; 및 z 순서 리스트로부터 식별된 윈도우들의 계층화 순서를 도출하는 단계를 포함한다. 계층화 순서를 도출하는 프로세스는 통상적으로, z 순서 리스트에 있는 z 순서 값들 각각에 대해, 관련된 윈도우 핸들을 식별된 윈도우들 중 각자의 윈도우의 윈도우 핸들과 매칭시키는 단계; 및 z 순서 값들 중 식별된 윈도우들의 윈도우 핸들들과 매치한다고 판단된 것들과 관련된 z 순서 리스트 내 개별 z 순서 값들에 따른 계층화 순서로, 식별된 윈도우들을 정렬하는 단계를 포함한다.
다른 윈도우들에 의한 가려짐을 막는 것 외에, 일부 실시예는 또한, 윈도우들이 부분적으로나 전면적으로 오프 스크린이 된(이를테면, 스크린 레이아웃을 포함하는 가시적 데스크탑 윈도우 밖에 있는) 결과로서 선택된 윈도우들의 가려짐을 방지한다. 예를 들어, 식별된 윈도우들 각각의 개별 이미지가 개별 메모리 버퍼에 저장되고, 합성 이미지를 생성하는 프로세스는 개별 메모리 버퍼들로부터 이미지들 각각을 리트리브하는 단계 및 리트리브된 이미지들을 합성 이미지로 합성하는 단계를 포함한다. 예를 들어, 일부 전형적 실시예들에서, 윈도우들 각각은 Microsoft® Windows®운영 체계 버전 2000 이상에서 사용할 수 있는 Microsoft Win32 애플리케이션 프로그래밍 인터페이스(API)로의 프로그램(programmatic) 호출(call)을 통해 각자의 메모리 버퍼에 스크린 데이터가 저장되는 계층화된 윈도우이다. 그러한 운영 체계는 WS_EX_LAYERED 윈도우 스타일 비트를 세팅함으로써 생겨나는 확장된 윈도우 스타일을 제공한다. 특정 윈도우와 연관된 WS_EX_LAYERED 스타일 비트는 (가령 CreateWindowEx API 호출을 통해) 윈도우 생성 시점에 공유 소프트웨어 프로세스에 의해 세팅되거나, (가령 GWL_EXSTYLE과 함께 SetWindowLong API 콜을 통해) 생성 시점 뒤에 통신 애플리케이션(26)에 의해 세팅될 수 있다. 어느 윈도우에 대해 WS_EX_LAYERED 윈도우 스타일 비트가 세팅될 때, 운영 체계는 그 윈도우의 드로잉을 오프 스크린 비트맵 및 버퍼로 재지정하고, 그러면 재지정된 윈도우가 합성 이미지를 생성하기 위해 통신 애플리케이션(26)에 의해 액세스될 수 있다. 비슷한 계층화된 윈도우 기능이 다른 운영 체계로부터도 입수 가능하다(가령, UNIX 기반 운영 체계 상의 X 윈도우).
합성 이미지가 생성된 후, 통신 애플리케이션(26)은 합성 이미지를 제 1 및 제 2 네트워크 노드들(12, 14) 중 뷰어 노드(즉, 제 1 및 제 2 네트워크 노드들 중 합성 이미지를 수신하는 노드)로 전송한다(도 2, 블록 504). 일부 실시예에서, 이 프로세스는 합성 이미지를 공유자 네트워크 노드 상에서 공유 콘텐트를 보도록 요청했던(또는 가입했던) 리모트 뷰어 네트워크 노드들 각각으로 전송하는 단계를 포함한다. 합성 이미지(및 후속 업데이트치들)는 공유자 네트워크 노드 및 뷰어 네트워크 노드 사이에 설정된 개별 실시간 데이터 스트림 접속을 통해 가입한 뷰어 네트워크 노드들로 전송된다.
도 3은 공유자 네트워크 노드로서 동작하는 제 1 네트워크 노드(12)의 디스플레이(508) 상의 스크린 레이아웃(506)에 대한 일 실시예를 보여준다. 스크린 레이아웃(506)은 제 1 윈도우(510), 자식 윈도우(514)의 부모에 해당하는 제 2 윈도우(512), 제 3 윈도우(516), 및 제 4 윈도우(518)를 포함한다. 제 1 윈도우(510), 제 2 윈도우(512) 및 그 자식 윈도우(514)는 제 1 소프트웨어 프로세스(가령, Microsoft® Word® 문서 프로세싱 소프트웨어 프로세스)의 개별 스레드들에 의해 생성되고, 제 3 윈도우는 제 2 소프트웨어 프로세스(가령, Microsoft® Excel® 스프레드시트 소프트웨어 프로세스)에 의해 생성되고, 제 4 윈도우(518)는 제 3 소프트웨어 프로세스(갸령, Microsoft® Outlook® 퍼스널 정보 매니저 소프트웨어 프로세스)에 의해 생성된다. 제 1 및 제 2 윈도우(510 및 512)는 그들 각자의 소프트웨어 프로세스 스레드들에 의해 생성(가령, Win메인 엔트리 포인트 기능에 의해 생성, 옵션으로서 Microsoft® Windows® 애플리케이션 환경에서 세팅된 WS_EX_LAYERED 비트를 가짐)되는 메인 윈도우들이다. Microsoft® Windows® 애플리케이션 환경에서, 자식 윈도우(514)의 모양은 통상적으로 그 부모 윈도우(512)에 의해 영향을 받는다. 예를 들어, 부모 윈도우(512)가 통상적으로 디스플레이(508) 상에 자식 윈도우(514)를 위치시키는데 사용되는 좌표 시스템을 규정한다. 또한, 일부 구현예에 있어서, 자식 윈도우(514)의 어떤 부분도 자신의 부모 윈도우(512)의 경계 밖에서 나타나지 않도록 자식 윈도우(514)가 클리핑될 수 있다.
도 4(a)는 제 1 애플리케이션 공유 예에 따라 뷰어 네트워크 노드로서 동작하는 제 2 네트워크 노드(14)의 디스플레이(522) 상의 제 1 스크린 레이아웃(520)의 실시예를 보여준다. 이 예에서, 제 1 네트워크 노드(12) 상의 통신자는 제 2 네트워크 노드(14)와 제 1 소프트웨어 프로세스(App1)의 윈도우들 전부를 공유하도록 선출된 공유자로서 동작하고 있다. 따라서, 스크린 레이아웃(520)은 제 1 네트워크 노드(14) 상에서 동작하는 제 1 소프트웨어 프로세스의 개별 스레드들에 의해 생성되는 제 1 윈도우(510), 제 2 윈도우(512) 및 자식 윈도우(514)를 보여주는 개별 구간들(526, 528, 및 530)을 포함하는 합성 이미지(524)로 이루어진다. 구간들(526, 528, 및 530)은 제 1 윈도우(510), 제 2 윈도우(512), 및 자식 윈도우(514)가 제 1 네트워크 노드(4) 상의 스크린 레이아웃(506)에서 정렬된 것과 같이 그 윈도우들을 보여준다. 구간들(526, 528, 및 530)은 또한 제 1 네트워크 노드(14) 상의 스크린 레이아웃(506)에 있는 어느 다른 윈도우들에 의한 가려짐이 없다. 예를 들어, 제 3 윈도우(516) 및 제 4 윈도우(518)(스크린 레이아웃(506) 내에서 밑에 있는 제 1 윈도우(510), 제 2 윈도우(512) 및 자식 윈도우(514)의 일부를 가렸음)가 합성 이미지(524)로부터 생략되고; 그 외에, 스크린 레이아웃(506)에서 가려진 제 1 윈도우(510), 제 2 윈도우(512) 및 자식 윈도우(514)의 일부가 합성 이미지(524) 내에서는 제 1 윈도우(510), 제 2 윈도우(512) 및 자식 윈도우(514)의 적절한 콘텐츠로 교체되었다.
도 4(b)는 제 2 애플리케이션 공유 예에 따라 뷰어 네트워크 노드로서 동작하는 제 2 네트워크 노드(14)의 디스플레이(522) 상의 스크린 레이아웃(532)에 대한 일 실시예를 보여준다. 이 예에서, 제 1 네트워크 노드(12) 상의 통신자는 제 1 소프트웨어 프로세스(App1)의 스레드들 중 오직 하나(즉, 제 2 윈도우(512) 및 그 자식 윈도우(514)를 생성할 책임을 가진 스레드)와 관련된 윈도우들 전부를 공유하도록 선출된 공유자로서 동작하고 있다. 따라서, 스크린 레이아웃(532)은 제 2 윈도우(512) 및 그 자식 윈도우(514)를 보이는 각자의 구간들(536 및 538)을 포함하는 합성 이미지로 이루어진다. 구간들(536 및 538)은 제 2 윈도우(5120 및 그 자식 윈도우(514)가 제 1 네트워크 노드(14) 상의 스크린 레이아웃(506)에서 정렬된 것과 같이 그 윈도우들을 보여준다. 구간들(536 및 538)은 또한 제 1 네트워크 노드(14) 상의 스크린 레이아웃(506)에 있는 어느 다른 윈도우들에 의한 가려짐이 없다. 예를 들어, 제 1 윈도우(510), 제 3 윈도우(516) 및 제 4 윈도우(518)가 합성 이미지(534)로부터 생략되고; 그 외에, 스크린 레이아웃(506)에서 가려진 제 2 윈도우(512) 및 그 자식 윈도우(514)의 일부는 합성 이미지(534)에서 제 2 윈도우(512) 및 그 자식 윈도우(514)의 적절한 콘텐츠로 교체되었다.
B. 애플리케이션 공유 실시예들
1. 서론
일부 실시예에서, 애플리케이션 공유는 공유자 네트워크 노드가 공유하도록 사용될 수 있는 한 개 이상의 애플리케이션이나 문서를 공개하고 적어도 한 뷰어가 공개되는 애플리케이션이나 문서 중 적어도 하나를 예약(청약)한 뒤에 시작된다. 일부 실시예에서, 공유자는 공유된 애플리케이션이나 문서를 가상 영역과 관련된 스크린 보기(viewscreen) 오브젝트로 공개할 수 있고, 뷰어는 가상 영역 내에서 스크린 보기 오브젝트를 활성화함으로써(가령, 사용자 입력 장치를 이용해 스크린 보기 오브젝트를 더블 클릭함으로써) 공유 콘텐트를 예약할 수 있다.
뷰어는 통상적으로 공유 콘텐트에 대한 두 유형의 액세스 중 한 가지를 허락받는다: 뷰어가 공유 콘텐트를 수동적으로만 보게 할 수 있는 보기 액세스; 및 뷰어가 공유 콘텐트를 보고, 제어하고, 편집하고 조작할 수 있게 하는 제어 액세스. 뷰어에게 허락되는 액세스의 유형은 공유자에 의해서나 공유가 일어나는 상황과 관련된 한 개 이상의 관리 규칙(가령, 이하의 섹션 IV에 기술된 것과 같은 가상 영역의 구간과 관련된 관리 규칙)에 의해 설정될 수 있다.
공유 콘텐트는 통상적으로, 공유된 애플리케이션이나 문서와 관련된 공유자의 디스플레이 상에서의 윈도우들의 스트리밍 비트맵들 형태로, 공유자 네트워크 노드로부터 뷰어 네트워크 노드로 스트리밍된다. 각 윈도우의 비트맵은 별개로 스트리밍되거나 이미 합성될 수 있다. 비트맵은 통상적으로 스트리밍되기 전에 압축된다. 뷰어가 보기 액세스만을 할 경우, 뷰어는 공유자의 디스플레이에서 공유된 윈도우들의 이미지를 수동적으로 볼 수만 있다. 뷰어가 제어 액세스를 하는 경우, 뷰어 네트워크 노드는 공유자 네트워크 노드에 있는 공유 콘텐트를 제어하고, 편집하고, 조작하기 위해 사용자 입력 장치(가령, 키보드, 컴퓨터 마우스, 터치 패드, 및 터치 스크린)에 의해 생성되는 원격 제어 명령을 공유자 네트워크 노드로 전송할 수 있다.
2. 애플리케이션 공유 서비스
일부 실시예에서, 통신 애플리케이션(26)의 애플리케이션 공유 기능은 애플리케이션 공유의 플랫폼 공유 부분을 구현하는 애플리케이션 공유 서비스를 위한 플러그인인 스크레이퍼(Scraper) 모듈에 의해 제공된다. 이 실시예는 공유 애플리케이션에 의해 생성된 모든 윈도우들이 예약한 네트워크 노드들과 자동으로 공유되는 애플리케이션 공유 모드를 구현한다. 이 섹션은 계층화된 윈도우 기능을 제공하는 Microsoft® Windows® 애플리케이션 환경에서 구현되는 스크레이퍼 모듈 및 애플리케이션 공유 서비스의 전형적 실시예를 설명한다.
a. 클래스
도 5는 애플리케이션 공유 클래스 모델의 일 실시예를 보여준다. 이 모델에서, 블록들(540, 542, 544, 546 및 548)은 애플리케이션 공유 서비스 및 스크레이퍼 모듈 사이의 인터페이스를 규정하고, 블록들(550, 552 및 554)은 스크레이퍼 모듈을 구현하는 클래스들이며, 블록들(556 및 558)은 인터페이스들을 이용하는 애플리케이션 공유 서비스 내 클래스들이다.
b. 메소드
(ⅰ) 메소드 시작 및 종료
애플리케이션 공유 서비스는 스크레이퍼 모듈 상의 어느 메소드를 호출하기 전에 시작 메소드를 호출하고, 셧다운 중에 애플리케이션 공유 서비스는 종료 메소드를 호출한다. 예시된 실시예에서, 시작 메소드가 호출되기 전과 종료 메소드가 호출된 후 아무 호출도 일어날 수 없다.
시작 메소드에서, 스크레이퍼 모듈은 WinEvents에 주의를 기울이는 스레드를 시작한다. 스크래퍼 모듈은 윈도우들과 메뉴들이 생성/파기되고 보여지고/감춰질 때 통지를 얻기 위해 WinEvents를 경청한다.
종료 메소드에서, 스크레이퍼 모듈은 모든 애플리케이션 모니터들을 멈추고 그런 다음 WinEvents를 경청하고 있는 스레드를 셧다운한다.
WinEvents 통지가 수신될 때, 스크레이퍼 모듈은 스레드 식별자(ID) 및 윈도우의 프로세스 ID를 얻는다. 그런 다음 스크레이퍼 모듈은 그 프로세스 ID를 통해 모니터를 찾고 그 애플리케이션 모니터에 이벤트를 통지한다. 윈도우가 파기되었다는 통지에 응하여, 스크레이퍼 모듈은 애플리케이션 모니터들 모두에 그 이벤트에 대해 통지하는데 이는 프로세스 및 스레드 ID가 사용될 수 없기 때문이다.
(ⅱ) get_sharable_application 메소드
도 6에 도시된 바와 같이, 애플리케이션 공유 서비스는 스크레이퍼 모듈에 공유될 수 있는 애플리케이션의 리스트를 제공하도록 요청할 수 있다. 그에 응답해, 스크레이퍼 모듈은 공유자 네트워크 노드의 디스플레이에서 제공되는 데스크탑의 최상부 중복 윈도우들의 ID 및 타이틀의 리스트를 생성한다. 예시된 실시예에서, 그 리스트는 현재 공유자 네트워크 노드 상에서 실행되고 있는 프로세스들로부터 생성된다. 다른 실시예에서는 그 리스트가 노드 상에서 "실행될 수 있는" 프로세스들을 포함하기도 한다. 이것은 예컨대 공유자가 공유하고 싶어할 수 있지만 현재는 실행되고 있지 않은 모든 Microsoft® Word®문서들이나, 공유자가 공유하고 싶어할 수 있으나 현재는 실행되고 있지 않은 다른 애플리케이션(가령, 계산기 애플리케이션)을 포함할 수도 있다.
(ⅲ) start_share_application 메소드
도 7을 참조하면, 애플리케이션 공유 서비스가 애플리케이션 공유를 시작할 때 스크레이퍼 모듈은 애플리케이션 윈도우들을 스크레이핑(scraping)할 책임을 질 애플리케이션 모니터의 인스턴스를 생성한다. 애플리케이션 모니터는 데스크탑 상의 모든 최상부 윈도우들을 열거한다. 애플리케이션 모니터는 그러한 열거 결과를 윈도우들의 초기 리스트로서 사용한다. 애플리케이션 모니터는 초기 리스트 내 어느 윈도우들이 공유되고 있는 애플리케이션에 속하는지를 판단한다. 그런 다음 애플리케이션 모니터는 스크레이퍼 스레드(scraper thread)를 생성(spawn)한다. 스크레이퍼 스레드는 애플리케이션 윈도우들의 콘텐트를 스크레이핑하고, 애플리케이션의 모든 윈도우들을 최종 비트맵으로 작성하며, 비트맵 프레임을 예약한 모든 네트워크 노드들로 보낼 책임을 진다.
(ⅳ) stop_share_application 메소드
도 8을 참조하면, 애플리케이션 공유 중지는 애플리케이션 모니터의 얌전한 중단을 다룬다. 이 프로세스에서, 애플리케이션 모니터는 스크레이핑 스레드를 셧 다운할 것이고, 이것은 더 이상의 샘플이 생성되지 않도록 확실히 한다. 그 다음, 예약한 네트워크 노드들로 그들이 예약 해지되었음을 통지한다. 애플리케이션 모니터에 대한 모든 레퍼런스들이 사라지면, 모니터가 소멸될 것이다.
(ⅴ) get_shared_applications 메소드
이 메소드는 공유되고 있는 애플리케이션들의 리스트로 리턴한다.
(ⅵ) 예약 메소드
도 9를 참조하면, 예약 메소드가 파라미터들로서 예약자에 대한 레퍼런스와 공유할 프로세스의 ID를 기대한다. 예약자는 도 5에 도시된 클래스 모델에 도시된 것과 같은 stream_subscriber_itf를 구현하는 클래스이다(도 5 참조). 스크레이퍼 모듈은 애플리케이션 ID를 통해 모니터를 찾고 모니터에 예약자를 추가한다. 다음에 애플리케이션 모니터가 프레임을 생성하면, 애플리케이션 모니터는 그 프레임을 그 예약자에게도 전달할 것이다.
(ⅶ) 예약해지 메소드
도 10을 참조하면, 예약 메소드가 파라미터들로서 예약자에 대한 레퍼런스와 공유할 프로세스의 ID를 기대한다. 이 메소드는 ID를 통해 공유 애플리케이션을 찾고, 그 공유 애플리케이션에 레퍼런스된 예약자를 제거하라고 말한다. 레퍼런스된 예약자를 제거했을 때, 애플리케이션 모니터는 예약자에게 상태 변화에 대해 통지할 것이다. 애플리케이션 모니터는 또한 공유된 프로세스 상태를 체크하고, 그 프로세스가 존재하면 애플리케이션 모니터는 모든 예약자들에게 상태 변화에 대해 통지하고, 그 모든 예약자들을 예약해지하고, 모니터할 것이 없기 때문에 자체적으로 종료될 것이다.
c. 윈도우 스크레이핑
각각의 애플리케이션 모니터는 주기적으로 깨어나서 윈도우 스크레이핑을 수행하는 스레드를 가진다.
도 11(a) 및 11(b)는 전형적인 윈도우 스크레이핑 방법의 일 실시예를 보여준다.
도 11(a) 및 11(b)의 방법에 따르면, 스크레이퍼 모듈이 공유된 소프트웨어 프로세스와 관련된 모든 윈도우들의 z 순서를 결정하고 그 z 순서에 따라 모든 윈도우들을 정렬시킨다(도 11(b), 블록 560).
스크레이퍼 모듈은 공유된 소프트웨어 프로세스와 관련된 모든 윈도우들을 포괄하는 바운딩 직사각형을 결정한다(도 11(b), 블록 562). 예를 들어, 도 12는 Microsoft® Word® 메인 윈도우(566) 및 Save As(다른 이름으로 저장) 다이얼로그 박스(568)를 포함하는 스크린 레이아웃(564)을 보여준다. 스크레이퍼 모듈은 어떤 오프 스크린 콘텐트(가령, 메인 윈도우(566)의 맨 아래에 해당하는 것으로 가시적 데스크탑 윈도우(572) 바깥에 있는 빗금친 영역(571))을 포함해, 두 윈도우들을 포괄하는 최소의 바운딩 박스인 직사각형(570)을 산출한다. 바운딩 직사각형(570)은 공유될 모든 윈도우들의 합성 비트맵의 사이즈를 규정한다.
공유된 소프트웨어 프로세스와 관련된 윈도우들 각각에 대해, 스크레이퍼 모듈은 스크레이프 함수를 호출한다(도 11(b), 블록 576). 윈도우가 계층화 윈도우가 아니면 (도 11(b), 블록 578), 스크레이프 함수는 GWL_EXSTYLE과 함께 SetWindowLong API 콜을 통해 그 윈도우와 관련된 WS_EX_LAYERED 비트를 세팅한다. 그런 다음 스크레이프 함수는 계층화된 윈도우를 스크레이핑한다(도 11(b), 블록 582). 이 프로세스에서, 스크레이퍼 모듈은 다른 윈도우들에 의해 가려지거나 가시적 데스크탑 윈도우 바깥에 있는(가령 도 12에 도시된 빗금 영역(571)) 부분들을 포함해 윈도우들의 이미지들을 리트리브하고, 리트리브된 이미지들을 합성 이미지 내에 그린다. 윈도우들은 z 순서에 따라 스크레이핑되므로, 최상부 윈도우는 최종 합성 이미지 내 모든 윈도우 이미지들의 최상부에 그려진다. 스크레이퍼 모듈이 바운딩 직사각형을 산정한 후, 스크레이퍼 모듈은 공유된 윈도우들의 스크린 이미지를 캡쳐한다. Microsoft® Windows® 애플리케이션 환경에서, 윈도우들 각각에 대해 스크레이퍼 모듈은 해당 윈도우를 위해 디스플레이 DC(device context)에 대한 핸들을 리트리브하는 GDI(graphics device interface)로의 GetDC() 함수를 콜 한다. 스크레이퍼 모듈은 각 윈도우의 반복적 캡쳐링을 수행한다. 이 프로세스에서, 공유되고 있는 각 윈도우에 대해 BitBlt()이 호출(콜)되고, 각 윈도우의 이미지 데이터가 스크린 디스플레이 내 윈도우들의 (x, y, 및 z 축에 있는) 상대적 위치에 따라 타깃 DC 내에서 중첩된다. BitBit 함수는 특정 소스 장치 컨텍스트로부터 목적지 장치 컨텍스트로 픽셀들의 블록에 해당하는 이미지 데이터의 비트-블록 전송을 수행한다. 스크린 이미지가 초기 합성 이미지를 구성한다. 반복적 BitBit() 요청의 수행은 원치않는 윈도우들로부터 스크린 데이터를 필터링하고, 그냥 합성되어 압축된 비트맵 대신 개별 윈도우 압축된 비트맵들이 전송될 수 있게 한다.
스크레이핑 프로세스를 완료한 후, 스크레이퍼 모듈은 합성 이미지의 장치 독립적 비트맵을 생성한다(도 11(b), 블록 584). 그리고 나서 스크레이퍼 모듈은 비트맵 바이트들로부터 샘플을 생성한다(도 11(b), 블록 586). 샘플은 캡쳐된 비트맵들의 시간적 시퀀스에서 어느 한 비트맵에 해당한다. 일부 실시예에서, 샘플은 현재의 합성 이미지에 해당한다. 현재의 샘플은 현 시점에 공유된 애플리케이션이 어떻게 디스플레이되는지를 묘사한다. 연속적 샘플은 뷰어에게 공유된 애플리케이션이 단지 이미지들의 시퀀스가 아닌 라이브(live) 애플리케이션이라는 직관을 제공한다. 샘플이 생성되면, 애플리케이션 공유 서비스는 모든 예약한 네트워크 노드들로 샘플을 하나씩 제공한다(도 11(b), 블록 588). 샘플들은 통상적으로, 마지막 샘플이 전송된 후 합성 이미지에 변화가 있었을 경우에만 예약한 네트워크 노드들로 전송된다. 샘플은 통상적으로 예약한 네트워크 노드들로 전송되기 전에 압축된다. 그런 다음 스크레이퍼 모듈은 다른 이미지를 스크레이핑할 다음 스케줄링 시점까지 슬립 상태로 들어간다(도 11(b), 블록 590). 애플리케이션 공유 서비스는 동시발생적으로(즉, 같은 시기, 예컨대 스크레이핑 사이클들 사이의 시간 중에) 예약한 각각의 원격 네트워크 노드들로 합성 이미지의 샘플을 전송한다.
도 13은 스크레이퍼 모듈이 공유된 소프트웨어 프로세스와 연관되는 윈도우들의 현 z 순서를 결정하게 하는 방법(도 11(b), 블록 560)의 일 실시예를 보여준다.
스크레이퍼 모듈은 공유된 소프트웨어 프로세스와 관련된 모든 최상위 레벨 윈도우들의 초기 리스트를 가지고 시작한다(도 13, 블록 600). 초기 리스트는 도 11(a) 및 11(b)에 도시된 스크레이핑 프러세스의 이전 반복 작업으로부터 얻어질 수 있다. 다른 대안으로서, 초기 리스트가 애플리케이션 환경을 조회함으로써 바로 얻어질 수도 있다. 예를 들어, 일부 실시예에서, 스크레이퍼 모듈은 Microsoft® Windows® 애플리케이션 환경에서 구현된다. 이 실시예들에서, 각각의 소프트웨어 프로세스 스레드는 RegisterClass 함수를 호출해 메인 윈도우의 윈도우 클래스를 등록하고 CreateWindowEx 함수를 호출해 메인 윈도우를 생성하는 Win메인이라 불리는 엔트리 포인트 함수를 가진다. 윈도우를 생성한 후, 생성 함수는 HWND 데이터 유형을 가지고 그 윈도우를 독특하게 식별하는 윈도우 핸들로 리턴한다; 윈도우 핸들은 그 윈도우에 소프트웨어 프로세스 액션들을 지정하는데 사용된다. 이 실시예들에서, 스크레이퍼 모듈은 데스크탑 위에 모든 윈도우들을 열거하고 그런 다음 GetWindowThreadProcessId를 호출해 그 윈도우가 속하는 프로세스를 조회하는 EnumWindows 함수를 호출해 공유된 소프트웨어 프로세스 스레드와 관련된 최상위 레벨 윈도우들 각각에 대한 핸들을 획득한다.
스크레이퍼 모듈은 공유된 소프트웨어 프로세스와 현재 관련된 모든 윈도우들의 z 순서를 결정한다(도 13, 블록 602). Microsoft® Windows® 애플리케이션 환경에서 구현될 때, 스크레이퍼 모듈은 각 자식 윈도우에 대한 핸들을 차례로 스크레이퍼 모듈의 callback 함수로 건넴으로써 데스크탑 윈도우에 속하는 자식 윈도우들을 z 순서로 열거하는 EnumChildWindows 함수를 호출함으로써 데스크탑 윈도우 상의 윈도우들 각각에 대한 핸들을 획득한다. 스크레이퍼 모듈은 데스크탑 상의 모든 윈도우들에 걸쳐 되풀이하여 반복 작업하고 공유된 소프트웨어 애플리케이션에 속하는 윈도우들을 식별한다. 이 프로세스에서, 스크레이퍼 모듈은 공유된 소프트웨어 애플리케이션의 최상위 레벨 윈도우들에 해당하는 데스크탑의 자식들을 식별한다. 매치되는 최상위 레벨 윈도우들 각각에 대해, 스크레이퍼 모듈은 매치하는 최상위 레벨 윈도우의 자식들에 걸쳐 되풀이하여 반복 작업하는 함수를 호출하고; 그 함수는 스스로를 반복적으로 호출한다.
스크레이퍼 모듈은 결정된 z 순서에 따라 소프트웨어 프로세스와 관련된 최상위 레벨 윈도우들의 초기 리스트를 소팅한다(도 13, 블록 604).
스크레이퍼 모듈은 소팅된 리스트에 포함되지 않은 최상위 레벨 윈도우들의 초기 리스트 내 윈도우들 중 어느 하나를 소팅된 리스트에 첨가한다(도 11, 블록 606). 이 단계는 누락되었을 수 있는 어떤 윈도우들(가령, 소팅 프로세스가 시작된 뒤로 삭제되었던 윈도우)을 커버하는데 이용된다.
스크레이퍼 모듈은 초기 리스트를 소팅된 최상위 레벨 윈도우들의 리스트로 교체한다(도 13, 블록 608).
d. 원격 액세스
뷰어가 보기 액세스만을 할 경우, 공유자 네트워크 상의 애플리케이션 공유 서비스는 뷰어 네트워크 노드들 중 예약한 노드들에게 공유된 윈도우 콘텐트의 합성 이미지들만을 (샘플들의 형식으로) 전송한다. 뷰어 네트워크 노드들 상의 뷰어들은 다만 수동적으로 공유자 디스플레이 상의 공유 윈도우들의 합성 이미지들을 볼 뿐이다.
한편 뷰어가 제어 액세스를 할 경우, 공유자 네트워크 상의 애플리케이션 공유 서비스는 뷰어 네트워크 노드들 중 예약한 노드들에게 공유된 윈도우 콘텐트의 합성 이미지들을 (샘플들의 형식으로) 전송한다. 그 외에, 스크레이퍼 모듈이 뷰어 네트워크 노드들로부터 수신된 명령들을 공유자 네트워크 노드 상의 공유자에 의해 생성된 명령들과 결합하고, 결합된 명령 집합을 공유된 애플리케이션으로 보낸다. 이것은 뷰어들이 공유자 네트워크 노드 상의 공유된 애플리케이션을 제어하고, 편집하고, 조작할 수 있게 한다. 명령들은 통상적으로 뷰어 및 공유자 네트워크 노드들 상에 있는 한 개 이상의 사용자 입력 장치들(가령, 키보드, 컴퓨터 마우스, 터치패드, 및 터치 스크린)에 의해 만들어진 이벤트로부터 도출된다.
도 14는 제 1 네트워크 노드(610)의 실시예(610)와 제 2 네트워크 노드(612)의 실시예(612)를 보여준다. 예시된 실시예에서, 제 1 네트워크 노드(610)("공유자 네트워크 노드(610)"라 칭함)는 제 2 네트워크 노드(612)("뷰어 네트워크 노드(612)"라 칭함)와, 공유된 프로세스(616)에 연관되는 윈도우 콘텐트(614)를 공유한다. 공유자 네트워크 노드(610)는 윈도우 콘텐트가 제공되는 디스플레이(618), 디스플레이 프로세스(620), 통신 애플리케이션(26)의 실시예(622), 및 네트워크 계층(624)을 포함한다. 마찬가지로, 뷰어 네트워크 노드(612)는 디스플레이(626), 디스플레이 프로세스(628), 통신 애플리케이션(26)의 실시예(6300 및 네트워크 계층(632)을 포함한다.
디스플레이 프로세스(620, 628)는 공유자 네트워크 노드(610) 및 뷰어 네트워크 노드(612)의 디스플레이 설비를 각각 제공한다. 디스플레이 설비는 공유자 및 뷰어 디스플레이(618, 626) 상의 시각적 콘텐츠 쓰기(writing)를 제어한다. 일부 실시예에서, 디스플레이 설비는 디스플레이(618, 626) 상에 시각적 콘텐트를 제공하기 위해 소프트웨어 프로세스에 의해 호출될 수 있는 함수를 제공하는 그래픽 장치 인터페이스(가령, Microsoft® Windows® 애플리케이션 환경에서 이용될 수 있는 GDI)를 포함한다.
네트워크 계층들(624, 632)는 공유자 네트워크 노드(610) 및 뷰어 네트워크 노드(612)의 네트워킹 설비를 각각 제공한다. 네트워크 설비는 예컨대 네트워크(18)를 통해 정보를 송수신하는 것과 관련된 프로세스를 수행하는 네트워킹 하드웨어 및 네트워킹 통신 프로토콜 스택들을 포함한다.
통신 애플리케이션들(622, 630)은 공유자 네트워크 노드(610) 및 뷰어 네트워크 노드(612)로 다양한 통신 설비(애플리케이션 공유 설비 포함)를 제공한다. 예시된 실시예에서, 공유자 네트워크 노드(610) 상의 통신 애플리케이션(622)은 공유자 디스플레이 상에서 공유된 윈도우 콘텐트(614)의 합성 이미지(634)를 생성하고, 그 합성 이미지(634)를 뷰어의 디스플레이(626) 상에 제공하기 위해 네트워크(18)를 통해 뷰어 네트워크 노드(612)로 전송하고 공유된 윈도우 콘텐트(614)에 대한 뷰어의 원격 제어 액세스를 허가한다. 뷰어 네트워크 노드(612) 상의 통신 애플리케이션(630)은 디스플레이(626) 상에서의 합성 이미지(634)의 제공을 제어하고, 사용자 입력을 명령으로 변환하며, 그 명령들을 공유자 네트워크 노드(610)로 전송한다.
도 15는 도 14에 도시된 애플리케이션 공유 상황에서 공유자 네트워크 노드(610)에 의해 구현되는 애플리케이션 공유 방법의 일 실시예를 보여준다.
도 15의 방법에 따르면, 공유자 네트워크 노드(610) 상의 통신 애플리케이션(26)은 공유된 소프트웨어 프로세스와 연관된 윈도우들의 합성 이미지를 캡처한다(도 15, 블록 637). 일부 실시예에서, 상술한 윈도우 스크레이핑 프로세스가 합성 이미지를 캡처하는데 사용된다. 통신 애플리케이션(622)이 합성 이미지를 뷰어 네트워크 노드로 전송한다(도 16, 블록 639). 이 프로세스에서, 통신 애플리케이션은 합성 이미지의 샘플을 네트워크 계층(624)으로 전달하고, 네트워크 계층(624)은 그 샘플을 네트워크 포맷으로 변환하고 변환된 샘플을 네트워크(18)를 통해 뷰어 네트워크 노드(612)로 전송한다.
통신 애플리케이션(622)은 공유자 네트워크 노드(610) 상에서 만들어진 로컬 입력 장치 이벤트로부터 도출되는 명령들을 수신한다(도 15, 블록 640). 동시에, 통신 애플리케이션(622)은 공유자 네트워크 노드(612) 상에서 만들어진 원격 입력 장치 이벤트로부터 도출되는 명령들을 수신한다(도 15, 블록 642). 이와 관련해, 명령들은 작업을 수행하라는 지령 또는 명령들로서, 상기 지령 또는 명령들은 한 개 이상의 입력 장치들에서의 사용자 액션(또는 입력)에 의해(가령, 컴퓨터 마우스의 한 개 이상의 버튼들이나 컴퓨터 키보드의 키들을 클릭함에 따라) 일어난 입력 장치 이벤트들에 대한 해석으로부터 도출된다. 컴퓨터 마우스, 터치 패드, 및 터치 스크린 이벤트 같은 어떤 포인터 입력 장치 이벤트는 디스플레이 상에서 제공되는 그래픽 사용자 인터페이스 내 포인터(또는 커서)의 위치와 연관된다. 이러한 종류의 입력 장치 이벤트는 통상적으로, 입력 유형(가령, 왼쪽 클릭, 오른쪽 클릭, 왼쪽 버튼 더블 클릭, 스크롤 휠 등)을 나타내는 입력 종류 파라미터 값 및, 입력이 상황 종속적 좌표계를 기준으로 어디에서 입력되었는지를 나타내는 위치 파라미터 값 둘 모두를 포함하는 명령으로 변환된다.
공유자 및 뷰어 네트워크 노드(610, 612) 상의 운영 체계가 통상적으로 포인터 입력 장치 이벤트를 사용자 명령으로 변환하고, 이때 위치 파라미터 값들은 그래픽 사용자 인터페이스의 메인 윈도우(가령, Microsoft® Windows® 애플리케이션 환경의 데스크탑 윈도우)의 좌표계를 기준으로 규정된다. 통신 애플리케이션(622)에 의해 수신되는 공유자의 입력 명령(도 15, 블록 640)은 운영 체계 생성 사용자 명령이고; 이 명령은 또한 공유자 네트워크 노드(610) 상의 사용자 모드 소프트웨어 프로세스(가령, 공유된 프로세스(616))의 동작을 제어하는데 사용된다. 한편, 통신 애플리케이션(622)에 의해 수신되는 뷰어의 입력 명령(도 15, 블록 642)은 통상적으로 운영 체계 생성 사용자 명령의 변형이다. 특히, 뷰어 명령을 공유자 네트워크 노드(610)로 전송하기 전에, 뷰어 네트워크 노드(612) 상의 통신 애플리케이션(630)은 운영 체계 생성 명령 내 위치 파라미터 값들을 디스플레이(626) 상의 그래픽 사용자 인터페이스의 메인 윈도우의 좌표계로부터 합성 이미지(634)의 좌표계로 재매핑한다. 예를 들어, 예시된 실시예에서 위치 파라미터 값들은 합성 이미지(634)의 좌상부 코너에 원점(0,0)을 가지고 합성 이미지(634)의 하단 및 좌측 가장자리를 따라 뻗는 x 및 y 축을 가진 좌표계로 재매핑된다.
통신 애플리케이션(622)은 수신된 명령을 명령 시퀀스로 프로세싱한다(도 15, 블록 644). 이 프로세스에서, 통신 애플리케이션(622)은 통상적으로 뷰어의 명령 내 위치 파라미터 값들을 합성 이미지(634)의 좌표계로부터 디스플레이(618) 상의 그래픽 유저 인터페이스의 메인 윈도우의 좌표계로 재매핑한다. 그런 다음 통신 애플리케이션은 수신된 명령들을 수신된 시간 순서로 시퀀스 내에 배열하고, 그에 따른 명령 시퀀스를 메모리 버퍼 내에 저장한다.
통신 애플리케이션(622)은 명령 시퀀스를 공유된 프로세스(616)로 전달한다(도 15, 블록 646). 이 프로세스에서, 각 명령에 대해 통신 애플리케이션은 통상적으로, 윈도우들이 명령을 보낼 어떤 윈도우를 특정하게 할 수 있는 Win32 API 함수를 유발한다.
공유된 프로세스(616)는 수신된 명령 시퀀스에 따라 공유자 디스플레이(618) 상에서 공유된 소프트웨어 프로세스(616)와 연관된 윈도우들을 제공하기 위해 디스플레이 프로세스(620)에 의해 제공되는 한 개 이상의 그래픽 장치 인터페이스 함수들을 호출한다(도 15, 블록 648).
상기 프로세스(도 15, 블록 640-652)는 특정된 업데이트 스케줄에 따라 반복된다.
Ⅳ. 전형적 동작 환경
A. 시스템 아키텍쳐
1. 서론
도 16은 네트워크(18)에 의해 서로 연결되는 제 1 네트워크 노드(12)("제 1 클라이언트 네트워크 노드"라 칭함), 제 2 네트워크 노드(14)("제 2 클라이언트 네트워크 노드"라 칭함), 및 가상 환경 생성자(16)를 포함하는 전형적인 네트워크 통신 환경(100의 일 실시예를 보여준다. 제 1 클라이언트 네트워크 노드(12) 및 제 2 클라이언트 네트워크 노드(14)는 도 1과 관련해 위에서 기술한 것과 같이 구성된다. 가상 환경 생성자(16)는 네트워크 인프라 서비스 환경(30)을 제공하는 적어도 한 개의 서버 네트워크 노드(28)를 포함한다. 통신 애플리케이션(26) 및 네트워크 인프라 서비스 환경(30)은 함께 공간적 가상 통신 환경(여기서는 간단히 "가상 환경"이라고도 칭함)을 생성하기 위한 플랫폼(여기서는 "the platform"이라 칭함)을 제공한다.
일부 실시예에서, 네트워크 인프라 서비스 환경(30)은 가상 영역 애플리케이션(34)에 따라 가상 영역(32) 내 제 1 및 제 2 클라이언트 노드들(12, 14)의 세션을 관리한다. 가상 영역 애플리케이션(34)은 가상 영역(32)에 의해 주재되고 가상 영역(32)에 대한 내용을 포함한다. 제 1 및 제 2 클라이언트 네트워크 노드들(12, 14) 상에서 동작하는 통신 애플리케이션(26)은 네트워크 인프라 서비스 환경(30)으로부터 수신된 데이터에 따라 가상 환경(32)의 개별 보기들을 제공하고, 통신자들로부터 명령을 수신하기 위해 개별 인터페이스들을 제공한다. 통신자들은 통상적으로 가상 영역(32) 내에서, 각자의 네트워크 노드들에서 통신자들에 의해 입력된 명령들에 응답하여 가상 영역(32)을 돌아다니는 각자의 아바타들로 표현된다. 각각의 통신자의 가상 영역(32) 보기는 통상적으로 통신자의 아바타 관점에서 제공되며, 이것은 통신자에 의해 경험되는 몰입 수준을 높인다. 각각의 통신자는 통상적으로 자신의 아바타 주변 가상 영역(32)의 어느 부분을 볼 수 있다. 일부 실시예에서, 통신 애플리케이션(26)은 제 1 및 제 2 클라이언트 네트워크 노드들(12, 14) 및 가상 영역(32)에서 통신자의 아바타 위치에 기반하여 가상 영역(32)을 공유하는 다른 네트워크 노드들 사이에 실시간 데이터 스트림 접속을 설정한다.
네트워크 인프라 서비스 환경(30) 역시 통신자들 사이의 상호교류에 대한 레코드들(38)을 포함하는 관계 데이터베이스를 관리한다. 각각의 상호교류 레코드(38)는 한쌍의 통신자들 간 상호교류 상황을 기술한다.
2. 네트워크 환경
네트워크(18)는 LAN(local area network), MAN(metropolitan area network), 및 WAN(wide area network)(가령, 인터넷) 중 어느 하나를 포함할 수 있다. 네트워크(18)는 통상적으로, 네트워크 노드들 사이에서 광범위한 각종 미디어 타입(가령, 텍스트, 음성, 오디오, 및 비디오)의 전송을 지원하는 다양한 여러 컴퓨팅 플랫폼 및 전송 설비를 포함한다.
통신 애플리케이션(26)(도 13 참조)은 통상적으로 소프트웨어 및 하드웨어 자원들을 포함하는 클라이언트 네트워크 노드 상에서 동작되고, 소프트웨어 및 하드웨어 자원들은 관리 정책, 사용자 선호사항(사용자의 존재 이출(exportation) 및 영역들과 다른 사용자들에 대한 사용자의 접속에 관한 선호사항 포함), 및 기타 설정사항들과 함께, 다른 네트워크 노드들과의 실시간 접속 관리에 영향을 미치는 국지적 구성을 규정한다. 네트워크 노드들 간 네트워크 접속은 피어-투-피어(peer-to-peer) 아키텍처, 서버-중개형 아키텍처, 및 피어-투-피어 및 서버-중개형 아키텍처를 결합한 하이브리드 아키텍처를 포함해 다양한 각종 스트림 핸들링 토폴로지들을 통해 정해질 수 있다. 이러한 종류의 전형적 토폴로지들이 모두 2007년 10월 24일자로 출원된 미국 출원 번호 11/923,629 및 11/923,634에 설명되어 있다.
3. 네트워크 인프라 서비스
네트워크 인프라 서비스 환경(30)은 통상적으로, 클라이언트 노드들(12, 14) 및 다른 네트워크 노드들 상이에서 네트워크 접속을 설정 및 관리하는 프로세스 중에 통신 애플리케이션(26)과 협력하는 한 개 이상의 네트워크 인프라 서비스를 포함한다(도 13 참조). 네트워크 인프라 서비스는 하나의 네트워크 노드 상에서 실행되거나, 여러 네트워크 노드들에 걸쳐 분산될 수 있다. 네트워크 인프라 서비스는 통상적으로, 한 개 이상의 전용 네트워크 노드(가령, 라우팅 및 스위칭 같은 한 개 이상의 에지(edge) 서비스를 수행하는 서버 컴퓨터나 네트워크 장치) 상에서 실행된다. 일부 실시예에서는 그러나 네트워크 인프라 서비스들 중 한 개 이상이 통신자들의 네트워크 노드들 중 적어도 한 노드 상에서 실행된다. 네트워크 인프라 서비스 환경(30)의 전형적 실시예에 포함되는 네트워크 인프라 서비스들 가운데에는 계정(account) 서비스, 보안 서비스, 영역 서비스, 랑데부 서비스, 및 상호교류(interaction) 서비스가 있다.
계정 서비스
계정 서비스는 가상 환경의 통신자 계정들을 관리한다. 계정 서비스는 또한 네트워크 인프라 서비스들 중 어느 하나에 대해 클라이언트 노드들 스스로를 증명하도록 클라이언트 노드들에 의해 사용될 수 있는 증명 토큰의 생성 및 발급을 관리한다.
보안 서비스
보안 서비스는 가상 환경의 자산 및 기타 자원에 대한 통신자의 액세스를 통제한다. 보안 서비스에 의해 구현되는 액세스 통제 방법은 통상적으로 사양들 중 하나 이상(적합한 사양을 가지거나 허락을 얻은 개체들에 대해 액세스가 허락됨) 및 액세스 통제 리스트(리스트 상에 있는 아이디를 가진 개체들에 대해 액세스가 허락됨)에 기반한다. 특정 통신자가 어떤 자원에 대한 액세스를 허락받은 후, 그 통신자는 통상적으로 네트워크 통신 환경(10) 내에서 상호작용할 다른 네트워크 인프라 서비스들에 의해 제공되는 기능을 사용한다.
영역 서비스
영역 서비스는 가상 영역들을 관리한다. 일부 실시예에서, 영역 서비스는 일련의 구속요건(47) 하에 놓인 가상 영역 애플리케이션(34)에 따라 제 1 및 제 2 클라이언트 네트워크 노드(12, 14) 상에서 동작하는 통신 애플리케이션(26)을 원격으로 구성한다(도 13 참조). 구속요건(47)은 통상적으로 가상 영역 액세스에 관한 통제를 포함한다. 액세스 통제는 통상적으로 사양들 중 하나 이상(적합한 사양을 가지거나 허락을 받은 통신자나 클라이언트 노드에 액세스가 허가됨) 및 액세스 통제 리스트(리스트 상에 있는 아이디를 가진 통신자나 클라이언트 노드에게 액세스가 허락됨)에 기반한다.
영역 서비스는 또한 요구한 개체들의 사양을 조건으로 하는 가상 영역과 연관되는 네트워크 접속들을 관리하고, 가상 영역에 대한 글로벌 상태 정보를 보유하며, 가상 영역(32)에 의해 규정된 상황에서 공유된 통신 세션에 참여하는 클라이언트 네트워크 노드들을 위한 데이터 서버로서 기능 한다. 글로벌 상태 정보는 가상 영역에 있는 모든 오브젝트들 및 그들 각자의 가상 영역 내 위치들에 대한 리스트를 포함한다. 영역 서비스가 클라이언트 네트워크 노드들을 구성하는 명령을 보낸다. 영역 서비스는 또한, 통신 세션에 참여하라고 요청한 다른 클라이언트 네트워크 노드들로 초기화 정보를 등록 및 전송한다. 이 프로세스에서, 영역 서비스는 참여한 각각의 클라이언트 네트워크 노드들로, 가상 영역 애플리케이션(34)에 따라 클라이언트 네트워크 노드 상에서 가상 영역(32)을 렌더링해야 하는 컴포넌트들(가령, 플러그인들)의 리스트를 전송할 수 있다. 영역 서비스는 또한, 통신 오류 발생시 클라이언트 네트워크 노드들이 글로벌 상태에 동기될 수 있도록 보장한다. 영역 서비스는 통상적으로 가상 영역과 연관된 통제 법칙을 통해 가상 영역과의 통신자 상호교류를 관리한다.
랑데부 서비스
랑데부 서비스는 존재(presence) 정보의 수집, 저장 및 배포를 관리하고, 요청한 개체들의 사양을 조건으로 네트워크 노드들이 서로 통신하게 하는(가령, 접속 핸들 배포를 관리함으로써) 메커니즘을 제공한다. 랑데부 서비스는 통상적으로, 존재 데이터베이스 내에 존재 정보를 저장한다. 랑데부 서비스는 통상적으로 통신자 프라이버시 선호사항을 통해 서로와의 통신자 상호교류를 관리한다.
상호교류 서비스
상호교류 서비스는 통신자들 사이의 상호교류에 대한 레코드들(38)을 포함하는 관계 데이터베이스(36)를 관리한다. 통신자들 사이의 모든 상호교류에 있어서, 네트워크 인프라 서비스 환경(30)의 하나 이상의 서비스들(가령, 영역 서비스)이 상호교류 서비스로 상호교류 데이터를 전송한다. 그에 응하여, 상호교류 서비스는 한 개 이상의 개별 상호교류 레코드를 생성하고 그들을 관계 데이터베이스 내에 저장한다. 각각의 상호교류 레코드는 통신자 한 쌍 간 상호교류 상황을 기술한다. 예를 들어, 일부 실시예에서 상호교류 레코드는 통신자들 각각의 식별자, 상호교류 장소의 식별자(가령, 가상 영역 인스턴스), 상호교류 장소의 계층구조 서술(가령, 상호교류 장소가 보다 넓은 영역과 어떤 관계가 있는지에 대한 서술), 상호교류의 시작 및 종료시간, 및 상호교류 중에 공유되거나 기록되는 모든 파일들 및 다른 데이터 스트림들의 리스트를 포함한다. 따라서, 각각의 실시간 상호교류에 있어서, 상호교류 서비스는 그것이 언제 일어났는지, 어디서 일어났는지, 개입된 통신자들과 관련해 상호교류 중에 무슨 일이 일어났는지(가령, 입장 및 퇴장), 활성화/활성화 해제된 오브젝트들, 및 공유되었던 파일들을 추적한다.
상호교류 서비스는 또한 요청한 개체들의 사양을 전제로 관계 데이터베이스(36)에 대한 조회를 지원한다. 상호교류 서비스는 상호교류 데이터베이스 레코드들에 대한 조회 결과를 가상 영역에 기반하는 소팅 순서로(가령, 가장 빈번하거나 가장 최근의 것 순서로) 제공한다. 조회 결과는 통신자가 어떤 가상 영역에서 만났던 접촉자들의 빈도 유형뿐 아니라 가상 영역과 무관하게 통신자가 만났던 이들의 유형 및 통신자가 가장 자주 빈번히 다닌 가상 영역의 유형을 끌어내는 데 사용될 수 있다. 조회 결과는 또한, 관계에 기반해 소정 작업을 자동화하는 휴리스틱(heuristic) 시스템의 일부로서 애플리케이션 개발자들에 의해 사용될 수도 있다. 이런 종류의 휴리스틱의 예가 다섯 번 넘게 특정 가상 영역을 방문했던 통신자들에게 디폴트로 노크 없이 입장을 허락하는 휴리스틱, 또는 특정 시간에 어떤 영역에 있었던 통신자들에게 같은 시간 같은 영역에 있었던 다른 통신자가 만든 파일을 수정 및 삭제할 수 있게 허락하는 휴리스틱이다. 관계 데이터베이스(36)에 대한 조회결과가 다른 검색결과와 결합될 수 있다. 예를 들어, 관계 데이터베이스에 대한 조회결과는 네트워크 인프라 서비스 환경(30)의 도메인 밖에 있는 통신 시스템(가령, 스카이프(Skype), 페이스북, 및 플리커(Flicker))을 이용해 접촉자들과 상호교류하기 위해 생성된 접촉 히스토리 데이터에 대한 조회결과와 결합될 수 있다.
4. 가상 영역
통신 애플리케이션(26) 및 네트워크 인프라 서비스 환경(30)은 통상적으로 가상 영역의 인스턴스에 의해 규정되는 통신 상황에서 네트워크 노드들과의 실시간 접속을 관리한다. 가상 영역 인스턴스는 추상 좌표와 관련하여 규정되는 추상적(비 기하학적) 가상 공간에 해당할 수 있다. 다른 대안으로서, 가상 영역 인스턴스는 특정 시각화와 관련된 일차원, 이차원, 또는 삼차원 기하학적 좌표를 이용해 규정된 시각적 가상 공간에 해당할 수도 있다. 추상적 가상 영역은 개개의 심상과 관련될 수도 관련되지 않을 수도 있으나, 시각적 가상 영역은 개개의 심상과 관련된다.
상술한 바와 같이, 통신자는 통상적으로, 관련 심상을 가지는 가상 영역 내에서 개별 아바타로 표현된다. 아바타는 통신자의 개별 네트워크 노드에서 통신자에 의해 입력된 명령에 따라 가상 영역을 돌아다닌다. 일부 실시예에서, 가상 영역 인스턴스에 대한 통신자의 보기는 통상적으로 통신자 아바타의 시각에서 제공되며, 각각의 통신자는 통상적으로 자신의 아바타 주변의 시각적 가상 영역의 어느 일부를 볼 수 있어, 통신자에 의해 경험하는 몰입 수준이 높아질 수 있다.
도 17은 컴퓨터 시스템(48)에 의해 구현되는 전형적 네트워크 노드의 일 실시예를 보여준다. 컴퓨터 시스템(48)은 디스플레이 모니터(50), 컴퓨터 마우스(52), 키보드(54), 스피커(56, 58) 및 마이크로폰(60)을 포함한다. 디스플레이 모니터(50)는 그래픽 사용자 인터페이스(62)를 디스플레이한다. 그래픽 사용자 인터페이스(62)는 여러 윈도우, 아이콘, 및 포인터(64)를 포함할 수 있는 윈도우 기반 그래픽 사용자 인터페이스이다. 예시된 실시예에서, 그래픽 사용자 인터페이스(62)는 미술관을 나타내는 삼차원 심상과 관련된 공유된 가상 영역(66)의 이차원적 묘사를 제공한다. 통신자들은 가상 영역(66) 내에서 각자의 아바타들(68, 70, 72)로 표현되며, 그 아바타들 각각은 가상 영역(66) 환경 하에서 각자의 역할(가령, 큐레이터, 화가, 및 방문자)을 가질 수 있다.
이하에 설명되는 바와 같이, 가상 영역(66)은 가상 영역(66) 내에서 아바타(68-72)로 표현되는 네트워크 노드들 사이에서 실시간 데이터 스트림의 스위칭을 관리하는 각자의 규칙과 결부된 구역(74, 76, 78)을 포함한다. (통상적인 통신 세션 중에, 도 16의 구역(74-82)을 분리하는 점선은 통신자들에게 보여지지 않지만 그러한 구역 경계와 관련된 시각적 암시(que)가 있을 수 있다.) 스위칭 규칙은 네트워크 노드들 각각에서 실행되는 로컬 접속 프로세스들이 어떻게 가상 영역(66)의 구역들(74-84)에 있는 통신자들의 아바타(68-72) 위치에 기반하여 다른 네트워크 노드들과 통신을 설정할지를 지시한다.
가상 영역은 스위칭 규칙 및 관리 규칙을 포함하는 하나 이상의 규칙들 및 가상 영역의 기하학적 요소들에 대한 서술을 포함하는 사양에 의해 규정된다. 스위칭 규칙은 네트워크 노드들 사이의 실시간 스트림 접속을 관리한다. 관리 규칙은 가상 영역 자체와 같은 자원들, 가상 영역의 경계, 및 가상 영역 내 오브젝트들에 대한 통신자들의 액세스를 통제한다. 일부 실시예에서, 가상 영역의 기하학적 요소들은 COLLADA-Digital Asset Schema Release 1.4.1 2006년 4월 사양(http://www.khronos.org/collada/에서 입수 가능)에 따라 기술되고, 스위칭 규칙은 여기서 미국 출원 제11/923,629호 및 제11/923,634호에 기술된 COLLADA Streams Reference 사양에 따른 확장형 마크업 언어(XML) 텍스트 포맷(여기서는 가상 공간 기술 포맷(VSDL, virtual space description format)이라 칭함)을 이용해 기술된다.
가상 영역의 기하학적 요소들은 통상적으로 가상 영역의 물리적 기하구조 및 충돌 기하구조를 포함한다. 물리적 기하구조는 가상 영역의 모양을 나타낸다. 물리적 기하구조는 통상적으로 삼각형, 사변형, 또는 다각형의 표면들로부터 형성된다. 컬러 및 텍스쳐가 물리적 기하구조 위에 매핑되어 가상 영역에 대해 보다 사실적인 외형을 만든다. 예를 들어 시각적 기하구조에 빛을 입히고 텍스쳐, 컬러, 또는 빛 가까이에서 강도를 수정함으로써, 빛의 효과가 제공될 수 있다. 충돌 기하구조는 오브젝트들이 가상 영역에서 이동할 수 있는 방식들을 결정하는 보이지 않는 표면들을 나타낸다. 충돌 기하구조는 시각적 기하구조와 동시에 일어나거나, 시각적 기하구조에 대한 보다 간단한 근접에 해당하거나, 가상 영역 설계자의 애플리케이션 고유의 필요조건과 관련이 있을 수 있다.
스위칭 규칙들은 통상적으로 가상 영역 내 위치들과 관련해 실시간 데이터 스트림의 소스와 싱크 연결 조건에 대한 내용을 포함한다. 각각의 규칙은 통상적으로 규칙이 적용되는 실시간 데이터 스트림 종류를 규정하는 속성들 및 규칙이 적용되는 가상 영역 내 위치나 위치들을 포함한다. 일부 실시예에서, 규칙들 각각은 선택사항으로서, 요구되는 소스의 역할, 요구되는 싱크의 역할, 스트림의 우선 수준, 및 요청되는 스트림 핸들링 토폴로지를 특정하는 한 개 이상의 속성을 포함할 수 있다. 일부 실시예에서 가상 영역의 특정 부분에 대해 아무런 명시적 스위칭 규칙도 존재하지 않는다면, 그 가상 영역의 부분에는 하나 이상의 내재적, 혹은 디폴트 스위칭 규칙이 적용될 수 있다. 하나의 전형적인 디폴트 스위칭 규칙과 정책 규칙에 따라 영역 내에서 모든 소스를 모든 호환가능한 싱크에 연결하는 규칙이다. 정책 규칙은 클라이언트 노드들 사이의 모든 접속에 광범위하게 적용되거나 개개 클라이언트 노드들과의 개별 접속들로만 적용될 수 있다. 정책 규칙의 예가 가상 영역에서 서로 규정된 거리(또는 반경) 내에 있는 개별 오브젝트들과 관련된 호환가능한 싱크들과 소스들의 연결만을 허용하는 근접성 정책 규칙이다.
일부 실시예에서, 관리 규칙은 누가 가상 영역에 액세스할 수 있고, 누가 그 콘텐츠에 액세스할 수 있고, 가상 영역의 콘텐츠에 대한 액세스 범위는 어디까지이며(가령, 사용자가 콘텐츠로 무엇을 할 수 있는지), 그 콘텐츠를 액세스한 후속 결과는 무엇인지(가령, 회계 기록 같은 레코드 기록, 및 지불 요건)를 제어할 가상 영역과 관련된다. 일부 실시예에서, 전체 가상 영역이나 가상 영역의 한 구간이 "통제망(governance mesh)"과 관련된다. 일부 실시예에서 통제망은 미국 특허 출원 제11/923,629호 및 제11/923,634호에 기술된 구간 망의 구현과 유사한 방식으로 구현된다. 통제망은 소프트웨어 애플리케이션 개발자가 가상 영역이나 가상 영역의 어느 구간에 관리 규칙을 결부시킬 수 있게 한다. 이것은 가상 영역 내 모든 파일에 대해 개별적 허가가 이뤄져야 할 필요성을 없애고, 동일한 문서를 상황에 따라 다르게 처리해야 할 필요성이 있을 때 잠정적으로 일어날 수 있는 복잡함을 다룰 필요성을 피하게 한다.
일부 실시예에서, 가상 영역은 가상 영역의 하나 이상의 구간들을 디지털 콘텐츠 권리 관리(DRM) 기능과 관련시키는 통제망과 연관된다. DRM 기능은 하나 이상의 가상 영역이나 가상 영역의 하나 이상의 구간들 또는 가상 영역 내 오브젝트들에 대한 액세스를 통제한다. DRM 기능은 통신자가 가상 영역 내 통제망 경계를 넘나들 때마다 유발된다. DRM 기능은 그러한 유발 행위가 허용되는지 여부를 판단하고, 허용되는 경우, 허용 행위의 범위는 어디까지인지, 지불이 필요한지 여부, 그리고 회계 레코드가 만들어져야 하는지 여부를 결정한다. 전형적인 가상 영역의 구현에 있어서, 관련된 통제망은 통신자가 가상 영역으로 들어갈 수 있다면 그가 문서를 조작하고, 문서를 보고, 문서를 다운로드 하고, 문서를 삭제하고, 문서를 수정하고 문서를 재업로드 하는 일을 포함해, 가상 영역과 관련된 모든 문서들에 대한 행위를 수행할 수 있도록 구성된다. 이런 방식으로 가상 영역은 가상 영역에 의해 규정된 상황에서 공유 및 논의되었던 정보의 저장소가 될 수 있다.
가상 영역의 사양에 관한 추가적 세부내용은 미국 출원 제61/042714호(2008년 4월 4일 출원됨), 제11/923,629호(2007년 10월 24일 출원되었음), 및 제11/923,634호(2007년 10월 24일 출원되었음)에 기술되어 있다.
5. 통신 애플리케이션
일부 실시예에서 통신 애플리케이션(26)은 다음과 같은 것을 포함한다:
a. 로컬 휴먼 인터페이스 장치들(HIDs, human interface devices) 및 오디오 재생 장치들;
b. So3D 그래픽 디스플레이, 아바타, 및 물리 엔진;
c. 시스템 데이터베이스 및 저장 설비
a. 로컬 휴먼 인터페이스 장치들(HIDs) 및 오디오 재생 기기들
로컬 HID들은 통신자가 가상 영역 통신 세션에 참여하면서 클라이언트 노드로 명령 및 기타 신호를 입력할 수 있게 한다. 전형적인 HID들로는 컴퓨터 키보드, 컴퓨터 마우스, 터치 스크린 디스플레이, 및 마이크로폰이 포함된다.
오디오 재생 장치들은 통신자가 가상 영역 통신 세션 중에 수신된 오디오 신호를 재생할 수 있게 한다. 전형적인 오디오 재생 장치들에는 오디오 신호를 다루는 오디오 프로세싱 하드웨어(가령, 사운드 카드), 및 사운드를 출력하는 스피커가 포함된다.
b. So3D 그래픽 디스플레이, 아바타, 및 물리 엔진
So3D 엔진은 디스플레이 모니터상에서 가상 영역 및 가상 영역 내 오브젝트들에 대한 개별 보기의 제공을 제어하는 삼차원 심상 엔진이다. So3D 엔진은 통상적으로 그래픽 사용자 인터페이스 드라이버 및 HID 장치들과 인터페이스하여 가상 영역에 대한 보기를 제공하고 통신자가 통신 애플리케이션(26)의 동작을 제어할 수 있도록 한다.
일부 실시예에서 So3D 엔진은 영역 서비스로부터 그래픽 렌더링 명령을 수신한다. So3D 엔진은 또한, 가상 영역에서 통신자의 아바타를 렌더링하는데 필요한 이미지를 포함하는 로컬 통신자 아바타 데이터베이스를 판독할 수 있다. 그 정보에 기반해, So3D 엔진은 가상 영역 내 통신자의 아바타 시점(위치 및 방위)에서 가상 영역 및 가상 영역의 오브젝트들에 대한 시각적 표현(즉, 이미지)을 생성한다. 그 시각적 표현은 통상적으로, 클라이언트 네트워크 노드 상에서 가상 영역의 시각적 표현을 렌더링하도록 그래픽 렌더링 하드웨어를 구동하는 운영 체계의 그래픽 렌더링 컴포넌트들로 보내진다.
통신자는 HID 장치(가령, 컴퓨터 마우스)를 통해 보기 제어 명령을 입력함으로써 제공된 가상 영역의 보기를 제어할 수 있다. So3D 엔진은 보기 제어 명령에 따라 가상 영역의 보기를 업데이트한다. So3D 엔진은 또한 영역 서비스(26)로부터 수신된 업데이트된 오브젝트 위치 정보에 따라 디스플레이 모니터상의 가상 영역에 대한 그래픽 표현을 업데이트한다.
c. 시스템 데이터베이스 및 저장 설비
시스템 데이터베이스 및 저장 설비는 플랫폼에 의해 사용되는 다양한 종류의 정보를 저장한다. 저장 설비에 의해 통상적으로 저장되는 전형적인 정보로는 참가(presence) 데이터베이스, 관계 데이터베이스, 아바타 데이터베이스, 실제 사용자 id(RUID, real user id), 아트 캐시(art cache) 데이터베이스, 및 영역 애플리케이션 데이터베이스가 포함된다. 이 정보는 하나의 네트워크 노드에 저장되거나 여러 네트워크 노드에 걸쳐 분산될 수 있다.
6. 클라이언트 노드 아키텍처
통신자는 통상적으로 클라이언트 네트워크 노드로부터 네트워크(18)에 연결된다. 클라이언트 네트워크 노드는 통상적으로 범용 컴퓨터 시스템이나 전용 통신 컴퓨터 시스템(또는 네트워킹 가능 비디오 게임 콘솔 같은 "콘솔")에 의해 구현된다. 클라이언트 네트워크 노드는 다른 네트워크 노드들과 실시간 데이터 스트림 접속을 설정하는 통신 프로세스를 실행하고, 통상적으로 통신자가 입장한 각각의 가상 영역에 대한 보기를 제공하는 심상 렌더링 프로세스를 실행한다.
도 18은 컴퓨터 시스템(120)에 의해 구현되는 클라이언트 네트워크 노드의 일 실시예를 보여준다. 컴퓨터 시스템(120)은 프로세싱 유닛(122), 시스템 메모리(124) 및 프로세싱 유닛(122)을 컴퓨터 시스템(120)의 다양한 구성요소들과 연결시키는 시스템 버스(126)를 포함한다. 프로세싱 유닛(122)은 하나 이상의 데이터 프로세서를 포함할 수 있고, 그 프로세서들 각각은 다양한 상용 컴퓨터 프로세서들 중 어느 하나의 형태일 수 있다. 시스템 메모리(124)는 통상적으로 소프트웨어 애플리케이션이 이용할 수 있는 어드레스들을 규정하는 소프트웨어 애플리케이션 어드레싱 공간과 연관된 한 개 이상의 컴퓨터 판독가능 매체를 포함한다. 시스템 메모리(124)는 컴퓨터 시스템(120)의 시동 루틴을 포함하는 기본 입출력 시스템(BIOS)을 저장한 읽기 전용 메모리(ROM), 및 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 시스템 버스(126)는 메모리 버스, 주변장치 버스, 또는 로컬 버스일 수 있으며, PCI, VESA, Microchannel, ISA, 및 ESA를 포함하는 다양한 버스 프로토콜 중 어느 하나와 호환될 수 있다. 컴퓨터 시스템(120)은 또한 시스템 버스(126)에 연결되는 영구 저장 메모리(128)(가령, 하드 드라이브, 플로피 드라이브, CD ROM 드라이브, 자기 테이프 드라이브, 플래시 메모리 장치, 및 디지털 비디오 디스크)를 포함하며, 데이터, 데이터 구조 및 컴퓨터 실행가능 명령어들의 비휘발성 혹은 영구적 저장을 제공하는 한 개 이상의 컴퓨터 판독가능 매체 디스크를 포함한다.
통신자는 한 개 이상의 입력 장치들(130)(가령, 한 개 이상의 키보드, 컴퓨터 마우스, 마이크로폰, 카메라, 조이스틱, Wii 입력 장치 같은 물리적 모션 센서, 및 터치 패드)을 이용해 컴퓨터 시스템(120)과 (가령, 입력 명령이나 데이터를) 상호교류할 수 있다. 정보는 디스플레이 제어기(134)에 의해 제어되는 디스플레이 모니터(132)상에서 통신자에게 제공되는 그래픽 사용자 인터페이스(GUI)를 통해 제공될 수 있다. 통신 시스템(120)은 또한 다른 입출력 하드웨어(가령, 스피커 및 프린터 같은 주변 출력 장치)를 포함할 수도 있다. 컴퓨터 시스템(120)은 네트워크 어댑터(136)("네트워크 인터페이스 카드" 또는 NIC라고도 칭함)를 통해 다른 네트워크 노드들에 연결된다.
애플리케이션 프로그래밍 인터페이스(138)(APIs), 운영 체계(OS)(140)(가령, 미국 워싱턴주 레드먼트에 위치한 마이크로소프트사로부터 구입할 수 있는 Windows XP® 운영 체계), 통신 애플리케이션(26), 드라이버들(142)(가령, GUI 드라이버), 네트워크 전송 프로토콜들(144) 및 데이터(가령, 입력 데이터, 출력 데이터, 프로그램 데이터, 레지스트리, 및 구성 설정사항)를 포함하는 다수의 프로그램 모듈이 시스템 메모리(124)에 저장될 수 있다.
7. 서버 노드 아키텍처
일부 실시예에서, 가상 환경 생성자(16)의 한 개 이상의 서버 네트워크 노드는 각각의 서버 네트워크 노드가 통상적으로 한 개 이상의 서버 소프트웨어 애플리케이션을 포함한다는 것만 제외하면 클라이언트 네트워크 노드(120)와 같은 종류의 개개의 범용 컴퓨터 시스템에 의해 구현된다.
다른 실시예에서, 가상 환경 생성자(16)의 한 개 이상의 서버 네트워크 노드는 에지(edge) 서비스(가령, 라우팅 및 스위칭)를 수행하는 개별 네트워크 장치에 의해 구현된다.
B. 전형적 통신 세션
다시 도 17을 참조하면, 통신 세션 중에 클라이언트 네트워크 노드들 각각은 실시간 데이터 스트림(가령, 모션 데이터 스트림, 오디오 데이터 스트림, 채팅 데이터 스트림, 파일 전송 데이터 스트림, 및 비디오 데이터 스트림)의 개별 집합을 생성한다. 예를 들어, 각각의 통신자는 가상 영역(66) 내 자신의 아바타 이동을 제어하는 모션 데이터 스트림을 생성하는 한 개 이상의 입력 장치(가령, 컴퓨터 마우스(52) 및 키보드(54))를 조작한다. 그 외에, 통신자의 음성 및 컴퓨터 시스템(48) 주변에서 국지적으로 생성되는 다른 사운드가 마이크로폰(60)에 의해 캡처된다. 마이크로폰(60)은 실시간 오디오 스트림으로 변환되는 오디오 신호를 생성한다. 오디오 스트림의 개별 사본들이 가상 영역(66) 내 아바타에 의해 표현되는 다른 네트워크 노드들로 전송된다. 이러한 다른 네트워크 노드에서 국지적으로 생성되는 사운드는 실시간 오디오 신호로 변환되어 컴퓨터 시스템(48)으로 전송된다. 컴퓨터 시스템(48)은 다른 네트워크 노드에 의해 생성된 오디오 스트림을 스피커(56, 58)에 의해 렌더링되는 오디오 신호로 변환한다. 모션 데이터 스트림 및 오디오 스트림은 통신자 노드들 각각으로부터 다른 클라이언트 네트워크 노드들로 직접적으로나 간접적으로 전송될 수 있다. 어떤 스트림 핸들링 토폴로지에 있어서, 클라이언트 네트워크 노드들 각각은 다른 클라이언트 네트워크 노드들에 의해 전송되는 실시간 데이터 스ㅌ림들의 사본들을 수신한다. 다른 스트림 핸들링 토폴로지에서, 클라이언트 네트워크 노드들 중 하나 이상이 다른 네트워크 노드들로부터 비롯되는(발생되는) 실시간 데이터 스트림들로부터 도출되는 한 개 이상의 스트림 믹스를 수신한다.
일부 실시예에서, 영역 서비스는 가상 영역의 현재 사양, 가상 영역에 있는 오브젝트들의 현재 레지스터, 및 영역 서비스를 주재하는 네트워크 노드에 의해 현재 생성되고 있는 어떤 스트림 믹스들의 리스트를 포함하는 글로벌 상태 정보를 관리한다. 오브젝트들의 레지스터는 통상적으로 가상 영역에서 각 오브젝트 마다 개별 오브젝트 식별자(가령, 그 오브젝트를 고유하게 식별하는 라벨), 그 오브젝트와 관련된 네트워크 노드와 네트워크 접속이 설정될 수 있게 하는 접속 핸들(가령, IP 어드레스 같은 URI), 및 그 오브젝트와 관련된 실시간 데이터 소스 및 싱크들(가령, 오브젝트와 관련된 네트워크 노드의 소스들과 싱크들)을 식별하는 인터페이스 데이터를 포함한다. 오브젝트들의 레지스터는 또한 통상적으로 각 오브젝트마다 한 개 이상의 선택사항인 역할 식별자들을 포함하며; 역할 식별자들은 통신자들이나 영역 서비스에 의해 오브젝트들에 명시적으로 할당되거나 오브젝트들의 다른 속성들이나 사용자로부터 추정될 수 있다. 일부 실시예에서, 오브젝트들의 레지스터는 또한, 가상 영역 내 오브젝트들과 관련된 네트워크 노드들로부터 수신된 실시간 모션 데이터 스트림의 분석으로부터 영역 서비스에 의해 결정된 것과 같이 가상 영역 내 오브젝트들 각각의 현재 위치를 포함한다. 이와 관련해, 영역 서비스는 가상 영역 내 오브젝트들과 관련된 네트워크 노드들로부터 실시간 모션 데이터 스트림을 수신하고, 모션 데이터에 기초해 가상 영역 내에 들어오고 떠나고 내에서 돌아다니는 통신자들의 아바타들 및 다른 오브젝트들을 추적한다. 영역 서비스는 추적된 오브젝트들의 현재 위치에 따라 오브젝트들의 레지스터를 업데이트한다.
다른 네트워크 노드들과의 실시간 데이터 스트림 접속을 관리하는 프로세스에서, 영역 서비스는 네트워크 노드들 각각에 대해, 현재 가상 영역에 존재하는 오브젝트들의 위치, 구간 리스트, 인터페이스 데이터를 포함하는 구성 데이터의 집합을 관리한다. 인터페이스 데이터는 클라이언트 네트워크 노드 각각과 관련된 각각의 오브젝트에 대해 그 오브젝트와 관련된 실시간 데이터 스트림 종류의 모든 소스 및 싱크들의 개별 리스트를 포함한다. 구간 리스트는 해당하는 클라이언트 네트워크 노드와 관련된 아바타에 의해 현재 점유된 가상 영역 내 모든 구간들의 레지스터이다. 통신자가 최초로 가상 영역에 들어갈 때, 영역 서비스는 통상적으로 위치 초기화 정보로 현재의 오브젝트 위치 데이터베이스를 초기화한다. 그런 다음, 영역 서비스는 가상 영역을 공유하는 다른 클라이언트 네트워크 노드들로부터 수신된 실시간 모션 데이터 스트림 분석으로부터 결정된 것과 같이 가상 영역 내 오브젝트들의 현재 위치들로 현재 오브젝트 위치 데이터베이스를 업데이트한다.
C. 공간적 가상 통신 환경과의 인터페이스
로컬 휴먼 인터페이스 장치(HID) 및 오디오 재생 장치들, So3D 그래픽 디스플레이, 아바타, 및 물리 엔진, 그리고 시스템 데이터베이스 및 저장 설비 외에, 통신 애플리케이션(26)은 사용자를 공간적 가상 통신 환경과 인터페이스 하는 그래픽 네비게이션 및 상호교류 인터페이스(여기서는 "탐색자(seeker) 인터페이스"라 칭함)을 또한 포함한다. 탐색자 인터페이스는 사용자가 가상 환경을 탐색할 수 있게 하는 네비게이션 콘트롤들 및 사용자가 가상 통신 환경의 다른 통신자들과 자신의 상호교류를 제어할 수 있게 하는 상호교류 콘트롤들을 포함한다. 네비게이션 및 상호교류 콘트롤들은 통상적으로 컴퓨터 마우스, 터치 패드, 터치 스크린 디스플레이, 키보드, 및 비디오 게임 제어기를 포함하는 어떤 종류의 입력 장치를 사용하여 이루어지는 사용자 선택에 대해 반응한다. 탐색자 인터페이스는 각각의 클라이언트 네트워크 노드 상에서 동작하는 애플리케이션이다. 탐색자 인터페이스는 자신의 데스크탑 상에서 항상 유지 및 작동시킬 수 있는 작은 경량의 인터페이스이다. 탐색자 인터페이스는 사용자가 가상 영역 애플리케이션들을 시동할 수 있게 하고 사용자에게 실시간 접촉자들 및 실시간 협력 장소(나 영역)로의 즉각적 액세스를 지원한다. 탐색자 인터페이스는 다른 네트워크 노드들과 실시간 통신을 시작 및 수신할 수 있도록 기본 운영 체계의 실시간 통신 구성요소들 및/또는 실시간 통신 애플리케이션들과 함께 병합된다. 사용자가 가상 환경 생성자(16)에 의해 생성된 가상 환경으로 파일을 업로드하고, 가상 영역에 계속 있으면서 가상 환경과 무관하게 토착(native) 클라이언트 소프트웨어 애플리케이션을 이용해 가상 영역과 관련하여 저장된 파일들을 사용하고, 보다 일반적으로 단지 여러 애플리케이션들 중 하나가 아닌 다른 운영 체계 기능과 유사한 그들의 운영 체계의 양태로서 가상 영역 내 존재 및 위치를 다루도록, 가상 영역이 탐색자 인터페이스를 통해 사용자의 데스크탑과 병합된다.
공간적 가상 통신 환경은 통상적으로 장소(여기서는 "위치"라고도 칭함) 및 오브벡트들의 공간적 계층구조로서 모델링될 수 있다. 공간적 계층구조는 최상위 레벨에서 최하위 레벨에 이르는 순서화된 레벨들의 시퀀스를 포함한다. 공간적 계층구조 레벨들 중 이어지는 다음 레벨에 있는 장소들 각각은 레벨들 중 이전 레벨의 장소들의 개별 장소 내에 포함된다. 공간적 계층구조상의 오브젝트들 각각은 장소들 중 개별 장소 내에 포함된다. 공간적 계층구조의 레벨들은 통상적으로 지리적, 구조적, 혹은 도시의 상징으로 이루어지고 그에 맞춰 이름 붙여지는 개별 심상들과 관련된다. 각각의 가상 영역의 구간들은 개별 망(mesh)들에 의해 규정되며, 그 망들 중 일부는 오브젝트(가령, 스크린 보기 오브젝트 및 협의 오브젝트 같은 프롭(prop)들과 아바타들)을 포함할 수 있는 물리적 환경의 요소들(가령, 빌딩과 관련해 방과 안마당 같은 공간)을 규정한다.
탐색자 인터페이스의 네비게이션 콘트롤들은 공간 및 오브젝트들의 기본적인 공간적 계층구조와 관련된 네비게이션 모델에 따라, 사용자가 가상 환경을 통과하는 한 경로를 지날 수 있게 한다. 네트워크 인프라 서비스 환경(30)이 사용자가 지나간 경로를 기록한다. 일부 실시예에서, 네트워크 인프라 서비스 환경(30)은 사용자가 가상 영역 전체를 탐색할 때 사용자에게 제공되는 가상 영역 보기들에 대해 시간적으로 순서화된 리스트를 포함하는 히스토리를 기록한다. 각각의 보기는 통상적으로 가상 영역의 개별 렌더링 가능 구간의 보기에 해당한다. 이 실시예들에서, 네비게이션 콘트롤들은 사용자가 히스토리 내에 있는 구간들 중 선택된 구간들로 이동할 수 있게 한다. 네비게이션 콘트롤들은 또한 가상 영역에 대한 사용자의 현재 보기에 해당하는 공간적 계층구조상의 위치를 보이는 깊이(depth) 경로의 그래픽 표현을 포함한다. 일부 실시예에서, 깊이 경로의 그래픽 표현은 현재 보기 위에서 가상 영역의 공간적 계층 모델의 이전 레벨들 각각에 대한 개별 보기로의 개별 사용자 선택가능 링크를 포함한다.
탐색자 인터페이스의 상호교류 콘트롤들은 사용자가 다른 통신자들과의 상호교류를 관리할 수 있게 한다. 사용자가 이용할 수 있는 상호작용 옵션은 통상적으로 사용자가 존재를 가지는 구간들에 따라 좌우된다. 일부 실시예에서, 특정 구간에서 존재를 가지는 통신자가 이용 가능한 상호교류 옵션은 그 구간에 존재를 갖지 않는 다른 통신자들이 사용할 수 있는 옵션들과 다르다. 세부 수준 및 사용자의 상호교류 기능은 통상적으로 사용자가 특정 구간에 존재를 가지는지 가지지 않는지 여부에 좌우된다. 전형적인 일 실시예에서, 사용자가 가상 영역 외부에 있으면, 사용자는 가상 영역 내에서 일어나는 상호교류에 대한 아주 미소한 수준의 세부사항을 제공받고(가령, 사용자는 바닥 배치 개요, 배경 텍스쳐, 및 그 영역에 있는 식물들은 볼 수 있지만, 그 영역에서 다른 통신자들이 어디에 존재하는지는 볼 수 없다); 사용자가 가상 영역의 내에 있지만 그 영역의 특정 구간 밖에 있는 경우, 사용자는 그 특정 구간 내에서 일어나는 상호교류의 중간 수준의 세부사항을 제공받으며(가령, 사용자는 다른 통신자들이 영역 내에서 어디에 존재하는지 볼 수 있고, 그들의 현재 상태-이야기 중임, 채팅 메시지 타이핑 중임, 헤드폰 및 마이크로폰이 켜졌는지 여부-에 대한 심상을 볼 수 있고 보기 스크린들 중 어느 하나가 동작 중인지 여부를 알 수 있다); 사용자가 영역의 특정 구간 내에 있으면, 사용자는 특정 구간을 통해 일어나는 상호교류의 완전한 수준의 세부사항을 제공받는다(가령, 사용자는 보기 스크린상에서 공유되고 있는 파일의 썸네일(thumbnail)을 볼 수 있고, 그 영역 내 다른 통신자들과 듣고 말할 수 있으며, 그 구간 내 통신자들에 의해 생성되었던 채팅 메시지 기록의 엘리먼트들을 볼 수 있다). 일부 실시예에서, 가상 영역의 구간들과 관련된 스위칭 및 관리 규칙들은 네트워크 인프라 서비스들이 특정 구간에 존재를 가진 이들과 특정 구간에 존재를 갖지 못한 이들 사이를 구별하는 방법을 제어한다.
도 19는 윈도우(162)에 디스플레이되고, 각각이 브라우징 영역(166) 및 툴바(168)를 가지는 하나 이상의 탭들(164)을 포함하는 탐색자 인터페이스의 일 실시예(160)를 보여준다.
탭들(164) 각각은 통상적으로 가상 환경의 개별 보기와 관련된다. 예시된 실시예에서 테이블(164)에 제공된 보기("My Areas"라 명명됨)는 가상 환경 하의 가상 영역들의 디폴트 집합이거나 상호교류 데이터베이스 상의 개별 필터에 의해 식별되는 가상 영역들의 집합일 수 있는 가상 영역들의 개별 집합과 관련된다. 특히, 탭(164)은 사용자와 관련된 영역들의 디폴트 집합이거나 사용자와 관련된 영역들 모두(가령, 사용자가 상호교류했던 영역들 모두)를 식별하는 필터에 의해 식별될 수 있는 세 가상 영역들의 집합(즉, Acme Sococo Help Area, 및 Personal Space)과 관련된다. "+" 버튼(170)을 선택함으로써 추가 탭들이 생성될 수 있다.
각 탭의 브라우징 영역(166)은 그 탭과 관련된 가상 환경의 요소들에 대한 그래픽 표현을 보여준다. 예를 들어, 예시된 실시예에서, 브라우징 영역(166)은 탭(164)과 연관된 가상 영역들의 최상위 레벨 보기(172, 174, 176)를 보여준다. 사용자는 가상 영역의 해당 그래픽 표현을 선택하여 가상 영역들 중 어느 하나의 공간적 계층구조 모델의 다음 하위 레벨로 네비게이팅 할 수 있다.
툴바(168)는 가상 환경에서 사용자의 현재 위치에 기반하여 탐색자 인터페이스가 자동으로 선택하는 네비게이션 및 상호교류 툴들의 적응적 집합을 포함한다. 예시된 실시예에서, 툴바(168)는 뒤로 가기(back) 버튼(178), 앞으로 가기(forward) 버튼(180), 장소 마크(placemark) 버튼(182) 및 홈(home) 버튼(184)을 포함한다. 뒤로 가기 버튼(178)은 사용자가 사용자에 의해 거쳐갔던 구간들에 대한 히스토리의 구간들 중 이전 구간들로 점진적으로 뒤를 향해 이동할 수 있게 하는 백워드(backward) 콘트롤에 해당한다. 앞으로 가기 버튼(180)은 사용자가 사용자에 의해 거쳐갔던 구간들에 대한 히스토리의 구간들 중 이어지는 다음 구간들로 점진적으로 전향하여 이동할 수 있게 하는 포워드(forward) 콘트롤에 해당한다. 장소 마크 버튼(182)은 구간들에 대한 링크들을 저장하기 위한 장소 마크 콘트롤 및 앞서 장소 마크된 구간들로의 링크들의 리스트를 보여주기 위한 장소 마크 네비게이션 콘트롤을 제공한다. 사용자의 장소 마크 콘트롤 선택에 응하여, 가상 영역 내 해당 위치로의 하이퍼링크와 관련해 현재 보기에서 보여지는 위치의 이미지를 저장함으로써 장소 마크가 생성된다. 사용자의 장소 마크 네비게이션 콘트롤 선택에 응하여, 장소 마크 윈도우가 사용자에게 제시된다. 장소 마크 윈도우는 사용자에 의해 장소 마크되었던 모든 이치들의 생생한 심상을 포함한다. 장소 마크 윈도우 내의 이미지들 각각은 개별 사용자 선택가능 하이퍼링크와 연관된다. 장소 마크 윈도우 내 하이퍼링크들 중 하나에 대한 사용자 선택에 응답하여, 선택된 하이퍼링크와 관련된 위치에 해당하는 가상 영역 보기가 탐색자 인터페이스 윈도우(162)의 브라우징 영역(166) 내에 자동으로 디스플레이된다. 홈 버튼(184)은 가상 환경 안에서 지정된 "홈" 위치에 대한 보기(가령, 도 19에 도시된 보기)로 사용자를 리턴시키는 콘트롤에 해당한다.
도 20을 참조할 때, 도 19에 도시된 Acme 가상 영역의 그래픽 표현(172)에 대한 사용자 선택에 응하여, 플랫폼은 가상 영역의 디폴트 구간으로 사용자를 이동시키고, 그 디폴트 구간 내에 사용자의 존재를 자동 설정하며, 사용자와 선택 구간을 점유한 다른 통신자들 각각과의 사이에 네트워크 접속을 자동 설정한다. 영역 설계자에 의해 수립된 스위칭 규정에 기초해, 플렛폼은 디폴트 구간 내 모든 통신자들이 서로의 스프라이트(sprite)를 보고 서로 통신하는(말하고 듣는) 두 가지 일을 다 할 수 있도록 디폴트 구간 내 모든 통신자들의 명시된 실시간 데이터 스트림(가령, 마이크로폰 및 스피커들로부터의 스트림)을 멀티플렉싱한다.
탐색자 인터페이스는 탭(164)의 브라우징 영역(166) 내에 Acme 가상 영역의 상부나 바닥 배치 보기를 보여주며, 사용자에게 상호교류 옵션들의 디폴트 집합을 제공한다. 예시된 실시예에서, 가상 영역의 앞마당 구간(190) 내에서 존재가 자동으로 설정되며, 사용자의 마이크로폰 및 디폴트 스피커(가령, 헤드폰)가 켜진다. 도 20에 도시된 바닥 배치 보기에서, 사용자는 둥근 스프라이트(192)로 표현되고; Acme 가상 영역 내 다른 사용자들 역시 각자의 둥근 스프라이트들(194-202)로 표현된다. 사용자의 스피커 상태가 사용자의 스프라이트(1920 위에서 헤드폰 그래픽(203)의 존재나 부재에 의해 묘사된다: 스피커가 켜져 있을 때 헤드폰 그래픽(203)이 존재하고, 스피커가 꺼져 있을 때 헤드폰 그래픽(203)은 부재한다. 사용자의 마이크로폰의 상태는 사용자의 스프라이트(192) 위에서의 마이크로폰 그래픽(206)의 존재나 부재 및 사용자의 스프라이트(192)를 둘러싼 일련의 동심원들(204)로 묘사된다: 마이크로폰이 켜져 있으면 마이크로폰 그래픽(206) 및 동심원들(204)이 존재하고, 마이크로폰이 꺼져 있으면 마이크로폰 그래픽(206)과 동심원들(204)이 부재한다. 헤드폰 그래픽(203), 동심원들(204), 및 마이크로폰 그래픽(206)은 사용자의 사운드 재생 및 마이크로폰 장치들의 상태에 대한 시각적 암시로서 작용한다.
백워드 버튼(178), 포워드 버튼(180), 장소 마크 버튼(182), 및 홈 버튼(184) 외에, 툴바(168)는 홈 버튼(184)에서 비롯되고 홈 버튼(184)을 포함하는 일련의 하나 이상의 브레드크럼(breadcrumb) 버튼(207)을 또한 포함한다. 브레드크럼 버튼(207)은 연속적인 사용자 선택가능 링크들의 계층적 시퀀스에 해당한다. 연속적 링크들 각각은 낱개 레벨들에 앞서 각각의 연속되는 레벨이 포함되는 가상 영역의 계층 모델 내 개별 레벨 보기에 해당한다. 예시된 실시예에서, 브레드크럼 버튼(207)은 홈 버튼(184) 및 도 20에 보인 Acme 가상 영역의 현재 보기에 대응하는 Acme 버튼(208)을 포함한다. 브레드크럼 버튼(207)은 사용자에게 가상 환경의 각종 레벨들에 대한 개별 보기들로의 단일 버튼 선택 액세스를 제공한다. 툴바(168)는 추가적으로 버튼(210) 및 설정 버튼(212)을 포함한다.
영역이 선택되거나 초점 맞춰질 때, 버튼(210)은 두 사람에 대한 아이콘 그림으로 나타나고 "멤버들(members)"이라 명명되며, 멤버들과 중개자들이 영역과 관련된 사람들의 리스트를 볼 수 있게 한다. 오디오나 채팅 구간이 초점 맞춰질 때, 버튼(210)은 다른 이미지(가령, 리트리브하는 동작을 나타내도록 평면상에서 아래를 가리키는 화살표 이미지)를 가지며, "get"이라 명명된다. 버튼(210)에 대한 사용자 선택에 응답하여, Acme 가상 영역(166)의 모든 멤버들의 리스트가 사용자 인터페이스를 통해 디스플레이된다. 사용자는 리스트 내 통신자들 중 어느 하나를 선택할 수 있고 사용자 인터페이스에 존재하는 get 버튼을 클릭한다; 그에 답해 플랫폼이 선택된 통신자에게 구간들 중 지정된 곳에서 사용자와 합류하라는 초대장을 전송한다.
설정 버튼(212)은 사용자에게 현재 영역과 연관된 디폴트 설정을 명시하기 위한 콘트롤들의 집합에 대한 액세스를 제공한다.
사용자는 각종 다양한 방식에 따라 도 20에 도시된 Acme 가상 영역의 보기로부터 다시 도 19에 도시된 보기로 네비게이팅할 수 있다. 예를 들어, 사용자는 뒤로 가기 버튼(178), 홈 버튼(184), 또는 도 20에 도시된 Acme가상 영역의 그래픽 표현 경계 밖에 있는 구간(211)의 어느 부분을 선택할 수 있다.
사용자는 Acme 가상 영역의 구간들 중 어느 하나로 네비게이팅할 수 있다. 일부 실시예에서, 어느 한 구간으로 이동하기 위해 사용자는 모니터에 디스플레이된 구간들 중 하나를 실행하는 명령을 전송하며(가령, 그 구간을 선택한 뒤 엔터(Ender) 버튼(툴 바에 있음)을 클릭하거나, 단축경로로서 그 구간을 더블클릭함으로써), 그에 응답하여 플랫폼은 구간 내에 구간 오브젝트에 해당하는 사용자의 아바타를 묘사한다. 구간 실행 명령에 응하여, 탐색자 인터페이스는 구간의 윤곽을 부각시키고(사용자에게 그것이 선택되었음을 가리킴) 계층구조 내에서 그 선택된 구간 위치를 보이도록 브레드크럼 버튼들(207)을 업데이트 한다. 그 선택에 고유한 툴바 버튼들 역시 브레드크럼 버튼들(207) 우측에 나타날 것이다.
사용자는 어느 한 구간에 존재하는 어떤 오브젝트들(가령, 스크린, 테이블, 도는 파일)과 상호교류할 수도 있다. 일부 실시예에서, 어떤 오브젝트와 교류하기 위해 사용자는 모니터에 디스플레이된 오브젝트들 중 하나를 실행하는 명령을 전송하고(가령, 그 오브젝트를 선택한 후 (툴 바에 있는) 보기(View) 버튼을 클릭하거나, 단축경로로서 그 오브젝트를 더블클릭함으로써), 그에 응하여 플랫폼이 그 오브젝트와 관련된 동작을 수행한다(가령, 오브젝트에 대한 줌인(zommed-in) 보기, 상호교류 인터페이스 윈도우 열기 등). 오브젝트 실행 명령에 응답하여, 탐색자 인터페이스가 그 프롭(prop)의 윤곽을 부각시키거나 하이라이트하고(사용자에게 그것이 선택되었음을 가리킴), 계층구조 내에서 그 선택된 오브젝트 위치를 보이도록 브레드크럼 버튼들(207)을 업데이트 한다. 그 선택에 고유한 툴바 버튼들 역시 브레드크럼 버튼들(207) 우측에 나타날 것이다.
도 21을 참조하면, 일부 실시예에서 사용자가 메인(메인) 공간(213)으로 들어간 것에 반응하여, 플랫폼이 사용자와 그 선택 구간을 점유한 다른 통신자들 각자와의 사이에 네트워크 접속을 자동으로 설정한다. 사용자가 공간을 선택하고 엔터(Enter) 버튼을 클릭함으로써 그 공간으로 들어갈 수도 있고 (또한 그에 따라 그 공간 내에서 존재를 설정하고); 이것은 플랫폼이 사용자의 스프라이트를 현재 위치(즉, Courtyard)에서 선택된 공간(즉, 메인)으로 이동하게 한다. 사용자가 한 위치에서 다른 위치로 이동할 때, 사용자 스피커 및 마이크로폰에 대한 설정은 통상적으로 변하지 않는다.
도 22는 도 21에 도시된 메인 공간(213)의 보기에 있는 월(wall) 오브젝트(290)를 사용자가 더블클릭한 상황을 보여준다.
월 오브젝트(290)를 실행하라는 사용자 명령에 응답하여, 탐색자 인터페이스는 탭(164)의 브라우징 윈도우(166) 내에 월 오브젝트(290)의 콘텐츠 및 월 오브젝트(290)를 둘러싼 메인(Main) 공간(213)의 영역들에 대한 2.5 차원 보기를 제공한다. 도 22에 도시된 실시예에서, 선택된 월 오브젝트(290)는 메인 공간(213)의 북쪽 벽(North Wall)에 해당한다. 북쪽 벽(North Wall)은 북쪽 벽 오브젝트(290)에 존재하는 한쌍의 스크린 보기 오브젝트(289, 291)("2" 및 "3"으로 각각 명명됨)를 포함한다. 스크린 보기 오브젝트(289, 291)는 메인 공간(213)의 북쪽 벽과 관련된 데이터 파일들의 콘텐츠를 제공하는데 사용될 수 있다. 2.5 차원 보기는 북쪽 벽 오브젝트(290)의 좌측 및 우측에 위치하는 서쪽 벽(West Wall) 오브젝트(293) 및 동쪽 벽(East Wall) 오브젝트(295) 또한 각각 보여준다. 서쪽 벽 오브젝트(293) 및 동쪽 벽 오브젝트(295)는 개별 데이터 파일들의 콘텐츠를 제공하는데 사용될 수 있는 개별 보기 스크린 오브젝트(293, 295)(각기 "1" 및 "4"로 명명됨)를 포함한다.
인터페이스 또한 미니맵(256) 내에서 메인 공간(213) 및 메인 공간(213)을 둘러싼 Acme 공간의 영역들을 보여준다. 미니맵(256)은 또한 메인 공간(213) 내에서 선택된 북쪽 벽 오브젝트(290)의 하이라이트된 보기(292)를 보여준다.
탭(164)의 툴바(168)에 도시된 브레드크럼 버튼들(207)은 가상 영역의 계층적 공간 모델에서 현재의 레벨에 해당하는 북쪽 벽 버튼(294)을 포함한다. 툴바(168)는 사용자가 메인 공간(213)의 2.5 차원 보기의 중앙 보기 영역에 있는 메인 공간의 다른 월들의 콘텐츠를 볼 수 있도록 현재의 보기를 좌 및 우로 90도(90°) 회전할 수 있게 하는 좌회전 버튼(296) 및 우회전 버튼(298)을 포함한다. 사용자는 메인 공간(213)의 2.5 차원 보기의 중앙 보기 영역에 존재하는 콘텐츠를 바꾸기 위해 미니맵(256)에 도시된 월들 중 다른 하나를 더블클릭할 수도 있다.
도 23은 도 22에 도시된 메인 공간(213)의 보기에서 사용자가 북쪽 벽 상의 스크린 보기 오브젝트(291)("3"으로 명명됨)를 선택한 이후의 탐색자 인터페이스를 보여준다. 사용자는 탭(164)의 브라우징 영역(166)에 도시된 2.5 차원 보기의 중앙 보기 영역에 보여진 스크린 보기 오브젝트(291)의 어느 부분을 더블클릭하거나 도 22에 도시된 미니맵(256)에서 해당하는 스크린 보기 오브젝트(256)를 더블클릭함으로써 스크린 보기 오브젝트(291)를 실행했었을 수 있다. 사용자가 도 22에 도시된 스크린 보기 오브젝트(291)를 더블클릭한 데 대한 반응으로, 탭(164)의 브라우징 영역(166)은 도 23에 도시된 것과 같이, 스크린 보기 오브젝트(291) 및 스크린 보기 오브젝트(291)를 둘러싼 북쪽 벽 오브젝트(290)의 영역들에 대한 줌인된 보기를 보여준다. 사용자는 도 22에 도시된 메인 스페이스(213)의 브라우징 영역 및 미니맵 보기들로 돌아가기 위해, 도 22에 도시된 브라우징 영역(166)에서 스크린 보기 오브젝트(291)를 둘러싼 북쪽 벽 오브젝트(290)의 영역들 중 어느 하나를 더블클릭할 수 있다. 도 23에 도시된 실시예에서, 미니맵(256)은 월 오브젝트(290)를 둘러싼 메인 스페이스의 영역들과 함께 월 오브젝트(290)의 콘텐츠에 대한 2.5차원 보기를 보여준다; 이 보기는 가상 영역의 계층적 공간 모델의 이전 레벨에 해당한다. 브레드크럼 버튼(207)은 가상 영역의 계층적 공간 모델의 현재 레벨에 해당하는 스크린(Screen) 3 버튼(302)을 포함한다. 툴바(168)는 사용자가 스크린 보기 오브젝트(291) 상에 콘텐츠가 존재할 공유 데이터 파일을 지정할 수 있도록 하고 그에 따라 메인 스페이스(213) 내 모든 통신자들이 그 데이터 파일을 동시에 공유할 수 있게 하는 공유(Share) 버튼(304)을 포함한다. 브라우징 영역(166)에 도시된 스크린 보기 오브젝트(291)는 역시 사용자가 공유 데이터 파일을 지정할 수 있게 하는 공유 링크(306)를 포함한다.
도 24를 참조할 때, Share 버튼(304)이나 공유 링크(306)에 대한 사용자 선택에 응답하여, 탐색자 인터페이스는 상기 섹션 IV에서 기술된 바와 같이 사용자가 스크린 보기 오브젝트(291) 상에서 콘텐츠가 공유될 데이터 파일을 지정할 수 있게 하는 별도의 소스 선택 (Select Source) 인터페이스 윈도우(310)를 오픈한다. 소스 선택 인터페이스는 데이터 파일 식별자(가령, 로컬 데이터 파일 저장 경로명이나 URL(Uniform Resource Identifier))를 받기 위한 텍스트 박스(312) 및 그 데이터 파일 식별자에 대해 사용자가 여러 위치를 브라우징할 수 있게 하는 브라우즈(Browse) 버튼(314)을 포함한다. 데이터 파일 식별자는 클라이언트 노드(12)나 다른 네트워크 노드 상에 위치할 수 있다. 소스 선택 인터페이스 윈도우(310)는 또한 사용자가 상기 데이터 파일 식별자에 대해 앞서 북마크된 파일들, 애플리케이션들, 또는 URI들의 리스트를 브라우징할 수 있게 하는 즐겨찾기 버튼(316)을 포함한다.
도 25를 참조할 때, 사용자가 소스 선택 인터페이스에서 데이터 파일 식별자를 선택한 뒤에, 통신 애플리케이션(26)은 선택된 데이터 파일의 썸네일 이미지를 생성한다. 일부 실시예에서, 선택된 데이터 파일의 썸네일 이미지를 캡쳐하기 위해 스크레이퍼 모델이 불러내 진다. 일부 실시예에서, 썸네일 이미지는 선택된 데이터 파일과 관련된 공유 애플리케이션의 메인 윈도우의 샘플일 수 있다. 썸네일 이미지는 브라우징 영역(166) 및 미니맵(256) 둘 모두에서 스크린 보기 오브젝트(291) 상에 디스플레이된다. 예시된 실시예에서, 지정된 데이터 파일은 파이 모양 차트의 슬라이드를 포함하는 PowerPoint® 데이터 파일에 해당한다. 사용자는 클리어 아이콘(318)을 선택하여 스크린 보기 오브젝트(291) 상의 데이터 파일 표시를 제거할 수 있다.
하나 이상의 뷰어들은 스크린 보기 오브젝트(291) 위에 보여진 썸네일 이미지를 클릭(또는 더블클릭)함으로써 선택된 데이터 파일의 콘텐츠를 보여주는 공유 애플리케이션의 윈도우들을 예약할 수 있다. 각각의 뷰어는 선택된 데이터 파일이나 스크린 보기 오브젝트(291)를 포함하는 구간과 관련된 어떤 관리 규칙에 따라 스크린 보기 오브젝트(291) 상에 제공된 공유 윈도우 콘텐트를 보고, 제어하고, 편집하고, 조작할 수 있다. 뷰어가 공유 윈도우 콘텐트에 대해 제어 액세스를 하는 경우, 뷰어는 위의 섹션 IV에서 설명한 바와 같이, 뷰어의 네트워크 노드 상에 있는 한 개 이상의 입력 장치들을 이용하여, 공유자 네트워크 노드에서 실행되는 공유 프로세스로 명령을 입력시킬 수 있다. 공유자 네트워크 노드와 뷰어 네트워크 노드들 사이의 개별 네트워크 접속을 통해 실시간 성능이 얻어질 수 있다고 간주할 때, 공유된 데이터 파일의 편집 및 기타 조작은 통상적으로 마치 그들이 동일한 네트워크 노드 상에서 만들어진 것처럼 협력자들 각각에게 보여질 것이다.
Ⅴ. 결론
여기 기술되는 실시예는 고 충실도, 실시간 성능, 뷰어 몰입(viewer immersion), 및 프라이버시 보호와 함께 애플리케이션 공유를 가능하게 한다. 일부 실시예는 또한 둘 이상의 통신자가 애플리케이션 및 스크린 콘텐트를 동시에 서로 공유하는 멀티채널 애플리케이션 공유를 가능하게 한다. 이 실시예들은 통상적으로 각 수신기가 한 공유 윈도우를 다른 공유 윈도우와 구별할 수 있도록 하는 인터페이스를 포함한다.
다른 실시예들도 청구범위의 범위 내에 있다.

Claims (31)

  1. 공유자 네트워크 노드(12)의 로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 소프트웨어 프로세스와 관련된 윈도우(510-514)를 식별하는 단계와,
    상기 공유자 네트워크 노드(12) 상에서, 상기 식별된 윈도우(510-514)가 상기 스크린 레이아웃(506) 내에 정렬되며 상기 스크린 레이아웃(506) 내에서 어떤 다른 윈도우에 의해서도 가려지지 않도록 상기 식별된 윈도우(510-514)의 합성 이미지를 생성하는 단계와,
    상기 공유자 네트워크 노드(12)로부터 뷰어(viewer) 네트워크 노드(14)로 상기 합성 이미지(524)를 전송하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 식별하는 단계는 상기 스크린 레이아웃(506) 내에서 상기 소프트웨어 프로세스와 관련된 윈도우(510-514) 모두를 식별하는 단계를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 식별하는 단계는 상기 스크린 레이아웃(506) 내 윈도우(510-514) 중 상기 소프트웨어 프로세스에 할당된 핸들에 매치하는 윈도우를 식별하는 단계를 포함하는
    방법.
  4. 제 3 항에 있어서,
    상기 식별하는 단계는 상기 소프트웨어 프로세스에 의해 생성되는 부모 윈도우 및 적어도 한 개의 관련된 자식 윈도우(514)를 식별하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 생성하는 단계는
    상기 스크린 레이아웃(506) 내 상기 식별된 윈도우(510-514)의 상대적 계층화 순서에 해당하는 식별된 윈도우(510-514)의 서로에 관련한 계층화 순서를 결정하는 단계와,
    상기 식별된 윈도우(510-514) 각각에 대해, 상기 윈도우의 개별 이미지를 리트리브(retrieve)하는 단계와,
    상기 결정된 계층화 순서에 따라 상기 리트리브된 이미지를 상기 합성 이미지(524)로 합성(compositing)하는 단계를 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 결정하는 단계는
    상기 스크린 레이아웃(506) 내 상기 윈도우(510-514) 각각에 대해 개별 z 순서 값(Z-order value)을 상기 윈도우의 개별 윈도우 핸들에 관련시키는 z 순서 리스트(Z-order list)를 생성하는 단계와,
    상기 z 순서 리스트로부터 상기 식별된 윈도우(510-514)의 계층화 순서를 도출하는 단계를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 도출하는 단계는
    상기 z 순서 리스트 내 상기 z 순서 값 각각에 대해, 상기 관련 윈도우 핸들을 상기 식별된 윈도우(510-514)의 개별 윈도우의 윈도우 핸들과 매칭시키는 단계와,
    상기 z 순서 값 중 상기 식별된 윈도우(510-514)의 윈도우 핸들과 매칭하도록 결정된 값과 관련된 z 순서 리스트 내 개별 z 순서에 따라 상기 식별된 윈도우(510-514)를 정렬하는 단계를 포함하는
    방법.
  8. 제 5 항에 있어서,
    상기 생성하는 단계는 상기 스크린 레이아웃(506) 내 상기 식별된 윈도우(510-514)의 이차원 위치를 결정하는 단계를 더 포함하는
    방법.
  9. 제 1 항에 있어서,
    상기 식별하는 단계는 상기 윈도우 중 소프트웨어 프로세스의 설계 그룹과 관련된 윈도우를 식별하는 단계를 포함하며,
    상기 생성하는 단계는
    상기 스크린 레이아웃(506) 내 상기 식별된 윈도우(510-514)의 상대적 계층화 순서에 해당하는 상기 식별된 윈도우(510-514)의 서로에 관련한 계층화 순서를 결정하는 단계와,
    상기 식별된 윈도우(510-514) 각각에 대해 상기 윈도우의 개별 이미지를 리트리브하는 단계와,
    상기 결정된 계층화 순서에 따라 상기 리트리브된 이미지를 상기 합성 이미지(524)로 합성(compositing)하는 단계를 포함하는
    방법.
  10. 제 1 항에 있어서,
    상기 생성하는 단계는 상기 스크린 레이아웃(506)을 포함하는 가시적 데스크탑 윈도우 외부에 위치하는 상기 식별된 윈도우(510-514) 중 임의의 콘텐츠를 포함하는 상기 식별된 윈도우(510-514)의 상기 합성 이미지(524)를 생성하는 단계를 포함하는
    방법.
  11. 제 1 항에 있어서,
    상기 식별된 윈도우(510-514) 각각의 개별 이미지는 개별 메모리 버퍼에 저장되며,
    상기 생성하는 단계는 상기 개별 메모리 버퍼로부터 상기 이미지 각각을 리트리브하는 단계와, 상기 리트리브된 이미지를 상기 합성 이미지로 합성하는 단계를 포함하는
    방법.
  12. 제 1 항에 있어서,
    상기 식별된 윈도우(510-514) 각각의 개별 이미지가 개별 메모리 버퍼에 저장되도록 상기 소프트웨어 애플리케이션과 관련된 상기 윈도우(510-514)를 계층화된 윈도우 스타일로 설정하는 단계를 더 포함하는
    방법.
  13. 제 1 항에 있어서,
    상기 전송하는 단계는 상기 소프트웨어 프로세스와 관련된 스크린 데이터를 보여주라는 상기 뷰어 네트워크 노드(14)로부터의 요청에 응답하여 수행되는
    방법.
  14. 제 13 항에 있어서,
    상기 소프트웨어 프로세스와 관련된 스크린 데이터를 보여주라는 다른 뷰어 네트워크 노드(14) 각각으로부터의 개별 요청에 응답하여 상기 공유자 네트워크 노드(12)로부터 한 개 이상의 뷰어 네트워크 노드(14)로 상기 합성 이미지(524)를 전송하는 단계를 더 포함하는
    방법.
  15. 제 1 항에 있어서,
    상기 식별하는 단계, 상기 생성하는 단계, 및 상기 전송하는 단계는 상기 공유자 네트워크 노드(12)에 있는 공유자 및 상기 뷰어 네트워크 노드(14)에 있는 뷰어 둘 모두가 존재하는 가상 영역에 의해 정의되는 상황에서 수행되는
    방법.
  16. 제 15 항에 있어서,
    상기 로컬 디스플레이(508) 상에서 상기 가상 영역의 구간(Zone)에 대한 공간적 레이아웃을 디스플레이하는 단계와,
    상기 로컬 디스플레이(508) 상에서 네비게이션 콘트롤 및 상호교류(interaction) 콘트롤을 제공하되, 상기 네비게이션 콘트롤은 상기 공유자가 상기 가상 영역 내 어디에 존재를 설정할지를 특정할 수 있게 하며, 상기 상호교류 콘트롤은 상기 공유자가 상기 가상 영역에서 상기 뷰어와의 상호교류를 관리할 수 있게 하는 단계와,
    상기 네비게이션 콘트롤을 통해 수신된 입력에 응답하여 하나 이상의 상기 구간 중 구간 각각에 상기 공유자의 개별 존재를 설정하는 단계와,
    상기 로컬 디스플레이(508) 상에서, 상기 공유자 및 상기 뷰어에 대한 개별 그래픽 표현을 상기 공유자 및 상기 뷰어가 각기 존재를 가지는 구간 각각에 묘사하는 단계를 더 포함하는
    방법.
  17. 제 16 항에 있어서,
    상기 식별된 윈도우(510-514)는 상기 소프트웨어 프로세스와 관련되는 적어도 한 개의 데이터 파일의 콘텐츠를 포함하며, 상기 방법은
    상기 공유자에 의한 입력에 응답하여 상기 데이터 파일을 상기 구간 중 개별 구간 내 스크린 보기(viewscreen) 오브젝트와 관련시키는 단계와,
    상기 식별하는 단계, 상기 생성하는 단계 및 상기 전송하는 단계를 상기 스크린 보기 오브젝트 상에 상기 데이터 파일을 보여주라는 상기 뷰어 네트워크 노드(14)로부터의 요청에 응답하여 수행하는 단계를 더 포함하는
    방법.
  18. 제 17 항에 있어서,
    상기 스크린 보기 오브젝트 상에 상기 합성 이미지(524)를 제공하는 단계를 더 포함하는
    방법.
  19. 제 17 항에 있어서,
    상기 식별하는 단계, 상기 생성하는 단계 및 상기 전송하는 단계를 여러 네트워크 노드 상에서 수행하는 단계, 및 상기 개별 합성 이미지를 상기 가상 영역 내 다른 스크린 보기 오브젝트 상에 제공하는 단계를 더 포함하는
    방법.
  20. 제 19 항에 있어서,
    상기 합성 이미지 중 개별 합성 이미지가 제공되는 상기 스크린 보기 오브젝트 각각에 대해, 상기 개별 합성 이미지(524)가 전송되어 나오는 상기 개별 네트워크 노드를 동작시키는 개별 공유자에 대한 그래픽 묘사를 보이는 단계를 더 포함하는
    방법.
  21. 제 1 항에 있어서,
    상기 뷰어 네트워크 노드(14) 상에서 실행되는 소프트웨어 프로세스와 관련된 스크린 데이터를 공유하라는 요청을 전송하는 단계와,
    상기 공유자 네트워크 노드(12)에서 상기 뷰어 네트워크 노드(14)로부터 공유된 스크린 데이터의 개별 합성 이미지(524)를 수신하는 단계를 더 포함하며, 상기 수신 및 전송 단계는 동시에 수행되는
    방법.
  22. 컴퓨터 판독가능 프로그램 코드가 수록된 적어도 하나의 컴퓨터 판독가능 매체(128, 124)에 있어서,
    상기 컴퓨터 판독가능 프로그램 코드는 다음의 단계를 포함하는 방법을 구현하도록 컴퓨터(52)에 의해 실행되며, 상기 방법은
    공유자 네트워크 노드(12)의 로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 소프트웨어 프로세스와 관련된 윈도우(510-514)를 식별하는 단계와,
    상기 공유자 네트워크 노드(12)에서, 상기 식별된 윈도우(510-514)가 상기 스크린 레이아웃(506) 내에 정렬되며 상기 스크린 레이아웃(506) 내 어떤 다른 윈도우에 의해서도 가려지지 않도록 상기 식별된 윈도우(510-514)의 합성 이미지를 생성하는 단계와,
    상기 공유자 네트워크 노드(12)로부터 뷰어(viewer) 네트워크 노드(14)로 상기 합성 이미지(524)를 전송하는 단계를 포함하는
    컴퓨터 판독가능 매체.
  23. 로컬 디스플레이(508),
    컴퓨터 판독가능 명령어를 저장하는 컴퓨터 판독가능 매체(128, 124), 및
    상기 컴퓨터 판독가능 매체와 연결되고, 상기 명령어를 실행하도록 동작되며, 상기 명령어의 실행에 적어도 부분적으로 기초하여 다음의 동작들을 수행하도록 작동되는 데이터 프로세싱 유닛(122)을 포함하되,
    상기 동작들은,
    상기 로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 소프트웨어 프로세스와 관련된 윈도우(510-514)를 식별하는 동작과,
    상기 식별된 윈도우(510-514)가 상기 스크린 레이아웃(506) 내에 정렬되며 상기 스크린 레이아웃(506) 내 어떤 다른 윈도우에 의해서도 가려지지 않도록 상기 식별된 윈도우(510-514)의 합성 이미지(524)를 생성하는 동작과,
    상기 합성 이미지(524)를 원격 뷰어 네트워크 노드(14)로 전송하는 동작을 포함하는,
    장치.
  24. 공유자 네트워크 노드(12) 상에서의 로컬 입력 장치 이벤트로부터 도출된 로컬 생성 명령(locally-generated commands)을 수신하는 단계와,
    원격 뷰어 네트워크 노드(14) 상에서의 원격 입력 장치 이벤트로부터 도출되는 원격 생성 명령(remotely-generated commands)을 수신하는 단계와,
    상기 수신된 명령을 명령 시퀀스로 프로세싱하는 단계와,
    상기 명령 시퀀스를 상기 공유자 네트워크 노드 상에서 실행되는 공유 프로세스로 보내는 단계와,
    상기 수신된 명령 시퀀스에 따라, 공유자 네트워크 노드(12)의 로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 상기 공유 프로세스와 관련된 하나 이상의 윈도우(510-514)를 제공하는 단계와,
    상기 하나 이상의 윈도우(510-514)가 스크린 레이아웃(506) 내에 제공되도록 상기 하나 이상의 윈도우(510-514)의 이미지를 생성하는 단계와,
    상기 공유자 네트워크 노드(12)로부터 상기 이미지를 상기 뷰어 네트워크 노드(14)로 전송하는 단계를 포함하는
    방법.
  25. 제 24 항에 있어서,
    상기 프로세싱하는 단계는 상기 공유자 네트워크 노드(12)로부터 수신된 공유 애플리케이션 이미지의 좌표계에서 상기 로컬 디스플레이(508) 상의 메인 윈도우의 좌표계로 상기 원격 생성 명령 내 스크린 위치 파라미터 값을 재매핑하는 단계를 포함하는
    방법.
  26. 제 25 항에 있어서,
    상기 프로세싱하는 단계는 상기 명령 시퀀스 내에 (i) 상기 재매핑된 스크린 위치 파라미터 값을 가진 원격 생성 명령 및 (ii) 상기 로컬 생성 명령을 배열하는 단계를 포함하는
    방법.
  27. 제 26 항에 있어서,
    상기 배열하는 단계는 (i) 상기 재매핑된 스크린 위치 파라미터 값을 가진 원격 생성 명령 및 (ii) 상기 로컬 생성 명령을 상기 로컬 생성 명령이 로컬 입력 장치 이벤트로부터 도출되는 개별 시점 및 상기 원격 생성 명령이 수신되는 개별 시점에 기초해 순서화하는 단계를 포함하는
    방법.
  28. 제 25 항에 있어서,
    상기 원격 입력 장치 이벤트로부터 도출된 명령 내 스크린 위치 파라미터 값을 상기 뷰어 네트워크 노드(14)의 원격 디스플레이(508) 상의 상기 메인 윈도우의 좌표계로부터 상기 공유 애플리케이션 이미지의 좌표계로 재매핑하는 단계를 더 포함하는
    방법.
  29. 제 28 항에 있어서,
    상기 재매핑하는 단계는 상기 뷰어 네트워크 노드(14) 상에서 수행되며, 상기 방법은 상기 재매핑된 스크린 위치 파라미터 값을 가진 원격 생성 명령을 상기 공유자 네트워크 노드(12)로 전송하는 단계를 더 포함하는
    방법.
  30. 컴퓨터 판독가능 프로그램 코드가 수록된 적어도 하나의 컴퓨터 판독가능 매체(128, 124)에 있어서,
    상기 컴퓨터 판독가능 프로그램 코드는 다음의 단계들을 포함하는 방법을 구현하도록 컴퓨터에 의해 실행되며, 상기 방법은
    공유자 네트워크 노드(12) 상에서의 로컬 입력 장치 이벤트로부터 도출된 로컬 생성 명령(locally-generated commands)을 수신하는 단계와,
    원격 뷰어 네트워크 노드(14) 상에서의 원격 입력 장치 이벤트로부터 도출되는 원격 생성 명령(remotely-generated commands)을 수신하는 단계와,
    상기 수신된 명령을 명령 시퀀스로 프로세싱하는 단계와,
    상기 명령 시퀀스를 상기 공유자 네트워크 노드(12) 상에서 실행되는 공유 프로세스로 보내는 단계와,
    상기 수신된 명령 시퀀스에 따라, 공유자 네트워크 노드(12)의 로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 상기 공유 프로세스와 관련된 하나 이상의 윈도우(510-514)를 제공하는 단계와,
    상기 하나 이상의 윈도우(510-514)가 스크린 레이아웃(506) 내에 제공되도록 상기 하나 이상의 윈도우(510-514)의 이미지를 생성하는 단계와,
    상기 공유자 네트워크 노드(12)로부터 상기 이미지를 상기 뷰어 네트워크 노드(14)로 전송하는 단계를 포함하는
    컴퓨터 판독가능 매체(128, 124).
  31. 로컬 디스플레이(508)와,
    컴퓨터 판독가능 명령어를 저장하는 컴퓨터 판독가능 매체(128, 124)와,
    상기 컴퓨터 판독가능 매체와 연결되고, 상기 명령어를 실행하도록 동작되며, 상기 명령어의 실행에 적어도 부분적으로 기초하여 다음의 동작들을 수행하도록 작동가능한 데이터 프로세싱 유닛(122)을 포함하되,
    상기 동작들은,
    로컬 디스플레이(508)와 관련된 로컬 입력 장치 이벤트로부터 도출되는 로컬 생성 명령(locally-generated commands)을 수신하는 동작,
    원격 뷰어 네트워크 노드(14) 상에서의 원격 입력 장치 이벤트로부터 도출되는 원격 생성 명령(remotely-generated commands)을 수신하는 동작,
    상기 수신된 명령어를 명령 시퀀스로 프로세싱하는 동작,
    상기 명령 시퀀스를 상기 데이터 프로세싱 유닛에 의해 실행중인 공유 프로세스로 전달하는 동작,
    로컬 디스플레이(508) 상의 스크린 레이아웃(506)에서, 상기 수신된 명령 시퀀스에 따라 상기 공유된 프로세스와 관련된 하나 이상의 윈도우(510-514)를 제공하는 동작,
    상기 하나 이상의 윈도우(510-514)가 상기 스크린 레이아웃(506) 내에 제공되도록 상기 하나 이상의 윈도우(510-514)의 이미지를 생성하는 동작, 및
    상기 이미지를 상기 뷰어 네트워크 노드(14)로 전송하는 동작을 포함하는,
    장치.
KR1020117026253A 2009-04-03 2010-03-22 애플리케이션 공유 KR20110134940A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/418,270 US8407605B2 (en) 2009-04-03 2009-04-03 Application sharing
US12/418,270 2009-04-03

Publications (1)

Publication Number Publication Date
KR20110134940A true KR20110134940A (ko) 2011-12-15

Family

ID=42827176

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026253A KR20110134940A (ko) 2009-04-03 2010-03-22 애플리케이션 공유

Country Status (6)

Country Link
US (2) US8407605B2 (ko)
EP (2) EP2645267A1 (ko)
KR (1) KR20110134940A (ko)
CN (1) CN102804161A (ko)
IL (1) IL215387A0 (ko)
WO (1) WO2010114724A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130116478A (ko) * 2012-04-03 2013-10-24 엘지전자 주식회사 싱크 디바이스, 소스 디바이스 및 그들의 제어 방법
KR20210121289A (ko) * 2019-02-25 2021-10-07 나이앤틱, 인크. 증강 현실 모바일 에지 컴퓨팅
US11757761B2 (en) 2019-12-20 2023-09-12 Niantic, Inc. Data hierarchy protocol for data transmission pathway selection
US11833420B2 (en) 2018-06-27 2023-12-05 Niantic, Inc. Low latency datagram-responsive computer network protocol

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9547694B1 (en) 2002-05-25 2017-01-17 hopTo Inc. Aggregated search
US9198084B2 (en) 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
US8667144B2 (en) 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
US8407605B2 (en) 2009-04-03 2013-03-26 Social Communications Company Application sharing
US20130073707A1 (en) * 2011-09-16 2013-03-21 Social Communications Company Capabilities based management of virtual areas
US7769806B2 (en) 2007-10-24 2010-08-03 Social Communications Company Automated real-time data stream switching in a shared virtual area communication environment
US8397168B2 (en) * 2008-04-05 2013-03-12 Social Communications Company Interfacing with a spatial virtual communication environment
SE533322C2 (sv) * 2007-12-21 2010-08-24 Tat The Astonishing Tribe Ab Förfarande, modul och anordning för att visa grafisk information
US8811294B2 (en) 2008-04-04 2014-08-19 Qualcomm Incorporated Apparatus and methods for establishing client-host associations within a wireless network
JP5368547B2 (ja) 2008-04-05 2013-12-18 ソーシャル・コミュニケーションズ・カンパニー 共有仮想エリアコミュニケーション環境ベースの装置および方法
US9514444B2 (en) 2009-01-15 2016-12-06 Sococo, Inc. Encapsulating virtual area based communicant assemblies
EP2377031A4 (en) 2008-12-05 2012-11-21 Social Communications Co REAL TIME CORE
US9398089B2 (en) 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
US9065874B2 (en) 2009-01-15 2015-06-23 Social Communications Company Persistent network resource and virtual area associations for realtime collaboration
US9319357B2 (en) 2009-01-15 2016-04-19 Social Communications Company Context based virtual area creation
US9853922B2 (en) 2012-02-24 2017-12-26 Sococo, Inc. Virtual area communications
US8412729B2 (en) 2009-04-22 2013-04-02 Genarts, Inc. Sharing of presets for visual effects or other computer-implemented effects
US8171423B2 (en) * 2009-06-17 2012-05-01 Brigham Young University Window broker architecture
US9264248B2 (en) 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
WO2011013805A1 (ja) 2009-07-31 2011-02-03 日本電気株式会社 制御サーバ、サービス提供システムおよび仮想的なインフラストラクチャの提供方法
US8271905B2 (en) * 2009-09-15 2012-09-18 International Business Machines Corporation Information presentation in virtual 3D
US20110138313A1 (en) * 2009-12-03 2011-06-09 Kevin Decker Visually rich tab representation in user interface
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
US8898577B2 (en) * 2010-03-09 2014-11-25 Microsoft Corporation Application sharing with occlusion removal
US9417691B2 (en) * 2010-03-26 2016-08-16 Nokia Technologies Oy Method and apparatus for ad-hoc peer-to-peer augmented reality environment
JP5740826B2 (ja) * 2010-03-29 2015-07-01 セイコーエプソン株式会社 画像表示装置、画像情報処理装置及び画像情報処理方法
US8762881B2 (en) * 2010-07-15 2014-06-24 Salesforce.Com, Inc. Taking screenshots of a failed application
US8839112B2 (en) 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
EP2625685B1 (en) 2010-10-05 2020-04-22 Citrix Systems, Inc. Display management for native user experiences
FR2968495B1 (fr) * 2010-12-06 2019-03-15 Isard Procede de partage d'apprentissage partiel d'une application logicielle
US8847985B2 (en) 2010-12-30 2014-09-30 International Business Machines Corporation Protecting screen information
US9582239B2 (en) 2011-01-21 2017-02-28 Qualcomm Incorporated User input back channel for wireless displays
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US8674957B2 (en) 2011-02-04 2014-03-18 Qualcomm Incorporated User input device for wireless back channel
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US9142193B2 (en) 2011-03-17 2015-09-22 Intellitact Llc Linear progression based window management
JP2012203889A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd 画面共有方法、画面共有装置、及びプログラム
US20120317501A1 (en) * 2011-06-09 2012-12-13 Anthony Constantine Milou Communication & Collaboration Method for Multiple Simultaneous Users
US8754892B2 (en) * 2011-10-28 2014-06-17 International Business Machines Corporation Visualization of virtual image relationships and attributes
US9612724B2 (en) 2011-11-29 2017-04-04 Citrix Systems, Inc. Integrating native user interface components on a mobile device
JP5857722B2 (ja) * 2011-12-20 2016-02-10 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
KR101410416B1 (ko) * 2011-12-21 2014-06-27 주식회사 케이티 원격 제어 방법, 시스템 및 원격 제어 사용자 인터페이스
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
WO2013119802A1 (en) 2012-02-11 2013-08-15 Social Communications Company Routing virtual area based communications
US20130254681A1 (en) * 2012-03-26 2013-09-26 International Business Machines Corporation Proxying an active link from a shared computer
JP6050023B2 (ja) * 2012-04-26 2016-12-21 任天堂株式会社 ゲームシステム、ゲーム処理方法、ゲームプログラム、およびゲーム装置
US20130339896A1 (en) * 2012-06-01 2013-12-19 Sas Ip User interface and method of data navigation in the user interface of engineering analysis applications
WO2013181026A1 (en) * 2012-06-02 2013-12-05 Social Communications Company Interfacing with a spatial virtual communications environment
JP2014021511A (ja) * 2012-07-12 2014-02-03 Sony Corp 表示制御装置、表示制御方法、プログラム、及び通信システム
US20140075377A1 (en) * 2012-09-10 2014-03-13 Samsung Electronics Co. Ltd. Method for connecting mobile terminal and external display and apparatus implementing the same
US9383975B1 (en) * 2013-01-28 2016-07-05 Richard Stanley Fencel Projection of software and integrated circuit diagrams into actual 3D space
US20140298192A1 (en) * 2013-03-27 2014-10-02 General Electric Company Display system and method
JP6381187B2 (ja) * 2013-08-09 2018-08-29 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
WO2015027329A1 (en) * 2013-08-30 2015-03-05 Zag Holdings Inc. View sharing and dual permission remote browsing methods and systems
CN103595715B (zh) * 2013-11-08 2017-02-15 腾讯科技(成都)有限公司 用于桌面直播的信息共享方法及装置
US10270871B2 (en) 2014-04-08 2019-04-23 Dropbox, Inc. Browser display of native application presence and interaction data
CN103929497B (zh) * 2014-04-30 2017-09-15 天脉聚源(北京)传媒科技有限公司 一种实时推送消息的方法及服务器
US9467329B2 (en) * 2014-05-29 2016-10-11 Blackberry Limited Coordinating activity views across operating system domains
TWI604375B (zh) * 2014-06-23 2017-11-01 緯創資通股份有限公司 螢幕分享方法以及使用該方法的裝置
JP6407624B2 (ja) 2014-08-14 2018-10-17 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびユーザ情報表示方法
JP6407622B2 (ja) * 2014-08-14 2018-10-17 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、画像データ送信方法および情報処理システム
JP6407623B2 (ja) 2014-08-14 2018-10-17 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、情報表示方法および情報処理システム
CN104238885B (zh) * 2014-09-11 2019-09-10 吴涛军 一种适用于多设备内容显示的自动布局以及内容显示的方法及装置
US9621650B2 (en) 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
CN106416170A (zh) * 2014-11-03 2017-02-15 华为技术有限公司 分享屏幕的方法、分享设备及接收设备
US20160139785A1 (en) * 2014-11-16 2016-05-19 Cisco Technology, Inc. Multi-modal communications
JP6312866B2 (ja) * 2015-01-23 2018-04-18 マクセル株式会社 表示装置および表示方法
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
US20180253201A1 (en) * 2015-03-26 2018-09-06 Wal-Mart Stores, Inc. Systems and methods for a multi-display collaboration environment
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US9658836B2 (en) 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
US11430411B2 (en) 2015-11-26 2022-08-30 Barco Nv Content sharing protocol
US10248933B2 (en) 2015-12-29 2019-04-02 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US10620811B2 (en) 2015-12-30 2020-04-14 Dropbox, Inc. Native application collaboration
WO2017117705A1 (zh) * 2016-01-04 2017-07-13 深圳迈瑞生物医疗电子股份有限公司 医疗设备间协同控制系统和方法及医疗工作站和通讯设备
KR102458444B1 (ko) * 2016-01-05 2022-10-25 삼성전자주식회사 전자 장치 및 그 동작 방법
KR20170096364A (ko) * 2016-02-16 2017-08-24 삼성전자주식회사 디스플레이 화면 구성 방법 및 이를 수행하는 전자 장치
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
CN105892976B (zh) * 2016-04-29 2019-02-01 广州视睿电子科技有限公司 实现多屏互动的方法及装置
US10212113B2 (en) 2016-09-19 2019-02-19 Google Llc Uniform resource identifier and image sharing for contextual information display
US10496734B2 (en) * 2016-09-26 2019-12-03 Microsoft Technology Licensing, Llc Intelligent navigation via a transient user interface control
US20180113603A1 (en) * 2016-10-25 2018-04-26 Prysm, Inc. Floating asset in a workspace
US10455188B2 (en) * 2016-11-18 2019-10-22 Microsoft Technology Licensing, Llc Correlating UI with CPU stacks for profiling sessions
US10303496B2 (en) * 2016-12-01 2019-05-28 Raja Singh Tuli System for reducing user-perceived lag in text data input and exchange with a server
CN107346119A (zh) * 2017-08-24 2017-11-14 苏睿 协同控制方法、装置及系统
CN107632808A (zh) * 2017-09-25 2018-01-26 上海闻泰信息技术有限公司 显示屏幕自动变换终端及其变换方法
CN107657698A (zh) * 2017-10-10 2018-02-02 覃和平 一种门禁统一支付的方法
US20190129576A1 (en) * 2017-10-27 2019-05-02 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Processing of corresponding menu items in response to receiving selection of an item from the respective menu
US10586071B2 (en) 2017-11-24 2020-03-10 International Business Machines Corporation Safeguarding confidential information during a screen share session
WO2019104085A1 (en) * 2017-11-27 2019-05-31 Blue Jeans Network, Inc. User interface with a hierarchical presentation of selection options for selecting a sharing mode of a video conference
CN108829528B (zh) * 2018-06-11 2021-06-25 腾讯科技(深圳)有限公司 内容分享方法和装置、消息处理方法和装置
US10866929B2 (en) 2018-07-20 2020-12-15 Slack Technologies, Inc. Group-based communication interface with subsidiary file communications
CN109684590A (zh) * 2018-12-25 2019-04-26 威创集团股份有限公司 一种浏览器网页数据共享方法及装置
CN110221798A (zh) * 2019-05-29 2019-09-10 华为技术有限公司 一种投屏方法、系统及相关装置
CN111338590A (zh) * 2020-02-19 2020-06-26 北京翼鸥教育科技有限公司 一种屏幕共享的发起、响应方法及互动系统
CN113542825B (zh) * 2020-04-20 2022-10-11 华为技术有限公司 投屏显示方法、系统、终端设备和存储介质
CN112286431B (zh) * 2020-10-30 2022-09-23 联想(北京)有限公司 一种视频共享内容的处理方法、装置及电子设备
CN112269886B (zh) * 2020-11-11 2021-05-25 游密科技(深圳)有限公司 共享图像采集方法、窗口共享方法和共享图像采集装置
CN112911329B (zh) * 2021-02-03 2023-08-25 广州虎牙科技有限公司 窗口直播方法、装置、电子设备和计算机可读存储介质
CN112559110B (zh) * 2021-02-22 2021-05-25 全时云商务服务股份有限公司 一种基于windows系统的放大镜穿透窗口的方法
CN114741063B (zh) * 2022-04-06 2023-08-22 山东赤子城网络技术有限公司 一种基于Lua语言的编程框架实现方法及系统
US11789602B1 (en) * 2022-04-18 2023-10-17 Spatial Systems Inc. Immersive gallery with linear scroll
CN114942812A (zh) * 2022-05-31 2022-08-26 上海嘉车信息科技有限公司 多媒体信息共享方法、装置和电子设备
US11836412B1 (en) 2023-02-20 2023-12-05 International Business Machines Corporation Screen sharing recall

Family Cites Families (260)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4271408A (en) 1978-10-17 1981-06-02 Stanley Electric Co., Ltd. Colored-light emitting display
US5745711A (en) * 1991-10-23 1998-04-28 Hitachi, Ltd. Display control method and apparatus for an electronic conference
EP0622930A3 (en) * 1993-03-19 1996-06-05 At & T Global Inf Solution Division of applications for computer arrangement with collaboration.
US5471318A (en) * 1993-04-22 1995-11-28 At&T Corp. Multimedia communications network
US5491743A (en) 1994-05-24 1996-02-13 International Business Machines Corporation Virtual conference system and terminal apparatus therefor
WO1995035535A1 (en) * 1994-06-17 1995-12-28 Intel Corporation Apparatus and method for application sharing in a graphic user interface
US5727155A (en) * 1994-09-09 1998-03-10 Intel Corporation Method and apparatus for dynamically controlling a remote system's access to shared applications on a host system
US5627978A (en) * 1994-12-16 1997-05-06 Lucent Technologies Inc. Graphical user interface for multimedia call set-up and call handling in a virtual conference on a desktop computer conferencing system
US6304283B1 (en) * 1995-01-31 2001-10-16 Canon Kabushiki Kaisha Conference apparatus and method for realistically reproducing image data and shared board data
CA2180891C (en) 1995-07-12 2010-01-12 Junichi Rekimoto Notification of updates in a three-dimensional virtual reality space sharing system
US5737533A (en) 1995-10-26 1998-04-07 Wegener Internet Projects Bv System for generating a virtual reality scene in response to a database search
US6219045B1 (en) 1995-11-13 2001-04-17 Worlds, Inc. Scalable virtual world chat client-server system
US5793365A (en) 1996-01-02 1998-08-11 Sun Microsystems, Inc. System and method providing a computer user interface enabling access to distributed workgroup members
US6570587B1 (en) 1996-07-26 2003-05-27 Veon Ltd. System and method and linking information to a video
US5764916A (en) * 1996-09-27 1998-06-09 Ichat, Inc. Method and apparatus for real time communication over a computer network
US6862625B1 (en) * 1996-09-27 2005-03-01 Avaya Technology Corp. Method and apparatus for real time network communication
US6057856A (en) 1996-09-30 2000-05-02 Sony Corporation 3D virtual reality multi-user interaction with superimposed positional information display for each user
US5890172A (en) 1996-10-08 1999-03-30 Tenretni Dynamics, Inc. Method and apparatus for retrieving data from a network using location identifiers
US6785708B1 (en) * 1996-10-30 2004-08-31 Avaya Inc. Method and apparatus for synchronizing browse and chat functions on a computer network
US7263526B1 (en) * 1996-10-30 2007-08-28 Avaya Technology Corp. Method and apparatus for embedding chat functions in a web page
JP3679526B2 (ja) * 1996-10-31 2005-08-03 キヤノン株式会社 画像共有装置、画面制御方法及びコンピュータ可読メモリ
US5982372A (en) 1996-11-14 1999-11-09 International Business Machines Corp. Visual metaphor for shortcut navigation in a virtual world
US7145898B1 (en) 1996-11-18 2006-12-05 Mci Communications Corporation System, method and article of manufacture for selecting a gateway of a hybrid communication system architecture
US6335927B1 (en) 1996-11-18 2002-01-01 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
JP3753207B2 (ja) * 1997-08-11 2006-03-08 富士ゼロックス株式会社 共同作業支援システムおよび共同作業支援方法
US6567980B1 (en) 1997-08-14 2003-05-20 Virage, Inc. Video cataloger system with hyperlinked output
US6005578A (en) 1997-09-25 1999-12-21 Mindsphere, Inc. Method and apparatus for visual navigation of information objects
GB9721667D0 (en) 1997-10-14 1997-12-10 Philips Electronics Nv Virtual environment navigation aid
JP3855430B2 (ja) 1998-01-23 2006-12-13 ソニー株式会社 情報処理装置および方法、情報処理システム、並びに記録媒体
US6833863B1 (en) 1998-02-06 2004-12-21 Intel Corporation Method and apparatus for still image capture during video streaming operations of a tethered digital camera
US6396509B1 (en) 1998-02-21 2002-05-28 Koninklijke Philips Electronics N.V. Attention-based interaction in a virtual environment
US6426778B1 (en) 1998-04-03 2002-07-30 Avid Technology, Inc. System and method for providing interactive components in motion video
US6380952B1 (en) 1998-04-07 2002-04-30 International Business Machines Corporation System for continuous display and navigation in a virtual-reality world
US5999206A (en) 1998-05-22 1999-12-07 Futaba Denshi Kogyo Kabushiki Kaisha Device for expanding light-amount correction dynamic range
US5999208A (en) * 1998-07-15 1999-12-07 Lucent Technologies Inc. System for implementing multiple simultaneous meetings in a virtual reality mixed media meeting room
US6119147A (en) * 1998-07-28 2000-09-12 Fuji Xerox Co., Ltd. Method and system for computer-mediated, multi-modal, asynchronous meetings in a virtual space
US6731314B1 (en) 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6215498B1 (en) 1998-09-10 2001-04-10 Lionhearth Technologies, Inc. Virtual command post
JP3846666B2 (ja) * 1998-09-24 2006-11-15 富士通株式会社 共有画面制御装置
US8332478B2 (en) 1998-10-01 2012-12-11 Digimarc Corporation Context sensitive connected content
JP3826604B2 (ja) 1998-10-16 2006-09-27 富士ゼロックス株式会社 プレゼンテーション資料のシナリオ生成装置およびシナリオ生成方法
US6389458B2 (en) 1998-10-30 2002-05-14 Ideaflood, Inc. Method, apparatus and system for directing access to content on a computer network
US6342906B1 (en) * 1999-02-02 2002-01-29 International Business Machines Corporation Annotation layer for synchronous collaboration
US7168048B1 (en) * 1999-03-24 2007-01-23 Microsoft Corporation Method and structure for implementing a layered object windows
US7007235B1 (en) * 1999-04-02 2006-02-28 Massachusetts Institute Of Technology Collaborative agent interaction control and synchronization system
US6388688B1 (en) 1999-04-06 2002-05-14 Vergics Corporation Graph-based visual navigation through spatial environments
US6909443B1 (en) * 1999-04-06 2005-06-21 Microsoft Corporation Method and apparatus for providing a three-dimensional task gallery computer interface
US6292188B1 (en) 1999-07-28 2001-09-18 Alltrue Networks, Inc. System and method for navigating in a digital information environment
KR19990078775A (ko) 1999-08-06 1999-11-05 신유진 3차원 가상 현실 공간에서의 전자 상거래 시스템 및 그 방법
US6480191B1 (en) 1999-09-28 2002-11-12 Ricoh Co., Ltd. Method and apparatus for recording and playback of multidimensional walkthrough narratives
US6735708B2 (en) 1999-10-08 2004-05-11 Dell Usa, L.P. Apparatus and method for a combination personal digital assistant and network portable device
US6772195B1 (en) 1999-10-29 2004-08-03 Electronic Arts, Inc. Chat clusters for a virtual world application
JP2001195491A (ja) 1999-11-02 2001-07-19 Matsushita Electric Works Ltd 住空間関連商品の販売支援方法と課金方法及びそのためのシステムと記録媒体
JP2001154966A (ja) 1999-11-29 2001-06-08 Sony Corp コンピュータ・ネットワーク上で構築・提供される共有仮想空間上で複数ユーザが参加可能な仮想会話を支援する会話支援システム及び会話支援方法、並びに、プログラム記憶媒体
US6708172B1 (en) 1999-12-22 2004-03-16 Urbanpixel, Inc. Community-based shared multiple browser environment
US20060184886A1 (en) * 1999-12-22 2006-08-17 Urbanpixel Inc. Spatial chat in a multiple browser environment
US6721741B1 (en) 2000-01-24 2004-04-13 Friskit, Inc. Streaming media search system
KR100694028B1 (ko) 2000-01-25 2007-03-12 삼성전자주식회사 멀티미디어 파일 작성용 저작장치 및 방법
US20010034740A1 (en) 2000-02-14 2001-10-25 Andruid Kerne Weighted interactive grid presentation system and method for streaming a multimedia collage
US7240093B1 (en) 2000-02-29 2007-07-03 Microsoft Corporation Use of online messaging to facilitate selection of participants in game play
KR100369640B1 (ko) 2000-03-03 2003-01-29 신유진 3차원 가상 현실 공간에서의 박람회 개최 시스템 및 그방법
JP3345600B2 (ja) 2000-04-10 2002-11-18 コナミ株式会社 ゲームシステムおよびコンピュータ読取可能な記憶媒体
JP4325075B2 (ja) 2000-04-21 2009-09-02 ソニー株式会社 データオブジェクト管理装置
KR100382854B1 (ko) 2000-05-04 2003-05-09 주식회사 쿼터뷰 아바타행위 기록/재생을 이용한 메시지전달 시스템 및 방법
US6784901B1 (en) 2000-05-09 2004-08-31 There Method, system and computer program product for the delivery of a chat message in a 3D multi-user environment
US6714222B1 (en) 2000-06-21 2004-03-30 E2 Home Ab Graphical user interface for communications
US20020026388A1 (en) 2000-08-01 2002-02-28 Chris Roebuck Method of distributing a product, providing incentives to a consumer, and collecting data on the activities of a consumer
US7054508B2 (en) 2000-08-03 2006-05-30 Canon Kabushiki Kaisha Data editing apparatus and method
JP2002149580A (ja) 2000-11-15 2002-05-24 Canon Inc サーバ装置、ユーザ端末装置、仮想空間システム、ユーザ情報配信方法、ユーザ情報表示方法、ユーザ情報配信表示方法、及び記憶媒体
KR20020017558A (ko) * 2000-08-31 2002-03-07 김종민 가상 공간 상에서의 북마킹 시스템 및 방법
JP2002083320A (ja) 2000-09-07 2002-03-22 Sony Corp 仮想会話支援システム及び仮想会話支援、並びに記憶媒体
US7036082B1 (en) * 2000-09-21 2006-04-25 Nortel Networks Limited Controlling communications through a virtual reality environment
US8117281B2 (en) * 2006-11-02 2012-02-14 Addnclick, Inc. Using internet content as a means to establish live social networks by linking internet users to each other who are simultaneously engaged in the same and/or similar content
US7203741B2 (en) 2000-10-12 2007-04-10 Peerapp Ltd. Method and system for accelerating receipt of data in a client-to-client network
JP2002123479A (ja) 2000-10-17 2002-04-26 Hitachi Ltd ディスク制御装置およびそのキャッシュ制御方法
JP2002123478A (ja) 2000-10-17 2002-04-26 Isao:Kk チャットシステム、チャット情報処理装置、チャット情報処理方法、および、記録媒体
AU2001238104A1 (en) 2000-11-17 2002-05-27 Wheretheheckisit.Com, Llp Virtual directory
US20020116458A1 (en) 2000-12-14 2002-08-22 Jonathan Bricklin Web-based dating service
US20020075305A1 (en) * 2000-12-18 2002-06-20 Beaton Brian F. Graphical user interface for a virtual team environment
US7925703B2 (en) 2000-12-26 2011-04-12 Numedeon, Inc. Graphical interactive interface for immersive online communities
JP2002224447A (ja) 2001-01-31 2002-08-13 Square Co Ltd ビデオゲーム装置およびその制御方法、ならびにビデオゲームのプログラムおよびそのプログラムを記録したコンピュータ読取り可能な記録媒体。
US7076503B2 (en) 2001-03-09 2006-07-11 Microsoft Corporation Managing media objects in a database
US20060161624A1 (en) * 2001-04-13 2006-07-20 Elaine Montgomery Methods and apparatuses for dynamically sharing a portion of a display for application based screen sampling
US20020165922A1 (en) * 2001-04-13 2002-11-07 Songxiang Wei Application based screen sampling
US20020178072A1 (en) 2001-05-24 2002-11-28 International Business Machines Corporation Online shopping mall virtual association
US20020188959A1 (en) 2001-06-12 2002-12-12 Koninklijke Philips Electronics N.V. Parallel and synchronized display of augmented multimedia information
US7188317B1 (en) * 2001-06-13 2007-03-06 Microsoft Corporation Dynamic multiple window display having independently linked windows
US20030043200A1 (en) 2001-08-09 2003-03-06 Urbanpixel Inc Interactive multi-level mapping in a multiple browser environment
JP2003058482A (ja) 2001-08-14 2003-02-28 Fujitsu Ltd エリアチャットルーム提供方法,端末側エリアチャット処理方法,エリアチャットルーム提供処理プログラム記録媒体,エリアチャットルーム提供装置
JP2003067317A (ja) 2001-08-30 2003-03-07 Fuji Xerox Co Ltd メッセージ交換方法、コンピュータ、管理装置、記録媒体
US20030065558A1 (en) 2001-09-12 2003-04-03 Cameron Shaw Method and apparatus for multi-vendor powered business portal with intelligent service promotion and user profile gathering
US20030077561A1 (en) * 2001-10-18 2003-04-24 Abraham Alsop Web server for printable whiteboards
US7415502B2 (en) 2001-11-16 2008-08-19 Sbc Technology Resources, Inc. Method and system for intelligent routing based on presence detection
KR100453225B1 (ko) 2001-12-26 2004-10-15 한국전자통신연구원 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법
AUPR989802A0 (en) 2002-01-09 2002-01-31 Lake Technology Limited Interactive spatialized audiovisual system
US7058896B2 (en) 2002-01-16 2006-06-06 Silicon Graphics, Inc. System, method and computer program product for intuitive interactive navigation control in virtual environments
JP3829722B2 (ja) 2002-01-23 2006-10-04 ソニー株式会社 情報処理装置および方法、並びにプログラム
US7689667B2 (en) 2002-02-21 2010-03-30 International Business Machines Corporation Protocol to fix broken links on the world wide web
US7336779B2 (en) * 2002-03-15 2008-02-26 Avaya Technology Corp. Topical dynamic chat
US20040128350A1 (en) * 2002-03-25 2004-07-01 Lou Topfl Methods and systems for real-time virtual conferencing
US7263660B2 (en) 2002-03-29 2007-08-28 Microsoft Corporation System and method for producing a video skim
US7418664B2 (en) * 2002-04-03 2008-08-26 Microsoft Corporation Application sharing single document sharing
US7028266B2 (en) * 2002-04-05 2006-04-11 Microsoft Corporation Processing occluded windows during application sharing
US7062712B2 (en) 2002-04-09 2006-06-13 Fuji Xerox Co., Ltd. Binding interactive multichannel digital document system
US7454760B2 (en) * 2002-04-22 2008-11-18 Rosebud Lms, Inc. Method and software for enabling n-way collaborative work over a network of computers
US7036089B2 (en) * 2002-04-23 2006-04-25 Hewlett-Packard Development Company, L.P. Distribution of application windows in a computing device display
US6976846B2 (en) 2002-05-08 2005-12-20 Accenture Global Services Gmbh Telecommunications virtual simulator
US7293243B1 (en) * 2002-05-22 2007-11-06 Microsoft Corporation Application sharing viewer presentation
US7356563B1 (en) * 2002-06-06 2008-04-08 Microsoft Corporation Methods of annotating a collaborative application display
US7640300B2 (en) 2002-06-10 2009-12-29 Microsoft Corporation Presence and notification system for maintaining and communicating information
KR20040011825A (ko) 2002-07-30 2004-02-11 김동현 인터넷 망을 기반으로 한 가상백화점 관리 시스템 및 그관리 방법
US7844662B2 (en) 2002-10-17 2010-11-30 At&T Intellectual Property Ii, L.P. Merging instant messaging (IM) chat sessions
US7035942B2 (en) 2002-09-17 2006-04-25 Bellsouth Intellectual Property Corp. Server-based message protocol translation
US7434167B2 (en) * 2002-09-30 2008-10-07 Microsoft Corporation Accessibility system and method
JP2004135051A (ja) 2002-10-10 2004-04-30 Sony Corp 情報処理システム、サービス提供装置および方法、情報処理装置および方法、記録媒体、並びにプログラム
EP1576769A4 (en) 2002-11-13 2011-08-31 Intel Corp MULTIMODE WEB INTERACTION ON A WIRELESS NETWORK
US7636755B2 (en) 2002-11-21 2009-12-22 Aol Llc Multiple avatar personalities
US7474741B2 (en) * 2003-01-20 2009-01-06 Avaya Inc. Messaging advise in presence-aware networks
US20040179037A1 (en) 2003-03-03 2004-09-16 Blattner Patrick D. Using avatars to communicate context out-of-band
JP2004272579A (ja) 2003-03-07 2004-09-30 Toshiba Corp オンラインサービス提供システム、コミュニケーション管理装置とそのプログラム、ならびにコミュニケーション管理方法
US7213228B2 (en) * 2003-03-17 2007-05-01 Macrovision Corporation Methods and apparatus for implementing a remote application over a network
US8484576B2 (en) * 2003-04-17 2013-07-09 Supersonic Aerospace International, Llc System and method for customizing multiple windows of information on a display
EP2357623A1 (en) 2003-04-25 2011-08-17 Apple Inc. Graphical user interface for browsing, searching and presenting media items
US7260784B2 (en) * 2003-05-07 2007-08-21 International Business Machines Corporation Display data mapping method, system, and program product
WO2004104758A2 (en) 2003-05-16 2004-12-02 Picasa, Inc. Networked chat and media sharing systems and methods
US7467356B2 (en) 2003-07-25 2008-12-16 Three-B International Limited Graphical user interface for 3d virtual display browser using virtual display windows
US7236472B2 (en) 2003-09-16 2007-06-26 Research In Motion Limited Method for creating a peer-to-peer immediate messaging solution without using an instant messaging server
US7503006B2 (en) 2003-09-25 2009-03-10 Microsoft Corporation Visual indication of current voice speaker
US7813488B2 (en) * 2003-09-29 2010-10-12 Siemens Enterprise Communications, Inc. System and method for providing information regarding an identity's media availability
US20050080666A1 (en) * 2003-10-09 2005-04-14 Laura Treibitz Doll history software
US20050080866A1 (en) 2003-10-14 2005-04-14 Kent Larry G. Selectively displaying time indications for instant messaging (IM) messages
US7817163B2 (en) * 2003-10-23 2010-10-19 Microsoft Corporation Dynamic window anatomy
US7305438B2 (en) 2003-12-09 2007-12-04 International Business Machines Corporation Method and system for voice on demand private message chat
US10152190B2 (en) * 2003-12-15 2018-12-11 Open Invention Network, Llc Systems and methods for improved application sharing in a multimedia collaboration session
JP2005182331A (ja) 2003-12-18 2005-07-07 Sony Corp 情報処理システム、サービス提供装置および方法、情報処理装置および方法、並びに、プログラムおよび記録媒体
US7707503B2 (en) 2003-12-22 2010-04-27 Palo Alto Research Center Incorporated Methods and systems for supporting presentation tools using zoomable user interface
KR100566263B1 (ko) 2004-03-26 2006-03-29 삼성전자주식회사 스케쥴 내용에 따라 메신저 상태 정보를 변경하는 메신저서비스 제공 시스템 및 방법
JP2005286749A (ja) 2004-03-30 2005-10-13 Matsushita Electric Ind Co Ltd 映像復号化装置およびそれを用いた映像伝送システム
US20060031779A1 (en) * 2004-04-15 2006-02-09 Citrix Systems, Inc. Selectively sharing screen data
US7680885B2 (en) * 2004-04-15 2010-03-16 Citrix Systems, Inc. Methods and apparatus for synchronization of data set representations in a bandwidth-adaptive manner
US7908663B2 (en) 2004-04-20 2011-03-15 Microsoft Corporation Abstractions and automation for enhanced sharing and collaboration
US7529690B2 (en) 2004-05-22 2009-05-05 Altaf Hadi System and method for delivering real time remote buying, selling, meeting, and interacting in a virtual reality environment
US7996785B2 (en) * 2004-06-30 2011-08-09 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
US7945619B1 (en) 2004-09-20 2011-05-17 Jitendra Chawla Methods and apparatuses for reporting based on attention of a user during a collaboration session
KR20060060788A (ko) 2004-11-30 2006-06-05 전경열 캐릭터를 이용한 가상현실 시스템 및 가상현실 구현방법
US20060167996A1 (en) * 2005-01-13 2006-07-27 Orsolini Garry S System and method for enabling electronic presentations
US7657837B2 (en) * 2005-04-06 2010-02-02 Ericom Software Ltd. Seamless windows functionality to remote desktop sessions regarding z-order
US7506264B2 (en) 2005-04-28 2009-03-17 International Business Machines Corporation Method and apparatus for presenting navigable data center information in virtual reality using leading edge rendering engines
US20060271877A1 (en) * 2005-05-25 2006-11-30 Citrix Systems, Inc. A system and methods for selective sharing of an application window
US7396281B2 (en) 2005-06-24 2008-07-08 Disney Enterprises, Inc. Participant interaction with entertainment in real and virtual environments
US20070011232A1 (en) * 2005-07-06 2007-01-11 Microsoft Corporation User interface for starting presentations in a meeting
KR100686382B1 (ko) 2005-07-08 2007-02-22 엔에이치엔(주) 싱크 서버를 이용한 메신저 알림 시스템 및 방법
US7734692B1 (en) 2005-07-22 2010-06-08 Oracle America, Inc. Network collaboration system with private voice chat
US7925000B2 (en) * 2005-08-29 2011-04-12 Avaya Inc. Managing held telephone calls from a remote telecommunications terminal
US7765483B2 (en) * 2005-09-12 2010-07-27 Microsoft Corporation Filtering obscured data from a remote client display
CN101300621B (zh) 2005-09-13 2010-11-10 时空3D公司 用于提供三维图形用户界面的系统和方法
US8146002B2 (en) * 2005-12-08 2012-03-27 International Business Machines Corporation Screen sharing session with selective pop-ups
US7489772B2 (en) 2005-12-30 2009-02-10 Nokia Corporation Network entity, method and computer program product for effectuating a conference session
JP4643454B2 (ja) 2006-01-10 2011-03-02 株式会社東芝 動画像復号装置及び動画像復号方法
US7783592B2 (en) 2006-01-10 2010-08-24 Aol Inc. Indicating recent content publication activity by a user
US8185437B2 (en) 2007-07-12 2012-05-22 Utbk, Inc. Systems and methods to provide communication connections via partners
US20070184855A1 (en) 2006-02-03 2007-08-09 Research In Motion Limited Visual representation of contact location
US20070192427A1 (en) 2006-02-16 2007-08-16 Viktors Berstis Ease of use feature for audio communications within chat conferences
US7996776B2 (en) * 2006-02-27 2011-08-09 Microsoft Corporation Shared telepointer
US20080086696A1 (en) 2006-03-03 2008-04-10 Cadcorporation.Com Inc. System and Method for Using Virtual Environments
JP4617268B2 (ja) 2006-03-14 2011-01-19 キヤノン株式会社 記憶装置および記憶装置の処理方法
US8478859B2 (en) 2006-03-22 2013-07-02 Cisco Technology, Inc. Providing an aggregate reachability status
US20070233785A1 (en) * 2006-03-30 2007-10-04 International Business Machines Corporation Communicating using collaboration spaces
AU2006341412B2 (en) 2006-03-31 2011-06-16 Heulab Pte Ltd Instant message for a virtual learning community
US7689926B2 (en) * 2006-03-31 2010-03-30 Microsoft Corporation Selective window exclusion for captured content
KR20070105088A (ko) 2006-04-25 2007-10-30 함현주 캐릭터를 기반으로 하는 쇼핑몰 시스템 및 운영방법
US20080052373A1 (en) 2006-05-01 2008-02-28 Sms.Ac Systems and methods for a community-based user interface
US8223186B2 (en) 2006-05-31 2012-07-17 Hewlett-Packard Development Company, L.P. User interface for a video teleconference
US20080091692A1 (en) 2006-06-09 2008-04-17 Christopher Keith Information collection in multi-participant online communities
US7643459B2 (en) 2006-06-16 2010-01-05 Alcatel-Lucent Usa Inc. Methods, devices and architectures for establishing peer-to-peer sessions
US20070291034A1 (en) 2006-06-20 2007-12-20 Dones Nelson C System for presenting a navigable virtual subway system, and method for operating and using the same
US20070299778A1 (en) 2006-06-22 2007-12-27 Microsoft Corporation Local peer-to-peer digital content distribution
US7933955B2 (en) 2006-07-11 2011-04-26 Igor Khalatian One-click universal screen sharing
US7616624B2 (en) * 2006-07-20 2009-11-10 Avaya Inc. Determining user availability based on the expected duration of a new event
US7680098B2 (en) * 2006-07-20 2010-03-16 Avaya Inc. Determining group availability on different communication media
US8295206B2 (en) * 2006-07-20 2012-10-23 Avaya Inc. Rule-based system for determining user availability
US7680480B2 (en) * 2006-07-20 2010-03-16 Avaya Inc. Determining user availability based on a past event
US20080033941A1 (en) 2006-08-07 2008-02-07 Dale Parrish Verfied network identity with authenticated biographical information
US7958453B1 (en) 2006-09-29 2011-06-07 Len Bou Taing System and method for real-time, multi-user, interactive and collaborative environments on the web
CN101170572A (zh) 2006-10-23 2008-04-30 日电(中国)有限公司 基于p2p sip技术实现的多媒体网络通信系统
EP2098010A1 (en) 2006-11-30 2009-09-09 WANLESS, James Andrew A method and system for providing automated real-time contact information
US7765259B2 (en) * 2006-12-05 2010-07-27 Avaya Inc. System and method for aggregation of user conversations and visualizing personal communications map
US8706169B2 (en) 2006-12-28 2014-04-22 Yahoo! Inc. Interface overlay
US8554868B2 (en) 2007-01-05 2013-10-08 Yahoo! Inc. Simultaneous sharing communication interface
US9530142B2 (en) 2007-02-13 2016-12-27 Claudia Juliana Minsky Method and system for creating a multifunctional collage useable for client/server communication
US20080209075A1 (en) 2007-02-22 2008-08-28 Yahoo! Inc. Synchronous delivery of media content and real-time communication for online dating
GB0703974D0 (en) 2007-03-01 2007-04-11 Sony Comp Entertainment Europe Entertainment device
EP2132650A4 (en) 2007-03-01 2010-10-27 Sony Comp Entertainment Us SYSTEM AND METHOD FOR COMMUNICATING WITH A VIRTUAL WORLD
WO2008106196A1 (en) 2007-03-01 2008-09-04 Sony Computer Entertainment America Inc. Virtual world avatar control, interactivity and communication interactive messaging
US8108799B2 (en) * 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080250115A1 (en) 2007-04-04 2008-10-09 Vaidy Iyer Enterprise Notification System
US20080252637A1 (en) 2007-04-14 2008-10-16 Philipp Christian Berndt Virtual reality-based teleconferencing
US20080263460A1 (en) 2007-04-20 2008-10-23 Utbk, Inc. Methods and Systems to Connect People for Virtual Meeting in Virtual Reality
US20080262911A1 (en) 2007-04-20 2008-10-23 Utbk, Inc. Methods and Systems to Search in Virtual Reality for Real Time Communications
US20080262910A1 (en) 2007-04-20 2008-10-23 Utbk, Inc. Methods and Systems to Connect People via Virtual Reality for Real Time Communications
US7840668B1 (en) * 2007-05-24 2010-11-23 Avaya Inc. Method and apparatus for managing communication between participants in a virtual environment
US20080301557A1 (en) 2007-06-04 2008-12-04 Igor Kotlyar Systems, methods and software products for online dating
WO2009000028A1 (en) 2007-06-22 2008-12-31 Global Coordinate Software Limited Virtual 3d environments
US8243116B2 (en) 2007-09-24 2012-08-14 Fuji Xerox Co., Ltd. Method and system for modifying non-verbal behavior for social appropriateness in video conferencing and other computer mediated communications
US20090089685A1 (en) 2007-09-28 2009-04-02 Mordecai Nicole Y System and Method of Communicating Between A Virtual World and Real World
US8245241B2 (en) 2007-10-02 2012-08-14 International Business Machines Corporation Arrangements for interactivity between a virtual universe and the world wide web
US20090096810A1 (en) * 2007-10-11 2009-04-16 Green Brian D Method for selectively remoting windows
US7769806B2 (en) 2007-10-24 2010-08-03 Social Communications Company Automated real-time data stream switching in a shared virtual area communication environment
US20090288007A1 (en) 2008-04-05 2009-11-19 Social Communications Company Spatial interfaces for realtime networked communications
US8732236B2 (en) 2008-12-05 2014-05-20 Social Communications Company Managing network communications between network nodes and stream transport protocol
US20130073707A1 (en) 2011-09-16 2013-03-21 Social Communications Company Capabilities based management of virtual areas
US7844724B2 (en) 2007-10-24 2010-11-30 Social Communications Company Automated real-time data stream switching in a shared virtual area communication environment
US8407605B2 (en) 2009-04-03 2013-03-26 Social Communications Company Application sharing
US9357025B2 (en) 2007-10-24 2016-05-31 Social Communications Company Virtual area based telephony communications
US20090112997A1 (en) 2007-10-25 2009-04-30 Cisco Technology, Inc. Utilizing Presence Data Associated with Web Item
US20090113314A1 (en) 2007-10-30 2009-04-30 Dawson Christopher J Location and placement of avatars in virtual worlds
US20090128567A1 (en) 2007-11-15 2009-05-21 Brian Mark Shuster Multi-instance, multi-user animation with coordinated chat
JP5258020B2 (ja) 2008-01-25 2013-08-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 通信を制御する技術
CN101499080A (zh) 2008-02-01 2009-08-05 网秦无限(北京)科技有限公司 在移动终端上快捷获取信息服务的方法和系统
US8584024B2 (en) * 2008-02-01 2013-11-12 International Business Machines Corporation Avatar cloning in a virtual world
US20090222742A1 (en) 2008-03-03 2009-09-03 Cisco Technology, Inc. Context sensitive collaboration environment
CN101539856B (zh) * 2008-03-17 2013-01-16 国际商业机器公司 在应用共享软件中恢复被遮挡窗口的方法和装置
US8605863B1 (en) * 2008-03-18 2013-12-10 Avaya Inc. Method and apparatus for providing state indication on a telephone call
KR101467767B1 (ko) 2008-03-31 2014-12-03 엘지전자 주식회사 단말기 및 이것의 인스턴트 메시징 서비스 수행 방법
US8531447B2 (en) 2008-04-03 2013-09-10 Cisco Technology, Inc. Reactive virtual environment
US8312380B2 (en) 2008-04-04 2012-11-13 Yahoo! Inc. Local map chat
JP5368547B2 (ja) 2008-04-05 2013-12-18 ソーシャル・コミュニケーションズ・カンパニー 共有仮想エリアコミュニケーション環境ベースの装置および方法
US20120246582A1 (en) 2008-04-05 2012-09-27 Social Communications Company Interfacing with a spatial virtual communications environment
US20090259948A1 (en) 2008-04-15 2009-10-15 Hamilton Ii Rick A Surrogate avatar control in a virtual universe
US8248404B2 (en) 2008-05-19 2012-08-21 International Business Machines Corporation Event determination in a virtual universe
US8042051B2 (en) 2008-05-30 2011-10-18 International Business Machines Corporation Apparatus for navigation and interaction in a virtual meeting place
US8365076B2 (en) 2008-06-10 2013-01-29 International Business Machines Corporation System for concurrently managing multiple avatars
US20100058202A1 (en) 2008-08-28 2010-03-04 Mohamed Rostom Method system and program product for providing enabling an interactive and social search engine
US8384738B2 (en) * 2008-09-02 2013-02-26 Hewlett-Packard Development Company, L.P. Compositing windowing system
US9384469B2 (en) 2008-09-22 2016-07-05 International Business Machines Corporation Modifying environmental chat distance based on avatar population density in an area of a virtual world
US20100131868A1 (en) * 2008-11-26 2010-05-27 Cisco Technology, Inc. Limitedly sharing application windows in application sharing sessions
EP2377089A2 (en) 2008-12-05 2011-10-19 Social Communications Company Managing interactions in a network communications environment
EP2377031A4 (en) 2008-12-05 2012-11-21 Social Communications Co REAL TIME CORE
US20100162121A1 (en) * 2008-12-22 2010-06-24 Nortel Networks Limited Dynamic customization of a virtual world
US20100169796A1 (en) * 2008-12-28 2010-07-01 Nortel Networks Limited Visual Indication of Audio Context in a Computer-Generated Virtual Environment
US8542232B2 (en) * 2008-12-28 2013-09-24 Avaya Inc. Method and apparatus for monitoring user attention with a computer-generated virtual environment
US9064023B2 (en) * 2008-12-29 2015-06-23 Avaya Inc. Providing web content in the context of a virtual environment
US20100169799A1 (en) * 2008-12-30 2010-07-01 Nortel Networks Limited Method and Apparatus for Enabling Presentations to Large Numbers of Users in a Virtual Environment
US9065874B2 (en) 2009-01-15 2015-06-23 Social Communications Company Persistent network resource and virtual area associations for realtime collaboration
US8775595B2 (en) 2010-09-11 2014-07-08 Social Communications Company Relationship based presence indicating in virtual area contexts
US8453062B2 (en) 2009-02-13 2013-05-28 International Business Machines Corporation Virtual world viewer
US20100228560A1 (en) * 2009-03-04 2010-09-09 Avaya Inc. Predictive buddy list-reorganization based on call history information
US8275623B2 (en) 2009-03-06 2012-09-25 At&T Intellectual Property I, L.P. Method and apparatus for analyzing discussion regarding media programs
US8499085B2 (en) * 2009-03-16 2013-07-30 Avaya, Inc. Advanced availability detection
US8386255B2 (en) * 2009-03-17 2013-02-26 Avaya Inc. Providing descriptions of visually presented information to video teleconference participants who are not video-enabled
US20100246570A1 (en) * 2009-03-24 2010-09-30 Avaya Inc. Communications session preparation method and apparatus
JP5620134B2 (ja) * 2009-03-30 2014-11-05 アバイア インク. グラフィカル表示を用いて通信セッションの信頼関係を管理するシステムと方法。
US20100262550A1 (en) 2009-04-08 2010-10-14 Avaya Inc. Inter-corporate collaboration overlay solution for professional social networks
US8396960B2 (en) 2009-05-08 2013-03-12 Canon Kabushiki Kaisha Efficient network utilization using multiple physical interfaces
US8442189B2 (en) * 2009-06-22 2013-05-14 Avaya Inc. Unified communications appliance
US8924261B2 (en) 2009-10-30 2014-12-30 Etsy, Inc. Method for performing interactive online shopping
US20110169927A1 (en) 2010-01-13 2011-07-14 Coco Studios Content Presentation in a Three Dimensional Environment
US20110231781A1 (en) 2010-03-19 2011-09-22 International Business Machines Corporation System and method for virtual object sharing and management in virtual worlds
EP2606466A4 (en) 2010-08-16 2014-03-05 Social Communications Co PROMOTING INTERACTIONS WITH COMMUNICANTS IN A NETWORK COMMUNICATION ENVIRONMENT
WO2012135231A2 (en) 2011-04-01 2012-10-04 Social Communications Company Creating virtual areas for realtime communications

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130116478A (ko) * 2012-04-03 2013-10-24 엘지전자 주식회사 싱크 디바이스, 소스 디바이스 및 그들의 제어 방법
US11833420B2 (en) 2018-06-27 2023-12-05 Niantic, Inc. Low latency datagram-responsive computer network protocol
KR20210121289A (ko) * 2019-02-25 2021-10-07 나이앤틱, 인크. 증강 현실 모바일 에지 컴퓨팅
US11794101B2 (en) 2019-02-25 2023-10-24 Niantic, Inc. Augmented reality mobile edge computing
US11757761B2 (en) 2019-12-20 2023-09-12 Niantic, Inc. Data hierarchy protocol for data transmission pathway selection

Also Published As

Publication number Publication date
EP2645267A1 (en) 2013-10-02
WO2010114724A3 (en) 2011-01-13
WO2010114724A2 (en) 2010-10-07
US20100257450A1 (en) 2010-10-07
EP2414948A2 (en) 2012-02-08
USRE46309E1 (en) 2017-02-14
CN102804161A (zh) 2012-11-28
EP2414948A4 (en) 2012-12-05
IL215387A0 (en) 2011-12-29
US8407605B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
USRE46309E1 (en) Application sharing
US9411489B2 (en) Interfacing with a spatial virtual communication environment
US11785056B2 (en) Web browser interface for spatial communication environments
US20210349604A1 (en) Shared Virtual Area Communication Environment Based Apparatus and Methods
CN107636584B (zh) 协作系统中虚拟工作空间视口的跟随模式和位置标记
KR101565665B1 (ko) 네트워크 통신 환경에서 커뮤니컨트 상호작용을 촉진하는 방법
US9813463B2 (en) Phoning into virtual communication environments
US20090288007A1 (en) Spatial interfaces for realtime networked communications
US20230339816A1 (en) Visual Communications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application