예제 #1
0
파일: examples.py 프로젝트: FR98/engine-3d
def model_with_triangle():
    render = Render(2000, 2000)
    render.light = render.vector(0, 0, 1)
    render.load_model_3D('./models/Biplane/OBJ/HiPoly/Biplane.obj',
                         scale=render.vector(200, 200, 200),
                         rotate=render.vector(0, 0, 0))
    render.glFinish()
def model():
    """
    Draws a cube at an angle so it is more interesting
    """
    r = Render(800, 600)
    t = Texture('./models/model.bmp')
    r.active_texture = t
    r.load('./models/model.obj', (1, 1, 1), (300, 300, 300))
    r.draw_arrays('TRIANGLES')
    r.display('out.bmp')
예제 #3
0
def face():
    """
    Draws a cute face, but in wireframe it just looks creepy
    """
    r = Render(800, 600)
    r.load('./models/face.obj', (25, 5), (15, 15))
    r.display()
    r.display('out.bmp')
예제 #4
0
파일: examples.py 프로젝트: FR98/engine-3d
def poligonos():
    poligono1 = [(165, 380), (185, 360), (180, 330), (207, 345), (233, 330),
                 (230, 360), (250, 380), (220, 385), (205, 410), (193, 383)]
    poligono2 = [(321, 335), (288, 286), (339, 251), (374, 302)]
    poligono3 = [(377, 249), (411, 197), (436, 249)]
    poligono4 = [(413, 177), (448, 159), (502, 88), (553, 53), (535, 36),
                 (676, 37), (660, 52), (750, 145), (761, 179), (672, 192),
                 (659, 214), (615, 214), (632, 230), (580, 230), (597, 215),
                 (552, 214), (517, 144), (466, 180)]
    poligono5 = [(682, 175), (708, 120), (735, 148), (739, 170)]
    render = Render(800, 800)
    render.polygone(poligono1)
    render.polygone(poligono2)
    render.polygone(poligono3)
    render.polygone(poligono4)
    render.polygone(poligono5)
    render.glFinish()
def stars():
    """
    Randomly draws stars
    """
    width = 800
    height = 600
    r = Render(width, height)

    def star(x, y, size):
        """
        Draws a star.
        Size 1: small
        Size 2: medium
        Size 3: big
        """
        c = random.randint(0, 255)
        r.set_color(color(c, c, c))  # 3 identical colors will always be gray

        if size == 1:
            r.point(x, y)
        elif size == 2:  # 4 points
            r.point(x, y)
            r.point(x + 1, y)
            r.point(x, y + 1)
            r.point(x + 1, y + 1)
        elif size == 3:  # 9 points
            r.point(x, y)
            r.point(x + 1, y)
            r.point(x, y + 1)
            r.point(x - 1, y)
            r.point(x, y - 1)
            # remove the corners
            # r.point(x+1, y+1)
            # r.point(x-1, y-1)
            # r.point(x-1, y+1)
            # r.point(x+1, y-1)

    # leaves a 2 pixel padding to avoid OOB
    for x in range(width - 4):
        for y in range(height - 4):
            if random.random(
            ) < 0.001:  # 0.1% only 0.1 chance of actually rendering a star
                star(x + 2, y + 2, random.randint(1, 3))

    r.write('out.bmp')
예제 #6
0
def triangle():
    """
    Draws triangles
    """
    r = Render(200, 200)
    r.triangle(
        V2(10, 70), V2(50, 160), V2(70, 80),
        color(random.randint(0, 255), random.randint(0, 255),
              random.randint(0, 255)))
    r.triangle(
        V2(180, 50), V2(150, 1), V2(70, 180),
        color(random.randint(0, 255), random.randint(0, 255),
              random.randint(0, 255)))
    r.triangle(
        V2(180, 150), V2(120, 160), V2(130, 180),
        color(random.randint(0, 255), random.randint(0, 255),
              random.randint(0, 255)))
    r.display('out.bmp')
예제 #7
0
def single_line():
    """
    Draws a single line in the screen (lower left corner)
    """
    r = Render(800, 600)
    r.line((10, 10), (510, 10))
    r.display('out.bmp')
예제 #8
0
def cube():
    """
    Draws a cube at an angle so it is more interesting
    """
    r = Render(800, 600)
    r.load('./models/cube2.obj', (4, 3, 3), (100, 100, 100))
    r.display('out.bmp')
예제 #9
0
def face():
    """
    Draws a cute face, now 30% less creepy!
    """
    r = Render(800, 600)
    r.load('./models/face.obj', (25, 5, 0), (15, 15, 15))
    r.display('out.bmp')
예제 #10
0
def single_point():
    """
    Draws a single point in the screen (upper left corner)
    """
    r = Render(800, 600)
    r.point(10, 590)
    r.display('out.bmp')
예제 #11
0
def natsuki():
    """
    Draws natsuki from ddlc, because we can now
    """
    r = Render(800, 600)
    r.load('./models/natsuki.obj', (0.5, 0, 0), (500, 500, 300))
    r.display('out.bmp')
예제 #12
0
def figures():
    """
    Draws some simple shapes, to test z indexing
    """
    r = Render(800, 600)
    r.load('./models/cubespherecone.obj', (0, 1, 1), (100, 100, 100))
    r.display('out.bmp')
예제 #13
0
def model():
    """
    Draws a face, now 30% less cute
    """
    r = Render(800, 600)
    r.load('./models/model.obj', (3, 3, 0), (200, 200, 15))
    r.display('out.bmp')
예제 #14
0
def figures():
    """
    Draws a cute face, now 30% less creepy!
    """
    r = Render(800, 600)
    r.load('./models/figures.obj', (3, 1, 1), (100, 100, 100))
    r.display('out.bmp')
예제 #15
0
def model():
    """
    Draws a cube at an angle so it is more interesting
    """
    r = Render(800, 600)
    t = Texture('./models/model.bmp')
    r.load('./models/model.obj', (1, 1, 1), (300, 300, 300), texture=t)
    r.display('out.bmp')
예제 #16
0
def earth():
    """
    Draws planet earth, racism free
    """
    r = Render(800, 600)
    t = Texture('./models/earth.bmp')
    r.load('./models/earth.obj', (800, 600, 0), (0.5, 0.5, 1), texture=t)
    r.display('out.bmp')
예제 #17
0
def simple_cube():
    """
    Draws a cube, but an orthogonal cube, so a square
    """
    r = Render(800, 600)
    r.load('./models/cube.obj', (4, 3), (100, 100))
    # r.display()
    r.display('out.bmp')
예제 #18
0
def bears():
    """
    Draws some bears on top of each other
    """
    r = Render(800, 600)
    r.load('./models/bears.obj', (9, 2), (40, 40))
    # r.display()
    r.display('out.bmp')
예제 #19
0
파일: examples.py 프로젝트: FR98/engine-3d
def star(width, height):
    r = Render.glInit(width, height)

    r.glClear()
    r.glColor(1, 1, 1)

    # Lines
    r.glLine(0, 0, 1, 0)
    r.glLine(0, 0, 0, 1)
    r.glLine(0, 0, -1, 0)
    r.glLine(0, 0, 0, -1)

    r.glLine(0, 0, 1, 1)
    r.glLine(0, 0, 1, -1)
    r.glLine(0, 0, -1, 1)
    r.glLine(0, 0, -1, -1)

    r.glLine(0, 0, 0.5, 1)
    r.glLine(0, 0, 1, 0.5)
    r.glLine(0, 0, 1, -0.5)
    r.glLine(0, 0, 0.5, -1)
    r.glLine(0, 0, -0.5, 1)
    r.glLine(0, 0, -1, 0.5)
    r.glLine(0, 0, -1, -0.5)
    r.glLine(0, 0, -0.5, -1)

    r.glLine(0, 0, 0.25, 1)
    r.glLine(0, 0, 0.75, 1)
    r.glLine(0, 0, 1, 0.75)
    r.glLine(0, 0, 1, 0.25)

    r.glLine(0, 0, 0.25, -1)
    r.glLine(0, 0, 0.75, -1)
    r.glLine(0, 0, 1, -0.75)
    r.glLine(0, 0, 1, -0.25)

    r.glLine(0, 0, -0.25, -1)
    r.glLine(0, 0, -0.75, -1)
    r.glLine(0, 0, -1, -0.75)
    r.glLine(0, 0, -1, -0.25)

    r.glLine(0, 0, -0.25, 1)
    r.glLine(0, 0, -0.75, 1)
    r.glLine(0, 0, -1, 0.75)
    r.glLine(0, 0, -1, 0.25)

    r.glFinish()
예제 #20
0
def static():
    """
    Draws static noise in B/W
    """
    width = 800
    height = 600
    r = Render(width, height)

    # very inefficient
    for x in range(width):
        for y in range(height):
            if random.random() > 0.5:  # 50/50 chance
                r.point(x, y)

    r.display('out.bmp')
예제 #21
0
def diagonal():
    """
    Draws a perfectly diagonal line
    """
    width = 800
    height = 600
    r = Render(width, height)

    # very inefficient
    for x in range(width):
        for y in range(height):
            if x == y:
                r.point(x, y)

    r.display('out.bmp')
def color_static():
    """
    Draws static noise in color
    """
    width = 800
    height = 600
    r = Render(width, height)

    # very inefficient
    for x in range(width):
        for y in range(height):
            r.point(
                x, y,
                color(random.randint(0, 255), random.randint(0, 255),
                      random.randint(0, 255)))

    r.write('out.bmp')
예제 #23
0
# Laboratorio 1 Tests.py

#Import our gl library
import math
from gl import Render, colorScale

#We draw our MainGL
mainGl = Render(1000, 500)

#We define our polygons

polygon1 = [(165, 380), (185, 360), (180, 330), (207, 345), (233, 330),
            (230, 360), (250, 380), (220, 385), (205, 410), (193, 383)]
polygon2 = [(321, 335), (288, 286), (339, 251), (374, 302)]
polygon3 = [(377, 249), (411, 197), (436, 249)]
polygon4 = [(413, 177), (448, 159), (502, 88), (553, 53), (535, 36), (676, 37),
            (660, 52), (750, 145), (761, 179), (672, 192), (659, 214),
            (615, 214), (632, 230), (580, 230), (597, 215), (552, 214),
            (517, 144), (466, 180)]
polygon5 = [(682, 175), (708, 120), (735, 148), (739, 170)]
polygon6 = [(100, 100), (100, 400), (800, 400), (800, 100)]

mainGl.glColorRGB(1, 0, 0)
mainGl.glDrawAndPaintPolygon(polygon1)
mainGl.glColorRGB(0, 1, 0)
mainGl.glDrawAndPaintPolygon(polygon2)
mainGl.glColorRGB(0, 0, 1)
mainGl.glDrawAndPaintPolygon(polygon3)
mainGl.glColorRGB(1, 1, 0)
mainGl.glDrawAndPaintPolygon(polygon4)
mainGl.glColorRGB(1, 0, 1)
예제 #24
0
"""
Paula Camila Gonzalez Ortega
18398
"""
from gl import Render

width = 1000
height = 1000

bitmap = Render(width, height) 

bitmap.glClearColor(0, 0, 0) #este es background color
bitmap.glclear()
bitmap.glColor(1, 0.5, 0) #estos colores son los que se usaran para pintar 

#POLY 1
poly = [(165, 380), (185, 360), 
(185, 360), (180, 330),
(180, 330), (207, 345),
(207, 345), (233, 330), 
(233, 330), (230, 360),
(230, 360), (250, 380),
(250, 380), (220, 385),
(220, 385), (205, 410),
(205, 410), (193, 383),
(193, 383), (165, 380)]
bitmap.drawPolygon(poly)
bitmap.filling(poly)

#POLY 2
bitmap.glColor(0.5, 0, 1)
예제 #25
0
def square():
    """
    Draws a square (to test correct dimensions)
    """
    width = 800
    height = 600
    r = Render(width, height)

    padding = 10
    square_w = width - padding
    square_h = height - padding

    # horizontal lines
    for x in range(width):
        if (x > padding and x < square_w):
            r.point(x, square_h)
            r.point(x, padding)

    # vertical lines
    for y in range(height):
        if (y > padding and y < square_h):
            r.point(square_w, y)
            r.point(padding, y)

    r.display('out.bmp')
예제 #26
0
def isometric_cube():
    """
    Draws a isometric cube
    """
    r = Render(600, 600)

    r.line((200, 200), (287, 250))
    r.line((200, 200), (113, 250))
    r.line((200, 200), (200, 300))
    r.line((287, 250), (287, 350))
    r.line((113, 250), (113, 350))
    r.line((200, 300), (287, 350))
    r.line((200, 300), (113, 350))
    r.line((287, 350), (200, 400))
    r.line((113, 350), (200, 400))

    r.display('out.bmp')
예제 #27
0
def cube():
    """
    Draws a cube 
    """
    r = Render(400, 400)

    r.line((100, 100), (200, 100))
    r.line((100, 100), (100, 200))
    r.line((200, 100), (200, 200))
    r.line((100, 200), (200, 200))

    r.line((150, 150), (250, 150))
    r.line((150, 150), (150, 250))
    r.line((250, 150), (250, 250))
    r.line((150, 250), (250, 250))

    r.line((100, 100), (150, 150))
    r.line((100, 200), (150, 250))
    r.line((200, 100), (250, 150))
    r.line((200, 200), (250, 250))

    r.display('out.bmp')
예제 #28
0
def multi_line():
    """
    Draws lines from every corner
    """
    r = Render(800, 600)
    r.line((10, 10), (510, 10))
    r.line((10, 10), (462, 191))
    r.line((10, 10), (354, 354))
    r.line((10, 10), (191, 462))
    r.line((10, 10), (10, 510))
    r.line((790, 590), (790, 90))
    r.line((790, 590), (609, 138))
    r.line((790, 590), (446, 246))
    r.line((790, 590), (338, 409))
    r.line((790, 590), (290, 590))
    r.line((10, 590), (510, 590))
    r.line((10, 590), (462, 409))
    r.line((10, 590), (354, 246))
    r.line((10, 590), (191, 138))
    r.line((10, 590), (10, 90))
    r.line((790, 10), (790, 510))
    r.line((790, 10), (609, 462))
    r.line((790, 10), (446, 354))
    r.line((790, 10), (338, 191))
    r.line((790, 10), (290, 10))
    r.display('out.bmp')
# Laboratorio 3 Tests.py

#Import our gl library
import math
from gl import Render, colorScale
from obj import Obj

#We draw our Raptor
mainGl = Render(1400, 1400)
mainGl.loadObjModel('raptor.obj', 700, 500)
mainGl.glFinish('graphic.bmp')

#We draw our Dinosaur
mainGl2 = Render(1400, 1400)
mainGl2.loadObjModel('dinosaur.obj', 700, 700, 5, 5)
mainGl2.glFinish('graphic2.bmp')

#We draw our Trex
mainGl3 = Render(1400, 1400)
mainGl3.loadObjModel('trex.obj', 700, 500, 3, 3)
mainGl3.glFinish('graphic3.bmp')

#We draw our Laptop
mainGl4 = Render(1400, 1400)
mainGl4.loadObjModel('laptop.obj', 700, 500, 25, 25)
mainGl4.glFinish('graphic4.bmp')

#We draw our Roulette
mainGl5 = Render(5000, 5000)
mainGl5.loadObjModel('roulette.obj', 2500, 500, 1, 1)
mainGl5.glFinish('graphic5.bmp')
예제 #30
0
파일: lines.py 프로젝트: Arem58/Graficas-gl
from gl import Render, color

r = Render()
r.glInit()
r.glClearColor(1, 0, 0)
r.glCreateWindow(800, 600)


def line(x1, y1, x2, y2):
    dy = (y2 - y1)
    dx = abs(x2 - x1)

    steep = dy > dx

    if steep:
        x1, y1 = y1, x1
        x2, y2 = y2, x2

    if x1 > x2:
        x1, x2 = x2, x1
        y1, y2 = y2, y1

    dy = abs(y2 - y1)
    dx = abs(x2 - x1)

    offset = 0
    threshold = 1 * dx
    y = y1
    for x in range(x1, x2):
        if steep:
            r.point(y, x)