Пример #1
0
def test_get_camera_params():
    s = Scene()
    s.render(interactive=False)
    cam = s.plotter.camera

    params = get_camera_params(scene=s)
    params2 = get_camera_params(camera=cam)

    check_camera_param(params)
    check_camera_param(params2)
Пример #2
0
    def _update_camera(self):
        if self.camera_orientation is not None:
            camera = self.camera_orientation
            self.camera_orientation = None
        else:
            camera = get_camera_params(scene=self.scene)

        self.scene.render(camera=camera)
        self._update()

        logger.debug(f"GUI: resetting camera to: {self.camera_orientation}")
Пример #3
0
    def _print_camera(self):
        pms = get_camera_params(scene=self)

        focal = pms.pop("focalPoint", None)
        dst = pms.pop("distance", None)

        names = [
            f"[green bold]     '{k}'[/green bold]: [{amber}]{v},"
            for k, v in pms.items()
        ]
        print(
            f"[{deep_purple_light}]Camera parameters:",
            f"[{orange}]    {{",
            *names,
            f"[{orange}]   }}",
            f"[{deep_purple_light}]Additional, (optional) parameters:",
            f"[green bold]     'focalPoint'[/green bold]: [{amber}]{focal},",
            f"[green bold]     'distance'[/green bold]: [{amber}]{dst},",
            sep="\n",
        )
Пример #4
0
    def get_frame_params(self, frame_number):
        """
            Get current parameters (e.g. camera position)
            based on frame numbe and defined key frames.

            If frame number is a keyframe or is after a keyframe
            then the params are those of that/the last keyframe.
            Else the params of two consecutive keyframes are interpolate
            using either a linear or sigmoid function.
        """
        if frame_number in self.keyframes_numbers:
            # Check if current frame is a key frame
            params = self.keyframes[frame_number]

        elif frame_number > self.last_keyframe:
            # check if current frame is past the last keyframe
            params = self.keyframes[self.last_keyframe]
            params["callback"] = None

        else:
            # interpolate between two key frames
            prev = [n for n in self.keyframes_numbers if n < frame_number][-1]
            nxt = [n for n in self.keyframes_numbers if n > frame_number][0]
            kf1, kf2 = self.keyframes[prev], self.keyframes[nxt]

            self.segment_fact = (nxt - frame_number) / (nxt - prev)
            if kf2["interpol"] == "sigma":
                self.segment_fact = sigma(self.segment_fact)

            params = dict(
                camera=self._interpolate_cameras(kf1["camera"], kf2["camera"]),
                zoom=self._interpolate_values(kf1["zoom"], kf2["zoom"]),
                callback=None,
            )

        # get current camera (to avoid using scene's default)
        if params["camera"] is None:
            params["camera"] = get_camera_params(self.scene)
        return params
Пример #5
0
    def _update(self):
        """
            Updates the scene's Plotter to add/remove
            meshes
        """
        if self.camera_orientation is not None:
            # set_camera(self.scene, self.camera_orientation)
            camera = self.camera_orientation
            self.camera_orientation = None
        else:
            camera = get_camera_params(scene=self.scene)
        self.scene.render(camera=camera)

        # Get actors to render
        self._update_actors()
        to_render = [act for act in self.actors.values() if act.is_visible]

        # Set actors look
        meshes = [act.mesh.c(act.color).alpha(act.alpha) for act in to_render]

        # Add axes
        if self.axes is not None:
            meshes.append(self.axes)

        # update actors rendered
        self.scene.plotter.show(
            *meshes,
            interactorStyle=0,
            bg=brainrender.settings.BACKGROUND_COLOR,
        )

        # Fake a button press to force canvas update
        self.scene.plotter.interactor.MiddleButtonPressEvent()
        self.scene.plotter.interactor.MiddleButtonReleaseEvent()

        # Update list widget
        update_actors_list(self.actors_list, self.actors)

        return meshes
Пример #6
0
def test_set_camera_params():
    s = Scene()
    params = get_camera_params(scene=s)

    set_camera_params(s.plotter.camera, params)