All Posts

Google Summer of Code Final Work Product

Name: Praneeth Shetty

Read more ...


Week 12 : Experimenting with ODFs implementation

There were different issues I needed to address for the ODF implementation. Even though I could not solve any of them completely, I did check each of the issues and made some progress. All the work in progress is being recorded in the following branch SH-for-ODF-impl, which when ready will be associated with a well-structured PR.

Read more ...


Google Summer of Code Final Work Product

Name: Tania Castillo

Read more ...


Week 12: Now That is (almost) a Wrap!

Hello everyone, it’s time for another GSoC blogpost! Today, I am going to talk about some minor details I worked on last week on my project.

Read more ...


Google Summer of Code Final Work Product

Name: João Victor Dell Agli Floriano

Read more ...


Week 12: FileDialog Quest Begins!

During this week, I initiated my work on the FileDialog PR, which had been started by Soham. The initial version of the FileDialog can be found at #294. To start, I focused on rebasing the PR. Since this PR was based on an older version, there were some updates to the overall UI structure that needed to be addressed for compatibility. While handling this, I identified a set of issues that I documented in the current PR #832. These mainly revolved around:

Read more ...


Week 11 : Adjusting ODF implementation and looking for solutions on issues found

I continued to experiment with the ODF glyph implementation. Thanks to one of my mentors I figured out how to get the missing data corresponding to the SH coefficients \(a^l_m\) part of the function \(f(\theta, \phi)\) described here. I also was told to make sure to implement the correct SH basis since there are different definitions from the literature, I have to focus now in the one proposed by Descoteaux, described in this paper, which is labeled in dipy as descoteaux07. To do this I had to make a small adjustment to the base implementation that I took as a reference, from which I obtained a first result using SH of order 4.

Read more ...


Week 11: A Refactor is Sometimes Needed

Hello everyone, it’s time for another weekly blogpost! Today I am going to share some updates on the API refactoring I was working on with my mentors.

Read more ...


Week 11: Bye Bye SpinBox

Building upon the progress of the previous week, a major milestone was reached with the merging of PR #830. This PR added essential “getters” and “setters” for the new features of TextBlock, making it easier to handle changes. This, in turn, facilitated the integration of SpinBoxUI with the updated TextBlock.

Read more ...


Week 10 : Start of SH implementation experiments

I started formally working on SH implementation. I was told to start first doing a simple program where I can modify in real-time the order \(l\) and degree \(m\), parameters corresponding to the Spherical Harmonics function \(Y^m_l(\theta,\phi)=\), based on previous work. That is just one part of the final ODF calculation, but here is what a first experimental script looks like.

Read more ...


Week 10: Ready for Review!

Hello everyone, it’s time for another weekly blogpost!

Read more ...


Week 10: Its time for a Spin-Box!

This week, my focus shifted to the SpinBoxUI after wrapping up work on TextBlock2D. SpinBoxUI is a component that allows users to select a value by spinning through a range. To ensure a smooth transition, I made adjustments in SpinBoxUI to align it with the recent updates in TextBlock2D. To make things even clearer and more user-friendly, I initiated a continuous code improvement process. I introduced setters and getters that enable easier customization of TextBlock2D’s new features, such as auto_font_scale and dynamic_bbox. These tools simplify the process of adjusting these settings, and you can see the ongoing changes in pull request #830.

Read more ...


Week 9: Tutorial done and polishing DTI uncertainty

I addressed the comments from the tutorial of PR #818 related to how to display specific visualizations I wanted to make. I was suggested to use ShowManager to handle the zoom of the scene and also to use GridUI to display several actors at the same time for a visual quality comparison of the tensors. Below are some images generated for the tutorial that is almost done.

Read more ...


Week 9: It is Polishing Time!

Hello everyone, it’s time for another weekly blogpost! Today, I am going to update you on my project’s latest changes.

Read more ...


Week 9: TextBlock2D is Finally Merged!

Continuing from the previous week, it seemed like we were almost done with the TextBlock2D, but there remained a final task of addressing conflicting issues. Being a core part of the UI, TextBlock2D had a few compatibility problems with certain other UI elements.

Read more ...


Week 8: Working on Ellipsoid Tutorial and exploring SH

I mainly worked on the ellipsoid actor tutorial, as PR #791 is finally merged, so I was able to complete the tutorial by adding my implementation. In addition, during the weekly meeting, I received a good overview of the next issue I will be working on, which is using raymarching SDFs to display spherical harmonics (SH) for visualizing ODF glyphs for DTI. I got several ideas and resources which I can start experimenting with, such as Shadertoy and some base implementations from other FURY contributors. The main drawback when creating these objects is the amount of data required to create them, because depending on the SH order, the number of parameters that the function receives may vary, also unlike the tensors, which are represented only with a 3x3 matrix, here we could have more than 9 values associated with a single glyph, so passing the information from python to the shaders is not so trivial, besides requiring more resources as there is more information that needs to be processed. Some ideas I received were using matrixes instead of vectors, using templating, or even using texture to pass the data. I started to explore these options further, as well as to review in more detail the existing implementations of SH with raymarching, in order to understand them better.

Read more ...


Week 8: The Birth of a Versatile API

Hello everyone, it’s time for another weekly blogpost! Today, I am going to tell you all about how is the KDE API development going, and to show you the potential this holds for the future!

Read more ...


Week 8: Another week with TextBlockUI

This week, I delved deeper into the TextBlock2D Bounding Box PR to address the challenges with tests and offsetting issues. In a pair programming session with my mentor, we discovered that the offsetting background problem stemmed from the dynamic nature of the bounding box. The issue arose when the RingSlider2D component began with an initial text size larger than the current text, which changed as the value was adjusted between 0-100%. This resulted in problems with offsetting and shrinking the bounding box. To resolve this, we decided to make the dynamic bounding box an optional feature.

Read more ...


Week 7: Experimentation Done

Hello everyone, welcome to another weekly blogpost! Let’s talk about the current status of my project (spoiler: it is beautiful).

Read more ...


Week 7: Adjustments on the Uncertainty Cones visualization

I was told to refactor some parts of the uncertainty PR, since I was relying too much on dipy functions which is not good because it makes maintenance more difficult as dipy requires FURY for some functionalities. So I did some adjustments on the uncertainty function parameters and the corresponding tests, hopefully I managed to get with the most appropriate definition but I need to receive a first feedback to see how much I have to adjust the implementation. As I had to delete some relevant code lines inside the uncertainty calculation which consisted of preprocessing the data in order to define the necessary variables for the uncertainty formula, I was also suggested to make a tutorial of this new feature, so I can explain in detail how to obtain and adjust the necessary information, before passing it to the actor, and in general how and what is the purpose of this new function.

Read more ...


Week 7: Sowing the seeds for TreeUI

This week, I focused on completing the TextBlock2D Bounding Box feature. However, the tests were failing due to automatic background resizing based on content and improper text actor alignment during setup. I encountered difficulties while positioning the text, which caused the text to appear offset and led to test failures.

Read more ...


Week 6: Things are Starting to Build Up

Hello everyone, time for a other weekly blogpost! Today, I will show you my current progress on my project and latest activities.

Read more ...


Week 6: First draft of the Ellipsoid tutorial

#PR 818: Tutorial on using ellipsoid actor to visualize tensor ellipsoids for DTI

Read more ...


Week 6: BoundingBox for TextBlock2D!

This week, I worked on improving the TextBlock2D component in the UI system. I started from scratch to address alignment and scaling issues. When resizing the TextBlock2D, the text alignment and justification with the background rectangle were inconsistent. To resolve this, I introduced a new “boundingbox” property that calculates the text bounding box based on its content. Additionally, I separated the scaling mode from the resizing action with the new “auto_font_scale” property, enabling automatic font scaling according to the bounding box. This will provide better alignment, justified text, and smoother font scaling for the TextBlock2D component. Try it out at PR #803.

Read more ...


Week 5: Preparing the data for the Ellipsoid tutorial

During the weekly meeting with my mentors, there was a small discussion over the naming of the actor and its usage. On the one hand, although the purpose of the actor is to visualize diffusion tensor ellipsoids, the idea is that it can also be used for any other type of visualization that requires the use of ellipsoids, so in the end, we decided to keep the name ellipsoid as it is more generic. On the other hand, as there is already an actor made for the purpose of tensor visualization, namely tensor_slicer, it might not be obvious how and why one would use this new ellipsoid actor for this purpose, thus it was proposed to make a tutorial that can clarify this. The main difference between both actors relies on the quality and the amount of data that can be displayed, so the idea is to show the difference between both alternatives so the user can choose which one to use depending on their needs. To prepare the tutorial the first step was to add the data I will use on fury-data so I can then fetch and load the datasets I need to work on the tutorial.

Read more ...


Week 5: All Roads Lead to Rome

Hello everyone, time for another weekly blogpost! Today, we will talk about taking different paths to reach your objective.

Read more ...


Week 5: Trying out PRs and Planning Ahead

Due to ongoing exams, my productivity was limited this week. However, I managed to find some time to explore and review a few PRs submitted by contributors:

Read more ...


Week 4: First draft of the DTI uncertainty visualization

#PR 810: DTI uncertainty visualization

Read more ...


Week 4: Nothing is Ever Lost

Welcome again to another weekly blogpost! Today, let’s talk about the importance of guidance throughout a project.

Read more ...


Week 4: Exam Preparations and Reviewing

This week, amidst end-semester exams, I managed to accomplish a few notable tasks. Let’s dive into the highlights:

Read more ...


Week 3: Working on uncertainty and details of the first PR

I made some adjustments to the ellipsoid actor definition, now called tensor. This was something discussed in the weekly meeting as the coming changes are related to this actor, the idea now is to have a tensor actor that allows choosing between displaying the tensor ellipsoids or the uncertainty cones (later on). I also worked on the uncertainty calculation, and the cone SDF for the visualization, so I plan to do a WIP PR next to start getting feedback on this new addition.

Read more ...


Week 3: Watch Your Expectations

Hello everyone, it’s time for another weekly blogpost! This week, I will talk about how you should watch your expectations when working with any project.

Read more ...


Week 3: Resolving Combobox Icon Flaw and TextBox Justification

This week, I tackled the ComboBox2D icon flaw, which was addressed using Pull Request (PR) #576. The problem arose when we added a ComboBox2D to the TabUI. The TabUI would propagate the set_visibility = true for all its child elements, causing the combobox to appear on the screen without the icon change. To fix this issue, PR #768 updated the set_visibility method of the UI class, ensuring that the icon change was applied correctly.

Read more ...


Week 2: The Importance of (good) Documentation

Hello everybody, welcome to the week 2 of this project! I must admit I thought this would be simpler than it is currently being, but I forgot that when it comes to dealing with computer graphics’ applications, things never are. Below, some updates on what I have been up to for this past week.

Read more ...


Week 2: Making adjustments to the Ellipsoid Actor

I made some minor adjustments to the last PR I submitted. Last time it was a draft since I was waiting for the weekly meeting to know how to proceed, but now it is ready. I am waiting for the review so I can make the necessary corrections and adjustments to merge this first PR soon.

Read more ...


Week 2: Tackling Text Justification and Icon Flaw Issues

This week, I continued tweaking the text justification PR #790 and encountered a new issue when combining both justification and vertical_justification. The problem arose because the vertical_justification did not take into account the applied justification, resulting in unexpected behavior. I focused on resolving this issue by ensuring that both justifications work together correctly. Additionally, during the weekly meeting, we discussed the problem and decided to introduce new properties such as boundaries and padding to enhance the functionality of the text justification feature.

Read more ...


Week 1: Ellipsoid actor implemented with SDF

PR #791: Ellipsoid actor implemented with SDF

Read more ...


The FBO Saga - Week 1

As mentioned in the last week’s blogpost, the goal for that week was to investigate VTK’s Framebuffer Object framework. An update on that is that indeed, VTK has one more low-level working FBO class that can be used inside FURY, however, they come with some issues that I will explain further below.

Read more ...


Week 1: Working with SpinBox and TextBox Enhancements

This week, my focus was on reviewing pull requests (PRs) and issues related to the user interface (UI) of the project. I meticulously went through each PR and issue, identifying those specifically associated with UI improvements. To streamline the process, I categorized them accordingly under the UI category. One of the key tasks was PR #499, which involved the implementation of SpinBoxUI. After rebasing the PR, I identified an alignment issue with the textbox component.

Read more ...


Week 0: Community Bounding Period

Hello All!

Read more ...


Week 0: Community Bounding Period

Hello everyone, my name is Tania Castillo, I am close to finishing my degree in Computer Science and I think this is a great opportunity to put my learning and skills into practice. I will be working with FURY on improving the visualization of DTI tensors and HARDI ODFs glyphs by using well-known techniques in computer graphics.

Read more ...


The Beginning of Everything - Week 0

Hello everyone, welcome to the beginning of my journey through GSoC 2023! I would like to thank everyone involved for the opportunity provided, it is an honour to be working side by side with professionals and so many experienced people from around the world.

Read more ...


FURY 0.9.0 Released

The FURY project is happy to announce the release of FURY 0.9.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Contribute to FURY via Google Summer of Code 2023

FURY is participating in the Google Summer of Code 2023 under the umbrella of the Python Software Foundation.

Read more ...


Google Summer of Code Final Work Product

Name: Mohamed Abouagour

Read more ...


Google Summer of Code Final Work Product

Name: Shivam Anand

Read more ...


Google Summer of Code Final Work Product

Name: Praneeth Shetty

Read more ...


Week 14: Keyframes animation is now a bit easier in FURY

Separated the Timeline into a Timeline and an Animation. So, instead of having the Timeline do everything. It’s now more like doing animations in Blender and other 3D editing software where the timeline handles the playback of several animations #694.

Read more ...


Week 14 - Morphing is here!

This week, I started with multiple actor support in skinning and managed to do it successfully. Here’s the preview using the BrainStem model.

Read more ...


Week 16 - Working with Rotations!

Last week my mentors noticed that each DrawShape has its individual rotation_slider which increases redundancy and complexity in setting its visibility on and off. Instead, they suggested moving the rotation_slider to DrawPanel and keeping a common slider for all the shapes.

Read more ...


Week 13: Keyframes animation is now a bit easier in FURY

Added the ability to have the ShowManager stored inside the Timeline. That way the user does not have to update and render the animations because it will be done internally.

Read more ...


Week 13 - Multi-bone skeletal animation support

This week I fixed all the issues with skeletal animations, and we got to see our first render of skeletal animation :).

Read more ...


Week 15 - Highlighting DrawShapes

This week I started with highlighting the shapes. As discussed earlier, I had two ways, but while implementing them, I found out both ways aren’t that good to continue with. The first way in which we thought of creating the scaled shapes in the background had an issue with the stacking. The border(blue rectangle) and the shape(grey rectangle) both seem to look like different shapes just grouped together as shown below.

Read more ...


Week 12 - Adding skeleton as actors and fix global transformation

I started this week by fixing the segmentation fault for the skinning test. I could not fix this as of now.

Read more ...


Week 14 - Updating DrawPanel architecture

This week I continued updating the DrawShape and DrawPanel.

Read more ...


Week 12: Adding new tutorials

Restructured tutorials to be more readable and more focused on a specific topic.

Read more ...


Week 13 - Separating tests and fixing bugs

This week I managed to fix the translation issue in PR #653. This was happening because of the calculation error while repositioning the shapes. Now it works as intended.

Read more ...


Week 11 - Multiple transformations support and adding tests

As decided last week, I added support for multiple animations at the same timestamp. But this didn’t solve the animation problems of RiggedSimple model.

Read more ...


Week 11: Improving tutorials a little

Fixed some issues in the hierarchical order animation support PR that we discussed during last week’s meeting (mostly naming issues).

Read more ...


Week 10 - Multi-node skinning support

As we figured out that the SimpleSkin model is not animated as intended. This week I started working with that model; I figured out that we need to apply the InverseBindMatrix to each timer callback. I had a hard time figuring out what inverse bind matrix actually does. Here’s a good blog that answers that.

Read more ...


Week 12 - Fixing translating issues and updating tests

I started with updating the tests for PR #623 as some of the tests weren’t covering all the aspects in the code. Previously I was just creating the DrawShape and adding it to the scene but now I had to analyze the scene to see whether they were properly added or not.

Read more ...


Week 10: Supporting hierarchical animating

Implemented hierarchical order support for animations using matrices in this PR.

Read more ...


Week 9 - First working skeletal animation prototype

This week I had the first working example of skeletal animation ready. I was able to render the SimpleSkin model. Here’s a quick preview:

Read more ...


Week 11 - Creating a base for Freehand Drawing

This week I tried to imitate the working of vtkImageTracer. Previously, I had created a small prototype for freehand drawing by adding points at the mouse position (which you can check out here). As mentioned, there were some drawback of this method. So to overcome these issues, I tried combining both methods. Considering points using the previous method and instead of adding points I tried creating lines between them which looks promising. Below you can see a demo.

Read more ...


Week 9: Animating primitives of the same actor

Made two tutorials in this PR that show two approaches on how to animate primitives of the same FURY actor using the Timeline.

Read more ...


Week 8 - Fixing animation bugs

This week I had to fix the transformation issue in glTF animation. As discussed in the last meeting, I disabled vertex transformation and applied the transformation after the actor was formed.

Read more ...


Week 10 - Understanding Codes and Playing with Animation

I started working on the PR #645 created last week and tested a few more corner cases such as What happens if the maximum value is exceeded?? What if we give a value less than the minimum value range?? Most of these worked as intended.

Read more ...


Week 8: Back to the shader-based version of the Timeline

First, I made some modifications to the main animation PR. Then as Filipi requested, I integrated the vertex shader that I was implementing a few weeks ago to work with the new improved version of the Timeline.

Read more ...


Week 9 - Grouping and Transforming Shapes

I started this week by creating a quick PR #645 for the UI sliders. The sliders raised ZeroDivsionError when the min and max values were the same. To solve this, I handled the case where the value_range becomes zero and then manually set the handle position to zero.

Read more ...


Week 7: Billboard spheres and implementing interpolators using closures

Restructured the keyframe animation interpolators using closures to be functions instead of classes #647. Now it is easier to implement new interpolators with the help of the functions existing in fury/animation/helpers.py. Also, now unit tests can be added for the latter functions.

Read more ...


Week 7 - Fixing bugs in animations

This week I started with implementing scaling to the animation example.

Read more ...


Week 8 - Working on the polyline feature

This week I started working on the polyline feature. After a lot of investigating and trying out different things, I found a way to call the dragging event manually without any prior click event. VTK actually captures the mouse movement using the MouseMoveEvent. This event is then modified by FURY to only be called after the click event. So I added a new callback to track the mouse movement and set the current canvas as an active prop because it is required to capture the drag event happening on it.

Read more ...


Week 6: Fixing the Timeline issues and equipping it with more features

Improved the PlaybackPanel by adding speed control and the ability to loop the animation. Also, fixed the lagging issue of play and pause buttons and composed them into a single play/pause button.

Read more ...


Week 6 - Extracting the animation data

This week, it was all about reading docs and extracting the animation data from buffers.

Read more ...


Week 7 - Working on Rotation PR and Trying Freehand Drawing

I continued PR #623 and fixed the displacement of the shape from its original position when applying rotation. This was happening because most of the calculations resulted in float values, but as the pixel position were integers we had to explicitly convert these values into int. This conversion rounded off the values and as we call this function continuously, each time the round-off would happen, the shape would get displaced.

Read more ...


Week 5: Slerp implementation, documenting the Timeline, and adding unit tests

Implemented Slerp (spherical linear interpolation) for rotation keyframes.

Read more ...


Week 5 - Creating PR for glTF exporter and fixing the loader

Finalised the glTF export PR #630., adding tutorial, docs, and tests for all functions.

Read more ...


Week 6 - Supporting Rotation of the Shapes from the Center

This week I started implementing a new feature to rotate the shapes from the center using RingSlider2D. I already had a rotate function that rotates the shape around its pivot vertex, so I updated it to support rotation from the center.

Read more ...


Week 4 - Finalizing glTF loader

This week I had to travel back to my college since the summer vacations have ended. I had a coding session with Serge this week, we modified the exporter function and looked at some bugs I faced.

Read more ...


Week 4: Camera animation, interpolation in GLSL, and a single Timeline!

Managed to implement a single Timeline using the Container class. So, instead of having two classes: Timeline and CompositeTimeline, now the Timeline can have multiple Timeline objects and controls them as in the code below.

Read more ...


Week 5 - Working on new features

This week I tried to create a base for some upcoming new features. The first thing I updated was the Properties panel which I prototyped in Week 3. So previously, it was just displaying the properties but now after the update, it is able to modify the properties(such as color, position, and rotation) too. This was a quick change to test the callbacks.

Read more ...


Week 3: Redesigning the API, Implementing cubic Bezier Interpolator, and making progress on the GPU side!

Redesigned the keyframe animations API to optimize having a lot of timelines by composing them into a parent Timeline called CompositeTimeline while maintaining playing individual timelines separately.

Read more ...


Week 3 - Fixing fetcher, adding tests and docs

The first task for this week was to fix the glTF fetcher. We noticed that while running tests it reaches the API limit. So we decided to use a JSON file that contains the download URLs for all models.

Read more ...


Week 4 - Fixing the Clamping Issue

Phew!! This week was a tedious week for me as parallelly my End-Sem exams also started. So as usual I started from where I left off last week, The Clamping Issue. As per the discussion with the mentors, we decided to use the AABB bounding box method to calculate the bounding box around the shape and then reposition or transform respectively, as now we had a fixed reference point. So after doing some calculations with the mouse positions and the bounding box points at last, I was able to clamp all the shapes successfully.

Read more ...


Week 2 - Improving Fetcher and Exporting glTF

This week I worked primarily on the glTF fetcher and exporting scenes to a glTF file. I added tests and docstrings for all functions. I modified the fetch_gltf function to return the downloaded files. As we planned, the PR for the glTF fetcher was merged this week.

Read more ...


Week 2: Implementing non-linear and color interpolators

Implemented some other general interpolators such as n-th degree spline and cubic spline interpolators. Also implemented HSV and LAB color interpolators.

Read more ...


Week 3 - Dealing with Problems

This week was full of researching, playing around with things, prototyping ideas, etc. I started with last week’s clamping issue and managed to solve this issue while drawing shapes by clipping the mouse position according to canvas size, but it didn’t solve the problem with translating these shapes. I tried solving this using various approaches, but if one thing would get fixed, other things would raise a new error.

Read more ...


Week 1 - A Basic glTF Importer

In the community bonding period I met with my mentor Serge Koudoro, along with other mentors in FURY and gsoc contributors. We discussed about my project and set up project timeline on github projects section. As my project (glTF Integration) and Keyframe animations were related so we discussed on that too.

Read more ...


Week 1: Implementing a basic Keyframe animation API

During the community bonding period, we had weekly meetings in which I got to know the mentors better and bonded with Shivam and Praneeth, my fellow contributors. We talked about the importance of open-source contribution and discussed scientific visualization, how important it is and how it differs from game engines despite having some similarities. We also discussed how important the code review is and how to do a proper code review.

Read more ...


Week 2 - Improving DrawPanel UI

This week I had to refactor and make my code cleaner along with some bug fixing, I started by adding tests and tutorials so that my changes could be tested by everyone. Then I separated the mode for selection so that it would be easy to select an individual element and work along with it. Once the selection mode was complete I started with the deletion of the elements.

Read more ...


Week 1 - Laying the Foundation of DrawPanel UI

This week we started with our first technical meeting in which the weekly tasks were assigned. So I had to start with some background or canvas and draw a line using mouse clicks.

Read more ...


Pre-GSoC Journey

Hello Guys!! I am Praneeth Shetty, currently pursuing Bachelor of Engineering in Computer Engineering, and here is my journey from where I started to the selection into GSoC22.

Read more ...


My Journey to GSoC 2022

Hi! I’m Shivam, currently pursuing my bachelor’s (expected 2024) in Production and Industrial engineering from the Indian Institute of Technology (IIT) Roorkee.

Read more ...


My journey till getting accepted into GSoC22

My name is Mohamed and I’m from Egypt. I am pursuing a Bachelor of Engineering in Computer Engineering and Automatic Control (expected: 2023), Tanta University, Egypt.

Read more ...


Contribute to FURY via Google Summer of Code 2022

FURY is participating in the Google Summer of Code 2022 under the umbrella of the Python Software Foundation.

Read more ...


FURY 0.8.0 Released

The FURY project is happy to announce the release of FURY 0.8.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Google Summer of Code Final Work Product

Name: Antriksh Misri

Read more ...


Google Summer of Code Final Work Product

Name: Sajag Swami

Read more ...


Google Summer of Code 2021 - Final Report - Bruno Messias

We have changed some points of my project in the first meeting. Specifically, we focused the efforts into developing a streaming system using the WebRTC protocol that could be used in more generic scenarios than just the network visualization. In addition to that, we have opted to develop the network visualization for fury as a separated repository and package available here. The name Helios was selected for this new network visualization system based on the Fury rendering pipeline.

Read more ...


Week #11: Removing the flickering effect

PR fury-gl/fury#489:

Read more ...


Week #11: Finalizing open Pull Requests

Below are the tasks that I worked on:

Read more ...


Tenth coding week!

Welcome to the eleventh weekly check-in. I’ll be sharing my progress for the tenth week of coding.

Read more ...


Week#10: Accordion UI, Support for sprite sheet animations

Below are the tasks that I worked on:

Read more ...


Week #10: SDF Fonts

PR fury-gl/helios#22 : Helios Documentation Improvements.

Read more ...


Ninth coding week!

Welcome to the tenth weekly check-in. I’ll be sharing my progress for the ninth week of coding.

Read more ...


FURY 0.7.0 Released

The FURY project is happy to announce the release of FURY 0.7.1! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Week #9: More Layouts!

Below are the tasks that I worked on:

Read more ...


Week #09: Sphinx custom summary

PR fury-gl/helios#22 : Helios Documentation Improvements. I’ve spent some time studying sphinx in order to discover how I could create a custom summary inside of a template module.

Read more ...


Eighth coding week!

Welcome to the ninth weekly check-in. I’ll be sharing my progress for the eighth week of coding.

Read more ...


Weekly Check-In #8

PR fury-gl/helios#18 (merged): Helios Documentation/ I’ve been working on Helios documentation. Now it’s available online at https://fury-gl.github.io/helios-website image1

Read more ...


Week #8: Code Cleanup, Finishing up open PRs, Continuing work on Tree2D

This week I had to work on the open PRs specifically work on the bugs that were pointed out in last week’s meeting. Along side the bugs I had to continue the work on Tree2D UI element. Below is the detailed description of what I worked on this week:

Read more ...


Seventh week of coding!

Welcome to the eighth weekly check-in. I’ll be sharing my progress for the seventh week of coding.

Read more ...


Weekly Check-In #7

PR fury-gl/helios#16 (merged): Helios IPC network layout support for MacOs

Read more ...


Week #7: Finalizing the stalling PRs, finishing up Tree2D UI.

This week I had limited tasks to do, mostly tasks related to existing PRs. Other than some minor fixes I had to implement some more things in Tree2D which included some minor UI fixes, some changes in tutorial, adding tests. Below is the detailed description of what I worked on this week:

Read more ...


Sixth week of coding!

Welcome to the seventh weekly check-in. I’ll be sharing my progress for the sixth week of coding.

Read more ...


Week #6: Bug fixes, Working on Tree2D UI

This week I had relatively few tasks and most of them were to fix some bugs/design flaws that were discussed in last week’s meeting. Other than that, I had to implement a few things in the Tree2D UI element that will be discussed in detail below. I also had to update some existing PRs in order to make things work well. Below are the list of things I worked on this week:

Read more ...


Network layout algorithms using IPC

Hi all. In the past weeks, I’ve been focusing on developing Helios; the network visualization library for FURY. I improved the visual aspects of the network rendering as well as implemented the most relevant network layout methods.

Read more ...


Fifth week of coding!

Welcome to the sixth weekly check-in. I’ll be sharing my progress for the fifth week of coding.

Read more ...


Weekly Check-In #5

Before the 8c670c2 commit, for some versions of MacOs the streaming system was falling in a silent bug. I’ve spent a lot of time researching to found a cause for this. Fortunately, I could found the cause and the solution. This troublesome MacOs was falling in a silent bug because the SharedMemory Object was creating a memory resource with at least 4086 bytes independent if I’ve requested less than that. If we look into the MultiDimensionalBuffer Object (stream/tools.py) before the 8c670c2 commit we can see that Object has max_size parameter which needs to be updated if the SharedMemory was created with a “wrong” size.

Read more ...


Week #5: Rebasing all PRs w.r.t the UI restructuring, Tree2D, Bug Fixes

The UI restructuring was finally merged this week. This means UI is now a submodule in itself and provides different UI elements based on their types which are, core, elements, containers and some helper methods/classes. So, this week my main tasks were to rebase and fix merge conflicts of my open PR’s. Other than that, I had to continue my work on Tree2D UI element and finish the remaining aspects of it. Also, I had to create an example demonstrating how to use the newly added UI element. Many use cases were discussed in the open meeting like, an image gallery which displays preview image on the title and when expanded reveals the full scale image. I am thinking of adding multiple examples for the Tree2D to brainstorm on its certain features. Also, I had this annoying bug in Panel2D which didn’t allow it to be resized from the bottom right corner. It was resizing from the top right corner. I had to address this bug as well. Below are the tasks in detail:

Read more ...


SOLID, monkey patching a python issue and network visualization through WebRTC

These past two weeks I’ve spent most of my time in the Streaming System PR and the Network Layout PR . In this post I’ll focus on the most relevant things I’ve made for those PRs.

Read more ...


Fourth week of coding!

Welcome to the fifth weekly check-in. I’ll be sharing my progress for the fourth week of coding.

Read more ...


Week #4: Adding Tree UI to the UI module

This week I had very few tasks to do, almost all of them revolved around UI elements and adding stuff to the UI module. Earlier, it was pointed out that due to some design issues, importing certain modules into others caused circular imports which led to importing the specific modules inside a class/method which is not the best approach. This will be resolved as soon as the PR that fixes this issue is reviewed/merged in the codebase. In the meantime, all the PR’s related to UI will be on hold, which is why this I had few tasks this week. The tasks are described below in detail:

Read more ...


Third week of coding!

Welcome to the fourth weekly check-in. I’ll be sharing my progress for the third week of coding.

Read more ...


Weekly Check-In #3

PR fury-gl/fury#422 (merged): Integrated the 3d impostor spheres with the marker actor.

Read more ...


Week #3: Adapting GridLayout to work with UI

This week my tasks revolved around layout and UI elements. The primary goal for this week was to adapt the GridLayout to work with different UI elements. Currently, GridLayout just supports vtk actors and not UI elements, my task was to modify the class to support UI elements. The other tasks for this week are described below in detail:

Read more ...


Second week of coding!

Welcome to the third weekly check-in. I’ll be sharing my progress for the second week of coding.

Read more ...


First week of coding!

Welcome to the second weekly check-in. I’ll be sharing my progress for the first week of coding.

Read more ...


Week #2: Feature additions in UI and IO modules

This week I had to work on 3 PRs as well as some documentation. I really enjoyed this week’s work as the tasks were really interesting. The aim for these PRs were to actually add a couple of features in the UI as well as the IO module, which includes, adding support for border in Panel2D, adding support for network/URL images in load_image method in IO module, adding resizing Panel2D from bottom right corner, completing the document with layout solutions provided by Unity/Unreal engine. Below are the PRs that I worked on:

Read more ...


A Stadia-like system for data visualization

Hi all! In this post I’ll talk about the PR #437.

Read more ...


Welcome to my GSoC Blog!

Hi all! I’m Sajag Swami, a sophomore at Indian Institute of Technology, Roorkee. This summer, I will be working on adding a new functionality to FURY which shall enable users to visualise various types of proteins via different representations like Richardson aka Ribbon diagrams and molecular surface diagrams. As a part of my stretch goals, I’ll try to expand protein diagrams via other representations including:

Read more ...


Weekly Check-In #1

Hi everyone! My name is Bruno Messias currently I’m a Ph.D student at USP/Brazil. In this summer I’ll develop new tools and features for FURY-GL. Specifically, I’ll focus into developing a system for collaborative visualization of large network layouts using FURY and VTK.

Read more ...


Week #1: Welcome to my weekly Blogs!

Hi everyone! I am Antriksh Misri. I am a Pre-Final year student at MIT Pune. This summer, I will be working on Layout Management under FURY’s UI module as my primary goal. This includes addition of different classes under Layout Management to provide different layouts/arrangements in which the UI elements can be arranged. As my stretch goals, I will be working on a couple of UI components for FURY’s UI module. These 2D and 3D components will be sci-fi like as seen in the movie “Guardians of The Galaxy”. My objective for the stretch goals would be to develop these UI components with their respective test and tutorials such that it adds on to the UI module of FURY and doesn’t hinder existing functionalities/performance.

Read more ...


FURY 0.7.0 Released

The FURY project is happy to announce the release of FURY 0.7.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Google Summer of Code

FURY is participating in the Google Summer of Code 2021 under the umbrella of the Python Software Foundation.

Read more ...


Shader Showcase

Make sure to check out Project FURY

Read more ...


Google Summer of Code Final Work Product

Name: Soham Biswas

Read more ...


Google Summer of Code 2020 Final Work Product

Name: Lenix Lobo

Read more ...


Part of the Journey is the end unless its Open Source!

Hello and welcome to my final weekly check-in. Today officially marks the end of the coding period for GSoC 2020. I enjoyed every bit of it. This was a life-changing experience for me and now I observe and interpret everything from a different perspective altogether. I have grown into a better developer and a person since GSoC. I would like to thank all my mentors and especially Serge for his immense support and mentorship. I would love to contribute to fury even after GSoC is over but unfortunately my semester break is over so I won’t be as active as I was during the summer.

Read more ...


FURY 0.6.1 Released

The FURY project is happy to announce the release of FURY 0.6.1! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Outline Picker

Make sure to check out Project FURY

Read more ...


Wrecking Ball Simulation, Scrollbars Update, Physics Tutorials.

Hello and welcome to my 12th weekly check-in. In this blog I will be discussing my progress with the wrecking ball simulation and my scrollbar separation work. Apart from this I have also finalized the physics simulation tutorials and have created a Pull Request to finally get it merged with the official repository. The official repository of my sub-org can be found here.

Read more ...


More Shaders!!

Make sure to check out Project FURY

Read more ...


Chain Simulation, Scrollbar Refactor, Tutorial Update.

Hello and welcome to my 11th weekly check-in. In this blog I will be discussing my progress with multiple topics related to physics and ui components. I was actively working on a couple of things, specifically Joint simulations in pyBullet and scrollbar UI component. I also took up the responsibility to complete an incomplete Pull Request which was pending for quite a while. The official repository of my sub-org can be found here.

Read more ...


Single Actor, Physics, Scrollbars.

Hello and welcome to my 10th weekly check-in. Second evaluation ended this week and now we move on to our 3rd and final coding period. In today’s check-in I will be sharing my progress with the single actor physics simulation that I facing some issues with and I will also be discussing my future plans regarding UI components. The official repository of my sub-org, FURY can always be found here.

Read more ...


More Shaders!!

Make sure to check out Project FURY

Read more ...


Merging SDF primitives.

Make sure to check out Project FURY

Read more ...


Tab UI, TabPanel2D, Tab UI Tutorial.

Hello and welcome to my 9th weekly check-in. I will be sharing my progress with TabUI and its corresponding tutorial. The official repository of my sub-org, FURY can always be found here.

Read more ...


Improvements in SDF primitives.

Make sure to check out Project FURY

Read more ...


FURY 0.6.0 Released

The FURY project is happy to announce the release of FURY 0.6.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


ComboBox2D, TextBlock2D, Clipping Overflow.

Hello and welcome to my 8th weekly check-in. I will be sharing my progress with ComboBox2D and TextBlock2D UI components. After solving TextBlock2D sizing issue, I was finally able to complete the implementation of combo box. I also faced some problems while refactoring TextBlock2D. The official repository of my sub-org, FURY can always be found here.

Read more ...


Multiple SDF primitives.

Make sure to check out Project FURY

Read more ...


Orientation, Sizing, Tab UI.

Hello and welcome to my 7th weekly check-in. I will be sharing my progress with single actor physics simulation and TextBlock2D sizing issue which was pending for quite a while now. I will also be sharing my thoughts regarding the TAB UI component. The official repository of my sub-org, FURY can always be found here.

Read more ...


Translation, Reposition, Rotation.

Hello and welcome to my 6th weekly check-in. The first evaluation period officially ends and I am very excited to move on to the second coding period. I will be sharing my progress with handling specific object’s properties among various multiple objects rendered by a single actor. I am mainly focusing on making it easier to translate, rotate and reposition a particular object, so that I can use them to render physics simulations more efficiently. The official repository of my sub-org, FURY can always be found here.

Read more ...


Spherical harmonics, Continued.

Make sure to check out Project FURY

Read more ...


Spherical harmonics

Make sure to check out Project FURY

Read more ...


May the Force be with you!!

Hello and welcome to my 5th weekly check-in, I will be sharing my progress of pyBullet Physics Engine Integration with FURY. The official repository of my sub-org, FURY can always be found here.

Read more ...


TextBlock2D Progress!!

Hello and welcome to my 4th weekly check-in, I will be sharing my progress with TextBlock2D UI component. The official repository of my sub-org, FURY can always be found here.

Read more ...


Raymarching continued

Make sure to check out Project FURY

Read more ...


Raymarching!!

Make sure to check out Project FURY

Read more ...


ComboBox2D Progress!!

Hello and welcome to my third weekly check-in, I will be sharing my progress with the project so far. In case you wondered, the sub-org that I am affiliated to is FURY. Make sure to check out the official repository here.

Read more ...


First week of coding!!

Hey everyone! This week : Geometry Shaders!

Read more ...


First week of coding!!

Hello and welcome to my second weekly check-in, I will be sharing my progress for the first week of coding.

Read more ...


Welcome to my GSoC Blog!!!

Hello Everyone, this is Soham Biswas currently in 2nd year pursuing my Bachelor’s(B.Tech) degree in Computer Science & Engineering from Institute of Engineering & Management, Kolkata. I have been selected for GSoC’ 20 at sub-org FURY under the umbrella organization of Python Software Foundation. I will be working on building sci-fi-like 2D and 3D interfaces and provide physics engine integration under project titled “Create new UI widgets & Physics Engine Integration”.

Read more ...


Weekly Check-in #1

Hey everyone! This is my blog for this summer’s GSoC @ PSF I am Lenix Lobo, an undergraduate student from India, and this summer I will be working with project Fury under the umbrella of the Python Software foundation. I will be working on improving the current shader framework.

Read more ...


FURY 0.5.1 Released

The FURY project is happy to announce the release of FURY 0.5.1! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Google Summer of Code

FURY is participating in the Google Summer of Code 2020 under the umbrella of the Python Software Foundation.

Read more ...


FURY 0.4.0 Released

The FURY project is happy to announce the release of FURY 0.4.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


FURY 0.3.0 Released

The FURY project is happy to announce the release of FURY 0.3.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


Success on Brain Art Competition using FURY

Congratulations to David who won the OHBM BrainArt (MELPOMENE category) by using DIPY and FURY!!!

Read more ...


FURY 0.2.0 Released

The FURY project is happy to announce the release of FURY 0.2.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


FURY 0.1.4 Released

The FURY project is happy to announce the release of FURY 0.1.4! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


FURY 0.1.3 Released

The FURY project is happy to announce the release of FURY 0.1.3! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...


FURY 0.1.0 Released

The FURY project is happy to announce the release of FURY 0.1.0! FURY is a free and open source software library for scientific visualization and 3D animations.

Read more ...