implement set/get for cameraParams
This commit is contained in:
parent
8a6640c419
commit
394b0dd75c
@ -48,10 +48,9 @@ class GLPainterItem(pg.opengl.GLGraphicsItem.GLGraphicsItem):
|
|||||||
painter.drawText(rect, af.AlignBottom | af.AlignLeft, 'BL')
|
painter.drawText(rect, af.AlignBottom | af.AlignLeft, 'BL')
|
||||||
painter.drawText(rect, af.AlignBottom | af.AlignRight, 'BR')
|
painter.drawText(rect, af.AlignBottom | af.AlignRight, 'BR')
|
||||||
|
|
||||||
opts = self.view().getCameraPosition()
|
opts = self.view().cameraParams()
|
||||||
opts['fov'] = self.view().fov()
|
|
||||||
lines = []
|
lines = []
|
||||||
center = opts['pos']
|
center = opts['center']
|
||||||
lines.append(f"center : ({center.x():.1f}, {center.y():.1f}, {center.z():.1f})")
|
lines.append(f"center : ({center.x():.1f}, {center.y():.1f}, {center.z():.1f})")
|
||||||
for key in ['distance', 'fov', 'elevation', 'azimuth']:
|
for key in ['distance', 'fov', 'elevation', 'azimuth']:
|
||||||
lines.append(f"{key} : {opts[key]:.1f}")
|
lines.append(f"{key} : {opts[key]:.1f}")
|
||||||
|
@ -308,22 +308,6 @@ class GLViewWidget(QtWidgets.QOpenGLWidget):
|
|||||||
|
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def getCameraPosition(self):
|
|
||||||
opts = { 'pos': self.opts['center'],
|
|
||||||
'distance' : self.opts['distance'] }
|
|
||||||
if self.opts['rotationMethod'] == "quaternion":
|
|
||||||
opts['rotation'] = self.opts['rotation']
|
|
||||||
else:
|
|
||||||
opts['elevation'] = self.opts['elevation']
|
|
||||||
opts['azimuth'] = self.opts['azimuth']
|
|
||||||
return opts
|
|
||||||
|
|
||||||
def setFov(self, fov):
|
|
||||||
self.opts['fov'] = fov
|
|
||||||
|
|
||||||
def fov(self):
|
|
||||||
return self.opts['fov']
|
|
||||||
|
|
||||||
def cameraPosition(self):
|
def cameraPosition(self):
|
||||||
"""Return current position of camera based on center, dist, elevation, and azimuth"""
|
"""Return current position of camera based on center, dist, elevation, and azimuth"""
|
||||||
center = self.opts['center']
|
center = self.opts['center']
|
||||||
@ -341,6 +325,21 @@ class GLViewWidget(QtWidgets.QOpenGLWidget):
|
|||||||
)
|
)
|
||||||
return pos
|
return pos
|
||||||
|
|
||||||
|
def setCameraParams(self, **kwds):
|
||||||
|
valid_keys = {'center', 'rotation', 'distance', 'fov', 'elevation', 'azimuth'}
|
||||||
|
if not set(kwds).issubset(valid_keys):
|
||||||
|
raise ValueError(f'valid keywords are {valid_keys}')
|
||||||
|
|
||||||
|
self.setCameraPosition(pos=kwds.get('center'), distance=kwds.get('distance'),
|
||||||
|
elevation=kwds.get('elevation'), azimuth=kwds.get('azimuth'),
|
||||||
|
rotation=kwds.get('rotation'))
|
||||||
|
if 'fov' in kwds:
|
||||||
|
self.opts['fov'] = kwds['fov']
|
||||||
|
|
||||||
|
def cameraParams(self):
|
||||||
|
valid_keys = {'center', 'rotation', 'distance', 'fov', 'elevation', 'azimuth'}
|
||||||
|
return { k : self.opts[k] for k in valid_keys }
|
||||||
|
|
||||||
def orbit(self, azim, elev):
|
def orbit(self, azim, elev):
|
||||||
"""Orbits the camera around the center position. *azim* and *elev* are given in degrees."""
|
"""Orbits the camera around the center position. *azim* and *elev* are given in degrees."""
|
||||||
if self.opts['rotationMethod'] == 'quaternion':
|
if self.opts['rotationMethod'] == 'quaternion':
|
||||||
|
Loading…
Reference in New Issue
Block a user