示例#1
0
    def __init__(self, model_folder, K, width=640, height=480, zNear=0.25, zFar=6.0):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_folder = model_folder

        log.info("Loading mesh")
        vertices, indices = data.objload("{}/textured.obj"
                                         .format(model_folder), rescale=False)
        self.render_kernel = gloo.Program(vertex, fragment)
        self.render_kernel.bind(vertices)
        log.info("Loading texture")
        self.render_kernel['u_texture'] = np.copy(data.load("{}/texture_map.png"
                                                            .format(model_folder))[::-1, :, :])

        self.render_kernel['u_model'] = np.eye(4, dtype=np.float32)
        u_projection = self.my_compute_calib_proj(K, width, height, zNear, zFar)
        self.render_kernel['u_projection'] = np.copy(u_projection)

        self.window = app.Window(width=width, height=height, visible=False)
        @self.window.event
        def on_draw(dt):
            global trans
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            self.render_kernel.draw(gl.GL_TRIANGLES)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#2
0
    def __init__(self,
                 model_folder,
                 K,
                 width=640,
                 height=480,
                 zNear=0.25,
                 zFar=6.0):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_folder = model_folder

        self.rgb_buffer = np.zeros((self.height, self.width, 4),
                                   dtype=np.float32)
        self.depth_buffer = np.zeros((self.height, self.width),
                                     dtype=np.float32)

        log.info("Loading mesh")
        vertices, indices = data.objload(
            "{}/textured.obj".format(model_folder), rescale=False)
        self.render_kernel = gloo.Program(self.vertex, self.fragment)
        self.render_kernel.bind(vertices)
        log.info("Loading texture")
        self.render_kernel["u_texture"] = np.copy(
            data.load("{}/texture_map.png".format(model_folder))[::-1, :, :])

        self.render_kernel["u_model"] = np.eye(4, dtype=np.float32)
        u_projection = self.my_compute_calib_proj(K, width, height, zNear,
                                                  zFar)
        self.render_kernel["u_projection"] = np.copy(u_projection)

        self.window = app.Window(width=width, height=height, visible=False)
        print("self.window: ", self.window)
        print("self.render_kernel at init: ", self.render_kernel)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            self.render_kernel.draw(gl.GL_TRIANGLES)
            gl.glReadPixels(0, 0, self.width, self.height, gl.GL_RGBA,
                            gl.GL_FLOAT, self.rgb_buffer)
            gl.glReadPixels(
                0,
                0,
                self.width,
                self.height,
                gl.GL_DEPTH_COMPONENT,
                gl.GL_FLOAT,
                self.depth_buffer,
            )

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
    def __init__(
        self,
        model_path,
        texture_path,
        K,
        width=640,
        height=480,
        zNear=0.25,
        zFar=6.0,
        brightness_ratios=[0.7],
    ):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_path = model_path

        log.info("Loading mesh")
        vertices, indices = data.objload("{}".format(model_path), rescale=True)
        vertices["position"] = vertices["position"] / 10.0

        self.render_kernels = []
        for brightness_ratio in brightness_ratios:
            fragment = get_fragment(brightness_ratio=brightness_ratio)
            render_kernel = gloo.Program(vertex, fragment)
            render_kernel.bind(vertices)

            log.info("Loading texture")
            render_kernel["u_texture"] = np.copy(
                data.load("{}".format(texture_path))[::-1, :, :])

            render_kernel["u_model"] = np.eye(4, dtype=np.float32)
            u_projection = self.my_compute_calib_proj(K, width, height, zNear,
                                                      zFar)
            render_kernel["u_projection"] = np.copy(u_projection)

            render_kernel["u_light_intensity"] = 1, 1, 1
            self.render_kernels.append(render_kernel)
        self.brightness_k = 0  # init

        self.window = app.Window(width=width, height=height, visible=False)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            # print('brightness_k', self.brightness_k) # this function runs when running app.run()
            self.render_kernels[self.brightness_k].draw(gl.GL_TRIANGLES)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#4
0
    def __init__(self, class_name_list, model_folder_dict, K, width=640, height=480, zNear=0.25, zFar=6.0, brightness_ratios=[0.4, 0.3, 0.2]):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_folder_dict = model_folder_dict
        self.class_name_list = class_name_list

        self.render_kernels = {} # self.render_kernels[class_name][brightness_ratio]
        for cls_name in class_name_list:
            if cls_name == "__background__":
                continue
            model_folder = model_folder_dict[cls_name]
            log.info("Loading mesh")
            vertices, indices = data.objload("{}/textured.obj"
                                             .format(model_folder), rescale=False)
            if not cls_name in self.render_kernels.keys():
                self.render_kernels[cls_name] = []
            for brightness_ratio in brightness_ratios:
                print('class_name: {}, brightness_ratio: {}, model_folder: {}'.format(cls_name, brightness_ratio,
                                                                                   model_folder))
                fragment = get_fragment(brightness_ratio=brightness_ratio)
                render_kernel = gloo.Program(vertex, fragment)
                render_kernel.bind(vertices)

                log.info("Loading texture")
                render_kernel['u_texture'] = np.copy(data.load("{}/texture_map.png"
                                                                    .format(model_folder))[::-1, :, :])

                render_kernel['u_model'] = np.eye(4, dtype=np.float32)
                u_projection = self.my_compute_calib_proj(K, width, height, zNear, zFar)
                render_kernel['u_projection'] = np.copy(u_projection)

                render_kernel['u_light_intensity'] = 1, 1, 1
                self.render_kernels[cls_name].append(render_kernel)

        self.class_name = class_name_list[-1]
        self.brightness_k = 0 # init

        self.window = app.Window(width=width, height=height, visible=False)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            # print('brightness_k', self.brightness_k) # this function runs when running app.run()
            self.render_kernels[self.class_name][self.brightness_k].draw(gl.GL_TRIANGLES)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#5
0
    def __init__(self,
                 model_folder,
                 K,
                 width=640,
                 height=480,
                 zNear=0.25,
                 zFar=6.0,
                 brightness_ratios=[0.4, 0.3, 0.2]):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_folder = model_folder

        log.info("Loading brain mesh")
        vertices, indices = data.objload(
            "{}/textured.obj".format(model_folder), rescale=False)
        self.render_kernels = []
        for brightness_ratio in brightness_ratios:
            fragment = get_fragment(brightness_ratio=brightness_ratio)
            render_kernel = gloo.Program(vertex, fragment)
            render_kernel.bind(vertices)

            log.info("Loading brain texture")
            render_kernel['u_texture'] = np.copy(
                data.load(
                    "{}/texture_map.png".format(model_folder))[::-1, :, :])

            render_kernel['u_model'] = np.eye(4, dtype=np.float32)
            u_projection = self.my_compute_calib_proj(K, width, height, zNear,
                                                      zFar)
            render_kernel['u_projection'] = np.copy(u_projection)

            render_kernel['u_light_intensity'] = 1, 1, 1
            self.render_kernels.append(render_kernel)
        self.brightness_k = 0  # init

        self.window = app.Window(width=width, height=height, visible=False)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            self.render_kernels[self.brightness_k].draw(gl.GL_TRIANGLES)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#6
0
    def __init__(self, model_path_list, texture_path, K, width=640, height=480, zNear=0.25, zFar=6.0, brightness_ratios=[0.7]):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_path_list = model_path_list
        self.model_path = model_path_list[0]
        self.render_kernels = {model_path: [] for model_path in model_path_list}

        log.info("Loading mesh")
        for model_i, model_path in enumerate(model_path_list):
            print('loading model: {}/{}, {}'.format(model_i+1, len(model_path_list), model_path))
            vertices, indices = data.objload("{}"
                                             .format(model_path), rescale=True)
            vertices['position'] = vertices['position'] / 10.


            for brightness_ratio in brightness_ratios:
                fragment = get_fragment(brightness_ratio=brightness_ratio)
                render_kernel = gloo.Program(vertex, fragment)
                render_kernel.bind(vertices)

                log.info("Loading texture")
                render_kernel['u_texture'] = np.copy(data.load("{}"
                                                               .format(texture_path))[::-1, :, :])

                render_kernel['u_model'] = np.eye(4, dtype=np.float32)
                u_projection = self.my_compute_calib_proj(K, width, height, zNear, zFar)
                render_kernel['u_projection'] = np.copy(u_projection)

                render_kernel['u_light_intensity'] = 1, 1, 1
                self.render_kernels[model_path].append(render_kernel)
        print('************Finish loading models in Render_Py_Light_ModelNet_Multi********************')
        self.brightness_k = 0  # init

        self.window = app.Window(width=width, height=height, visible=False)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            self.render_kernels[self.model_path][self.brightness_k].draw(gl.GL_TRIANGLES)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#7
0
    def __init__(self,
                 model_dir,
                 classes,
                 K,
                 width=640,
                 height=480,
                 zNear=0.25,
                 zFar=6.0):
        self.width = width
        self.height = height
        self.zNear = zNear
        self.zFar = zFar
        self.K = K
        self.model_dir = model_dir

        self.rgb_buffer = np.zeros((self.height, self.width, 4),
                                   dtype=np.float32)
        self.depth_buffer = np.zeros((self.height, self.width),
                                     dtype=np.float32)

        log.info("Loading mesh")
        self.render_kernel_list = [[] for cls in classes]
        self.classes = classes
        self.cls_idx = 0
        for class_id, cur_class in enumerate(classes):
            model_folder = os.path.join(model_dir, cur_class)
            print("Loading {}".format(model_folder))
            vertices, indices = data.objload(
                "{}/textured.obj".format(model_folder), rescale=False)
            render_kernel = gloo.Program(self.vertex, self.fragment)
            render_kernel.bind(vertices)
            log.info("Loading texture")
            render_kernel["u_texture"] = np.copy(
                data.load(
                    "{}/texture_map.png".format(model_folder))[::-1, :, :])

            render_kernel["u_model"] = np.eye(4, dtype=np.float32)
            u_projection = self.my_compute_calib_proj(K, width, height, zNear,
                                                      zFar)
            render_kernel["u_projection"] = np.copy(u_projection)
            self.render_kernel_list[class_id] = render_kernel
        print("************Finish loading models*************")

        self.window = app.Window(width=width, height=height, visible=False)
        print("self.window: ", self.window)
        print("self.render_kernel at init: ", self.render_kernel_list)

        @self.window.event
        def on_draw(dt):
            self.window.clear()
            gl.glDisable(gl.GL_BLEND)
            gl.glEnable(gl.GL_DEPTH_TEST)
            self.render_kernel_list[self.cls_idx].draw(gl.GL_TRIANGLES)
            gl.glReadPixels(0, 0, self.width, self.height, gl.GL_RGBA,
                            gl.GL_FLOAT, self.rgb_buffer)
            gl.glReadPixels(0, 0, self.width, self.height,
                            gl.GL_DEPTH_COMPONENT, gl.GL_FLOAT,
                            self.depth_buffer)

        @self.window.event
        def on_init():
            gl.glEnable(gl.GL_DEPTH_TEST)
示例#8
0
    if (lambertian > 0.0)
    {
        vec3 view_direction = normalize(-v_position);
        vec3 half_direction = normalize(light_direction + view_direction);
        float specular_angle = max(dot(half_direction, normal), 0.0);
        specular = pow(specular_angle, shininess);
    }
    vec3 color_linear = ambient_color +
                        lambertian * diffuse_color +
                        specular * specular_color;
    vec3 color_gamma = pow(color_linear, vec3(1.0/gamma));
    gl_FragColor = vec4(color_gamma, 1.0);
}
"""

log.info("Loading brain mesh")
vertices,indices = data.get("brain.obj")
brain = gloo.Program(vertex, fragment)
brain.bind(vertices)
trackball = Trackball(Position("position"))
brain['transform'] = trackball
trackball.theta, trackball.phi, trackball.zoom = 80, -135, 15

window = app.Window(width=1024, height=768)

def update():
    model = brain['transform']['model'].reshape(4,4)
    view  = brain['transform']['view'].reshape(4,4)
    brain['m_view']  = view
    brain['m_model'] = model
    brain['m_normal'] = np.array(np.matrix(np.dot(view, model)).I.T)
示例#9
0
    if (lambertian > 0.0)
    {
        vec3 view_direction = normalize(-v_position);
        vec3 half_direction = normalize(light_direction + view_direction);
        float specular_angle = max(dot(half_direction, normal), 0.0);
        specular = pow(specular_angle, shininess);
    }
    vec3 color_linear = ambient_color +
                        lambertian * diffuse_color +
                        specular * specular_color;
    vec3 color_gamma = pow(color_linear, vec3(1.0/gamma));
    gl_FragColor = vec4(color_gamma, 1.0);
}
"""

log.info("Loading brain mesh")
vertices, indices = data.get("brain.obj")
brain = gloo.Program(vertex, fragment)
brain.bind(vertices)
trackball = Trackball(Position("position"))
brain['transform'] = trackball
trackball.theta, trackball.phi, trackball.zoom = 80, -135, 15

window = app.Window(width=1024, height=768)


def update():
    model = brain['transform']['model'].reshape(4, 4)
    view = brain['transform']['view'].reshape(4, 4)
    brain['m_view'] = view
    brain['m_model'] = model