TOY SYSTEM AND A METHOD OF OPERATING THE TOY SYSTEM
20230065252 · 2023-03-02
Inventors
- Philip Kongsgaard Døssing (Aarhus C, DK)
- Andrei Zavada (Horsens, DK)
- Jesper Soederberg (Galten, DK)
- Bjørn Carlsen (Kolding, DK)
Cpc classification
A63F13/98
HUMAN NECESSITIES
A63F13/42
HUMAN NECESSITIES
A63F13/213
HUMAN NECESSITIES
A63F13/65
HUMAN NECESSITIES
International classification
A63F13/213
HUMAN NECESSITIES
A63F13/98
HUMAN NECESSITIES
Abstract
A toy system including a plurality of toy construction elements, an image capturing device, and a processor, wherein the image capturing device is operable to capture one or more images of a toy construction model constructed from the toy construction elements. The processor is configured to execute a digital game configured to cause the processor to provide a digital play experience. The processor is configured to receive an unlock code and unlock virtual objects for use in the digital play experience. The virtual objects are associated with toy construction elements. The processor is configured to receive images captured by the image capturing device, recognize one or more toy construction elements within the images, and provide a digital play experience involving the unlocked virtual. Objects.
Claims
1. A toy system, comprising: a plurality of toy construction elements, an image capturing device and a processor, wherein the image capturing device is operable to capture one or more images of a toy construction model constructed from the toy construction elements: wherein the processor is configured to: execute a digital game, the digital game comprising computer executable code configured to cause the processor to provide a digital play experience; receive an unlock code indicative of one or more virtual objects; responsive to receiving the unlock code, unlock the one or more virtual objects associated with said received unlock code for use in the digital play experience, each virtual object being associated with a respective one of said toy construction elements or with a respective toy construction model constructed from the toy construction elements; receive one or more images captured by said image capturing device; recognize one or more toy construction elements or toy construction models with the one or more images; responsive to recognizing a first toy construction element or a first toy construction model associated with a first one of the unlocked virtual objects, provide a digital play experience involving said first unlocked virtual object.
2. A toy system according to claim 1, wherein the unlock code is provided as a physical item carrying a machine readable or human readable code.
3. A toy system according to claim 1, wherein the unlock code is of limited-use and wherein the processor is configured to determine whether the received unlock code has previously been used beyond the limited use, and to unlock the virtual object only, if the code has not previously been used beyond the limited use.
4. A toy system according to claim 1, wherein the digital game comprises computer executable code configured to cause the processor to control at least one virtual game item.
5. A toy system according to claim 1, wherein the unlocked first virtual object has a visual appearance that resembles the first toy construction element or model with which the first virtual object is associated.
6. A toy system according to claim 1, wherein the processor is configured, responsive to receiving the unlock code, to associate a visual appearance to the unlocked virtual object, in particular by receiving one or more captured images of a toy construction model whose visual appearance is to be associated with the unlocked virtual object; and to associate the visual appearance of said toy construction model with the unlocked virtual object.
7. A toy system according to claim 1, wherein the received one or more images, within which the processor recognizes one or more toy construction elements or toy construction models, depicts a composite toy construction model constructed from at least a first toy construction model and a second toy construction model; wherein recognizing one or more toy construction elements or toy construction models within the one or more images comprises recognizing each of the first and second toy construction models included in the composite toy construction model; and wherein the processor is configured, responsive to recognizing the first and second toy construction models, to provide a digital play experience involving said first and second unlocked virtual objects, wherein the first toy construction model is associated with a first unlocked virtual object and the second toy construction model is associated with a second unlocked virtual object
8. A toy system according to claim 7, wherein the processor is configured to further recognize a spatial configuration of the first and second toy construction models relative to each other, and to modify the provided play experience responsive to the recognized spatial configuration.
9. A toy system according to claim 1, wherein one or more of the plurality of toy construction elements may include a visually recognizable code identifying a toy construction element or a toy construction model.
10. A toy system according to claim 9, wherein the plurality of toy construction elements includes one or more marker toy construction elements each having a visual appearance representative of an object code or a part thereof.
11. A toy system according to claim 10, wherein the processor is configured to detect the object code within the one or more images and to adapt the digital play experience responsive to the detected object code.
12. A toy system according to claim 1, wherein recognizing the first toy construction element or the first toy construction model associated with the first unlocked virtual object comprises: recognizing the first toy construction element as a toy construction element of a first type of toy construction elements or recognizing the first toy construction model as a toy construction model of a first type of toy construction models; and detecting a first object code associated with the recognized first toy construction element or the recognized first toy construction model.
13. A toy system according to claim 12, wherein the processor is configured, responsive to recognizing the first toy construction element or the first toy construction model, to provide a digital play experience involving a first instance of a plurality of instances of said first unlocked virtual object, the first virtual object being associated with the first type of toy construction element or the first type of toy construction model, and each of the plurality of instances of said virtual object being further associated with a respective object code.
14. A toy system according to claim 13, wherein the processor is configured, responsive to recognizing the first toy construction element or the first toy construction model associated with a first one of the unlocked virtual objects, to store the detected first object code associated with the first unlocked virtual object.
15. A toy system according to claim 14, wherein the processor is configured to determine whether an object code has previously been stored associated with the first unlocked virtual object and to associate the detected first object code with the first unlocked virtual object only if no object code has previously been associated with the first unlocked virtual object.
16. A toy system according to claim 15, wherein the processor is configured to compare the detected first object code with a previously stored object code associated with the first unlocked virtual object, and to provide the digital play experience involving said first unlocked virtual object only if the detected first object code corresponds to the previously stored object code associated with the first unlocked virtual object.
17. A method, implemented by a processor, of operating a toy system, the toy system comprising a plurality of toy construction. elements, an image capturing device, and the processor, the image capturing device being operable to capture one or more images of one or more toy construction models constructed from the toy construction elements and placed within a field of view of the image capturing device, wherein the method comprising: executing a digital game, the digital game comprising computer executable code configured to cause the processor to provide a digital play experience; receiving an unlock code indicative of one or more virtual objects; responsive to receiving the unlock code, unlocking the one or more virtual objects associated with said received unlock code for use in the digital play experience, each virtual object being associated with a respective one of said toy construction elements or with a respective toy construction model constructed from the toy construction elements; receiving one or more images captured by said image capturing device; recognizing one or more toy construction elements or toy construction models within the one or more images; and responsive to recognizing a first toy construction element or a first toy construction model associated with a first one of the unlocked virtual objects, providing a digital play experience involving said first unlocked virtual object
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0209] Preferred embodiments of the disclosure will be described in more detail in connection with the appended drawings.
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
DETAILED DESCRIPTION
[0235] Embodiments of the method and system disclosed herein may be used in connection with a variety of toy objects and, in particular with construction toys that use modular toy construction elements based on dimensional constants, constraints and matches, with various assembly systems like magnets, studs, notches, sleeves, with or without interlocking connection etc. Examples of these systems include but are not limited to the toy constructions system available under the tradename LEGO. For example, U.S. Pat. No. 3,005,282 and USD253711S disclose one such interlocking toy construction system and toy figures, respectively.
[0236]
[0237]
[0238] Referring to
[0239] Now referring to
[0240]
[0241] An important step in creating the virtual game environment is the conversion of the digital three-dimensional representation obtained from, or at least created on the basis of data received from, the capturing device into a virtual toy construction model constructed from virtual toy construction elements or into another voxel based representation. In the following an example will be described of a conversion engine adapted for performing such a conversion, in particular a conversion engine for conversion from a mesh representation into an LXFML. representation. It will be appreciated that other examples of a conversion engine may perform a conversion into another type of representation.
[0242] With the evolution of computers and computer vision it is becoming easier for computers to analyze and represent three-dimensional objects in a virtual world. Different technologies exist nowadays that facilitate the interpretation of the environment, creating three-dimensional meshes out of normal pictures obtained from normal cameras or out of depth camera information.
[0243] This means that computers, smartphones, tablets and other devices will increasingly be able to represent real objects inside an animated world as three-dimensional meshes. In order to provide an immersive game experience or other types of virtual game experiences, it would be of great value if whatever a computer could “see” and represent as a mesh could then be transformed into a model built out of toy construction elements such as those available under the name LEGO or at least as a voxel-based representation.
[0244] Virtual toy construction models may be represented in a digital representation identifying which virtual toy construction elements are comprised in the model, their respective positions and orientations and, optionally, how they are interconnected with each other. For example, the so-called LXFML format is a digital representation suitable for describing models constructed from virtual counterparts of construction elements available under the name. It is thus desirable to provide an efficient process for converting a digital mesh representation into a LEGO model in LXFML format or into a virtual construction model represented in another suitable digital representation.
[0245] Usually, three-dimensional models are represented as meshes. These meshes are typically collections of colored triangles defined by the corners of the triangles (also referred to as vertices) and an order of how these corners should be grouped to form these triangles (triangle indexes). There is other information that a mesh could store but the only other thing relevant for this algorithm is the mesh color.
[0246] As described earlier, the algorithm receives, as an input, mesh information representing, one or more objects. The mesh information comprises: [0247] Mesh vertices/vertex positions: the coordinates of the points that form the triangles, meaning points in space, e.g. represented as vectors (x,y,z), where x,y,z can he any real number. [0248] Triangle indexes: the indexes of the vertices in consecutive order so that they form triangles, i.e. the order in which to choose the vertices from the positions in order to draw the triangles in the mesh. For example,
[0250] Embodiments of the process create a representation of a virtual construction model, e.g. an LXFML string format version 5 or above. The LXFML representation needs to include the minimum information that would be needed by other software tools in order to load the information inside. The following example will be used to explain an example of the information included n an LXFML file:
TABLE-US-00001 1 <?xml version=“1.0” encoding=“UTF-8” standalone=“no” ?> 2 <LXFML versionMajor=“5” versionMinor=“0” name=“Untitled”> 3 <Meta> 4 <Application name=“VoxelBrickExporter” versionMajor=“0” versionMinor=“1”/> 5 </Meta> 6 <Bricks> 7 <Brick refID=“0” designID=“3622”> 8 <Part refID=“0” designID=“3622” materials=“316”> 9 <Bone refID=“0” transformation=“5.960464E−08,0,0.9999999,0,1,0,−0.9999999,0,5.960464E− 08,0,1.6,20”> 10 </Bone> 11 </Part> 12 </Brick> 13 </Bricks> 14 </LXFML>
[0251] The first line merely states the format of the file.
[0252] The second line contains information about the LXFML version and the model na The LXFML version should preferably be 5 or higher. The model name serves as information only. it does not of the loading/saving process in any way.
[0253] A <Meta>section is where optional information is stored. Different applications can store different information in this section if they need to. The information stored here does not affect the loading process.
[0254] Line 4 provides optional information about what application exported the LXFML file. This may be useful for debugging purposes.
[0255] The subsequent lines include the information. about the actual toy construction elements (also referred to as bricks). The refID should be different for every brick of the model (a number that is incremented. every time a brick is exported will do just fine). The design ID gives information about the geometry of the brick and the materials give information about the color. The transformation is the position and rotation of the brick represented by a 4 by 4 matrix but missing the 3.sup.rd column.
[0256] This information is considered sufficient. One could test the validity of an LXFML file by loading it with the free tool. LEGO Digital. Designer that can be found at http://ldd.lego.com.
[0257]
[0258] In initial step S1, the process receives a mesh representation of one or more objects. For the purpose of the present description, it will be assumed that the process receives a mesh including the following information: [0259] Vm=mesh vertices. [0260] Tm=mesh triangles. [0261] Cm=mesh color; (Per vertex color)
[0262] It will be appreciated that, instead of a mesh color, the mesh may represent another suitable attribute, such as a material or the like. Nevertheless, for simplicity of the following description, reference will be made to colors.
[0263] In an initial conversion step S2, the process converts the mesh into voxel space. The task addressed by this sub-process may be regarded as the assignment of colors (in this example colors from a limited palette 2101 of available colors, i.e. colors from a finite, discrete set of colors) to the voxels of a voxel space based on. a colored mesh The mesh should fit the voxel space and the shell that is represented by the mesh should intersect different voxels. The intersecting voxels should be assigned the closest color from the palette that corresponds to the local mesh color. As this technology is used in computer implemented applications such as gaming, performance is very important.
[0264] The initial sub-process receives as an input a mesh that has color information per vertex associated with it. It will be appreciated that color may be represented in different ways, e.g. as material definitions attached to the mesh. Colors or materials may be defined in a suitable software engine for three-dimensional modelling, e.g. the system available under the name “Unity”.
[0265] The mesh-to-voxel conversion process outputs a suitable representation of a voxel space, e.g. as a three-dimensional array of integer numbers, where each element of the array represents a voxel and where the numbers represent the color ID, material ID or other suitable attribute to be assigned to the respective voxels. All the numbers should be 0 (or another suitable default value) if the voxel should not be considered an intersection; otherwise, the number should represent a valid color (or other attribute) ID from the predetermined color/material palette, if a triangle intersects the voxel space at the corresponding voxel. The valid color should preferably be the closest color from the predetermined palette to the one the triangle intersecting the voxel has.
[0266]
[0267] So the task to be performed by the initial sub-process may be regarded as: given a mesh model, determine a voxel representation that encapsulates the mesh model and has as voxel color the closest one of a predetermined set of discrete colors to the mesh intersecting the voxel(s).
[0268] Initially converting the mesh into a voxel representation is useful as it subsequently facilitates the calculation of where different toy construction elements should be positioned, Voxels may be considered boxes of size X by Y by Z (although other types of voxels may be used). Voxels may be interpreted as three-dimensional pixels. The conversion into voxels may be useful in many situations, e.g. when the model is to be represented as virtual toy construction elements in the form of box shaped bricks of size X′ by Y′ by Z′. This means that any of the bricks that we might have in the model will take up space equal to a multiple of X, Y, Z by the world axis x, y and z.
[0269] In order to create the voxel space needed for the model that is to be converted, the process starts at step S2301 by creating an axis-aligned bounding box around the model. The bounds can be computed from the mesh information. This can be done in many ways; for example the Unity system provides a way to calculate bounds for meshes. Alternatively, a bound can he created out of two points: one containing the minimum coordinates by x, y and z of all the vertices in all the meshes and the other containing the maximum values by x, y and z, like in the following example:
Pmin.sub.x=Min.sub.x(Vm1.sub.x, Vm2.sub.x . . . ) Pmax.sub.x=Max.sub.x(Vm1, Vm2.sub.x. . . )
Pmin.sub.y=Min.sub.y(Vm1.sub.y, Vm2.sub.y . . . ) Pmax.sub.y=Max.sub.y(Vm1.sub.y, Vm2.sub.y . . . )
Pmin.sub.z=Min.sub.z(Vm1.sub.z, Vm2.sub.z . . . ) Pmax.sub.z=Max.sub.z(Vm1.sub.z, Vm2.sub.z . . . )
Pmin=(Pmin.sub.x, Pmin.sub.y, Pmin.sub.z) Pmax=(Pmax.sub.x, Pmax.sub.y, Pmax.sub.z)
[0270] Pmin and Pmax are the minimum and maximum points with coordinates x, y and z. Max and Min are the functions that get the minimum and maximum values from an array of vectors Vm by a specific axis (x,y or z).
[0271] Having the opposite corners of a box should be sufficient to define it. The box will have the size B=(bx, by, bz) by axis x, y and z. This means that B=Pmax−Pmin;
[0272] In a subsequent step S2302, the process divides he voxel space into voxels of a suitable size, e.g. a size (dimx, dimy, dimz) matching the smallest virtual toy construction element of a system of virtual toy construction elements. Preferably the remaining virtual toy construction elements have dimensions corresponding to integer multiples of the dimensions of the smallest virtual toy construction element. In one example, a voxel has dimensions (dimx, dimy, dimz)=(0.8, 0.32, 0.8) by (x,y,z) which is the size of a 1×1 Plate LEGO plate (LEGO Design ID: 3024). By creating the Voxel Space corresponding to the bounding box we will create a Matrix of size V(vx,yy,vz), where vx=bx/dimx+1, vy=by/dimy+1 and vz=bz/dmiz+1. The +1 appears because the division will almost never be exact and any remainder would result in the need of having another voxel that will need filling.
[0273] The matrix will contain suitable color IDs or other attribute IDs. This means that a voxel will start with a default value of 0 meaning that in that space there is no color. As soon as that voxel needs to be colored, that specific color ID is stored into the array. In order to process the mesh, the process processes one triangle at a time and determines the voxel colors accordingly, e.g. by performing the following steps: [0274] Step S2303: Get next triangle [0275] Step S2304: Get the intersection of the triangle with the voxel space Step S2305: Compute a raw voxel color of the intersecting voxel(s). [0276] S2306: Get the color ID of the closest color from the raw voxel color and so the subsequent bricks can be created with a valid color. Step S2307: Mark the voxels) with the determined color ID.
[0277] These steps are repeated until all triangles are processed.
[0278] The computation. of the raw voxel color to be assigned to the intersecting voxels (Step S2305) may be performed in different ways. Given the input, the color of a voxel can be calculated based on the intersection with the voxel and the point/area of the triangle that intersects with the voxel or, in case of triangles that are small and the color variation is not that big, it could be assumed that the triangle has the same color and that is the average of the 3 colors in the corners. Moreover, it is computationally very cheap to calculate the average triangle color and approximate just that one color to one of the set of target colors. Accordingly: [0279] In one embodiment, the process may simply average out the color of the triangle using the 3 vertex colors and then use the average color fir all intersections. [0280] an alternative embodiment, the process computes where on the triangle is the intersection with the voxel space.
[0282] While the first alternative is faster, the second alternative provides higher quality results.
[0283] The determination of the intersection of the triangle with the voxel space (step S2304 may be efficiently performed by the process illustrated in
[0284] Step S2501: select one corner (corner A in the example of
[0285] Step S2502: Define a sequence of points BC1-BC5 that divide the opposite edge (BC) into divisions equal to the smallest dimension of a voxel, e.g. dimy=0.32 in the above example. The points may be defined as end points of a sequence of vectors along edge BC, where each vector has a length equal to the smallest voxel dimension. Since, in three-dimensional, it is highly unlikely to have integer divisions, the last vector will likely end between. B and C rather than coincide with C.
[0286] The process then processes all points BC1-BC5 defined in the previous step by performing the following steps:
[0287] Step S2503: Get next point
[0288] Step S2504: The process defines a line connecting the corner picked at step S2501 with the current point on the opposite edge.
[0289] Step S2505: The process divides the connecting line into divisions with the size equal to the smallest dimension of a voxel, again dimy=0.32 in the above example. Hence, every point generated by the split of step S2502, connected with the opposite corner of the triangle (A in the example of
[0290] Step S2506: For every point on the line that was divided at Step S2505 and for point A, the process marks the voxel of the voxel space that contains this point with the raw color computed as described above with reference to step S2305 of
[0291] This simple pseudocode shows how the voxel representation of the mesh can be created using just the mesh information. The amount of operations done is not minimal as the points towards the selected corner (selected at Step S2501) tend to be very close to each other and not all of them would be needed. Also the fact that the triangle could be turned at a specific angle would mean that the division done at Step S2506 may take more steps than necessary. However, even though there is a lot of redundancy, the operation is remarkably fast on any device and the complexity of calculations needed to determine the minimum set of points would likely result in having a slower algorithm.
[0292] Again referring to
[0295] One way to find the shortest distance is to compare all distances in three-dimensional. This means that any color that is to be approximated has to be compared with all possible colors from the palette. A more efficient process for determining the closest distance between a color and the colors of a palette of discrete colors will be described with reference to
[0296] All colors in RGB space may be represented in three-dimensional as an 8.sup.th of a sphere/ball sectioned by the X, Y and Z planes with a radius of 255. If a color C with components rC, gC, bC containing the red, green and blue components is given as input for the conversion step, color C will be situated at distance D from the origin.
[0297] The minimum distance may then be found by an iterative process starting from an initial value of the minimum distance. The maximum distance from the origin to the closest target color from the palette that should be found must be no larger than the distance from the origin to the original color plus the current minimum distance. The initial minimum is thus selected large enough to cover all possible target colors to ensure that at least one match is found.
[0298] An example of how the process works is as fallows: a current minimum distance is found, meaning that there is a target color that is close to the input color. Now, no target color can be found in such way that it is closer to the original color, yet further away from origin than the distance between the original color and the origin plus the current minimum distance. This follows from the fact that the minimum distance determines the radius of the sphere that has the original color in its center and contains all possible, better solutions. Any better solution should thus be found within said sphere; otherwise it would be further away from the original color. Consequently, for a given current minimum distance, only colors need to be analyzed that are at a distance from the origin smaller than the original color distance + the current minimum.
[0299] The above conversion process results in a voxel model of the hull/contour of the object or objects. It has been found that the process provides a quality output at an astounding speed because: [0300] if all the units are at maximum distance equal to the minimum size of a voxel, one can't get 2 points that are further away than a voxel so there will never be holes. [0301] if the triangles are small and many, and if the model is big, all the small voxel overrides that might give a voxel that does not have the best color for a few voxel will be tolerable. [0302] The color approximation is good. enough while at the same time saves a lot of computation power.
[0303] This solution may be compared in performance to the standard solutions (raycasting and volume intersection) which instead of just using a given set of points in space try to determine if triangles intersect different volumes of space and, in some cases, some methods even try to calculate the points where the triangle edges intersect the voxels. The volume intersection method is expected to be the slowest, but the intersection points are expected to provide accurate areas of intersection which could potentially facilitate a slightly more accurate coloring of the voxels.
[0304] Instead of computing different intersections, another method that is commonly used to determine intersections is called raycasting. Rays can be casted in a grid to determine what mesh is hit by specific rays. The raycasting method is not only slower but also loses a bit of quality as only the triangles hit by the rays contribute to the coloring. The raycasting method could give information about depth and could help more if operations need to be done taking in the consideration the interior of the model.
[0305] Again referring to
[0306] Accordingly, in the subsequent, optional step S3, the process may fill the internal, non-surface voxels with color information. The main challenge faced when trying to fill the model is that it is generally hard to detect if the voxel that should be filled is inside the model or outside. Ray casting in the voxel world may not always provide a desirable result, because if a voxel ray intersects 2 voxels, this does not mean that all voxels between the two intersection points are inside the model. If the 2 voxels contained, for example very thin triangles, the same voxel could represent both an exit and an entrance.
[0307] Raycasting on the mesh can be computationally rather expensive and sometime inaccurate, or it could be accurate but even more expensive, and therefore a voxel based solution may be used for better performance.
[0308] It is considerably easier to calculate the outside surface of the model because the process may start with the boundaries of the voxel world. If those points are all taken then everything else is inside. For every voxel that is not occupied because of triangle intersections one can start marking every point that is connected to that point as being a point in the exterior. This procedure can continue recursively and. it can fill the entire exterior of the model.
[0309] Now that the edge is marked and the exterior is marked, everything in the voxel space that is unmarked (still holds a value of 0) is inside the model.
[0310] Now, a voxel raycasting can be done to shoat rays by any axis and fill in any unoccupied voxel. Currently, the color of voxel that intersects the entering ray is used to color the interior. As the mesh holds no information about how should the interior be colored, this coloring could be changed to be application specific.
[0311] In subsequent, optional step S4, the created voxel :representation may be post-processed, e.g. trimmed. For example, such a post-processing may be desirable in order to make the voxel representation more suitable for conversion into a virtual toy construction model. For example, toy construction elements of the type known as LEGO often have coupling knobs. When the volume defined by the mesh is not too big, an extra knob could make a huge difference for the overall appearance of the model; therefore, for bodies with volumes less than a certain volume, an extra trimming process may be used. For example, the minimum volume may be selected as 1000 voxels or another suitable limit.
[0312] The trimming process removes the voxel on top of another voxel; if there is only one voxel that exists freely it is removed also. This is clone because the LEGO brick also has knobs that connect to other bricks. Since the knob of the last brick on top is sticking out it could mark another voxel but we might not want to put a brick there because it will make the already existing small model even more cluttered. For this reason the extra trimming process may optionally be used for small models. Of course, it could also be used on bigger models but it will introduce extra operations that might not provide observable results.
[0313] The trimming process may e.g.. be performed as follows: For every occupied voxel, the process checks if there is an occupied voxel on top; if not, it marks the occupied voxel for deletion. Either lonely voxels or the top most voxels will be removed this way. The voxels on top are collected and removed all at the same time because if they would remove themselves first the voxel underneath might appear as the top-most voxel.
[0314] After the voxel space is filled (and, optionally, trimmed), either just the contour or the interior also, some embodiments of the process may create a virtual environment directly based on the voxel representation while other embodiments may create a toy construction model as described herein.
[0315] Accordingly, in the subsequent step SS, the process parses the voxel space and creates a data structure, e.g. a list, of bricks (or of other types toy construction elements). It will be appreciated that, if a raw voxel representation of a virtual environment is desired, alternative embodiments of the process may skip this step.
[0316] In order to obtain the bricks that can be placed, a brick evolution model is used, i.e. a process that starts with a smallest possible brick (the 3024, 1×1 plate in the above example) and seeks to fit larger bricks starting from the same position. Hence the initial smallest possible brick is caused to evolve into other types of bricks. This can be done recursively based on a hierarchy of brick types (or other types of toy construction elements). Different bricks are chosen to evolve into specific other bricks. To this end the process may represent the possible evolution paths by a tree structure. When placing a brick the process will try to evolve the brick until it cannot evolve anymore because there is no other brick it can evolve into or because there are no voxels with the same color it can evolve over.
[0317] An example of this would be: a 1×1 Plate is placed in the origin. It will try to evolve into a 1×1. Brick by looking to see if there are 2 voxels above it that have the same color. Assuming there is only one and therefore it cannot evolve in that direction, the process will then try to evolve the brick into a 1×2 Plate in any of the 2 positions (normal, 90 degree rotated around the UP axis). If the brick is found to be able to evolve into a 1×2 plate then the process will continue until it will run out of space or evolution possibilities. In one embodiment, the supported shapes are 1×1 Plate, 1×2 Plate, 1×3 Plate, 1×1, Brick, 1×2 Brick, 1×3 Brick, 2×2 Plate, 2×2 Brick, but more or other shapes can he introduced in alternative embodiments.
[0318] After the brick evolution of a brick has finished, the process clears the voxel space at the location occupied by the evolved brick. This is done in order to avoid placing other bricks at that location. The process then adds the evolved. brick to a brick list.
[0319] The list of bricks thus obtained. contains information about how to represent the bricks in a digital world with digital colors.
[0320] Optionally, in subsequent step S6, the process modifies the created toy construction model, e.g. by changing attributes, adding game-controlling elements and/or the like as described herein. This conversion may be at least in part be performed based on detected physical properties of the real world scene, e.g. as described above.
[0321] In subsequent step S7, the process creates a suitable output data structure representing the toy construction model. For example, in one embodiment, the bricks may be converted into bricks that are suitable to he expressed as an LXFML file.
[0322] This means that a transformation matrix may need to be calculated and, optionally, the colors may need to be converted to a valid color selected from a predetermined color palette (if not already done in the previous steps).
[0323] The transform matrix may be built to contain the rotation as a quaternion, the position and the scale (see e.g.
[0324] http://www.euclideanspace.com/maths/geometry/affine/matrix4×4/ for more detailed information on matrices and
[0325] http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionTo Matrix/ more info on quaternion transformation). All the bricks may finally be written in a suitable data format, e.g. in the way described above for the case of an LXMF format.
[0326] With reference to
[0327] In initial step S2801, the process obtains scan data, i.e. a digital three-dimensional representation of the physical model, e.g. as obtained by scanning the physical model by means of a camera or other capturing device as described herein. The digital three-dimensional representation may be in the form of a surface mesh as described. herein.
[0328] In step S2802, the process recognizes one or more physical objects as known physical objects. To this end, the process has access to a library 2801 of known physical objects, e.g. a database including digital three-dimensional representations of each known object and, optionally, additional information such as attributes to be assigned to the virtual versions of these objects, such as functional attributes, behavioral attributes, capabilities, etc. In the example of
[0329] In step S2803, the process removes the triangles (or other geometry elements) from the mesh that correspond to the recognized object, thus creating a hole in the surface mesh.
[0330] In step S2804, the process fills the created hole by creating triangles filling the hole. The shape and colors represented by the created triangles may be determined by interpolating the surface surrounding the hole. Alternatively, the created surface may represent colors simulating a shadow or after-glow of the removed object.
[0331] In subsequent step S2805. the process creates a virtual environment based on the thus modified mesh, e.g. by performing the process of
[0332] In subsequent step S2806, the process creates a virtual object based on the information retrieved from the library of know objects. For example, the virtual object may be created as a digital three-dimensional representation of a toy construction model. The virtual object may then be inserted into the created virtual environment at the location where the mesh has been modified, i.e. at the location where the object had been recognized. The virtual object is thus not merely a part of the created landscape or environment but a virtual object (e.g, a virtual item or character) that may move about the virtual environment and/or otherwise interact with the created environment.
[0333]
[0334] In initial step S3101, the process obtains scan data, i.e. a digital three-dimensional representation of the physical model, e.g. as obtained by scanning the physical model by means of a camera or other capturing device as described herein. The digital three-dimensional representation may be in the form of a surface mesh as described herein.
[0335] In step S3102, the process recognizes one or more physical objects as known physical objects. To this end, the process has access to a library 3101 of known physical objects, e.g. a database including information such as information about a predetermined theme or conversion rules that are associated with and should be triggered by the recognized object.
[0336] In subsequent step S3103 the process creates a virtual environment based on the thus modified mesh, e.g. by performing the process of
[0337] In subsequent step S3104, the process modifies the created virtual environment by applying one or more conversion rules determined from the library and associated with the recognized object.
[0338] It will be appreciated that, in some embodiments, the process may, responsive to recognizing a physical object, both modify the virtual environment as described in connection with
[0339] Embodiments of the method described herein can be implemented by means of hardware comprising several distinct elements, and/or at least in part by means of a suitably programmed microprocessor.
[0340] Turning now to
[0341]
[0342]
[0343] The set may include three cards 4141-4143 with respective unlock codes 4171-4173, one code 4171 associated with the figurine 4131, another code 4172 associated with the car 4132 and yet another code 4173 associated with the sword 4123, ln an alternative embodiment, the set may include a card 4144 with a single unlock 4174 code for unlocking multiple virtual objects associated with the figurine, the car and the sword, respectively. Again, it will be appreciated that, instead of providing a card 4144, the single unlock code may be provided in a different manner.
[0344]
[0345] Initially, the processing device reads the one or more unlock codes included in the toy construction set, e.g. from respective cards 4141 and 4142 as described above. This causes the corresponding virtual objects 4451, 4452 (in this example a virtual car 4452 and a virtual character 4451) to be unlocked. The user may then capture an image of the toy figurine 4131 positioned in the driver's seat of the toy car 41.32. The processing device 4450 recognises the figurine and the car making up the thus constructed composite model causing the digital game to provide a play experience involving a virtual car 4452 driven by a corresponding virtual character 4451. After completion of the play experience, the user may capture another image of the same or of a different toy construction model and engage in the same or a different play experience involving the corresponding unlocked virtual objects.
[0346] Hence, while a virtual object may only need to be unlocked once it may, once unlocked, be available multiple times (e.g. a limited number or an unlimited number of times) for selection as a part of a play experience. The selection is performed by capturing an image of the corresponding physical toy construction element or model.
[0347]
[0348]
[0349] In the example of
[0350]
[0351] In initial step S4101, the process initiates execution of a digital game, e.g. by executing a computer program stored on a processing device. The digital game provides functionality for acquiring unlock codes, capturing images of toy construction models, recognizing toy construction models in the captured images, and for providing a digital play experience involving one or more virtual objects.
[0352] In step S4102. the process acquires an unlock code, e.g. by reading a QR code, reading an RFID tag, receiving a code manually entered by a user input, or in another suitable way.
[0353] In subsequent step S4103, the process unlocks a virtual object associated with the received unlock code. For example, the digital game may have stored information about a plurality of virtual objects, each virtual object having associated with it a stored unlock code or a set of unlock codes. The process may thus compared the acquired unlock code with the stored. unlock codes or codes so as to identify which virtual object to unlock. The process may then flag the virtual object as unlocked. In some embodiments, the process may be implemented by a distributed system, e.g. including a client device and a remote host system, e.g. as described in connection with
[0354] In step S4104, the process receives an image of a toy construction model. For example, the image may be an image captured by a digital camera of the device executing the process. The image may directly be forwarded from the camera to the recognition process. To this end, the process may instruct the user to capture an image of a toy construction model constructed by the user, where the toy construction model represents the unlocked virtual object. In some embodiments, the process may initially display or otherwise present building instructions instructing the user to construct a predetermined toy construction model. The process may receive a single captured image or a plurality of images, such as a video stream, e.g. a live video stream currently being captured by the camera.
[0355] In step S4105, the process processes the received image in an attempt to recognize a known toy construction model in the received image. For example, the process may feed the captured image into a trained machine learning algorithm, e.g. a trained neural network, trained to recognize each of a plurality of target toy construction models. An example of a process for recognizing toy construction models is described in WO 2016/075081. However, it will be appreciated that other image processing and vision technology techniques may be used for recognizing toy construction models in the received image. It will further be appreciated that the recognition process may recognize the toy construction model as a whole or the process may recognize individual toy construction elements of the model, e.g. one or more marker toy construction elements comprising a visual marker indicative of the toy construction model.
[0356] If the process fails to recognize a known toy construction model, the process may repeat step S4105 to receive a new image. Repeated failure to recognize a known toy construction model may cause the process to terminate or to proceed in another suitable manner, e.g. requesting the user to capture another image of another toy construction model.
[0357] When the process has recognized a known toy construction model in the received image, the process proceeds at step S4106 where the process determines whether an unlocked virtual object is associated with the recognized toy construction model. To this end, the process may compare the recognized toy construction model with a list of known toy construction models, each known toy construction model having a respective virtual object associated with it. Moreover, each virtual object may have a locked/unlocked flag associated with it. Hence, only when the recognized toy construction model has a virtual model associated with it where the unlock flag is set, the process determines that an unlocked virtual object is associated with the recognized toy construction model.
[0358] When the process determines that an unlocked virtual object is associated with the recognized toy construction model, the process proceeds at step S4107. Otherwise, the process may terminate, inform the user that the corresponding virtual object needs to be unlocked, or proceed in another suitable manner.
[0359] At step S4107, the process provides a digital play experience involving the virtual object that is associated with the recognized to construction model. For example, the process may start a play experience with the identified virtual object, or the process may add the virtual object to an ongoing play experience.
[0360] After completion of the play experience, or responsive to a game event or a user input, the process may return to step S4104 allowing the user to acquire an image of another toy construction model. Alternatively, the process may terminate.
[0361] It will be appreciated that various modifications to the above process may be implemented. For example, the process may recognize parts of a toy construction model and determine whether unlocked virtual objects are associated with one or each of the recognized parts and provide a play experience involving a combination of these unlocked virtual objects, e.g. only if all recognized parts have an unlocked virtual object associated with it. Examples of such a process are described in connection with
[0362] Alternatively or additionally, steps S4105 and S4106 may be combined into a single operation. For example, the process may only recognize toy construction models as known toy construction models if they have an unlocked virtual object associated with it.
[0363] Yet alternatively or additionally, in step S4105, the process may further detect an object code applied to a recognized toy construction model, e.g. by reading a QR code or another type of visually recognizable code from the captured image. For example, during manufacturing of a toy construction element, a data processing system executing an encoder may convert a bit string or other object code into a visually recognizable code, such as a QR code, a graphic decoration, and/or the like. The encoded visually recognizable code may then be printed on the toy construction element, e.g. on a torso of a figurine as illustrated in
[0364] During step S4105, a decoding function may analyse an image of a toy construction model and extract the object code that was embedded by the encoder. The decoding function may be based on a QR code reading function, a neural network trained to convert encoded images into their object code counterparts, or the like. Error correction codes can be added to the object code so that a number of erroneous output bits can he corrected. In one embodiment, the process may initially recognize the toy construction model, identify a portion of the recognized toy construction model where an object code is expected, and feed a part image depicting the identified portion, e.g. the torso of a recognized figurine to the decoding function.
[0365] In step S4106, in addition to determining the unlocked virtual object corresponding to the recognized toy construction model, the process may further identify a particular instance of the unlocked virtual object based on the detected object code. To this end, the process may maintain records associated with multiple instances of a particular virtual object, each instance being associated with a respective object code and, optionally with respective attributes, such as health, capabilities, etc.
[0366]
[0367]
[0368] Initially, the processing device 4450 reads the unlock code 4171 included, in the toy construction set, e.g. from card 4141. This causes the corresponding virtual object 4451 (in this example a virtual character) to be unlocked. The user may then capture an image of the figurine 4131 carrying one of a set of object codes 4735. The processing device recognises the figurine including the particular code 4735 applied to the figurine. This causes the digital game executed by the processing device 4450 to provide a play experience involving an instance of the virtual character 4451. After completion of the play experience, the user may capture another image of the same or of a different figurine, in particular a figurine resembling figurine 4131 but having a different object code 4735 applied to it. This allows the user to engage in the same or a different play experience involving a different instance of the virtual character. Accordingly, the digital game may store or otherwise maintain game progress (such as health levels, capability levels, or other progress) for respective instances of a virtual character. For example, if two users each have their own figurine with respective object codes, they may both use the processing device 4450 to engage in the digital game using respective instances of the same virtual character, in particular where the virtual character has respective in-game progress.
[0369]
[0370] The toy system further comprises a suitably programmed processing device 4450, e.g. a tablet or smartphone or other portable computing device executing an app that implements a digital game of the toy system. The processing device 4450 comprises a central processing unit 4455, a memory 4456, a user interface 4457, a code reader 4458 and an image capture device 4459.
[0371] The user interface 4457 may e.g. include a display, such as a touch screen, and, optionally input devices such as buttons, a touch pad, a pointing device, etc.
[0372] The image capture device 4459, may include a digital camera, a depth camera, a stereo camera, and/or the like.
[0373] The code reader 4458 may be a barcode reader, and RFID reader or the like, M some embodiments, the code reader may include a digital camera. In some embodiments, the code reader and the image capture device may be a single device. For example, the same digital camera may be used to read the unlock codes and capture images of the toy construction models.
[0374]
[0375] Hence, generally, a virtual object needs to be unlocked only once by the unique unlock code. The selection of the virtual object (or of multiple/composite virtual objects at one time) can be done every time the virtual object is to be used in the digital experience or for a one-dine use.
[0376] In the claims enumerating several means, several of these means can be embodied by one and the same element, component or item of hardware. The mere fact that certain measures are recited in mutually different dependent claims or described in different embodiments does not indicate that a combination of these measures cannot be used to advantage.
[0377] It should be emphasized that the term “comprises/comprising” when used in this specification is taken to specify the presence of stated features, elements, steps or components but does not preclude the presence or addition of one or more other features, elements, steps, components or groups thereof.