Learning to generate and differentiate 3D objects using geometry & language