Beispiel #1
0
    def load_flame(self, flame_origin, flame_target=None, lerp=0.0):
        loaded_flame = self.flame
        try:
            if (lerp == 0.0 or flame_target is None):
                loaded_flame = flame_origin
            elif (lerp >= 1.0 or flame_origin is None):
                loaded_flame = flame_target
            else:
                # interpolation:
                flame_origin.time = 0
                flame_target.time = 1
                flames_lerp = [flame_origin, flame_target]
                flames_str = "<flames>%s</flames>" % "".join(
                    map(flame_to_string, flames_lerp))
                genomes, ngenomes = Genome.from_string(flames_str)
                targetflame = Genome()
                flam3_interpolate(genomes, ngenomes, lerp, 0,
                                  byref(targetflame))
                loaded_flame = Flame(targetflame.to_string())

        except Exception as ex:
            print('[!] error during interpolation at %s: %s' % (lerp, str(ex)))
            traceback.print_exc()
            return None

        return loaded_flame
Beispiel #2
0
def interpolate(flames):
    s = "<flames>%s</flames>" % "".join(map(to_string, flames))
    genomes, ngenomes = Genome.from_string(s)
    
    target = Genome()
    for i in range(int(flames[0].time), int(flames[-1].time + 1)):
        flam3_interpolate(genomes, ngenomes, i, 0, byref(target))
        flame = Flame(target.to_string())
        flame.name = "morphed_%04d" % i
        yield flame