def testCameraCmdlineArgs(self): """ Tests argument parsing when camera-related args are added. """ UsdAppUtils.cameraArgs.AddCmdlineArgs(self._parser) # By default, the camera arg should contain the primary camera name. args = self._parser.parse_args([]) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera.pathString, UsdUtils.GetPrimaryCameraName()) args = self._parser.parse_args(['--camera', 'MainCamera']) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera.pathString, 'MainCamera') args = self._parser.parse_args(['-cam', 'MainCamera']) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera.pathString, 'MainCamera') args = self._parser.parse_args(['--camera', '/Path/To/Some/Camera']) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera.pathString, '/Path/To/Some/Camera') args = self._parser.parse_args(['--camera', '']) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera, Sdf.Path.emptyPath) # Test adding camera args with a different default value. parser = argparse.ArgumentParser(prog=self._progName) UsdAppUtils.cameraArgs.AddCmdlineArgs(parser, defaultValue='MainCamera') args = parser.parse_args([]) self.assertEqual(type(args.camera), Sdf.Path) self.assertEqual(args.camera.pathString, 'MainCamera')
def setUpClass(cls): cls._usdFilePath = os.path.abspath('AnimCube.usda') cls._stage = Usd.Stage.Open(cls._usdFilePath) cls._usdCamera = UsdAppUtils.GetCameraAtPath( cls._stage, UsdUtils.GetPrimaryCameraName()) cls._glWidget = cls._SetupOpenGLContext() cls._frameRecorder = UsdAppUtils.FrameRecorder() cls._frameRecorder.SetColorCorrectionMode('sRGB')
def AddCmdlineArgs(argsParser, defaultValue=None, altHelpText=''): """ Adds camera-related command line arguments to argsParser. The resulting 'camera' argument will be an Sdf.Path. If no value is given and defaultValue is not overridden, 'camera' will be a single-element path containing the primary camera name. """ from pxr import Sdf from pxr import UsdUtils if defaultValue is None: defaultValue = UsdUtils.GetPrimaryCameraName() helpText = altHelpText if not helpText: helpText = ( 'Which camera to use - may be given as either just the ' 'camera\'s prim name (i.e. just the last element in the prim ' 'path), or as a full prim path. Note that if only the prim name ' 'is used and more than one camera exists with that name, which ' 'one is used will effectively be random (default=%(default)s)') # This avoids an Sdf warning if an empty string is given, which someone # might do for example with usdview to open the app using the 'Free' camera # instead of the primary camera. def _ToSdfPath(inputArg): if not inputArg: return Sdf.Path.emptyPath return Sdf.Path(inputArg) argsParser.add_argument('--camera', '-cam', action='store', type=_ToSdfPath, default=defaultValue, help=helpText)