def getVerticesAtFrame(self, frame, refVertexX, invertFrontAndBack): vertices = VertexUtils.computeVertices(self.trained, self.StepArgument, frame % 1) vertices = VertexUtils.translateVertices(vertices, refVertexX, 0) if invertFrontAndBack: self.invertFrontAndBack(vertices) return vertices
def loadData(datafile, stepfile): data = VertexUtils.getJsonData(datafile) stepWidth = VertexUtils.getJsonData(stepfile) MinStepArgument = stepWidth["minStepWidth"] MaxStepArgument = stepWidth["maxStepWidth"] Lines = data["lines"] Trained = data["trained"] return MinStepArgument, MaxStepArgument, Lines, Trained
def setStepLength(self): indexFootFront = getVertexIndex(self.trained, "foot-front") indexFootBack = getVertexIndex(self.trained, "foot-back") vertices0 = VertexUtils.computeVertices(self.trained, self.StepArgument, 0) vertices1 = VertexUtils.computeVertices(self.trained, self.StepArgument, 1) # reference vertex is the closest to the front foot; we estimate that the next place to put such # vertex is near the back foot after a full step was completed (which is when the back foot becomes # front foot again) self.stepLength = vertices1[indexFootBack]["x"] - vertices0[indexFootFront]["x"]
def updateImage(): global canvas, Lines global Trained, canvasSize, StepSize, AnimationPercent noSelection = -1 currentImage = None vertices = VertexUtils.computeVertices(Trained, StepSize, AnimationPercent) vertices = VertexUtils.translateVertices( VertexUtils.scaleVertices(vertices, canvasSize / 4), canvasSize * 2.0 / 3, canvasSize * 2.0 / 3 ) Utils.UpdateImage(canvas, 0, 0, vertices, Lines, currentImage, noSelection, noSelection)
def updateImage(): global canvas, Lines global Trained, canvasSize, StepSize, AnimationPercent noSelection = -1 currentImage = None vertices = VertexUtils.computeVertices(Trained, StepSize, AnimationPercent) vertices = VertexUtils.translateVertices( VertexUtils.scaleVertices(vertices, canvasSize / 4), canvasSize * 2. / 3, canvasSize * 2. / 3) Utils.UpdateImage(canvas, 0, 0, vertices, Lines, currentImage, noSelection, noSelection)
def setStepLength(self): indexFootFront = getVertexIndex(self.trained, "foot-front") indexFootBack = getVertexIndex(self.trained, "foot-back") vertices0 = VertexUtils.computeVertices(self.trained, self.StepArgument, 0) vertices1 = VertexUtils.computeVertices(self.trained, self.StepArgument, 1) # reference vertex is the closest to the front foot; we estimate that the next place to put such # vertex is near the back foot after a full step was completed (which is when the back foot becomes # front foot again) self.stepLength = vertices1[indexFootBack]["x"] - vertices0[ indexFootFront]["x"]
def OpenFromFile(window, filename): global Lines, Trained, AnimationPercent, StepSize, minStepSize, maxStepSize AnimationPercent = 0 data = VertexUtils.getJsonData(filename) stepWidth = VertexUtils.getJsonData("../data/results/stepWidth.json") minStepSize = stepWidth["minStepWidth"] maxStepSize = stepWidth["maxStepWidth"] StepSize = minStepSize Lines = data["lines"] Trained = data["trained"] fillEditorWindow(window)
def getVertices(self): vertices = self.getVerticesAtFrame(self.currentFrame, self.refVertexX, not self.frontLeftFirst) frameLerpStart = 0.6 # at what frame we start interpolating if self.currentFrame % 1 >= frameLerpStart: nextVertices = self.getNextVertices(self.frontLeftFirst) vertices = VertexUtils.lerpVertices(vertices, nextVertices, ((self.currentFrame % 1) - frameLerpStart) / (1 - frameLerpStart)) return vertices
def getVertices(self): vertices = self.getVerticesAtFrame(self.currentFrame, self.refVertexX, not self.frontLeftFirst) frameLerpStart = 0.6 # at what frame we start interpolating if self.currentFrame % 1 >= frameLerpStart: nextVertices = self.getNextVertices(self.frontLeftFirst) vertices = VertexUtils.lerpVertices( vertices, nextVertices, ((self.currentFrame % 1) - frameLerpStart) / (1 - frameLerpStart)) return vertices
StepArgument = 0.55 StepArgument = 1.25 width, height = 800, 300 MinStepArgument, MaxStepArgument, Lines, Trained = loadData( "../data/results/learned.json", "../data/results/stepWidth.json") walker = SimpleWalker(Trained, StepArgument) refVertexIndex = getVertexIndex(Trained, "reference-floor") stepCount = 10 stepIncrement = 0.1 for i in range(int(math.ceil(stepCount / stepIncrement))): walker.moveForward(stepIncrement) vertices = walker.getVertices() vertices = VertexUtils.translateVertices( VertexUtils.scaleVertices(vertices, height / 4), width / 10, height * 2. / 3) im = Utils.DrawFrame(None, width, height, 0, 0, vertices, Lines, None, None, refVertexIndex) im.save("imgs/frame" + format(i, "03") + ".jpg") subprocess.call([ "convert", "-delay", "5", "-loop", "0", "../img/frame*.jpg", "../img/animation.gif" ])
StepArgument = 0.55 StepArgument = 1.25 width, height = 800, 300 MinStepArgument, MaxStepArgument, Lines, Trained = loadData("../data/results/learned.json", "../data/results/stepWidth.json") walker = SimpleWalker(Trained, StepArgument) refVertexIndex = getVertexIndex(Trained, "reference-floor") stepCount = 10 stepIncrement = 0.1 for i in range(int(math.ceil(stepCount / stepIncrement))): walker.moveForward(stepIncrement) vertices = walker.getVertices() vertices = VertexUtils.translateVertices( VertexUtils.scaleVertices(vertices, height / 4), width / 10, height * 2. / 3) im = Utils.DrawFrame(None, width, height, 0, 0, vertices, Lines, None, None, refVertexIndex) im.save("imgs/frame" + format(i, "03") + ".jpg") subprocess.call(["convert", "-delay", "5", "-loop", "0", "../img/frame*.jpg", "../img/animation.gif"])