renderer.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:mv3d 作者: lmb-freiburg 项目源码 文件源码
def renderView(self, camera_pos, light_sources,
                   blur, blending, spher=True, default_bg_setting=True):

        self.setCameraPosition(camera_pos[0],
                               math.radians(camera_pos[1]),
                               math.radians(camera_pos[2]))

        self.activateLightSources(light_sources, spher)

        base.graphicsEngine.renderFrame()
        tex = base.win.getScreenshot()
        im = self.textureToImage(tex)

        if self.generate_depth is True:
            depth_im = PNMImage()
            self.depth_tex.store(depth_im)

            depth_map = np.zeros([self.resolution,
                                  self.resolution], dtype='float')
            for i in range(0, self.resolution):
                for j in range(0, self.resolution):
                    depth_val = depth_im.getGray(j, i)
                    depth_map[i, j] = self.far_plane * self.near_plane /\
                        (self.far_plane - depth_val *
                            (self.far_plane - self.near_plane))
                    depth_map[i, j] = depth_map[i, j] / self.far_plane

            dm_uint = np.round(depth_map * self.max_16bit_val).astype('uint16')

        if self.replace_background is True and default_bg_setting is True:
            mask = (dm_uint == self.max_16bit_val)
            temp = np.multiply(
                mask.astype(dtype=np.float32).reshape(
                        self.resolution, self.resolution, 1), im)
            im = im - temp
            blurred_mask = scipy.ndimage.gaussian_filter(
                mask.astype(dtype=np.float32), blending)
            inv_mask = (blurred_mask - 1)*(-1)

            bg_ind = random.randint(0, len(self.backgrounds)-1)
            im = np.multiply(
                self.backgrounds[bg_ind],
                blurred_mask.reshape(self.resolution, self.resolution, 1)) + \
                np.multiply(im, inv_mask.reshape(self.resolution,
                                                 self.resolution, 1))

            im = scipy.ndimage.gaussian_filter(im, sigma=blur)

        im = im.astype(dtype=np.uint8)

        self.deactivateLightSources()

        return im, dm_uint
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号