Camera *MakeCamera(const std::string &name, const ParamSet ¶mSet, const TransformSet &cam2worldSet, Float transformStart, Float transformEnd, Film *film) { Camera *camera = nullptr; MediumInterface mediumInterface = graphicsState.CreateMediumInterface(); Assert(MaxTransforms == 2); Transform *cam2world[2]; transformCache.Lookup(cam2worldSet[0], &cam2world[0], nullptr); transformCache.Lookup(cam2worldSet[1], &cam2world[1], nullptr); AnimatedTransform animatedCam2World(cam2world[0], transformStart, cam2world[1], transformEnd); if (name == "perspective") camera = CreatePerspectiveCamera(paramSet, animatedCam2World, film, mediumInterface.outside); else if (name == "orthographic") camera = CreateOrthographicCamera(paramSet, animatedCam2World, film, mediumInterface.outside); else if (name == "realistic") camera = CreateRealisticCamera(paramSet, animatedCam2World, film, mediumInterface.outside); else if (name == "environment") camera = CreateEnvironmentCamera(paramSet, animatedCam2World, film, mediumInterface.outside); else Warning("Camera \"%s\" unknown.", name.c_str()); paramSet.ReportUnused(); return camera; }
Camera *MakeCamera(const string &name, const ParamSet ¶mSet, const TransformSet &cam2worldSet, float transformStart, float transformEnd, Film *film) { Camera *camera = NULL; Assert(MAX_TRANSFORMS == 2); Transform *cam2world[2]; transformCache.Lookup(cam2worldSet[0], &cam2world[0], NULL); transformCache.Lookup(cam2worldSet[1], &cam2world[1], NULL); AnimatedTransform animatedCam2World(cam2world[0], transformStart, cam2world[1], transformEnd); if (name == "perspective") camera = CreatePerspectiveCamera(paramSet, animatedCam2World, film); else if (name == "orthographic") camera = CreateOrthographicCamera(paramSet, animatedCam2World, film); else if (name == "environment") camera = CreateEnvironmentCamera(paramSet, animatedCam2World, film); else Warning("Camera \"%s\" unknown.", name.c_str()); paramSet.ReportUnused(); return camera; }