*** empty log message ***

This commit is contained in:
Mark Mine 2001-02-09 02:12:06 +00:00
parent 9cdaa736eb
commit 2733481d1b
2 changed files with 23 additions and 24 deletions

View File

@ -53,8 +53,8 @@ class MopathRecorder(AppShell, PandaObject):
self.recorderNodePath = direct.group.attachNewNode(self['name']) self.recorderNodePath = direct.group.attachNewNode(self['name'])
self.tempCS = self.recorderNodePath.attachNewNode( self.tempCS = self.recorderNodePath.attachNewNode(
'mopathRecorderTempCS') 'mopathRecorderTempCS')
self.transitionCS = self.recorderNodePath.attachNewNode( self.editCS = self.recorderNodePath.attachNewNode(
'mopathRecorderTransitionCS') 'mopathRecorderEditCS')
self.playbackMarker = loader.loadModel('models/directmodels/smiley') self.playbackMarker = loader.loadModel('models/directmodels/smiley')
self.playbackMarker.reparentTo(self.recorderNodePath) self.playbackMarker.reparentTo(self.recorderNodePath)
self.playbackNodePath = None self.playbackNodePath = None
@ -65,12 +65,14 @@ class MopathRecorder(AppShell, PandaObject):
self.recNodePathDict['camera'] = direct.camera self.recNodePathDict['camera'] = direct.camera
self.recNodePathDict['widget'] = direct.widget self.recNodePathDict['widget'] = direct.widget
self.recNodePathDict['mopathRecorderTempCS'] = self.tempCS self.recNodePathDict['mopathRecorderTempCS'] = self.tempCS
self.recNodePathDict['edit CS'] = self.editCS
self.recNodePathNames = ['marker', 'camera', 'widget', 'selected'] self.recNodePathNames = ['marker', 'camera', 'widget', 'selected']
self.pbNodePathDict = {} self.pbNodePathDict = {}
self.pbNodePathDict['marker'] = self.playbackMarker self.pbNodePathDict['marker'] = self.playbackMarker
self.pbNodePathDict['camera'] = direct.camera self.pbNodePathDict['camera'] = direct.camera
self.pbNodePathDict['widget'] = direct.widget self.pbNodePathDict['widget'] = direct.widget
self.pbNodePathDict['mopathRecorderTempCS'] = self.tempCS self.pbNodePathDict['mopathRecorderEditCS'] = self.tempCS
self.pbNodePathDict['edit CS'] = self.editCS
self.pbNodePathNames = ['marker', 'camera', 'widget', 'selected'] self.pbNodePathNames = ['marker', 'camera', 'widget', 'selected']
# Count of point sets recorded # Count of point sets recorded
self.pointSet = [] self.pointSet = []
@ -786,9 +788,9 @@ class MopathRecorder(AppShell, PandaObject):
self.hprCurveFitter.computeTangents(1) self.hprCurveFitter.computeTangents(1)
self.hprNurbsCurve = self.hprCurveFitter.makeNurbs() self.hprNurbsCurve = self.hprCurveFitter.makeNurbs()
# Update widget based on new curve # Update widget based on new curve
self.updateCurveInfo() self.updateWidgets()
def updateCurveInfo(self): def updateWidgets(self):
if not self.xyzNurbsCurve: if not self.xyzNurbsCurve:
return return
self.fAdjustingValues = 1 self.fAdjustingValues = 1
@ -815,11 +817,14 @@ class MopathRecorder(AppShell, PandaObject):
widget.configure(max = maxT) widget.configure(max = maxT)
widget.set(float(maxT)) widget.set(float(maxT))
self.maxT = float(maxT) self.maxT = float(maxT)
print 'new maxT', self.maxT
# Widgets depending on number of samples # Widgets depending on number of samples
numSamples = self.xyzCurveFitter.getNumSamples() numSamples = self.xyzCurveFitter.getNumSamples()
self.getWidget('Resample', 'Points Between Samples')['max'] = ( widget = self.getWidget('Resample', 'Points Between Samples')
numSamples) widget.configure(max=numSamples)
self.getWidget('Resample', 'Num. Samples')['max'] = 3 * numSamples widget = self.getWidget('Resample', 'Num. Samples')
widget.configure(max = 3 * numSamples)
widget.set(numSamples, 0)
self.fAdjustingValues = 0 self.fAdjustingValues = 0
def selectRecordNodePathNamed(self, name): def selectRecordNodePathNamed(self, name):
@ -1009,8 +1014,6 @@ class MopathRecorder(AppShell, PandaObject):
if not self.fHasPoints: if not self.fHasPoints:
print 'MopathRecorder: Must define curve first' print 'MopathRecorder: Must define curve first'
return return
# Record current curve length
maxT = self.maxT
# NOTE: This is destructive, points will be deleted from curve fitter # NOTE: This is destructive, points will be deleted from curve fitter
self.xyzCurveFitter.desample(self.desampleFrequency) self.xyzCurveFitter.desample(self.desampleFrequency)
self.hprCurveFitter.desample(self.desampleFrequency) self.hprCurveFitter.desample(self.desampleFrequency)
@ -1022,8 +1025,6 @@ class MopathRecorder(AppShell, PandaObject):
pos = Point3(self.xyzCurveFitter.getSamplePoint(i)) pos = Point3(self.xyzCurveFitter.getSamplePoint(i))
hpr = Point3(self.hprCurveFitter.getSamplePoint(i)) hpr = Point3(self.hprCurveFitter.getSamplePoint(i))
self.pointSet.append([time, pos, hpr]) self.pointSet.append([time, pos, hpr])
# Resize curve to original duration
self.setPathDurationTo(maxT)
def setNumSamples(self, numSamples): def setNumSamples(self, numSamples):
self.numSamples = int(numSamples) self.numSamples = int(numSamples)
@ -1032,21 +1033,18 @@ class MopathRecorder(AppShell, PandaObject):
if (self.xyzNurbsCurve == None) & (self.hprNurbsCurve == None): if (self.xyzNurbsCurve == None) & (self.hprNurbsCurve == None):
print 'MopathRecorder: Must define curve first' print 'MopathRecorder: Must define curve first'
return return
# Record current curve length
maxT = self.maxT
# Reset curve fitters # Reset curve fitters
self.xyzCurveFitter.reset() self.xyzCurveFitter.reset()
self.hprCurveFitter.reset() self.hprCurveFitter.reset()
# Get new data points based on given curve # Get new data points based on given curve
self.xyzCurveFitter.sample( self.xyzCurveFitter.sample(
self.xyzNurbsCurve, self.numSamples, self.fEven) self.xyzNurbsCurve, self.numSamples, self.fEven)
# Now resample the hprNurbsCurve at the same times # Now sample the hprNurbsCurve using the resulting times
self.hprCurveFitter.reset()
hpr = Point3(0)
for i in range(self.xyzCurveFitter.getNumSamples()): for i in range(self.xyzCurveFitter.getNumSamples()):
self.hprNurbsCurve.getPoint( t = self.xyzCurveFitter.getSampleT(i)
self.xyzCurveFitter.getSampleT(i), hpr) hpr = Point3(0)
self.hprCurveFitter.addPoint(Point3(hpr)) self.hprNurbsCurve.getPoint(t, hpr)
self.hprCurveFitter.addPoint(t, hpr)
# Now recompute curves # Now recompute curves
self.computeCurves() self.computeCurves()
# Get new point set based on newly created curve # Get new point set based on newly created curve
@ -1056,8 +1054,6 @@ class MopathRecorder(AppShell, PandaObject):
pos = Point3(self.xyzCurveFitter.getSamplePoint(i)) pos = Point3(self.xyzCurveFitter.getSamplePoint(i))
hpr = Point3(self.hprCurveFitter.getSamplePoint(i)) hpr = Point3(self.hprCurveFitter.getSamplePoint(i))
self.pointSet.append([time, pos, hpr]) self.pointSet.append([time, pos, hpr])
# Resize curve to original duration
self.setPathDurationTo(maxT)
def setEven(self): def setEven(self):
self.fEven = self.getVariable('Resample', 'Even').get() self.fEven = self.getVariable('Resample', 'Even').get()
@ -1068,15 +1064,16 @@ class MopathRecorder(AppShell, PandaObject):
def setPathDurationTo(self, newMaxT): def setPathDurationTo(self, newMaxT):
sf = newMaxT/self.maxT sf = newMaxT/self.maxT
# Scale knots # Scale xyz curve knots
for i in range(self.xyzNurbsCurve.getNumKnots()): for i in range(self.xyzNurbsCurve.getNumKnots()):
self.xyzNurbsCurve.setKnot(i, sf * self.xyzNurbsCurve.getKnot(i)) self.xyzNurbsCurve.setKnot(i, sf * self.xyzNurbsCurve.getKnot(i))
self.xyzNurbsCurve.recompute() self.xyzNurbsCurve.recompute()
# Scale hpr curve knots
for i in range(self.hprNurbsCurve.getNumKnots()): for i in range(self.hprNurbsCurve.getNumKnots()):
self.hprNurbsCurve.setKnot(i, sf * self.hprNurbsCurve.getKnot(i)) self.hprNurbsCurve.setKnot(i, sf * self.hprNurbsCurve.getKnot(i))
self.hprNurbsCurve.recompute() self.hprNurbsCurve.recompute()
# Update info # Update info
self.updateCurveInfo() self.updateWidgets()
def toggleRefine(self): def toggleRefine(self):
self.fRefine = self.getVariable('Refine Page', 'Refining Path').get() self.fRefine = self.getVariable('Refine Page', 'Refining Path').get()

View File

@ -284,6 +284,7 @@ class ParticlePanel(AppShell):
zSpinPage, 'Z Spin Factory', zSpinPage, 'Z Spin Factory',
'Initial Angle Spread', 'Initial Angle Spread',
'Spread of the initial angle', 'Spread of the initial angle',
fRollover = 1,
command = self.setFactoryZSpinInitialAngleSpread) command = self.setFactoryZSpinInitialAngleSpread)
self.createAngleDial(zSpinPage, 'Z Spin Factory', 'Final Angle', self.createAngleDial(zSpinPage, 'Z Spin Factory', 'Final Angle',
'Final angle in degrees', 'Final angle in degrees',
@ -293,6 +294,7 @@ class ParticlePanel(AppShell):
zSpinPage, 'Z Spin Factory', zSpinPage, 'Z Spin Factory',
'Final Angle Spread', 'Final Angle Spread',
'Spread of the final angle', 'Spread of the final angle',
fRollover = 1,
command = self.setFactoryZSpinFinalAngleSpread) command = self.setFactoryZSpinFinalAngleSpread)
# Oriented page # # Oriented page #
orientedPage = self.factoryNotebook.add('OrientedParticleFactory') orientedPage = self.factoryNotebook.add('OrientedParticleFactory')