def __init__(self, environment, filename, translation=None, transform=None):
        self.environment = environment
        self.filename = filename

        if translation is None:
            translation = (0.0, 0.0, 0.0)
        elif len(translation) != 3:
            raise ValueError("Translation must be a 3-component offset")

        self.translation = tuple(translation)
        self._transform = transform

        vrml_parser = parser.Parser(parser.grammar, "vrmlFile")
        processor = parseprocessor.ParseProcessor(baseURI=self.filename)
        with open(self.filename, 'r') as f:
            data = f.read()
            self._scene = vrml_parser.parse(data, processor=processor)[1][1]

        self._objects = None