Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SURFACE OFFSETS
Document Type and Number:
WIPO Patent Application WO/2021/080561
Kind Code:
A1
Abstract:
In an example, a method includes receiving, at a processor, object model data describing a geometry of a three-dimensional object. A first transformed data model describing a modified version of the geometry of the three-dimensional object may be determined, wherein the modified version of the three-dimensional object geometry includes a first surface offset for a first object axis. A second transformed data model may be determined from the first transformed data model, wherein the second transformed data model describes a volume containing a further modified version of the geometry of the three-dimensional object as a plurality of categorised contiguous, non-overlapping sub-volumes, wherein the further modified version of the three-dimensional object geometry includes a second surface offset relative to the first transformed data model, wherein the second surface offset is applied for a second object axis.

Inventors:
GONZALEZ MARTIN SERGIO (ES)
GURDIEL GONZALEZ ENRIQUE (ES)
CARRUESCO LLORENS ALEX (ES)
Application Number:
PCT/US2019/057282
Publication Date:
April 29, 2021
Filing Date:
October 21, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
G06F30/00; B29C64/393; B33Y50/02
Foreign References:
US20190160526A12019-05-30
US20170310935A12017-10-26
US9873229B22018-01-23
EP3205483B12018-12-26
US20190056717A12019-02-21
Attorney, Agent or Firm:
WOODWORTH, Jeffrey C. et al. (US)
Download PDF:
Claims:
CLAIMS

1. A method comprising: receiving, at a processor, object model data describing a geometry of a three- dimensional object; determining, using at least one processor, a first transformed data model describing a modified version of the geometry of the three-dimensional object, wherein the modified version of the three-dimensional object geometry includes a first surface offset for a first object axis; and determining from the first transformed data model, using at least one processor, a second transformed data model describing a volume containing a further modified version of the geometry of the three-dimensional object as a plurality of categorised contiguous, non-overlapping sub-volumes, wherein the further modified version of the three- dimensional object geometry includes a second surface offset relative to the first transformed data model, wherein the second surface offset is applied for a second object axis.

2. A method as claimed in claim 1 wherein: when the first surface offset is an erosion operation, the second surface offset is a dilation operation; and when the first surface offset is a dilation operation, the second surface offset is an erosion operation.

3. A method as claimed in claim 1 , wherein when the first offset is an erosion operation, the first surface offset comprises applying a negative offset in the first object axis, the second object axis and a third object axis and when the first offset is a dilation operation, the first offset comprises applying a positive offset in the first object axis, the second object axis and the third object axis.

4. A method as claimed in claim 3, wherein the second surface offset is applied in the second object axis and/or the third object axis.

5. A method as claimed in claim 1, further comprising: determining a total offset which is intended, when applied to the object model, to compensate for distortions during a build process in the second axis, wherein the total offset is a combination of the first surface offset and the second surface offset.

6. A method as claimed in claim 5 wherein: when the total offset in the second object axis is the same sign as the total offset in the first object axis, the first surface offset in the second object axis and the first surface offset in the first object axis are equal to the total offset in the second object axis and the total offset in the first object axis respectively, and zero offset is applied in the first object axis and the second object axis by the second surface offset; and when the total offset in the third object axis is the same sign as the total offset in the first object axis, the first surface offset in the third object axis and the first surface offset in the first object axis are equal to the total offset in the third object axis and the total offset in the first object axis respectively, and zero offset is applied in the first object axis and the third object axis by the third surface offset.

7. A method as claimed in claim 5 wherein: when the total offset in the second object axis is a different sign to the total offset in the first object axis an offset is applied in the second object axis in the first surface offset with an opposite sign to the sign of the total offset in the second object axis, and the first surface offset in the second object axis has a magnitude such that the second surface offset in the second object axis has a magnitude equal to an integer multiple of the size of a sub-volume in the second object axis; and when the total offset in the third object axis is a different sign to the total offset in the first object axis an offset is applied in the third object axis in the first surface offset with an opposite sign to the sign of the total offset in the third object axis, and the first surface offset in the third object axis has a magnitude such that the second surface offset in the third object axis has a magnitude equal to an integer multiple of the size of a sub-volume in the third object axis.

8. A method as claimed in claim 5, wherein the resolution in the first object axis is lower than the resolution in the second object axis and the resolution in the third object axis, and the method further comprises: determining whether the first surface offset is an erosion operation or a dilation is based on whether the total offset in the first object axis is negative or positive respectively.

9. A method as claimed in claim 1 wherein determining the first transformed data model comprises categorising a plurality of sub-volumes by: defining a first region by determining an area swept by an offset operator when the offset operator is swept around a boundary of the sub-volume; defining a second region, interior to the first region, and indicative of the closest approach of the offset operator to the sub-volume when the offset operator is swept around the boundary; and determining whether a surface of the object model intersects at least one of the first and second region, wherein: when the surface intersects the second region, the sub-volume is categorised as interior to the three-dimensional object; and when the surface intersects the first region and not the second region, the sub-volume is categorised as spanning a boundary of the three-dimensional object.

10. A method as claimed in claim 1 , wherein the first transformed data model is an octree model and the second transformed data model is a voxelised model.

11. A method as claimed in claim 1 , further comprising: generating an object described by the second transformed data model in an additive manufacturing process.

12. An apparatus comprising processing circuitry, the processing circuitry comprising: an object model module to obtain an object model of a three-dimensional object to be generated; a first offset operator module to apply a first offset corresponding to a first object axis to a surface of the object model to obtain a first transformed object model; and a second offset operator module to apply a second offset corresponding to a second object axis by adding or removing a plurality of sub-volumes relative to a surface of the first transformed object model.

13. An apparatus as claimed in claim 12, wherein the apparatus is an additive manufacturing apparatus.

14. A tangible machine-readable medium storing instructions which, when executed by a processor, cause the processor to: process data representing a first object as a virtual object to determine a transformed object by applying a first offset to compensate for anticipated distortions in a first axis to the virtual object; and process data representing the transformed object to determine a volumetric model of the virtual object comprising a second offset to compensate for anticipated distortions in a second axis, wherein the volumetric model of the virtual object comprising the second offset is described using a plurality of sub-volumes.

15. A tangible machine-readable medium as claimed in claim 14, comprising further instructions which, when executed by a processor, cause the processor to: generate instructions for an additive manufacturing apparatus, which instruct the additive manufacturing apparatus to build an object corresponding the volumetric model of the virtual object.

Description:
SURFACE OFFSETS BACKGROUND

[0001] Additive manufacturing techniques may generate a three-dimensional object on a layer-by-layer basis through the selective solidification of a build material. In examples of such techniques, build material is supplied in a layer-wise manner and a solidification method may include heating the layers of build material to cause melting in selected regions, for example in regions bearing a fusing agent. In other techniques, other solidification methods, such as chemical solidification methods or binding materials, may be used. During or after the object generation process, the generated object may become deformed relative to the intended shape of the object, for example due to variations in temperature. It may be possible to account for such deformations, at least in part, by applying an offset to a model describing the object before it is generated.

BRIEF DESCRIPTION OF DRAWINGS

[0002] Non-limiting examples will now be described with reference to the accompanying drawings, in which: [0003] Figure 1 is a flowchart of an example method for modifying data representing a three-dimensional object;

[0004] Figures 2A and 2B are flowcharts of example methods for modifying data representing a three-dimensional object;

[0005] Figures 3A, 3B and 3C are a simplified schematics of an example of applying a first surface offset and a second surface offset to an object model;

[0006] Figure 4 is a flowchart of an example method of determining a transformed data model of an object; [0007] Figure 5 is a flowchart of an example method of determining a first transformed data model;

[0008] Figure 6 schematically shows the operation of an offset operator according to an example;

[0009] Figure 7 is schematic drawings of example apparatus for use in additive manufacturing; and

[0010] Figures 8 and 9 are schematic drawings of example processors in conjunction with a machine readable medium.

DETAILED DESCRIPTION

[0011] Additive manufacturing techniques may generate a three-dimensional object through the solidification of a build material. In some examples, the build material is a powder-like granular material, which may for example be a plastic, ceramic or metal powder and the properties of generated objects may depend on the type of build material and the type of solidification mechanism used. In some examples the powder may be formed from, or may include, short fibres that may, for example, have been cut into short lengths from long strands or threads of material. Build material may be deposited, for example on a print bed and processed layer by layer, for example within a fabrication chamber. According to one example, a suitable build material may be PA12 build material commercially referred to as V1R10A “HP PA12” available from HP Inc.

[0012] In some examples, selective solidification is achieved using heat in a thermal fusing additive manufacturing operation. This may comprise directional application of energy, for example using a laser or electron beam which results in solidification of build material where the directional energy is applied. In other examples, at least one print agent may be selectively applied to the build material, and may be liquid when applied. For example, a fusing agent (also termed a ‘coalescence agent’ or ‘coalescing agent’) may be selectively distributed onto portions of a layer of build material in a pattern derived from data representing a slice of a three-dimensional object to be generated (which may for example be generated from structural design data). The fusing agent may have a composition which absorbs energy such that, when energy (for example, heat) is applied to the layer, the build material heats up, coalesces and solidifies upon cooling, to form a slice of the three-dimensional object in accordance with the pattern. In other examples, coalescence may be achieved in some other manner. [0013] According to one example, a suitable fusing agent may be an ink-type formulation comprising carbon black, such as, for example, the fusing agent formulation commercially referred to as V1Q60A “HP fusing agent” available from HP Inc. In one example such a fusing agent may comprise any or any combination of an infra-red light absorber, a near infra-red light absorber, a visible light absorber and a UV light absorber.

[0014] In addition to a fusing agent, in some examples, a print agent may comprise a coalescence modifier agent, which acts to modify the effects of a fusing agent for example by reducing or increasing coalescence or to assist in producing a particular finish or appearance to an object, and such agents may therefore be termed detailing agents. In some examples, detailing agent may be used near edge surfaces of an object being printed to reduce or prevent coalescence by, for example, cooling the build material or through some other mechanism. According to one example, a suitable detailing agent may be a formulation commercially referred to as V1Q61A “HP detailing agent” available from HP Inc.

[0015] A coloring agent, for example comprising a dye or colorant, may in some examples be used as a fusing agent or a coalescence modifier agent, and/or as a print agent to provide a particular color for the object. Examples of print agents comprising dye based colored ink and pigment based colored ink include inks commercially referred to as CE039A and CE042A available from HP Inc.

[0016] As noted above, additive manufacturing systems may generate objects based on structural design data. This may involve a designer designing a three- dimensional model of an object to be generated, for example using a computer aided design (CAD) application. The model may define the solid portions of the object. To generate a three-dimensional object from the model using an additive manufacturing system, the model data may comprise, or can be processed to derive, slices or parallel planes of the model. Each slice may define a portion of a respective layer of build material that is to be solidified or caused to coalesce by the additive manufacturing system.

[0017] During manufacturing of an object by additive manufacturing, particularly where heat may be applied to the object, deformations may occur resulting in an object being generated which does not have the expected dimensions. The particular deformations may depend on the build material used or the type of additive manufacturing.

[0018] For example, it may be the case that, where an object is generated in a process which includes heat, additional build material may adhere to the object on generation. In one example, fusing agent may be associated with a region of the layer which is intended to fuse. However, when energy is supplied, build material of neighbouring regions may become heated and fuse to the outside of the object (in some examples, being fully or partially melted, or adhering to melted build material as powder). Therefore, a dimension of an object may be larger than the region(s) to which fusing agent is applied. In order to compensate for this effect, i.e. where it is anticipated that an object may tend to ‘grow’ during manufacture, the object volume as described in object model data may be reduced.

[0019] In other examples, objects may be smaller following object generation than is specified in object model data. For example, some build materials used to generate objects may shrink on cooling. Therefore, an object volume in object model data may be increased to compensate for the anticipated reduction in volume.

[0020] A particular object may be subject to mechanisms which result in growth and/or shrinkage, and the appropriate transformation to apply may be influenced by the different degrees to which an object may be affected by such processes.

[0021] Such compensations may be applied using geometrical transformation(s) which may include scaling and/or offsets. For example, a geometrical transformation may comprise at least one scaling factor and/or at least one offset value, and in some examples associate a scaling factor and/or offset value with at least one of three orthogonal (e.g. x, y and z) axes. A scaling factor may be used to multiply object dimensions in the direction of at least one axis by a value, which may be greater than 1 in order to increase the dimension(s) and less than 1 to reduce the dimension(s), or equal to 1 to have no effect. The scaling factor may be applied to dimensions of an object model. Such a scaling factor may be relatively simple to apply to an object model, for example being applied to a mesh model of the object (and indeed the object model referred to in block 102 may have already had a scaling factor applied thereto).

[0022] An offset may specify, for example by a specified distance or a number of defined voxels (i.e. 3D voxels, which may have the same size as the minimum sub-volume size in some examples), an amount to add or remove from a surface of the object (or a perimeter within a layer). For example, an offset distance as measured in the direction of a normal from the object surface may be specified and the object may be eroded or dilated (i.e., inflated or enlarged) by this distance, for example by moving the vertices of a mesh in the case of a mesh model, although other methods of providing an offset may be used in other examples. However, in some examples, object models such as mesh models may not be robust to such offsets, for example resulting in modified meshes having degenerate polygons (e.g. a triangle having a side length of zero). While other solutions may be more robust, these can be associated with high computing resource specifications and/or lengthy processing times.

[0023] In summary then, to compensate for anticipated deformations a model describing the object to be generated may be modified before commencing the build process. For example, the modifications may comprise a scaling, whereby the object is ‘stretched’ or ‘compressed’ along one or more axis and/or a surface offset operation which comprises applying either an erosion or dilation operation to a surface of the object. The methods set out below generally concern offsets, although these methods may be combined with scaling operations to provide a transformed object model.

[0024] Figure 1 is an example of a method, which may comprise a computer implemented method of determining a transformed data model of an object.

[0025] Block 102 comprises receiving, at a processor, object model data describing a geometry of a three-dimensional object. For example, this may comprise an STL file, a 3MF file or the like. In some examples, this model may be a mesh model, for example a polygon mesh such as a triangular mesh. In some examples, the mesh may be specified using a plurality of vertices having defined locations in 3D space. In other examples, the model may comprise an implicit model (for example being defined mathematically using models such as Non-uniform rational basis spline (NURBS)), a beam lattice model, a constructive solid geometry (CSG) model, or the like. The object may be described in the context of a space, and therefore may explicitly or implicitly describe a volume of space containing the object, including space that is external thereto.

[0026] The object model may be retrieved from a memory or received over a network or the like.

[0027] Block 104 comprises determining, using at least one processor (which may be the same or different to the processor(s) referred to in block 102), a first transformed data model describing a modified version of the geometry of the three-dimensional object, wherein the modified version of the three-dimensional object includes a first surface offset for a first object axis.

[0028] A three-dimensional object may be described in a three-dimensional space with three orthogonal axes, which may be referred to as an x-axis, a y-axis and a z-axis. In an additive manufacturing process in which build material is supplied in a layer-wise manner, the x-axis and the y-axis may be defined as being in the plane of the layers and the z-axis may be perpendicular to the layers. While the first object axis may be any of the x, y or z-axis, in some examples herein, and in particular in examples where the resolution of object generation is greater within a layer of the object than between the layers (the x and y resolution is greater than the z resolution), the first object axis is the height axis, i.e. according to the coordinate system referred to herein, the z-axis.

[0029] The offset may be applied to the object model to modify the object for any purpose but in some examples the first surface offset is to compensate, at least in a part, for anticipated distortions in the first axis, for example it may be used to change a size and/or shape of an object. For example, if it is expected that the object, when generated, will have a larger dimension than defined in the object model, a negative offset, or erosion, may be applied in the first direction. Similarly, if it is expected that the object, when generated, will have a smaller dimension than defined in the objective a positive offset, or dilation, may be applied in the first direction. In practical examples, the relationship may not be so simple. For example, a scaling factor may be used which is expected to overcorrect. For example, a scaling factor may be applied to increase the volume of an object model by more than the anticipated increase in dimensions in object generation, and in such an example an offset may be negative even when it is generally to correct for an anticipated shrinkage.

[0030] In some examples whether a distortion is anticipated may be predetermined. For example, anticipated distortions may be determined by measuring similar objects which have been generated previously. In some examples measurements may be performed on test objects which have been generated for the purpose of characterising distortions which occur in generated objects. Such measurements may for example be performed when a particular additive manufacturing apparatus is being initially characterised. Such measurements may be performed for a particular type of additive manufacturing apparatus, or may be carried out for each individual additive manufacturing apparatus. In other examples such characterisation may be performed multiple times. For example, the dimensional deviations of a particular additive manufacturing apparatus may be characterised at regular intervals to determine if the distortions vary over time (and therefore the corresponding geometrical compensations such as offset(s) and/or scale factor(s) applied to object model data may also vary over time). In some examples the characterisation may be performed for each type of object to be generated to ensure that the particular object is generated accurately. [0031] Applying a surface offset may be achieved using any suitable method, and there exist a number of methods by which a surface offset can be applied. In some examples, the surface offset may be applied when converting a mesh model to a volume which describes the object in terms of a plurality of non- overlapping sub-volumes. The non-overlapping sub-volumes may be different sizes.

[0032] For example, as will be set out in greater detail herein, the first transformed data model describes a volume containing the object model into homogenous regions, wherein the regions are homogenous in that they are either internal or external to the object within the volume. Volumes which span an object boundary may be recursively divided (for example into four for a quadtree model, or into eight for an octree model) until they can be categorised as being internal or external, or until a sub-volume reaches a threshold minimum size. In some examples, rather than being ‘internal’ or ‘external’, a region may be homogenous in relation to another property, for example a color or the like. However, as an offset is generally applied to object boundaries rather than property boundaries (e.g. a boundary between two colors), in the examples herein, internal and external sub-volumes are described. In some examples, object properties such as color may be associated with sub-volumes as metadata or the like.

[0033] In some examples, it may be intended to apply the same or different surface offset in each of two or three axes

[0034] Block 106 comprises determining, from the first transformed data model, using at least one processor (which may be the same or different to the processor(s) referred to in blocks 102 and 104), a second transformed data model describing a volume containing a further modified version of the geometry of the three-dimensional object as a plurality of categorised contiguous, non-overlapping sub-volumes, wherein the further modified version of the three-dimensional object includes a second surface offset relative to the first transformed data model, wherein the second surface offset is applied for a second object axis. In some examples, the first object axis is the object axis associated with the lowest spatial resolution in object generation, and may be the z-axis. In such examples, the second object axis lies in the plane of the layer of build material, and may be the x-axis or the y-axis.

[0035] In some examples the first transformed data model is an octree model, which may comprise defined homogenous sub-volumes which may be of different sizes to one another. For example in an octree model the volume representing the largest volume (the ‘root’ node) is described first, followed by its octants, followed by their octants and so on. Non-homogenous octants may be further sub-divided. In other examples, the subvolumes may be described in some other order. The second transformed data model may be a voxelised model. Voxel models also describe an object in terms of sub-volumes, but these sub-volumes are generally of the same size, which may be associated with the intended resolution of object generation. An octree model may be converted to a voxel model by dividing all the sub-volumes which are larger than a voxel into voxel-sized subvolumes. In some examples, voxels may be defined as part of determined the first transformed data model (i.e. the first transformed data model may comprise a voxelised model). In other examples, the voxels may be defined prior to applying the second surface offset.

[0036] In some examples the received object model is a mesh model. The first surface offset may be applied to the mesh model to output a first transformed data model, wherein the first transformed data model is described in terms of sub-volumes, such as voxels or as an octree.

[0037] Ignoring for a moment the application of an offset, a mesh model may be converted into a sub-volume model by considering a volume containing the object, and recursively dividing the volume into sub-volumes where the volume contains an object boundary. To consider the initial volume, this will contain space which is interior the object and external to the object. This initial volume may be divided into octants (assuming an octree model), and each octant inspected to determine if it contains an object boundary. If not, it may be assumed that the octant is wholly interior to the object, or wholly external to the object. The octant may be labelled accordingly and that region of space is then fully classified. Any octant which contains an object boundary may be subdivided into further octants, which are categorised, and so on until a minimum threshold size is reached. Octants of the minimum size which contain a boundary may be classified as internal or external according to a predetermined rule (for example, they may always be labelled as internal).

[0038] In methods described in greater detail below, when converting a model such as a mesh model to a model which describes the object in terms of sub-volumes, an offset may be incorporated. Thus, in examples herein, the first transformed data model may be generated using an ‘offset operator’ having the form of a Minkowski brush, as will be described in greater detail below. Applying the first surface offset using such a method is efficient. For example, such a method may use memory efficiently as the operator works on a local region of the mesh so the local offset may be computed without accessing the full mesh. Additionally, the method is robust as it avoids introduction of errors into the mesh (e.g. degenerate polygons where more than one point is in the same position).

[0039] However, such a method may be associated with applying an offset in every axis, even if it is not desired to apply an offset in each axis, as otherwise the operator would have a dimension of 0 (zero) in one axis, and in order for the operator to have an effect it has a non-zero volume. Therefore, if one of the dimensions is zero, the volume is zero and the operator has no effect. Furthermore, such an operator may be used to apply either a positive offset in every axis or a negative offset in every axis, but not a mixture of positive offsets in different directions. Since such a method has a mesh model as an input and output a model comprising sub-volumes, it is not possible to apply the method twice to the same model.

[0040] Even if the offset was applied directly to the mesh, applying a combination of positive and negative offsets further complicates the application of offsets. For example, the positive and negative offsets may interfere with one another or add errors to the mesh such as degenerate polygons or the like.

[0041] To overcome this, the method of Figure 1 proposes that offsets may be applied in two stages: for example, the first offset may be applied using such a method and the second offset may be applied using a different method. For example, the second offset may be applied using an erosion or dilation method which add or remove subvolumes (“voxels”) from a voxelised model of the object. Such a second surface offset may be applied after the mesh is transformed to a model comprising sub-volumes by the first surface offset operation. In some examples, use of the method may be dependent or conditional on determining that offsets having different signs for different axes are specified.

[0042] As mentioned above, applying offsets to meshes may result in errors unless care is taken. For example, operations on the mesh may result in ‘degenerate’ polygons being generated, where a polygon may have a dimension of zero. Therefore, it may be intended to avoid applying offsets of different signs to a mesh prior to converting to a model comprising sub-volumes, this could result in increased errors of this type. That said, when applying an offset to a voxelised model- while simpler in that such errors will not be seen- the resolution of the offset is linked to the resolution of the voxels: offsets will be in integer numbers of voxels. An offset at the mesh level may be specified at a higher (e.g. subvoxel) resolution. [0043] The method of Figure 1 provides a means by which more than one offset operation may be applied to an object model. As described above, some methods of applying offsets mean that offsets in all axes will have the same sign (i.e. positive or negative). The method of Figure 1 allows offsets to be applied with different signs in different directions by applying the first offset operation with a first sign and the second offset with a second different sign. In addition, some methods of applying offsets may not be applied more than once to an object model. Therefore, the first offset operation may be applied using a different method to the second offset operation.

[0044] Figure 2A and Figure 2B are examples of the method shown in Figure 1, and may comprise a computer implemented method of determining a transformed data model of an object.

[0045] In block 202 of Figure 2A, a first surface offset, in this example an erosion operation (an offset with a negative offset), is applied. In block 204 a second surface offset, in this example a dilation operation (an offset with a positive offset), is applied.

[0046] Figure 2B shows an alternative method to that depicted in Figure 2A. As shown in block 222 of Figure 2B, in this example the first surface offset is a dilation operation (an offset with a positive offset), and block 224 comprises applying the second surface offset, which is an erosion operation (an offset with a positive offset).

[0047] In these examples, in blocks 202 and 222, an offset of the same sign is applied in each of the first object axis, the second object axis and a third object axis. In block 202 the first offset is an erosion operation, and the first surface offset comprises applying a negative offset in the first object axis, the second object axis and the third object axis (which may be orthogonal, e.g. x, y and z axes). In block 222 the first offset is a dilation operation, and the first offset comprises applying a positive offset in the first object axis, the second object axis and the third object axis. Offset operations which apply an offset of the same sign in every axis when converting an object from a mesh to a sub-volume based model may be particularly efficient, for example as described in the method of applying an offset shown in Figures 5 and 6.

[0048] In blocks 204 and 224 the second surface offset is applied in the second object axis and/or the third object axis. In these examples, when applying the second surface offset, no offset is applied in the first object axis. Therefore, the entirety of the offset to be applied in the first object axis may be performed in the first surface offset. In some additive manufacturing apparatus the resolution in each axis is anisotropic, for example an additive manufacturing apparatus which builds an object layer-by-layer has a resolution in the z-direction which is related to the minimum layer thickness. Therefore, in such an apparatus the resolution in the z-axis may be lower than the resolution in the x- axis ory-axis. For example, an additive manufacturing apparatus may have a z-resolution, or layer thickness, of 80pm and a resolution in the x-axis and y-axis of 21pm at 1200dpi or 42pm at 600dpi. Therefore, in the example described in Figures 2A and 2B when the first object axis is the z-axis and has a lower resolution than the x-axis or y-axis quantization error is reduced because the entire offset in the lower resolution z-axis is performed in a single operation in the first surface offset.

[0049] In some examples, scaling may be carried out before the first offset operation, for example by multiplying dimensions of the object model by a scaling factor.

[0050] Figures 3A-C schematically show the operation of a first surface offset and a second surface offset on an object according to an example.

[0051] Figure 3A shows an object model 302 representing an object to be generated in an additive manufacturing process. In this example the z-axis is the vertical direction in the figure and the x-axis is the horizontal direction in the figure. Figure 3B shows a first transformed data model 304 which is determined by applying a positive offset, or dilation, to the object model 302. The dilation is applied in all axes. Figure 3C shows a second transformed data model 306 which is obtained by applying a negative offset, or erosion, to the first transformed data model. In this example the second surface offset is applied in the x-axis only.

[0052] Figure 4 is a further example of a method, which may comprise a computer implemented method of determining a transformed data model of an object, which may be carried out by at least one processor. The method in this example further comprises generating an object.

[0053] Block 402 comprises determining a total offset which, when applied to the object model, is intended to compensate, at least in part, for anticipated distortions during a build process in the second axis, wherein the total offset is a combination of the first surface offset and the second surface offset. The total offset may be determined as described above, for example it may be based on taking measurements of previously generated objects to determine an offset which would have resulted in those objects having an intended dimension. The total offset is the combined amount of offset which is to be applied by applying the first surface offset and the second surface offset consecutively.

[0054] Block 404 comprises determining whether the first surface offset is an erosion operation or a dilation based on whether the total offset in the first object axis is negative or positive respectively. In this example the resolution in the first object axis is lower than the resolution in the second object axis and the resolution in the third object axis. As described previously, an additive manufacturing apparatus may have an anisotropic resolution, such that the resolution may be different in different axis. In some examples of additive manufacturing apparatus which builds objects in a layer-wise manner, the resolution may be lower in the z-axis. Therefore, by determining whether to apply a dilation or erosion as the first surface offset based on the sign of the total offset in the z-axis, the amount of error introduced in the two stage offset process may be reduced, since the ‘voxel-wise’ offset is applied in the higher resolution axis/axes of the voxel. In other words, voxels may be cuboids which have a greater height than length or width. As the second method of applying an offset may be linked to the dimension of the voxel in that axis, avoiding a ‘voxel-wise’ offset resolution in the axis having the lowest voxel-wise resolution may increase accuracy.

[0055] Block 406 comprises determining whether the total offset in the second object axis is different in sign to the total offset in the first object axis. For example, if the total offset in the first object axis is positive (a dilation) and the total offset in the second object axis is negative (an erosion) the outcome of this determination would be positive. Whereas if both the total offset in the first object axis and the second object axis are positive the outcome from this determination would be negative.

[0056] When the total offset in the second object axis is a different sign to the total offset in the first object axis, in block 408 an offset is applied in the second object axis in the first surface offset with an opposite sign to the sign of the total offset in the second object axis. The first surface offset in the second object axis has a magnitude such that the second surface offset in the second object axis has a magnitude equal to an integer multiple of the size of a sub-volume in the second object axis. Therefore, in block 410 applying the offset in the second object axis in the second surface offset comprises applying an offset equal to an integer multiple of the size of the sub-volumes in the second object axis. For example, if the offset in the second axis is to decrease in size by, for the sake of example, an offset equal to -3.5 voxel count in the second axis, then in the first surface offset, a positive offset having a dimension equal to 0.5 voxels in that axis may be applied such that, in the second offset operation (which may be a voxel-wise offset), removing 4 voxels results in a net offset of -3.5 voxels as intended. However, as in some examples, the method includes performing an offset in all axes in the first operation, where the offset was -4 voxels, the offset in the fin the first surface offset, a positive offset having a dimension equal to 1 voxel in that axis may be applied such that, in the second offset operation removing 5 voxels results in a net offset of -4 voxels as intended.

[0057] If it is determined in block 406 that the total offset in the second object axis is the same sign as the total offset in the first object axis, in block 412 the first surface offset in the second object axis and the first surface offset in the first object axis are applied and are equal to the total offset in the second object axis and the total offset in the first object axis respectively.

[0058] In block 414 zero offset is applied in the first object axis and the second object axis by the second surface offset. An offset is only applied to an axis by the second surface offset if the total offset in that axis is of opposite sign to the total offset of the first object axis.

[0059] The offsets to be applied for the second object axis are described in blocks 406 to 414, however a similar process is used to determine the offsets to apply to the third object axis. For example when the total offset in the third object axis is a different sign to the total offset in the first object axis an offset is applied in the third object axis in the first surface offset with an opposite sign to the sign of the total offset in the third object axis, and the first surface offset in the third object axis has a magnitude such that the second surface offset in the third object axis has a magnitude equal to an integer multiple of the size of a sub-volume in the third object axis. In a further example when the total offset in the third object axis is the same sign as the total offset in the first object axis, the first surface offset in the third object axis and the first surface offset in the first object axis are equal to the total offset in the third object axis and the total offset in the first object axis respectively, and zero offset is applied in the first object axis and the third object axis by the third surface offset.

[0060] Block 416 comprises generating an object described by the second transformed data model in an additive manufacturing process. The second transformed data model comprises the total offset to be applied to the object model and therefore when generated it should result in an object which is compensated for distortions, resulting in a generated object which is dimensionally accurate. [0061] In order to generate the object, the second transformed data model may be processed to generate print instructions (or object generation instructions), which in some examples may specify an amount of print agent to be applied to each of a plurality of locations on a layer of build material. For example, generating print instructions may comprise determining an amount of print agent (or no print agent) to be associated with each of the voxels of a slice of the object model corresponding to a layer of the object to be generated. For example, if a voxel relates to a region of a fabrication chamber which is intended to solidify (an ‘interior’ voxel), the print instructions may be generated to specify that fusing agent should be applied to a corresponding region of build material in object generation. If however a voxel relates to a region of the fabrication chamber which is intended to remain unsolidified (an ‘external’ voxel), then print instructions may be generated to specify that no agent, or a coalescence modifying agent such as a detailing agent, may be applied thereto. In addition, the amounts of such agents may be specified in the print instructions and these amounts may be determined based on, for example, thermal considerations and the like.

[0062] Generating an object may comprise using print instructions generated as described above. For example, this may comprise forming a layer of build material, applying print agents, for example through use of ‘inkjet’ liquid distribution technologies in locations specified in the object model data for an object model slice corresponding to that layer using at least one print agent applicator, and applying energy, for example heat, to the layer. Some techniques allow for accurate placement of print agent on a build material, for example by using printheads operated according to inkjet principles of two-dimensional printing to apply print agents, which in some examples may be controlled to apply print agents with a resolution of around 600dpi, or 1200dpi. A further layer of build material may then be formed and the process repeated, for example with the object model data for the next slice.

[0063] Figure 5 shows the method of determining the first transformed data model in more detail, wherein determining the first transformed data model comprises categorising a plurality of sub-volumes as being interior or exterior to the object. As mentioned above, this method may initially operate by dividing a modelled volume of space (e.g. a cuboid) containing a representation of the object (e.g. a mesh model) into subvolumes (e.g. octants). Each sub-volume is inspected in turn to determine whether it is homogenous in the sense of being wholly interior or wholly external to the object, or whether it spans an object boundary (in which case it may be sub-divided into further volume and the process repeated) This method allows an offset to be incorporated into the process of defining and categorising the sub-volumes.

[0064] In this example, a sub-volume of the plurality of sub-volumes has been selected for assessment. In block 502, a first region is defined by determining an area swept by an offset operator when the offset operator is swept around a boundary of the sub-volume. The offset operator may have a size, and may operate on a region of space. For example, the offset operator may comprise a volume, for example a 3D volume. In other examples the offset operator may comprise a two dimensional area operating within a slice, or a 1 D operator having a size in one dimension. The offset operator may have the form of an isothetic prism (for example, a cuboid). The offset operator may have dimensions that span from (-dc, -by, -dz) to (dc, by, dz), where the offset to be applied is (dc, by, dz). In other words, if the offset comprises an x-component, a y-component and a z-component, the offset operator is defined to have dimensions of twice the x-component by twice the y-component by twice the z-component. While negative offsets will be addressed in greater detail below, this example considers positive offsets i.e. it is intended for an object to be increased in size in all axes.

[0065] The offset operator may be applied in the form of a Minkowski brush, with the centre of the offset operator following the boundary of the sub-volume during the sweep, and/or being applied such that the orientation of the operator does not change during the sweep.

[0066] Block 504 comprises defining a second region, interior to the first region, and indicative of the closest approach of the offset operator to the sub-volume when the offset operator is swept around the boundary. Assuming that the operator volume is more than twice the volume of the selected sub-volume (which may be a condition of the method), the second region will fully enclose the sub-volume.

[0067] Block 506 comprises determining whether a surface of the object model intersects at least one of the first and second region and block 508 comprises determining if the surface of the object model intersects with the second (smaller, or inner) region. To consider the example of some object models, such intersections may be determined using ‘separating axis theorem’. This tests to see if there is a line onto which projections of two potentially intersecting objects may extend without overlapping. If the projections do not overlap, the objects (for example a polygon of a mesh model and a second region in this context) do not intersect. In other examples, testing for an intersection may comprise determining if the surface intersects by selecting an array of points within the first and second regions and determining if these points are points within the surface. For example, the points may be selected using a grid, or a Monte Carlo simulation, or the like. This provides an approximate solution. Such methods may be relatively computationally expensive, and may be applied for example to object models using mathematical models such as Non-uniform rational basis spline (NURBS), in which it may be difficult to determine intersections using less computationally expensive processes.

[0068] In some examples, the set of ‘candidate surface portions’ (e.g. polygons of a polygon mesh) may be selected from those which intersected with a parent sub-volume of the sub-volume under consideration, and such candidate surface portions may be considered without considering the rest of the portions of the surface.

[0069] If the object model surface intersects with the second region, the method proceeds to block 510, in which the sub-volume is categorised as wholly interior to the three-dimensional object. It may be noted that the smaller second region may (unless the offset is less than half the dimensions of the sub-volume) be larger (and enclose) the subvolume. Therefore, this is a first mechanism by which the offset is integrated into the modified object modelled by the data.

[0070] If however the determination in block 508 is that the object model surface does not intersect with the second region, then the method proceeds to block 512, in which it is determined whether the object model surface intersects with the larger first region (and not the second region).

[0071] If so, the method proceeds to block 514 and the sub-volume is categorised as spanning a boundary of the three-dimensional object. This provides a second mechanism for including the offset, as (unless the sub-volume is the smallest sub-volume of interest), this sub-volume may be further divided in a subsequent iteration of the method, and therefore some of the further ‘sub-sub-volumes’ may be categorised as being wholly interior to the three-dimensional object, i.e. internal to the modified object modelled by the data, even though these are external to the original object model. If the sub-volume is of the smallest sub- volume of interest, then it may be categorised according to predetermined rules. For example, all such sub-volumes may be allocated as interior, as exterior, given a random classification, or remain tagged as boundary voxels.

[0072] In some examples, if the determination in block 514 is negative (i.e. when the object model surface does not intersect with either the first or second region), the subvolume may be categorised as being either interior or exterior to the three-dimensional object. The determination may be made on the basis that any point location within the first region (which includes the second region) is internal or external to the object (as it is known that there is no surface intersection in this region, so what is true for that one point is true for the region as a whole). Therefore, any point may be tested to determine if it is interior or exterior, for example using the coordinates of the point location relative to the coordinates of the object model.

[0073] It may be noted, that, in general, the method may be applied to sub-volumes formed from volumes which have been previously identified as spanning a boundary themselves. Therefore, this allows an increased resolution for inspection of these volumes, which may be divided into interior, exterior and spanning a boundary as appropriate. This in turn allows the volume of the modified object to include an offset.

[0074] In some examples, the method may be conditional on the offset being at least half the size of the sub-volume being evaluated. Larger sub-volumes may therefore be labelled as spanning a boundary without any inspection for intersections such that they are subdivided until they are of a small enough size that the offset is at least half the size (in some examples, in each dimension) of the sub-volume.

[0075] Figure 6 illustrates the action of the offset operator 600 in two dimensions (although in practice the operator may be a three-dimensional operator), which may be an example of a Minkowski brush- type operator. Figure 6 shows an offset operator 600 having dimensions of 2*dc by 2*6y, where dc and by are the x and y offset values to be applied, a marked centre point, O and four corners labelled C1 , C2, C3 and C4. The centre point O is aligned with the boundary of a sub-volume 602, and the operator 600 defines a volume as it is ‘swept’ around the boundary, without changing its orientation and while maintaining its centre point on the boundary. The operator 600 is shown in a first position P1 and a second position P2 during the sweep.

[0076] It may be noted that, as the operator 600 moves around the boundary, there is at least one corner which is maximally distant from the boundary, and that this corner changes during the sweep. This corner is C1 when the operator is in position P1 and C3 when the operator is in position P2. The maximally distant corners define the first region R1 described in relation to block 502. The diametrically opposite corner to the maximally distant corner defines the closest approach of the operator 600 to the boundary, and therefore defines the second region R2 described in relation to block 504. This corner is C3 when the operator 600 is in position P1 and C1 when the operator is in position P2. [0077] It may therefore be seen that the operator 600 “inflates” each sub-volume 602 before intersections with the object surface are determined, defining in effect an offset window comprising the first and second regions R1 and R2, wherein the offset extends the object into a volume within this window. While the Figure shows an example in 2D, the method may be applied in 3D as has been mentioned above.

[0078] In the method of Figures 5 and 6, when a 3D operator is used, all dimensions may have a non-zero offset as an offset of zero would mean the operator had a dimension of zero, and as described previously a dimension of zero would result in an operator of zero volume which would have no effect. Due to the operation of the offset operator, when the offsets are applied using this method they are symmetric in each dimension, such that for example if an offset of 25pm is applied in the x-axis it may be applied to opposing faces such that the object increases in size by 50pm in the x-direction. In contrast when the second surface offset is applied, it is applied to a model comprising sub-volumes, and asymmetric erosions and dilations are possible in addition to symmetric erosions and dilations. In some examples, there may remain an offset equal to an odd number of voxels, for example there may be an offset of 1 voxel to be applied. This can be achieved by applying the offset to only one side of the object. For example, if a one voxel negative offset is to be applied in the x-dimension, then one voxel may be removed from a right facing surface, and zero voxels removed from a left facing surface to achieve a total offset of one voxel in the x-dimension.

[0079] In order to apply a negative offset using the principles set out in Figures 5 and 6, the object model may be inverted such that the offset may be treated as a positive offset, and the methods described above may then be directly applicable thereto. To explain this in a little more detail, the object model may be inverted such that external surfaces are redefined as internal surfaces. For example, the orientation of a polygon mesh may be reversed by changing the direction of the normal vector of every polygon thereof, thus inverting the object (i.e. the space which was defined as interior to the object is now defined as external, and vice versa). The method then proceeds as set out above. Once the process has been completed, the method further comprises re-categorising the sub-volume(s) that were initially categorised as wholly interior as being wholly external to the object and re-categorising the sub-volume(s) initially categorised as wholly external as being interior to the object. In other words, the categorisation of each of the sub-volumes is reversed, to restore a ‘positive’ virtual object, defined in terms of its sub-volumes, and including a negative offset. [0080] To aid understanding, a particular set of offsets is discussed. In this example total offsets of 110pm, -99pm and 130pm are to be applied to the x-axis, y-axis and z-axis respectively of an object which is to be rendered at 1200dpi in the x-y plane and 80pm in the z-axis. In this example, the resolution is lowest in the z-axis, so the first surface offset comprises the z-axis offset and any other axis having the same sign. Moreover, the total offset applied in the z-axis is positive so the first surface offset will be a dilation operation. The total offset in the x-axis is also positive so this offset will also be applied in the first surface offset operation. Therefore, in the first surface offset a dilation will be performed of 55pm in the x-axis and 65pm in the z-direction (half of the desired total offsets for the reasons described above). In this example, the first offset operation is to use a 3D offset operator and therefore the dilation operation will also apply a positive offset in the y-direction, even though the total offset to be applied in the y-axis is negative. The size of the offset to be applied to the y-axis in the first surface offset operation is selected such that in the second surface offset operation an offset can be applied that is an integer number of sub-volumes, thereby reducing quantization error. In this example the sub-volume size in the y-axis is 12.167pm and the desired total offset in the y-axis is -99pm. To achieve a total offset of -99pm in the y-axis when a positive offset is to be applied in the first offset operation while applying an offset in the second surface offset operation that is an integer multiple of the sub-volume size, a surface offset may be applied in the first surface offset operation of 28pm. This means an offset of -127pm can be applied in the second surface offset operation. This results in the second surface offset in the y- axis being equivalent to subtracting 6 sub-volumes (21.167pm x 6 = -127pm). The result is that in the first surface offset operation offsets of 110pm, 28pm and 130pm are applied to the x, y and z-axis respectively and in the second surface offset operation offsets of 0pm, -127pm and 0pm are applied to the x, y and z-axis respectively.

[0081] In this example the size of the surface offset to be applied to an axis with a different sign of total offset to the total offset of the z-axis is determined according to the following equations, wherein o il t o i2 and o it are the first surface offset, the second surface offset and the total offset respectively to be applied in the i axis, wherein i is x or y, n is a positive integer and v t is the size of a sub-volume in the i axis.

[0082] If (i.e. if the offset in i axis is different sign to offset in z- axis), then: sum of first and second surface offsets equals total offset in i axis),

Oji ®iz

- = - (the first and second offsets in i axis have a different sign); and

|0£i I |0£ Z |

|0 [ 21 — TIV ( (the second surface offset is equal to an integer multiple of the size of the sub-volumes in the i axis).

0 t O zi

[0083] However, if - - - = - - - (the offset in i axis is same sign to offset in z-

\Oit\ \° Z t\ axis), then

Oil = °it ( the first surface offset and total offset are equal in the i axis), and

°i2 = 0 ( the second surface offset is equal to zero in the i axis).

[0084] Figure 7 shows an example of an apparatus 700 comprising processing circuitry 702, the processing circuitry comprising an object model module 704, a first offset operator module 706 and a second offset operator module 708.

[0085] In use of the apparatus the object model module 704 is to obtain (for example, from a memory, or over a network or the like) an object model of a three- dimensional object to be generated. In some examples the obtained model is a mesh model, as described previously.

[0086] In use of the apparatus the first offset operator module 706 is to apply a first offset corresponding to a first object axis to a surface of the object model to obtain a first transformed object model. The first transformed object model may describe the object in terms of categorised homogenous volumes. The first offset may for example be applied as part of a process of converting the object model into a model comprising categorised homogenous volumes, for example a method as described in relation to Figure 5 and 6. The first offset operator module 706 may derive the first transformed object model as an ‘octree’ model and/or may describe the object in terms of object sub-volumes having voxel resolution (i.e. the first transformed object model may comprise a voxel model).

[0087] In use of the apparatus, the second offset operator module 708 is to apply a second offset corresponding to a second object axis adding or removing a plurality of sub-volumes (which may be defined at voxel resolution) relative to a surface of the first transformed object model. In some examples the first offset operator module 706 will output a model comprising a plurality of sub-volumes having voxel resolution, and/or the second offset operator module 708 may define a voxel model of the object from the first transformed object model. The second offset operator module 708 may apply an offset using a method which is capable of operating on a model comprising a plurality of subvolumes and which generates a second transformed object model comprising a plurality of voxels.

[0088] In some examples the apparatus 700 is an additive manufacturing apparatus. In other examples the apparatus 700 may be in communication with an additive manufacturing apparatus.

[0089] The processing circuitry 702 or the modules thereof may carry out any of the blocks of Figure 1 , 2A, 2B, 4 or 5.

[0090] Figure 8 shows a tangible machine-readable medium 802 associated with a processor 804. The machine-readable medium 802 comprises instructions 806 which, when executed by the processor 804, cause the processor 804 to carry out tasks. In this example, the instructions 806 comprise instructions 808 to cause the processor 804 to process data representing a first object as a virtual object to determine a transformed object by applying a first offset to compensate for anticipated distortions in a first axis to the virtual object. The data representing the first object as a virtual object may represent the object using a mesh. While the first offset could be applied to the mesh directly, in some examples the first offset is applied while converting the object model into a model characterising a volume of space as a plurality of sub-volumes which may be categorised as ‘internal’ or ‘external’ to the object as has been described above.

[0091] The instructions further comprise instructions 808 to process data representing the transformed object to determine a volumetric model of the virtual object comprising a second offset to compensate for anticipated distortions in a second axis, wherein the volumetric model of the virtual object comprising the second offset is described using a plurality of sub-volumes. The transformed model may also be described in terms of sub-volumes.

[0092] Figure 9 shows a further example of a tangible machine-readable medium 902 associated with a processor 904. The machine-readable medium 902 comprises the instructions 906 which, when executed by the processor 904, cause the processor 904 to carry out tasks. In this example, the instructions 906 comprise instructions 808, 810 as described in reference to Figure 8. The instructions 906 further comprise instructions 908 to generate instructions for an additive manufacturing apparatus, which instruct the additive manufacturing apparatus to build an object corresponding the volumetric model of the virtual object. For example, the volumetric model may describe the virtual object in terms of voxels, which may be associated with print instructions as described above. The additive manufacturing apparatus may then execute the generated instructions to build the object. The object will then be generated with the offsets (in addition to, in some examples, other geometrical transformations such as scaling factors) which may account for deformations and increase dimensional accuracy.

[0093] The machine readable medium 802, 902 may comprise instructions to cause the processor 804, 904 to carry out any of the blocks of Figure 1 , 2A, 2B, 4 or 5, and/or to act as any part of the processing circuitry 702 of Figure 7.

[0094] Examples in the present disclosure can be provided as methods, systems or machine-readable instructions, such as any combination of software, hardware, firmware or the like. Such machine-readable instructions may be included on a computer readable storage medium (including but not limited to disc storage, CD-ROM, optical storage, etc.) having computer readable program codes therein or thereon.

[0095] The present disclosure is described with reference to flow charts and/or block diagrams of the method, devices and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. It shall be understood that each block in the flow charts and/or block diagrams, as well as combinations of the blocks in the flow charts and/or block diagrams can be realized by machine readable instructions.

[0096] The machine-readable instructions may, for example, be executed by a general purpose computer, a special purpose computer, an embedded processor or processors of other programmable data processing devices to realize the functions described in the description and diagrams. In particular, a processor or processing apparatus may execute the machine-readable instructions. Thus, functional modules of the apparatus and devices may be implemented by a processor executing machine readable instructions stored in a memory, or a processor operating in accordance with instructions embedded in logic circuitry. The term ‘processor’ is to be interpreted broadly to include a CPU, processing unit, ASIC, logic unit, or programmable gate array etc. The methods and functional modules may all be performed by a single processor or divided amongst several processors. [0097] Such machine-readable instructions may also be stored in a computer readable storage that can guide the computer or other programmable data processing devices to operate in a specific mode.

[0098] Such machine readable instructions may also be loaded onto a computer or other programmable data processing devices, so that the computer or other programmable data processing devices perform a series of operations to produce computer-implemented processing, thus the instructions executed on the computer or other programmable devices realize functions specified by block(s) in the flow charts and/or block diagrams.

[0099] Further, the teachings herein may be implemented in the form of a computer software product, the computer software product being stored in a storage medium and comprising a plurality of instructions for making a computer device implement the methods recited in the examples of the present disclosure.

[00100] While the method, apparatus and related aspects have been described with reference to certain examples, various modifications, changes, omissions, and substitutions can be made without departing from the spirit of the present disclosure. It is intended, therefore, that the method, apparatus and related aspects be limited only by the scope of the following claims and their equivalents. It should be noted that the above- mentioned examples illustrate rather than limit what is described herein, and that those skilled in the art will be able to design many alternative implementations without departing from the scope of the appended claims.

[00101] The word “comprising” does not exclude the presence of elements other than those listed in a claim, “a” or “an” does not exclude a plurality, and a single processor or other unit may fulfil the functions of several units recited in the claims.

[00102] The features of any dependent claim may be combined with the features of any of the independent claims or other dependent claims.