1. A method for recommending products, comprising: receiving a three-dimensional (3D) model of one or more products; performing motion tracking and understanding an environment with points or planes and estimating light or color in the environment; acquiring sensor data from sensors and optimizing features extracted from each image and sensor data; and iteratively changing product position until satisfied to identify a best fitting product; setting each best fitting product's inside dimension with dimensions from the 3D model plus a predetermined gap; correlating different manufacturer's product sizes and creating correspondences among different manufacturer products; and recommending a new product by looking up the correspondences among different manufacturer products; and projecting the product in the environment.