Exemple #1
0
    def test_scene():
        from .lights import PointLight, SpotLight, DirectionalLight
        scene = Scene()
        for j in range(2):
            for x, roughness in zip(np.linspace(-3, 3, 5),
                                    np.linspace(0, 1, 5)):
                sphere = Mesh(transform=glm.translate(glm.mat4(1),
                                                      (x, 0.5, j * 3 - 1.5)),
                              geometry=Geometry(*imdraw.geo.sphere()),
                              material=Material(albedo=glm.vec3(0.5),
                                                emission=(0, 0, 0),
                                                roughness=roughness,
                                                metallic=float(j)))

                scene.add_child(sphere)

        dirlight = DirectionalLight(direction=glm.vec3(1, -6, -2),
                                    color=glm.vec3(1.0),
                                    intensity=1.0,
                                    position=-glm.vec3(1, -6, -2),
                                    radius=5,
                                    near=1,
                                    far=30)

        spotlight = SpotLight(position=glm.vec3(-1, 0.5, -3),
                              direction=glm.vec3(1, -0.5, 3),
                              color=glm.vec3(0.04, 0.6, 1.0),
                              intensity=150.0,
                              fov=60,
                              near=1,
                              far=15)

        pointlight = PointLight(position=glm.vec3(2.5, 1.3, 2.5),
                                color=glm.vec3(1, 0.7, 0.1),
                                intensity=17.5,
                                near=0.1,
                                far=10)

        scene.add_child(dirlight)
        scene.add_child(spotlight)
        scene.add_child(pointlight)

        # cube = Mesh(transform=glm.translate(glm.mat4(1), (1.0, 0.5, 0.0)) * glm.rotate(glm.mat4(1), glm.radians(30), (0,1,0)),
        #         geometry=Geometry(*imdraw.geo.cube()),
        #         material=Material(albedo=(1, 0, 0),
        #                           emission=(0,0,0),
        #                           roughness=0.7,
        #                           metallic=0.0))
        # scene.add_child(cube)

        plane = Mesh(transform=glm.translate(glm.mat4(1), (0, 0.0, 0.0)),
                     geometry=Geometry(*imdraw.geo.plane()),
                     material=Material(albedo=(0.5, 0.5, 0.5),
                                       emission=(0, 0, 0),
                                       roughness=0.8,
                                       metallic=0.0))
        scene.add_child(plane)

        return scene
Exemple #2
0
    def from_trimesh_scene(triscene):
        import uuid
        import logging
        from editor.render.graphics import Scene, Mesh, Geometry, Material
        # read scene

        scene = Scene()
        # convert gltf
        for name, data in triscene.graph.transforms.nodes(data=True):
            # extract transform
            import glm
            transform = glm.mat4(triscene.graph[name][0])

            # extract mesh
            hasGeometry = 'geometry' in data
            if hasGeometry:
                trigeo = triscene.geometry[data['geometry']]
                print("!!!!!!!!!!", name)
                print(transform)
                # geometry
                geometry = Geometry(
                    positions=trigeo.vertices.astype(np.float32),
                    indices=trigeo.faces.astype(np.uint),
                    normals=trigeo.vertex_normals.astype(np.float32),
                    uvs=trigeo.visual.uv.astype(np.float32))

                # material
                print("!!!!!!!!!!", trigeo.visual.material.baseColorFactor)
                material = Material(
                    albedo=glm.vec3(
                        *trigeo.visual.material.baseColorFactor[:3] / 255),
                    emission=trigeo.visual.material.emissiveFactor[:3] / 255,
                    roughness=float(trigeo.visual.material.roughnessFactor),
                    metallic=float(trigeo.visual.material.metallicFactor))

                scene.add_child(
                    Mesh(name=name,
                         transform=glm.transpose(transform),
                         geometry=geometry,
                         material=material))
            else:
                logging.warning("currently only supports mesh")
            # extract light

        return scene
Exemple #3
0
if __name__ == "__main__":
    from OpenGL.GL import *
    import glm
    from editor.render.graphics.examples.viewer import Viewer
    from editor.render import glsl, puregl, imdraw
    from editor.render.graphics import Scene, Mesh, Geometry, Material, PointLight, SpotLight, DirectionalLight
    from pathlib import Path

    # Create Scene
    scene = Scene()
    mesh = Mesh(geometry=Geometry(*imdraw.geo.sphere()),
                transform=glm.translate(glm.mat4(1), (0, 0.5, 0)),
                material=Material(albedo=(0.7, 0.14, 0.14),
                                  roughness=0.3,
                                  metallic=1.0))
    scene.add_child(mesh)

    plane = Mesh(geometry=Geometry(*imdraw.geo.plane()),
                 material=Material(albedo=(0.9, 0.9, 0.9),
                                   roughness=0.7,
                                   metallic=0.0))
    scene.add_child(plane)

    dirlight = DirectionalLight(direction=glm.vec3(1, -6, -2),
                                color=glm.vec3(1.0),
                                intensity=1.0,
                                position=-glm.vec3(1, -6, -2),
                                radius=5,
                                near=1,
                                far=30)
    scene.add_child(dirlight)
Exemple #4
0
    from editor.render.graphics import Scene, Mesh, Geometry, Material

    from editor.render.graphics.examples.viewer import Viewer

    viewer = Viewer()

    # assets
    environment_image = assets.imread('hdri/Tropical_Beach_3k.hdr').astype(
        np.float32)

    # scene
    scene = Scene()
    scene.add_child(
        Mesh(transform=glm.translate(glm.mat4(1), (0.0, 0.5, 0.0)),
             geometry=Geometry(*imdraw.geo.sphere()),
             material=Material(albedo=glm.vec3(0.5),
                               emission=(0, 0, 0),
                               roughness=glm.pow(0.5, 2),
                               metallic=0.0)))
    scene.add_child(Mesh(geometry=Geometry(*imdraw.geo.plane())))

    dirlight = DirectionalLight(direction=glm.vec3(1, -6, -2),
                                color=glm.vec3(1.0),
                                intensity=1.0,
                                position=-glm.vec3(1, -6, -2),
                                radius=5,
                                near=1,
                                far=30)
    scene.add_child(dirlight)

    spotlight = SpotLight(position=glm.vec3(-1, 0.5, -3),
Exemple #5
0

if __name__ == "__main__":
    scene = Scene()
    cube = Mesh(transform=glm.translate(glm.mat4(1), (-1, 0.5, 0)),
                material=Material(albedo=glm.vec3(0.9, 0.04, 0.04),
                                  roughness=0.6,
                                  metallic=0.0,
                                  ao=1.0),
                geometry=Geometry.cube())

    sphere = Mesh(transform=glm.translate(glm.mat4(1), (1, 0.5, 0)),
                  material=Material(albedo=glm.vec3(0.04, 0.7, 0.9),
                                    roughness=0.2,
                                    metallic=1.0,
                                    ao=1.0),
                  geometry=Geometry.sphere())

    plane = Mesh(transform=glm.translate(glm.mat4(1), (0, 0.0, 0)),
                 material=Material(albedo=glm.vec3(0.5),
                                   roughness=0.3,
                                   metallic=0.0,
                                   ao=1.0),
                 geometry=Geometry.plane())

    scene.add_child(cube)
    scene.add_child(sphere)
    scene.add_child(plane)
    viewer = Viewer(scene=scene)
    viewer.start()
Exemple #6
0
from OpenGL.GL import *
import glm
from editor.render.graphics.examples.viewer import Viewer
from editor.render import glsl, puregl, imdraw
from editor.render.graphics import Scene, Mesh, Geometry, Material, PointLight, SpotLight, DirectionalLight
from pathlib import Path

# Create Scene
scene = Scene()
cube = Mesh(geometry=Geometry(*imdraw.geo.sphere()),
            transform=glm.translate(glm.mat4(1), (0, 0.5, 0)),
            material=Material(albedo=(1.0, 0, 0), roughness=0.2, metallic=0.0))
scene.add_child(cube)
plane = Mesh(geometry=Geometry(*imdraw.geo.plane()),
             material=Material(albedo=(0.9, 0.9, 0.9),
                               roughness=0.7,
                               metallic=0.0))
scene.add_child(plane)
dirlight = DirectionalLight(direction=glm.vec3(1, -6, -2),
                            color=glm.vec3(1.0),
                            intensity=1.0,
                            position=-glm.vec3(1, -6, -2),
                            radius=5,
                            near=1,
                            far=30)
scene.add_child(dirlight)

spotlight = SpotLight(position=glm.vec3(-1, 0.5, -3),
                      direction=glm.vec3(1, -0.5, 3),
                      color=glm.vec3(0.04, 0.6, 1.0),
                      intensity=150.0,
Exemple #7
0
if __name__ == "__main__":
    import glm
    from editor.render.graphics.examples.viewer import Viewer
    from editor.render.graphics import Scene, Mesh, Geometry, Material, PerspectiveCamera



    # create scene
    scene = Scene()
    mesh = Mesh(transform=glm.mat4(1),
                material=Material(albedo=(0, 0, 0),
                                  emission=(0, 0, 0),
                                  roughness=0.0,
                                  metallic=0.0),
                geometry=Geometry(*imdraw.geo.sphere()))
    scene.add_child(mesh)
    renderer = DeferredMatcapRenderer(1280, 720)
    camera = PerspectiveCamera(transform=glm.inverse(glm.lookAt(glm.vec3(2,2,4), glm.vec3(0,0,0), glm.vec3(0,1,0))), 
                               fovy=glm.radians(60), 
                               aspect=1280/720, 
                               near=0.1, 
                               far=30)

    viewer = Viewer()

    @viewer.event
    def on_draw():
        beauty = renderer.render(scene, viewer.camera)
        imdraw.texture(beauty, (0, 0, 1280, 720))

    viewer.start()
Exemple #8
0
    # viewer = TestViewer()

    # @viewer.event
    # def on_draw():
    #     pass
    # viewer.start()

    from editor.render.graphics import Scene, Mesh, Geometry, Material, PointLight, SpotLight, DirectionalLight
    import numpy as np
    scene = Scene()
    for j in range(2):
        for x, roughness in zip(np.linspace(-6, 6, 10), np.linspace(0, 1, 10)):
            scene.add_child(
                Mesh(transform=glm.translate(glm.mat4(1), (x, 0.5, j * 1.5)),
                     geometry=Geometry(*imdraw.geo.sphere()),
                     material=Material(albedo=glm.vec3(0.5),
                                       emission=(0, 0, 0),
                                       roughness=roughness,
                                       metallic=float(j))))

    for j in range(2):
        for x, roughness in zip(np.linspace(-6, 6, 10), np.linspace(0, 1, 10)):
            scene.add_child(
                Mesh(transform=glm.translate(glm.mat4(1),
                                             (x, 0.5, j * 1.5 - 3)),
                     geometry=Geometry(*imdraw.geo.sphere()),
                     material=Material(albedo=glm.vec3(0.5),
                                       emission=(0, 0, 0),
                                       roughness=glm.pow(roughness, 2),
                                       metallic=float(j))))