A 3D gaze estimation and tracking algorithm based on facial feature tracking is presented in this paper. Firstly, we used the Active Shape Model (ASM) to extract facial feature points with a stereo camera. Then, the full 3D pose of head is estimated by comparing the feature points of current pose with initial head pose. After that, the center of eyeball is obtained based on a 3D eye model which is related to head pose and the middle point of eye corners. Thereby, optical axis was computed as 3D vectors through the center of eyeball to the center of pupil. Finally, visual axis was gotten by adding an angle to optical axis. Here, in our system, a one-time personal calibration is used to determine this angle. The experimental results show the accuracy of our gaze tracking system achieves less than 3 degree.