This post will be used for updating the progress on Regression of Geometry Nodes project. Have a look at the proposal and daily logs.
For feedback, this thread itself can be used.
From last year’s experience, since this project doesn’t directly affect the users, feedback received is less.
The Geometry Nodes Survey Form has comments enabled, feel free to add your remarks or make corrections, point to resources or Youtube videos or attach a link to your blend files.
What I am looking for is simple blend files that can be used for testing the Geometry Nodes. Thanks!
Week 0: 17 May - 23 May
I got vaccinated for my first dose, so few days I was in recovery.
Less activity on bug tracker.
Talked to mentors : Jacques and Habib on blender.chat
Topics of discussion: Incorporate versioning of geometry nodes in testing.
Official kick-off starter meeting planned on Tuesday, 25th.
Plans for next week:
Study geometry nodes and discuss and think ways for how it can be tested.
Planning to go from the top and start with Attributes.
Do a literature survey by looking at Blender and Houdini documentation and how they work.
A little info on the script:
I am working on creating a Python script which can read the test and expected (reference) objects from the blend file, compare them and give the verdict.
I was more active in the first half of the week, was a bit stuck with design decisions at the end of the week.
Moved the script to soc branch.
Polished the script based on Jacques’ review.
Added features:
Can add expected object automatically if it doesn’t exist with the BLENDER_TEST_UPDATE flag.
Makes adding test objects easier.
Plans for next week:
Mesh Test framework pretty much does what the script currently does. With the difference being, it creates the modifiers (applies the operator) from scratch.
Merge script’s common functionality with Mesh Test’s.
Attended by: Habib Gahbiche, Himanshi Kalra
At: 12 CEST
Platform: Google Meet
Meeting Agenda: Recap all the Approaches and discuss the current approach.
Meeting Notes
Himanshi summarized the various approaches attempted till now.
Discuss the current approach that uses separate module for common functions.
Mentor’s suggested solution: To create a static method for compare_meshes.
Finalized with a modification of Approach 5: Implementing an Abstract Base Class from which Mesh Test (existing framework) and Geometry Nodes Test (new one) can inherit common functionalities.
I created a module for common functionalities that are needed in executing a test. The current state of D11611. After discussion with the mentor, we decided on creating a common class for these re-usable code instead of a module.
This is the UML diagram of the classes:
Tootooroo… my project is merged in master Commit link
Clean up of the test files and patch.
Merging… (hah messed up the commit message ^^’)
Was working with both mentors to better under the custom data and attributes.
Plans for next week:
More info on what I am trying to implement:
Currently for regression testing, we compare mesh data such as vertex coordinates, edge positions, total number of edges, faces and so on.
There are also generic attributes which are stored in form of custom data(including the above), from my understanding*, they could be of any type and be created by user. It doesn’t necessarily come along when object is created. e.g. Rotation of points.
*Note: This is just my understanding of the concept, reach out to Jacques or Hans or Habib for clearer explanations.
So, the goal is to compare these from test object and expected object. This will help in better testing of Attribute Nodes.
Rolling over from last few weeks, been trying to handle custom data…in the original meeting Jacques said it was easy…
Had a debugging/discussion session with Habib on Saturday 10 CEST on the above topic, concluded with doing it in Python with a proof of concept dry-run in Blender Python console.
Discuss with Jacques about:
Using Python to compare attributes in Monday meeting or earlier.
When Built-in attributes will be exposed.
Benefits of doing it in C than in Python.
Add Volume tests on the side.
Thanks for reading! Was rather a long post! Next time I will show how to run tests with a video
Discussed with Jacques to implement custom data comparison in Python, Jacques shared a boilerplate code to help me out in implementing in C. My attempt at editing and appending in the existing to compare the layers didn’t work out, as the layer order for generic attributes didn’t match for the two objects, hence I was stuck at it since the beginning.
I was traveling, I came back this evening. Worked only for 3 days from Monday to Wednesday, this week. Too tired to write a full weekly report. Will update it with more details tomorrow.
Added case for comparing custom color data type.
I added test cases!
Plans for next week
Coming is the final week.
I would like to focus on adding test cases. If time permits at the end, I will amend it from the relative threshold.
Upload a diff with test cases made last week (local on my computer).
Also some other pre-Gsoc patches need update, will update them this week.
I had a great time this summer. Thanks for your support!
Now you can try editing the geometry nodes code and then run the tests to check if you accidentally break something and easily fix it.