Τρισδιάστατη Μοντελοποίηση στο Freecad με Rust και Τεχνητή Νοημοσύνη

Αρχική Σελίδα

Πίνακας Περιεχομένων

Έκανα ένα διάλειμμα μετά απο τρείς μήνες προγραμματισμού του snippet-agent και άρχισα να πειραματίζομαι με την Τ.Ν. για αυτοματοποίηση της τρισδιάστατης μοντελοποίησης. Μόλις ξεκινούσα, έπεσα πάνω στους τιτάνες της μηχανοποίησης να πουλάνε λογισμικό Τ.Ν. για μαζική τροποποίηση χιλιάδων μικροσκοπικών επιφανειών και ακμών που εμφανίζονται στα τρισδιάστατα μοντέλα, πολύ κοινό πρόβλημα όταν συσσωρεύονται πολλά γεωμετρικά σχήματα σε μεγάλα σχέδια.

Την τελευταία φορά που έκανα τρισδιάστατη μοντελοποίηση ήταν πριν από 10 χρόνια, για μία εβδομάδα, αλλά γρήγορα κουράστηκα από τη συνεχή χρήση του ποντικιού. Η γενική αντίληψη είναι ότι όσοι χρησιμοποιούν το ποντίκι, ή τυχαία κουμπιά, κόκκινα, κίτρινα πράσινα, δεν ξέρουν και πολλά από υπολογιστές. Οι τιτάνες της μηχανοποίησης μοιάζουν ακριβώς με αυτούς τους ανθρώπους που ξέρουν πάνε γύρω γύρω με το ποντίκι αδιάκοπα.

Κατά καιρούς αναρωτιόμουν: πότε θα γίνει εφικτό να χειριζόμαστε τρισδιάστατη γεωμετρία με κώδικα; Νομίζω ότι φτάσαμε ήδη σε αυτό το σημείο, απλά προς το παρόν η τεχνητή νοημοσύνη δεν είναι πλήρως απίστευτη.

Παρακάτω υπάρχει μια σειρά παραδειγμάτων που δημιούργησα, κάθε φορά έδινα εντολή στο Gemini να αναγνωρίσει σχήματα και αντικείμενα σε τυχαίες φωτογραφίες, έπαιρνα αυτή την περιγραφή κειμένου, και την έριχνα στο Claude με σκοπό να μου γράψει κώδικα Rust και Python για το Freecad.

Όλα τα παραδείγματα εκτός του Roy δημιουργήθηκαν με αυτόν τον τρόπο, μερικές φορές το Claude έδινε τη σωστή λύση με την πρώτη προσπάθεια, ή ίσως με την δεύτερη. Ο κώδικας τρέχει συνήθως χωρίς πρόβλημα, αλλά ο προσανατολισμός στον τρισδιάστατο χώρο, ή η απόλυτη θέση ορισμένων στοιχείων δεν είναι πλήρως ευθυγραμμισμένη. Κάποιες φορές το διόρθωνα δοκιμάζοντας μία ή δύο φορές ακόμα, και αυτό ήταν.

Η περιγραφή που του Gemini δόθηκε αυτούσια στο Claude, πολύ λίγες γραμμές τροποποιήθηκαν απο εμένα. Ούτως ή άλλως είμαι τελείως αρχάριος στο Freecad και είναι αρκετά περίπλοκο. Δεν άλλαξα πολλά από τον κώδικα του Claude, αλλά μετά από κάμποσες δοκιμές βρήκα μια δομή κώδικα που είναι ξεκάθαρη και βοηθά το Claude να γράφει και να χειρίζεται τους υπολογισμούς τρισδιάστατης γεωμετρίας.

Κάθε φορά δημιουργούσα ένα παράδειγμα κώδικα για κάθε διαφορετική σκηνή τρισδιάστατης μοντελοποίησης και έδινα αυτόν τον κώδικα ως υπόδειγμα για την επόμενη σκηνή. Επίσης, ο κώδικας που σχετίζεται με τη γεωμετρία έχει περιθώρια βελτίωσης, όσο καλύτερα είναι διατυπωμένος ως παράδειγμα, τόσο καλύτερο είναι το επόμενο αποτέλεσμα. Στο Claude αρέσει ο καλός κώδικας όπως στους ανθρώπους, και δουλεύει καλύτερα όταν ένα ανθρώπινο μυαλό έχει ασχοληθεί με το πρόβλημα.

Το Roy είναι ένα Εργαλείο Διαχείρισης Αποθέματων για ένα σούπερ μάρκετ με πολλούς ορόφους, ένα πρωτότυπο της κλασικής εφαρμογής CRUD, με βάση δεδομένων που αποθηκεύει όλα τα αντικείμενα και τη γεωμετρία τους. Διαθέτει εργαλείο διαχείρισης από γραμμή εντολών (cli), και επιπλέον πληροφορίες υπάρχουν στο github.

Το Roy φορτώνει χιλιάδες δεδομένα προϊόντων για ολόκληρο το σούπερ μάρκετ, χρειάζεται πολύ ώρα για να τα φορτώσει όλα (πάνω από 10 λεπτά), αλλά μόλις τελειώσει, οι μικρές αλλαγές τροποποιούν μόνο ό,τι έχει αλλάξει (μέσω του εργαλείου της γραμμής εντολών). Αυτό σημαίνει ότι κάθε τροποποίηση προϊόντος από τον διαχειριστή φορτώνεται σε χιλιοστά του δευτερολέπτου. Το Freecad βέβαια δεν ανανεώνεται αυτόματα. Η Python διαβάζει ολόκληρη τη σκηνή, περνά τα πάντα στη Rust, συγκρίνονται με ό,τι υπάρχει ήδη στη βάση δεδομένων, και η Python μακροεντολή ενημερώνεται από τη Rust για να αλλάξει μόνο ότι διαφέρει στην βάση δεδομένων.

Η λειτουργικότητα του Roy δεν αναπτύχθηκε μονομιάς από το Claude (φυσικά) — ήταν αρκετά δύσκολο να υλοποιηθεί σωστά, αλλά μετά από αρκετές δοκιμές δεν έχω εντοπίσει άλλα σφάλματα για διόρθωση. Έγραψα και ξαναέγραψα τον κώδικα, ώστε να είναι αρκετά καλής ποιότητας, πιστεύω.

Ορίστε λοιπόν — όλα τα παραδείγματα εκτός από το πρώτο δημιουργήθηκαν σχεδόν με μία-δύο-τρεις προσπάθειες και ελάχιστη τροποποίηση από εμένα. Θα μπορούσα να βάλω το μυαλό μου να δουλέψει και να ορίσω τη γεωμετρία καλύτερα στο Gemini, αλλά δεν μπήκα στον κόπο.

Roy

Το κτίριο του πολυκαταστήματος καταστήματος από έξω roy_start.png

Όλα τα προϊόντα στο εσωτερικό, χρωματικά σημασμένα roy_no_walls.png Αλλαγή χρώματος μόνο ενός προϊόντος (το Freecad για κάποιον λόγο δεν χρωματίζει όλα τα προϊόντα — χρωματίζει μόνο τη μισή σκηνή, και αυτή η μισή σκηνή είναι διαφορετική κάθε φορά, αλλά τα αχρωμάτιστα προϊόντα είναι πάντα τα μισά, πάντοτε) roy_no_walls_updated.png κώδικας

Μάτι

Φωτογραφία ενός τυχαίου εξωφύλλου δίσκου — απλώς ένα παράξενο μάτι κομμένο iris_original.png

Τρισδιάστατη απεικόνιση iris.png Απόκρυψη ορισμένων τρισδιάστατων στοιχείων iris_no_ring.png Ο Δίσκος κώδικας

Όχημα A7

Φωτογραφία ενός τυχαίου παλιού αυτοκινήτου a7_original.png

Οπτική από ψηλά a7_up.png Οπτική από χαμηλά a7_down.png Τυχαίο παλιό αυτοκίνητο κώδικας

Κομματάκια

Εικόνα εξώφυλλου ενός τραγουδιού μου shard_original.png

Μέτριο αποτέλεσμα shard_full.png Κάπως καλύτερο, shard_no_frames.png Το τραγούδι μου κώδικας

Αντλία

Πρωτότυπη τρισδιάστατη απεικόνιση από τον Efficient Engineer, αναπαραγωγή τρισδιάστατης σκηνής μόνο από μία εικόνα, χωρίς ανθρώπινη παρέμβαση. Δεν άγγιξα τίποτα σε αυτό, η περιγραφή του Gemini πέρασε απευθείας στο Claude, εγώ μόνο μετέγλωττισα και έτρεξα τον κώδικα. pump_original.png

pump.png pump_no_barrel.png Βίντεο του Efficient Engineer κώδικας Αν αυτή η ανάρτηση σας φάνηκε ενδιαφέρουσα, είμαι διαθέσιμος για εργασία. Σχετικά με εμένα

Author: emporas

Created: 2026-03-25 Wed 15:38