コード例 #1
0
ファイル: main.py プロジェクト: yobajnin/ParticlePanda
 def on_texture_path(self,instance,value):
     self.particle_builder.demo_particle.texture_path = value
     self.particle_builder.demo_particle.texture = Image(value).texture
コード例 #2
0
ファイル: mouse.py プロジェクト: stahl191/smile
 def _enter(self):
     super(MouseCursor, self)._enter()
     self.__pos_ref = self._exp.screen.mouse_pos
     texture = Image(self._filename).texture
     self.__instruction = kivy.graphics.Rectangle(texture=texture,
                                                  size=texture.size)
コード例 #3
0
    def initialize_game(self, difficulty):
        self.canvas.clear()
        self.state = "game"
        self.difficulty = difficulty

        self.audio_controller = AudioController(self.difficulty)
        self.audio_controller.toggle()

        self.notes_down = [
        ]  # an array that keeps track of all notes that are currently being played on midi keyboard

        # The display for the gems, now bar, and bar lines
        self.canvas.add(Color(1, 1, 1))

        rect = Rectangle(pos=(0, 0),
                         size=(Window.width, Window.height),
                         texture=Image('assets/bg_c.png').texture)

        self.canvas.add(rect)
        self.lane_manager = LaneManager()

        # Display the status of the game through the text labels

        self.canvas.add(Color(1, 1, 1))
        self.hud = Rectangle(pos=(0, Window.height / 1.12),
                             size=(Window.width / 4, Window.height / 9),
                             texture=Image('assets/tophub.png').texture)
        self.canvas.add(self.hud)
        self.canvas.add(Color(1, 1, 1))
        self.hud_score = Rectangle(
            pos=(Window.width / 1.4, Window.height / 1.12),
            size=(Window.width / 3.5, Window.height / 9),
            texture=Image('assets/topscore.png').texture)
        self.canvas.add(self.hud_score)

        self.score_label = score_label()
        self.add_widget(self.score_label)
        self.hp_label = hp_label()
        self.add_widget(self.hp_label)

        self.enemy_times = []
        self.enemy_lanes = []
        self.enemy_types = []
        self.enemy_chords = []

        self.enemy_manager = EnemyManager()
        self.canvas.add(self.enemy_manager)

        if difficulty == "easy":
            read_data("song_annotations/hallelujah_left_hand_test.txt", None,
                      self.enemy_times, self.enemy_lanes, self.enemy_types,
                      self.enemy_chords)
            self.song_length = 140
        elif difficulty == "medium":
            read_data("song_annotations/falling_left_hand_test.txt",
                      "song_annotations/falling_right_hand_test.txt",
                      self.enemy_times, self.enemy_lanes, self.enemy_types,
                      self.enemy_chords)
            self.song_length = 44
        elif difficulty == "hard":
            read_data("song_annotations/hallelujah_left_hand_test.txt",
                      "song_annotations/hallelujah_right_hand_test.txt",
                      self.enemy_times,
                      self.enemy_lanes,
                      self.enemy_types,
                      self.enemy_chords,
                      inversions=True)
            self.song_length = 140

        self.prev_time = time.time()
        self.elapsed_time = 0
        self.note_index = 0

        window_size = 4  # 4 seconds of notes are displayed
        x_scale = Window.width / window_size  # pixels / sec

        # Create the player object which will store and control the state of the game
        self.player = Player(self.hp_label, self.score_label, self.enemy_times,
                             self.enemy_lanes, self.enemy_types,
                             self.enemy_chords, self.enemy_manager,
                             self.audio_controller)
        self.canvas.add(self.player)
        self.player.toggle()
コード例 #4
0
from time import time
from penta_color import penta_schemes
from penta_common import PentaListContainer

from kivy.uix.widget import Widget
from kivy.core.image import Image
from kivy.utils import get_color_from_hex
from kivy.core.window import Window
from kivy.graphics import Color, BorderImage, Rectangle

TIMER = 60 * 2
PENTAMINOS_SIZE = 5, 3
PENTAMINOS_SIZE2 = 6, 5
PENTAMINOS_COUNT_BY_USERS = 3

background = Image(join(dirname(__file__), 'background.png'))
background.texture.wrap = 'repeat'
btnbg = Image(join(dirname(__file__), 'buttonbackground.png')).texture


class Pentaminos(KalScenarioServer):
    resources = ('penta-background.png', 'penta-background-bottom.png',
                 'penta-square.png', 'penta-square-shadow.png',
                 'background.png', 'client.py', 'penta_color.py',
                 'pentaminos.kv', 'penta_common.py')

    def __init__(self, *largs):
        super(Pentaminos, self).__init__(*largs)
        self.timeout = 0
        self.timemsg = 0
        self.c1 = get_color_from_hex('#96be25aa')
コード例 #5
0
    def __init__(self, norm, pos, callback):
        super(InstrumentSelect, self).__init__()
        self.norm = norm
        self.selected = 'piano'

        self.callback = callback
        self.pos = pos
        self.margin = self.norm.nv(20)
        self.button_length = self.norm.nv(64)
        self.title_height = self.norm.nv(50)  # height of the word 'instrument'

        self.size = ((5 * self.button_length) + (6 * self.margin),
                     self.button_length + (2 * self.margin) +
                     self.title_height)

        self.white = (239 / 255, 226 / 255, 222 / 255)
        self.red = (201 / 255, 108 / 255, 130 / 255)

        self.border_color = Color(147 / 255, 127 / 255, 159 / 255)  # purple
        self.border = Line(rectangle=(*self.pos, *self.size), width=2)
        self.add(self.border_color)
        self.add(self.border)

        button_size = (self.button_length, self.button_length)
        self.instruments = {
            'piano':
            Rectangle(size=button_size,
                      texture=Image('images/piano.png').texture),
            'violin':
            Rectangle(size=button_size,
                      texture=Image('images/violin.png').texture),
            'trumpet':
            Rectangle(size=button_size,
                      texture=Image('images/trumpet.png').texture),
            'ocarina':
            Rectangle(size=button_size,
                      texture=Image('images/ocarina.png').texture),
            'choir':
            Rectangle(size=button_size,
                      texture=Image('images/choir.png').texture)
        }
        self.instrument_bgs = {
            'piano': Rectangle(size=button_size),
            'violin': Rectangle(size=button_size),
            'trumpet': Rectangle(size=button_size),
            'ocarina': Rectangle(size=button_size),
            'choir': Rectangle(size=button_size)
        }
        self.instrument_colors = {
            'piano': Color(*self.red),  # default selected timbre
            'violin': Color(*self.white),
            'trumpet': Color(*self.white),
            'ocarina': Color(*self.white),
            'choir': Color(*self.white)
        }

        x, y = self.pos

        piano_pos = (x + self.margin, y + self.margin)
        violin_pos = (x + 2 * self.margin + self.button_length,
                      y + self.margin)
        trumpet_pos = (x + 3 * self.margin + 2 * self.button_length,
                       y + self.margin)
        ocarina_pos = (x + 4 * self.margin + 3 * self.button_length,
                       y + self.margin)
        choir_pos = (x + 5 * self.margin + 4 * self.button_length,
                     y + self.margin)

        for instrument, instrument_pos in zip(
            ('piano', 'violin', 'trumpet', 'ocarina', 'choir'),
            (piano_pos, violin_pos, trumpet_pos, ocarina_pos, choir_pos)):
            self.instruments[instrument].pos = self.instrument_bgs[
                instrument].pos = instrument_pos
            self.add(self.instrument_colors[instrument])
            self.add(self.instrument_bgs[instrument])
            self.add(self.instruments[instrument])

        title_pos = (x + self.size[0] / 2, y + self.size[1] -
                     self.title_height / 2 - self.margin / 2)
        self.title = CLabelRect(cpos=title_pos,
                                text='instrument',
                                font_size='18')
        self.add(Color(*self.white))
        self.add(self.title)
コード例 #6
0
ファイル: kivyutils.py プロジェクト: play3577/katrain
def cached_texture(path, _cache={}):
    tex = _cache.get(path)
    if not tex:
        tex = _cache[path] = Image(resource_find(path)).texture
    return tex
コード例 #7
0
 def saveImg(tex, event):
     img = Image(tex)
     #img.save("capture.png")
     print("Would have captured")
コード例 #8
0
 def change_texture(self, new_texture_path):
     if new_texture_path != self.texture_path:
         self.texture_path = new_texture_path
         if self.texture_path != "":
             self.shape.texture = Image(self.texture_path).texture
コード例 #9
0
    def __init__(self, norm, pos, callback):
        super(BounceSelect, self).__init__()
        self.norm = norm

        self.bounces = 5

        self.callback = callback
        self.pos = pos
        self.margin = self.norm.nv(20)
        self.size = self.norm.nt((210, 130))

        self.border_color = Color(170/255, 220/255, 206/255) # green
        self.border = Line(rectangle=(*self.pos, *self.size), width=2)
        self.add(self.border_color)
        self.add(self.border)

        self.arrow_size = self.norm.nt((50, 50))
        self.left_pos = (
            self.pos[0] + self.margin,
            self.pos[1] + self.margin
        )
        self.left_off = Rectangle(
            pos=self.left_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/left_arrow.png').texture
        )
        self.left_on = Rectangle(
            pos=self.left_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/left_arrow_clicked.png').texture
        )
        self.right_pos = (
            self.pos[0] + self.size[0] - self.margin - self.arrow_size[0],
            self.pos[1] + self.margin
        )
        self.right_off = Rectangle(
            pos=self.right_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/right_arrow.png').texture
        )
        self.right_on = Rectangle(
            pos=self.right_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/right_arrow_clicked.png').texture
        )
        # left_off and right_off are always drawn, but when user mouses over an arrow,
        # left_on and right_on are drawn over left_off and right_off
        self.add(Color(1, 1, 1))
        self.add(self.left_off)
        self.add(self.right_off)

        title_pos = (self.pos[0] + self.size[0]/2, self.pos[1] + self.size[1] - self.norm.nv(30))
        self.title = CLabelRect(cpos=title_pos, text='bounces', font_size='18')
        self.add(self.title)

        bounce_text_pos = (
            self.pos[0] + self.size[0]/2,
            self.pos[1] + self.margin + self.arrow_size[1]/2
        )
        self.bounce_text = CLabelRect(cpos=bounce_text_pos, text=str(self.bounces), font_size='18')
        self.add(self.bounce_text)
コード例 #10
0
def getTexture(name, size=(CELL_SIZE, CELL_SIZE)):
    filename = spritePath.format(name)
    texture = Image(filename).texture
    texture.wrap = 'repeat'
    texture.uvsize = size
    return texture
コード例 #11
0
 def load_tileable(self, name):
     t = Image('images/{}.png'.format(name)).texture
     t.wrap = 'repeat'
     setattr(self, 'tx_{}'.format(name), t)
コード例 #12
0
ファイル: engine.py プロジェクト: jrburga/JamOn
    def _parse_config(self, config):
        self._config = parse_xml(config)

        texture_path = self._parse_data('texture', 'name')
        config_dir_path = os.path.dirname(os.path.abspath(config))
        path = os.path.join(config_dir_path, texture_path)
        if os.path.exists(path):
            self.texture_path = path
        else:
            self.texture_path = texture_path

        self.texture = Image(self.texture_path).texture
        self.emitter_x = float(self._parse_data('sourcePosition', 'x'))
        self.emitter_y = float(self._parse_data('sourcePosition', 'y'))
        self.emitter_x_variance = float(
            self._parse_data('sourcePositionVariance', 'x'))
        self.emitter_y_variance = float(
            self._parse_data('sourcePositionVariance', 'y'))
        self.gravity_x = float(self._parse_data('gravity', 'x'))
        self.gravity_y = float(self._parse_data('gravity', 'y'))
        self.emitter_type = int(self._parse_data('emitterType'))
        self.max_num_particles = int(float(self._parse_data('maxParticles')))
        self.life_span = max(0.01, float(self._parse_data('particleLifeSpan')))
        self.life_span_variance = float(
            self._parse_data('particleLifespanVariance'))
        self.start_size = float(self._parse_data('startParticleSize'))
        self.start_size_variance = float(
            self._parse_data('startParticleSizeVariance'))
        self.end_size = float(self._parse_data('finishParticleSize'))
        self.end_size_variance = float(
            self._parse_data('FinishParticleSizeVariance'))
        self.emit_angle = math.radians(float(self._parse_data('angle')))
        self.emit_angle_variance = math.radians(
            float(self._parse_data('angleVariance')))
        self.start_rotation = math.radians(
            float(self._parse_data('rotationStart')))
        self.start_rotation_variance = math.radians(
            float(self._parse_data('rotationStartVariance')))
        self.end_rotation = math.radians(float(
            self._parse_data('rotationEnd')))
        self.end_rotation_variance = math.radians(
            float(self._parse_data('rotationEndVariance')))
        self.speed = float(self._parse_data('speed'))
        self.speed_variance = float(self._parse_data('speedVariance'))
        self.radial_acceleration = float(
            self._parse_data('radialAcceleration'))
        self.radial_acceleration_variance = float(
            self._parse_data('radialAccelVariance'))
        self.tangential_acceleration = float(
            self._parse_data('tangentialAcceleration'))
        self.tangential_acceleration_variance = float(
            self._parse_data('tangentialAccelVariance'))
        self.max_radius = float(self._parse_data('maxRadius'))
        self.max_radius_variance = float(self._parse_data('maxRadiusVariance'))
        self.min_radius = float(self._parse_data('minRadius'))
        self.rotate_per_second = math.radians(
            float(self._parse_data('rotatePerSecond')))
        self.rotate_per_second_variance = math.radians(
            float(self._parse_data('rotatePerSecondVariance')))
        self.start_color = self._parse_color('startColor')
        self.start_color_variance = self._parse_color('startColorVariance')
        self.end_color = self._parse_color('finishColor')
        self.end_color_variance = self._parse_color('finishColorVariance')
        self.blend_factor_source = self._parse_blend('blendFuncSource')
        self.blend_factor_dest = self._parse_blend('blendFuncDestination')
コード例 #13
0
ファイル: find_figures.py プロジェクト: pythonic64/kognitivo
 def on_icon_src(self, instance, value):
     self.icon = Image(value)
コード例 #14
0
ファイル: msgbox.py プロジェクト: nskrypnik/moonrabbit
 def set_background(self):
     texture = Image('resources/interface/modal-background.png').texture
     texture.wrap = 'repeat'
     texture.uvsize = (2, 1)
     with self.canvas.before:
         Rectangle(texture=texture, size=self.size, pos=self.pos)
コード例 #15
0
    def start(self, current_callback):
        if self.init == 0:
            self.current_callback = current_callback
            Color(1, 1, 1, 1)
            normal_map_value = 0
            if len(self._normal_map) > 0:
                normal_map_value = 1
                image = Image(self._normal_map)
                bind_texture = BindTexture(texture=image.texture, index=2)

            self._instruction_group = InstructionGroup()

            self._instruction_group.add(Callback(self.update_params))

            self.state = ChangeState(  #enabled_shadow=(float(self.receive_shadows)),
                lighting=(float(self.lighting)),
                light_intensity=self.light_intensity,
                flip_coords=(float(self.flip_coords)),
                #alpha=(float(self.alpha)),
                #pitch=(float(self.pitch)),
                #yaw=self.yaw,
                #roll=(float(self.roll)),
                #shadows_bias = (float(self.shadows_bias)),
                normal_map_enabled=(float(normal_map_value)),
                #specular_intensity = (float(self.specular_intensity)),
                #specular_power = (float(self.specular_power)),
                #min_light_intensity=(float(self.min_light_intensity))
            )

            self._instruction_group.add(self.state)
            self._translate = Translate(*self.translate)

            self._rotate = Rotate(*self.rotate)
            self._scale = Scale(*self.scale)

            self._instructions.append(self.state)
            self._instructions.append(self._translate)
            self._instructions.append(self._rotate)
            self._instructions.append(self._scale)
            self._instructions.append(self._instruction_group)
            self._instructions.append(Callback(self.before_render))

        elif self.init == 1:
            self.current_callback_fbo = current_callback
            self._shadow_instructions.append(Callback(self.update_params_fbo))
            #state = ChangeState(cast_shadows=(float(self.cast_shadows)))

            self._shadow_translate = Translate(*self.translate)
            self._shadow_rotate = Rotate(*self.rotate)
            self._shadow_scale = Scale(*self.scale)
            self._shadow_instructions.append(self._shadow_translate)
            self._shadow_instructions.append(self._shadow_rotate)
            self._shadow_instructions.append(self._shadow_scale)
        elif self.init == 2:
            self.current_callback_picking_fbo = current_callback
            mrange = 0
            if self.effect:
                mrange = 0.50
            self._picking_instructions.append(
                Callback(self.update_params_picking_fbo))
            state = ChangeState(id_color=(round(self.pick_id + mrange, 2),
                                          float(self.effect), 0.0))
            self._picking_translate = Translate(*self.translate)
            self._picking_rotate = Rotate(*self.rotate)
            self._picking_scale = Scale(*self.scale)
            self._picking_instructions.append(state)
            self._picking_instructions.append(self._picking_translate)
            self._picking_instructions.append(self._picking_rotate)
            self._picking_instructions.append(self._picking_scale)
            self._instructions.append(Callback(self.before_render))
        elif self.init == 3:
            state = ChangeState(id=(self.motion_id))
            self._motion_blur_translate = Translate(*self.translate)
            self._motion_blur_rotate = Rotate(*self.rotate)
            self._motion_blur_scale = Scale(*self.scale)
            self._blur_instructions.append(state)
            self._blur_instructions.append(self._motion_blur_translate)
            self._blur_instructions.append(self._motion_blur_rotate)
            self._blur_instructions.append(self._motion_blur_scale)
            self._instructions.append(Callback(self.before_render))
        UpdateNormalMatrix()
        for e in self._objs:
            _vertices = []
            _indices = []
            if ".obj" in e:
                filename = resource_find(e)
                if not filename:
                    raise IOError("File: '{0}' not found".format(e))
                m = ObjFile(resource_find(e))
                m = list(m.objects.values())[0]
                res = []
                count = 0
                for i, o in enumerate(m.vertices):
                    res.append(o)
                    if (i + 1) % 8 == 0:
                        count += 1
                        res.append(0.0)
                        res.append(0.0)
                        res.append(0.0)
                        res.append(i // 8)
                        res.append(i // 8)
                        if count >= 3:
                            l = len(res)
                            v0 = [
                                res[l - 13 * 3], res[l - 13 * 3 + 1],
                                res[l - 13 * 3 + 2]
                            ]
                            v1 = [
                                res[l - 13 * 2], res[l - 13 * 2 + 1],
                                res[l - 13 * 2 + 2]
                            ]
                            v2 = [
                                res[l - 13 * 1], res[l - 13 * 1 + 1],
                                res[l - 13 * 1 + 2]
                            ]
                            t0xy = [res[l - 13 * 3 + 6], res[l - 13 * 3 + 7]]
                            t1xy = [res[l - 13 * 2 + 6], res[l - 13 * 2 + 7]]
                            t2xy = [res[l - 13 + 6], res[l - 13 + 7]]
                            edge1 = min_vector(v1, v0)
                            edge2 = min_vector(v2, v0)
                            delta_u1 = t1xy[0] - t0xy[0]
                            delta_v1 = t1xy[1] - t0xy[1]
                            delta_u2 = t2xy[0] - t0xy[0]
                            delta_v2 = t2xy[1] - t0xy[1]
                            d = (delta_u1 * delta_v2 - delta_u2 * delta_v1)
                            if d == 0:
                                d = 0.01
                            f = 1.0 / d
                            tangent_x = f * (delta_v2 * edge1[0] -
                                             delta_v1 * edge2[0])
                            tangent_y = f * (delta_v2 * edge1[1] -
                                             delta_v1 * edge2[1])
                            tangent_z = f * (delta_v2 * edge1[2] -
                                             delta_v1 * edge2[2])
                            for _i in range(1, 4):
                                res[l - 13 * _i + 8] += tangent_x
                                res[l - 13 * _i + 9] += tangent_y
                                res[l - 13 * _i + 10] += tangent_z
                            count = 0
                for i in range(len(res)):
                    if (i + 1) % 13 == 0:
                        vec = [
                            res[i - 12 + 8], res[i - 12 + 9], res[i - 12 + 10]
                        ]
                        n_vec = normalize(vec)
                        res[i - 12 + 8] = n_vec[0]
                        res[i - 12 + 9] = n_vec[1]
                        res[i - 12 + 10] = n_vec[2]

                m.vertices = res
                _vertices = m.vertices
                _indices = m.indices
                if self.init != 3:
                    mesh = Mesh(
                        vertices=_vertices,
                        indices=_indices,
                        fmt=[(b'v_pos', 3, 'float'), (b'v_normal', 3, 'float'),
                             (b'v_tc0', 2, 'float'), (b'tangent', 3, 'float'),
                             (b'vert_pos', 2, 'float')],
                        mode='triangles',
                        source=e + ".png",
                    )
                    self.objs.append(mesh)
                    if self.init == 0:
                        self._instructions.append(mesh)
                    if self.init == 1:
                        self._shadow_instructions.append(mesh)
                    if self.init == 2:
                        self._picking_instructions.append(mesh)
                    if self.init == 3:
                        self._blur_instructions.append(mesh)

            if (".dae" in e) or ('.xml' in e and not ".mesh.xml" in e):
                raise Exception("Collada not yet implemented")
                for o in load_dae_scene(e):
                    self.objs.append(o)
                    if self.init == 0:
                        self.mesh = o

            if ".mesh.xml" in e:
                for o, ba, skel, vert in load_ogre(e):
                    self.skeletons = skel
                    self.objs.append(o)
                    self.bones_data.append(ba)
                    self.vertices = vert[:]
                    if self.init == 0:
                        self.mesh = o

            if ".md5mesh" in e:
                raise Exception("MD5 not implemented")
                for o in load_md5(e, self._anims):
                    self.objs.append(o)
                    if self.init == 0:
                        self.mesh = o

        self._instructions.append(Callback(self.after_render))
        self.init += 1
コード例 #16
0
    def __init__(self, norm, pos, callback):
        super(TimbreSelect, self).__init__()
        self.norm = norm

        self.selected = 'sine' # the actual important variable: which timbre is selected!

        self.callback = callback
        self.pos = pos
        self.margin = self.norm.nv(20)
        self.button_length = self.norm.nv(64)
        self.title_height = self.norm.nv(50) # height of the word 'timbre'
        self.size = (
            (4 * self.button_length) + (5 * self.margin),
            self.button_length + (2 * self.margin) + self.title_height
        )

        self.white = (239/255, 226/255, 222/255)
        self.red = (201/255, 108/255, 130/255)

        self.border_color = Color(147/255, 127/255, 159/255) # purple
        self.border = Line(rectangle=(*self.pos, *self.size), width=2)
        self.add(self.border_color)
        self.add(self.border)

        button_size = (self.button_length, self.button_length)
        self.timbres = {
            'sine': Rectangle(size=button_size, texture=Image('images/sine.png').texture),
            'square': Rectangle(size=button_size, texture=Image('images/square.png').texture),
            'triangle': Rectangle(size=button_size, texture=Image('images/triangle.png').texture),
            'sawtooth': Rectangle(size=button_size, texture=Image('images/sawtooth.png').texture)
        }
        self.timbre_bgs = {
            'sine': Rectangle(size=button_size),
            'square': Rectangle(size=button_size),
            'triangle': Rectangle(size=button_size),
            'sawtooth': Rectangle(size=button_size)
        }
        self.timbre_colors = {
            'sine': Color(*self.red), # default selected timbre
            'square': Color(*self.white),
            'triangle': Color(*self.white),
            'sawtooth': Color(*self.white)
        }

        x, y = self.pos

        sine_pos = (x + self.margin, y + self.margin)
        square_pos = (x + 2*self.margin + self.button_length, y + self.margin)
        triangle_pos = (x + 3*self.margin + 2*self.button_length, y + self.margin)
        sawtooth_pos = (x + 4*self.margin + 3*self.button_length, y + self.margin)

        for timbre, timbre_pos in zip(
            ('sine', 'square', 'triangle', 'sawtooth'),
            (sine_pos, square_pos, triangle_pos, sawtooth_pos)
        ):
            self.timbres[timbre].pos = self.timbre_bgs[timbre].pos = timbre_pos
            self.add(self.timbre_colors[timbre])
            self.add(self.timbre_bgs[timbre])
            self.add(self.timbres[timbre])

        title_pos = (x + self.size[0]/2, y + self.size[1] - self.title_height/2 - self.margin/2)
        self.title = CLabelRect(cpos=title_pos, text='timbre', font_size='18')
        self.add(Color(*self.white))
        self.add(self.title)
コード例 #17
0
    def convert_to_mesh(
        self,
        vertex_format=None
    ):  # Ripped from kivy3/loaders/objloader.py and edited by GJ
        """Converts data gotten from the ._obj definition
        file and create Kivy3 Mesh object which may be used
        for drawing object in the scene
        """

        geometry = Geometry()
        material = Material()
        mtl_dirname = abspath(
            dirname(self.loader.mtl_source
                    ))  # We don't need this as we arnt loading any images
        # but just in case we keep it

        v_idx = 0
        # create geometry for mesh
        for f in self.faces:
            verts = f[0]
            norms = f[1]
            tcs = f[2]
            face3 = Face3(0, 0, 0)
            for i, e in enumerate(['a', 'b', 'c']):
                # get normal components
                n = (0.0, 0.0, 0.0)
                if norms[i] != -1:
                    n = self.loader.normals[norms[i] - 1]
                face3.vertex_normals.append(n)

                # get vertex components
                v = self.loader.vertices[verts[i] - 1]
                geometry.vertices.append(v)
                setattr(face3, e, v_idx)
                v_idx += 1

                # get texture coordinate components
                t = (0.0, 0.0)
                if tcs[i] != -1:
                    t = self.loader.texcoords[tcs[i] - 1]
                tc = Vector2(t[0], 1. - t[1])
                geometry.face_vertex_uvs[0].append(tc)

            geometry.faces.append(face3)

        # apply material for object
        if self.mtl_name in self.loader.mtl_contents:
            raw_material = self.loader.mtl_contents[self.mtl_name]
            # shader ignores values
            zeros = [
                '0', '0.0', '0.00', '0.000', '0.0000', '0.00000', '0.000000'
            ]
            for k, v in raw_material.items():
                _k = self._mtl_map.get(k, None)
                if k in [
                        "map_Kd",
                ]:
                    self.log_warning(
                        "the tag map_kd should not be used as a material, use map_id and give the texture"
                        " type (ini section and option)")
                    map_path = join(mtl_dirname, v[0])
                    if not exists(map_path):
                        msg = u'Texture not found <{}>'
                        self.log_warning(msg.format(map_path))
                        continue
                    tex = Image(map_path).texture
                    material.map = tex
                    continue
                if k in [
                        "map_id",
                ]:

                    tex = self.textures.get("Materials", str(v[0]))
                    material.map = tex

                if _k:
                    if len(v) == 1:
                        v[0] = '0.000001' if v[0] in zeros else v[0]
                        v = float(v[0])
                        if k == 'Tr':
                            v = 1. - v
                        setattr(material, _k, v)
                    else:
                        v = list(map(lambda x: float(x), v))
                        setattr(material, _k, v)

        if not material.map:
            self.log_warning(
                "No material given or used wrong name -", self.mtl_name,
                "(if nothing here then you "
                "provided no mtl file)")
            material.map = Image(objLoader_folder + '/empty.png').texture
            material.texture_ratio = 0.0
        mesh = Mesh(geometry, material)
        return mesh
コード例 #18
0
 def _get_source_data(self, source, scale):
     texture = Image(source).texture
     orig_size = get_normal_tex_size(texture)
     size = Vector(*orig_size) * scale
     return texture, size, orig_size
コード例 #19
0
ファイル: Imagem.py プロジェクト: DejotaFreitas/LANG-PYTHON
# assyncriona imagem
aimg = AsyncImage(source='http://mywebsite.com/logo.png')

# carregar uma imagem com um nome de um arquivo
from kivy.core.image import Image

im = Image("image.png")

# carregar os dados da imagem diretamente de um bloco da memória
import io
from kivy.core.image import Image

data = io.BytesIO(open("image.png", "rb").read())
im = Image(data, ext="png")

# para imagem ficar salva em cache informe o filename
im = Image(data, ext="png", filename="image.png")

# Savar imagem
from kivy.core.image import Image

img = Image('hello.png')
img.save('hello2.png')

# salvar textura
texture = Texture.create(...)
img = Image(texture)
img.save('hello3.png')

# for example, load a 128x128 image that contain 4 64x64 images
from kivy.core.image import Image
コード例 #20
0
 def load_tileable(self, name):
     t = Image('images/%s.png' % name).texture
     t.wrap = 'repeat'
     setattr(self, 'tx_%s' % name, t)
コード例 #21
0
ファイル: wolf.py プロジェクト: Dominisg/Pylife
 def __init__(self,cords,world):
     super(Animal,self).__init__(cords, world, 9, 5)
     self._texture = Image("./world/animals/graphics/wolf.png").texture
コード例 #22
0
ファイル: ui.py プロジェクト: magj3k/instrumagic
 def change_texture(self, new_texture_path):
     if isinstance(self.shape, Rectangle):
         if new_texture_path != self.texture_path:
             self.texture_path = new_texture_path
             if self.texture_path != "":
                 self.shape.texture = Image(self.texture_path).texture
コード例 #23
0
    def __init__(self, norm, pos, callback):
        super(DrumSelect, self).__init__()
        self.norm = norm
        self.selected = 'snare'

        self.callback = callback
        self.pos = pos
        self.margin = self.norm.nv(20)
        self.button_length = self.norm.nv(64)
        self.title_height = self.norm.nv(50)  # height of the word 'drumset'

        self.size = ((5 * self.button_length) + (6 * self.margin),
                     self.button_length + (2 * self.margin) +
                     self.title_height)

        self.white = (239 / 255, 226 / 255, 222 / 255)
        self.red = (201 / 255, 108 / 255, 130 / 255)

        self.border_color = Color(214 / 255, 152 / 255, 142 / 255)  #orange
        self.border = Line(rectangle=(*self.pos, *self.size), width=2)
        self.add(self.border_color)
        self.add(self.border)

        button_size = (self.button_length, self.button_length)
        self.instruments = {
            'snare':
            Rectangle(size=button_size,
                      texture=Image('images/snare.png').texture),
            'crash':
            Rectangle(size=button_size,
                      texture=Image('images/crash.png').texture),
            'bass':
            Rectangle(size=button_size,
                      texture=Image('images/bass.png').texture),
            'hihat':
            Rectangle(size=button_size,
                      texture=Image('images/hihat.png').texture),
            'triangle':
            Rectangle(size=button_size,
                      texture=Image('images/triangle_instr.png').texture)
        }
        self.instrument_bgs = {
            'snare': Rectangle(size=button_size),
            'crash': Rectangle(size=button_size),
            'bass': Rectangle(size=button_size),
            'hihat': Rectangle(size=button_size),
            'triangle': Rectangle(size=button_size)
        }
        self.instrument_colors = {
            'snare': Color(*self.red),  # default selected timbre
            'crash': Color(*self.white),
            'bass': Color(*self.white),
            'hihat': Color(*self.white),
            'triangle': Color(*self.white)
        }

        x, y = self.pos

        snare_pos = (x + self.margin, y + self.margin)
        crash_pos = (x + 2 * self.margin + self.button_length, y + self.margin)
        bass_pos = (x + 3 * self.margin + 2 * self.button_length,
                    y + self.margin)
        hihat_pos = (x + 4 * self.margin + 3 * self.button_length,
                     y + self.margin)
        triangle_pos = (x + 5 * self.margin + 4 * self.button_length,
                        y + self.margin)

        for instrument, instrument_pos in zip(
            ('snare', 'crash', 'bass', 'hihat', 'triangle'),
            (snare_pos, crash_pos, bass_pos, hihat_pos, triangle_pos)):
            self.instruments[instrument].pos = self.instrument_bgs[
                instrument].pos = instrument_pos
            self.add(self.instrument_colors[instrument])
            self.add(self.instrument_bgs[instrument])
            self.add(self.instruments[instrument])

        title_pos = (x + self.size[0] / 2, y + self.size[1] -
                     self.title_height / 2 - self.margin / 2)
        self.title = CLabelRect(cpos=title_pos, text='drumkit', font_size='18')
        self.add(Color(*self.white))
        self.add(self.title)
コード例 #24
0
    def cube(self, tile):
        DEFAULT_VERTEX_FORMAT = [(b'v_tc0', 2, 'float'),
                                 (b'v_normal', 3, 'float'),
                                 (b'v_pos', 3, 'float')]

        obj = self.blocks[tile].obj
        T()
        obj = pywave.Wavefront('tex/block.obj', collect_faces=True)
        material = obj.materials['grass']
        cube = obj.meshes['Cube']

        vertices = obj.vertices
        faces = cube.faces
        grass = obj.materials['grass']
        dirt = obj.materials['dirt']
        vertices = grass.vertices + dirt.vertices
        #indices  = np.array(faces).ravel().tolist()
        indices = np.arange(36).astype(int).tolist()
        #vertices = np.array(vertices).ravel().tolist()

        tex = Image('tex/grass.png').texture
        mat = Material(tex)
        kw = {
            "vertices": vertices,
            "indices": indices,
            "fmt": DEFAULT_VERTEX_FORMAT,
            "mode": "triangles",
            'texture': tex
        }
        #if self.material.map:
        #     kw["texture"] = self.material.map

        mesh = KivyMesh(**kw)

        class Meshy(Object3D):
            def __init__(self, mesh, material):
                super().__init__()
                self._mesh = mesh
                self.material = material
                self.mtl = material
                self.vertex_format = DEFAULT_VERTEX_FORMAT

        cube = Meshy(mesh, tex)

        #cube.material = orig.material
        #cube.geometry = orig.geometry
        orig._mesh = cube._mesh
        orig.material = mat
        cube = orig

        #cube = kivy3.Mesh([], material)
        if tile == 'lava':
            cube.pos.y = -0.5
        elif tile == 'stone':
            cube.pos.y = 1
        elif tile == 'grass':
            pass
        elif tile == 'forest':
            pass
        elif tile == 'water':
            cube.pos.y = -0.33

        #cube.material.color = 0., .7, 0.  # green
        #cube.material.diffuse = 0., .7, 0.  # green
        return cube
コード例 #25
0
    def __init__(self, norm, pos, callback):
        super(PitchSelect, self).__init__()
        self.norm = norm

        self.selected_key = 0
        self.root_pitch = 60
        self.pitch = 60  # default pitch

        self.green = (144 / 255, 238 / 255, 144 / 255)
        self.white = (239 / 255, 226 / 255, 222 / 255)
        self.black = (.2, .2, .2)
        self.color_names = [
            'red', 'orange', 'yellow', 'green', 'teal', 'blue', 'indigo',
            'violet', 'turquoise', 'pink', 'peach', 'magenta', 'grey'
        ]
        self.callback = callback
        self.pos = pos
        self.margin = self.norm.nv(20)
        self.white_key_size = self.norm.nt((50, 150))
        self.black_key_size = self.norm.nt((40, 100))
        self.key_margin = self.norm.nv(2)  # pixels of space between keys
        self.size = (8 * self.white_key_size[0] + 7 * self.key_margin +
                     2 * self.margin, self.white_key_size[1] +
                     2 * self.margin + self.norm.nv(60))
        self.border_color = Color(238 / 255, 234 / 255, 202 / 255)  # yellow
        self.border = Line(rectangle=(*self.pos, *self.size), width=2)
        self.add(self.border_color)
        self.add(self.border)

        self.keys = [None] * 13
        self.white_keys = [0, 2, 4, 5, 7, 9, 11, 12]
        self.black_keys = [1, 3, 6, 8, 10]
        key_start = (self.pos[0] + self.margin, self.pos[1] + self.margin)
        unit = self.white_key_size[0] + self.key_margin
        black_key_units = [1, 2, 4, 5, 6]
        for i, m in zip(self.white_keys, range(8)):
            self.keys[i] = Rectangle(size=self.white_key_size,
                                     pos=(key_start[0] + m * unit,
                                          key_start[1]))
        for i, m in zip(self.black_keys, black_key_units):
            self.keys[i] = CRectangle(csize=self.black_key_size,
                                      cpos=(key_start[0] + m * unit,
                                            key_start[1] + self.norm.nv(100)))

        self.key_colors = [None] * 13
        for i in self.white_keys:
            self.key_colors[i] = Color(*self.white)
            self.add(self.key_colors[i])
            self.add(self.keys[i])
        for i in self.black_keys:
            self.key_colors[i] = Color(*self.black)
            self.add(self.key_colors[i])
            self.add(self.keys[i])
        self.key_colors[0].rgb = self.green

        self.arrow_size = self.norm.nt((50, 50))
        self.left_pos = (self.pos[0] + self.margin, self.pos[1] +
                         self.size[1] - self.arrow_size[1] - self.norm.nv(10))
        self.left_off = Rectangle(
            pos=self.left_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/left_arrow.png').texture)
        self.left_on = Rectangle(
            pos=self.left_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/left_arrow_clicked.png').texture)
        self.right_pos = (self.pos[0] + self.size[0] - self.margin -
                          self.arrow_size[0], self.pos[1] + self.size[1] -
                          self.arrow_size[1] - self.norm.nv(10))
        self.right_off = Rectangle(
            pos=self.right_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/right_arrow.png').texture)
        self.right_on = Rectangle(
            pos=self.right_pos,
            size=self.arrow_size,
            texture=Image('ui/buttons/right_arrow_clicked.png').texture)
        # left_off and right_off are always drawn, but when user mouses over an arrow,
        # left_on and right_on are drawn over left_off and right_off
        self.add(Color(1, 1, 1))
        self.add(self.left_off)
        self.add(self.right_off)

        title_pos = (self.pos[0] + self.size[0] / 2, self.pos[1] +
                     self.size[1] - self.margin - self.norm.nv(20))
        self.title = CLabelRect(cpos=title_pos,
                                text='pitch: {}'.format(
                                    midi_pitch_to_note_name(self.pitch)),
                                font_size='18')
        self.add(Color(1, 1, 1))
        self.add(self.title)
コード例 #26
0
 def getBase(self):
     self.basename = self.baseNames[self.SPEC_LINEWIDTH][0]
     self.basewidth = self.baseNames[self.SPEC_LINEWIDTH][1]
     self.texture_base = Image(self.basename).texture
コード例 #27
0
 def __init__(self, cords, world):
     super(Plant, self).__init__(cords, world, 0, 0)
     self._texture = Image("./world/plants/graphics/guarana.png").texture
コード例 #28
0
def getTexture(name, size):
    filename = join('art', name+'.png')
    texture = Image(filename).texture
    texture.wrap = 'repeat'
    texture.uvsize = size
    return texture
コード例 #29
0
from kivy.clock import Clock
from kivy.core.window import Window
from kivy.core.image import Image
from kivy.graphics import *

from actor import *
from bounce import *


arena = Arena(320, 240)
Ball(arena, 40, 80)
Ball(arena, 80, 40)
Ghost(arena, 120, 80)
turtle = Turtle(arena, 80, 80)

sprites = Image('sprites.png').texture


class GameWidget(Widget):
    def __init__(self):
        Widget.__init__(self)
        Window.size = arena.size()
        self._touch_orig = None
        Clock.schedule_interval(self.advance_game, 1 / 30)

    def on_touch_down(self, touch):
        self._touch_orig = touch.x, touch.y

    def on_touch_up(self, touch):
        turtle.stay()
        self._touch_orig = None
コード例 #30
0
 def draw_mesh(self, star_list):
     filename = 'background_objects.atlas'
     star_tex = Image('background_objects-0.png').texture
     size_tex = (float(star_tex.size[0]), float(star_tex.size[1]))
     uv_dict = self.return_uv_coordinates(filename,
                                          'background_objects-0.png',
                                          size_tex)
     choices = [x for x in uv_dict]
     vertex_format = [('vPosition', 2, 'float'),
                      ('vTexCoords0', 2, 'float'),
                      ('vRotation', 1, 'float'), ('vCenter', 2, 'float')]
     indices = []
     ie = indices.extend
     for quad_n in xrange(len(star_list)):
         offset = 4 * quad_n
         ie([
             0 + offset, 1 + offset, 2 + offset, 2 + offset, 3 + offset,
             0 + offset
         ])
     vertices = []
     e = vertices.extend
     for star in star_list:
         tex_choice = choice(choices)
         uv = uv_dict[tex_choice]
         w, h = uv[4], uv[5]
         x0, y0 = uv[0], uv[1]
         x1, y1 = uv[2], uv[3]
         e([
             -w,
             -h,
             x0,
             y0,
             star[2],
             star[0],
             star[1],
             w,
             -h,
             x1,
             y0,
             star[2],
             star[0],
             star[1],
             w,
             h,
             x1,
             y1,
             star[2],
             star[0],
             star[1],
             -w,
             h,
             x0,
             y1,
             star[2],
             star[0],
             star[1],
         ])
     with self.canvas:
         self.mesh = Mesh(indices=indices,
                          vertices=vertices,
                          fmt=vertex_format,
                          mode='triangles',
                          texture=star_tex)