Articles on Nibba2018's Bloghttps://blogs.python-gsoc.orgUpdates on different articles published on Nibba2018's BlogenTue, 25 Aug 2020 16:17:25 +0000Google Summer of Code Final Work Producthttps://blogs.python-gsoc.org/en/nibba2018s-blog/google-summer-of-code-final-work-product/<h2 style="">Google Summer of Code Final Work Product</h2> <ul> <li><strong>Name:</strong> Soham Biswas</li> <li><strong>Organisation:</strong> Python Software Foundation</li> <li><strong>Sub-organisation:</strong> FURY</li> <li><strong>Project:</strong> <a href="https://github.com/fury-gl/fury/wiki">FURY - Create new UI Widgets &amp; Physics Engine Integration</a></li> </ul> <h2 style="">Proposed Objectives</h2> <ul> <li>ComboBox</li> <li>Tab UI</li> <li>File Dialog Improvements</li> </ul> <h2 style="">Modified Objectives</h2> <ul> <li>ComboBox</li> <li>Tab UI</li> <li>File Dialog Improvements</li> <li>Double Click Callback</li> <li>TextBlock2D Improvements</li> <li>Scrollbars as a Standalone Component</li> <li>Physics Engine Integration</li> </ul> <h2 style="">Objectives Completed</h2> <ul> <li><strong>ComboBox2D UI Component</strong></li> </ul> <p style="margin-left: 40px;">A combobox is a commonly used graphical user interface widget. Traditionally, it is a combination of a drop-down list or list box and a single-line textbox, allowing the user to select a value from the list. The term "combo box" is sometimes used to mean "drop-down list". Respective components, tests and tutorials were created. </p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul style="margin-left: 40px;"> <li><em><strong>ComboBox UI Component: </strong></em><a href="https://github.com/fury-gl/fury/pull/240">https://github.com/fury-gl/fury/pull/240</a></li> <li><strong><em>ComboBox UI Tutorial:</em></strong> <a href="https://github.com/fury-gl/fury/pull/246">https://github.com/fury-gl/fury/pull/246</a></li> </ul> <p> </p> <ul> <li><strong>Tab UI Component</strong></li> </ul> <p style="margin-left: 40px;">In interface design, a tabbed document interface or Tab is a graphical control element that allows multiple documents or panels to be contained within a single window, using tabs as a navigational widget for switching between sets of documents. Respective components, tests and tutorials were created.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Tab UI component:</em></strong> <a href="https://github.com/fury-gl/fury/pull/252">https://github.com/fury-gl/fury/pull/252</a></li> <li style="margin-left: 40px;"><strong><em>Tab UI tutorial:</em></strong> <a href="https://github.com/fury-gl/fury/pull/275">https://github.com/fury-gl/fury/pull/275</a></li> </ul> <p style="margin-left: 40px;"> </p> <ul> <li><strong>Double Click Callback</strong></li> </ul> <p style="margin-left: 40px;">Double click callbacks aren't implemented in VTK by default so they need to be implemented manually. With my mentor's help I was able to implement double click callbacks for all the three mouse buttons successfully.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Adding Double Click Callback:</em></strong> <a href="https://github.com/fury-gl/fury/pull/231">https://github.com/fury-gl/fury/pull/231</a></li> </ul> <p style="margin-left: 40px;"> </p> <ul> <li><strong>TextBlock2D Improvements</strong></li> </ul> <p style="margin-left: 40px;">The previous implementation of `TextBlock2D` was lacking a few features such as size arguments and text overflow. There was no specific way to create Texts occupying a said height or width area. Apart from that UI components like `ListBoxItem2D`, `FileMenu2D` etc had an issue where text would overflow from their specified width. In order to tackle these problems, a modification was done to `TextBlock2D` to accept size as an argument and a new method was added to clip overflowing text based on a specified width and to replace the overflowing characters with `...`.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Setting Bounding Box for TextBlock2D:</em></strong> <a href="https://github.com/fury-gl/fury/pull/248">https://github.com/fury-gl/fury/pull/248</a></li> <li style="margin-left: 40px;"><strong><em>Clip Text Overflow:</em></strong> <a href="https://github.com/fury-gl/fury/pull/268">https://github.com/fury-gl/fury/pull/268</a></li> </ul> <p style="margin-left: 40px;"> </p> <ul> <li><strong>Physics Engine Integration</strong></li> </ul> <p style="margin-left: 40px;">Optional support for Physics engine integration of Pybullet was added to Fury. Pybullet's engine was used for the simulations and FURY was used for rendering the said simulations. Exhaustive examples were added to demonstrate various types of physics simulations possible using pybullet and fury. The said examples are as follows:</p> <ul> <li style="margin-left: 40px;">Brick Wall Simulation <ul> <li style="margin-left: 40px;">Explains how to render and simulate external forces, objects and gravity.</li> </ul> </li> <li style="margin-left: 40px;">Ball Collision Simulation <ul> <li style="margin-left: 40px;">Explains how collisions work and how to detect said collisions.</li> </ul> </li> <li style="margin-left: 40px;">Chain Simulation <ul> <li style="margin-left: 40px;">Explains how to render and simulate joints.</li> </ul> </li> <li style="margin-left: 40px;">Wrecking Ball Simulation <ul> <li style="margin-left: 40px;">A more complicated simulation that combines concepts explained by the other examples.</li> </ul> </li> </ul> <p style="margin-left: 40px;">Apart from that, a document was created to explain the integration process between pybullet and fury in detail.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Physics Simulation Examples:</em></strong> <a href="https://github.com/fury-gl/fury/pull/287">https://github.com/fury-gl/fury/pull/287</a></li> <li style="margin-left: 40px;"><strong><em>Fury-Pybullet Integration Docs:</em></strong> <a href="https://docs.google.com/document/d/1XJcG1TL5ZRJZDyi8V76leYZt_maxGp0kOB7OZIxKsTA/edit?usp=sharing">https://docs.google.com/document/d/1XJcG1TL5ZRJZDyi8V76leYZt_maxGp0kOB7OZIxKsTA/edit?usp=sharing</a></li> </ul> <h2 style="">Objectives in Progress</h2> <ul> <li><strong>Scrollbars as a standalone component</strong></li> </ul> <p style="margin-left: 40px;">The previous implementation of scrollbars were hard coded into `ListBox2D`. Therefore, it was not possible to use scrollbars with any other UI component. Apart from that, scrollbars in terms of design were limited. Creating a horizontal scrollbar was not possible. The objective of this PR is to make scrollbars separate so that other UI elements can also make use of it.</p> <p style="margin-left: 40px;">Currently, the skeletal and design aspects of the scrollbars are implemented but the combination of scrollbars with other UI components are still in progress.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Scrollbars as a Standalone API:</em></strong> <a href="https://github.com/fury-gl/fury/pull/285">https://github.com/fury-gl/fury/pull/285</a></li> </ul> <p style="margin-left: 40px;"> </p> <ul> <li><strong>File Dialog Improvements</strong></li> </ul> <p style="margin-left: 40px;">Currently, we have access to `FileMenu2D` which allows us to navigate through the filesystem but it does not provide a user friendly Dialog to read and write files in Fury. Hence the idea is to create a file dialog which can easily open or save file at runtime. As of now, `Open` and `Save` operations are implemented. Corresponding tests and tutorials are in progress.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>File Dialog UI component:</em></strong> <a href="https://github.com/fury-gl/fury/pull/294">https://github.com/fury-gl/fury/pull/294</a></li> </ul> <h2 style="">Other Objectives</h2> <ul> <li><strong>Radio Checkbox Tutorial using FURY API</strong></li> </ul> <p style="margin-left: 40px;">The objects for Radio button and Checkbox tutorial were rendered using VTK's method by a fellow contributor so I decided to replace them with native FURY API. The methods were rewritten keeping the previous commits intact.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>Radio Checkbox tutorial using FURY API:</em></strong> <a href="https://github.com/fury-gl/fury/pull/281">https://github.com/fury-gl/fury/pull/281</a></li> </ul> <p style="margin-left: 40px;"> </p> <ul> <li><strong>GSoC weekly Blogs</strong></li> </ul> <p style="margin-left: 40px;">Weekly blogs were added for FURY's Website.</p> <p style="margin-left: 40px;"><em>Pull Requests:</em></p> <ul> <li style="margin-left: 40px;"><strong><em>First &amp; Second Evaluation:</em></strong> <a href="https://github.com/fury-gl/fury/pull/272">https://github.com/fury-gl/fury/pull/272</a></li> <li style="margin-left: 40px;"><strong><em>Third Evaluation:</em></strong> <a href="https://github.com/fury-gl/fury/pull/286">https://github.com/fury-gl/fury/pull/286</a></li> </ul> <p style="margin-left: 40px;"> </p> <h2 style="">Timeline</h2> <table> <tbody> <tr> <th>Date</th> <th>Description</th> <th>Blog Link</th> </tr> </tbody> <tbody> <tr> <td style="text-align: center;">30-05-2020</td> <td style="text-align: center;">Welcome to my GSoC Blog!!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-1-5/">Weekly Check-in #1</a></td> </tr> <tr> <td style="text-align: center;">07-06-2020</td> <td style="text-align: center;">First Week of Coding!!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-2-3/">Weekly Check-in #2</a></td> </tr> <tr> <td style="text-align: center;">14-06-2020</td> <td style="text-align: center;">ComboBox2D Progress!!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-3-4/">Weekly Check-in #3</a></td> </tr> <tr> <td style="text-align: center;">21-06-2020</td> <td style="text-align: center;">TextBlock2D Progress!!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-4-4/">Weekly Check-in #4</a></td> </tr> <tr> <td style="text-align: center;">28-06-2020</td> <td style="text-align: center;">May the Force be with you!!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-5-4/">Weekly Check-in #5</a></td> </tr> <tr> <td style="text-align: center;">05-07-2020</td> <td style="text-align: center;">Translation, Reposition, Rotation.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-6-7/">Weekly Check-in #6</a></td> </tr> <tr> <td style="text-align: center;">12-07-2020</td> <td style="text-align: center;">Orientation, Sizing, Tab UI.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-7-4/">Weekly Check-in #7</a></td> </tr> <tr> <td style="text-align: center;">19-07-2020</td> <td style="text-align: center;">ComboBox2D, TextBlock2D, Clipping Overflow.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-8-2/">Weekly Check-in #8</a></td> </tr> <tr> <td style="text-align: center;">26-07-2020</td> <td style="text-align: center;">Tab UI, TabPanel2D, Tab UI Tutorial.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-9-4/">Weekly Check-in #9</a></td> </tr> <tr> <td style="text-align: center;">02-08-2020</td> <td style="text-align: center;">Single Actor, Physics, Scrollbars.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-10-2/">Weekly Check-in #10</a></td> </tr> <tr> <td style="text-align: center;">09-08-2020</td> <td style="text-align: center;">Chain Simulation, Scrollbar Refactor, Tutorial Update.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-11-1/">Weekly Check-in #11</a></td> </tr> <tr> <td style="text-align: center;">16-08-2020</td> <td style="text-align: center;">Wrecking Ball Simulation, Scrollbars Update, Physics Tutorials.</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-12/">Weekly Check-in #12</a></td> </tr> <tr> <td style="text-align: center;">23-08-2020</td> <td style="text-align: center;">Part of the Journey is the end unless its Open Source!</td> <td style="text-align: center;"><a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-13/">Weekly Check-in #13</a></td> </tr> </tbody> </table> <p>Detailed weekly tasks and work done can be found <a href="https://blogs.python-gsoc.org/en/nibba2018s-blog/">here</a>.</p>SohamBiswas41@gmail.com (Nibba2018)Tue, 25 Aug 2020 16:17:25 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/google-summer-of-code-final-work-product/Weekly Check-in #13https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-13/<h2 style="">Part of the Journey is the end unless its Open Source!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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 wont be as active as I was during the summer.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Now, regarding work I will be sharing my progress with the File Dialog UI component.</span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The official repository of my sub-org can be found </span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I worked on the File Dialog UI component. Fury previously had a FileMenu component which could browse through the file system but we needed a dialog like implementation for it so that its easier for the users to read and write files during runtime. I tried implementing a simple design for it. It specifically has two modes, one for saving files and the other for writing files. The implementation can be demonstrated as follows:</span></p> <p><u><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Open Dialog:</span></u></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/90978632-df12c780-e56c-11ea-8517-6243ea06bdd2.gif"></p> <p><u><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Save Dialog:</span></u></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/90978638-eafe8980-e56c-11ea-835a-3a82ccee2973.gif"></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week I will start with my final GSoC documentation and code submission. I will also try to implement the tests and tutorials for File Dialog or any further changes requested by my mentors. If I am not able to finish it within the next week, I will get it done after GSoC.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I did not face any major issues this week.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you all for your love and support. </span>❤️😄</div>SohamBiswas41@gmail.com (Nibba2018)Sun, 23 Aug 2020 15:50:32 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-13/Weekly Check-in #12https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-12/<h2 style="">Wrecking Ball Simulation, Scrollbars Update, Physics Tutorials.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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 </span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I was mainly focusing on the wrecking ball simulation. This simulation is basically the combination of chain simulation and brick wall simulation. A sphere attached to a chain smashes a "NxNxN" brick wall. The simulation is as follows:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/90336291-84232280-dff8-11ea-869b-21a99b203c31.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">There's a rendering bug with the cylinders because of which the chain segments look weird. My mentors confirmed that this bug originated from VTK's `cylinder source` method and they are currently working on it to fix it. The simulation will render correctly once that bug is fixed.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Regarding the scrollbar separation task, I was able to fix those callback issues that I was facing. The mouse callbacks on the scrollbar now work correctly:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/90337280-1af2dd80-dfff-11ea-94c4-508121307583.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I have also created a pull request to add the following physics simulations with proper documentation to the main repository:</span></p> <ul> <li><span style="font-size: 16px;">Brick Wall Simulation</span></li> <li><span style="font-size: 16px;">Ball Collision Simulation</span></li> <li><span style="font-size: 16px;">Chain Simulation</span></li> <li><span style="font-size: 16px;">Wrecking Ball Simulation</span></li> </ul> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Currently I am a bit confused with the implementation of scrollbars with UI components. I had a meeting with my mentor and he decided to help me out with this. So most probably I will be working with the scrollbar component and its implementation. Next week will also be the final week for GSoC 2020 before the evaluations start so I would work on getting the final documentation and formalities ready.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Apart from the scrollbar implementation idea, I did not face any major issues.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 16 Aug 2020 15:20:18 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-12/Weekly Check-in #11https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-11-1/<h2 style="">Chain Simulation, Scrollbar Refactor, Tutorial Update.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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 </span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The first thing that I did this week was to figure out joint simulations in pybullet. Due to lack of proper documentation I was not aware that Joints are kept stiff by default, hence I had no idea what was wrong with my simulations. Thankfully, while I was browsing pybullet forums, I found this <a href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=24&amp;t=13035">post</a> regarding rope simulations when I realized that I had to explicitly set the friction force to prevent stiffness among the Joints. Keeping this point in mind I was able to simulate the following Chain of hexagonal prisms:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/89737601-b7613100-da8f-11ea-947f-a96c66caefae.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I was mainly supposed to  work on refactoring scrollbars as a standalone component. I have made some progress for now. I am able to render the scrollbars properly, with proper size, orientation and color but I am having some issues regarding its scrolling callbacks. I need to look further into it. Here's a brief glimpse:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/89738159-28a2e300-da94-11ea-9167-e825f82edf98.png"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This particular <a href="https://github.com/fury-gl/fury/pull/208">PR</a> by a fellow contributor was pending for quite a while, so I decided to look into it and complete it. The objective of the PR was to add examples for the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">CheckBox</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">RadioButton</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI components, but the problem was that the objects were not rendered using FURY API in the tutorial, so I decided to complete that. It was already a well made tutorial. I only had to replace the appropriate functions with FURY's API calls. </span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">CheckBox</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> tutorial:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/89438967-20326b80-d767-11ea-8f47-e7711e900c9f.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">There's still some internal issues while updating the colors of the cube which is currently being worked on by my mentors.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">RadioButton</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> tutorial:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/89438999-2e808780-d767-11ea-8b08-2a36a05294bc.gif"></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week I will continue working on the scrollbar component and try to fix the issues that I am having with its callbacks. I will also try to work on the wrecking ball simulation.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Apart from the scrollbar callbacks and stiff joints, I did not face any major issues. </span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 09 Aug 2020 17:48:18 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-11-1/Weekly Check-in #10https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-10-2/<h2 style="">Single Actor, Physics, Scrollbars.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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</span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and I will also be discussing my future plans regarding UI components. The official repository of my sub-org, FURY can always be found</span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I was able to figure out the uncontrollable spinning problem that I was facing while rendering physics simulations. Specifically the simulation where a brick wall was rendered by a single actor. The spinning problem was as follows:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/88485303-87476780-cf92-11ea-850c-cc63e1376ef8.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Here's how the fixed simulation looks like:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/89126963-946ed400-d507-11ea-93cd-aad3a9f59ab0.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I was facing this particular issue because I was directly syncing the orientation of the objects in pyBullet world to the objects in the Fury world. So I decided to apply the <em>change</em> in orientation instead and it worked. In order to achieve this I had to keep track of the bricks' orientation at each step of the simulation, sync the change and then update the tracked orientation. Thankfully, pybullet had convenient tools to achieve this. Here's a snippet on how to update individual objects rendered by a single actor:</span></p> <pre><code class="language-python">def sync_brick(object_index, multibody): pos, orn = p.getBasePositionAndOrientation(multibody) rot_mat = np.reshape( p.getMatrixFromQuaternion( p.getDifferenceQuaternion(orn, brick_orns[object_index])), (3, 3)) vertices[object_index * sec: object_index * sec + sec] = \ (vertices[object_index * sec: object_index * sec + sec] - brick_centers[object_index])@rot_mat + pos brick_centers[object_index] = pos brick_orns[object_index] = orn</code></pre> <h2 style=""><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">All the necessary information is updated <a href="https://docs.google.com/document/d/1XJcG1TL5ZRJZDyi8V76leYZt_maxGp0kOB7OZIxKsTA/edit?usp=sharing">here</a>.</span></h2> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Currently, the scrollbars are native to </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ListBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> only. We are planning to separate scrollbars from </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ListBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> to create a standalone UI component. This was in progress previously but was later discontinued, so I was given the responsibility to complete it. After this we plan to improve File Dialog capabilities later on. </span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I did not face any major issues but it took me some time to understand and evaluate the existing discontinued <a href="https://github.com/fury-gl/fury/pull/222">PR</a> regarding scrollbar separation.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 02 Aug 2020 17:05:31 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-10-2/Weekly Check-in #9https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-9-4/<h2 style="">Tab UI, TabPanel2D, Tab UI Tutorial.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello and welcome to my 9th weekly check-in. I will be sharing my progress with </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TabUI</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and its corresponding tutorial. The official repository of my sub-org, FURY can always be found</span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I finished the basic implementation of </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TabUI</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">. Apart from that I was also able to finish the tutorial which showcases different features of this said UI. With the help of this UI one can have multiple panels containing different UI elements within them. The basic implementation can be demonstrated as follows:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/88484746-87456880-cf8e-11ea-9e96-9cba111b90d3.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">After finishing with the basic implementation I moved on to create its tutorial. For that, I decided to combine 3 of the existing UI tutorials to be rendered with the help of Tab UI. I implemented the following in individual tabs:</span></p> <ul> <li><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Controlling a cube with the help of </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">LineSlider2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">RingSlider2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">.</span></li> <li><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Using a </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">CheckBox</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> to render a cylinder or a sphere or both.</span></li> <li><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Using </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> to set the color of a label.</span></li> </ul> <p> </p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The above tutorial can be demonstrated as follows:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/88481324-6a9e3600-cf78-11ea-8c5b-e26bf158388a.gif"></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week I will continue working on the Physics engine integration. Previously we were facing a problem regarding the uncontrollable spinning of objects rendered by a single actor. There must be an issue with mismatching axes alignment of FURY and pyBullet. The spinning problem is as following:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/88485303-87476780-cf92-11ea-850c-cc63e1376ef8.gif"></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I did get stuck with the collapsing functionality of Tab UI and the uncontrollable spinning of the bricks in the Physics simulation. Apart from that I did not face any major issues.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> </span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 26 Jul 2020 17:26:51 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-9-4/Weekly Check-in #8https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-8-2/<h2 style="">ComboBox2D, TextBlock2D, Clipping Overflow.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello and welcome to my 8th weekly check-in. I will be sharing my progress with </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI components. After solving </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> sizing issue, I was finally able to complete the implementation of combo box. I also faced some problems while refactoring </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span><span style="background-color: null;">. The official repository of my sub-org, FURY can always be found </span></span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I finished the implementation of </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox2D</span><span style="background-color: null;">. I also added necessary tests and tutorials to aid the implementation. It still needs some color design, which will be decided later on. Here's an overview of the tutorial:</span></span></p> <p><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: null;"><img alt="" src="https://user-images.githubusercontent.com/29832615/87884567-a8f19d80-ca2c-11ea-8fd2-e7e37b30602f.gif"> </span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> </span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Its a simple tutorial where I change the color of the label based on the option selected on the combo box.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Now while refactoring </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">, I noticed that the Text Overflow workaround on ListBox2D broke and started acting weird. This was mainly because the size implementation was changed and the code that I wrote a few months back wasn't relevant anymore. So I removed the previous code and had to re-implement the same. I later found out that I would be needing such an implementation for most of my UI components so I decided to create a separate method for clipping overflowing texts.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I had to figure out a specific algorithm to achieve this as the height and width of each characters were different and the combined width of multiple characters were not equal to the sum of their widths. I decided to go for a binary search implementation as it was faster compared to a simple linear checking algorithm. The said algorithm works as expected and is more effective compared to its previous implementation. I tweaked the previous combo box example to showcase this algorithm.</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/87884568-aabb6100-ca2c-11ea-9ab8-b05bdb8b0631.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The extremely long text is now clipped correctly.</span></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week, I have a couple of things to work on. Firstly, the single actor wall brick simulation is yet to be completed. Once I am done with that I will continue working on Tab UI and try to finish its skeletal implementation.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I did get stuck regarding the previous implementation of Text Overflow in ListBox2D. Before the current implementation it looked something like this:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/87430848-6b8fa900-c603-11ea-87b8-327f6e7f2ee0.png"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Apart from that, I did not face any major issues.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 19 Jul 2020 21:01:24 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-8-2/Weekly Check-in #7https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-7-4/<h2 style="">Orientation, Sizing, Tab UI.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello and welcome to my 7th weekly check-in. I will be sharing my progress with single actor physics simulation and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> sizing issue which was pending for quite a while now. I will also be sharing my thoughts regarding the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TAB UI</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> component. The official repository of my sub-org, FURY can always be found </span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><a href="https://github.com/fury-gl/fury">here</a></span>.</p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week I was working with the orientation problem I mentioned in my previous check-in. I did have some problems regarding it, but thanks to my mentor I was able to figure it out and implement it with the help of scipy's Quaternion to Rotation Matrix <a href="https://github.com/scipy/scipy/blob/v1.5.1/scipy/spatial/transform/rotation.py#L174-L1978">method</a>. After understanding the orientation implementation, I spent some time regarding the design of the TAB UI component. I expect the design to be something similar as follows:</span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/87254337-906b0b80-c49f-11ea-93f3-3af0f2d8de10.png"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Fortunately, we have good news this week. The </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> sizing issue that we were facing for quite a while has now been fixed. We simply have to keep track of the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">scene</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> parameter in the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">_add_to_scene</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> method of each UI component. This scene parameter inherits </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">vtkViewport</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">, hence it allows us to determine the necessary details about the environment of the 3D objects.</span></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">As the sizing issue regarding </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> has been fixed, I am very much eager to finish the remaining work left. </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> and </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> were left incomplete because of the issue. Therefore, my main objective next week would be to finish them first. Once I am done with it, I will move on to </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">Tab UI</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">. If not, I will continue with the physics simulation.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Apart from the orientation and sizing problem, I did not face any major issues.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 12 Jul 2020 18:53:25 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-7-4/Weekly Check-in #6https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-6-7/<h2 style="">Translation, Reposition, Rotation.</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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. </span> <span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The official repository of my sub-org, FURY can always be found <a href="https://github.com/fury-gl/fury">here</a>.</span></p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Last week I worked on physics simulations rendered in FURY with the help of pyBullet. Now the simulations were highly un-optimized, specially the brick wall simulation as each brick was rendered by its own actor. In other words, 1 brick = 1 actor. Now my objective was to render all the bricks using a single actor, but before jumping into the simulation I had to figure out how to modify specific properties of an individual object. Thanks to my mentor's <a href="https://github.com/fury-gl/fury/pull/233">PR</a>, I was able to experiment my implementations quickly.</span></p> <p><span style="font-family: Comic Sans MS,cursive;"><u><strong><span style="font-size: 12pt; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Translation:</span></strong></u></span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/86536066-5085b080-bf02-11ea-9bcd-9e555adc2ca1.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The algorithm behind translation is to first identify the vertices of the object, then bring the vertices to the origin by subtracting their centers and then adding the displacement vector. The said operation can be achieved by the following snippet:</span></p> <pre><code class="language-python"># Update vertices positions vertices[object_index * sec: object_index * sec + sec] = \ (vertices[object_index * sec: object_index * sec + sec] - centers[object_index]) + transln_vector</code></pre> <p><span style="font-family: Comic Sans MS,cursive;"><u><strong><span style="font-size: 12pt; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Rotation:</span></strong></u></span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/86536065-4fed1a00-bf02-11ea-815d-f7f297165c53.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The algorithm behind rotation is to first calculate the difference between the vertices and the center of the object. Once we get the resultant matrix, we matrix multiply it with the rotation matrix and then we further add the centers back to it so that we preserve the position of the object. Rotation matrix can be defined as: </span></p> <p><img alt="" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/242deb7010fd504134a6cacab3d0ef4ce02e7613"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">where gamma, beta and alpha corresponds to the angle of rotation along Z-axis, Y-axis and X-axis.</span></p> <pre><code class="language-python">def get_R(gamma, beta, alpha): """ Returns rotational matrix. """ r = [ [np.cos(alpha)*np.cos(beta), np.cos(alpha)*np.sin(beta)*np.sin(gamma) - np.sin(alpha)*np.cos(gamma), np.cos(alpha)*np.sin(beta)*np.cos(gamma) + np.sin(alpha)*np.sin(gamma)], [np.sin(alpha)*np.cos(beta), np.sin(alpha)*np.sin(beta)*np.sin(gamma) + np.cos(alpha)*np.cos(gamma), np.sin(alpha)*np.sin(beta)*np.cos(gamma) - np.cos(alpha)*np.sin(gamma)], [-np.sin(beta), np.cos(beta)*np.sin(gamma), np.cos(beta)*np.cos(gamma)] ] r = np.array(r) return r vertices[object_index * sec: object_index * sec + sec] = \ (vertices[object_index * sec: object_index * sec + sec] - centers[object_index])@get_R(0, np.pi/4, np.pi/4) + centers[object_index]</code></pre> <p><span style="font-family: Comic Sans MS,cursive;"><u><strong><span style="font-size: 12pt; color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Reposition:</span></strong></u></span></p> <p><img alt="" src="https://user-images.githubusercontent.com/29832615/86536063-4ebbed00-bf02-11ea-8592-a695d7b91426.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Repositioning is similar to that of translation, except in this case, while repositioning we update centers with the new position value.</span></p> <pre><code class="language-python">new_pos = np.array([1, 2, 3]) # Update vertices positions vertices[object_index * sec: object_index * sec + sec] = \ (vertices[object_index * sec: object_index * sec + sec] - centers[object_index]) + new_pos centers[object_index] = new_pos</code></pre> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Currently, I am yet to figure out the orientation problem. Once I figure that out I will be ready to implement simulations without any major issues. I am also tasked with creating a wrecking ball simulation and a quadruped robot simulation.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I did face some problems while rotating objects. My mentors suggested me to implement it via rotation matrix. I still haven't figured out the orientation problem, which I plan to work on next. Apart from these I did not face any major issues. </span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 05 Jul 2020 16:03:39 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-6-7/Weekly Check-in #5https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-5-4/<h2 style="">May the Force be with you!!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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 <a href="https://github.com/fury-gl/fury">here</a>.</span></p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Last week due to the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">vtkTextActor</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> sizing issue I was not able to continue my work with ComboBox2D UI element. Thus, I decided to work on the "Physics Engine Integration" part of my project. It took me quite a while to understand the terminology of various methods and algorithms used for detection and physics simulation. Nevertheless, I was able to create a couple of rigid body examples to showcase the integration procedure. For physics calculations we used pyBullet and for rendering we used FURY. In other words, pyBullet will handle the backend part of the simulation and FURY will handle the frontend. I have documented the entire integration process <a href="https://docs.google.com/document/d/1XJcG1TL5ZRJZDyi8V76leYZt_maxGp0kOB7OZIxKsTA/edit?usp=sharing">here</a> in detail.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><u><strong>Ball Collision Simulation:</strong></u> </span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><u><strong><img alt="" src="https://user-images.githubusercontent.com/29832615/85949638-988e5b80-b975-11ea-85ba-16c1f78dec89.gif"></strong></u></span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">For the first example, I created a simple collision between two balls in which two spheres were created both in FURY and pyBullet world and then both the worlds are connected by syncing the position and orientation of the said bodies. Timer callback is created to update the positions and to simulate Physics for each step.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><u><strong>Brick Wall Simulation:</strong></u></span></p> <p><img alt="" src="https://raw.githubusercontent.com/Nibba2018/testing-fury/master/2020-06-26_21-15-47.gif"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">For the second example I tried to increase the complexity of the simulations by increasing the number of dynamic objects. Here a brick-wall is created using 100 bricks and then a ball is thrown at it. The rest of it is simulated. The same concepts from the first example is used to render the second one. Timer callback is created to update position of all the objects and to simulate Physics for each step.</span></p> <h2 style="">What is coming up next?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">In the above examples I used a separate actor for each object which is highly un-optimized. Thus, my mentor suggested me to render all the bricks using a single actor, so that the simulation is more optimized. I am not very confident in changing the position and orientation of different objects rendered by a single actor. Therefore, I will have to research a bit more about it. Apart from that I will also try to work on Constraint based simulation examples if possible.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The pyBullet documentation isn't well written for cross rendering, hence it was a bit of a challenge for me to implement the integration. I also faced a problem regarding the offset of actors between the FURY world and pyBullet world. Both use different coordinate systems for rendering and simulation because of which I had a constant offset between the objects during simulations. I was able to fix it by converting one coordinate system to the other. Apart from this I did not have any major issues.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 28 Jun 2020 13:44:15 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-5-4/Weekly Check-in #4https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-4-4/<h2 style="">TextBlock2D Progress!!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello and welcome to my 4th weekly check-in, I will be sharing my progress with </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI component. The official repository of my sub-org, FURY can always be found <a href="https://github.com/fury-gl/fury">here</a>.</span></p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week my objective was to work on the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> resizing feature and also work on the scrollbar bug in </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI component. The </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span><span style="background-color: null;"> component makes use of </span><span style="background-color: #dddddd;">vtkTextActor</span><span style="background-color: null;"> and its methods available in VTK for handling all Text related properties such as font size, color, background color etc. Now, going through the official <a href="https://vtk.org/doc/nightly/html/classvtkTextActor.html">docs</a> I figured out that the there were three different scaling modes for the said actor:</span></span></p> <ul> <li><span style="color: #8e44ad;"><span style="font-size: 12pt; font-family: Arial; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">TEXT_SCALE_MODE_NONE</span></span></li> <li><span style="color: #8e44ad;"><span style="font-size: 12pt; font-family: Arial; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">TEXT_SCALE_MODE_PROP</span></span></li> <li><span style="color: #8e44ad;"><span style="font-size: 12pt; font-family: Arial; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">TEXT_SCALE_MODE_VIEWPORT</span></span></li> </ul> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The first scaling mode was currently implemented in FURY's </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> code base. This was done mainly because the only way for the user to create a text block was by providing the font size as parameter. We couldn't use the third option as the FURY API tries to maintain abstraction by not exposing </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">vtkViewport</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> parameter. Now in order to allow size as a parameter I had to use the second scaling option which is </span><span style="color: #8e44ad;"><span style="font-size: 12pt; font-family: Arial; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">TEXT_SCALE_MODE_PROP</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">. With  this mode one can set the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">Position2</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> parameter to the desired value of height and width. But the problem is I cannot use this for the combobox element as the background size will be inconsistent with respect to font size and text length.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><img alt="" src="https://user-images.githubusercontent.com/29832615/85226809-12af6500-b3f7-11ea-8a75-7e86d40701d1.png"></span> <img alt="" src="https://user-images.githubusercontent.com/29832615/85226812-14792880-b3f7-11ea-8edd-1df25382a48f.png"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Therefore, as a solution we agreed to add a separate </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">Rectangle2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI component as the background for Text Block along with vtkTextActor. With this implementation one can easily manipulate the background irrespective of the text properties. But this had another issue, the user now had 2 different ways of initializing a TextBlock2D. Therefore, when the user uses size a constructor parameter, then everything works in sync, but the same is not true for the font size parameter. This is mainly because we do not have a specific way of determining the size of the actor based on font size. My mentors have agreed to look into this problem and advised me to focus on something else instead.</span></p> <h2 style="">What is coming up next week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week I am planning to start with Physics engine integration of FURY with pyBullet. My main focus would be to create simple simulations first before initiating the integration process. If the size issue is solved before I move into Physics engine then I would complete the ComboBox UI and start with Tab UI instead. I have also fixed the scrollbar bug.</span></p> <h2 style="">Did you get Stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The main problem that I faced so far was regarding the variable background size of the Text Block component. Also the GetPosition2 method of vtkTextActor would always return the same value irrespective of the font size parameter passed as a constructor argument. Therefore, it was not possible for me to determine the actual size or bounding box of the said text actor.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 21 Jun 2020 14:05:47 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-4-4/Weekly Check-in #3https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-3-4/<h2 style="">ComboBox2D Progress!!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">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 <a href="https://github.com/fury-gl/fury">here</a>.</span></p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week my objective was to work on the sizing and positioning issue regarding the sub-components of the </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">ComboBox2D</span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"> UI element. After countless debugging sessions and my mentor's support, I was successfully able to fix the issue. I also developed helpful methods and callbacks for this element to allow users to interact with them in a user friendly manner. I also wrote tests for the same. So far the said progress can be summarized via this gif:</span></p> <p><img alt="ComboBox UI gif" src="https://user-images.githubusercontent.com/29832615/84592637-cc8d5b00-ae64-11ea-9ff3-c1ce2095f7f2.gif"></p> <h2 style="">What is coming up next week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Unfortunately, one of the sub-components </span><span style="color: null;"><span style="font-size: 12pt; font-family: Arial; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">TextBlock2D</span><span style="background-color: null;">, </span></span></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">didn't have a resizing feature that I could make use of for this new UI component. Thus, I need to add that feature on a different PR. This feature will also be required while building other UI elements therefore adding this feature is currently my top priority. There's also a bug regarding the scrollbar that needs to be fixed. The scrollbar overshoots the specified combobox area after new items are appended to the combobox's list of items during runtime. Hopefully I will be able to get them done by next week. </span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I was really confused with the coordinate system of </span><span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: #dddddd;">Panel2D</span><span style="background-color: null;"> that was the main reason why components were misplaced. I also faced some issues regarding the scrollbar callback as it wasn't scrolling the elements properly, the items were stuck in place. So far I was able to fix them. Apart from these, I didn't face any major issues.</span></span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">Thank you for reading, see you next week!!</span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 14 Jun 2020 12:18:56 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-3-4/Weekly Check-in #2https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-2-3/<h2 style="">First week of coding!!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello and welcome to my second weekly check-in, I will be sharing my progress for the first week of coding.</span></p> <h2 style="">What did you do this week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">This week my objective was to create the skeleton model for ComboBox2D UI element along with its required sub-components and their respective default callbacks. So far, I have successfully been able to implement them. Apart from some issues that I was facing regarding the sizing and position of the sub-components.</span></p> <h2 style="">What is coming up next week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Next week, my main focus will be on fixing the sizing issue and I will also be working on respective default and specialized class methods required by the component and its sub-components for proper functioning. I will also create tests for the same.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">The main problem that I faced while coding the UI element was regarding the sizing and positioning of the sub-components. The sub-components appeared flipped and the <em>TextBlock2D</em> element had no option to resize based on a particular width &amp; height definition.</span></p> <p><img alt="combobox image" src="https://user-images.githubusercontent.com/29832615/82089691-b713fc80-9711-11ea-8d72-efaeaac1044c.png"></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">As you can see, the ComboBox UI element doesn't look the way its supposed to. Along with this issue the scrollbars callback doesn't work either. Hopefully, I will be able to get these issues fixed by next week. </span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;"><span style="font-size: 14px;"><span style="font-family: Arial; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Thank you for reading, see you next week!!</span></span></span></div>SohamBiswas41@gmail.com (Nibba2018)Sun, 07 Jun 2020 14:07:21 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-2-3/Weekly Check-in #1https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-1-5/<h2 style="">Welcome to my GSoC Blog!!!</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Hello Everyone, this is <strong>Soham Biswas </strong>currently in 2</span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 0.6em; vertical-align: super;">nd</span> year pursuing my Bachelor’s(B.Tech) degree in Computer Science &amp; Engineering from Institute of Engineering &amp; Management, Kolkata. I have been selected for GSoC' 20 at sub-org <strong>FURY </strong>under the umbrella organization of <strong>Python Software Foundation.</strong> I will be working on building sci-fi-like 2D and 3D interfaces and provide physics engine integration under project titled "<em>Create new UI widgets &amp; Physics Engine Integration</em></span><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">". </span></p> <h2 style="">What did you do during the Community Bonding Period?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Due to the pandemic outbreak and the country wide lockdown in India, many places including my university were closed and therefore I decided to get a head start and start with the project early. During the community bonding period, we had video conference meetings with our mentors and the project's core team. We interacted with each other and discussed the implementation details and their respective deadlines for the entire event period. We will be having such meetings every week on Wednesday in order to update ourselves about the progress of our respective tasks.</span></p> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">I completed the remaining <em>Pull Requests</em> that I had pending before the GSoC students announcement. I also reviewed other issues and pull requests to make sure everything remains up-to-date.</span></p> <h2 style="">What is coming up next week?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">Currently, I am focusing on building the <em>ComboBox2D</em> UI element. I will try to get the skeleton model, required sub-components and their respective default callbacks done by next week.</span></p> <h2 style="">Did you get stuck anywhere?</h2> <p><span style="font-size: 12pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-variant: normal; text-decoration: none; vertical-align: baseline;">While working with my previous PR related to <em>Double Click</em> callbacks, I faced an issue where I was unable to create and implement User Events properly in VTK. Thankfully, my mentors helped me out I was able to implement double click callbacks for all three mouse buttons successfully.</span></p> <div style="background: #eeeeee; border: 1px solid #cccccc; padding: 5px 10px;"><span style="color: #27ae60;">See you next week, cheers!!</span></div> <p> </p>SohamBiswas41@gmail.com (Nibba2018)Sat, 30 May 2020 16:07:26 +0000https://blogs.python-gsoc.org/en/nibba2018s-blog/weekly-check-in-1-5/