From 2733481d1b6e454ecbdeea8f36b91ed7d9eeb785 Mon Sep 17 00:00:00 2001 From: Mark Mine Date: Fri, 9 Feb 2001 02:12:06 +0000 Subject: [PATCH] *** empty log message *** --- direct/src/tkpanels/MopathRecorder.py | 45 +++++++++++++-------------- direct/src/tkpanels/ParticlePanel.py | 2 ++ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/direct/src/tkpanels/MopathRecorder.py b/direct/src/tkpanels/MopathRecorder.py index 2a3661e3c5..c1a713e4ff 100644 --- a/direct/src/tkpanels/MopathRecorder.py +++ b/direct/src/tkpanels/MopathRecorder.py @@ -53,8 +53,8 @@ class MopathRecorder(AppShell, PandaObject): self.recorderNodePath = direct.group.attachNewNode(self['name']) self.tempCS = self.recorderNodePath.attachNewNode( 'mopathRecorderTempCS') - self.transitionCS = self.recorderNodePath.attachNewNode( - 'mopathRecorderTransitionCS') + self.editCS = self.recorderNodePath.attachNewNode( + 'mopathRecorderEditCS') self.playbackMarker = loader.loadModel('models/directmodels/smiley') self.playbackMarker.reparentTo(self.recorderNodePath) self.playbackNodePath = None @@ -65,12 +65,14 @@ class MopathRecorder(AppShell, PandaObject): self.recNodePathDict['camera'] = direct.camera self.recNodePathDict['widget'] = direct.widget self.recNodePathDict['mopathRecorderTempCS'] = self.tempCS + self.recNodePathDict['edit CS'] = self.editCS self.recNodePathNames = ['marker', 'camera', 'widget', 'selected'] self.pbNodePathDict = {} self.pbNodePathDict['marker'] = self.playbackMarker self.pbNodePathDict['camera'] = direct.camera 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'] # Count of point sets recorded self.pointSet = [] @@ -786,9 +788,9 @@ class MopathRecorder(AppShell, PandaObject): self.hprCurveFitter.computeTangents(1) self.hprNurbsCurve = self.hprCurveFitter.makeNurbs() # Update widget based on new curve - self.updateCurveInfo() + self.updateWidgets() - def updateCurveInfo(self): + def updateWidgets(self): if not self.xyzNurbsCurve: return self.fAdjustingValues = 1 @@ -815,11 +817,14 @@ class MopathRecorder(AppShell, PandaObject): widget.configure(max = maxT) widget.set(float(maxT)) self.maxT = float(maxT) + print 'new maxT', self.maxT # Widgets depending on number of samples numSamples = self.xyzCurveFitter.getNumSamples() - self.getWidget('Resample', 'Points Between Samples')['max'] = ( - numSamples) - self.getWidget('Resample', 'Num. Samples')['max'] = 3 * numSamples + widget = self.getWidget('Resample', 'Points Between Samples') + widget.configure(max=numSamples) + widget = self.getWidget('Resample', 'Num. Samples') + widget.configure(max = 3 * numSamples) + widget.set(numSamples, 0) self.fAdjustingValues = 0 def selectRecordNodePathNamed(self, name): @@ -1009,8 +1014,6 @@ class MopathRecorder(AppShell, PandaObject): if not self.fHasPoints: print 'MopathRecorder: Must define curve first' return - # Record current curve length - maxT = self.maxT # NOTE: This is destructive, points will be deleted from curve fitter self.xyzCurveFitter.desample(self.desampleFrequency) self.hprCurveFitter.desample(self.desampleFrequency) @@ -1022,8 +1025,6 @@ class MopathRecorder(AppShell, PandaObject): pos = Point3(self.xyzCurveFitter.getSamplePoint(i)) hpr = Point3(self.hprCurveFitter.getSamplePoint(i)) self.pointSet.append([time, pos, hpr]) - # Resize curve to original duration - self.setPathDurationTo(maxT) def setNumSamples(self, numSamples): self.numSamples = int(numSamples) @@ -1032,21 +1033,18 @@ class MopathRecorder(AppShell, PandaObject): if (self.xyzNurbsCurve == None) & (self.hprNurbsCurve == None): print 'MopathRecorder: Must define curve first' return - # Record current curve length - maxT = self.maxT # Reset curve fitters self.xyzCurveFitter.reset() self.hprCurveFitter.reset() # Get new data points based on given curve self.xyzCurveFitter.sample( self.xyzNurbsCurve, self.numSamples, self.fEven) - # Now resample the hprNurbsCurve at the same times - self.hprCurveFitter.reset() - hpr = Point3(0) + # Now sample the hprNurbsCurve using the resulting times for i in range(self.xyzCurveFitter.getNumSamples()): - self.hprNurbsCurve.getPoint( - self.xyzCurveFitter.getSampleT(i), hpr) - self.hprCurveFitter.addPoint(Point3(hpr)) + t = self.xyzCurveFitter.getSampleT(i) + hpr = Point3(0) + self.hprNurbsCurve.getPoint(t, hpr) + self.hprCurveFitter.addPoint(t, hpr) # Now recompute curves self.computeCurves() # Get new point set based on newly created curve @@ -1056,8 +1054,6 @@ class MopathRecorder(AppShell, PandaObject): pos = Point3(self.xyzCurveFitter.getSamplePoint(i)) hpr = Point3(self.hprCurveFitter.getSamplePoint(i)) self.pointSet.append([time, pos, hpr]) - # Resize curve to original duration - self.setPathDurationTo(maxT) def setEven(self): self.fEven = self.getVariable('Resample', 'Even').get() @@ -1068,15 +1064,16 @@ class MopathRecorder(AppShell, PandaObject): def setPathDurationTo(self, newMaxT): sf = newMaxT/self.maxT - # Scale knots + # Scale xyz curve knots for i in range(self.xyzNurbsCurve.getNumKnots()): self.xyzNurbsCurve.setKnot(i, sf * self.xyzNurbsCurve.getKnot(i)) self.xyzNurbsCurve.recompute() + # Scale hpr curve knots for i in range(self.hprNurbsCurve.getNumKnots()): self.hprNurbsCurve.setKnot(i, sf * self.hprNurbsCurve.getKnot(i)) self.hprNurbsCurve.recompute() # Update info - self.updateCurveInfo() + self.updateWidgets() def toggleRefine(self): self.fRefine = self.getVariable('Refine Page', 'Refining Path').get() diff --git a/direct/src/tkpanels/ParticlePanel.py b/direct/src/tkpanels/ParticlePanel.py index 3fdd0617a2..fd6514606f 100644 --- a/direct/src/tkpanels/ParticlePanel.py +++ b/direct/src/tkpanels/ParticlePanel.py @@ -284,6 +284,7 @@ class ParticlePanel(AppShell): zSpinPage, 'Z Spin Factory', 'Initial Angle Spread', 'Spread of the initial angle', + fRollover = 1, command = self.setFactoryZSpinInitialAngleSpread) self.createAngleDial(zSpinPage, 'Z Spin Factory', 'Final Angle', 'Final angle in degrees', @@ -293,6 +294,7 @@ class ParticlePanel(AppShell): zSpinPage, 'Z Spin Factory', 'Final Angle Spread', 'Spread of the final angle', + fRollover = 1, command = self.setFactoryZSpinFinalAngleSpread) # Oriented page # orientedPage = self.factoryNotebook.add('OrientedParticleFactory')