Hi Jie,
What you are trying to do is OK, but the problem is in the way you are turning the ROI into a 1D file. You should use ROI2dataset to transform the ROI into a dataset. Also, I would avoid the 1D format which is lossy and stick to NIML instead. 3dSurf2Vol's -sdata option supports NIML or GIFTI input.
I assume the ROI was drawn on a standard mesh surface, so if that is the case, you can use the same dataset you derived from this ROI for each subject as input to 3dSurf2Vol. The Surf2Vol command will differ from subject to subject by its -sv parameter and its -grid_parent. Verify the output to be sure all went well.
Now that you have an volume mask of your ROI you can use any one of the numerous programs to extract data values from ROI.
Another way to do this consists of mapping the time series from each subject onto the surface and then extracting the time series from the nodes that belong to the ROI. If you are not familiar with the extraction of ROI data from the surface, take a look at the demo scripts called run_* under the afni/ directory of the
suma_demo.tgz archive that we use in the bootcamp. The run_ROIdump script in particular demonstrates how to extract surface-based data from certain ROIs.
There are also ways to create solid volumes from surface ROI patches with SurfPatch (example 1 in the -help output).
cheers,
Ziad