Patents Assigned to NGRAIN (Canada) Corporation
  • Patent number: 9754405
    Abstract: System, computer-readable medium and method are provided for organizing and rendering 3D voxel models in a tree data structure. The system includes a display, a memory loaded with 3D voxel data arranged in a N3-tree data structure, and a processor that renders the 3D voxel data on the display. The N3-tree data structure includes a top node, one or more levels of middle nodes, and leaf nodes. Each of the top node and middle nodes includes 64 occupancy bits and 32 index bits. The 64 occupancy bits indicate an occupied (“1”) or empty (“0”) state of each of 64 subunits (subcubes or voxels) included in the node. The 32 index bits represent a pointer to a memory location where its occupied subunits are stored. Each of the leaf nodes represents an occupied voxel, and includes an index number that can be used to point to a memory location of at least one type of attribute value (color, normal, intensity, etc.) of the occupied voxel.
    Type: Grant
    Filed: August 10, 2015
    Date of Patent: September 5, 2017
    Assignee: NGRAIN (CANADA) CORPORATION
    Inventors: Jonathan Young, Craig Furness, Meru Brunn
  • Patent number: 9600929
    Abstract: System, computer-readable medium and method are provided for differencing (diffing) first and second sets of 3D voxel data to identify differences that may exist between the two sets. The system includes a 64-bit processor, a memory, and a display. The memory is loaded with the two sets of 3D voxel data arranged in a 64-tree data structure, wherein an occupied or empty state of each voxel is indicated by 1 bit. The processor executes a 3D voxel diffing algorithm including steps of: (i) aligning the first and second sets of 3D voxel data; (ii) making a one-to-one comparison between each voxel in the first set and a corresponding voxel in the second set to create a diff model that records differences found between the first and second sets; and (iii) displaying the content of the diff model on the display.
    Type: Grant
    Filed: December 1, 2014
    Date of Patent: March 21, 2017
    Assignee: NGRAIN (Canada) Corporation
    Inventors: Jonathan Young, Andrew Woo, Meru Brunn
  • Patent number: 9342913
    Abstract: System and method are provided for achieving “inverse kinematics” of 3D graphics depicting an object that consists of multiple parts. The system displays an animation of a 3D graphics object that consists of multiple moving parts. The animation is associated with an animation timeline defined by two end points—a starting time point and an ending time point. The user can manipulate the object back and forth along the animation timeline, between the two end points, by selecting (e.g., clicking on) and moving (dragging) any of the movable parts of the object on a display screen. In short, the user can use any of the movable parts as a scroll/slide button to move the animation forward and backward along the animation timeline, to achieve real-time inverse kinematics movement.
    Type: Grant
    Filed: February 19, 2013
    Date of Patent: May 17, 2016
    Assignee: NGRAIN (CANADA) CORPORATION
    Inventors: Chun Yue Gordon Wong, Graham Thurstan Smith, Keith William Reid
  • Patent number: 9159170
    Abstract: System and method are provided for building and rendering a 3D graphics dataset of an object that consists of multiple parts, wherein the 3D graphics dataset includes a 3D geometry dataset and a configuration file, and in the configuration file each of the multiple parts is identified as used (e.g., visible, actionable) or unused (e.g., not visible, not actionable) in each of multiple display features (e.g., in display states, such as in animations, or in display relationships). The method determines which of the multiple parts are unused in each of the multiple display features and identifies those parts, which are unused in all of the display features, as excluded parts, and saves a list of the identified excluded parts in association with the object. In rendering the object on a display, the method does not load data directed to the excluded parts, to thereby speed up the loading/rendering process.
    Type: Grant
    Filed: February 26, 2013
    Date of Patent: October 13, 2015
    Assignee: NGRAIN (Canada) Corporation
    Inventors: Chun Yue Gordon Wong, Jacqueline Li, Jeffrey York Brace, Graham Thurstan Smith
  • Publication number: 20150062123
    Abstract: A system, computer-readable medium, and method for creating an annotated 3D model are provided. First, 3D coordinates of at least two real alignment points for/on a real object are acquired. Second, 3D virtual space, in which a 3D model exists, is merged with 3D real space, in which the real object exists, to thereby align the 3D model with the real object, by matching at least two virtual alignment points of the 3D model with the at least two real alignment points of the real object. Third, an annotated 2D image/video of the real object is prepared and projected to surfaces of the 3D model by translating a 3D coordinate and orientation of the visual sensor in the 3D real space used to acquire the annotated 2D image/video to a 3D coordinate and orientation of the visual sensor in the 3D virtual space, to thereby create an annotated 3D model.
    Type: Application
    Filed: August 30, 2013
    Publication date: March 5, 2015
    Applicant: NGRAIN (Canada) Corporation
    Inventor: Billy Kai Cheong Yuen
  • Publication number: 20140240315
    Abstract: System and method are provided for building and rendering a 3D graphics dataset of an object that consists of multiple parts, wherein the 3D graphics dataset includes a 3D geometry dataset and a configuration file, and in the configuration file each of the multiple parts is identified as used (e.g., visible, actionable) or unused (e.g., not visible, not actionable) in each of multiple display features (e.g., in display states, such as in animations, or in display relationships). The method determines which of the multiple parts are unused in each of the multiple display features and identifies those parts, which are unused in all of the display features, as excluded parts, and saves a list of the identified excluded parts in association with the object. In rendering the object on a display, the method does not load data directed to the excluded parts, to thereby speed up the loading/rendering process.
    Type: Application
    Filed: February 26, 2013
    Publication date: August 28, 2014
    Applicant: NGRAIN (Canada) Corporation
    Inventors: Chun Yue Gordon Wong, Jacqueline Li, Jeffrey York Brace, Graham Thurstan Smith
  • Publication number: 20140232716
    Abstract: System and method are provided for achieving “inverse kinematics” of 3D graphics depicting an object that consists of multiple parts. The system displays an animation of a 3D graphics object that consists of multiple moving parts. The animation is associated with an animation timeline defined by two end points—a starting time point and an ending time point. The user can manipulate the object back and forth along the animation timeline, between the two end points, by selecting (e.g., clicking on) and moving (dragging) any of the movable parts of the object on a display screen. In short, the user can use any of the movable parts as a scroll/slide button to move the animation forward and backward along the animation timeline, to achieve real-time inverse kinematics movement.
    Type: Application
    Filed: February 19, 2013
    Publication date: August 21, 2014
    Applicant: NGRAIN (CANADA) CORPORATION
    Inventors: Chun Yue Gordon Wong, Graham Thurstan Smith, Keith William Reid
  • Patent number: 8217939
    Abstract: A method is provided for calculating edge normals when transforming 3D geometric data (e.g., polygon mesh data) to voxel data, which includes four steps. First, each geometric unit (e.g., each polygon) in the 3D geometric data is mapped to a voxel grid. Second, edge voxels are detected in the voxel grid. As used herein, an edge voxel means a voxel forming an edge of an object to be rendered. Third, for each edge voxel, one or more normals of the one or more geometric units that intersect with that edge voxel are calculated and stored. Fourth, for each edge voxel, an edge normal is obtained by combining (e.g., equal-weight-averaging) the one or more normals stored in association with that edge voxel.
    Type: Grant
    Filed: October 17, 2008
    Date of Patent: July 10, 2012
    Assignee: NGRAIN (Canada) Corporation
    Inventors: Claudia Bonciu, Andrew C. -H. Woo
  • Patent number: 7965290
    Abstract: A method is provided to progressively load and further process data in a hierarchical lock-free structure. The method includes generally four steps: (a) defining the hierarchical lock-free structure, (b) loading the data into the hierarchical lock-free structure; (c) processing the loaded data, and (d) repeating steps (b) and (c) such that progressively more data are loaded and become available for processing. The hierarchical lock-free structure includes a first level of data including data segments, wherein each of the data segments forms a second level of data. The structure is such that each of the data segments in the second level of data becomes available for further processing when the data segment is referenced in the first level of data. Thus, during the loading step (b), a reference is set in the first level of data to each of the data segments in the second level of data as the data segment is loaded.
    Type: Grant
    Filed: July 13, 2007
    Date of Patent: June 21, 2011
    Assignee: NGRAIN (Canada) Corporation
    Inventors: Vladimir Kouznetsov, Lev N. Gretskii, Filip Petrovic
  • Patent number: 7420555
    Abstract: A method and apparatus are provided for transforming an irregular, unorganized cloud of data points (100) into a volumetric data or “voxel” set (120). Point cloud (100) is represented in a 3D Cartesian coordinate system having an x-axis, a y-axis and a z-axis. Voxel set (120) is represented in an alternate 3D Cartesian coordinate system having an x?-axis, a y?-axis, and a z?-axis. Each point P(x, y, z) in the point cloud (100) and its associated set of attributes, such as intensity or color, normals, density and/or layer data, are mapped to a voxel V(x?, y?, z?) in the voxel set (120). Given that the point cloud has a high magnitude of points, multiple points from the point cloud may be mapped to a single voxel. When two or more points are mapped to the same voxel, the disparate attribute sets of the mapped points are combined so that each voxel in the voxel set is associated with only one set of attributes.
    Type: Grant
    Filed: November 20, 2007
    Date of Patent: September 2, 2008
    Assignee: NGRAIN (Canada) Corporation
    Inventor: Michael J. Lee
  • Patent number: 7317456
    Abstract: A method and apparatus are provided for transforming an irregular, unorganized cloud of data points (100) into a volumetric data or “voxel” set (120). Point cloud (100) is represented in a 3D cartesian coordinate system having an x-axis, a y-axis and a z-axis. Voxel set (120) is represented in an alternate 3D cartesian coordinate system having an x?-axis, a y?-axis, and a z?-axis. Each point P(x, y, z) in the point cloud (100) and its associated set of attributes, such as intensity or color, normals, density and/or layer data, are mapped to a voxel V(x?, y?, z?) in the voxel set (120). Given that the point cloud has a high magnitude of points, multiple points from the point cloud may be mapped to a single voxel. When two or more points are mapped to the same voxel, the disparate attribute sets of the mapped points are combined so that each voxel in the voxel set is associated with only one set of attributes.
    Type: Grant
    Filed: December 2, 2002
    Date of Patent: January 8, 2008
    Assignee: NGRAIN (Canada) Corporation
    Inventor: Michael J. Lee
  • Patent number: 7218323
    Abstract: A method is provided for rendering 3D voxel data including plural voxel sets, while eliminating artifacts that may result from the plural voxel sets colliding with each other (“voxel interpenetration”). In one aspect, the method involves an extension of the splatting approach, and uses a z-buffer associated with each pixel to indicate the z-depth of a voxel to be painted onto the pixel. According to the method, first, the z-buffer for each pixel is reset (cleared). Next, for each of the plural voxel sets, one voxel set at a time (sequentially), voxels within the voxel set are traversed until an occupied voxel is found. If a z value of the occupied voxel is less than a z value stored in the z-buffer, the z value of the occupied voxel is stored in the z-buffer and the occupied voxel is painted onto an associated pixel. Then, the next occupied voxel is considered.
    Type: Grant
    Filed: August 13, 2004
    Date of Patent: May 15, 2007
    Assignee: NGrain (Canada) Corporation
    Inventors: Paul A. Halmshaw, Andrew C.-H. Woo, Lev N. Gretskii, Jonathan M. Young
  • Patent number: 7050054
    Abstract: A data structure includes a plurality of voxel element arrays of memory locations, the arrays being arranged and associated with a set of indices whereby indices of the set identify corresponding memory locations in each array. The data structure further includes a base array for storing an identification of a contiguous group of the memory locations in each array in which voxel elements of a corresponding group of active voxels may be stored. A method of employing the data structure includes associating a column of active voxels in a voxel block, with a group of memory locations in each array, each memoray location being associated with a respective index. Geometric representations and attributes of active voxels in the column are stored in respective memory locations of said group.
    Type: Grant
    Filed: May 16, 2001
    Date of Patent: May 23, 2006
    Assignee: NGRAIN (Canada) Corporation
    Inventor: Paul A. Halmshaw
  • Patent number: 6867774
    Abstract: A method and apparatus are provided for transforming 3D geometric data, such as polygon data (16) formed of polygons (18), into volumetric data (14) formed of voxels (12). According to the method, 3D geometric data to be converted to voxel data are acquired, and the resolution of a final voxel grid to be produced is obtained (e.g., user-defined). Then, each geometric unit (e.g., a polygon) in the 3D geometric data is mapped (or scan converted) to an imaginary voxel grid having a higher resolution than the resolution of the final voxel grid. Next, with respect to the geometric units that are mapped to the imaginary voxels in the imaginary voxel grid dividing one final (actual) voxel into smaller sub-volumes, a weighted average of the attribute values (color, normal, intensity, etc.) is obtained. The weighted average is stored as the attribute value of the final voxel.
    Type: Grant
    Filed: December 2, 2002
    Date of Patent: March 15, 2005
    Assignee: NGRAIN (Canada) Corporation
    Inventors: Paul A. Halmshaw, Jonathan M. Young, Andrew C.-H. Woo