With a very excited and reluctant heart, we have reached the last and second major project of this semester - project B. Since the beginning of my academic term, I have been thinking about what my last work in nature of code would be. Eventually, after repeated thinking, I still returned to the topics and techniques that interested me. I quickly gave my project a name, "echoes of the becoming". I think nature is a very magical thing. It seems that everything has its own nature. The universe has nature, the natural environment has nature, and human beings also have their own nature. When these Natures are presented and come together, there are "echoes". Different things resonate, form connections, and influence each other, thus forming the vast world we see.
Among all the technologies I have learned, I am particularly interested in flow field. It uses physical forces to form a field. In this field, things will move in real time and change at any time according to the influence they receive. It is not only very beautiful but also contains the power of "nature". The separation and aggregation of particles are both influenced by the larger external environment, but this process generates a sense of unity and harmony. But when I started, my vision for this project was to scan what the user drew on the paper through a webcam, transform it into particles on the screen and float according to the flowfield, and then the user could use ml5 models such as handpose to change the flowfield. I communicated my ideas with Prof.Moon. He supported my overall idea, but had some other opinions on my implementation method. He suggested that I focus on achieving the flow and diversity of the flow field first, and then continue to implement the interaction after having a satisfactory visual form. I modified and explored some different flow field modes based on the sample code taught in class. In fact, I imitated various natural forms such as the rising of the sun, the flowing of the stream, the movement of the wind, the gathering and scattering of cosmic planets, and the drift of black holes. I also added the interaction of following the mouse movement in one of the modes.
Then I handed my project to the professor for modification. He pointed out some areas where I could improve and helped me add some controllable values in the GUI Pane to increase the playability for players. Then we had another conversation about my interaction form. At the beginning, I wanted to continue with the idea of combining webcam scanning with the ml5 model. But he proposed a better idea that could make my project actually interactive. We can directly present what the webcam scans on the screen in the form of particles, and then let the areas where the flow field passes gradually appear. This method is much more feasible. If it is to extract and scan to form particles and then display them on the screen, errors and functional problems are prone to occur. Moreover, my flowfield has already provided sufficient controllability in the GUI, so there is no need to use ml5 anymore. That would make my project too complex and not easy to succeed. I accepted his suggestion and set up the webcam function. Now my project can select "not show the flow field" after debugging the flow field parameters, so that the images captured by the camera can be displayed on the screen in real time as the particles pass by. I also specially added two artworks that I mentioned when making the proposal. If you click on "show image", you can see the way the particles glide across these paintings.
After finishing my video mode. My Professor suggested that I add a new mode. So after our discussion, it was concluded that I could add a drawing mode, allowing users to draw on the screen. When the flow field is cancelled, the color lines drawn by the particles can be seen. I think this is a good idea. After the set up function, some GUIs have been added. You can freely choose the color and size of the brush, and you can clear the painting with one click. After basically completing my work, I added background music and the function of saving photos, and fine-tuned some data ranges to make my work look better. Finally, my work was exhibited at the ima show and received very good reviews.
Before taking this class, I never thought that I would do artistic creation with code. Because I haven't taken any direct prerequisite courses, my foundation in Java script was not very solid when I first took this class. I especially want to thank my professor for patiently teaching me the points I didn't understand and helping me correct the errors in the code. I also want to thank my classmates for being the testers in my production process and offering suggestions. And I also want to thank myself for not giving up! Nature of Code is really a very good course. It has taught me a lot, left me many works that I am very satisfied with, and also changed some of my ideas about the future. I will keep working hard and creating in the future.