WO2023146548A1 - Boolean operations - Google Patents

Boolean operations Download PDF

Info

Publication number
WO2023146548A1
WO2023146548A1 PCT/US2022/014570 US2022014570W WO2023146548A1 WO 2023146548 A1 WO2023146548 A1 WO 2023146548A1 US 2022014570 W US2022014570 W US 2022014570W WO 2023146548 A1 WO2023146548 A1 WO 2023146548A1
Authority
WO
WIPO (PCT)
Prior art keywords
sub
volume
boolean
component
model
Prior art date
Application number
PCT/US2022/014570
Other languages
French (fr)
Inventor
Sergio GONZALEZ MARTIN
Jordi GONZALEZ ROGEL
Matthew A. Shepherd
Alvaro VINACUA PLA
Antonio CHICA CALAF
Pol MARTIN GARCIA
Eduard PUJOL PUIG
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2022/014570 priority Critical patent/WO2023146548A1/en
Publication of WO2023146548A1 publication Critical patent/WO2023146548A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B22CASTING; POWDER METALLURGY
    • B22FWORKING METALLIC POWDER; MANUFACTURE OF ARTICLES FROM METALLIC POWDER; MAKING METALLIC POWDER; APPARATUS OR DEVICES SPECIALLY ADAPTED FOR METALLIC POWDER
    • B22F10/00Additive manufacturing of workpieces or articles from metallic powder
    • B22F10/80Data acquisition or data processing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/10Additive manufacturing, e.g. 3D printing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability

Definitions

  • Additive manufacturing techniques may generate a three-dimensional object through the solidification of a build material, for example on a layer-by-layer basis.
  • build material may be supplied in a layer-wise manner and the solidification method may include heating the layers of build material to cause melting in selected regions.
  • methods such as chemical solidification and/or binding methods may be used.
  • Figure 1 is an example of a method for removing associations between Boolean operations and component models
  • Figure 2 is a schematic drawing illustrating how component models may be combined using Boolean operations
  • Figure 3 is an example method of processing a set of Boolean operations
  • Figure 4 is an example of how a set of Boolean operations may be simplified
  • Figure 5 is an example method of combining component models and determining control instructions for additive manufacturing
  • Figure 6 is an example of how a set of Boolean operations may be simplified
  • Figure 7 and 8 are examples of apparatus
  • Figure 9 is an example of a machine-readable medium associated with a processor.
  • Additive manufacturing techniques may generate a three-dimensional (3D) object through the solidification of a build material.
  • the build material is a liquid.
  • the build material is a powder-like granular material, which may for example be a plastic, ceramic or metal powder.
  • Build material may be deposited, for example on a print bed and processed layer by layer, for example within a fabrication chamber.
  • Suitable polymeric build materials may comprise Polyamide materials (e.g., PA12, PA11 ), Thermoplastic Polyurethane (TPU) materials, Thermoplastic Polyamide materials (TPA), Polypropylene (PP) and the like.
  • selective solidification is achieved through directional application of energy, for example using a laser or electron beam which may selectively fuse and/or cure a build material.
  • at least one print agent may be selectively applied to a granular build material, and may be liquid when applied.
  • a fusing agent also termed a ‘coalescence agent’ or ‘coalescing agent’
  • the data may be derived from a digital or data model of the object, e.g. object model data providing a data, or virtual, model of an object to be generated.
  • 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 to which it has been applied heats up, coalesces and solidifies, upon cooling, to form a slice of the 3D object in accordance with the pattern.
  • energy for example, heat
  • a suitable fusing agent may be an ink-type formulation comprising carbon black.
  • 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.
  • binding agents may be printed onto portions of a layer of a granular build material, or materials may be placed in a location to form part of the object.
  • the model data can be processed to define 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.
  • Figure 1 is an example of a method, which may comprise a method of assessing a set of Boolean operations to be carried out when combining component models of 3D objects (i.e. data representations of such 3D objects) to determine a combined object model (i.e. a data representation of the combined object).
  • the method is carried out at least in part by processing circuitry, which may comprise at least one processor.
  • the combined object model is to represent an object as a plurality of contiguous, non-overlapping sub-volumes (e.g.
  • voxels which may also be referred to as a ‘spatial deconstruction’ of an object, or a voxel model as will be described in greater detail below, in which the term ‘voxel model’ is generally used.
  • the method may be carried out as part of a process of combining the component models which may originally be represented in terms of their surfaces (e.g. as a mesh model) while deriving a combined object model as a voxel model.
  • voxel models may be used as a basis for defining control instructions for generating the object represented by the combined object model in additive manufacturing.
  • the combined object model may comprise a print resolution representation of the object model data, for example comprising a specification of at least one attribute (for example, present or absent (also referred to herein as interior or exterior), a color, a texture, a transparency, a conductivity, a strength, a porosity, a resilience, or the like) or print material (for example, a choice of print agent or build material) for each ‘voxel’ of an object and/or a surrounding volume (for example, a cuboid enclosing the object).
  • a print resolution representation of the object model data for example comprising a specification of at least one attribute (for example, present or absent (also referred to herein as interior or exterior), a color, a texture, a transparency, a conductivity, a strength, a porosity, a resilience, or the like) or print material (
  • a voxel may be thought of as a volumetric pixel, and each voxel may be a print addressable area, such that one voxel may be associated with different properties than a neighbouring voxel, and in some examples, voxels are defined at the print resolution of an apparatus.
  • each voxel is the same shape and/or size, for example comprising cuboids of the same size, whereas in other examples voxels may differ in size and/or shape.
  • block 102 comprises receiving (e.g. from a memory, over a network or the like) a plurality of component data models of 3D objects to be combined using an associated first set of Boolean operations to determine a combined object model of a 3D object.
  • each Boolean operation is associated with at least two of the component models of the plurality of component models.
  • the Boolean operations may be associated with component models in a ‘Boolean tree’, as further set out below
  • the combined object may initially be defined or described by a plurality of component models, each representing different features, or parts of the object.
  • the set of Boolean operations may comprise one or more Boolean operations and may define how these component models are to be combined to define the complete object.
  • the relative location of the component models in a virtual space or volume may be defined.
  • the first set of Boolean operations may comprise a sub-volume set of Boolean operations defined in a previous iteration, as will be explained in greater detail below.
  • Combining component models in this way may be referred to as ‘Constructive solid geometry’ (CSG) and can allow a relatively complex object to be modelled using Boolean operations (e.g. union, intersection and/or difference operations) to combine simpler component models, which may also be referred to in the field of art as ‘primitive objects’, or simply ‘primitives’.
  • the Boolean operations are regularized Boolean operations, which may avoid the operations resulting in models which may be unmanufacturable.
  • the combined object model may be an octree representation of at least part of the object to be manufactured in an additive manufacturing process as a plurality of nodes, for example a classical ‘octree representation’, in which the node representing the largest volume (the ‘root’ node) is described first, followed by its octants, follow by their octants and so on. While octrees are discussed herein, in principle other representations such as quadtree representations could be used.
  • Block 104 comprises defining a first volume to contain at least part of a combined object model and associating the first set of Boolean operations with the first volume.
  • the first volume may be a virtual volume which may contain at least part of at least one virtual object modelled by the object data models.
  • the first volume may comprise at least the volume of a boundary box or boundary volume which can fully enclose a virtual object corresponding to, or representing, the combined object model, once formed.
  • the first volume may comprise at least the volume of a boundary box or boundary volume which can fully enclose virtual objects corresponding to each of the component models having a specified relative position in space.
  • the dimensions of this volume may for example be determined by reference to coordinates associated with the component models, and may for example comprise a cuboid having the maximum coordinates in each of, for example, X, Y and Z axes as determined by reference to the maximum coordinates of vertices in each axis specified in the component models, wherein the coordinates of the vertices may be specified relative to a common origin.
  • the dimensions of this volume may be determined in some other way, for example based on user input.
  • the first volume may comprise a subvolume defined in a previous iteration.
  • Block 106 comprises categorising a plurality of sub-volumes of the first volume for each component model.
  • the plurality of sub-volumes may be categorised as (i) wholly interior to a component model, (ii) wholly exterior to that component model or (iii) partially overlapping with that component model, with respect to each component model.
  • the categorisation could be used to specify any binary attribute, for example, the presence or absence of a particular color, conductivity, elasticity, print agent, or the like.
  • each volume could be categorised as ‘red’ or ‘not red’ or ‘containing a red sub-region and a non-red sub-region’, or categorised as ‘conductive’ or ‘not conductive’ or ‘containing a conductive sub-region and a non-conductive sub-region’.
  • the component models may for example be used to specify a region of the combined object model having a particular color or other property.
  • each component model may be thought of as virtually occupying a location within the first volume.
  • the component models may overlap in the first volume, wherein the processing of overlapping portions depends on the specified Boolean operations.
  • an octree once the volume which can fully contain the combined object model is defined, this can be divided into sub-volumes comprising its octants. For each of these octants, it may be assessed whether that octant is wholly interior to each of the component models, wholly exterior to each component model or overlaps a boundary (or surface) thereof.
  • a sub-volume e.g. an octant
  • it may be specified as being ‘black’ with respect to that model.
  • the sub-volume is wholly exterior, it may be specified as being ‘white’ with respect to that model.
  • a boundary is crossed, i.e., if a surface of the object intersects the sub-volume, the sub-volume may be categorised as ‘grey’.
  • the portions of an object to be solidified may be formed by printing a granular build material (which is generally white in colour) with a black printing agent such as carbon black, which preferentially absorbs energy applied to the surface, but the method is not limited to such additive manufacturing processes.
  • a black printing agent such as carbon black
  • a mesh may have two distinct sides: an interior side and an exterior side, which may be identified by reference to a surface normal, itself defined with reference to the order in which the coordinates of the polygons forming the mesh are specified.
  • the interior side may generally face towards the portion of space which is intended to represent solidified build material and the exterior side faces away from the portion of space which is intended to represent solidified material.
  • a volume is formed within the mesh on the interior side, and if a sub-volume is within this volume, then it may be categorised as black i.e. an interior sub-volume. Similarly if a sub-volume is entirely outside of the interior volume, on the exterior side of the mesh, it may be categorised as white i.e. an exterior sub-volume.
  • a terminal grey sub-volume may be encoded when the sub-volume is at a print resolution, or is the smallest sub-volume encoded by a particular model.
  • Intermediate grey sub-volumes may be divided until they are categorised as ‘black’ or ‘white’, or until a terminal grey subvolume is defined.
  • Terminal grey sub-volumes may be treated differently than intermediate grey sub-volumes as a decision may be made as to whether to treat the sub-volume as a black or a white volume; e.g. in practical terms, the volume may be assigned to be either inside or outside the object.
  • terminal grey volumes may be omitted in some examples.
  • the categorisation of a sub-volume may for example be expressed with two bits: 00 for a white volume, 01 for a black volume, 10 for an intermediate grey volume and 11 for a terminal grey volume.
  • determining if the sub-volume is interior or exterior to the object may use a number of techniques.
  • it may be determined if a polygon of a mesh describing the component model intersects with the sub-volume. For example, this may comprise determining Separating Axis Theorem (SAT) separating planes, which can be represented as a list of unitary vectors in 3D. If no plane perpendicular to these vectors separates a polygon of a mesh from a sub-volume, then it may be determined that the polygon intersects the sub-volume, and therefore the object surface coincides with the sub-volume.
  • SAT Separating Axis Theorem
  • determining whether a polygon intersects a sub-volume may comprise determining minimum and maximum projections of a surface polygon onto each direction of the SAT vectors.
  • the minimum and maximum projections may be used, with the directions of the separating plane, to check the intersection of a sub-volume with a polygon by projecting the vertices of the sub-volume into the direction of the vectors and comparing with the minimum and maximum projections of the polygon.
  • testing for an intersection may comprise determining if the surface intersects by selecting an array of points within a sub-volume 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.
  • ray tracing may be used in determining if an octree is internal to a model or outside of it. For example, if a ray starting from a sub-volume intersects an odd number of surfaces, then it may be determined that the sub-volume is interior to the object, whereas if the number of surfaces is even, then this may indicate that the sub-volume is external to the object. Other techniques may be used in other examples.
  • This process may be referred to as ‘top down’ voxelization of the meshes, in that an initial larger volume is conceptually recursively divided into smaller volumes, and the voxel model progressively defined. It will be appreciated that, whilst the sub-volumes remain large, the number of ‘grey’ sub-volumes may be large but as the sub-volumes become smaller, these may be resolved into black and white categorisations.
  • such encoding could be used to specify any binary attribute, for example, the presence or absence of a particular color, conductivity, elasticity, print agent, or the like.
  • Block 108 comprises determining if any Boolean operations of the first set are redundant for a sub-volume based on the categorisation of the sub-volume for at least one component model and the Boolean operation associated with that given component model, and if so the method proceeds to block 1 10, which comprises removing the association between the Boolean operation and that component model to determine a subvolume set of Boolean operations which is to be used to combine the component models associated therewith for that sub-volume (noting that the number of component models associated with the Boolean operations may have been reduced by the action of block 108). If none of the Boolean operations are found to be redundant, then the sub-volume set of Boolean operations may be the same as the first set associated with the first volume.
  • a Boolean operation may be redundant for a sub-volume if it can be evaluated or resolved fully and unambiguously based on the categorisations of the sub-volume for the respective component models and the Boolean operations applied to the component models.
  • a Boolean operation may be redundant with respect to a sub-volume if its outcome is irrelevant given a categorisation of a sub-volume. For example, if a sub-volume is categorised as ‘white’ (i.e., the sub-volume is exterior to a given component model) and the operation is a union operation, carrying out the operation with respect to that given component model will have no effect on the outcome of the union operation as it relates to other sub-volumes. Thus, to the extent that the union operation applies to the component model for which the sub-volume is white, this may be removed from the set of Boolean operations.
  • the black sub-volume will not change as a result of the intersection operation, and thus consideration of the component model for which the subvolume is categorised as ‘black’ may be redundant.
  • an operation may be determined to be redundant if a further subdivision would not impact the result of an operation.
  • the Boolean operation is a union operation between a first component model A, with respect to which a sub-volume has been classified as an interior (black) sub-volume and a second component model B, it may be determined that the outcome of the Boolean operation with respect to that sub-volume will always be interior to the model (black). Indeed, the category of the sub-volume for the other component model need not be known to make this determination. Thus, even if the sub-volume is categorised as grey with respect to the component model B, the result of the operation is now determined. Similarly, if a Boolean operation is an intersection between an exterior sub-volume and any other sub-volume, it may be determined that the outcome will always be exterior to the model
  • This may allow the consideration of sub-volumes of the sub-volume to be terminated.
  • grey sub-volumes would usually be recursively divided until a categorisation of black or white, or the smallest voxel size under consideration was reached.
  • the result of the Boolean is known, and thus definition of the further sub-volumes is redundant.
  • removing the association between the Boolean operation and a component model with may also remove that component model with respect to that Boolean operation for consideration in a subsequent iteration of the method.
  • Boolean operations may be carried out as the octrees of the various component models are defined. This means that they may be carried out once for a larger sub-volume rather than repeatedly full smaller sub-volumes once the octree is complete and/or may allow further definition of ‘grey’ sub-volumes to be disregarded.
  • the Boolean operation may be removed in its entirety, along with any associations between the Boolean operation and component models and may be replaced in the set of Boolean operations associated with the remaining component models by the outcome of the operation (for example, in the above examples, the result may be ‘white’ or ‘black’).
  • some Boolean operations may be evaluated during construction of the voxel models of the component models in order to reduce the number of component models and Boolean operations associated with a sub-volume. This may for example be described as simplifying a Boolean tree for each sub-volume, for example by removing portions thereof, or replacing a portion thereof with the output of a resolvable Boolean operation.
  • Such assessment of the set of Boolean operations for a sub-volume may be carried out recursively for a given sub-volume until no further redundant operations are identified. This may be repeated for each sub-volume for which an association between Boolean operations and component models exist, until all Boolean operations are resolved and/or a threshold sub-volume size is reached.
  • the method may then loop back to sub-divide further sub-volumes using the subvolume set of Boolean operations which is to be used to combine the associated component models (which may have been reduced by the method of Figure 1 ), for example until the set of Boolean operations as a whole has been unambiguously resolved, and/or until sub-volumes for which the set of Boolean operations as a whole have not been unambiguously resolved reach an intended minimum size.
  • the sub-volume considered in block 108 may provide the first volume described in relation to block 104, and the remaining Boolean operations and associated component models defined by block 108 may provide the plurality of component models of 3D objects to be combined using an associated first set of Boolean operations in relation to block 102.
  • Figure 2A-C show a conceptual representation of the process of combining component models in two dimensions.
  • three component models respectively modelling a square 202a, a triangle 202b and circle 202c and shown individually in Figure 2A, are to be combined.
  • a combined shape 208 shown in Figure 2C is to be formed of the intersection of the triangle 202b and the square 202a and the union of the intersection and the circle 202c, when placed in the arrangement shown in Figure 2B.
  • Figure 2B also shows a volume, representative of the first volume 204, which encloses a space to be occupied by the combined object model.
  • the first volume encloses a space which is to be occupied by all of the component models and thus includes all of the coordinates associated with each of the models.
  • the first volume 204 is marked into sub-volumes, in this example quadrants, 206a - d.
  • quadrants 206a - d may be categorised with respect to each of the component models.
  • quadrants 206a, c and d are boundary (grey) subvolumes with respect to the square 202a
  • quadrant 206b is entirely interior to the square 202a and thus may be categorised as a black sub-volume with respect to the square 202a.
  • this same sub-volume, quadrant 206b is white with respect to the triangle component model 202b.
  • intersection operation As the operation to be performed between the triangle component model 202b and the square 202a is an intersection operation, the operation is redundant with respect to the top right quadrant 206b, as this quadrant is white with respect to the triangle component model. For this quadrant 206b, the intersection operation may be resolved, as the white categorisation of the quadrant with respect to the triangle 202b means there can be no intersection. The outcome of that Boolean operation is therefore unambiguously determined to be ‘white’ and further sub-divisions will not affect this outcome.
  • the bottom left quadrant 206c is white with respect to the circle 202c.
  • this union operation need not be carried out in relation to the bottom left quadrant 206c as the white categorisation means that the circle 202c will not contribute to the union within that quadrant 206c and thus the set of Boolean operations and component models associated with this sub-volume may be reduced to just the intersection operation between the square 202a and the triangle 202b.
  • Figure 3 shows another example of a method, which may precede the method of Figure 1 (although in principle it may be employed at any time during iterations of the method of Figure 1 ).
  • block 302 comprises receiving a preliminary set of Boolean operations which are to be used to combine component models.
  • the set of Boolean operations may comprise union operations, intersection operations and/or difference operations.
  • Block 304 comprises determining if the preliminary set of Boolean operations comprises any difference operations. If so, the method comprises, in block 306, transforming the set of Boolean operations to replace difference operations with intersection operations. This may provide the first set of Boolean operations as described in relation to Figure 1.
  • the method further comprises in block 308 inverting at least one component model associated with the difference operations such that the logical outcome of applying the preliminary set of Boolean operations to an original set of component models is the same as that of applying the first set of Boolean operations to a modified set of component models comprising at least one inverted component model.
  • This may comprise inverting a, or at least one, or any, component model which was to have been subtracted in a difference operation.
  • Inverting a component model to determine an inverted component model may comprise designating an interior volume of the component model as an exterior volume and designating an exterior volume of the component model as an interior volume.
  • Inverting a component model may comprise redefining exterior surfaces of polygons making up the component model as interior surfaces of polygons. In other examples, the order of the vertices of each polygon may be changed, as this may define which face is internal and which is external. [0056] By redefining the difference operations as intersections with inverted versions of the component models, the number of operations in the set of Boolean operations may be reduced. Moreover, as is further discussed in relation to Figure 4, this may facilitate simplification of the set of Boolean operations as union and intersection operations are commutative and associative.
  • Boolean tree 400 is an example of a set of Boolean operations, set out as a Boolean operation tree, wherein the tree 400 may be processed using the methods of Figure 3 to form the Boolean tree 402. Moreover, this tree may be further simplified to provide the single level tree 406.
  • a Boolean operation tree defines a series of Boolean operations to be performed to combine component models.
  • Boolean operations are shown as circles and the component models to be combined are shown within squares, referred to herein as nodes of the Boolean tree. It may be noted that these squares, or nodes, may represent the first volume, or a sub-volume thereof, and the portion of each of the component models A to C occupying that volume/sub-volume.
  • the nodes correspond to the first volume including, respectively, a first component model A, the second component model the and a third component model C.
  • a Boolean tree provides a logical structure illustrating how the Boolean operations are performed on the nodes to combine the component model.
  • the lowest level of nodes may be combined using the Boolean operator directly above them. This is repeated until the tree is evaluated.
  • nodes A, B and C are combined using the subtract (-) and union (U) operations.
  • the preliminary Boolean tree 400 has two levels and may be transformed to provide the tree 402.
  • the tree may also be simplified using the associative properties of the union or intersection operations.
  • associative properties of the union or intersection operations.
  • operation Y may be deleted and its operands added as children of X.
  • the levels in the two-level tree 402 may be combined as the combined object model is an intersection of A and the intersection of B and C, which may alternatively be described as an intersection of ,_B and C providing the one-level tree 406.
  • a similar operation could be carried out if a union operation had another union operation as its operand.
  • Figure 5 is an example of a method, which may comprise a computer implemented method of combining component models to form a combined object model.
  • the component models are mesh models, which may have been subjected to pre-processing such that they are ready for voxelization.
  • the meshes may have been inspected for errors and/or any identified errors (for example, holes in the mesh or mesh errors such as auto-intersected surface polygons, or degenerate polygons) may have been repaired.
  • a determination of which face of a mesh polygon is an inside face, and which is the outside face e.g. a determination of a vertex and/or surface normal
  • an object model may be inspected to determine if it describes features which are too small to be reproduced reliably. Such features may be increased in size, or highlighted to a user.
  • the operation(s) may comprise determining displacement vectors, wherein displacement vectors are vectors which may be used for implementing displacement maps.
  • Displacement maps may be used to create a modified geometry by projecting a heightfield texture onto a polygon of a mesh model, or any other surface, and generating the modified geometry along some displacement vectors, using the values of the texture.
  • Other preprocessing operations in relation to converting meshes into volumetric, or voxel, models may also be carried out in some examples.
  • the method comprises, in block 500, receiving (e.g. at a processor, from a memory, over a network or the like) a plurality of component data models of 3-D objects which are to be combined using a first set of Boolean operations to determine the combined object model of the 3-D object.
  • the first set of Boolean operations may be determined as set out in the method of Figure 3.
  • the first set of Boolean operations may be provided with the component models.
  • the relative positions for the component models to be combined within a virtual volume may also be provided.
  • the component models may have any of the characteristics described above in relation to Figures 1 and 2.
  • Block 502 comprises defining a first volume.
  • the first volume is a virtual cuboid volume defined so as to contain the component data models in the respective relative positions in which they are to be combined.
  • the first volume has the first set of Boolean operations associated therewith. Defining the first volume may comprise defining the first volume as set out in relation to block 104 above.
  • the first volume may be a previously defined sub-volume, and the first set of Boolean operations may be a subvolume set of Boolean operations defined for example by the method of Figure 1 or by the method now described in relation to Figure 5.
  • Block 504 comprises defining a plurality of sub-volumes of the first volume. In an example, this may comprise defining octants of the first volume, i.e. dividing the first volume into eight equal portions.
  • This first volume may be categorised as ‘grey’ or a boundary volume as, by definition, it includes the interior of a component model, and unless the component objects comprise an object having the exact dimensions of the first volume, the first volume will comprise at least a portion which is exterior to each of the component models.
  • Block 506 comprises, for each sub-volume and for each component model, categorising the sub-volume with respect to that model.
  • this allows the sub-volumes to be categorised as one as interior, exterior or boundary sub-volumes for each component model and for each sub-volume, as set out above. This may be thought of as an early stage in determining an octree for each component model. At this point, two levels of an octree for each of the component models may thereby be defined.
  • Block 508 comprises determining if there are any remaining unresolved Boolean operations. Assuming this is the case, then the method proceeds with blocks 510 and 514, both of which provide methods for determining, for each sub-volume, based on the category of the sub-volume for a component model and the Boolean operations associated with that component model, whether the Boolean operation is redundant for that subvolume, and therefore provide examples of block 108.
  • block 510 comprises determining if the categorisation of the sub-volume for a component model will affect the outcome of the Boolean operation. If not, the association between the Boolean operation and that component model is removed in block 512.
  • an operation is an intersection between a particular model, wherein the sub-volume is categorised as internal to the particular model and any other model for which the categorisation may be ‘boundary’
  • the association between the Boolean operation and the particular model may be deleted for that sub-volume.
  • the method then proceeds in block 514 by determining, for each sub-volume and based on (i) the categorisation of the sub-volume for at least one component model to be combined with another component model and (ii) the Boolean operation to be used in combining the component models, if the outcome of the Boolean operation is invariant to sub-divisions of the sub-volume and, if so, block 516 comprises replacing the Boolean operation with its outcome in the sub-volume set of Boolean operations. Otherwise, the method may proceed directly to block 518.
  • the Boolean operation is a union operation between an interior subvolume and any other sub-volume, it may be determined that the outcome will always be interior to the model. Therefore, the union operation may instead be represented as an interior sub-volume in a set of Boolean operations (or a Boolean tree) for that sub-volume. As a further example, if the Boolean operation is an intersection operation between an exterior sub-volume and any category of sub-volume, it may be determined that the outcome will always be exterior to the model. Therefore, the union operation may instead be represented as an exterior sub-volume in a set of Boolean operations (or a Boolean tree) for that sub-volume.
  • Either of blocks 512 or 516 may result in at least one component model no longer being associated with the set of Boolean operations. In such examples, further sub-division of sub-volumes with respect to those component models may cease. In other words, where part of a Boolean tree has been unambiguously resolved, there may be no need to further sub-divide sub-volumes, and generation of a voxel representation of a component model, such as an octree may terminate with respect to that model, as it will provide no further information which is pertinent to the combined object model. In particular, this may be the case even though a categorisation for a particular sub-volume for a particular model was a boundary categorisation.
  • the method may iteratively loop through blocks 508-514 until no further simplification is identified.
  • Block 518 comprises determining if any remaining boundary (‘grey’) sub-volumes associated with a Boolean operation have a size which is greater than a threshold size.
  • block 520 comprises subdividing each sub-volume, and the method loops back to block 506. This adds another level to the octree.
  • the set of Boolean operations associated with the component models are those resulting from the processing of block 510-516 for the sub-volume being divided.
  • the number of operations and/or the number of component models may be reduce compared to a previous operation. It may be noted that further sub-division of white or black sub-volumes may not be carried out, or may be trivial, as further sub-divisions simply inherit the categorisation of their parent.
  • the method proceeds to block 522, which comprises evaluating any remaining sub-volume set of Boolean operations for each sub-volume of the predetermined size to determine if that sub-volume is (i) an interior sub-volume, which is interior to the combined object model, (ii) an exterior sub-volume, which is exterior to the combined object model or (iii) a boundary sub-volume which spans a combined object model boundary.
  • block 508 the method may skip blocks 510 to block 518.
  • that sub-volume is ‘grey’ with respect to that one remaining component model then further definition of the octree for that component model may continue in order to define the parts of the object which are to be solidified.
  • block 522 may also be skipped.
  • the third category i.e. that a sub-volume of the minimum size is a boundary sub-volume
  • a boundary sub-volume of the minimum size may be assigned to one of the categories of internal or external for example according to a predetermined rule (e.g. all boundary subvolumes of the minimum size are considered either internal or external), randomly, or based on a volumetric assessment such that if more of the sub-volume is internal than external, it is designated an internal sub-volume, and vice versa, or in some other way.
  • the definition of a sub-volume of the threshold size as a boundary subvolume may result in particular print instructions being associated therewith, such as, for example, a reduced amount of fusing agent being applied in relation to a portion of build material corresponding to that sub-volume.
  • the outcome at the end of block 522 is a set of voxels representing the combined object.
  • Each voxel will be associated with a categorisation as being internal to the combined object, external to the combined object or, in some examples, a boundary voxel.
  • a voxel-wise evaluation of any remaining Boolean operations may be carried out at block 522, the number of Boolean operations to be performed in respect to each voxel, and/or the number of component models to be combined by such operations may be considerably reduced when compared to an initial set of Boolean operations.
  • Block 524 comprises generating control instructions for use in controlling an additive manufacturing apparatus to generate the combined object according to the categorisations of the sub-volumes of the predetermined size.
  • these may comprise instructions to place fusing agent at locations of the build material corresponding to voxels which are designated as interior to the object and not placing such agent, or placing a fusing reduction agent at locations corresponding to voxels which are marked as being external to the object.
  • these may comprise instructions to cause a directed energy source to provide energy in a location corresponding to a voxel which is determined to be internal to the combined object.
  • the method may then proceed to include generation of the objects.
  • Figure 6 shows an example of the operations to simplify the set of Boolean operations discussed in relation to blocks 510 - 516 of Figure 5.
  • set of Boolean operations and the associated component models A, B, C and D are represented in a Boolean tree 600.
  • Each square node represents the first volume, or a common subvolume at any level within the octrees and has a label categorising the node as black, white or grey with respect to each of the four component models, wherein the categorisation may have been carried out as described in relation to block 106 or 506.
  • Two rules (which may be applied recursively) may be applied to the tree to simplify the tree.
  • the sub-volume contains a boundary, or surface, of component models A and B (categorised as ‘grey’), but is wholly external to component models C and D (categorised as ‘white’).
  • the second level of the tree is represented by the intersection of two models B and C.
  • the operation described in relation to blocks 514 and 516 is shown as a first simplification, represented as a second tree 602.
  • the categorisation of this sub-volume with respect to the component model C is white: i.e. the sub-volume is entirely exterior to the component model C.
  • this Boolean operation is replaced by its outcome, in this example an operand, or categorisation ‘white’ (or exterior). Therefore, the partially simplified central tree 602 comprises a “white” where the intersection operation was located.
  • no further specification of models B or C e.g. further levels in an octree
  • a union operation is to be carried out in relation to a white sub-volume, i.e. the sub-volume as categorised for component model D. Viewed another way, the sub-volume is entirely external to component model D. Thus, this operation is redundant with respect to the combination.
  • the association of the Boolean operation with the component model D in this sub-volume may be deleted. Further, it may be noted that this leaves a union between a grey node and a white node defined in the first stage.
  • the white node may also be deleted, leaving a tree in which all Boolean operations have been removed (‘tree’ 604 is therefore simply a categorised sub-volume). This therefore demonstrates an example of the process carried out in blocks 510 and 512.
  • a plurality of data structures e.g. octrees
  • each representing a component model of the modelled object may be obtained and the plurality of data structures are combined by performing Boolean operations at the appropriate level during their formation.
  • the models may be at least partially combined during formation of the octrees and/or formation of the octrees may be curtailed, even where a boundary sub-volume is described (for example, as in the case of component model B in the example of Figure 6), once a Boolean operation is fully resolved.
  • Figure 7 is an example apparatus 700, which may be used in some additive manufacturing operations, for example in combining component models into a combined object model as described above.
  • the apparatus 700 comprises processing circuitry 702, the processing circuitry 702 comprising an assessment module 704.
  • the processing circuitry 702 may carry out any or any combination of the blocks of Figures 1 , 3 or 5.
  • the assessment module 704 iteratively assesses a Boolean tree comprising at least one Boolean operation associated with a plurality of component virtual objects (which may be modelled by component data models as described above) which are to be combined within a first volume.
  • the assessment module 702 categorises a plurality of sub-volumes of the virtual first volume for each component virtual object.
  • each sub-volume may be categorised as one of (i) an interior sub-volume, which is interior to the component model (or ‘black’), (ii) an exterior sub-volume, which is exterior to the component virtual object (or ‘white’), or (iii) a boundary sub-volume which spans the component virtual object boundary (or ‘grey’).
  • the sub-volumes may be categorised based on some other property.
  • the assessment module 704 further determines if any of the Boolean operations of the tree are resolvable, at least in part, (i.e. redundant, as described above) for a subvolume based on the categorisation of the sub-volume for a component virtual object and the Boolean operation associated with that component virtual object, for example as discussed above in relation to Figures 1 , 2, 5 and 6.
  • the assessment module 704 removes a portion of the Boolean tree associated with the resolvable Boolean operation to determine a sub-volume Boolean tree for that sub-volume.
  • the assessment module 704 repeats the assessment for further sub-divisions of at least one sub-volume using the sub-volume Boolean tree for that sub-volume, for example until a threshold sub-volume size is reached or until all the Boolean operations are resolved.
  • Figure 8 shows an example of another apparatus 800 comprising processing circuitry 802, wherein the processing circuitry comprises an assessment module 804, wherein the assessment module 804 comprises the features of the assessment module 704 described above.
  • the processing circuitry comprises a combining module 806 and a control instructions module 808, and the apparatus 800 further comprises additive manufacturing apparatus 810.
  • the combining module 806 combines the component virtual objects defined at a threshold sub-volume size, when the Boolean tree comprises unresolved Boolean operations, according to those remaining operations. This may allow the processing circuitry 802 to determine a data structure comprising contiguous, nonoverlapping sub-volumes (e.g. octrees) representing the combined object model. Therefore, creating the combined object model comprises performing Boolean operations on data models representing the component virtual objects.
  • control instructions module 810 determines instructions to control the additive manufacturing apparatus 810 to generate a 3D object based on the combined component virtual objects.
  • control instructions are determined from the derived object model data modelling the object.
  • the combined component virtual objects may be ‘sliced’ into slices corresponding to each layer to be generated in additive manufacturing, the portions of the layer which are to be solidified may be identified within the slice based on the categorisation of the voxels, and control instructions generated therefrom.
  • the additive manufacturing apparatus 810 In use of the apparatus 800, the additive manufacturing apparatus 810 generates the object based on the control instructions.
  • the additive manufacturing apparatus 810 may generate objects in a layer-wise manner by selectively solidifying portions of layers of build material.
  • the selective solidification may in some examples be achieved by selectively applying print agents, for example through use of ‘inkjet’ liquid distribution technologies, and applying energy, for example heat, to each layer using fusing energy source(s).
  • the control instructions may describe where print agent should be placed on a layer of build material in order to generate a layer of the object. For example, print material coverage amounts may be determined, and then the placement of drops of print agents may be determined using halftoning techniques or the like to provide a determined print agent coverage amount.
  • energy may be provided by fusing energy sources to cause the build material to which fusing agent has been applied to fuse.
  • the additive manufacturing apparatus 810 may comprise other additional components not described herein, for example a fabrication chamber, at least one print head for distributing print agents, a build material distribution system for providing layers of build material and the like.
  • other types of additive manufacturing such as fused deposit modelling, directed energy techniques such as laser sintering, stereolithography, use of binding or curing agents, or the like.
  • processing circuitry 702, 802 may carry out any or any combination of the blocks of Figure 1 , 3 or 5.
  • Figure 9 shows an example of a tangible machine readable medium 902 in association with a processor 904.
  • the machine readable medium 902 comprises, or stores, instructions 906 which, when executed by the processor 904 cause the processor to carry out actions.
  • the instructions 906 comprise instructions 908 to cause the processor 904 to receive (e.g. from a memory, or over a network or the like) a representation of component models, wherein the component models are associated with Boolean operations, and the component models are to be combined by application of the Boolean operations to determine an octree representation of a 3D object to be generated by an additive manufacturing apparatus.
  • the instructions 906 comprise instructions 910 to cause the processor 904 to recursively divide a virtual volume which can hold a representation of the 3D object into octants, for example in a voxelization process.
  • the instructions 906 comprise instructions 912 to cause the processor 904 to, at each iteration, determine if any of the Boolean operations are redundant for each octant with respect to at least one component model and if so, remove the association between the Boolean operation and that component model associated with that octant.
  • This may for example comprise removing a portion of a Boolean tree as it relates to one or more component models, as set out above.
  • a removed portion of the Boolean tree may be replaced by the outcome of the Boolean operations for that portion.
  • the instructions 912 may comprise instructions to cause the processor 904 to determine, for each octant, if the outcome of a Boolean operation is invariant to sub-divisions of the octant and, if so, replacing the Boolean operation with its outcome.
  • the instructions 912 may comprise instructions to cause the processor 904 to determine if the categorisation of the sub-volume for a component model will affect the outcome of the Boolean operation and, if not, the instructions may cause the association between the Boolean operation and that component model to be removed.
  • the instructions 906 comprise instructions 914 to cause the processor 904 to combine corresponding octants of component models according to remaining Boolean operations associated with that octant when a threshold size of octant is reached.
  • the component models may be represented by mesh models. Determining the octree representation may be performed as described above, for example by subdividing nodes of the octree and determining attributes associated with each node as being black (entirely within the interior of the structure represented by the mesh model), white (entirely outside the structure represented by the mesh model) or grey (spanning a boundary of the mesh model). At the final level of the octree (i.e.
  • nodes which are grey may be amended to have black or white attributes according to a predefined rule, for example all grey nodes may be changed to black or white nodes, or nodes with a majority of their volume in the interior of the mesh model may be assigned a black attribute whereas nodes with a majority of their volume outside the mesh volume may be assigned a white attribute.
  • the instructions 906 may further comprise instructions to cause the processor 904 to determine if an initial set of Boolean operations comprise at least one difference operation and, if so, modify the set of Boolean operations and the component models to replace the difference operation with an intersection operation and modify the set of component models by inverting a component model which was to be subtracted in the difference operation.
  • this may comprise instructions to carry out the method of Figure 3.
  • the instructions 906 may comprise instructions to cause the processor 904 to carry out any or any combination of the blocks of Figure 1 , 3 or 5, or to act as the processing circuitry 702, 802 of Figure 7 or 8.
  • 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.
  • 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.
  • a processor or processing apparatus may execute the machine-readable instructions.
  • functional modules of the apparatus and devices such as the assessment module 704, 804, combining module 806 and/or control instructions module 808) 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.
  • 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.
  • 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.
  • 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.

Abstract

In an example, a method includes receiving, by processing circuitry, a plurality of component models of 3D objects to be combined using an associated first set of Boolean operations to determine a combined object model of a 3D object. A first volume to contain at least part of the combined object model may be defined, and the first set of Boolean operations may be associated therewith. A plurality of sub-volumes of the first volume for each component model may be categorised. Based on the categorisation of a sub-volume for a particular component model and the Boolean operation associated with that component model, it may be determined if any of the Boolean operations are redundant for a sub-volume. If so, the association between the Boolean operation and that component model may be removed to determine a sub-volume set of Boolean operations to be used to combine the associated component models for that sub-volume.

Description

BOOLEAN OPERATIONS
BACKGROUND
[001] Additive manufacturing techniques may generate a three-dimensional object through the solidification of a build material, for example on a layer-by-layer basis. In examples of such techniques, build material may be supplied in a layer-wise manner and the solidification method may include heating the layers of build material to cause melting in selected regions. In other techniques, methods such as chemical solidification and/or binding methods may be used.
BRIEF DESCRIPTION OF DRAWINGS
[002] Non-limiting examples will now be described with reference to the accompanying drawings, in which:
[003] Figure 1 is an example of a method for removing associations between Boolean operations and component models;
[004] Figure 2 is a schematic drawing illustrating how component models may be combined using Boolean operations;
[005] Figure 3 is an example method of processing a set of Boolean operations;
[006] Figure 4 is an example of how a set of Boolean operations may be simplified;
[007] Figure 5 is an example method of combining component models and determining control instructions for additive manufacturing;
[008] Figure 6 is an example of how a set of Boolean operations may be simplified;
[009] Figure 7 and 8 are examples of apparatus; and
[0010] Figure 9 is an example of a machine-readable medium associated with a processor. DETAILED DESCRIPTION
[0011] Additive manufacturing techniques may generate a three-dimensional (3D) object through the solidification of a build material. In some examples, the build material is a liquid. In other examples, the build material is a powder-like granular material, which may for example be a plastic, ceramic or metal powder. Build material may be deposited, for example on a print bed and processed layer by layer, for example within a fabrication chamber. Suitable polymeric build materials may comprise Polyamide materials (e.g., PA12, PA11 ), Thermoplastic Polyurethane (TPU) materials, Thermoplastic Polyamide materials (TPA), Polypropylene (PP) and the like.
[0012] In some examples, selective solidification is achieved through directional application of energy, for example using a laser or electron beam which may selectively fuse and/or cure a build material. In other examples, at least one print agent may be selectively applied to a granular 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 3D object to be generated. The data may be derived from a digital or data model of the object, e.g. object model data providing a data, or virtual, model of an object to be generated. This may involve a designer determining a data model of an object to be generated, for example using a computer aided design (CAD) application. 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 to which it has been applied heats up, coalesces and solidifies, upon cooling, to form a slice of the 3D object in accordance with the pattern.
[0013] A suitable fusing agent may be an ink-type formulation comprising carbon black. 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 other examples of additive manufacturing, other techniques may be used. For example, binding agents may be printed onto portions of a layer of a granular build material, or materials may be placed in a location to form part of the object.
[0015] To generate a 3D object from the model using an additive manufacturing system, the model data can be processed to define 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.
[0016] Figure 1 is an example of a method, which may comprise a method of assessing a set of Boolean operations to be carried out when combining component models of 3D objects (i.e. data representations of such 3D objects) to determine a combined object model (i.e. a data representation of the combined object). In this example, the method is carried out at least in part by processing circuitry, which may comprise at least one processor. In some examples, the combined object model is to represent an object as a plurality of contiguous, non-overlapping sub-volumes (e.g. voxels), which may also be referred to as a ‘spatial deconstruction’ of an object, or a voxel model as will be described in greater detail below, in which the term ‘voxel model’ is generally used. In some examples, the method may be carried out as part of a process of combining the component models which may originally be represented in terms of their surfaces (e.g. as a mesh model) while deriving a combined object model as a voxel model.
[0017] In some examples, voxel models may be used as a basis for defining control instructions for generating the object represented by the combined object model in additive manufacturing. In some examples, the combined object model may comprise a print resolution representation of the object model data, for example comprising a specification of at least one attribute (for example, present or absent (also referred to herein as interior or exterior), a color, a texture, a transparency, a conductivity, a strength, a porosity, a resilience, or the like) or print material (for example, a choice of print agent or build material) for each ‘voxel’ of an object and/or a surrounding volume (for example, a cuboid enclosing the object). A voxel may be thought of as a volumetric pixel, and each voxel may be a print addressable area, such that one voxel may be associated with different properties than a neighbouring voxel, and in some examples, voxels are defined at the print resolution of an apparatus. In some examples, each voxel is the same shape and/or size, for example comprising cuboids of the same size, whereas in other examples voxels may differ in size and/or shape.
[0018] In the example of Figure 1 , block 102 comprises receiving (e.g. from a memory, over a network or the like) a plurality of component data models of 3D objects to be combined using an associated first set of Boolean operations to determine a combined object model of a 3D object. In some examples, each Boolean operation is associated with at least two of the component models of the plurality of component models. For example, the Boolean operations may be associated with component models in a ‘Boolean tree’, as further set out below
[0019] For example, the combined object may initially be defined or described by a plurality of component models, each representing different features, or parts of the object. The set of Boolean operations may comprise one or more Boolean operations and may define how these component models are to be combined to define the complete object. Moreover, the relative location of the component models in a virtual space or volume may be defined. As the method described in Figure 1 may be iterative, the first set of Boolean operations may comprise a sub-volume set of Boolean operations defined in a previous iteration, as will be explained in greater detail below.
[0020] Combining component models in this way may be referred to as ‘Constructive solid geometry’ (CSG) and can allow a relatively complex object to be modelled using Boolean operations (e.g. union, intersection and/or difference operations) to combine simpler component models, which may also be referred to in the field of art as ‘primitive objects’, or simply ‘primitives’. In some examples, the Boolean operations are regularized Boolean operations, which may avoid the operations resulting in models which may be unmanufacturable.
[0021] In some examples, the combined object model may be an octree representation of at least part of the object to be manufactured in an additive manufacturing process as a plurality of nodes, for example a classical ‘octree representation’, in which the node representing the largest volume (the ‘root’ node) is described first, followed by its octants, follow by their octants and so on. While octrees are discussed herein, in principle other representations such as quadtree representations could be used.
[0022] Block 104 comprises defining a first volume to contain at least part of a combined object model and associating the first set of Boolean operations with the first volume. The first volume may be a virtual volume which may contain at least part of at least one virtual object modelled by the object data models.
[0023] For example, the first volume may comprise at least the volume of a boundary box or boundary volume which can fully enclose a virtual object corresponding to, or representing, the combined object model, once formed. In some examples, the first volume may comprise at least the volume of a boundary box or boundary volume which can fully enclose virtual objects corresponding to each of the component models having a specified relative position in space. The dimensions of this volume may for example be determined by reference to coordinates associated with the component models, and may for example comprise a cuboid having the maximum coordinates in each of, for example, X, Y and Z axes as determined by reference to the maximum coordinates of vertices in each axis specified in the component models, wherein the coordinates of the vertices may be specified relative to a common origin. In other examples, the dimensions of this volume may be determined in some other way, for example based on user input. Moreover, as the method described in Figure 1 may be iterative, the first volume may comprise a subvolume defined in a previous iteration.
[0024] Block 106 comprises categorising a plurality of sub-volumes of the first volume for each component model. For example, the plurality of sub-volumes may be categorised as (i) wholly interior to a component model, (ii) wholly exterior to that component model or (iii) partially overlapping with that component model, with respect to each component model. In other examples, the categorisation could be used to specify any binary attribute, for example, the presence or absence of a particular color, conductivity, elasticity, print agent, or the like. For example, each volume could be categorised as ‘red’ or ‘not red’ or ‘containing a red sub-region and a non-red sub-region’, or categorised as ‘conductive’ or ‘not conductive’ or ‘containing a conductive sub-region and a non-conductive sub-region’. In such examples, the component models may for example be used to specify a region of the combined object model having a particular color or other property.
[0025] In performing a categorisation, each component model may be thought of as virtually occupying a location within the first volume. The component models may overlap in the first volume, wherein the processing of overlapping portions depends on the specified Boolean operations.
[0026] Thus, in an example of an octree, once the volume which can fully contain the combined object model is defined, this can be divided into sub-volumes comprising its octants. For each of these octants, it may be assessed whether that octant is wholly interior to each of the component models, wholly exterior to each component model or overlaps a boundary (or surface) thereof.
[0027] In some examples herein, as a matter of terminology, where a sub-volume (e.g. an octant) is wholly interior to a component model, it may be specified as being ‘black’ with respect to that model. Where the sub-volume is wholly exterior, it may be specified as being ‘white’ with respect to that model. Where a boundary is crossed, i.e., if a surface of the object intersects the sub-volume, the sub-volume may be categorised as ‘grey’. This terminology arises because, in some additive manufacturing methods, the portions of an object to be solidified may be formed by printing a granular build material (which is generally white in colour) with a black printing agent such as carbon black, which preferentially absorbs energy applied to the surface, but the method is not limited to such additive manufacturing processes. Moreover, it will be appreciated that, if the Boolean operation is a difference operation, then the categorisation may be reversed.
[0028] To consider an example in which the component models represent virtual objects by means of a mesh of polygons representing the surfaces of the virtual objects, a mesh may have two distinct sides: an interior side and an exterior side, which may be identified by reference to a surface normal, itself defined with reference to the order in which the coordinates of the polygons forming the mesh are specified. The interior side may generally face towards the portion of space which is intended to represent solidified build material and the exterior side faces away from the portion of space which is intended to represent solidified material. A volume is formed within the mesh on the interior side, and if a sub-volume is within this volume, then it may be categorised as black i.e. an interior sub-volume. Similarly if a sub-volume is entirely outside of the interior volume, on the exterior side of the mesh, it may be categorised as white i.e. an exterior sub-volume.
[0029] In some examples, there are two possible categories for sub-volumes spanning a boundary: a ‘terminal grey’ sub-volume or an ‘intermediate grey’ sub-volume. A terminal grey sub-volume may be encoded when the sub-volume is at a print resolution, or is the smallest sub-volume encoded by a particular model. Intermediate grey sub-volumes may be divided until they are categorised as ‘black’ or ‘white’, or until a terminal grey subvolume is defined. Terminal grey sub-volumes may be treated differently than intermediate grey sub-volumes as a decision may be made as to whether to treat the sub-volume as a black or a white volume; e.g. in practical terms, the volume may be assigned to be either inside or outside the object. However, such terminal grey volumes may be omitted in some examples. The categorisation of a sub-volume may for example be expressed with two bits: 00 for a white volume, 01 for a black volume, 10 for an intermediate grey volume and 11 for a terminal grey volume.
[0030] Briefly, determining if the sub-volume is interior or exterior to the object may use a number of techniques. In some examples, it may be determined if a polygon of a mesh describing the component model intersects with the sub-volume. For example, this may comprise determining Separating Axis Theorem (SAT) separating planes, which can be represented as a list of unitary vectors in 3D. If no plane perpendicular to these vectors separates a polygon of a mesh from a sub-volume, then it may be determined that the polygon intersects the sub-volume, and therefore the object surface coincides with the sub-volume. In some examples determining whether a polygon intersects a sub-volume may comprise determining minimum and maximum projections of a surface polygon onto each direction of the SAT vectors. The minimum and maximum projections may be used, with the directions of the separating plane, to check the intersection of a sub-volume with a polygon by projecting the vertices of the sub-volume into the direction of the vectors and comparing with the minimum and maximum projections of the polygon. In other examples, testing for an intersection may comprise determining if the surface intersects by selecting an array of points within a sub-volume 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.
[0031] Once it has been determined that a sub-volume does not include a surface, techniques such as ray tracing may be used in determining if an octree is internal to a model or outside of it. For example, if a ray starting from a sub-volume intersects an odd number of surfaces, then it may be determined that the sub-volume is interior to the object, whereas if the number of surfaces is even, then this may indicate that the sub-volume is external to the object. Other techniques may be used in other examples.
[0032] This process may be referred to as ‘top down’ voxelization of the meshes, in that an initial larger volume is conceptually recursively divided into smaller volumes, and the voxel model progressively defined. It will be appreciated that, whilst the sub-volumes remain large, the number of ‘grey’ sub-volumes may be large but as the sub-volumes become smaller, these may be resolved into black and white categorisations.
[0033] As mentioned above, more generally, such encoding could be used to specify any binary attribute, for example, the presence or absence of a particular color, conductivity, elasticity, print agent, or the like.
[0034] Block 108 comprises determining if any Boolean operations of the first set are redundant for a sub-volume based on the categorisation of the sub-volume for at least one component model and the Boolean operation associated with that given component model, and if so the method proceeds to block 1 10, which comprises removing the association between the Boolean operation and that component model to determine a subvolume set of Boolean operations which is to be used to combine the component models associated therewith for that sub-volume (noting that the number of component models associated with the Boolean operations may have been reduced by the action of block 108). If none of the Boolean operations are found to be redundant, then the sub-volume set of Boolean operations may be the same as the first set associated with the first volume.
[0035] According to the methods set out herein, a Boolean operation may be redundant for a sub-volume if it can be evaluated or resolved fully and unambiguously based on the categorisations of the sub-volume for the respective component models and the Boolean operations applied to the component models.
[0036] For example, a Boolean operation, at least in so far as it relates to a particular component model, may be redundant with respect to a sub-volume if its outcome is irrelevant given a categorisation of a sub-volume. For example, if a sub-volume is categorised as ‘white’ (i.e., the sub-volume is exterior to a given component model) and the operation is a union operation, carrying out the operation with respect to that given component model will have no effect on the outcome of the union operation as it relates to other sub-volumes. Thus, to the extent that the union operation applies to the component model for which the sub-volume is white, this may be removed from the set of Boolean operations. Similarly, if the sub-volume is categorised as interior, or black, and the operation is an intersection, the black sub-volume will not change as a result of the intersection operation, and thus consideration of the component model for which the subvolume is categorised as ‘black’ may be redundant.
[0037] In other words, in an example for which three component models, X, Y and Z, are to be combined in a union operation, it may be the case that a particular sub-volume has been categorised as ‘grey’, or ‘boundary’ with respect to the component models X and Y and white with respect to Z. This may be reformulated as a union operation between X and Y, as the categorisation as white with respect to Z will not change the outcome of the union operation. In an example in which the three component models are to be combined using an intersection operation, and a particular sub-volume has been categorised as ‘grey’, or ‘boundary’ with respect to the component models X and Y and black with respect to Z, this may be reformulated as an intersection operation between X and Y, as the categorisation as black with respect to Z will not change the outcome of the intersection operation. In both cases, the Boolean operation, as it relates to Z, may be removed from the set, and thus Z need not be considered when further characterising that sub-volume
[0038] In another example, an operation may be determined to be redundant if a further subdivision would not impact the result of an operation. For example, if the Boolean operation is a union operation between a first component model A, with respect to which a sub-volume has been classified as an interior (black) sub-volume and a second component model B, it may be determined that the outcome of the Boolean operation with respect to that sub-volume will always be interior to the model (black). Indeed, the category of the sub-volume for the other component model need not be known to make this determination. Thus, even if the sub-volume is categorised as grey with respect to the component model B, the result of the operation is now determined. Similarly, if a Boolean operation is an intersection between an exterior sub-volume and any other sub-volume, it may be determined that the outcome will always be exterior to the model
[0039] This may allow the consideration of sub-volumes of the sub-volume to be terminated. For example, as set out above, grey sub-volumes would usually be recursively divided until a categorisation of black or white, or the smallest voxel size under consideration was reached. However, in this case, the result of the Boolean is known, and thus definition of the further sub-volumes is redundant. Generally, removing the association between the Boolean operation and a component model with may also remove that component model with respect to that Boolean operation for consideration in a subsequent iteration of the method.
[0040] In this way, some Boolean operations may be carried out as the octrees of the various component models are defined. This means that they may be carried out once for a larger sub-volume rather than repeatedly full smaller sub-volumes once the octree is complete and/or may allow further definition of ‘grey’ sub-volumes to be disregarded. In such examples, the Boolean operation may be removed in its entirety, along with any associations between the Boolean operation and component models and may be replaced in the set of Boolean operations associated with the remaining component models by the outcome of the operation (for example, in the above examples, the result may be ‘white’ or ‘black’).
[0041] In other words, in some examples, some Boolean operations may be evaluated during construction of the voxel models of the component models in order to reduce the number of component models and Boolean operations associated with a sub-volume. This may for example be described as simplifying a Boolean tree for each sub-volume, for example by removing portions thereof, or replacing a portion thereof with the output of a resolvable Boolean operation.
[0042] Such assessment of the set of Boolean operations for a sub-volume may be carried out recursively for a given sub-volume until no further redundant operations are identified. This may be repeated for each sub-volume for which an association between Boolean operations and component models exist, until all Boolean operations are resolved and/or a threshold sub-volume size is reached.
[0043] Applying 3D Boolean operations during the construction of such a voxel model avoids performing the 3D Boolean operations on surface models, for example to combine meshes, which can be complex. In addition, the method of Figure 1 seeks to ‘prune’, or reduce, the number of component models and operations associated with each subvolume. This in turn means all Boolean operations need not be carried out at the point that each print resolution voxel is defined. Moreover, in some examples, it may avoid further division of at least some ‘grey’ sub-volumes for which an outcome of a Boolean operation is already unambiguously determined.
[0044] The method may then loop back to sub-divide further sub-volumes using the subvolume set of Boolean operations which is to be used to combine the associated component models (which may have been reduced by the method of Figure 1 ), for example until the set of Boolean operations as a whole has been unambiguously resolved, and/or until sub-volumes for which the set of Boolean operations as a whole have not been unambiguously resolved reach an intended minimum size. For example, in a subsequent iteration, the sub-volume considered in block 108 may provide the first volume described in relation to block 104, and the remaining Boolean operations and associated component models defined by block 108 may provide the plurality of component models of 3D objects to be combined using an associated first set of Boolean operations in relation to block 102.
[0045] Figure 2A-C show a conceptual representation of the process of combining component models in two dimensions. In this example, three component models, respectively modelling a square 202a, a triangle 202b and circle 202c and shown individually in Figure 2A, are to be combined. In particular, a combined shape 208 shown in Figure 2C is to be formed of the intersection of the triangle 202b and the square 202a and the union of the intersection and the circle 202c, when placed in the arrangement shown in Figure 2B. Figure 2B also shows a volume, representative of the first volume 204, which encloses a space to be occupied by the combined object model. Indeed, the first volume encloses a space which is to be occupied by all of the component models and thus includes all of the coordinates associated with each of the models.
[0046] In this example, the first volume 204 is marked into sub-volumes, in this example quadrants, 206a - d. Each of these quadrants may be categorised with respect to each of the component models. For example, quadrants 206a, c and d are boundary (grey) subvolumes with respect to the square 202a, whereas quadrant 206b is entirely interior to the square 202a and thus may be categorised as a black sub-volume with respect to the square 202a. However, this same sub-volume, quadrant 206b, is white with respect to the triangle component model 202b.
[0047] As the operation to be performed between the triangle component model 202b and the square 202a is an intersection operation, the operation is redundant with respect to the top right quadrant 206b, as this quadrant is white with respect to the triangle component model. For this quadrant 206b, the intersection operation may be resolved, as the white categorisation of the quadrant with respect to the triangle 202b means there can be no intersection. The outcome of that Boolean operation is therefore unambiguously determined to be ‘white’ and further sub-divisions will not affect this outcome.
[0048] Similarly, the bottom left quadrant 206c is white with respect to the circle 202c. As the Boolean operation to be performed with respect to the circle is a union operation, this union operation need not be carried out in relation to the bottom left quadrant 206c as the white categorisation means that the circle 202c will not contribute to the union within that quadrant 206c and thus the set of Boolean operations and component models associated with this sub-volume may be reduced to just the intersection operation between the square 202a and the triangle 202b.
[0049] It may be appreciated that, as the sub-volumes 204a-d are further divided, the associations between Boolean operations associated with the sub-volumes may be reduced where they are redundant to the defined volume.
[0050] Figure 3 shows another example of a method, which may precede the method of Figure 1 (although in principle it may be employed at any time during iterations of the method of Figure 1 ). [0051] In this example, block 302 comprises receiving a preliminary set of Boolean operations which are to be used to combine component models. For example, the set of Boolean operations may comprise union operations, intersection operations and/or difference operations.
[0052] Block 304 comprises determining if the preliminary set of Boolean operations comprises any difference operations. If so, the method comprises, in block 306, transforming the set of Boolean operations to replace difference operations with intersection operations. This may provide the first set of Boolean operations as described in relation to Figure 1.
[0053] Moreover, the method further comprises in block 308 inverting at least one component model associated with the difference operations such that the logical outcome of applying the preliminary set of Boolean operations to an original set of component models is the same as that of applying the first set of Boolean operations to a modified set of component models comprising at least one inverted component model. This may comprise inverting a, or at least one, or any, component model which was to have been subtracted in a difference operation. Inverting a component model to determine an inverted component model may comprise designating an interior volume of the component model as an exterior volume and designating an exterior volume of the component model as an interior volume.
[0054] In other words, where an object was previously defined, and was to be subtracted from other component models (for example, a cylinder may be subtracted from a cuboid block to leave a hole), then the difference operation may be replaced with an intersection operation and the model inverted such that all space that was originally exterior to the cylinder is now modelled as interior to the component model whereas the previously solid body of the cylinder is modelled as empty space. As there can now be no intersection between the cuboid block and the inverted cylinder model, this will result in the cylindrical hole being formed.
[0055] Inverting a component model may comprise redefining exterior surfaces of polygons making up the component model as interior surfaces of polygons. In other examples, the order of the vertices of each polygon may be changed, as this may define which face is internal and which is external. [0056] By redefining the difference operations as intersections with inverted versions of the component models, the number of operations in the set of Boolean operations may be reduced. Moreover, as is further discussed in relation to Figure 4, this may facilitate simplification of the set of Boolean operations as union and intersection operations are commutative and associative.
[0057] An example of such a method is shown in Figure 4. Boolean tree 400 is an example of a set of Boolean operations, set out as a Boolean operation tree, wherein the tree 400 may be processed using the methods of Figure 3 to form the Boolean tree 402. Moreover, this tree may be further simplified to provide the single level tree 406.
[0058] A Boolean operation tree defines a series of Boolean operations to be performed to combine component models. In the Figures, Boolean operations are shown as circles and the component models to be combined are shown within squares, referred to herein as nodes of the Boolean tree. It may be noted that these squares, or nodes, may represent the first volume, or a sub-volume thereof, and the portion of each of the component models A to C occupying that volume/sub-volume. In the example of Figure 3, the nodes correspond to the first volume including, respectively, a first component model A, the second component model the and a third component model C.
[0059] In summary then, a Boolean tree provides a logical structure illustrating how the Boolean operations are performed on the nodes to combine the component model. Generally, to evaluate a tree to carry out the Boolean operations, the lowest level of nodes may be combined using the Boolean operator directly above them. This is repeated until the tree is evaluated.
[0060] In the example of a preliminary Boolean tree 400, nodes A, B and C are combined using the subtract (-) and union (U) operations. A union operation is performed on B and C, and the result of this operation is subtracted from A. For example if A={1 ,0} B={0,0} and C={1 ,0} the union operation is evaluated as B u C = {0,0} u {1,0} = {1,0}. This result may then be subtracted from A: A- B u C) = {1,0}- {1,0} = {0,0}.
[0061] For example, the preliminary Boolean tree 400 has two levels and may be transformed to provide the tree 402. Mathematically, a subtraction operation is equivalent to performing an intersection operation with the complement, or inversion, of the second node, i.e. A — B = A r B_, wherein n indicates an intersection operation and B is the complement of B (i.e. represents an inverted version of the model B in which exterior volumes are redefined as interior volumes, and vice versa). Therefore a node, n = {1}, the complement is n = {0}, and when is n = {0}, the complement is n = {1}.
[0062] In this example, further processing may be carried out on the Boolean tree 402 to further simplify it. Processing of the Boolean tree in this example may be generalised by applying the following rules. Firstly, it is noted that, according to De Morgan’s law, the complement of the union of two sets is the same as the intersection of their complements and the complement of the intersection of two sets is the same as the union of their complements. This can be equivalently expressed A u B = A n B and A n B = A u B. Thus, the portion 404 of the second tree 402 marked in dotted lines comprises an intersection operation in place of the union operation shown in the first tree 400.
[0063] The result of this processing is shown in the Boolean tree 402.
[0064] Then, the tree may also be simplified using the associative properties of the union or intersection operations. By virtue of such properties, when an operation X has an operation Y as operand, and both nodes represent the same operation (union or intersection), operation Y may be deleted and its operands added as children of X. In other words, the levels in the two-level tree 402 may be combined as the combined object model is an intersection of A and the intersection of B and C, which may alternatively be described as an intersection of ,_B and C providing the one-level tree 406. A similar operation could be carried out if a union operation had another union operation as its operand.
[0065] Figure 5 is an example of a method, which may comprise a computer implemented method of combining component models to form a combined object model. In some examples the component models are mesh models, which may have been subjected to pre-processing such that they are ready for voxelization. For example, the meshes may have been inspected for errors and/or any identified errors (for example, holes in the mesh or mesh errors such as auto-intersected surface polygons, or degenerate polygons) may have been repaired. Moreover, a determination of which face of a mesh polygon is an inside face, and which is the outside face (e.g. a determination of a vertex and/or surface normal) may have been carried out. In some examples, an object model may be inspected to determine if it describes features which are too small to be reproduced reliably. Such features may be increased in size, or highlighted to a user. In some examples the operation(s) may comprise determining displacement vectors, wherein displacement vectors are vectors which may be used for implementing displacement maps. Displacement maps may be used to create a modified geometry by projecting a heightfield texture onto a polygon of a mesh model, or any other surface, and generating the modified geometry along some displacement vectors, using the values of the texture. Other preprocessing operations in relation to converting meshes into volumetric, or voxel, models may also be carried out in some examples.
[0066] The method comprises, in block 500, receiving (e.g. at a processor, from a memory, over a network or the like) a plurality of component data models of 3-D objects which are to be combined using a first set of Boolean operations to determine the combined object model of the 3-D object. In some examples, the first set of Boolean operations may be determined as set out in the method of Figure 3. In other examples, the first set of Boolean operations may be provided with the component models. In some examples, the relative positions for the component models to be combined within a virtual volume may also be provided. For example, the component models may have any of the characteristics described above in relation to Figures 1 and 2.
[0067] Block 502 comprises defining a first volume. In this example, the first volume is a virtual cuboid volume defined so as to contain the component data models in the respective relative positions in which they are to be combined. In some examples, there may also be a buffer volume provided around the various component data models (or ‘virtual objects’) in their relative positions. The first volume has the first set of Boolean operations associated therewith. Defining the first volume may comprise defining the first volume as set out in relation to block 104 above. In other examples, the first volume may be a previously defined sub-volume, and the first set of Boolean operations may be a subvolume set of Boolean operations defined for example by the method of Figure 1 or by the method now described in relation to Figure 5.
[0068] Block 504 comprises defining a plurality of sub-volumes of the first volume. In an example, this may comprise defining octants of the first volume, i.e. dividing the first volume into eight equal portions. This first volume may be categorised as ‘grey’ or a boundary volume as, by definition, it includes the interior of a component model, and unless the component objects comprise an object having the exact dimensions of the first volume, the first volume will comprise at least a portion which is exterior to each of the component models. [0069] Block 506 comprises, for each sub-volume and for each component model, categorising the sub-volume with respect to that model. In this example, this allows the sub-volumes to be categorised as one as interior, exterior or boundary sub-volumes for each component model and for each sub-volume, as set out above. This may be thought of as an early stage in determining an octree for each component model. At this point, two levels of an octree for each of the component models may thereby be defined.
[0070] Block 508 comprises determining if there are any remaining unresolved Boolean operations. Assuming this is the case, then the method proceeds with blocks 510 and 514, both of which provide methods for determining, for each sub-volume, based on the category of the sub-volume for a component model and the Boolean operations associated with that component model, whether the Boolean operation is redundant for that subvolume, and therefore provide examples of block 108. In more detail, in this example, block 510 comprises determining if the categorisation of the sub-volume for a component model will affect the outcome of the Boolean operation. If not, the association between the Boolean operation and that component model is removed in block 512.
[0071] For example, if an operation is a union between a particular model, wherein the sub-volume is categorised as external to the particular model and any other model for which the categorisation may be ‘boundary’, the association between the Boolean operation and the particular model may be deleted for that sub-volume.
[0072] As a further example, if an operation is an intersection between a particular model, wherein the sub-volume is categorised as internal to the particular model and any other model for which the categorisation may be ‘boundary’, the association between the Boolean operation and the particular model may be deleted for that sub-volume.
[0073] The method then proceeds in block 514 by determining, for each sub-volume and based on (i) the categorisation of the sub-volume for at least one component model to be combined with another component model and (ii) the Boolean operation to be used in combining the component models, if the outcome of the Boolean operation is invariant to sub-divisions of the sub-volume and, if so, block 516 comprises replacing the Boolean operation with its outcome in the sub-volume set of Boolean operations. Otherwise, the method may proceed directly to block 518.
[0074] For example, if the Boolean operation is a union operation between an interior subvolume and any other sub-volume, it may be determined that the outcome will always be interior to the model. Therefore, the union operation may instead be represented as an interior sub-volume in a set of Boolean operations (or a Boolean tree) for that sub-volume. As a further example, if the Boolean operation is an intersection operation between an exterior sub-volume and any category of sub-volume, it may be determined that the outcome will always be exterior to the model. Therefore, the union operation may instead be represented as an exterior sub-volume in a set of Boolean operations (or a Boolean tree) for that sub-volume.
[0075] Either of blocks 512 or 516 may result in at least one component model no longer being associated with the set of Boolean operations. In such examples, further sub-division of sub-volumes with respect to those component models may cease. In other words, where part of a Boolean tree has been unambiguously resolved, there may be no need to further sub-divide sub-volumes, and generation of a voxel representation of a component model, such as an octree may terminate with respect to that model, as it will provide no further information which is pertinent to the combined object model. In particular, this may be the case even though a categorisation for a particular sub-volume for a particular model was a boundary categorisation.
[0076] In this way, some Boolean operations may be carried out as the octrees of the various component models are defined. This means that they may be carried out once for a larger sub-volume rather than repeatedly for smaller sub-volumes once the octrees of the component models are complete. Moreover, redundant definition of portions of the octrees for component models may be avoided.
[0077] In practice, the method may iteratively loop through blocks 508-514 until no further simplification is identified.
[0078] Block 518 comprises determining if any remaining boundary (‘grey’) sub-volumes associated with a Boolean operation have a size which is greater than a threshold size. In the event that a sub-volume size is greater than the threshold size, block 520 comprises subdividing each sub-volume, and the method loops back to block 506. This adds another level to the octree. In this next loop, however, the set of Boolean operations associated with the component models are those resulting from the processing of block 510-516 for the sub-volume being divided. Thus the number of operations and/or the number of component models may be reduce compared to a previous operation. It may be noted that further sub-division of white or black sub-volumes may not be carried out, or may be trivial, as further sub-divisions simply inherit the categorisation of their parent.
[0079] However, if the size of all sub-volumes match the threshold size, which may for example relate to a print resolution size or minimum voxel size as discussed above, then the method proceeds to block 522, which comprises evaluating any remaining sub-volume set of Boolean operations for each sub-volume of the predetermined size to determine if that sub-volume is (i) an interior sub-volume, which is interior to the combined object model, (ii) an exterior sub-volume, which is exterior to the combined object model or (iii) a boundary sub-volume which spans a combined object model boundary. It may be noted that, in the event that there are no unresolved Boolean operations (block 508) such that there is just one remaining component model associated with the sub-volume then the method may skip blocks 510 to block 518. However, if that sub-volume is ‘grey’ with respect to that one remaining component model then further definition of the octree for that component model may continue in order to define the parts of the object which are to be solidified. In such a case, once such sub-volumes reach the threshold size, there will be no remaining Boolean operations, and thus block 522 may also be skipped.
[0080] As mentioned above, in some examples, the third category, i.e. that a sub-volume of the minimum size is a boundary sub-volume, may not be available. In such examples, a boundary sub-volume of the minimum size may be assigned to one of the categories of internal or external for example according to a predetermined rule (e.g. all boundary subvolumes of the minimum size are considered either internal or external), randomly, or based on a volumetric assessment such that if more of the sub-volume is internal than external, it is designated an internal sub-volume, and vice versa, or in some other way. In other examples, the definition of a sub-volume of the threshold size as a boundary subvolume may result in particular print instructions being associated therewith, such as, for example, a reduced amount of fusing agent being applied in relation to a portion of build material corresponding to that sub-volume.
[0081] The outcome at the end of block 522 is a set of voxels representing the combined object. Each voxel will be associated with a categorisation as being internal to the combined object, external to the combined object or, in some examples, a boundary voxel. Although a voxel-wise evaluation of any remaining Boolean operations may be carried out at block 522, the number of Boolean operations to be performed in respect to each voxel, and/or the number of component models to be combined by such operations may be considerably reduced when compared to an initial set of Boolean operations.
[0082] Block 524 comprises generating control instructions for use in controlling an additive manufacturing apparatus to generate the combined object according to the categorisations of the sub-volumes of the predetermined size. For example, these may comprise instructions to place fusing agent at locations of the build material corresponding to voxels which are designated as interior to the object and not placing such agent, or placing a fusing reduction agent at locations corresponding to voxels which are marked as being external to the object. Alternatively, these may comprise instructions to cause a directed energy source to provide energy in a location corresponding to a voxel which is determined to be internal to the combined object. In other examples, other processes such as the placement of build material, binding agents or other reagents may be determined based on the categorisations of the voxels, i.e. the sub-volumes of the threshold size. In some examples, the method may then proceed to include generation of the objects.
[0083] Figure 6 shows an example of the operations to simplify the set of Boolean operations discussed in relation to blocks 510 - 516 of Figure 5. In this example, set of Boolean operations and the associated component models A, B, C and D are represented in a Boolean tree 600. Each square node represents the first volume, or a common subvolume at any level within the octrees and has a label categorising the node as black, white or grey with respect to each of the four component models, wherein the categorisation may have been carried out as described in relation to block 106 or 506. Two rules (which may be applied recursively) may be applied to the tree to simplify the tree.
[0084] As can be seen, in this example the sub-volume contains a boundary, or surface, of component models A and B (categorised as ‘grey’), but is wholly external to component models C and D (categorised as ‘white’).
[0085] In the tree 600, the second level of the tree is represented by the intersection of two models B and C. In this example, in contrast to the order of operation shown in Figure 5, the operation described in relation to blocks 514 and 516 is shown as a first simplification, represented as a second tree 602. As noted above, for this particular sub-volume, the categorisation of this sub-volume with respect to the component model C is white: i.e. the sub-volume is entirely exterior to the component model C. Thus, there can be no intersection between C and B and no further subdivision of the sub-volume will change this. Therefore, as shown in the second tree 602, this Boolean operation is replaced by its outcome, in this example an operand, or categorisation ‘white’ (or exterior). Therefore, the partially simplified central tree 602 comprises a “white” where the intersection operation was located. Moreover, no further specification of models B or C (e.g. further levels in an octree) are needed to fully specify the combined object model.
[0086] Moreover, in a second stage, it is noted that a union operation is to be carried out in relation to a white sub-volume, i.e. the sub-volume as categorised for component model D. Viewed another way, the sub-volume is entirely external to component model D. Thus, this operation is redundant with respect to the combination. The association of the Boolean operation with the component model D in this sub-volume, may be deleted. Further, it may be noted that this leaves a union between a grey node and a white node defined in the first stage. As a white node will not add any volume to the union, the white node may also be deleted, leaving a tree in which all Boolean operations have been removed (‘tree’ 604 is therefore simply a categorised sub-volume). This therefore demonstrates an example of the process carried out in blocks 510 and 512.
[0087] Thus, in respect of this sub-volume, further sub-divisions (e.g. octree levels) may be evaluated for component model A, as just component model A will contribute to the combined object model.
[0088] This may result in an early evaluation of the combination of component models with respect to this sub-volume. Indeed, in this case, once the threshold sub-volume size is reached, there are no remaining Boolean operations in the set of Boolean operations to evaluate at all. Of course, this is simply by way of example and may not be the case for all sub-volumes.
[0089] In this way a plurality of data structures (e.g. octrees), each representing a component model of the modelled object may be obtained and the plurality of data structures are combined by performing Boolean operations at the appropriate level during their formation. In some examples, as set out above, the models may be at least partially combined during formation of the octrees and/or formation of the octrees may be curtailed, even where a boundary sub-volume is described (for example, as in the case of component model B in the example of Figure 6), once a Boolean operation is fully resolved.
[0090] Figure 7 is an example apparatus 700, which may be used in some additive manufacturing operations, for example in combining component models into a combined object model as described above. The apparatus 700 comprises processing circuitry 702, the processing circuitry 702 comprising an assessment module 704. In some examples, the processing circuitry 702 may carry out any or any combination of the blocks of Figures 1 , 3 or 5.
[0091] In an example, in use of the apparatus 700, the assessment module 704 iteratively assesses a Boolean tree comprising at least one Boolean operation associated with a plurality of component virtual objects (which may be modelled by component data models as described above) which are to be combined within a first volume.
[0092] The assessment module 702 categorises a plurality of sub-volumes of the virtual first volume for each component virtual object. For example, each sub-volume may be categorised as one of (i) an interior sub-volume, which is interior to the component model (or ‘black’), (ii) an exterior sub-volume, which is exterior to the component virtual object (or ‘white’), or (iii) a boundary sub-volume which spans the component virtual object boundary (or ‘grey’). In other examples, the sub-volumes may be categorised based on some other property.
[0093] The assessment module 704 further determines if any of the Boolean operations of the tree are resolvable, at least in part, (i.e. redundant, as described above) for a subvolume based on the categorisation of the sub-volume for a component virtual object and the Boolean operation associated with that component virtual object, for example as discussed above in relation to Figures 1 , 2, 5 and 6. When a Boolean operation is determined to be resolvable, the assessment module 704 removes a portion of the Boolean tree associated with the resolvable Boolean operation to determine a sub-volume Boolean tree for that sub-volume. In this example, the assessment module 704 repeats the assessment for further sub-divisions of at least one sub-volume using the sub-volume Boolean tree for that sub-volume, for example until a threshold sub-volume size is reached or until all the Boolean operations are resolved.
[0094] Figure 8 shows an example of another apparatus 800 comprising processing circuitry 802, wherein the processing circuitry comprises an assessment module 804, wherein the assessment module 804 comprises the features of the assessment module 704 described above. In addition, the processing circuitry comprises a combining module 806 and a control instructions module 808, and the apparatus 800 further comprises additive manufacturing apparatus 810. [0095] In use of the apparatus 800, the combining module 806 combines the component virtual objects defined at a threshold sub-volume size, when the Boolean tree comprises unresolved Boolean operations, according to those remaining operations. This may allow the processing circuitry 802 to determine a data structure comprising contiguous, nonoverlapping sub-volumes (e.g. octrees) representing the combined object model. Therefore, creating the combined object model comprises performing Boolean operations on data models representing the component virtual objects.
[0096] In use of the apparatus 800, the control instructions module 810 determines instructions to control the additive manufacturing apparatus 810 to generate a 3D object based on the combined component virtual objects. In some examples, control instructions are determined from the derived object model data modelling the object. For example, the combined component virtual objects may be ‘sliced’ into slices corresponding to each layer to be generated in additive manufacturing, the portions of the layer which are to be solidified may be identified within the slice based on the categorisation of the voxels, and control instructions generated therefrom.
[0097] In use of the apparatus 800, the additive manufacturing apparatus 810 generates the object based on the control instructions. The additive manufacturing apparatus 810 may generate objects in a layer-wise manner by selectively solidifying portions of layers of build material. The selective solidification may in some examples be achieved by selectively applying print agents, for example through use of ‘inkjet’ liquid distribution technologies, and applying energy, for example heat, to each layer using fusing energy source(s). The control instructions may describe where print agent should be placed on a layer of build material in order to generate a layer of the object. For example, print material coverage amounts may be determined, and then the placement of drops of print agents may be determined using halftoning techniques or the like to provide a determined print agent coverage amount.
[0098] In use of the additive manufacturing apparatus 810, energy may be provided by fusing energy sources to cause the build material to which fusing agent has been applied to fuse. The additive manufacturing apparatus 810 may comprise other additional components not described herein, for example a fabrication chamber, at least one print head for distributing print agents, a build material distribution system for providing layers of build material and the like. [0099] In other examples, other types of additive manufacturing may be used, such as fused deposit modelling, directed energy techniques such as laser sintering, stereolithography, use of binding or curing agents, or the like.
[00100] In some examples, the processing circuitry 702, 802 may carry out any or any combination of the blocks of Figure 1 , 3 or 5.
[00101] Figure 9 shows an example of a tangible machine readable medium 902 in association with a processor 904. The machine readable medium 902 comprises, or stores, instructions 906 which, when executed by the processor 904 cause the processor to carry out actions.
[00102] In this example, the instructions 906 comprise instructions 908 to cause the processor 904 to receive (e.g. from a memory, or over a network or the like) a representation of component models, wherein the component models are associated with Boolean operations, and the component models are to be combined by application of the Boolean operations to determine an octree representation of a 3D object to be generated by an additive manufacturing apparatus.
[00103] In this example, the instructions 906 comprise instructions 910 to cause the processor 904 to recursively divide a virtual volume which can hold a representation of the 3D object into octants, for example in a voxelization process.
[00104] In this example, the instructions 906 comprise instructions 912 to cause the processor 904 to, at each iteration, determine if any of the Boolean operations are redundant for each octant with respect to at least one component model and if so, remove the association between the Boolean operation and that component model associated with that octant. This may for example comprise removing a portion of a Boolean tree as it relates to one or more component models, as set out above. In some examples, a removed portion of the Boolean tree may be replaced by the outcome of the Boolean operations for that portion.
[00105] For example, the instructions 912 may comprise instructions to cause the processor 904 to determine, for each octant, if the outcome of a Boolean operation is invariant to sub-divisions of the octant and, if so, replacing the Boolean operation with its outcome. In some examples, the instructions 912 may comprise instructions to cause the processor 904 to determine if the categorisation of the sub-volume for a component model will affect the outcome of the Boolean operation and, if not, the instructions may cause the association between the Boolean operation and that component model to be removed.
[00106] In this example, the instructions 906 comprise instructions 914 to cause the processor 904 to combine corresponding octants of component models according to remaining Boolean operations associated with that octant when a threshold size of octant is reached.
[00107] The component models may be represented by mesh models. Determining the octree representation may be performed as described above, for example by subdividing nodes of the octree and determining attributes associated with each node as being black (entirely within the interior of the structure represented by the mesh model), white (entirely outside the structure represented by the mesh model) or grey (spanning a boundary of the mesh model). At the final level of the octree (i.e. the level where the nodes represent the smallest physical volumes modelled, and in some examples where the nodes correspond to voxels of an additive manufacturing process) nodes which are grey may be amended to have black or white attributes according to a predefined rule, for example all grey nodes may be changed to black or white nodes, or nodes with a majority of their volume in the interior of the mesh model may be assigned a black attribute whereas nodes with a majority of their volume outside the mesh volume may be assigned a white attribute.
[00108] In some examples, the instructions 906 may further comprise instructions to cause the processor 904 to determine if an initial set of Boolean operations comprise at least one difference operation and, if so, modify the set of Boolean operations and the component models to replace the difference operation with an intersection operation and modify the set of component models by inverting a component model which was to be subtracted in the difference operation. For example, this may comprise instructions to carry out the method of Figure 3.
[00109] In other examples, the instructions 906 may comprise instructions to cause the processor 904 to carry out any or any combination of the blocks of Figure 1 , 3 or 5, or to act as the processing circuitry 702, 802 of Figure 7 or 8.
[00110] 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.
[00111] 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.
[00112] 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 (such as the assessment module 704, 804, combining module 806 and/or control instructions module 808) 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.
[00113] 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.
[00114] 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. [00115] 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.
[00116] 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.
[00117] 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.
[00118] The features of any dependent claim may be combined with the features of any of the independent claims or other dependent claims.

Claims

1 . A method comprising, by processing circuitry: receiving a plurality of component models of 3D objects to be combined using an associated first set of Boolean operations to determine a combined object model of a 3D object; defining a first volume to contain at least part of the combined object model and associating the first set of Boolean operations with the first volume; categorising a plurality of sub-volumes of the first volume for each component model; determining if any of the Boolean operations of the first set of Boolean operations are redundant for a sub-volume based on the categorisation of the sub-volume for a particular component model and the Boolean operation associated with that component model and if so, removing the association between the Boolean operation and that component model to determine a sub-volume set of Boolean operations to be used to combine the component models associated therewith for that sub-volume.
2. A method as claimed in claim 1 wherein determining if a Boolean operation of the first set is redundant comprises: determining if the categorisation of the sub-volume for a component model will affect the outcome of the Boolean operation and, if not, removing the association between the Boolean operation and that component model.
3. A method as claimed in claim 1 wherein determining if a Boolean operation of the first set is redundant comprises: determining, for each sub-volume and based on (i) the categorisation of the subvolume for at least one component model to be combined with another component model and (ii) the Boolean operation to be used in combining the component models, if the outcome of the Boolean operation is invariant to sub-divisions of the sub-volume and wherein, if the outcome of the Boolean operation is invariant to sub-divisions of the subvolume, removing the association between the Boolean operation and the associated components model comprises replacing the Boolean operation and the associated component models with the outcome of the Boolean operation in the sub-volume set of Boolean operations.
4. A method as claimed in claim 1 further comprising receiving a preliminary set of Boolean operations to combine the plurality of component models; determining if the preliminary set of Boolean operations comprises a difference operation and, if so: transforming the set of Boolean operations to replace the difference operation with an intersection operation, wherein the first set of Boolean operations comprises the transformed set of Boolean operations; and inverting a component model associated with the difference operation such that the logical outcome of applying the preliminary set of Boolean operations to an original set of component models is the same as that of applying the first set of Boolean operations to a modified set of component models comprising at least one inverted component model.
5. A method according to claim 4 wherein inverting a component model to determine an inverted component model comprises designating an interior volume of the component model as an exterior volume and designating an exterior volume of the component model as an interior volume.
6. A method according to claim 1 wherein the categorising comprises categorising each sub-volume as one of (i) an interior sub-volume, which is interior to the component model, (ii) an exterior sub-volume, which is exterior to the component model or (iii) a boundary sub-volume which spans the component model boundary wherein the method further comprises: dividing boundary sub-volumes into further sub volumes; and repeating the categorising, determining and removing processes for at least one sub-volume using the sub-volume set of Boolean operations and the associated component models in place of the first set of Boolean operations.
7. A method according to claim 6 comprising repeating the dividing, categorising, determining and removing processes for boundary sub-volumes until a predetermined size of sub-volume is determined using the sub-volume set of Boolean operations of the divided sub-volume in the determining and removing processes, then evaluating any remaining sub-volume set of Boolean operations for each sub-volume of the predetermined size to determine if that sub-volume is (i) an interior sub-volume, which is interior to the combined object model, (ii) an exterior sub-volume, which is exterior to the combined object model or (iii) a boundary sub-volume which spans a combined object model boundary.
8. A method as claimed in claim 7 further comprising determining control instructions for controlling an additive manufacturing apparatus to generate the combined object according to categorisations of sub-volumes of the predetermined size.
9. An apparatus comprising processing circuitry, the processing circuitry comprising: an assessment module to iteratively assess a Boolean tree comprising at least one
Boolean operation associated with a plurality of component virtual objects which are to be combined by the Boolean operations within a first volume by: categorising a plurality of sub-volumes of the first volume for each component virtual object; determining if any of the Boolean operations of the Boolean tree are resolvable for a sub-volume based on the categorisation of the sub-volume for a component virtual object and the Boolean operation associated with that component virtual object; when a Boolean operation is determined to be resolvable, removing a portion of the Boolean tree associated with the resolvable Boolean operation to determine a subvolume Boolean tree for that sub-volume; and repeating the assessment for further sub-divisions of sub-volumes using the subvolume tree of Boolean operations for each sub-volume.
10. An apparatus according to claim 9, the processing circuitry comprising: a combining module to, when the Boolean tree comprises unresolved Boolean operations, combine the component virtual objects defined at a threshold sub-volume size.
11. An apparatus according to claim 10, the processing circuitry further comprising: a control instructions module, for determining control instructions to control an additive manufacturing apparatus to generate a 3D object based on the combined component virtual objects.
12. An apparatus according to claim 11 further comprising additive manufacturing apparatus to generate the 3D object using the control instructions.
13. A machine-readable medium comprising machine-readable instructions which, when executed by a processor, cause the processor to: receive a representation of component models, wherein the component models are associated with Boolean operations, and the component models are to be combined by application of the Boolean operations to determine an octree representation of a 3D object to be generated by an additive manufacturing apparatus; recursively divide a virtual volume which can hold a representation of the 3D object into octants; at each iteration, determine if any of the Boolean operations are redundant for each octant with respect to at least one component model and if so, remove the association between the Boolean operation and the at least one component model associated with that octant; when a threshold size of octant is reached, combine corresponding octants of component models according to remaining Boolean operations associated with that octant.
14. A machine-readable medium comprising machine-readable instructions as claimed in claim 13 further comprising instructions which, when executed by the processor, cause the processor to: determine if an initial set of Boolean operations comprise at least one difference operation and, if so, modify the set of Boolean operations and the component models to replace the difference operation with an intersection operation and modify the set of component models by inverting a component model which was to be subtracted in the difference operation.
15. A machine-readable medium comprising machine-readable instructions as claimed in claim 13 wherein the instructions to determine if the Boolean operation is redundant comprise instructions which, when executed by the processor, cause the processor to determine, for each octant, if the outcome of a Boolean operation is invariant to sub-divisions of the octant; and wherein the instructions to remove the association between the Boolean operation and the at least one component model comprise instructions which, when executed by the processor, cause the processor to, if the outcome of a Boolean operation is invariant to sub-divisions of the octant, replace the Boolean operation with its outcome.
PCT/US2022/014570 2022-01-31 2022-01-31 Boolean operations WO2023146548A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2022/014570 WO2023146548A1 (en) 2022-01-31 2022-01-31 Boolean operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2022/014570 WO2023146548A1 (en) 2022-01-31 2022-01-31 Boolean operations

Publications (1)

Publication Number Publication Date
WO2023146548A1 true WO2023146548A1 (en) 2023-08-03

Family

ID=87472135

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/014570 WO2023146548A1 (en) 2022-01-31 2022-01-31 Boolean operations

Country Status (1)

Country Link
WO (1) WO2023146548A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050131658A1 (en) * 2003-12-16 2005-06-16 Mei Hsaio L.S. Systems and methods for 3D assembly venue modeling
US20080074419A1 (en) * 2003-02-19 2008-03-27 California Institute Of Technology Level set surface editing operators
CN102495933A (en) * 2011-12-14 2012-06-13 黄桂青 Systematic auto balancing equivalent transformation method for constructive geometry binary tree structure of Boolean operation
WO2017203528A1 (en) * 2016-05-24 2017-11-30 Technion Research & Development Foundation Limited Systems and methods for generating volumetric models
WO2021010963A1 (en) * 2019-07-15 2021-01-21 Hewlett-Packard Development Company, L.P. Offset operators

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080074419A1 (en) * 2003-02-19 2008-03-27 California Institute Of Technology Level set surface editing operators
US20050131658A1 (en) * 2003-12-16 2005-06-16 Mei Hsaio L.S. Systems and methods for 3D assembly venue modeling
CN102495933A (en) * 2011-12-14 2012-06-13 黄桂青 Systematic auto balancing equivalent transformation method for constructive geometry binary tree structure of Boolean operation
WO2017203528A1 (en) * 2016-05-24 2017-11-30 Technion Research & Development Foundation Limited Systems and methods for generating volumetric models
WO2021010963A1 (en) * 2019-07-15 2021-01-21 Hewlett-Packard Development Company, L.P. Offset operators

Similar Documents

Publication Publication Date Title
US10857736B2 (en) Three-dimensional object substructures
US20140324204A1 (en) Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications
Tedia et al. Manufacturability analysis tool for additive manufacturing using voxel-based geometric modeling
US10186037B2 (en) Object data representations for additive manufacturing
GB2548143A (en) Surface modelling
US10809699B2 (en) Method for generating three dimensional object models for an additive manufacturing process
JP2019524503A (en) Serialize representation of 3D objects
CN111344709A (en) Inspecting mesh models
US11221609B2 (en) Determining object volumes in virtual object space
US20220347925A1 (en) Offset operators
WO2023146548A1 (en) Boolean operations
US11235532B2 (en) Three-dimensional object substructures
US10589509B2 (en) Representing an object in terms of sub-volumes
CN110832551A (en) Associating object property data with a location
Brauer et al. Automated Generation of Multi-Material Structures Using the VoxelFuse Framework
WO2021080561A1 (en) Surface offsets
WO2023146545A1 (en) Transforming object data models
US11222153B2 (en) Three-dimensional object generation parameter descriptions
US20220342384A1 (en) Generation of representations of three-dimensional objects using boolean operations
US11927938B2 (en) Generating object model slices

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22924474

Country of ref document: EP

Kind code of ref document: A1