Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DETERMINATION OF MATCHES BETWEEN TRANSFORMED AND FIRST 3D MODELS
Document Type and Number:
WIPO Patent Application WO/2020/023042
Kind Code:
A1
Abstract:
According to examples, an apparatus may include a processor and a memory on which is stored machine readable instructions that when executed by the processor, may cause the processor to calculate a first surface area of a first 3D model, calculate a second surface area of a transformed 3D model of the first 3D model, and determine whether the second surface area matches the first surface area. In addition, based on a determination that the second surface area does not match the first surface area, the instructions may cause the processor to output an indication that the transformed 3D model differs from the first 3D model.

Inventors:
BECK RICARDO DA SILVA (BR)
CRAVO DIOGO RAPHAEL (BR)
PEREIRA SILVA GUILHERME (BR)
Application Number:
PCT/US2018/043892
Publication Date:
January 30, 2020
Filing Date:
July 26, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
G06T19/00
Foreign References:
US20170004621A12017-01-05
US9600929B12017-03-21
US20170256093A12017-09-07
US20110292037A12011-12-01
Attorney, Agent or Firm:
LEMMON, Marcus B. et al. (US)
Download PDF:
Claims:
What is claimed is:

1. An apparatus comprising:

a processor; and

a memory on which is stored machine readable instructions that when executed by the processor, cause the processor to:

calculate a first surface area of a first 3D model;

calculate a second surface area of a transformed 3D model of the first 3D model;

determine whether the second surface area matches the first surface area; and

based on a determination that the second surface area does not match the first surface area, output an indication that the transformed 3D model differs from the first 3D model.

2. The apparatus of claim 1 , wherein the instructions are further to cause the processor to:

based on a determination that the second surface area matches the first surface area,

calculate a first slice surface area of a first slice taken at a first location of the transformed 3D model;

calculate a corresponding first slice surface area of a corresponding slice taken at a corresponding first location of the first 3D model;

determine whether the calculated first slice surface area matches the calculated corresponding first slice surface area; and

based on a determination that the calculated first slice surface area does not match the calculated corresponding first slice surface area, output an indication that the transformed 3D model differs from the first 3D model.

3. The apparatus of claim 2, wherein the instructions are further to cause the processor to: based on a determination that the calculated first slice surface area matches the calculated corresponding first slice surface area,

identify a next location in the transformed 3D model; calculate a next slice surface area of a next slice taken at the next location of the transformed 3D model;

calculate a next corresponding slice surface area of a next corresponding slice taken at a next corresponding location of the first 3D model;

determine whether the calculated next slice surface area matches the calculated next corresponding slice surface area; and

based on a determination that the calculated next slice surface area does not match the calculated next corresponding slice surface area, output an indication that the transformed 3D model differs from the first 3D model.

4. The apparatus of claim 3, wherein the instructions are further to cause the processor to:

based on a determination that the calculated next slice surface area matches the calculated next corresponding slice surface area, compare additional slice surface areas of the transformed 3D model with corresponding slice surface areas of the first 3D model until a difference is determined or an end of the transformed 3D model is reached;

based on a determination that any of the additional slice surface areas of the transformed 3D model differs from the corresponding slice surface areas of the first 3D model, output the indication that the transformed 3D model differs from the first 3D model; and

based on a determination that none of the additional slice surface areas of the transformed 3D model differs from the corresponding slice surface areas of the first 3D model, output an indication that the transformed 3D model matches the first 3D model.

5. The apparatus of claim 2, wherein instructions are further to cause the processor to:

identify the first location as a location of a triangle of a plurality of triangles representing a mesh of the transformed 3D model; and

calculate the first slice surface area of the first slice from a plurality of vertices representing the transformed 3D model at the first location.

6. The apparatus of claim 1 , wherein the first 3D model complies with a predefined standard and wherein the instructions are further to cause the processor to:

determine whether the transformed 3D model complies with the predefined standard;

based on a determination that the transformed 3D model does not comply with the predefined standard, output an indication that the transformed 3D model differs from the first 3D model; and

based on a determination that the transformed 3D model conforms to the predefined standard, determine whether the second surface area matches the first surface area.

7. The apparatus of claim 1 , wherein the first 3D model includes a build tag and wherein the instructions are further to cause the processor to:

identify a build tag of the transformed 3D model;

determine whether the build tag of the transformed 3D model includes a feature that differs from the build tag of the first 3D model;

based on a determination that the build tag of the transformed 3D model includes a feature that differs from the build tag of the first 3D model, output an indication that the transformed 3D model differs from the first 3D model; and based on a determination that the build tag of the transformed 3D model does not include a feature that differs from the build tag of the first 3D model, determine whether the second surface area matches the first surface area.

8. A method comprising:

calculating, by a processor, a first surface area of a first 3D model; calculating, by the processor, a surface area of a modified 3D model, the modified 3D model being a modified version of the first 3D model;

determining, by the processor, whether the surface area of the modified 3D model is within a predefined surface area difference of the first surface area; and

based on a determination that the surface area of the modified 3D model is outside of the predefined surface area difference of the first surface area, outputting, by the processor, an indication that the modified 3D model differs from the first 3D model.

9. The method of claim 8, further comprising:

based on a determination that the surface area of the modified 3D model is within the predefined surface area difference of the first surface area,

calculating a first slice surface area of a first slice taken at a first location of the modified 3D model;

calculating a corresponding first slice surface area of a corresponding slice taken at a corresponding first location of the first 3D model;

determining whether the calculated first slice surface area is within a predefined difference level with respect to the calculated corresponding first slice surface area; and

based on a determination that the calculated first slice surface area is outside of the predefined difference level, outputting the indication that the modified 3D model differs from the first 3D model.

10. The method of claim 9, further comprising:

based on a determination that the calculated first slice surface area matches the calculated corresponding first slice surface area, comparing additional slice surface areas of the modified 3D model with corresponding slice surface areas of the first 3D model until a difference that exceeds the predefined difference level is determined or an end of the modified 3D model is reached; based on a determination that any of the additional slice surface areas of the modified 3D model differs from the corresponding slice surface areas of the first 3D model beyond the predefined difference level, outputting the indication that the modified 3D model differs from the first 3D model; and

based on a determination that none of the additional slice surface areas of the modified 3D model differs from the corresponding slice surface areas of the first 3D model, outputting an indication that the modified 3D model matches the first 3D model.

1 1. The method of claim 8, wherein the first 3D model complies with a predefined standard and wherein the method further comprises:

determining whether the modified 3D model complies with the predefined standard;

based on a determination that the modified 3D model does not comply with the predefined standard, outputting an indication that the modified 3D model differs from the first 3D model; and

based on a determination that the modified 3D model complies with the predefined standard, determining whether the first surface area of the first 3D model is outside of the predefined surface area difference.

12. The method of claim 8, wherein the first 3D model includes a build tag and wherein the method further comprises:

identifying a build tag of the modified 3D model;

determining whether the build tag of the modified 3D model includes a feature that differs from the build tag of the first 3D model;

based on a determination that the build tag of the modified 3D model includes a feature that differs from the build tag of the first 3D model, outputting the indication that the modified 3D model differs from the first 3D model; and based on a determination that the build tag of the modified 3D model does not include a feature that differs from the build tag of the first 3D model, determining whether the first surface area of the first 3D model is outside of the predefined surface area difference.

13. A non-transitory computer readable medium on which is stored machine readable instructions that when executed by a processor, cause the processor to: determine whether a transformed 3D model conforms to a predefined standard, wherein a first 3D model from which the transformed 3D model is transformed conforms to the predefined standard;

based on a determination that the transformed 3D model does not conform to the predefined standard, output an indication that the transformed 3D model differs from the first 3D model;

based on a determination that the transformed 3D model conforms to the predefined standard,

identify a build tag of the transformed 3D model;

determine whether the build tag of the transformed 3D model includes a feature that differs from the build tag of the first 3D model; based on a determination that the build tag of the transformed 3D model includes a feature that differs from the build tag of the first 3D model, output an indication that the transformed 3D model differs from the first 3D model.

14. The non-transitory computer readable medium of claim 13, wherein the instructions are further to cause the processor to:

based on a determination that the build tag of the transformed 3D model does not include a feature that differs from the build tag of the first 3D model, calculate a first surface area of an exterior of the first 3D model; calculate a second surface area of an exterior of the transformed 3D model;

determine whether the second surface area of the transformed 3D model matches the first surface area; and

based on a determination that the second surface area does not match the first surface area, output an indication that the transformed 3D model differs from the first 3D model.

15. The non-transitory computer readable medium of claim 14, wherein the instructions are further to cause the processor to:

based on a determination that the second surface area matches the first surface area,

compare slice surface areas of the transformed 3D model with corresponding slice surface areas of the first 3D model until a slice surface area of the transformed 3D model that differs from a corresponding slice surface area of a corresponding slice of the first 3D model is determined or a last slice of the transformed 3D model is reached;

based on a determination that any of the slice surface areas of the transformed 3D model differs from the corresponding slice surface areas of the first 3D model, output the indication that the transformed 3D model differs from the first 3D model; and

based on a determination that none of the slice surface areas of the transformed 3D model differs from the corresponding slice surface areas of the first 3D model, output an indication that the transformed 3D model matches the first 3D model.

Description:
DETERMINATION OF MATCHES BETWEEN TRANSFORMED AND FIRST 3D

MODELS

BACKGROUND

[0001] A file representing a three-dimensional (3D) model may be generated to be used in a 3D fabrication process. Prior to being used in the 3D fabrication process, the 3D model may be transformed for various reasons. For instance, the 3D model may be transformed to reduce a file size of the 3D model and/or to be formatted for fabrication. A 3D fabrication system may use the transformed 3D model to fabricate a 3D object.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Features of the present disclosure are illustrated by way of example and not limited in the following figure(s), in which like numerals indicate like elements, in which:

[0003] FIGS. 1 A and 1 B, respectively, show block diagrams of an example apparatus that may determine whether a transformed 3D model matches a first 3D model, in which the transformed 3D model is a transformed version of the first 3D model;

[0004] FIG. 2A shows a diagram of an example first 3D model and an example transformed 3D model;

[0005] FIGS. 2B and 2C, respectively, show diagrams of various example slices of the first 3D model and the transformed 3D model shown in FIG. 2A. ;

[0006] FIGS. 3A and 3B, collectively, depict a flow diagram of an example method for determining whether a modified 3D model is within a predefined difference level of a first 3D model, in which the modified 3D model is a modified version of the first 3D model; and

[0007] FIG. 4 shows a block diagram of an example non-transitory computer readable medium that may have stored thereon instructions for determining whether a transformed 3D model matches a first 3D model, in which the transformed 3D model is a transformed version of the first 3D model.

DETAILED DESCRIPTION

[0008] A file of a 3D model, e.g., a 3D Manufacturing Format file (3MF) or the like, may be created using various types of software. The file may describe various textures, metadata, vertices, and triangles that compose the 3D model, e.g., in a mesh. The 3D model file may be exported to other tools to start a fabrication flow, which may begin a series of transformations that may change the representation of the 3D model. These transformations may keep the original structure of the 3D model and may optimize the 3D model to, for instance, save computer memory. However, in some instances, these transformations may change the representation of the 3D model in a manner that may cause the 3D model itself to be changed, e.g., the geometric shape of the transformed 3D model may be different from the original 3D model. As a result, use of the transformed 3D model to fabricate a 3D object may not result in an accurate reproduction of the original 3D model.

[0009] Disclosed herein are apparatuses and methods for determining whether the transformed 3D model matches a first 3D model, e.g., an initial 3D model. Particularly, the apparatuses and methods disclosed herein may determine whether the transformed 3D model matches the first 3D model through implementation of processes that are not computationally intensive. That is, for instance, the determination as to whether the transformed 3D model matches the first 3D model without comparing, for instance, 3D features of the transformed 3D model with 3D features of the first 3D model, e.g., the volumes of the transformed 3D and the first 3D model may not be compared with each other. Instead, in some examples, two-dimensional features, such as the surface area of the transformed 3D model may be compared against the surface area of the first 3D model to determine whether the transformed 3D model matches the first 3D model. In addition, the surface areas of slices of the transformed 3D model may be compared against the surface areas of the first 3D model at locations that correspond to the transformed 3D model slices to determine whether the transformed 3D model matches the first 3D model. [0010] In some examples, the apparatuses and methods disclosed herein may further or alternatively determine whether the transformed 3D model matches the first 3D model based on a determination as to whether the transformed 3D model complies with a predefined standard to which the first 3D model complies. In addition, or alternatively, the apparatuses and methods disclosed herein may further or alternatively determine whether the transformed 3D model matches the first 3D model based on whether a build tag of the transformed 3D model matches a build tag of the first 3D model.

[0011] A technical problem associated with transforming 3D models for fabricating 3D objects may be that it may be computationally intensive to compare transformed 3D models with original 3D models using three dimensional features of the models, e.g., volumes, or other features. Additionally, it may be wasteful to print transformed 3D models that do not match the original 3D models.

[0012] A technical solution to the problem identified above may be that by comparing the transformed 3D models with the original 3D models using two dimensional features of the models, e.g., surface areas of the models, surface areas of slices taken at various heights of the models, etc., the transformed models may be compared with the original 3D models with a lesser computational intensity. As a result, a processor may make the determination through implementation of a lesser amount of computational resources. Additionally, by determining that a transformed 3D model may be different from a first 3D model, e.g., that a 3D object fabricated using the transformed 3D model may be an inaccurate version of the 3D object, prior to printing, fabrication of the inaccurate version of the 3D object may be prevented. As a result, a printing process may be stopped in the event that the transformed 3D model is determined to be different, which may prevent or reduce wasteful use of printing materials.

[0013] Before continuing, it is noted that as used herein, the terms "includes" and "including" mean, but is not limited to, "includes" or "including" and "includes at least" or "including at least." The term "based on" means "based on" and "based at least in part on." As used herein, the terms“match” and“matches” may include an exact match and/or may equivalently include a match that is with a predefined difference level. For instance, a transformed 3D model may be construed as matching a first 3D model when, for instance, there is less than around 1 % difference in surface areas of the transformed 3D model and the first 3D model.

[0014] Reference is made first to FIGS. 1A and 1 B. FIGS. 1A and 1 B, respectively, show block diagrams of an example apparatus 100 that may determine whether a transformed 3D model matches a first 3D model, in which the transformed 3D model is a transformed version of the first 3D model. It should be understood that the example apparatus 100 depicted in FIGS. 1A and 1 B may include additional features and that some of the features described herein may be removed and/or modified without departing from the scope of the apparatus 100.

[0015] Generally speaking, the apparatus 100 may be a computing device, such as a personal computer, a laptop computer, a tablet computer, a smartphone, a server computer, or the like. In addition or in other examples, the apparatus 100 may be part of a 3D fabrication system. As shown in FIGS. 1A and 1 B, the apparatus 100 may include a processor 102 that may control operations of the apparatus 100. The processor 102 may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other suitable hardware device. Although a single processor 102 is depicted, it should be understood that the apparatus 100 may include multiple processors, multiple cores, or the like, without departing from a scope of the apparatus 100.

[0016] The apparatus 100 may also include a memory 1 10 that may have stored thereon machine readable instructions 1 12-128 (which may also be termed computer readable instructions) that the processor 102 may execute. The memory 1 10 may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. The memory 1 10 may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The memory 1 10, which may also be referred to as a computer readable storage medium, may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals.

[0017] The processor 102 may fetch, decode, and execute the instructions 1 12 to calculate a first surface area of a first 3D model. Particularly, for instance, the processor 102 may calculate the surface area of an exterior of a 3D object that may be fabricated using the first 3D model. The processor 102 may calculate the first surface area of the first 3D model through any suitable calculation process, e.g., the processor 102 may determine the surface areas of each of the exterior surfaces represented in the first 3D model and may sum the determined surface areas to calculate the first surface area of the first 3D model.

[0018] The processor 102 may fetch, decode, and execute the instructions 1 14 to calculate a second surface area of a transformed 3D model of the first 3D model. For instance, the processor 102 may calculate the second surface area of the transformed 3D model through any suitable surface area calculation process, e.g., the processor 102 may determine the surface areas of each of the exterior surfaces represented by the transformed 3D model and may sum the determined surface areas to calculate the second surface area of the transformed 3D model.

[0019] The processor 102 may fetch, decode, and execute the instructions 1 16 to determine whether the second surface area matches the first surface area. In some examples, the processor 102 may determine that the second surface area matches the first surface area based on the second surface area being an exact match of the first surface area. In other examples, the processor 102 may determine that the second surface area matches the first surface area based on the second surface area being within a predefined surface area difference of the first surface area. In other words, the processor 102 may determine that the second surface area matches the first surface area instances in which a difference between the second surface area and the first surface area is below the predefined surface area difference. The predefined surface area difference may be user-defined, for instance, based on a desired level of accuracy.

[0020] The processor 102 may fetch, decode, and execute the instructions 1 18 to, based on a determination that the second surface area does not match the first surface area, output an indication that the transformed 3D model differs from the first 3D model. For instance, the processor 102 may output a notification on a display that the transformed 3D model differs from the first 3D model. In addition or in other examples, the processor 102 may output an instruction to a 3D fabrication system to abort or otherwise stop fabrication of a 3D object from the transformed 3D model.

[0021] As discussed herein, the first 3D model may be transformed or modified for various reasons, including, for instance, file space reduction, formatting for printing, etc. The transformed 3D model may be a transformed or modified version of the first 3D model. In various instances, the transformation of the first 3D model may result in the transformed 3D model differing beyond a predefined, e.g., acceptable, level from the first 3D model. When this occurs, a 3D object fabricated using the transformed 3D model may differ from a 3D object fabricated using the first 3D model, for instance, beyond some acceptable level. In one regard, through implementation of the features disclosed herein, a determination may be made that a 3D object fabricated using the transformed 3D model may not accurately correspond to the first 3D model prior the 3D object being fabricated. As a result, fabrication of the 3D object may be stopped or prevented from being initiated, which may unnecessary use of a 3D fabrication system as well as wasted build materials.

[0022] Reference is now made to FIG. 1 B, which depicts the instructions 120-128 and to FIGS. 2A-2C. FIG. 2A shows diagrams of an example first 3D model 200 and an example transformed 3D model 210. FIGS. 2B and 2C, respectively, show various example slices of the first 3D model 200 and the transformed 3D model 210 shown in FIG. 2A. As shown in FIG. 2A, the surface area of the transformed 3D model 210 may match the surface area of the first 3D model 200. However, the actual shape and/or volume of the transformed 3D model 210 may differ from the shape and/or volume of the first 3D model. For instance, the transformed 3D model 210 may include a missing section 212. In one regard, computing the surface areas using the x, y, and z coordinates of the vertices of the first 3D model and the transformed 3D model may result in a match between the surface areas even though the actual shapes may differ from each other.

[0023] According to examples, the processor 102 may execute some or all of the instructions 120-128 based on (or in response to) a determination that the second surface area (of the transformed 3D model) matches the first surface area (of the first 3D model). As such, for instance, the processor 102 may execute some or all of the instructions 120-128 to further determine whether the transformed 3D model matches the first 3D model.

[0024] The processor 102 may fetch, decode, and execute the instructions 120 to compare slice surface areas of the transformed 3D model 210 with corresponding slice surface areas of the first 3D model 200 until a slice surface area of the transformed 3D model that does not match (e.g., differs) from a corresponding slice surface area of a corresponding slice of the first 3D model is determined or a last slice of the transformed 3D model is reached. For instance, as shown in FIG. 2B, the processor 102 may identify a first slice 214 taken at a first location, e.g., a y-position or an x-position, of the transformed 3D model 210 and may calculate a first slice surface area of the first slice 214. The processor 102 may calculate the first slice surface area based on, for instance, the x and y coordinates of the vertices of the first slice 214.

[0025] In addition, as also shown in FIG. 2B, the processor 102 may identify a corresponding first slice 202 taken at a corresponding first location, e.g., a y-position or an x-position, of the first 3D model 210. That is, the processor 102 may identify a first slice 202 in the first 3D model 210 that corresponds to the location of the first slice 214 in the transformed 3D model 210. The processor 102 may also calculate the corresponding first slice surface area of the corresponding first slice 202. The processor 102 may calculate the corresponding first slice surface area based on, for instance, the x and y coordinates of the vertices of the corresponding first slice 202.

[0026] In addition, the processor 102 may determine whether the calculated first slice surface area matches the calculated corresponding first slice surface area. Based on a determination that the calculated first slice surface area does not match the calculated corresponding first slice surface area, the processor 102 may output an indication that the transformed 3D model 210 differs from the first 3D model 200. However, based on a determination that the calculated first slice surface area matches the calculated corresponding first slice surface area, the processor 102 may identify a next location, e.g., height or width location, in the transformed 3D model 210 for which a next slice is to be analyzed. The next slice 216 is shown in FIG. 2C. According to examples, the next location may be user-defined, based on a percentage of a total dimension of the transformed 3D model 210, based on a total number of slices to be analyzed, or the like.

[0027] As shown in FIG. 2C, the next slice 216 may include a portion of the missing section 212 shown in FIG. 2A. As a result, the calculated surface area of the next slice 216 may differ from the calculated surface area of a corresponding next slice 204 of the 3D model 200. That is, the surface area of the corresponding next slice 204, e.g., the next slice that corresponds in location to the next slice 216, may be calculated and may be compared with the next slice 216 surface area. As the next slice 216 surface area may be smaller than the corresponding next slice 204 surface area in the example shown in FIG. 2C, the processor 102 may determine that there is a difference between the two surface areas. The processor 102 may, based on this determination, output an indication that the transformed 3D model differs from the first 3D model.

[0028] However, based on a determination that the next slice 216 surface area matches the corresponding next slice 204 surface area, the processor 102 may identify a further slice of the transformed 3D model 210 and a corresponding further slice of the first 3D model 200. The processor 102 may compare the surface areas of the further slices until the processor 102 determines that a further slice does not match a corresponding further slice or until the processor 102 determines that a last slice of the transformed 3D model 210 has been reached.

[0029] The processor 102 may fetch, decode, and execute the instructions 122 to identify a location of a triangle of a plurality of triangles representing a mesh of the transformed 3D model 210. That is, the transformed 3D model 210 may be composed by vertices and triangles (mesh) as part of a preparation process for fabricating the 3D object from the transformed 3D model 210, for instance as shown in FIG. 2A. The processor 102 may use the identified location of the triangle as the location of the next slice of the transformed 3D model 210. In addition, the processor 102 may fetch, decode, and execute the instructions 124 to calculate the next slice surface area of the next slice 216 from a plurality of vertices representing the transformed 3D model at the first location.

[0030] The processor 102 may fetch, decode, and execute the instructions 126 to determine whether the transformed 3D model 210 complies with a predefined standard. That is, the first 3D model 200 may comply with the predefined standard, such as the 3MF standard, and the processor 102 may determine whether the transformed 3D model 210 also complies with the predefined standard. Based on a determination that the transformed 3D model 210 does not comply with the predefined standard, the processor 102 may output an indication that the transformed 3D model 210 differs from the first 3D model 200. In some examples, the processor 102 may make this determination prior to determining whether the second surface area matches the first surface area. In these examples, the processor 102 may, based on a determination that the transformed 3D model 210 conforms to the predefined standard, determine whether the second surface area matches the first surface area. In other words, the processor 102 may execute the instructions 120 based on the determination that the transformed 3D model 210 conforms to the predefined standard.

[0031] The processor 102 may fetch, decode, and execute the instructions 128 to determine whether the transformed 3D model 210 matches the first 3D model 200 based on build tags. That is, the first 3D model 200 may include a build tag that describes information about scale, rotation, and translation for the first 3D model 200. For instance, a transformation matrix applied to the first 3D model 200 may be present in the build tag of the first 3D model 200. Likewise, a transformation matrix applied to the transformed 3D model 210 may be present in the build tag of the transformed 3D model. [0032] The processor 102 may determine whether the build tag of the transformed 3D model 210 matches the build tag of the first 3D model 200. Based on a determination that the build tag of the transformed 3D model 210 does not match the build tag of the first 3D model, the processor 102 may output an indication that the transformed 3D model 210 differs from the first 3D model 200. In some examples, the processor 102 may make this determination prior to determining whether the second surface area matches the first surface area. In these examples, the processor 102 may, based on a determination that the build tag of the transformed 3D model 210 matches the build tag of the first 3D model 200, determine whether the second surface area matches the first surface area. In other words, the processor 102 may execute the instructions 120 based on the determination that the build tag of the transformed 3D model 210 matches the build tag of the first 3D model 200.

[0033] In other examples, instead of the memory 1 10, the apparatus 100 may include hardware logic blocks that may perform functions similar to the instructions 1 12-128. In yet other examples, the apparatus 100 may include a combination of instructions and hardware logic blocks to implement or execute functions corresponding to the instructions 1 12-128. In any of these examples, the processor 102 may implement the hardware logic blocks and/or execute the instructions 1 12-128. As discussed herein, the apparatus 100 may also include additional instructions and/or hardware logic blocks such that the processor 102 may execute operations in addition to or in place of those discussed above with respect to FIGS. 1A and 1 B.

[0034] Various manners in which the processor 102 may operate are discussed in greater detail with respect to the method 300 depicted in FIGS.

3A-3B. Particularly, FIGS. 3A-3B, collectively, depict a flow diagram of an example method 300 for determining whether a modified 3D model 210 (which is equivalently recited herein as a transformed 3D model 210) is within a predefined difference level of a first 3D model 200, in which the modified 3D model 210 is a modified version of the first 3D model 200. It should be understood that the method 300 depicted in FIGS. 3A-3B may include additional operations and that some of the operations described therein may be removed and/or modified without departing from scope of the method 300. The description of the method 300 is made with reference to the features depicted in FIGS. 1 A-2C for purposes of illustration.

[0035] At block 302, the processor 102 may calculate a first surface area of a first 3D model 200. The processor 102 may calculate the first surface area of the first 3D model 200, for instance, based on the x, y, and z values (or other coordinate values) of the first 3D model 200.

[0036] At block 304, the processor 102 may calculate a surface area of a modified 3D model 210, the modified 3D model 210 being a modified version of the first 3D model 200. The processor 102 may calculate the surface area of the modified 3D model 210, for instance, based on the x, y, and z values (or other coordinate values) of the modified 3D model 210.

[0037] At block 306, the processor 102 may determine whether the surface area of the modified 3D model 210 is within a predefined surface area difference of the first surface area. That is, the processor 102 may determine whether the surface area of the modified 3D model 210 is within a predetermined difference from the first surface area of the first 3D model 200. The predefined surface area difference may be user-defined and/or may be based on a level of difference that may be acceptable between a fabricated 3D object and an original design for the 3D object. By way of example, the predefined surface area difference may be between about 1 % to about 10%, although the predefined surface area differences may have various other values.

[0038] Based on a determination that the surface area of the modified 3D model 210 is outside of the predefined surface area difference of the first surface area, at block 308, the processor 102 may output an indication that the modified 3D model 210 differs from the first 3D model 200. For instance, the processor 102 may output a notification on a display that the modified 3D model 210 differs from the first 3D model 200. In addition or in other examples, the processor 102 may output an instruction to a 3D fabrication system to abort or otherwise stop fabrication of a 3D object from the modified 3D model.

[0039] Based on a determination that the surface area of the modified 3D model 210 is within the predefined surface area difference of the first surface area, at block 310 the processor 102 may compare slice surface areas of the modified 3D model 210 with corresponding slice surface areas of the first 3D model 200 until a slice surface area of the modified 3D model that does not match (e.g., differs) from a corresponding slice surface area of a corresponding slice of the first 3D model is determined or a last slice of the modified 3D model 210 is reached. For instance, as shown in FIG. 2B, the processor 102 may identify a first slice 214 taken at a first location, e.g., a y-position or an x-position, of the transformed 3D model 210 and may calculate a first slice surface area of the first slice 214. The processor 102 may calculate the first slice surface area based on, for instance, the x and y coordinates of the vertices of the first slice 214. The processor 102 may identify additional slices in the modified 3D model 210 and the first 3D model 200 and may compare the surface areas as discussed herein.

[0040] At block 312, the processor 102 may determine whether any of the slice surface areas of the modified 3D model 200 differs from the corresponding slice surface areas of the first 3D model 210 beyond the predefined surface area difference level. Based on a determination that any of the slice surface areas of the modified 3D model 210 differs from the corresponding slice surface areas of the first 3D model 200 beyond the predefined difference level, at block 314, the processor 102 may output an indication that the modified 3D model 210 differs from the first 3D model 200.

[0041] At block 316, the processor 102 may determine whether the modified 3D model 210 complies with a predefined standard. That is, the first 3D model 200 may comply with the predefined standard, such as the 3MF standard, and the processor 102 may determine whether the modified 3D model 210 also complies with the predefined standard. Based on a determination that the modified 3D model 210 does not comply with the predefined standard, at block 314, the processor 102 may output an indication that the modified 3D model 210 differs from the first 3D model 200. In some examples, the processor 102 may make this determination prior to determining whether the second surface area matches the first surface area. In these examples, the processor 102 may, based on a determination that the modified 3D model 210 conforms to the predefined standard, determine whether the second surface area matches the first surface area.

[0042] At block 318, the processor 102 may determine whether the modified 3D model 210 matches the first 3D model 200 based on build tags. That is, the first 3D model 200 may include a build tag that describes information about scale, rotation, and translation for the first 3D model 200 as discussed herein. The processor 102 may determine whether the build tag of the modified 3D model 210 matches the build tag of the first 3D model 200. Based on a determination that the build tag of the modified 3D model 210 does not match the build tag of the first 3D model 200, at block 314, the processor 102 may output an indication that the modified 3D model 210 differs from the first 3D model 200. In some examples, the processor 102 may make this determination prior to determining whether the second surface area matches the first surface area.

[0043] At block 320, following a determination that the modified 3D model 210 matches the first 3D model 210 based on the build tags, the processor 102 may output an indication that the modified 3D model matches the first 3D model 200. For instance, the processor 102 may output a notification on a display that the modified 3D model 210 matches the first 3D model. In addition or in other examples, the processor 102 may output an instruction to a 3D fabrication system to proceed with or continue with fabrication of a 3D object from the modified 3D model 210.

[0044] In some examples, blocks 316 and/or 318 may be optional and may thus be omitted. In some examples in which blocks 316 and 318 are omitted, following a determination at block 312 that a slice surface area of the modified 3D model 210 matches the corresponding slice surface area of the first 3D model 200 within the predefined difference level, at block 320, the processor 102 may output an indication that the modified 3D model 210 matches the first 3D model 200. In some examples in which block 318 is omitted, following a determination at block 316 that the modified 3D model 210 complies with the predefined standard, at block 314, the processor 102 may output an indication that the modified 3D model 210 matches the first 3D model 200. In some examples in which block 316 is omitted, the processor 102 may execute block 318 following a determination at block 312 that a slice surface area of the modified 3D model 210 matches the corresponding slice surface area of the first 3D model 200 within the predefined difference level.

[0045] In some examples, the processor 102 may execute the blocks 302-320 in the sequential order as shown in FIGS. 3A-3B. However, in other examples, the processor 102 may execute some or all of the blocks 302-320 in a different order.

[0046] Some or all of the operations set forth in the method 300 may be included as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the method 300 may be embodied by computer programs, which may exist in a variety of forms both active and inactive. For example, they may exist as machine readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.

[0047] Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

[0048] Turning now to FIG. 4, there is shown a block diagram of an example non-transitory computer readable medium 400 that may have stored thereon instructions for determining whether a transformed 3D model 210 matches a first 3D model 200, in which the transformed 3D model 210 is a transformed version of the first 3D model 200. It should be understood that the example non-transitory computer readable medium 400 depicted in FIG. 4 may include additional features and that some of the features described herein may be removed and/or modified without departing from the scope of the non-transitory computer readable medium 400.

[0049] The non-transitory computer readable medium 400 may have stored thereon machine readable instructions 402-412 (which may also be termed computer readable instructions) that a processor, e.g., the processor 102, may execute. The non-transitory computer readable medium 400 may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. The non-transitory computer readable medium 400 may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The non-transitory computer readable medium 400, which may also be referred to as a computer readable storage medium, may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals.

[0050] The processor may execute the instructions 402 to determine whether a transformed 3D model 210 conforms to a predefined standard, in which a first 3D model 200 from which the transformed 3D model 210 is transformed conforms to the predefined standard. The processor may execute the instructions 404 to, based on a determination that the transformed 3D model 210 does not conform to the predefined standard, output an indication that the transformed 3D model 210 differs from the first 3D model 200. The processor may execute the instructions 406 to, based on a determination that the transformed 3D model conforms to the predefined standard, identify a build tag of the transformed 3D model, determine whether the build tag of the transformed 3D model 210 includes a feature that differs from the build tag of the first 3D model 200, and based on a determination that the build tag of the transformed 3D model 210 includes a feature that differs from the build tag of the first 3D model 200, output an indication that the transformed 3D model 210 differs from the first 3D model 200.

[0051] The processor may execute the instructions 408 to, based on a determination that the build tag of the transformed 3D model 210 does not include a feature that differs from the build tag of the first 3D model 200, determine whether the surface areas of the transformed 3D model 210 and the first 3D model 200 match each other. The processor may execute the instructions 410 to, based on a determination that the surfaces areas match each other, compare slice surface areas of the transformed 3D model 210 with corresponding slice surface areas of the first 3D model 200 until a slice surface area of the transformed 3D model that differs from a corresponding slice surface area of a corresponding slice of the first 3D model is determined or a last slice of the transformed 3D model is reached.

[0052] The processor may execute the instructions 412 to output one of an indication that the transformed 3D model 210 matches or does not match the first 3D model 200. For instance, the processor may output an indication that the transformed 3D model 210 does not match the first 3D model 200 based on any of a determination that the transformed 3D model 210 does not conform to the predefined standard, that the build tag of the transformed 3D model 210 differs from the build tag of the first 3D model 200, that the surface areas of the transformed 3D model 210 and the first 3D model do not match each other, or that any of the slices of the transformed 3D model 210 and the corresponding slices of the first 3D model 200 do not match each other. Alternatively, the processor may output an indication that the transformed 3D model 210 matches the first 3D model 200 based on a determination that the transformed 3D model 210 conforms to the predefined standard, that the build tag of the transformed 3D model 210 matches the build tag of the first 3D model 200, that the surface areas of the transformed 3D model 210 and the first 3D model match each other, and that the slices of the transformed 3D model 210 and the corresponding slices of the first 3D model 200 match each other.

[0053] Although described specifically throughout the entirety of the instant disclosure, representative examples of the present disclosure have utility over a wide range of applications, and the above discussion is not intended and should not be construed to be limiting, but is offered as an illustrative discussion of aspects of the disclosure.

[0054] What has been described and illustrated herein is an example of the disclosure along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Many variations are possible within the spirit and scope of the disclosure, which is intended to be defined by the following claims - and their equivalents - in which all terms are meant in their broadest reasonable sense unless otherwise indicated.