Giter Site home page Giter Site logo

Comments (5)

allemangD avatar allemangD commented on June 24, 2024 1

It may also be worth looking into Dependant Markups for automatic updating of related markups.

MarkupConstraints now has its own repository; refer to that instead of the old DependantMarkup branch which will no longer be updated. https://github.com/KitwareMedical/SlicerMarkupConstraints

I plan to implement more adaptors (and create a system to register custom adaptors) to allow the constraints system to observe/constrain other nodes than markup control points; for example to observe a spline in its entirety rather than a single control point, or to constrain the position of a model or volume. From what I gather here, that feature would be important for synchronizing camera orientation with other control points so I will create a relevant issue and prioritize that work.

Plane markup has controls to work as a camera pose. Can be used as an interaction widget for placing and modifying camera poses along the flythrough curve.

I believe all markup nodes can enable the interaction widget; for camera position it may be better to use a fiducial markup with a single oriented point. I can confirm the interaction widget functions well with MarkupConstraints.

interaction-widget

from vpaw.

jadh4v avatar jadh4v commented on June 24, 2024

Initial survey of modules / extensions that can support our Flythrough requirements.
WIP - will be updating this post more with additional info / discussions (fyi: @jcfr @andinet ):

from vpaw.

jadh4v avatar jadh4v commented on June 24, 2024

See last paragraph in comment here: https://discourse.slicer.org/t/support-for-keyframe-based-animation/6885/6

How should we implement vpaw flythrough? Should it be keyframe interpolation of camera poses along a curve, or features/structures to look-at as you flythrough.

from vpaw.

jadh4v avatar jadh4v commented on June 24, 2024

Based on our internal discussions and from the discourse discussion thread, we have decided to modify the Endoscopy module to provide full support for a camera flythrough and keyframe interpolation. We can borrow specific implementations from CameraPath as/if needed.

Keyframe Interpolation

(From Discourse)

  • Add some pure-VTK camera interpolation functionality, perhaps just one class based on vtkQuaternionInterpolator with some extra code to handle changes in field of view and maybe other parameters. This could go in vtkAddon if it’s C++ or in Endoscopy logic if it could be done in python (I’d think it could).

User Interface

(From Discourse)

  • We could use the 3D view camera state itself as a way to insert keyframes. Initially we were considering having a flight mode for the 3D view to assist in flying around and placing keyframes, but since we can define the path curve first, it is probably not needed. The user can just fly along the path and stop and insert keyframes wherever necessary.

  • Regarding display of keyframes we can simply use a camera mesh model to indicate the position or use Plane markups

  • Along with camera pos and fov, would it make sense to also interpolate volume property, etc for better local control of visualization?
    The Animator module has some code for this and it would be nice to either reuse or generalize this feature. Currently it requires that the transfer functions have the same number of control points at the keyframes.

  • We should provide headlights that move with the camera (endoscopy simulation).

Use of Markups

(Discussions with @jcfr)

Nice To Have

(From Discourse)

  • It would also make sense for the Endoscopy module to export to a Sequence, like the Animator does, so that it could be recorded by the ScreenCapture logic. -- Steve Pieper

from vpaw.

jadh4v avatar jadh4v commented on June 24, 2024

Since we want to upgrade endoscopy and contribute it upstream into core Slicer, I have created a parallel issue / enhancement request in Slicer core here:
Slicer/Slicer#6502
cc: @HarryDC @andinet

from vpaw.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.