უკან დაბრუნება
Inkwash — აკვარელის სიმულატორი ერთ HTML ფაილში
SiTech AI Team2 წთ. საკითხავი

Inkwash — აკვარელის სიმულატორი ერთ HTML ფაილში

ჯონო უიტაკერის Inkwash სითხის სიმულატორითა და Beer–Lambert-ის რენდერინგით ქაღალდზე მელნისა და წყლის ქცევას ბაძავს. მთელი აპლიკაცია ერთი HTML ფაილია, დამოკიდებულებების გარეშე.

ჯონო უიტაკერმა გამოაქვეყნა Inkwash — ბრაუზერში მომუშავე აკვარელით ესკიზირების აპლიკაცია — და მასთან ერთად გრძელი ტექნიკური განმარტება იმისა, თუ როგორ მუშაობს ის. აპლიკაცია ერთი HTML ფაილია, ათასზე ნაკლები სტრიქონით, დამოკიდებულებებისა და build-ის ეტაპის გარეშე; მას WebGL2 და renderable half-float ტექსტურები სჭირდება — მხარდაჭერა, რომელსაც ავტორი დაახლოებით 2021 წლიდან გამოსულ მოწყობილობებს მიაკუთვნებს.

წყლის ფუნჯიდან სითხის სიმულატორამდე

პროექტი Anthropic-ის Claude Fable 5-ის ტესტით დაიწყო და გადაიზარდა ცდად, ბრაუზერში აღედგინა ავტორის ბუნების ჟურნალის რუტინა. ეს რუტინა Pilot G2-ის კალამს აერთიანებს waterbrush-თან — ნეილონის ფუნჯთან, რომლის სახელურშიც წყლის გამოსაწური რეზერვუარია. უიტაკერი წერს, რომ კოდს თავად არ შეხებია: ფაილის წაკითხვა შეუძლია, თუმცა იმპლემენტაცია მოდელმა დაწერა, ისევე როგორც განმარტების ტექსტის დიდი ნაწილი, რასაც ის ღიად აღნიშნავს.

კანვასის ქვეშ ნახატი პიქსელები არაა, არამედ მცურავი წერტილის ტექსტურების დასტა — მოძრავი პიგმენტი, დალექილი პიგმენტი, წყალი, სიჩქარის ველი და წნევა — რომლებიც ყოველ კადრზე ათეულამდე WebGL2 შეიდერს შორის ping-pong-ით გადადის. სითხის მოძრაობა იყენებს ჯოს სტამის 1999 წლის Stable Fluids ალგორითმს, რომლის semi-Lagrangian ადვექცია თითოეულ უჯრას სიჩქარის ველის გასწვრივ უკან მიაბრუნებს, ამიტომ დიდი დროის ნაბიჯიც კი სიმულაციას არ აფეთქებს. წნევის პროექცია დაახლოებით 22 Jacobi იტერაციით წყალს შეკუმშვადს ხდის.

სისველე, როგორც ნებართვების სისტემა

შედეგი ქაღალდივით რომ აღიქმება, ამის მიზეზი სისველის ველია, რომელიც მთელ სიმულაციას აკონტროლებს. სიჩქარე მრავლდება სისველის smoothstep-ზე, ამიტომ მშრალ ადგილას დინება ვერ იარსებებს და საღებავის ფენა საკუთარ საზღვარზე ჩერდება. პიგმენტის მოძრაობადობა იმავე პრინციპით იზღუდება: ნოტიო ქაღალდი მელანს ნელა ავრცელებს, გაჟღენთილი კი — ადვილად ადინებს. თავად წყალი დინების სიჩქარის 0.6-ით მოძრაობს და ექსპონენციალურად შრება; სლაიდერი დროის მუდმივას დაახლოებით 2-დან 18 წამამდე აყენებს. ახალი კალმის მელანი თავადაც მცირე სისველეს ტოვებს — ამიტომ კალმის შტრიხისთანავე გავლებული ფუნჯი ხაზს აფუმფულებს, ძველი შტრიხი კი მყარად რჩება.

Beer–Lambert და ცისფერი ჰალო

პიგმენტი ფერზე არა, არამედ თითო არხის ოპტიკურ სიმკვრივეზე ინახება, და ჩვენების შეიდერი მას Beer–Lambert-ის კანონით გარდაქმნის — ქაღალდის ფერს სიმკვრივის ექსპონენტზე ამრავლებს. ამიტომ გადაფარებული შტრიხები ღრმავდება და არა ნაცრისფრისკენ ბრტყელდება, ისე, როგორც ნამდვილი გლეიზები იქცევა. იგივე გადაწყვეტილება ქმნის აპლიკაციის ხასიათურ ეფექტსაც: გავრცელების საფეხური თითო არხზე სხვადასხვა სიჩქარით მიდის, ამიტომ სველი კიდე მუქ ბირთვად და მის გარშემო ცივი ცისფერ-იისფერი ჰალოდ იყოფა — ბაძავს რა იმას, თუ როგორ ქრომატოგრაფირდება შავი მელანი სველ ქაღალდზე.

ფენების შექმნას მეორე, დალექილი პიგმენტის ფენა უზრუნველყოფს: ღილაკი "fix" 1.2-წამიან პროცესს იწყებს, რომელიც მოძრავ პიგმენტს დალექილ ფენაზე გადააქვს, და ქაღალდს მყისიერად აშრობს, თეთრი გუაში კი მასში გაუმჭვირვალედ ჩაიწერება. მთელი კონვეიერი — თორმეტი შეიდერის საფეხური, Jacobi-ს იტერაციების ჩათვლით — ტელეფონზე 60 კადრს წამში აღწევს, წერს ავტორი, რადგან ძვირი გამოთვლა მსხვილ ბადეზე მიმდინარეობს.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.