I wouldn’t browse cells but only points. I also wouldn’t create an RGB scalar array, but a simple scalar array:
const points = polyData.getPoints();
const scalars = vtkDataArray.newInstance({dataType: image.getPointData().getDataType(), size: points.getNumberOfPoints(), numberOfComponents:1});
const xyz = [];
for (let i = 0; i < points.getNumberOfPoints(); ++i) {
points.getPoint(i, xyz);
const currentVxValue = image.getScalarValueFromWorld(xyz,0);
scalars.setTuple(i, [currentVxValue]);
}
polydata.getPointData().setScalars(scalars);
...