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
1f1427fb8d
commit
8d4e5940d5
@ -109,7 +109,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
self.startStopHook = 'f6'
|
self.startStopHook = 'f6'
|
||||||
self.keyframeHook = 'f10'
|
self.keyframeHook = 'f10'
|
||||||
# Curve fitter object
|
# Curve fitter object
|
||||||
self.startPos = Point3(0)
|
self.lastPos = Point3(0)
|
||||||
self.xyzCurveFitter = CurveFitter()
|
self.xyzCurveFitter = CurveFitter()
|
||||||
self.hprCurveFitter = CurveFitter()
|
self.hprCurveFitter = CurveFitter()
|
||||||
# Curve variables
|
# Curve variables
|
||||||
@ -139,6 +139,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
self.desampleFrequency = 1
|
self.desampleFrequency = 1
|
||||||
self.numSamples = 100
|
self.numSamples = 100
|
||||||
self.recordStart = 0.0
|
self.recordStart = 0.0
|
||||||
|
self.deltaTime = 0.0
|
||||||
self.controlStart = 0.0
|
self.controlStart = 0.0
|
||||||
self.controlStop = 0.0
|
self.controlStop = 0.0
|
||||||
self.recordStop = 0.0
|
self.recordStop = 0.0
|
||||||
@ -410,7 +411,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
widget = self.createEntryScale(
|
widget = self.createEntryScale(
|
||||||
resampleFrame, 'Resample', 'Num. Samples',
|
resampleFrame, 'Resample', 'Num. Samples',
|
||||||
'Number of samples in resampled curve',
|
'Number of samples in resampled curve',
|
||||||
resolution = 1, max = 1000, command = self.setNumSamples,
|
resolution = 1, min = 2, max = 1000, command = self.setNumSamples,
|
||||||
side = LEFT)
|
side = LEFT)
|
||||||
widget.component('hull')['relief'] = RIDGE
|
widget.component('hull')['relief'] = RIDGE
|
||||||
widget.onRelease = widget.onReturnRelease = self.sampleCurve
|
widget.onRelease = widget.onReturnRelease = self.sampleCurve
|
||||||
@ -744,6 +745,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
self.ignore(self.startStopHook)
|
self.ignore(self.startStopHook)
|
||||||
self.ignore(self.keyframeHook)
|
self.ignore(self.keyframeHook)
|
||||||
self.curveNodePath.reparentTo(self.recorderNodePath)
|
self.curveNodePath.reparentTo(self.recorderNodePath)
|
||||||
|
self.trace.reparentTo(self.recorderNodePath)
|
||||||
self.recorderNodePath.removeNode()
|
self.recorderNodePath.removeNode()
|
||||||
# Make sure markers are deselected
|
# Make sure markers are deselected
|
||||||
direct.deselect(self.playbackMarker)
|
direct.deselect(self.playbackMarker)
|
||||||
@ -937,8 +939,11 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# Keyframe mode?
|
# Keyframe mode?
|
||||||
if (self.samplingMode == 'Keyframe'):
|
if (self.samplingMode == 'Keyframe'):
|
||||||
# Record first point
|
# Record first point
|
||||||
self.startPos = Point3(
|
self.lastPos.assign(Point3(
|
||||||
self['nodePath'].getPos(self.nodePathParent))
|
self['nodePath'].getPos(self.nodePathParent)))
|
||||||
|
# Init delta time
|
||||||
|
self.deltaTime = 0.0
|
||||||
|
# Record first point
|
||||||
self.recordPoint(self.recordStart)
|
self.recordPoint(self.recordStart)
|
||||||
# Everything else
|
# Everything else
|
||||||
else:
|
else:
|
||||||
@ -1010,15 +1015,19 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# This will automatically add the first point
|
# This will automatically add the first point
|
||||||
self.toggleRecordVar()
|
self.toggleRecordVar()
|
||||||
else:
|
else:
|
||||||
time = (self.recordStart +
|
# Use distance as a time
|
||||||
(Vec3(self['nodePath'].getPos(self.nodePathParent) -
|
pos = self['nodePath'].getPos(self.nodePathParent)
|
||||||
self.startPos).length()))
|
deltaPos = Vec3(pos - self.lastPos).length()
|
||||||
# Did we move at all?
|
if deltaPos != 0:
|
||||||
if len(self.pointSet) > 0:
|
# If we've moved at all, use delta Pos as time
|
||||||
if time == self.pointSet[-1][0]:
|
self.deltaTime = self.deltaTime + deltaPos
|
||||||
print 'No delta'
|
else:
|
||||||
return
|
# Otherwise add one second
|
||||||
self.recordPoint(time)
|
self.deltaTime = self.deltaTime + 1.0
|
||||||
|
# Record point at new time
|
||||||
|
self.recordPoint(self.recordStart + self.deltaTime)
|
||||||
|
# Update last pos
|
||||||
|
self.lastPos.assign(pos)
|
||||||
|
|
||||||
def easeInOut(self, t):
|
def easeInOut(self, t):
|
||||||
x = t * t
|
x = t * t
|
||||||
@ -1320,16 +1329,23 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
cTime = state.currentTime + dTime
|
cTime = state.currentTime + dTime
|
||||||
# Stop task if not looping and at end of curve
|
# Stop task if not looping and at end of curve
|
||||||
# Or if refining curve and past recordStop
|
# Or if refining curve and past recordStop
|
||||||
if (((self.loopPlayback == 0) & (cTime > self.maxT)) |
|
if ((self.recordingType.get() == 'Refine') &
|
||||||
((self.recordingType.get() == 'Extend') & (cTime > self.maxT)) |
|
(cTime > self.recordStop)):
|
||||||
((self.recordingType.get() == 'Refine') &
|
# Go to recordStop
|
||||||
(cTime > self.recordStop))):
|
self.getWidget('Playback', 'Time').set(self.recordStop)
|
||||||
|
# Then stop playback
|
||||||
self.stopPlayback()
|
self.stopPlayback()
|
||||||
if (self.recordingType.get() == 'Refine'):
|
# Also kill record task
|
||||||
# Also kill record task
|
self.toggleRecordVar()
|
||||||
self.toggleRecordVar()
|
|
||||||
return Task.done
|
return Task.done
|
||||||
# Otherwise go to specified time
|
elif (((self.loopPlayback == 0) & (cTime > self.maxT)) |
|
||||||
|
((self.recordingType.get() == 'Extend') & (cTime > self.maxT))):
|
||||||
|
# Go to maxT
|
||||||
|
self.getWidget('Playback', 'Time').set(self.maxT)
|
||||||
|
# Then stop playback
|
||||||
|
self.stopPlayback()
|
||||||
|
return Task.done
|
||||||
|
# Otherwise go to specified time and continue
|
||||||
self.getWidget('Playback', 'Time').set(cTime)
|
self.getWidget('Playback', 'Time').set(cTime)
|
||||||
state.currentTime = cTime
|
state.currentTime = cTime
|
||||||
return Task.cont
|
return Task.cont
|
||||||
@ -1394,7 +1410,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
lookAtCS = self.playbackMarker.attachNewNode('lookAt')
|
lookAtCS = self.playbackMarker.attachNewNode('lookAt')
|
||||||
# Now sample the hprNurbsCurve using the same delta T
|
# Now sample the hprNurbsCurve using the same delta T
|
||||||
for i in range(self.numSamples):
|
for i in range(self.numSamples):
|
||||||
t = self.maxT * (i / float(self.numSamples))
|
t = self.maxT * (i / float(self.numSamples - 1))
|
||||||
hpr = Point3(0)
|
hpr = Point3(0)
|
||||||
if self.fForward:
|
if self.fForward:
|
||||||
# Use xyz curve tangent
|
# Use xyz curve tangent
|
||||||
|
Loading…
x
Reference in New Issue
Block a user