Method, medium and system for generating a visualization object from a collection of data points
By generating and arranging 3D objects based on the attribute values of data points, the visualization problem of complex multi-dimensional data is solved, and information-rich 3D visualization is realized, and the data comprehensibility is improved.
Patent Information
- Application Number
- CN201980069405.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-21
- Filing Date
- 2019-10-21
- Publication Date
- 2025-04-15
- Estimated Expiration
- 2039-10-21
AI Technical Summary
The prior art has difficulty in visualizing complex multidimensional data efficiently, especially in the lack of optimization in highlighting or emphasizing data collection.
By receiving the data set, 3D objects corresponding to the data points are generated and these objects are arranged in a predetermined 3D shape, and the appearance and position of the 3D objects are controlled based on the attribute values of the data points.
It realizes information-rich 3D visualization of complex multidimensional data, can quickly convey data aspects, and improves data comprehensibility.
Smart Images

Figure CN112868051B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is a non-provisional application of U.S. Provisional Application No. 62 / 748,504, filed on October 21, 2018, entitled “3D VISUALIZATION SERVICES INTEGRATING VARIOUS DATA SOURCES AND DISPLAY DEVICES,” and claims the benefit and priority of 35 U.S.C. 119(e), the entire contents of which are incorporated herein by reference for all purposes.
[0003] This application is also related to the following four U.S. patent applications:
[0004] U.S. Patent Application No. 16 / 658,162, filed by Moroze et al. on October 21, 2019, entitled “INTERACTIVE DATA EXPLORERAND 3-D DASHBOARD ENVIRONMENT” (Attorney Docket No. 088325-1142774), is incorporated herein in its entirety.
[0005] U.S. patent application Ser. No. 16 / 658,169 (Attorney Docket No. 088325-1142776), filed by Moroze et al. on Oct. 21, 2019, and entitled “OPTIMIZING VIRTUAL DATAVIEWS USING VOICE COMMANDS AND DEFINED PERSPECTIVES,” is hereby incorporated herein in its entirety.
[0006] U.S. patent application Ser. No. 16 / 658,177 (Agent Docket No. 088325-1142782), filed by Moroze et al. on Oct. 21, 2019, and entitled “ANIMATION BETWEEN VISUALIZATION OBJECTS IN AVIRTUAL DASHBOARD,” is incorporated herein in its entirety.
[0007] U.S. Patent Application No. 16 / 658,180, filed by Moroze et al. on October 21, 2019, entitled “DATA VISUALIZATION OBJECTS IN A VIRTUAL ENVIRONMENT” (Attorney Docket No. 088325-1143002), is incorporated herein in its entirety. Technical Field
[0008] The present disclosure relates to methods, media, and systems for generating a visualization object from a collection of data points. Background Art
[0009] One of the most effective ways to communicate constructs is through visualization. Often, capturing and categorizing information is not enough to fully understand the conclusions that can be drawn from the data. While two-dimensional data visualizations dominate most of our communication techniques, many of these visualization techniques are not optimized for highlighting or emphasizing aspects of the data collection. Effective data visualization involves creating informative visuals that communicate aspects of the data very quickly. Sometimes, a simple visualization is sufficient. However, with complex multi-dimensional data, the complexity of the data set itself can make the limited dimensional space difficult enough to visualize. Summary of the invention
[0010] A method for generating a visualization object from a set of data points may include: receiving one or more data sets; generating multiple 3D objects corresponding to the data points in the one or more data sets; arranging the multiple 3D objects in a predetermined 3D shape; and controlling the appearance and position of the 3D objects within the predetermined 3D shape based on property values of the corresponding data points.
[0011] A non-transitory computer-readable medium may include instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: receiving one or more data sets; generating a plurality of 3D objects corresponding to data points in the one or more data sets; arranging the plurality of 3D objects in a predetermined 3D shape; and controlling the appearance and position of the 3D objects within the predetermined 3D shape based on property values of the corresponding data points.
[0012] A system may include one or more processors and one or more memory devices that may include instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including: receiving one or more data sets; generating multiple 3D objects corresponding to data points in the one or more data sets; arranging the multiple 3D objects in a predetermined 3D shape; and controlling the appearance and position of the 3D objects within the predetermined 3D shape based on property values of the corresponding data points.
[0013] In any embodiment, any of the following features may be implemented in any combination and without limitation. The predetermined 3D shape may include a funnel object. The 3D object may include a sphere arranged to form the funnel object. The sphere may rotate around the circumference of the funnel object. The sphere may rotate at a speed and / or radius determined by the attribute values of the corresponding data points. The sphere may be colored based on the attribute values of the corresponding data points. The funnel object may be divided into a plurality of sections. Based on the attribute values of the corresponding data points, a plurality of 3D objects may be located in a plurality of sections. The method / operation may also include inserting a timestamp into the predetermined 3D shape at a plurality of points along the animation or path. The animation may include a 3D object rotating around the predetermined 3D shape over time. The speed of the animation may be based on the attributes of the corresponding data points in one or more data sets. The animation or path may be represented by a spline object in a virtual environment. The method / operation may also include providing a plurality of views of a plurality of 3D objects in the virtual environment to a plurality of client devices. The plurality of client devices may include a virtual reality headset. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] A further understanding of the nature and advantages of the present invention may be achieved by reference to the remainder of this specification and the drawings, wherein like reference numerals are used throughout the several drawings to refer to like components. In some cases, a sub-label is associated with a reference numeral to represent one of multiple similar components. When a reference numeral is referenced without specifying an existing sub-label, it is intended to refer to all such multiple similar components.
[0015] Figure 1 A system for authoring, providing, and using interactive data displays is illustrated in accordance with some embodiments.
[0016] Figure 2 Illustrated is an example of a virtual object that has been bound to an enterprise dataset in accordance with some embodiments.
[0017] Figure 3 Illustrated is a user interface for importing components from the component exchanger into an application.
[0018] Figure 4 Illustrated is a block diagram of a process for downloading and instantiating components in an application in accordance with some embodiments.
[0019] Figure 5 Illustrated is a virtual dashboard created in a virtual environment according to some embodiments.
[0020] Figure 6 Illustrated is how various types of client device systems and input devices can all interface simultaneously with the same virtual environment in an EDIE environment according to some embodiments.
[0021] Figure 7 Illustrated is a view of a virtual environment through a 2D screen interface in accordance with some embodiments.
[0022] Figure 8 Illustrated is a view of a virtual environment with multiple users interacting with a virtual dashboard in accordance with some embodiments.
[0023] Fig. 9 Illustrated is a view of a real world environment that may be used to interact with a virtual environment in accordance with some embodiments.
[0024] Fig.10 A flow chart of a method for displaying data in a multi-dimensional dashboard according to some embodiments is illustrated.
[0025] Fig.11 An example of a visualization object in the form of a funnel is illustrated in accordance with some embodiments.
[0026] Fig.12 Illustrated is how thresholds and other mechanisms may be used to generate visual anomalies in a data set to visualize data points in accordance with some embodiments.
[0027] Fig.13 Illustrated is a control panel for a funnel and how size, color, and stage details can be added to the animation of the funnel in accordance with some embodiments.
[0028] Fig.14 A flow chart of a method for generating a visualization object from a set of data points is illustrated in accordance with some embodiments.
[0029] Fig.15 An on-axis view of a funnel is illustrated according to some embodiments.
[0030] Fig.16 Illustrated is a visualization of how the motion and / or animation of data points may be tracked over time as property values of corresponding data points change, in accordance with some embodiments.
[0031] Fig.17 Pictured Fig.16 An on-axis view of the funnel depicted in .
[0032] Fig.18 A flow chart of a method for representing data over time according to some embodiments is illustrated.
[0033] Fig.19 Depicted is a simplified diagram of a distributed system for implementing some embodiments.
[0034] Fig. 20is a simplified block diagram of one or more components of a system environment that may provide services provided by one or more components of an embodiment system as cloud services in accordance with some embodiments.
[0035] Fig.21 An exemplary computer system is illustrated in which various embodiments may be implemented. DETAILED DESCRIPTION
[0036] Described herein are embodiments of immersive user interface (UI) experiences. Immersive user interface experiences can be packaged as individual components that can be plugged into a component exchanger or exchange that is then used by application developers or service developers to add interactive UI components to their applications or services. These UI components can be used to differentiate applications in a crowded market and provide a user-friendly, interactive, immersive experience, providing detailed and intuitive data visualization for many different data types on many different user devices.
[0037] Figure 1 A system for creating, providing, and using interactive data displays according to some embodiments is illustrated. The system may include a component exchanger 124. The component exchanger 124 may be part of an application development kit that allows users to develop applications and / or services using a custom development environment and a library of predefined tools and / or interfaces. The application development kit may be a cloud-hosted development environment that can be accessed as a software-as-a-service (SaaS) model for many different client devices. The development environment may be configured to develop and / or deploy many different types of applications, including cloud-based services or microservices, web applications, mobile device applications, enterprise applications, and the like. Applications designed in the application development kit may be integrated with other SaaS applications via a representative state transfer (REST) interface.
[0038] The development environment in an application development kit may include a number of user-friendly tools that developers can use to simplify the development process and make the entire application development cycle more efficient. These tools may include what you see is what you get (WYSIWYG) tools and other graphical interfaces that allow developers to drag and drop various pre-packaged components into the application development space. Various components may be provided by the development environment, such as reusable business objects, processes, web controls, user interface controls, themes, templates, and other aspects of the application.
[0039] Developers can use the development environment to design and test applications, and then can deploy the applications to various operating environments. When deploying an application to an operating environment, the development environment can also deploy any additional code or libraries required by the application so that it can run in the target environment. Therefore, the flexibility and reusable components provided by the development environment can be ported to any operating environment without losing any functionality provided by the development environment.
[0040] In this example, the development environment may include a component exchanger. For example, the development environment may be implemented using any commercially available development environment, such as Visual The development environment may include various toolkits, such as a collection of proprietary and / or open source JavaScript libraries that can be used to build applications. For example, the development environment may include JavaScript Extension Toolkit Components in these toolboxes may include a rich user interface (UI) collection component that includes a data model, a view model, and a port for binding data to the component. In some embodiments, the development environment may provide a unified component plug-in mechanism based on standard components such as the W3C Web component standard, while still allowing custom components to work with standard components.
[0041] The component exchanger 124 can allow component developers to upload components to the component exchanger 124 for use by application developers. This allows component developers to provide a flexible component architecture that can be maintained and upgraded throughout the component life cycle. For example, these components can include standard web components, such as a check box component (116) or a slider component (114) that can be used in various user interfaces. These components 114, 116 can be uploaded to the component exchanger 124 and then updated and maintained by the component development team throughout its life cycle. They can then be provided to application developers as components 121, 122 in the component exchanger 124.
[0042] In addition to standard web components, the embodiments described herein also allow users to develop special visualization objects that can be used in an enterprise data interactive explorer (EDIE) environment. These visualization objects provide multidimensional views of enterprise data sets that can be viewed simultaneously by multiple client devices through separate network connections. These visualization objects can be imported into the component exchanger 124 in the same manner as standard web components are imported into the component exchanger 124. These visualization objects can then be imported into each application being developed. In those applications, developers can bind various enterprise data sets from many different sources to parameterized inputs on the visualization objects. Then, the visualization objects can be used to generate rendered views of virtual objects that represent and visualize enterprise data in a multidimensional environment.
[0043] Various examples of these visualization objects may be described in greater detail below in this disclosure. Figure 1 Several examples of visualization objects that can be imported into the component exchanger 124 as regular objects are illustrated. For example, the funnel object 112 can include a rotating funnel object that illustrates the progression of data points in an enterprise data set over time. Various visual effects can be provided using the funnel object 112, which can be used to highlight various aspects of the data set bound to the funnel object 112. For example, a user can search the data set along various dimensions, change various data points, view a path of data points over time, view a visual representation of the data as the data is accelerated over time along various dimensions, and so on.
[0044] Figure 1 Also illustrated is a three-dimensional histogram or bar graph object 110 that can be used to represent various enterprise data sets. In the component exchanger 124, the graphic object 110 can be disconnected from any underlying data set. However, when the graphic object 110 is imported into an actual application, it can be bound to the enterprise data set, and the size of each bar in the graphic can be adjusted based on the data binding. The visualization object can be used to generate a three-dimensional (3D) virtual object in a virtual environment that can be viewed by various client devices. For example, the graphic object 110 can be implemented as a plurality of three-dimensional cylinders, each of which represents a bar in the graphic. The user can enter the virtual environment and walk around the virtual object, interact with the object, change the value in the object, manipulate parts of the object, and have those changed values seen by other users and stored back to the underlying database storing the data set.
[0045] The above visualization objects 110, 112 are provided as examples and are not meant to be limiting. Any multidimensional object that can be used to visualize enterprise data sets can be used as a visualization object in the present disclosure. Other visualization objects may include charts, animations, pictures, graphics, etc.
[0046] In the component exchanger 124, the visualization objects can be represented as components 118, 120, which can be selected by the developer and imported into the application during development. For example, the developer can drag and drop the component 118 of the funnel object 112 into the application. Then, depending on the embodiment, this visualization object can be bound to a data set in either the development environment or the deployment environment.
[0047] In some embodiments, applications including one or more visualization objects may be deployed to various environments. These environments may include web applications, mobile applications, client applications, applications running on gaming systems, applications running on desktops or laptop computers, applications for virtual environments (such as virtual reality or augmented reality systems), and / or any other computing environments. When an application is deployed to an environment, component exchanger 124 may deploy any necessary libraries, third-party libraries, or other software components or libraries required to run the visualization objects. For example, some visualization objects operating in a 3D environment may include an OpenGL library or other 3D visualization library required for its operation.
[0048] The application can be deployed to an environment 102, generally referred to herein as an EDIE environment, which can include a number of standard components and one or more visualization objects as described above. The environment 102 can include a virtual environment 104 in which visualization objects can be instantiated. When visualization objects are instantiated, they can be bound to one or more underlying data sets. These data sets can be obtained from a variety of sources, such as database tables, multidimensional data cubes, web services, server-side applications, API interfaces, etc. Figure 1 In an example of , the enterprise database 108 can provide values from one or more database tables to the environment 102 for use with at least one of the visualization objects. In this example, the funnel object 112 can be deployed to the environment 102 in the virtual environment 104. The funnel object 112 can include a collection of inputs, such as parameterized inputs that can be individually and / or collectively bound to tables or rows in an enterprise dataset from the enterprise database 108. Bindings 106 between dataset values and parameterized inputs of visualization objects can be created in a development environment, in the deployment environment 102, and / or at any other time. The bindings 106 can also be dynamically adjusted or reformulated with different datasets at runtime or before executing the application.
[0049] When a data set is bound to a visualization object, the visualization object can be used to generate a virtual object in the virtual environment 104. This can include using values from the data set to adjust the size or dimensions of various parts of the virtual object. Values from the data set can also be used to generate animation speeds or motion vectors for objects within the virtual object. Values from the data set can also be used to color objects in the virtual object or otherwise affect the visual representation of the object. For example, a data point can rotate around a virtual funnel created by the funnel object 112. The data point can have a color determined by one dimension, a size or radius determined by a second dimension, a rotation speed determined by a third dimension, a trajectory or motion vector direction determined by a fourth dimension, and so on.
[0050] The visualization objects generated in the virtual environment 104 can be viewed and / or interacted with by a plurality of different client devices 126, 128, 130, 132. These client devices may include laptop computers, desktop computers, workstations, tablet computers, smart phones, smart watches, smart TVs, video game consoles, digital home assistants, smart glasses, virtual reality headsets, augmented reality headsets, and any other computing devices. Each of these client devices 126, 128, 130, 132 can receive a unique view in the virtual environment 104, which corresponds to a uniquely placed virtual camera for each client device 126, 128, 130, 132. Then, the user can interact with the virtual object 105 in the virtual environment 104 to view, manipulate, edit, and / or update the underlying data set using the virtual object 105. As described below, each user can be provided with a unique specific view of the virtual object 105, and different settings can allow the user to change the underlying data so that the virtual object 105 changes in the view provided to other client devices. At each client device 126, 128, 130, 132, automatic hardware detection may be used to provide a correct view of the virtual environment 104. For example, if the client device 126 is implemented by a desktop computer, then the environment 102 may provide a two-dimensional (2D) view of the virtual environment 104. In contrast, if the client device 128 is implemented by a virtual reality headset, then the environment 102 may provide a 3D view of the virtual environment 104, allowing the user of the client device 128 to be immersed in the virtual environment 104 to interact therein.
[0051] Figure 2 An example of a virtual object 202 that has been bound to an enterprise dataset according to some embodiments is illustrated. As described above, the virtual object 202 can be associated with an enterprise dataset. Figure 1The virtual object 202 may correspond to the funnel object 112 uploaded as a component 118 in the component exchanger 124 of the present invention. The virtual object 202 may include a 3D funnel object, wherein the funnel is formed by a plurality of individual data points. Individual data points from the data set may be used to define the position, color, trajectory, movement, speed, size, shape, and / or any other visual feature of each of the individual data points.
[0052] The underlying data set may be derived from a database table, a multidimensional data cube, and / or any other data structure. The data set may include data points represented by rows in a database table or points in a multidimensional data cube. The various columns in the database or dimensions in the data cube may be used to define properties for each sphere in the virtual object 202. For example, the first dimension or first column in the database may be used to determine the size or perimeter of each sphere. The second dimension or column value may be used to define the color or texture of each sphere applied to the virtual environment. The third dimension or column value may be used to define the position of each sphere in the funnel. The fourth dimension or column value may define the speed at which the sphere rotates around the central axis of the funnel. The fifth dimension or column value may define the trajectory or motion path of the various levels of the funnel as it moves, and so on.
[0053] While the application is running, data may remain bound to each element of the virtual object 202. For example, while wearing a virtual reality headset, a user may approach the virtual object 202 in the virtual environment 200. Using a virtual selection handheld device, the user may reach out and "grab" one of the spheres 204 that rotate about the funnel axis. The user may call up a user interface that displays additional information about the underlying data represented by the sphere 204. The user may change a value in the user interface to change the underlying value in the corresponding database. The user may also "place" the sphere 204 back into position in the virtual object 202. If the new position of the sphere 204 is different from the old position, the dimensions used to determine the position of the sphere 204 in the virtual object 202 may be updated in the underlying database.
[0054] Figure 3 A user interface 300 for importing components from a component exchanger into an application is illustrated. The user interface 300 may include a list 302 of available components that may be imported into a project. By selecting one of the components in the list 302, the component exchanger may display additional information for downloading, instantiating, and / or using the component. In this example, the user has selected the previously described funnel object component. When this selection is made from the list 302, the right hand side of the interface 300 may display additional information for using the funnel object component.
[0055] The additional information may include a description 306 of the component. This description 306 may describe the operation of the component, how to use it, how to interact with other components, typical usage scenarios, tips and suggestions for using the component, and / or other information that may be useful to new and / or experienced users of the component. The description 306 may be accompanied by sample code 308 that illustrates how the component may be integrated into the code of an application. The sample code 308 may be provided in a variety of programming languages, and the sample code 308 may be copied and pasted from the sample code 308 into the code of an application.
[0056] In addition, some embodiments may provide an installation button 304. The installation button may execute the process of installing the component in the user's application. Selecting the installation button 304 may initiate additional windows, wizards, and / or interfaces that guide the user through the process of installing the component in his application. For example, the installation button 304 may trigger the generation of one or more web forms that allow the user to select a data set that may be bound to the parameterized interface of the component. For example, the installation button 304 may generate an interface that allows the user to bind the sphere in the funnel object to each column in the database. The installation button 304 may also automatically download any code necessary for operating the component. This code may include a third-party database, a graphics library, a function library, and / or other shared code required for performing the operations provided by the component.
[0057] Figure 4 A block diagram of a process for downloading and instantiating components in an application according to some embodiments is illustrated. Figure 3 , a user may select a funnel object 402 for use as part of an application under development. The code for the funnel object 402 may be downloaded to an operating environment on a client device that is configured to utilize components of this type. For example, the funnel object 402 may be downloaded to an EDIE environment 102 operating on any of the client devices described above. The EDIE environment 102 may include a virtual environment 104 that may provide an environment in which three-dimensional (3D) components may be instantiated for both two-dimensional (2D) and 3D viewing.
[0058] In addition to downloading the code for the funnel object 402, the component exchanger 124 can also provide any additional code required for running the component in the EDIE environment 102. This additional code can be stored in a code library 404, which is stored and made available by the component exchanger 124. The additional code can also include a library 406 from a third party that is not hosted and / or provided by the component exchanger 124. For example, as part of the installation process for the funnel object 402, the component exchanger 124 can make it possible to download a library of graphics manipulation code from a third-party website. All of these codes can be downloaded to the EDIE environment 102 so that the funnel object 402 can operate in an independent manner with all its required functions.
[0059] When the funnel object 402 is downloaded to the EDIE environment 102 and instantiated in the virtual environment 104, the EDIE environment 102 can cause a binding to occur between the parameterized inputs of the funnel object 402 and one or more data sources. For example, the EDIE environment 102 can present a user interface to the user, allowing the user to select from one of a plurality of available data sources. After selecting a data source, a request can be made to the user to bind various fields in the data source to various parameterized inputs. For example, the user can select a specific column in a database so that the value in that column determines the color corresponding to the sphere in the funnel object in the virtual environment 104. The binding between the parameterized input and the various data sources can be stored as part of the application so that whenever the user launches the application, the funnel object 402 will retrieve data from the underlying data source to generate a display of the funnel object in the virtual environment 104. This binding can be updated and / or changed when the application is launched, or dynamically updated and / or changed as the application runs to visualize different data sets in the virtual environment 104.
[0060] Figure 4 The example illustrates an enterprise database 108 that can be used to bind enterprise data to parameterized inputs of various visualization objects. In other examples, different data sources can be bound to different aspects of a visualization object. For example, some embodiments can allow columns or fields from multiple databases and multiple locations to be bound to parameterized inputs of the same visualization object. Some embodiments can use online data sources that provide real-time data to visualization components. Any combination of data sources can be provided to parameterized inputs of a visualization object based on the needs of individual application designers.
[0061] Figure 3-4 The use of funnel object 402 in is provided as an example only and is not meant to be limiting. It will be understood that any visualization object designed to operate in EDIE environment 102 can be implemented in EDIE environment 102 using a similar process.
[0062] Figure 5 A virtual dashboard created in a virtual environment 104 according to some embodiments is illustrated. Although the visualization components described herein can be used in any type of application, they may be particularly suitable for designing virtual dashboards. As used herein, the term dashboard may include a visualization of information that aggregates, analyzes, and / or displays one or more data sources in a user interface. A dashboard may be provided on the homepage of an organization's website. A dashboard may also be displayed as an input screen in an application or mobile app. A dashboard generally displays a "widget" or other graphical representation of data in a two-dimensional environment. Users can often select individual widgets on the dashboard to display additional information. For example, a user may click on a widget that displays summary sales information for the current month. Widgets may be configured to provide other information about the summary sales information displayed on the dashboard. Some dashboards may include multiple widgets that may be configured to display the latest information from the underlying data source when various user client devices access the dashboard.
[0063] The embodiments described herein implement dashboards in a 3D virtual environment 104 using the above-described visualization components. For example, instead of displaying 2D widgets on a computer screen, a user can use a client device enabled for interacting with a 3D virtual environment to provide a 3D visualization experience to view and manipulate dashboard data. Some embodiments may use a virtual reality headset or augmented reality device that allows the user to enter the virtual environment 104 and perform real-time interactions with visualization objects that display dashboard data. In the virtual environment 104, users can walk around visualization objects, "grab" and manipulate parts of the visualization objects, interact with other users, and have their actions on the visualization objects update the underlying data source. This turns the traditional 2D dashboard experience into an interactive, immersive virtual reality experience in which data can be viewed in an interactive, live manner.
[0064] The virtual environment may include multiple visual objects. Instead of multiple 2D widgets, the 3D dashboard may include visual objects placed in the virtual 3D environment 104. When a user enters or views the 3D virtual environment, they may move around the virtual objects to view them from any angle and manipulate them from any position. Additional examples of users interacting with the virtual environment 104 to interact with the visual objects are described in more detail below.
[0065] As described above, a visualization object may refer to a software object represented by the body of code and / or its associated library. The content displayed in the virtual environment 104 may be referred to as a view of a visualization object. Each visualization object may be associated with a plurality of different views, and each view may provide a different look and feel for the visualization object. For example, a funnel object may include a traditional business view that displays data in a more conservative manner suitable for a business environment. A funnel object may also include additional views that display data in a less formal manner, including brighter and more vivid colors, more interesting shapes, and / or other variations of the way to view the funnel object. For simplicity, the remainder of this disclosure will not distinguish between the underlying visualization objects represented by executable code and the views of the visualization objects displayed in the virtual environment 104. Instead, visualization objects (e.g., funnel objects) may be collectively referred to as visualization objects to cover both displays and codes in the virtual environment 104.
[0066] In this example, the virtual environment 104 may include a dashboard with three visualization objects. The funnel object 508 may be linked to the enterprise data repository 502 described above. The graphic object 510 may be linked to the multidimensional data cube 504, wherein the dimensions in the data cube are bound to the various elements of the graphic object 510. The person object 512 may include a summary display of an individual in a three-dimensional grid in the virtual environment 104 (e.g., similar to a virtual business card display). The person object may be bound to a web service 506 so that the person object can download information from the web service 506 to populate the various items in the summary display of the individual. These visualization objects may be rendered in various locations (e.g., in a semicircle) in the virtual environment 104. When a user enters the virtual environment 104, they may view the visualization objects 508, 510, 512 as objects in the area in front of them. To begin using the virtual dashboard, the user may approach the visualization objects 508, 510, 512 as needed, view the visualization objects, and / or manipulate the elements of the visualization objects.
[0067] Figure 6It illustrates how various types of client device systems and input devices can all interface with the same virtual environment in the EDIE environment 102 at the same time according to some embodiments. The EDIE environment 102 can include a 3D data exploration platform that serves many different purposes and provides many different benefits. For example, the EDIE environment 102 can be used as an integrated link between important, integrated new technologies that can make the exploration of enterprise data more immersive and smooth. These technologies can include conversational UI (e.g., voice-based or chat-based) 610, virtual reality (VR) 608, augmented reality (AR) 604, and many other interactive technologies. Users can also access these visualization technologies using traditional 2D computing tools (e.g., applications on mobile devices 606, web browsers 612 on display screens, etc.). The EDIE environment 102 can provide visualizations that move seamlessly through transitions between devices. For example, a user can view a 3D visualization in a 2D environment (such as on the screen of a mobile device 606). Then, the user can put on a pair of virtual reality goggles and transition to a virtual reality space that includes visualization objects displayed on the screen of the mobile device 606 in two dimensions. In the virtual environment, the user can interact with the visualized objects using hand controllers that are typically included in VR systems as described below.
[0068] The EDIE environment 102 may include a hardware detection process 620 that detects the type of user input device used by the client device. For example, if the client device uses a traditional 2D display screen with a web browser 612, the hardware detection process 620 may detect that the 2D environment is interfacing with the virtual environment 104. The EDIE environment 102 may include a hardware detection process 620 for detecting the type of user input device used by the client device. Figure 6 The hardware detection process 620 can identify the various input options available and load the interface code into the EDIE environment 102 accordingly. The interface code can then generate a view of the virtual environment 104 that is compatible with the corresponding input device on the client device.
[0069] As described in more detail below, the EDIE environment 102 can operate in a network mode so that the virtual environment 104 can be accessed by multiple different client devices simultaneously. This allows users to interact with each other in the virtual environment 104 while viewing visualization objects bound to underlying enterprise data. The hardware detection process 620 allows each user to interact together in the virtual environment 104 based on their own viewing experience using their client device. For example, each user entering the virtual environment 104 using a virtual reality device 608 can be visible in the virtual environment 104 as an avatar of another user's display viewing the virtual environment 104 from a 2D screen interface of a web browser 612.
[0070] Figure 7 A view of a virtual environment 104 through a 2D screen interface according to some embodiments is illustrated. A user 702 may access the EDIE environment 102 through a desktop computer, laptop computer, or other computing device equipped with a 2D screen interface. When viewing the virtual environment 104 on the 2D screen 704, a virtual camera may be placed in the virtual environment 104 to render a view of the virtual environment 104 from the perspective of the virtual camera. The rendered image may be displayed on the screen 704 of the user 702. When various objects in the virtual environment 104 are displayed on the screen 704, the user may interact with the various objects in the virtual environment 104 using a mouse or a touch screen.
[0071] The virtual environment may include multiple visualization objects arranged in the dashboard display as described above. These visualization objects may include funnel objects 508, graphic objects 510 and / or any other visualization objects. In addition, the image captured by the virtual camera and displayed on the screen 704 may include the position of other users in the virtual environment. Each user's view may be captured by a corresponding virtual camera in the virtual environment 104. Instead of displaying the virtual camera, the position of these cameras may include the display of an avatar or other representations of other users. This example includes the visualization of user 708 in the virtual environment 104. User 702 may interact and communicate with user 708 through the virtual environment 104, just as if they were all in the virtual environment 104. When user 708 turns its virtual camera to the virtual camera of user 702, they may see the corresponding visualization or avatar representing user 702 in the virtual environment 104.
[0072] As described above, the EDIE environment 102 can automatically determine that the screen 704 should display a 2D view of the virtual environment 104. The user 708 can be wearing a pair of virtual reality goggles, and the EDIE environment 102 operating on that client device can provide a 3D view of the virtual dashboard in the virtual environment 104. Therefore, the users can all interact together using various devices in the same virtual environment. In the virtual environment 104, the type of device used by some users may not be obvious to other users. For example, the user 708 can look at the virtual camera to see the display of the user 702 on the screen 704, and instead of seeing the virtual camera, they can see the avatar in the virtual environment 104. The user 708 may not be able to distinguish whether the user 702 is using a virtual reality headset or a 2D screen 704.
[0073] Figure 8A view of a virtual environment 104 with multiple users interacting with a virtual dashboard according to some embodiments is illustrated. In this example, users 804, 806 are represented by avatars with human appearance. Users can select avatars that look like themselves or any other virtual character. These avatars can move in the virtual environment 104 as the user moves in the real world environment using a virtual reality headset. As the user moves his head in the real environment, the virtual camera can move, rotate, pan, tilt, etc. This allows the user to "walk around" the virtual dashboard in the virtual environment 104 to see various visualization objects from different angles.
[0074] The movements of various users may be represented in the virtual environment 104 to be visible to other users. For example, a compatible virtual reality device includes a virtual reality headset and a selection device that may be held in the user's hand. As the selection device or virtual reality headset is moved in the real world environment, the movement may be used to drive the movement of the avatar in the virtual environment 104. For example, as the user 408 raises their hands in the real world environment, the avatar's hands may also be raised in the virtual environment 104, making them visible to the user 806. This allows the user to gesture and point to visual objects in the virtual dashboard and have those movements visible to other users.
[0075] Figure 8 Also illustrated is a virtual camera 802 that may be used to capture a view of the virtual environment 104 for an image to be displayed on the 2D screen. As described above, the depiction of the virtual camera 802 may be replaced with an avatar for the user 702 viewing the screen 704. Alternatively, the virtual camera 802 may have no visual equivalent in the virtual environment 104, or may be replaced by any other visual indicator, such as a 3D object that may be rendered for other users to view.
[0076] A user using both the 2D and 3D displays described above can interact with elements of the visualization objects in the virtual dashboard. For example, a user 804 can approach a funnel object 508 and select one of the spheres that rotate around the funnel object 508. In a 2D display, a sphere can be selected using a finger click or a mouse click. In a 3D display, a sphere can be selected by using one of the handheld virtual reality devices held by the user 804 to reach out and "grab" one of the spheres as the sphere rotates around the funnel object 508. As described above, a sphere can be bound to a data object in a data repository. For example, a sphere can represent a row in a database, and the position, color, speed, trajectory, etc. of the sphere in the funnel object 508 can be determined by different values in the columns of the rows of the database. When the user 804 holds the sphere, additional information about the sphere can be displayed in a user interface or a head-up display (HUD). For example, each column value in a row of a database can be displayed for the user 804. The sphere may be passed back and forth between user 804 and user 806, allowing both users 804, 806 to view the details of the underlying data object.
[0077] When the user 804 has finished examining the sphere, the user 804 can put the sphere back into the funnel object 508. In some embodiments, the user 804 can "put the sphere back" into the funnel object 508, and the sphere can automatically return to its previous position / rotation in the funnel object 508. In other embodiments, the user 804 can place the sphere in the funnel object at a different position from the original position. As described above, the position of the sphere in the funnel object 508 can be determined by the value in the underlying data set bound to the funnel object 508. When the position of the sphere in the funnel object 508 changes, the value corresponding to the position can also change. In some embodiments, the value corresponding to the new position in the funnel object 508 can be written back to the underlying data set. This allows the user to manipulate the elements of the virtualized objects in the virtual environment 104 and change the values in the data set to which the visualization object is bound.
[0078] In some embodiments, the view of the visualization object provided to each of the users 804, 806 may be the same. For example, when the user 804 pulls the sphere out of the funnel object 508 as described above, the user 806 will see the sphere leave the funnel object 508. Similarly, when the user 804 puts the sphere back into the funnel object 508, the user 806 can see the new position of the sphere in the funnel object 508. Thus, using the virtual dashboard in the virtual environment 104, changes to the visualization object and its underlying data set are common to each user.
[0079] In other embodiments, each of the users 804, 806 may be provided with their own view of the visualization object. In these embodiments, the state of each visualization object may be uniquely saved for each user 804, 806. For example, when the user 804 pulls the sphere out of the funnel object 508 as described above, the user 806 will continue to see the sphere rotating in the funnel object 508. Therefore, the changes made by one user 804 to the elements of the visualization object will only be seen by that particular user 804. Other users 806 will continue to see the visualization object in an unchanged state. An embodiment may process the changes made by one user to the underlying data set according to stored preferences. For example, some embodiments may propagate changes to the underlying data set, while other embodiments may provide the data set in a "read-only" configuration so that changes to the visualization object are not reflected in the underlying data set. Some embodiments may present changes to all users present in the virtual environment 104 for approval before they are written to the underlying data set.
[0080] As described above, each visualization object can have one or more views or view models associated with the visualization object. These view models can control the look and feel of the visualization object when it is rendered in the virtual environment 104. The EDIE environment 102 allows each user to select a separate view model for the same visualization object. For example, user 804 can choose to view the funnel object 508 using a business view model that uses soft colors and smaller spheres. User 806 can choose to view the funnel object 508 using an informal view model that uses brighter colors and larger spheres. This allows each individual user to customize the look and feel of the visualization object in the virtual dashboard without having to change the view model for other users.
[0081] Fig. 9 A view of a real world environment 908 that can be used to interact with a virtual environment 104 is illustrated in accordance with some embodiments. A user 902 may use a virtual reality device, including a virtual reality headset 904 and / or one or more handheld selection devices 906. As the user 902 moves in the real world environment 908, a virtual camera in the virtual environment 104 may move in a corresponding manner in the virtual environment 104. The virtual camera may capture a view of the virtual environment 104 displayed to the user 902 through the virtual reality headset 904. As the user 902 moves their hand holding the selection device 906, the hand of the corresponding avatar in the virtual environment 104 may also move and select objects in the virtual environment 104 as described above.
[0082] Fig.10A flowchart 1000 of a method for displaying data in a multidimensional dashboard according to some embodiments is illustrated. The method may include accessing a plurality of 3D visualization components (1002). Each of the 3D visualization components may include a parameterized input for receiving a data set. The 3D visualization components may be downloaded or otherwise received from a component exchanger that allows developers to provide 3D visualization components to be used in a plurality of applications being developed. The 3D visualization components may be downloaded to a client device or an operating environment (such as the EDIE environment described above). For example, the 3D visualization components may include a funnel object, a graphic object, and / or other visualization components described herein.
[0083] The method may also include receiving one or more data sets (1004). The data sets may represent enterprise data received from enterprise applications and / or databases. For example, the data sets may include a customer relationship management (CRM) database, a human capital management (HCM) database, a financial software database, and / or any other type of enterprise data available to the operating environment.
[0084] The method may additionally include binding parameterized inputs of multiple 3D visualization components to one or more data sets (1006). For example, for each of the 3D visualization components, the corresponding parameterized input may be bound to one of the one or more data sets. The parameterized inputs of the 3D visualization components may make the 3D visualization components generic so that their appearance and operation may be customized with the aid of bound data sets. When the 3D visualization components are placed in an application, the data sets may be bound to the corresponding 3D visualization components at design time. When the 3D visualization components are instantiated at runtime, the data sets may be bound alternatively or additionally. During runtime, the system may receive input (e.g., from a user) to change the data set binding to a different data set. Some 3D visualization components may be bound to multiple different data sets, each of which may define a visual or operational aspect of the 3D visualization component.
[0085] The method may also include rendering multiple 3D virtual objects (1008) in a virtual environment based on multiple 3D visualization components and one or more data sets. Each of the 3D visualization components may include a view model, an animation model, a wireframe skeleton, and / or other graphic structures that can be used to generate 3D virtual objects in a virtual environment. A virtual environment may be implemented in an EDIE operating environment to create a 3D virtual scene that includes objects other than 3D virtual objects from 3D visualization components. For example, a virtual environment may be configured as a circular turntable of 3D virtual objects. In another example, a virtual environment may be configured to display 3D objects as an enterprise dashboard of a virtual "widget" that can be viewed by a user in a virtual environment. Each 3D virtual object in a dashboard may be bound to different enterprise data sets from different databases and / or different applications. For example, a dashboard may provide summary data for finance, employees, operations, customers, etc. in a unified display in a single virtual environment.
[0086] The method may also include receiving connections to the virtual environment from multiple client devices (1010). Some embodiments may include a client device having a hardware detection process installed thereon, the hardware detection process being configured to detect the type of display and / or input device used with the client device. The hardware detection process may automatically configure the interaction with the virtual environment to match the type of client device. For example, if the client device includes a virtual reality headset, the hardware detection process may be configured to provide an immersive view and / or interaction with the virtual environment so that the user feels as if they are working in the virtual environment rather than in a real world environment. If the client device includes a 2D screen (e.g., a monitor, a laptop, etc.), the hardware detection process may be configured to place a virtual camera in the virtual environment to capture a 2D image of the virtual environment at a location to be displayed on the 2D screen.
[0087] The method may additionally include providing multiple views of multiple 3D virtual objects in the virtual environment to multiple client devices (1012). A separate view of the virtual environment may be provided to each client device. In addition, each client device may be configured to allow a user to interact with the 3D virtual objects in the virtual environment to change their display. For example, a user may remove elements corresponding to individual elements in a corresponding data set from a virtual object. A user may see a display including summary information about data points in that data element, and may be allowed to change certain data points. These changes may be updated in the underlying data source to which the 3D virtual object is bound. In some embodiments, the changes may be immediately viewed by other users in the virtual environment. Alternatively, some changes may be visible only to the user making the changes, so that a personalized view of the virtual environment is provided to each user.
[0088] It should be appreciated that, according to various embodiments, Fig.10 The specific steps shown in provide a specific method for displaying data in a multidimensional dashboard. According to alternative embodiments, other sequences of steps may also be performed. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, Fig.10 The various steps shown in the may include multiple sub-steps, which may be performed in various orders suitable for the various steps. In addition, additional steps may be added or removed depending on the specific application. Those of ordinary skill in the art will recognize many variations, modifications and substitutions.
[0089] Funnel Visualization
[0090] As described above, the imported data set can be represented by one or more visualization components in the virtual environment. Many different types of visualization components can be imported into the virtual environment to represent the data set to which the visualization component is bound. The shapes, designs, and animations available for each visualization component can be specially designed to provide users with a visual experience for viewing, understanding, and manipulating complex data sets. Instead of just viewing a graph or 2D pie chart on a web page, users can see advanced animations in three dimensions that illustrate how the data changes over time, how the data interacts with each other, and what changes are propagated through the data to achieve the desired results. These visualization components have significant advantages over traditional two-dimensional dashboards used to display and interact with enterprise data.
[0091] The following figures illustrate specific visualization components that may be useful for displaying and interacting with specific types of data. Fig.11 An example of a visualization object in the form of a funnel 1100 according to some embodiments is illustrated. The funnel 1100 may be referred to as a final object, a funnel visualization component, or a funnel 3D object. The funnel 1100 may be useful for visualizing large data sets with thousands or even millions of data points. The funnel 1100 may provide multiple simultaneous visual indicators that may collectively convey information about each data point and about a collection of data points. These visual indicators may include the coloring of the data point, the size of the data point, the radial distance of the data point from the center of the funnel 1100, the radial angle of the data point, the rotation speed of the data point around the funnel 1100, the distance along the length of the funnel 1100, and the like. The properties in the data set may be used to draw the individual data points around the funnel 1100, and control its appearance and / or animation to convey all of this information to the user simultaneously in the form of a visual display.
[0092] As described above, the visualization components for funnel 1100 can be designed to be agnostic to any particular data set. Instead, funnel 1100 can include a collection of parameterized inputs to which existing data sets can be bound. By way of example, the following discussion can use a specific type of data set to illustrate how that data set can be viewed and manipulated through funnel 1100. This example data set can include a data table imported or accessed from a sales cloud application. This data table can include sales opportunities in each row of the data table. Different columns in the data table can include all the properties of the sales opportunity. These properties can include interactions between individuals, scores, progress indicators, and / or any other features that develop sales opportunities into completed sales. When the visualization components for funnel 1100 are imported into an application (such as a virtual dashboard application), the application designer and / or user can select the sales opportunity table as the data set to be represented by funnel 1100. Then the data points from the data table can be used to construct a 3D object representing funnel 1100 to control the visual aspects of funnel 1100. These visual aspects are described in detail below, but in brief, each row in the data table may correspond to a sphere in funnel 1100 that rotates around funnel 1100. The rotation speed, angle, trajectory, color, size, and / or other characteristics of each sphere may be defined by the columns in the corresponding data row.
[0093] It will be appreciated that the use of sales opportunity data for the underlying dataset of funnel 1100 is used only by way of example and is not meant to be limiting. As emphasized above, the design of the visualization components for funnel 1100 is independent of the underlying dataset. Instead, any dataset may be bound to funnel 1100 in order to populate funnel 1100 with spheres representing data points. Sales opportunity information is merely one example of a dataset that illustrates how attributes of data points may be interactively visualized using funnel 1100. Other datasets may include financial data, scientific data, test or experimental data, survey data, and / or any other type of data source.
[0094] First, the distance 1106 on the funnel 1100 can convey the meaning of each data point. The distance 1106 from the origin of the funnel 1100 can be determined by the value of the column of each row corresponding to the sphere in the funnel 1100. For example, for each individual data point, the distance 1106 can indicate the relative progress of the data point from the starting value to the ending value. For example, for data points representing sales opportunities, the farther the data point is from the origin of the funnel 1100, the further the sales opportunity is from successful completion. Therefore, data point 1107 will represent a sales opportunity in the initial stage of progress, while data point 1108 will represent a sales opportunity that is about to be successfully completed. The shape of the funnel 1100 itself can also convey this type of meaning. A funnel generally uses its physical counterpart to receive new material at a larger opening, and then gradually "leak" that material (e.g., liquid) around the funnel toward the smaller end of the funnel. By using the shape of the funnel 1100 in a virtual environment, the user can intuitively understand that the data points will develop from the larger outer area toward the smaller smaller area inside the funnel. Therefore, the funnel 1100 is very useful for showing the progress of individual data points in a large set of data points.When the funnel 1100 is constructed in a virtual environment, each sphere can be placed in the funnel at a position or distance 1106 based on this value from the data set.
[0095] In addition to showing the progress of a single data point in a set of data points, funnel 1100 is also very useful for showing the overall trend of the progress of the data points. Fig.11 In the illustration of , in the funnel visualization, there are thousands of data points in the data set, which are represented by small spheres. In addition to the ability to focus on a single data point, this visualization also provides the user with an illustration of clusters or natural groupings of the data to illustrate trends in the data set. For example, a cluster of data points far from the origin (e.g., stage 5) in the beginning stages of the funnel 1100 (e.g., stage 1) can represent a large number of sales opportunities in the beginning stages; while a small number of data points near the origin (e.g., stage 5) of the funnel 1100 will illustrate relatively few sales opportunities that have been executed and are yet to be completed. The funnel 1100 can also quickly provide a way to assess the total number of data points in the data set. For example, a sparsely filled funnel indicates that very few sales opportunities are available. In contrast, a densely filled funnel at each level illustrates many opportunities that are evenly distributed between different states of progress.
[0096] The natural grouping or clustering of data that is visually clear in the funnel 1100 can be enhanced by creating thresholds, striations, or groupings of the data that will be displayed in the rendering of the funnel itself 1100. For example, the funnel 1100 may include a first stage 1101, a second stage 1102, a third stage 1103, a fourth stage 1104, and a fifth stage 1105. The divisions between stages can be determined by user-defined thresholds and can represent the stages in which data points progress toward a final result. For example, the first stage 1101 can represent a sales opportunity that has been identified but not yet evaluated or acted upon. The fifth stage 1105 can represent a sales opportunity that has been cultivated into a completed sale. In some embodiments, defined boundaries, different color schemes, and / or other means of visually distinguishing data points in one stage from data points in another stage can be used to visually distinguish data points in one stage from data points in another stage. Fig.11 The illustration depicts each stage visually. In some embodiments, this may include a representation of what appears to be the funnel itself, while other embodiments may simply form a funnel shape with the data points filling the funnel.
[0097] Different stages 1101, 1102, 1103, 1104, 1105 can be regularly spaced along the length of the funnel 1100. The relative width of each of the stages 1101, 1102, 1103, 1104, 1105 can be determined based on the static intervals defined by the funnel 1100. The relative width can also be determined by the number of data points within each stage. For example, when a larger number of data points reside in this first stage 1101, the width of the first stage 1101 can be larger. The colors of the various stages can be transparent so that they cover various areas of the funnel 1100 while still allowing the data points circulating therein to be easily viewed. As described above, the user can interact with the funnel by selecting the various data points rotating within the funnel 1100. The different stages do not need to be modeled as solid surfaces in the virtual environment, but the user can "walk through" each stage to interact with the data points circulating therein.
[0098] Some embodiments may present data points in funnel 1100 statically without motion. Alternatively or additionally, some embodiments may also animate the motion of data points in funnel 1100 based on one or more attributes. For example, Fig.11The data points in the funnel 1100 can be animated to rotate around the central axis of the funnel 1100 based on the frequency of actions involving specific data points. In the example of data points representing sales data, the speed at which each data point rotates around the central axis of the funnel 1100 can be determined by the number or rate of sales actions taken on that data point (customer contact, email, direct sales, etc.). This allows the user to visually identify data points that are not being acted on to interpret their relative distance from the origin of the funnel 1100. Data points that are not moving or moving slowly indicate that the sales opportunity is not progressing. On the contrary, if the opportunity in the first stage 1101 is circulating at a high rate around the funnel 1100, then the opportunity may progress quickly. This also provides a natural and realistic visualization of the data points as they advance toward the origin of the funnel 1100. Like a real-world funnel, the data points will progress by gradually advancing toward the origin of the funnel 1100 by rotating around the central axis of the funnel 1100 and increasing speed until reaching the origin. This also provides an overall overview of the efficiency and consistency of the data progress. By animating all the data points, it becomes possible to visually see which data points are receiving more or less attention than others, which data points are progressing slower or faster than others, and other comparative visual information that is easy to convey using this visualization.
[0099] Fig.12 Illustrated is how to use thresholds and other mechanisms to generate visual anomalies in a data set to visualize data points according to some embodiments. In addition to viewing a collection of data points as a whole, funnel 1100 can also be used to highlight individual data points in that collection. In some embodiments, a user can establish a threshold. That threshold can then be compared to the attribute value of each data point in the data set. Attribute values that exceed the threshold can highlight their corresponding data points in the visualization. In this example, each data point that does not exceed the threshold can be represented as a small sphere rotating around funnel 1100. Conversely, data points that do have attribute values that exceed the threshold can be represented as larger spheres rotating around funnel 1100. Thresholds can be adjusted and applied in real time to allow users to visually select thresholds based on the number of data points highlighted as special cases. Some embodiments can use multiple thresholds and assign increased / decreased sizes to the highlighted spheres based on the relative thresholds that are exceeded.
[0100] exist Fig.12In the example of , data point 1204 and other similarly sized data points may have exceeded a first threshold. This causes them to be represented with a sphere that is larger than the representation of the remaining data points. Data point 1202 and other similarly sized data points may have exceeded a first threshold and an additional second threshold. This causes them to be represented with a larger sphere than the representation of the other data points (i.e., the more the threshold is exceeded, the larger the corresponding data point). This illustrates how the size of the sphere can be used to represent different thresholds. Alternatively or additionally, a single threshold can be used, and after that threshold is exceeded, the size of the data points can be increased in the visualization corresponding to the amount by which they exceed the threshold.
[0101] As described above, the funnel 1100 and Fig.12 The view may correspond to the view of a user wearing a virtual reality headset to "enter" the virtual environment. The user may set these thresholds to highlight specific data points of interest in the funnel 1100. The user may then walk up to the funnel 1100 and grab any highlighted data points as they cycle around the funnel 1100. Some embodiments may present a variety of methods for displaying more information for a selected data point selected by the user from the funnel 1100. For example, a 2D panel may be presented to the user on the screen to display each column value in a row of data corresponding to the selected sphere.
[0102] Fig.13 The diagram illustrates a control panel for the funnel 1100 according to some embodiments, and how size, color, and stage details can be added to the animation of the funnel 1100. In this embodiment, the control panel 1302 can be summoned to render a visualization object in a virtual 3D environment for user control. In a 2D rendering such as a tablet or smartphone screen, the control panel 1302 can be composited on top of any rendered image of the funnel 1100 from the virtual 3D space. At the same time, for users equipped with VR / AR devices, the control panel 1302 can be rendered as a three-dimensional object in the virtual 3D space, and these users can interact directly with the object representing the control panel 1302 using VR hand controls. For example, a VR user can make the control panel 1302 appear in front of them, and can "push" controls on the control panel 1302 using a virtual hand equipped with a VR sensor / device.
[0103] The control panel 1302 can control all visual information displayed by the funnel 1100. For example, the user can control the stage coloring, the radius, angle, and scale of each data point, and whether certain data points should be highlighted, as described above. The control panel 1302 can also be used to select between different appearances of the funnel, such as whether it is smooth or stepped. Finally, the transition between stages can be turned on or off, and the animated rotation of the data points around the central axis of the funnel can be controlled. Detailed information, such as labels for the stages and information for each data point, can also be toggled in the control panel 1302.
[0104] Fig.13 It also illustrates how labels are applied to each stage. For example, the first stage is labeled to represent sales opportunities that have been identified, the second stage represents sales opportunities that are being evaluated, the third stage represents sales opportunities that are in the demonstration stage, the fourth stage represents sales opportunities that have been proposed, and the fifth stage represents sales opportunities or negotiations that are ongoing. Each of these stages can also include multiple opportunities or deals that are currently classified in that stage. Therefore, the user can compare the number of data points in each stage both visually and numerically.
[0105] In this embodiment, the size of each data point can be directly related to one or more attributes of the data point. Instead of or in addition to determining the size based on a threshold crossing, this embodiment uses the size as a value indicator. As the actual value increases, the size of the data point can increase in a corresponding manner. This allows the user to evaluate individual data points as well as clusters of data points. For example, clusters of large data points can indicate sales opportunities that each have a large monetary value. The control panel 1302 can be used to scale and adjust the size in real time to represent different attributes.
[0106] In addition to size, Fig.13 Also illustrated is how color can be used to indicate attribute values. In some embodiments, data points can be colored according to their corresponding stage. For example, data points in stage 1 can be purple, data points in stage 2 can be green, and so on. In other embodiments, data points can be colored regardless of their stage, but can instead be colored based on any attribute value. For example, a spectrum of colors (e.g., red-green, white-black, etc.) can be used to indicate relative attribute values, such as approaching a time limit or other key indicator.
[0107] Fig.14A flow chart of a method for generating a visualization object from a collection of data points according to some embodiments is illustrated. A visualization object or visualization component can be downloaded or exchanged from a component library and included in an application. The application can include a virtual environment that allows the creation and rendering of 3D objects to generate views for multiple users using multiple client device types. As described above, a visualization object (such as a funnel object) can include a collection of parameterized inputs that can be bound to underlying data sets. This method describes how these data sets can be used to generate the shape and appearance of a predetermined 3D shape.
[0108] The method may include receiving one or more data sets from an enterprise application (1402). The one or more data sets may be received from any type of data source, such as a database, table, spreadsheet, text file, CSV file, web service, website, XML file, repository, and / or any other type of data structure or data storage device. The data set may be received from an application such as an enterprise application that provides enterprise data. The data may include CRM data, HCM data, financial data, sales data, and / or any other type of data. When loading or downloading a visualization component, the designer and / or user may choose to bind the one or more data sets to the visualization component through one or more parameterized inputs.
[0109] The method may also include generating 3D objects corresponding to each data point in one or more data sets (1404). Each 3D object may correspond to a single data point in one or more data sets. For example, each 3D object may correspond to a row in a database. Each object may also include a plurality of attributes or attribute values that may be associated with the data point. For example, the attribute values may include values stored in columns for rows in a database table. Each of these values may be used to construct the appearance and / or behavior of the 3D object, as described below. The 3D object may include a 3D sphere as described above or otherwise depicted. The 3D object may also include any other type of three-dimensional object, such as a bar, polygon, star, and / or other solid object.
[0110] The method may also include arranging the 3D objects into a predetermined 3D shape (1406). The 3D shape may be formed by the 3D object itself, or may be independently created in a 3D virtual space, wherein the 3D object surrounds the 3D shape. For example, the 3D shape may include a funnel object as described above and described. The 3D objects may be arranged so that their collective arrangement forms a predetermined 3D shape. Alternatively, additional 3D objects such as surfaces, wireframes, and / or other 3D structures may be used to generate and represent at least a portion of the predetermined 3D shape. In these embodiments, the 3D objects may be arranged around other 3D structures so that they conform to the predetermined 3D shape.
[0111] The method may also include controlling the appearance or position of the 3D object within the 3D shape based on the property values of the corresponding data points (1408). For example, the position and / or appearance within the 3D shape may be controlled so that the color, size, position, and movement of the 3D object are controlled by the corresponding property values. Some embodiments may also control movement, trajectory, animation path, rotation speed, and / or other movement that varies over time, as described in detail below.
[0112] It should be recognized that Fig.14 The specific steps shown in provide specific methods for generating visualization objects according to various embodiments of the present invention. According to alternative embodiments, other sequences of steps may also be performed. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, Fig.14 The various steps shown in the may include multiple sub-steps, which may be performed in various orders suitable for the various steps. In addition, additional steps may be added or removed depending on the specific application. Those of ordinary skill in the art will recognize many variations, modifications and substitutions.
[0113] As briefly mentioned above, some embodiments may use the motion or animation of data points corresponding to a time attribute to assess the progress of data points through the funnel over time. Thus, a still view of the funnel 1100 may represent a snapshot of a data point in time, and the movement of data points throughout the funnel over time may be visualized by animating a sequence of snapshot views of the funnel together as an animation sequence.
[0114] Fig.15 An on-axis view of a funnel 1100 is illustrated in accordance with some embodiments. To view additional information for a specific data point, a user may hover a control (e.g., a mouse, a finger tap, a hand position in VR, etc.) over a particular data point, which may summon an information window 1502 including the property values for that data point. Fig.15 In the example of , the information window includes attribute values such as opportunity ID, name, date, age, type, probability of success, target end date, etc. This allows the user to view in-depth information for the selected data point.
[0115] With the on-axis view of the funnel 1100, the user can better see the speed and rotation angle 1506 of each data point. In some embodiments, the rotation angle itself can indicate the attribute value, and the animation will rotate the data point in real time as the attribute value changes. For example, continuing the sales data example, the rotation angle around the funnel 1100 can indicate the chance probability of success. This allows the user to quickly determine the overall probability of success for a group of data points visually. Animating these data points around the funnel 1100 can be accomplished by changing these attributes over time. For example, a user can request that the funnel illustrate the changes in the probability of success over a one-year period. As the probability of success changes throughout the year, the animation of the data points around the funnel 1100 will then move in the animation.
[0116] Alternatively or additionally, the speed 1504 at which the data points rotate can be bound to a property value rather than a rotation angle. For example, a data point that rotates relatively quickly has a high probability of success, while a data point that rotates relatively slowly has a low probability of success. In some embodiments, the rotation speed of the data points can be uniform, and they can be rotated to simply provide a more three-dimensional view of the data points into a rendering such as on a computer screen.
[0117] Fig.16 A visualization of how the motion and / or animation of a data point can be tracked over time as the attribute value of the corresponding data point changes according to some embodiments is illustrated. In this example, a single sphere representing a single data point can be selected, and the path of this data point can be represented over time as this data point passes through the funnel 1100. The data point can be represented at a start position 1602 and an end position 1604 and one or more positions between them. Each of these positions can be marked with a timestamp (e.g., date, time, etc.) to indicate the time corresponding to each position. A sphere can be added to the funnel for each position in the time history of the data point. Spheres can be added at specified time intervals, such as once a week, once a month, once every 45 days, and so on. Alternatively, a predefined number of balls can be added and divided equally over the entire time interval.
[0118] In addition to representing multiple spheres, some embodiments may use a solid line to track the progression of data points through the funnel over time. Fig.16 In the example of , a path 1606 can be generated using a spline function in a virtual 3D space and rendered as part of the user's funnel display. This balances the need to show the path of movement through the funnel without complicating the display by adding a large number of additional spheres. As described above, the user can hover an input control over any sphere or the path itself to trace the path of the data point. As the path is traced, an information window can be summoned to display the changing value of the attribute represented by the path 1606 in real time.
[0119] Fig.17 Pictured Fig.16 1100 . This figure illustrates how a user can rotate or view the funnel 1100 from different angles. In a rendered 2D space, a user can pan around the funnel to view the data from different angles. In a virtual 3D environment, such as an AR / VR environment, a user can move around a representation of the funnel 1100 to view the funnel 1100 from different angles. The text labels for each data point can be rotated so that they are always parallel to the user's viewing plane. Thus, the text can be presented independently for each user so that the text always appears to be facing each individual user. By allowing the funnel 1100 to be viewed from different angles, the user can see and accurately determine the path taken by the selected data point.
[0120] Fig.18 A flow chart of a method for representing data changes over time according to some embodiments is illustrated. The method may include receiving one or more data sets from an enterprise application (1802). The data set may include a time series of data for a single data attribute. The method may also include generating a 3D object corresponding to each data point in the one or more data sets (1804). The 3D object may include a 3D sphere as described above or otherwise depicted. The method may also include arranging the 3D objects into a predetermined 3D shape (1806). The 3D shape may be formed by the 3D object itself, or may be independently created in a 3D virtual space, where the 3D object surrounds the 3D shape. For example, the 3D shape may include a funnel object as described and depicted above. Each of these operations may be described above with respect to Fig.14 The method may also include creating an animation or path of the 3D object over time (1808). The information may include moving the 3D object through the 3D shape while keeping other 3D objects stationary. The path may include adding a spline curve to the visualization to indicate the path over time.
[0121] It should be recognized that Fig.18 The specific steps shown in provide specific methods for representing data changes over time according to various embodiments of the present invention. According to alternative embodiments, other sequences of steps may also be performed. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, Fig.18 The various steps shown in the may include multiple sub-steps, which may be performed in various orders suitable for the various steps. In addition, additional steps may be added or removed depending on the specific application. Those of ordinary skill in the art will recognize many variations, modifications and substitutions.
[0122] Each method described herein can be implemented by a computer system. Each step of these methods can be automatically performed by a computer system, and / or can be provided with input / output involving a user. For example, a user can provide input for each step in the method, and each of these inputs can respond to a specific output requesting such input, wherein the output is generated by a computer system. Each input can be received in response to a corresponding request output. In addition, the input can be received from a user, received from another computer system as a data stream, retrieved from a memory location, retrieved through a network, requested from a web service, etc. Similarly, the output can be provided to a user, provided to another computer system as a data stream, stored in a memory location, sent through a network, provided to a web service, etc. In short, each step of the method described herein can be performed by a computer system, and can involve any number of inputs, outputs, and / or requests to or from a computer system that may or may not involve a user. It can be said that those steps that do not involve a user are automatically performed by a computer system without human intervention. Therefore, it will be understood from the present disclosure that each step of each method described herein can be changed to include inputs and outputs to and from a user, or can be automatically completed by a computer system without human intervention, wherein any determination is made by a processor. Furthermore, some embodiments of each of the methods described herein may be implemented as a set of instructions stored on a tangible, non-transitory storage medium to form a tangible software product.
[0123] Fig.19 A simplified diagram of a distributed system 1900 for implementing one of the embodiments is depicted. In the illustrated embodiment, the distributed system 1900 includes one or more client computing devices 1902, 1904, 1906, and 1908, each of which executes and operates a client application, such as a web browser, a proprietary client (e.g., Oracle Forms), etc., via one or more networks 1910. A server 1912 can be communicatively coupled to the remote client computing devices 1902, 1904, 1906, and 1908 via the network 1910.
[0124] In various embodiments, server 1912 may be adapted to run one or more services or software applications provided by one or more components of the system. In some embodiments, these services may be provided to users of client computing devices 1902, 1904, 1906, and / or 1908 as web-based services or cloud services or under a software as a service (SaaS) model. Users operating client computing devices 1902, 1904, 1906, and / or 1908 may in turn utilize one or more client applications to interact with server 1912 to utilize the services provided by these components.
[0125] In the configuration depicted in the figure, software components 1918, 1920, and 1922 of system 1900 are shown as being implemented on server 1912. In other embodiments, one or more components of system 1900 and / or the services provided by these components may also be implemented by one or more of client computing devices 1902, 1904, 1906, and / or 1908. Then, a user operating a client computing device can use the services provided by these components using one or more client applications. These components may be implemented with hardware, firmware, software, or a combination thereof. It should be appreciated that various different system configurations are possible, which may be different from distributed system 1900. The embodiment shown in the figure is therefore an example of a distributed system for implementing an embodiment system, and is not intended to be limiting.
[0126] Client computing devices 1902, 1904, 1906, and / or 1908 may be portable handheld devices (e.g., Cellular phone, computing tablets, personal digital assistants (PDAs), or wearable devices (e.g., Google head mounted display), running software such as Microsoft Windows and / or software for various mobile operating systems (such as iOS, Windows Phone, Android, BlackBerry 10, Palm OS, etc.), and enabling Internet, email, short message service (SMS), or other communication protocols. The client computing device may be a general-purpose personal computer, including, for example, a computer running various versions of Microsoft Apple The client computing device may be a personal computer and / or laptop computer running a variety of commercially available or any workstation computer running any operating system of a UNIX-like operating system (including but not limited to various GNU / Linux operating systems, such as, for example, Google Chrome OS). Alternatively or in addition, client computing devices 1902, 1904, 1906, and 1908 may be any other electronic device capable of communicating over network(s) 1910, such as a thin client computer, an Internet-enabled gaming system (e.g., with or without A gesture input device such as a Microsoft Xbox gaming console) and / or a personal messaging device.
[0127] Although an exemplary distributed system 1900 with four client computing devices is shown, any number of client computing devices may be supported. Other devices (such as devices with sensors, etc.) may interact with the server 1912 .
[0128] The network(s) 1910 in the distributed system 1900 may be any type of network familiar to those skilled in the art that may support data communications using any of a variety of commercially available protocols, including but not limited to TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internetwork Packet Exchange), AppleTalk, etc. Merely by way of example, the network(s) 1910 may be a local area network (LAN), such as a LAN based on Ethernet, Token Ring, etc. The network(s) 1910 may be a wide area network and the Internet. It may include virtual networks, including but not limited to virtual private networks (VPNs), intranets, extranets, public switched telephone networks (PSTNs), infrared networks, wireless networks (e.g., in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.19 protocol suite, and / or any other wireless protocol); and / or any combination of these networks and / or other networks.
[0129] Server 1912 may include one or more general-purpose computers, dedicated server computers (including, by way of example, PC (personal computer) servers, Servers 1912 may be servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or any other suitable arrangement and / or combination. In various embodiments, server 1912 may be adapted to run one or more services or software applications described in the foregoing disclosure. For example, server 1912 may correspond to a server for performing the processing described above according to an embodiment of the present disclosure.
[0130] Server 1912 can run an operating system including any of the operating systems discussed above, as well as any commercially available server operating system. Server 1912 can also run any of a variety of additional server applications and / or middle-tier applications, including HTTP (Hypertext Transfer Protocol) servers, FTP (File Transfer Protocol) servers, CGI (Common Gateway Interface) servers, Servers, database servers, etc. Exemplary database servers include, but are not limited to, those commercially available from Oracle, Microsoft, Sybase, IBM (International Business Machines), etc.
[0131] In some implementations, server 1912 may include one or more applications to analyze and integrate data feeds and / or event updates received from users of client computing devices 1902, 1904, 1906, and 1908. By way of example, data feeds and / or event updates may include, but are not limited to, feed, The server 1912 may also include one or more applications to display the data feeds and / or real-time events via one or more display devices of the client computing devices 1902, 1904, 1906, and 1908.
[0132] Distributed system 1900 may also include one or more databases 1914 and 1916. Databases 1914 and 1916 may reside in various locations. As an example, one or more of databases 1914 and 1916 may reside on a non-transient storage medium local to server 1912 (and / or residing in server 1912). Alternatively, databases 1914 and 1916 may be remote from server 1912 and communicate with server 1912 via a network-based connection or a dedicated connection. In one set of embodiments, databases 1914 and 1916 may reside in a storage area network (SAN). Similarly, any necessary files for executing the functions that server 1912 has may be appropriately stored locally on server 1912 and / or stored remotely. In one set of embodiments, databases 1914 and 1916 may include a relational database suitable for storing, updating and retrieving data in response to commands in SQL format, such as a database provided by Oracle.
[0133] Fig. 20 2000 is a simplified block diagram of one or more components of a system environment 2000 that can provide services provided by one or more components of an embodiment system as cloud services according to an embodiment of the present disclosure. In the illustrated embodiment, the system environment 2000 includes one or more client devices 2004, 2006, and 2008 that can be used by a user to interact with a cloud infrastructure system 2002 that provides cloud services. The client computing device can be configured to operate a client application, such as a web browser, a proprietary client application (e.g., Oracle Forms), or some other application that can be used by a user of the client computing device to interact with the cloud infrastructure system 2002 to use the services provided by the cloud infrastructure system 2002.
[0134] It should be appreciated that the cloud infrastructure system 2002 depicted in the figure may have other components than those depicted. In addition, the embodiment shown in the figure is merely one example of a cloud infrastructure system that may incorporate embodiments of the present invention. In some other embodiments, the cloud infrastructure system 2002 may have more or fewer components than shown in the figure, may combine two or more components, or may have a different configuration or arrangement of components.
[0135] Client devices 2004 , 2006 , and 2008 may be similar devices to those described above with respect to 1902 , 1904 , 1906 , and 1908 .
[0136] Although the exemplary system environment 2000 is shown with three client computing devices, any number of client computing devices may be supported. Other devices (such as devices with sensors, etc.) may interact with the cloud infrastructure system 2002 .
[0137] The network(s) 2010 can facilitate the communication and exchange of data between the client devices 2004, 2006, and 2008 and the cloud infrastructure system 2002. Each network can be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially available protocols, including those described above for the network(s) 1910.
[0138] Cloud infrastructure system 2002 may include one or more computers and / or servers, which may include those described above with respect to server 1912 .
[0139] In certain embodiments, the services provided by the cloud infrastructure system may include many services available on demand to users of the cloud infrastructure system, such as online data storage and backup solutions, web-based email services, hosted office suites and document collaboration services, database processing, managed technical support services, etc. The services provided by the cloud infrastructure system can be dynamically expanded to meet the needs of users of the cloud infrastructure system. The specific instantiation of the services provided by the cloud infrastructure system is referred to as a "service instance" in this article. In general, any service available to users from a cloud service provider's system via a communication network (such as the Internet) is referred to as a "cloud service." Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premises servers and systems. For example, a cloud service provider's system can host applications, and users can order and use applications on demand via a communication network such as the Internet.
[0140] In some examples, services in a computer network cloud infrastructure may include protected computer network access to storage devices, hosted databases, hosted web servers, software applications, or other services provided by a cloud provider to users, or as otherwise known in the art. For example, a service may include password-protected access to remote storage devices on the cloud over the Internet. As another example, a service may include a hosted relational database and scripting language middleware engine based on web services for private use by networked developers. As another example, a service may include access to an email software application hosted on a cloud provider's website.
[0141] In certain embodiments, the cloud infrastructure system 2002 may include a suite of application, middleware, and database service offerings delivered to customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such a cloud infrastructure system is the Oracle public cloud provided by the present assignee.
[0142] In various embodiments, the cloud infrastructure system 2002 may be adapted to automatically provision, manage, and track customer subscriptions to services provided by the cloud infrastructure system 2002. The cloud infrastructure system 2002 may provide cloud services via different deployment models. For example, services may be provided in accordance with a public cloud model, where the cloud infrastructure system 2002 is owned by an organization that sells cloud services (e.g., owned by Oracle), and the services are available to the general public or businesses in different industries. As another example, services may be provided in accordance with a private cloud model, where the cloud infrastructure system 2002 operates only for a single organization and may provide services to one or more entities within the organization. Cloud services may also be provided in accordance with a community cloud model, where the cloud infrastructure system 2002 and the services provided by the cloud infrastructure system 2002 are shared by several organizations in a related community. Cloud services may also be provided in accordance with a hybrid cloud model, which is a combination of two or more different models.
[0143] In some embodiments, the services provided by cloud infrastructure system 2002 may include one or more services provided under a software as a service (SaaS) category, a platform as a service (PaaS) category, an infrastructure as a service (IaaS) category, or other service categories including hybrid services. A customer, via a subscription order, may subscribe to one or more services provided by cloud infrastructure system 2002. Cloud infrastructure system 2002 then performs processing to provide the services in the customer's subscription order.
[0144] In some embodiments, the services provided by the cloud infrastructure system 2002 may include, but are not limited to, application services, platform services, and infrastructure services. In some examples, application services may be provided by the cloud infrastructure system via a SaaS platform. The SaaS platform may be configured to provide cloud services that fall into the SaaS category. For example, a SaaS platform may provide the ability to build and deliver on-demand application suites on an integrated development and deployment platform. The SaaS platform may manage and control the underlying software and infrastructure used to provide SaaS services. By utilizing the services provided by the SaaS platform, customers may utilize applications executed on a cloud infrastructure system. Customers may obtain application services without the need for customers to purchase separate licenses and support. A variety of different SaaS services may be provided. Examples include, but are not limited to, services that provide solutions for sales performance management, enterprise integration, and business flexibility to large organizations.
[0145] In some embodiments, platform services can be provided by a cloud infrastructure system via a PaaS platform. The PaaS platform can be configured to provide cloud services that fall into the PaaS category. Examples of platform services may include, but are not limited to, services that enable organizations (such as Oracle) to integrate existing applications on a shared public architecture and to fully utilize the shared services provided by the platform to build new applications. The PaaS platform can manage and control the underlying software and infrastructure for providing PaaS services. Customers can obtain PaaS services provided by a cloud infrastructure system without the need for customers to purchase separate licenses and support. Examples of platform services include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), etc.
[0146] By utilizing the services provided by the PaaS platform, customers can adopt programming languages and tools supported by the cloud infrastructure system and also control the deployed services. In some embodiments, the platform services provided by the cloud infrastructure system may include database cloud services, middleware cloud services (e.g., Oracle Fusion Middleware Services) and Java cloud services. In one embodiment, the database cloud service may support a shared service deployment model that enables organizations to pool database resources and supply databases as a service to customers in the form of database clouds. Middleware cloud services can provide customers with a platform for developing and deploying various business applications, and Java cloud services can provide customers with a platform for deploying Java applications in a cloud infrastructure system.
[0147] A variety of different infrastructure services can be provided by IaaS platforms in cloud infrastructure systems. Infrastructure services facilitate the management and control of underlying computing resources (such as storage, networks, and other basic computing resources) for customers to utilize services provided by SaaS platforms and PaaS platforms.
[0148] In some embodiments, the cloud infrastructure system 2002 may also include infrastructure resources 2030 for providing resources for providing various services to customers of the cloud infrastructure system. In one embodiment, the infrastructure resources 2030 may include a combination of pre-integrated and optimized hardware (such as servers, storage devices, and networking resources) to perform services provided by the PaaS platform and the SaaS platform.
[0149] In some embodiments, resources in cloud infrastructure system 2002 can be shared by multiple users and dynamically reallocated as needed. In addition, resources can be allocated to users in different time zones. For example, cloud infrastructure system 2002 can enable a first group of users in a first time zone to utilize the resources of the cloud infrastructure system for a specified number of hours, and then enable the same resources to be reallocated to another group of users in a different time zone, thereby maximizing the utilization of the resources.
[0150] In certain embodiments, a plurality of internal shared services 2032 may be provided that are shared by different components or modules of the cloud infrastructure system 2002 and services provided by the cloud infrastructure system 2002. These internal shared services may include, but are not limited to: security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelisting services, high availability, backup and recovery services, cloud-enabled services, email services, notification services, file transfer services, and the like.
[0151] In some embodiments, the cloud infrastructure system 2002 can provide comprehensive management of cloud services (e.g., SaaS, PaaS, and IaaS services) in the cloud infrastructure system. In one embodiment, the cloud management function can include the ability to provision, manage, and track customer subscriptions received by the cloud infrastructure system 2002, etc.
[0152] In one embodiment, as depicted in the figure, cloud management functionality may be provided by one or more modules, such as order management module 2020, order orchestration module 2022, order supply module 2024, order management and monitoring module 2026, and identity management module 2028. These modules may include or be provided using one or more computers and / or servers, which may be general purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.
[0153] In example operation 2034, a customer using a client device, such as client device 2004, 2006, or 2008, may interact with cloud infrastructure system 2002 by requesting one or more services provided by cloud infrastructure system 2002 and placing an order to subscribe to one or more services offered by cloud infrastructure system 2002. In some examples, the customer may access a cloud user interface (UI), cloud UI 2012, cloud UI 2014, and / or cloud UI 2016, and place a subscription order via these UIs. Order information received by cloud infrastructure system 2002 in response to a customer placing an order may include information identifying the customer and one or more services offered by cloud infrastructure system 2002 to which the customer wants to subscribe.
[0154] After the customer places an order, order information is received via the cloud UI, 2012, 2014 and / or 2016.
[0155] At operation 2036, the order is stored in order database 2018. Order database 2018 can be one of several databases operated by cloud infrastructure system 2018 and in conjunction with other system elements.
[0156] At operation 2038, the order information is forwarded to order management module 2020. In some cases, order management module 2020 may be configured to perform billing and accounting functions related to the order, such as verifying the order, and upon verification, booking the order.
[0157] At operation 2040, information about the order is transmitted to order orchestration module 2022. Order orchestration module 2022 can use the order information to orchestrate the provision of services and resources for the order placed by the customer. In some cases, order orchestration module 2022 can use the services of order provisioning module 2024 to orchestrate the provision of resources to support the subscribed services.
[0158] In certain embodiments, order orchestration module 2022 enables management of the business processes associated with each order and applies business logic to determine whether the order should proceed to provisioning. At operation 2042, upon receiving an order for a new subscription, order orchestration module 2022 sends a request to order provisioning module 2024 to allocate resources and configure those resources required to fulfill the subscription order. Order provisioning module 2024 enables allocation of resources for services ordered by a customer. Order provisioning module 2024 provides an abstraction layer between the cloud services provided by cloud infrastructure system 2002 and the physical implementation layer for provisioning resources for providing the requested services. Thus, order orchestration module 2022 can be isolated from implementation details, such as whether services and resources are actually provisioned on the fly or pre-provisioned and allocated / assigned only upon request.
[0159] At operation 2044 , once the services and resources are provisioned, notification of the provided services may be sent to the customers on the client devices 2004 , 2006 , and / or 2008 via the order provisioning module 2024 of the cloud infrastructure system 2002 .
[0160] At operation 2046, the order management and monitoring module 2026 can manage and track the customer's subscription order. In some cases, the order management and monitoring module 2026 can be configured to collect usage statistics for the services in the subscription order, such as the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and system downtime.
[0161] In certain embodiments, cloud infrastructure system 2002 may include identity management module 2028. Identity management module 2028 may be configured to provide identity services, such as access management and authorization services in cloud infrastructure system 2002. In some embodiments, identity management module 2028 may control information about clients that wish to utilize services provided by cloud infrastructure system 2002. Such information may include information authenticating the identities of such clients and information describing which actions such clients are authorized to perform with respect to various system resources (e.g., files, directories, applications, communication ports, memory segments, etc.). Identity management module 2028 may also include management of descriptive information about each client and how and by whom such descriptive information may be accessed and modified.
[0162] Fig.21 An exemplary computer system 2100 in which various embodiments may be implemented is illustrated. System 2100 may be used to implement any of the above-described computer systems. As shown, computer system 2100 includes a processing unit 2104 that communicates with multiple peripheral subsystems via a bus subsystem 2102. These peripheral subsystems may include a processing acceleration unit 2106, an I / O subsystem 2108, a storage subsystem 2118, and a communication subsystem 2124. Storage subsystem 2118 includes a tangible computer-readable storage medium 2122 and a system memory 2110.
[0163] The bus subsystem 2102 provides a mechanism for allowing the various components and subsystems of the computer system 2100 to communicate with each other by intention. Although the bus subsystem 2102 is schematically shown as a single bus, the alternative embodiment of the bus subsystem can utilize multiple buses. The bus subsystem 2102 can be any type of bus structure of several types, and these bus types include a memory bus or a memory controller, a peripheral bus, and a local bus using any architecture of a various bus architecture. For example, this architecture can include an industrial standard architecture (ISA) bus, a microchannel architecture (MCA) bus, an enhanced ISA (EISA) bus, a video electronics standard association (VESA) local bus, and a peripheral component interconnect (PCI) bus, which can be implemented as a Mezzanine bus manufactured by the IEEE P1386.1 standard.
[0164] The processing unit 2104, which may be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 2100. One or more processors may be included in the processing unit 2104. These processors may include a single-core processor or a multi-core processor. In certain embodiments, the processing unit 2104 may be implemented as one or more independent processing units 2132 and / or 2134, wherein a single-core processor or a multi-core processor is included in each processing unit. In other embodiments, the processing unit 2104 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.
[0165] In various embodiments, the processing unit 2104 can execute various programs in response to the program code and can maintain multiple concurrently executed programs or processes. At any given time, some or all of the program code to be executed can reside in the processing unit 2104 and / or in the storage subsystem 2118. Through appropriate programming, the processing unit 2104 can provide the various functions described above. The computer system 2100 can additionally include a processing acceleration unit 2106, which can include a digital signal processor (DSP), a special processor, etc.
[0166] I / O subsystem 2108 may include user interface input devices and user interface output devices. User interface input devices may include keyboards, pointing devices such as a mouse or trackball, touch pads or touch screens incorporated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may include, for example, motion sensing and / or gesture recognition devices such as Microsoft Motion sensors that enable users to control devices such as Microsoft 360 game controller and interact with the input device. The user interface input device may also include an eye gesture recognition device, such as detecting eye activity from the user (e.g., a "wink" when taking a picture and / or making a menu selection) and converting the eye gesture into an input device (e.g., Google ) in Google Blink detector. In addition, the user interface input device may include a user interface that enables the user to communicate with the voice recognition system (e.g., Navigator) interactive voice recognition sensing device.
[0167] User interface input devices may also include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, game panels and drawing tablets, and audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers 3D scanners, 3D printers, laser rangefinders, and sight tracking devices. In addition, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, positron emission tomography, medical ultrasound equipment, and the like. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments, and the like.
[0168] The user interface output device may include a display subsystem, indicator lights, or a non-visual display such as an audio output device. The display subsystem may be a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD) or plasma display, a projection device, a touch screen, etc. In general, the use of the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from the computer system 2100 to a user or other computers. For example, the user interface output device may include, but is not limited to, various display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, voice output devices, and modems.
[0169] Computer system 2100 may include a storage subsystem 2118 containing software elements, shown as currently located within system memory 2110. System memory 2110 may store program instructions that may be loaded and executed on processing unit 2104, as well as data generated during execution of these programs.
[0170] Depending on the configuration and type of computer system 2100, system memory 2110 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). RAM typically contains data and / or program modules that are immediately accessible to and / or currently being operated and executed by processing unit 2104. In some embodiments, system memory 2110 may include multiple different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some embodiments, a basic input / output system (BIOS) containing basic routines that help transfer information between elements within computer system 2100, such as during startup, may typically be stored in ROM. By way of example and not limitation, system memory 2110 also illustrates application programs 2112, which may include client applications, web browsers, middle-tier applications, relational database management systems (RDBMS), etc., program data 2114, and an operating system 2116. By way of example, operating system 2116 may include various versions of Microsoft Apple and / or Linux operating systems, various commercially available or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google OS, etc.) and / or such as iOS, Phone, OS, 10OS and OS operating system's mobile operating system.
[0171] The storage subsystem 2118 may also provide a tangible computer-readable storage medium for storing basic programming and data structures that provide the functionality of some embodiments. Software (programs, code modules, instructions) that provide the above-described functionality when executed by the processor may be stored in the storage subsystem 2118. These software modules or instructions may be executed by the processing unit 2104. The storage subsystem 2118 may also provide a repository for storing data used in accordance with the present invention.
[0172] The storage subsystem 2100 may also include a computer-readable storage media reader 2120 that may be further connected to a computer-readable storage medium 2122. Together with and optionally in conjunction with the system memory 2110, the computer-readable storage medium 2122 may comprehensively represent remote, local, fixed, and / or removable storage devices plus storage media for temporarily and / or more permanently containing, storing, transmitting, and retrieving computer-readable information.
[0173] The computer-readable storage medium 2122 containing the code or a portion of the code may also include any suitable media known or used in the art, including storage media and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and / or transmission of information. This may include tangible computer-readable storage media, such as RAM, ROM, electrically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media. This may also include non-tangible computer-readable media, such as data signals, data transmissions, or any other media that can be used to send the desired information and can be accessed by the computing system 2100.
[0174] As examples, computer-readable storage media 2122 may include hard disk drives that read from or write to non-removable nonvolatile magnetic media, disk drives that read from or write to removable nonvolatile disks, and removable nonvolatile optical disks such as CD ROMs, DVDs, and DVDs. Computer readable storage media 2122 may include, but are not limited to: The computer readable storage medium 2122 may include a solid-state drive (SSD) based on non-volatile memory (such as a flash memory-based SSD, an enterprise flash drive, a solid-state ROM, etc.), a volatile memory-based SSD (such as a solid-state RAM, a dynamic RAM, a static RAM, a DRAM-based SSD, a magnetoresistive RAM (MRAM) SSD), and a hybrid SSD using a combination of DRAM and flash memory-based SSDs. The disk drive and its associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computer system 2100.
[0175] The communication subsystem 2124 provides an interface to other computer systems and networks. The communication subsystem 2124 is used as an interface for receiving data from other systems and sending data from the computer system 2100 to other systems. For example, the communication subsystem 2124 can enable the computer system 2100 to be connected to one or more devices via the Internet. In some embodiments, the communication subsystem 2124 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular phone technology, advanced data network technology, such as 3G, 4G or EDGE (Enhanced Data Rate for Global Evolution), WiFi (IEEE 802.11 series standards) or other mobile communication technologies, or any combination thereof), a global positioning system (GPS) receiver component and / or other components. In some embodiments, as an addition or replacement of a wireless interface, the communication subsystem 2124 can provide a wired network connection (e.g., Ethernet).
[0176] In some embodiments, the communication subsystem 2124 may also receive input communications in the form of structured and / or unstructured data feeds 2126, event streams 2128, event updates 2130, and the like on behalf of one or more users who may use the computer system 2100.
[0177] As an example, the communication subsystem 2124 may be configured to receive data feeds 2126 in real time from users of a social network and / or other communication service, such as feed, Updates, web feeds such as Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.
[0178] Additionally, the communication subsystem 2124 may also be configured to receive data in the form of a continuous data stream, which may include event streams 2128 and / or event updates 2130, which may be continuous or unbounded in nature, real-time events without explicit termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial price tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, and the like.
[0179] The communication subsystem 2124 can also be configured to output structured and / or unstructured data feeds 2126, event streams 2128, event updates 2130, etc. to one or more databases, which can communicate with one or more streaming data source computers coupled to the computer system 2100.
[0180] Computer system 2100 may be one of a variety of types, including a handheld portable device (e.g., Cellular phone, computing tablets, PDAs), wearable devices (e.g., Google head mounted display), PC, workstation, mainframe, kiosk, server rack, or any other data processing system.
[0181] Due to the ever-changing nature of computers and networks, the description of the computer system 2100 depicted in the figure is intended only as a specific example. Many other configurations with more or fewer components than the system depicted in the figure are possible. For example, customized hardware may also be used and / or specific elements may be implemented in hardware, firmware, software (including applets) or a combination thereof. In addition, connections to other computing devices such as network input / output devices may be employed. Based on the disclosure and teachings provided herein, one of ordinary skill in the art will recognize other ways and / or methods of implementing various embodiments.
[0182] In the foregoing description, for the purpose of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without some of these specific details. In other cases, well-known structures and devices are shown in block diagram form.
[0183] The foregoing description provides only exemplary embodiments and is not intended to limit the scope, applicability or configuration of the present disclosure. More specifically, the foregoing description of the exemplary embodiments will provide an enabling description for implementing the exemplary embodiments to those skilled in the art. It should be understood that various changes may be made to the functions and arrangements of the elements without departing from the spirit and scope of the present invention as set forth in the appended claims.
[0184] Specific details are given in the foregoing description to provide a thorough understanding of the embodiments. However, it will be appreciated by those of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may have been shown as components in block diagram form so as not to obscure the embodiments with unnecessary detail. In other cases, well-known circuits, processes, algorithms, structures, and techniques may have been shown without unnecessary detail so as not to obscure the embodiments.
[0185] Moreover, it should be noted that various embodiments may have been described as processes depicted as flow charts, flow diagrams, data flow diagrams, structure diagrams, or block diagrams. Although flow charts may have described operations as sequential processes, many operations may be performed in parallel or concurrently. In addition, the order of operations may be rearranged. A process terminates when its operations are completed, but may have additional steps not included in the figure. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to a calling function or a main function.
[0186] The term "computer-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and various other media capable of storing, containing, or carrying (one or more) instructions and / or data. Code segments or machine executable instructions can represent any combination of processes, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or instructions, data structures, or program statements. Code segments can be coupled to another code segment or hardware circuit by transmitting and / or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, etc. can be transmitted, forwarded, or transmitted via any suitable means, including memory sharing, message passing, token passing, network transmission, etc.
[0187] In addition, the embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description language, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments that perform the necessary tasks may be stored in a machine-readable medium. (One or more) processors may perform the necessary tasks.
[0188] In the foregoing description, various aspects of the present invention have been described with reference to the specific embodiments of various aspects of the present invention, but it will be appreciated by those skilled in the art that the present invention is not limited thereto. Each feature and aspect of the foregoing invention may be used alone or in combination. In addition, without departing from the broader spirit and scope of this specification, the embodiment may be used in any number of environments and applications other than those described herein. Accordingly, this specification and the accompanying drawings should be considered to be illustrative rather than restrictive.
[0189] In addition, for the purpose of illustration, method is described in a specific order. It should be appreciated that, in an alternative example, the method can be performed in a sequence different from the described order. It should also be appreciated that the above method can be performed by a hardware component, or can be implemented with a sequence of machine executable instructions, which can be used to make a machine (such as a general or special processor or logic circuit programmed with instructions) perform the method. These machine executable instructions can be stored in one or more machine-readable media, such as CD-ROM or other types of optical disks, floppy disks, ROM, RAM, EPROM, EEPROM, magnetic cards or optical cards, flash memory or other types of machine-readable media suitable for storing electronic instructions. Alternatively, the method can be performed by a combination of hardware and software.
Claims
1. A method for generating a visualization object from a set of data points, the method comprising: receiving one or more data sets and an indication of a predetermined 3D shape; generating a plurality of 3D objects, each 3D object corresponding to a data point in the one or more data sets, wherein each of the data points comprises a plurality of attribute values; visually arranging the plurality of 3D objects into the predetermined 3D shape in the 3D environment so that the plurality of 3D objects form the predetermined 3D shape; as well as Appearance and movement of a 3D object within the predetermined 3D shape are controlled based on the plurality of property values of corresponding data points in the one or more data sets. The method of claim 1 , wherein the predetermined 3D shape comprises a funnel object. The method of claim 2 , wherein the 3D objects include spheres arranged to form a funnel object. The method of claim 3 , wherein the sphere rotates around the circumference of the funnel object. The method of claim 4 , wherein the sphere rotates at a speed and / or radius determined by the attribute values of the corresponding data points. The method of claim 4 , wherein the spheres are colored based on attribute values of corresponding data points. The method of claim 2 , wherein the funnel object is divided into a plurality of sections.
8. The method of claim 7, wherein: The plurality of 3D objects are located in the plurality of sections based on the property values of the corresponding data points.
9. A non-transitory computer readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving one or more data sets and an indication of a predetermined 3D shape; generating a plurality of 3D objects, each 3D object corresponding to a data point in the one or more data sets, wherein each of the data points comprises a plurality of attribute values; visually arranging the plurality of 3D objects into the predetermined 3D shape in the 3D environment so that the plurality of 3D objects form the predetermined 3D shape; as well as Appearance and movement of a 3D object within the predetermined 3D shape are controlled based on the plurality of property values of corresponding data points in the one or more data sets.
10. The non-transitory computer readable medium of claim 9, wherein the operations further comprise: Displays the animation or path of one of the 3D objects over time.
11. The non-transitory computer readable medium of claim 10, further comprising inserting time stamps into the predetermined 3D shape at a plurality of points along an animation or path. 12 . The non-transitory computer readable medium of claim 10 , wherein the animation comprises a 3D object rotating around the predetermined 3D shape over time.
13. The non-transitory computer readable medium of claim 10, wherein a speed of the animation is based on properties of corresponding data points in the one or more data sets.
14. The non-transitory computer readable medium of claim 10, wherein the animation or path is represented by a spline object in the virtual environment.
15. A system for generating a visualization object from a set of data points, the system comprising: one or more processors; as well as one or more memory devices comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving one or more data sets and an indication of a predetermined 3D shape; generating a plurality of 3D objects, each 3D object corresponding to a data point in the one or more data sets, wherein each of the data points comprises a plurality of attribute values; visually arranging the plurality of 3D objects into the predetermined 3D shape in the 3D environment so that the plurality of 3D objects form the predetermined 3D shape; as well as Appearance and movement of a 3D object within the predetermined 3D shape are controlled based on the plurality of property values of corresponding data points in the one or more data sets.
16. The system of claim 15, wherein the operations further comprise: A plurality of views of the plurality of 3D objects in a virtual environment are provided to a plurality of client devices.
17. The system of claim 16, wherein the plurality of client devices comprises virtual reality headsets.
18. The system of claim 15, wherein the predetermined 3D shape comprises a funnel object.
19. The system of claim 18, wherein the 3D objects include spheres arranged to form a funnel object.
20. The system of claim 19, wherein the sphere rotates around the circumference of the funnel object.
Citation Information
Patent Citations
Optimizing virtual data views using voice commands and defined perspectives
US11361510B2
Interactive data explorer and 3-d dashboard environment
US20200126275A1
Animation between visualization objects in a virtual dashboard
US20200126282A1
Data visualization objects in a virtual environment
US20200126309A1
Systems and Methods for Data Visualization Using Three-Dimensional Displays
US20170193688A1