1. Technical Field
Aspects of the present invention relate to a template-based method for three-dimensional (3D) report generation and, more particularly, to the creation and use of an extensible mark-up language (XML) template for creating a report with one or more 3D objects that may be included into a higher-language document format (e.g., portable document format or PDF) and retain the active attributes of the 3D objects.
2. Description of Related Art
There are many industries and services that rely on the generation of three-dimensional (3D) images (objects) to transmit information. For example, many medical images are three-dimensional, and need to be transmitted from the person creating the image (e.g., radiologist) to a physician. Similarly, an engineer working on a failed component at a worksite location may need to transmit a three-dimensional image of the component to co-workers at another location.
Heretofore, the recipients of documents including three-dimensional images were required to have a specialty type of software to be able to fully view and manipulate the 3D object. Otherwise, the document recipient will only be able to view a two-dimensional (2D) representation of the object. Moreover, in cases where the image needs to be included in a larger report document (perhaps including multiple images), the same problems arise. Either the recipient of the report document had the specialty software required to manipulate the 3D images, or the report would be limited to 2D representations.
The needs in the prior art are addressed by aspects of the present invention, which relate to a template-based method that generates a 3D report and, more particularly, to the creation and use of an extensible mark-up language (XML) template that creates a report with one or more 3D objects that may be included into a higher-language document format (e.g., portable document format or PDF) and retain the 3D features.
In accordance with aspects of the present invention, a method and system is disclosed that generates a PDF report with embedded 3D objects, the 3D objects created using an XML template configured in accordance with aspects of the present invention. The XML template supports various types of 3D models from various data sources, such as engineering CAD models, medical volumetric data, etc.
In an embodiment of aspects of the present invention, an input template is created that includes a number of different XML <tags> for defining specific elements typically found in a PDF document (paragraphs, tables, images, etc.). Further, a specific XML template fragment is configured to allow for a 3D object (created using any type of software system) to be imported in “active” form to the document being created. Once the actual PDF report is generated, it may be distributed to various recipients who are then able to manipulate the 3D object(s).
A particular embodiment of aspects of the present invention takes the form of an apparatus that generates a high-level language report document including active 3D objects, the apparatus using an input template that defines a plurality of elements to be included in a generated report, at least one element defining a set of steps that import a selected 3D object into the generated report. Also utilized with the apparatus is a database of available 3D source documents. The report generation system includes an application processor that translates the input template into an XML format template, an edit engine in communication with the application processor (the edit engine utilized by an individual to activate the report generation system and supply input data to populate the XML template, including identifying at least one source file including a 3D object), and a report generator, responsive to the edited XML template created by the user, that identifies and imports the at least one source file including a 3D object and merging said at least one source file into the created XML template, generating as an output a high-level language report including active 3D objects.
Another embodiment of aspects of the present invention is defined as a method of generating a high-level language report including active 3D objections, comprising the steps of: (1) creating an input template defining a plurality of elements to be included in a generated report, at least one element defining a set of steps that import a selected 3D object into the generated report; (2) providing a database of available 3D source documents; (3) translating the input template into an XML format template; (4) populating the XML template with input data, including identifying at least one source file including a 3D object to be included as an active 3D object in the report; (5) formatting a high-level language report document, using as inputs the populated XML template and the database, identifying and importing the at least one source file including a 3D object and merging said at least one source file into the created XML template; and (6) generating as an output a high-level language report including active 3D objects.
Other and further aspects of the present invention will become apparent during the course of the following discussion and by reference to the accompanying drawings.
Referring now to the drawings,
A processor, as used herein, operates under the control of an executable application to (a) receive information from an input information device, (b) process the information by manipulating, analyzing, modifying, converting and/or transmitting the information, and/or (c) route the information to an output information device. A processor may use, or comprise the capabilities of, a controller or microprocessor, for example. The processor may operate with a display processor or generator. A display processor or generator is a known element for generating signals representing display images or portions thereof. A processor and a display processor comprises any combination of, hardware, firmware, and/or software.
An executable application, as used herein, comprises code or machine readable instructions for conditioning the processor to implement predetermined functions, such as those of an operating system, a report generation system or other information processing system, for example, in response to user command or input. An executable procedure is a segment of code or machine readable instruction, sub-routine, or other distinct section of code or portion of an executable application for performing one or more particular processes. These processes may include receiving input data and/or parameters, performing operations on received input data and/or performing functions in response to received input parameters, and providing resulting output data and/or parameters.
A user interface (UI), as used herein, comprises one or more display images, generated by the display processor under the control of the processor. The UI also includes an executable procedure or executable application. The executable procedure or executable application conditions the display processor to generate signals representing the UI display images. These signals are supplied to a display device which displays the image for viewing by the user. The executable procedure or executable application further receives signals from user input devices, such as a keyboard, mouse, light pen, touch screen or any other means allowing a user to provide data to the processor. The processor, under control of the executable procedure or executable application manipulates the UI display images in response to the signals received from the input devices. In this way, the user interacts with the display image using the input devices, enabling user interaction with the processor or other device. A graphical user interface (GUI) comprises one or more graphical display images enabling a user to interact with a processor or other device.
The created report may include one or more 3D objects, as well as various other types of active objects, including the 2D meta-data associated with these objects. Ultimately, as shown, a generated 3D-PDF report output (i.e., a PDF document including active 3D objects) is presented to a communication network 12, enabling transfer of the report to various destinations. The recipient(s) of this 3D-PDF report is (are) then able to manipulate the 3D objects using standard software (i.e., a freely-available reader) without requiring any type of vendor-specific 3D viewer.
Before the report can be generated, a person identified as the report template builder defines and constructs an input template 14. Input template 14 is created to include the definitions for the various elements that may be found in a typical PDF report, for example, tables, images, objects, text blocks, paragraphs and the like. Importantly, one of the elements included within input template 14 allows for 3D objects (configured via any program) to be imported into a report that is generated. The person building the report template may use either a graphical user interface (GUI) in defining the template, or create the template manually in those situations in which the template structure is relatively simple. Once input template 14 has been created, it is forwarded to an executable application 16 within report generating system 10, which transforms input template 14 into an XML template 18 ready to be populated by a user needing to generate a report.
As discussed above, 3D objects are created in a variety of circumstances. Medical personnel create 3D images during examinations and procedures; engineers create 3D images during the development of a new product (or performing analysis of existing products), architectures create 3D images of structures being built or renovated, etc. Indeed, there are many different professions which utilize 3D images, and need to transmit those images to other people and/or organizations that do not have the “specialized” vendor-specific software otherwise required for manipulating 3D objects created via a variety of different programs.
In accordance with aspects of the present invention, when report generation system 10 is invoked by a user, input template 14 supplies (via application 16) the various XML template elements to XML template 18, where the user is then able to construct the arrangement of a specific report (i.e., identifying the specific elements and other input data) via an edit engine 22. Once the template has been constructed to the satisfaction of the user, and the various required data elements have been provided by the user, XML template 18 is sent to a report generator 24 which builds the output 3D-PDF report. Report generator 24 interacts with 3D object source 20 to find the various source documents (i.e., 3D objects) requested by the user and defined within XML template 18. Report generator 24 then imports the specified 3D objects into XML template 18.
In one embodiment, report generator 24 may include an XSL transformation processor 25 that uses data from XML report template 18 and 3D objects from source 20 as inputs to generate a user-interactive collection of information in a generated 3D-PDF draft report 30 (other types of processors may be used in a similar manner). 3D-PDF draft report 30 may be edited by the user to create a final version of generated 3D-PDF document 32 provided as an output from report generations system 10.
A significant advantage of using XML in creating the report template in accordance with aspects of the present invention is that when using XML, there is a strict distinction between the content, representative and structure of the data used to generate the report. This is achieved since XML allows for the creation of tags in XML files, which tags can in turn include other tags. As a result, an XML file can set up a tree which leads to a structured distinction between different contents. Here, the “root” of the created tree is the desire to create a 3D-PDF report document, with a first level of child nodes beyond the root taking the form of “pages”, with each page then including one or more child nodes (i.e., paragraphs, 3D objects, graphs, tables, etc.) as explained in detail below.
The root node of the XML-based template for creating 3D-PDF reports is shown in
In accordance with the generation of a PDF document which obviously includes one or more individual pages, it is necessary define page parameters. All page definition nodes, as well as any children nodes within a page definition node, can have a metaTag attribute. For every page, the page size can be specified as “width, height”. If nothing is specified, a predetermined size can be presumed as default (i.e., letter size). FIG. 3 illustrates a specific XML template fragment associated with a <Page> tag 200 for importing a single page (shown as fragment A) or multiple pages (shown as fragment B). Referring to fragment A, the template parameters are shown as bolded text, with the data supplied by the user shown in conventional font (this same style is used in the description of the remaining template fragments as depicted in
<Page> tag 200 is shown as including a set of attributes, including “action” 210, “source” 220 and “page_start” 230. In this example, the data input by the user indicates that this is to be page “3”, with the “action” being to import information to this page. The “source” for this import is defined, in accordance with aspects of the present invention, as report_template.pdf. Any time that the action is to import, a source must also be defined, or an error will be generated. The attribute “page_start” 230 must be defined so that the document with the specified page number will be imported. In the “single page” import mode, discussed in detail in association with
Referring to fragment B shown in
As mentioned above, in the creation of a 3D-PDF report using the XML template in accordance with aspects of the present invention, it is possible for each <Page> node to include one or more child nodes.
With particular reference to the XML template fragment shown in
Also included within the Annotation3D node is a child node for controlling the merging of the actual 3D object file into the template being created. This is shown as a <modelStream> tag 520, and is used to invoke the transfer of a source file. into the template. Here, the source file is defined by a <u3dFile> tag 522, which identifies the source file as being a “3d” object (here a specific file abc123.u3d is identified). It is understood that the specific U3D file to be imported needs to be defined, and that requirement is shown as “mandatory” in
A paragraph element may include several chunks.
An exemplary set of possible paragraph attributes is also shown in
Images can be specified as either a child attribute of a page node, or as a child of a cell node within a table definition.
As mentioned above with the discussion of importing 3D object, the methodology in accordance with aspects of the present invention further provides the ability to create other active objects within the generated PDF report. For the purposes of successfully manipulating an imported 3D object, for example, it would be useful to have an active function in the form of a button that can be used to animate the object. As shown in
Most of the child nodes included within <button> node 1000 of
Instead of directly including the JavaScript® code in the jsAction node, an alternative configuration of a button node as shown in
Again considering the button 1100, the <text>Next</text> node of the button 1100 can use a single chunk node instead of plain text, allowing for further layout specification of the button text.
When necessary, the generated 3D-PDF report can include encryption features.
It is to be understood that the systems and methods described herein in accordance with aspects of the present invention may be implemented in various forms of hardware, software, firmware, special purpose processors, or a combination thereof. Aspects of the present invention are implemented in software as an application comprising program instructions that are tangibly embodied on one or more program storage devices (e.g., hard disk, magnetic floppy disk, RAM, CD Rom, DVD, ROM, etc.), and executable by any device or machine comprising suitable architecture.
It is to be further understood that because the constituent system modules and method steps depicted in the accompanying drawing figures are implemented in software, for example, the actual connections between the system components (or the flow of the process steps) may differ depending upon the manner in which the application is programmed. Given the teachings herein, one of ordinary skill in the related art will be able to contemplate these and similar implementations or configurations in accordance with aspects of the present invention.