Browse Source

*** empty log message ***

Mark Mine 25 years ago
parent
commit
2733481d1b
2 changed files with 23 additions and 24 deletions
  1. 21 24
      direct/src/tkpanels/MopathRecorder.py
  2. 2 0
      direct/src/tkpanels/ParticlePanel.py

+ 21 - 24
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()

+ 2 - 0
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')