mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
*** empty log message ***
This commit is contained in:
parent
9cdaa736eb
commit
2733481d1b
@ -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()
|
||||||
|
@ -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')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user