mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
*** empty log message ***
This commit is contained in:
parent
ee5f7745d9
commit
9df4ea89b4
@ -59,6 +59,7 @@ 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.nodePathParent = render
|
||||||
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.playbackMarker.hide()
|
self.playbackMarker.hide()
|
||||||
@ -105,7 +106,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
self.preRecordFunc = None
|
self.preRecordFunc = None
|
||||||
# Hook to start/stop recording
|
# Hook to start/stop recording
|
||||||
self.startStopHook = 'f6'
|
self.startStopHook = 'f6'
|
||||||
self.keyframeHook = 'f12'
|
self.keyframeHook = 'f10'
|
||||||
# Curve fitter object
|
# Curve fitter object
|
||||||
self.startPos = Point3(0)
|
self.startPos = Point3(0)
|
||||||
self.xyzCurveFitter = CurveFitter()
|
self.xyzCurveFitter = CurveFitter()
|
||||||
@ -669,12 +670,12 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# Show playback marker
|
# Show playback marker
|
||||||
self.playbackMarker.getChild(0).show()
|
self.playbackMarker.getChild(0).show()
|
||||||
pos = Point3(0)
|
pos = Point3(0)
|
||||||
pos = self.playbackMarker.getPos()
|
pos = self.playbackMarker.getPos(self.nodePathParent)
|
||||||
self.xyzNurbsCurve.adjustPoint(
|
self.xyzNurbsCurve.adjustPoint(
|
||||||
self.playbackTime,
|
self.playbackTime,
|
||||||
pos[0], pos[1], pos[2])
|
pos[0], pos[1], pos[2])
|
||||||
hpr = Point3(0)
|
hpr = Point3(0)
|
||||||
hpr = self.playbackMarker.getHpr()
|
hpr = self.playbackMarker.getHpr(self.nodePathParent)
|
||||||
self.hprNurbsCurve.adjustPoint(
|
self.hprNurbsCurve.adjustPoint(
|
||||||
self.playbackTime,
|
self.playbackTime,
|
||||||
hpr[0], hpr[1], hpr[2])
|
hpr[0], hpr[1], hpr[2])
|
||||||
@ -685,7 +686,7 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# Hide playback marker
|
# Hide playback marker
|
||||||
self.playbackMarker.getChild(0).hide()
|
self.playbackMarker.getChild(0).hide()
|
||||||
# If manipulating marker, update curve
|
# If manipulating marker, update curve
|
||||||
tan = self.tangentMarker.getPos()
|
tan = self.tangentMarker.getPos(self.nodePathParent)
|
||||||
self.xyzNurbsCurve.adjustTangent(
|
self.xyzNurbsCurve.adjustTangent(
|
||||||
self.playbackTime,
|
self.playbackTime,
|
||||||
tan[0], tan[1], tan[2])
|
tan[0], tan[1], tan[2])
|
||||||
@ -794,9 +795,9 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
|
|
||||||
def setTraceVis(self):
|
def setTraceVis(self):
|
||||||
if self.getVariable('Style', 'Show Trace').get():
|
if self.getVariable('Style', 'Show Trace').get():
|
||||||
self.trace.reparentTo(self.recorderNodePath)
|
self.trace.show()
|
||||||
else:
|
else:
|
||||||
self.trace.reparentTo(hidden)
|
self.trace.hide()
|
||||||
|
|
||||||
def setMarkerVis(self):
|
def setMarkerVis(self):
|
||||||
if self.getVariable('Style', 'Show Marker').get():
|
if self.getVariable('Style', 'Show Marker').get():
|
||||||
@ -846,19 +847,13 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
|
|
||||||
def setKeyframeHook(self, event = None):
|
def setKeyframeHook(self, event = None):
|
||||||
# Clear out old hook
|
# Clear out old hook
|
||||||
self.ignoreKeyframeHook()
|
self.ignore(self.keyframeHook)
|
||||||
# Record new one
|
# Record new one
|
||||||
hook = self.getVariable('Recording', 'Keyframe Hook').get()
|
hook = self.getVariable('Recording', 'Keyframe Hook').get()
|
||||||
self.keyframeHook = hook
|
self.keyframeHook = hook
|
||||||
|
|
||||||
def acceptKeyframeHook(self):
|
|
||||||
# Add new one
|
# Add new one
|
||||||
self.accept(self.keyframeHook, self.addKeyframe)
|
self.accept(self.keyframeHook, self.addKeyframe)
|
||||||
|
|
||||||
def ignoreKeyframeHook(self):
|
|
||||||
# Clear out old hook
|
|
||||||
self.ignore(self.keyframeHook)
|
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.pointSet = []
|
self.pointSet = []
|
||||||
self.hasPoints = 0
|
self.hasPoints = 0
|
||||||
@ -898,8 +893,9 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
|
|
||||||
def toggleRecord(self):
|
def toggleRecord(self):
|
||||||
if self.getVariable('Recording', 'Record').get():
|
if self.getVariable('Recording', 'Record').get():
|
||||||
# Kill old task
|
# Kill old tasks
|
||||||
taskMgr.removeTasksNamed(self.name + '-recordTask')
|
taskMgr.removeTasksNamed(self.name + '-recordTask')
|
||||||
|
taskMgr.removeTasksNamed(self.name + '-curveEditTask')
|
||||||
# Remove old curve
|
# Remove old curve
|
||||||
self.xyzNurbsCurveDrawer.hide()
|
self.xyzNurbsCurveDrawer.hide()
|
||||||
# Reset curve fitters
|
# Reset curve fitters
|
||||||
@ -912,10 +908,12 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
self.createNewPointSet()
|
self.createNewPointSet()
|
||||||
# Record nopath's parent
|
# Record nopath's parent
|
||||||
self.nodePathParent = self['nodePath'].getParent()
|
self.nodePathParent = self['nodePath'].getParent()
|
||||||
|
# Put curve drawer under record node path's parent
|
||||||
|
self.curveNodePath.reparentTo(self.nodePathParent)
|
||||||
|
# Clear out old trace, get ready to draw new
|
||||||
|
self.initTrace()
|
||||||
# Keyframe mode?
|
# Keyframe mode?
|
||||||
if (self.samplingMode == 'Keyframe'):
|
if (self.samplingMode == 'Keyframe'):
|
||||||
# Add hook
|
|
||||||
self.acceptKeyframeHook()
|
|
||||||
# Record first point
|
# Record first point
|
||||||
self.startPos = Point3(
|
self.startPos = Point3(
|
||||||
self['nodePath'].getPos(self.nodePathParent))
|
self['nodePath'].getPos(self.nodePathParent))
|
||||||
@ -959,8 +957,6 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
else:
|
else:
|
||||||
# Add last point
|
# Add last point
|
||||||
self.addKeyframe(0)
|
self.addKeyframe(0)
|
||||||
# Ignore hook
|
|
||||||
self.ignoreKeyframeHook()
|
|
||||||
# Reset sampling mode
|
# Reset sampling mode
|
||||||
self.setSamplingMode('Continuous')
|
self.setSamplingMode('Continuous')
|
||||||
self.enableKeyframeButton()
|
self.enableKeyframeButton()
|
||||||
@ -995,6 +991,11 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
time = (self.recordStart +
|
time = (self.recordStart +
|
||||||
(Vec3(self['nodePath'].getPos(self.nodePathParent) -
|
(Vec3(self['nodePath'].getPos(self.nodePathParent) -
|
||||||
self.startPos).length()))
|
self.startPos).length()))
|
||||||
|
# Did we move at all?
|
||||||
|
if len(self.pointSet) > 0:
|
||||||
|
if time == self.pointSet[-1][0]:
|
||||||
|
print 'No delta'
|
||||||
|
return
|
||||||
self.recordPoint(time)
|
self.recordPoint(time)
|
||||||
|
|
||||||
def easeInOut(self, t):
|
def easeInOut(self, t):
|
||||||
@ -1043,6 +1044,12 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# Add it to the curve fitters
|
# Add it to the curve fitters
|
||||||
self.xyzCurveFitter.addPoint(time, pos )
|
self.xyzCurveFitter.addPoint(time, pos )
|
||||||
self.hprCurveFitter.addPoint(time, hpr)
|
self.hprCurveFitter.addPoint(time, hpr)
|
||||||
|
# Update trace now if recording keyframes
|
||||||
|
if (self.samplingMode == 'Keyframe'):
|
||||||
|
self.trace.reset()
|
||||||
|
for t, p, h in self.pointSet:
|
||||||
|
self.trace.drawTo(p[0], p[1], p[2])
|
||||||
|
self.trace.create()
|
||||||
|
|
||||||
def computeCurves(self):
|
def computeCurves(self):
|
||||||
# Check to make sure curve fitters have points
|
# Check to make sure curve fitters have points
|
||||||
@ -1067,6 +1074,13 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
# Update widget based on new curve
|
# Update widget based on new curve
|
||||||
self.updateWidgets()
|
self.updateWidgets()
|
||||||
|
|
||||||
|
def initTrace(self):
|
||||||
|
self.trace.reset()
|
||||||
|
# Put trace line segs under node path's parent
|
||||||
|
self.trace.reparentTo(self.nodePathParent)
|
||||||
|
# Show it
|
||||||
|
self.trace.show()
|
||||||
|
|
||||||
def updateWidgets(self):
|
def updateWidgets(self):
|
||||||
if not self.xyzNurbsCurve:
|
if not self.xyzNurbsCurve:
|
||||||
return
|
return
|
||||||
@ -1156,8 +1170,6 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
if self['nodePath']:
|
if self['nodePath']:
|
||||||
self.recNodePathMenuEntry.configure(
|
self.recNodePathMenuEntry.configure(
|
||||||
background = self.recNodePathMenuBG)
|
background = self.recNodePathMenuBG)
|
||||||
# Put curve drawer under record node path's parent
|
|
||||||
self.curveNodePath.reparentTo(nodePath.getParent())
|
|
||||||
else:
|
else:
|
||||||
# Flash entry
|
# Flash entry
|
||||||
self.recNodePathMenuEntry.configure(background = 'Pink')
|
self.recNodePathMenuEntry.configure(background = 'Pink')
|
||||||
@ -1251,11 +1263,11 @@ class MopathRecorder(AppShell, PandaObject):
|
|||||||
if self.xyzNurbsCurve != None:
|
if self.xyzNurbsCurve != None:
|
||||||
pos = Point3(0)
|
pos = Point3(0)
|
||||||
self.xyzNurbsCurve.getPoint(self.playbackTime, pos)
|
self.xyzNurbsCurve.getPoint(self.playbackTime, pos)
|
||||||
self.playbackNodePath.setPos(pos)
|
self.playbackNodePath.setPos(self.nodePathParent, pos)
|
||||||
if self.hprNurbsCurve != None:
|
if self.hprNurbsCurve != None:
|
||||||
hpr = Point3(0)
|
hpr = Point3(0)
|
||||||
self.hprNurbsCurve.getPoint(self.playbackTime, hpr)
|
self.hprNurbsCurve.getPoint(self.playbackTime, hpr)
|
||||||
self.playbackNodePath.setHpr(hpr)
|
self.playbackNodePath.setHpr(self.nodePathParent, hpr)
|
||||||
|
|
||||||
def startPlayback(self):
|
def startPlayback(self):
|
||||||
if (self.xyzNurbsCurve == None) & (self.hprNurbsCurve == None):
|
if (self.xyzNurbsCurve == None) & (self.hprNurbsCurve == None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user