1. Προϊόντα
  2.   3D
  3.   GO
  4.   FauxGL
 
  

Δωρεάν Go Βιβλιοθήκη για 3Δ Απόδοση & Μετασχηματισμό

Κορυφαία Ανοιχτή Πηγή Go 3Δ Γραφική Βιβλιοθήκη για εργασία με 3Δ πλέγματα, προσαρμοσμένο σκίασμα και υλικά, 3Δ μετασχηματισμούς, πολυνηματική απόδοση, anti-aliasing κ.ά.

Τι είναι η βιβλιοθήκη FauxGL;

Το FauxGL είναι μια καινοτόμος ανοιχτού κώδικα βιβλιοθήκη Go 3D του Michael Fogleman, προσφέροντας καθαρή απόδοση 3D λογισμικού σε Go χωρίς εξωτερικές εξαρτήσεις. Αυτό το ελαφρύ αλλά ισχυρό εργαλείο είναι ιδανικό για προγραμματιστές που αναζητούν μια δωρεάν Go 3D API για φορητές λύσεις γραφικών. Υποστηρίζει βασικές λειτουργίες όπως μετασχηματισμούς κορυφών, εισαγωγή και διαχείριση 3D πλεγμάτων, προσαρμοσμένη σκίαση, διαχείριση υλικών, προοπτική και έλεγχο κάμερας, rasterization τριγώνων, παρεμβολή χρωμάτων, χαρτογράφηση υφών, απόδοση πλέγματος, αποθήκευση βάθους και αφαίρεση κρυμμένων επιφανειών. Οι προγραμματιστές λογισμικού μπορούν εύκολα να δημιουργούν σχέδια STL 3D, να προσθέτουν τμήματα σε αρχεία 3D και να διαχειρίζονται την απόδοση διαγραμμάτων 3D με ακρίβεια, καθιστώντας το μια ευέλικτη επιλογή για έργα που απαιτούν υψηλό έλεγχο της γραμμής απόδοσης.

Σε αντίθεση με τις λύσεις που εξαρτώνται από την GPU όπως το OpenGL ή το DirectX, το FauxGL επεξεργάζεται εξ ολοκλήρου στην CPU, καθιστώντας το ιδανικό για περιβάλλοντα χωρίς επιτάχυνση υλικού ή όπου απαιτείται άμεσος έλεγχος απόδοσης. Αν και δεν έχει σχεδιαστεί για παιχνίδια υψηλού ρυθμού καρέ, διαπρέπει στην εκτός σύνδεσης απόδοση, τη δοκιμή αλγορίθμων, τη χρήση στην εκπαίδευση και τη δημιουργία οπτικοποιήσεων. Το FauxGL μπορεί να δουλέψει με 3D αρχεία OBJ και FBX, να φορτώνει μορφές όπως STL, PLY και 3DS, και ακόμη να μετατρέπει 3D αρχεία σε PDF όταν ενσωματώνεται σε ευρύτερες ροές εργασίας. Παρέχει επίσης ενσωματωμένες λειτουργίες για δημιουργία επιπέδων, σφαιρών, κύβων, κυλίνδρων και κώνων, επιτρέποντας γρήγορη απόδοση οντοτήτων 3D αρχείων και την εφαρμογή μετασχηματισμών σε 3D διαγράμματα. Το FauxGL αποτελεί μια καθαρή, εκφραστική επίδειξη των δυνατοτήτων της Go στην απόδοση 3D γραφικών βασισμένη στην CPU.

Previous Next

Ξεκινώντας με το FauxGL

Ο προτεινόμενος τρόπος εγκατάστασης του FauxGL είναι μέσω του GitHub. Παρακαλώ χρησιμοποιήστε την παρακάτω εντολή για ομαλή εγκατάσταση.

Εγκατάσταση του FauxGL API μέσω εντολής Get

go get github.com/fogleman/fauxgl 

Μπορείτε να κατεβάσετε τη μεταγλωττισμένη κοινόχρηστη βιβλιοθήκη από το αποθετήριο GitHub.

Καθαρή απόδοση βασισμένη σε CPU μέσω του Go API

Η ανοιχτού κώδικα βιβλιοθήκη FauxGL υποστηρίζει καθαρά απόδοση βασισμένη στην CPU και δεν χρησιμοποιεί καθόλου την GPU. Κάθε τρίγωνο, κάθε pixel και κάθε μετασχηματισμός υπολογίζονται αποκλειστικά στην CPU. Αυτό την καθιστά ιδανική επιλογή για περιβάλλοντα απόδοσης χωρίς οθόνη (όπως διακομιστές) ή απλές εργασίες επεξεργασίας γραφικών χωρίς εξάρτηση από την GPU. Το παρακάτω σενάριο κώδικα δείχνει πώς να ρυθμίσετε μια σκηνή μέσα σε εφαρμογές Go.

Πώς να ρυθμίσετε μια σκηνή για καθαρή απόδοση με βάση την CPU μέσω της βιβλιοθήκης Go;

import "github.com/fogleman/fauxgl"

const (
    width  = 1024
    height = 768
)

func main() {
    context := fauxgl.NewContext(width, height)
    context.ClearColorBufferWithColor(fauxgl.Black)
    context.ClearDepthBuffer()

    // Now you can start drawing models or primitives!
}

Φόρτωση και μετασχηματισμός 3D μοντέλων

Η ανοιχτού κώδικα βιβλιοθήκη FauxGL παρέχει πλήρη υποστήριξη για τη φόρτωση και εργασία με 3D μοντέλα μέσα σε εφαρμογές Go. Μόλις φορτωθεί, μπορείτε εύκολα να εφαρμόσετε μετασχηματισμούς όπως κλιμάκωση, περιστροφή, αλλαγή μεγέθους και μετάθεση. Ακολουθεί ένα απλό παράδειγμα που δείχνει πώς οι προγραμματιστές λογισμικού μπορούν να φορτώσουν μορφές Wavefront OBJ, μία από τις πιο κοινές μορφές αρχείων 3D μοντέλων, και να εφαρμόσουν μετασχηματισμό σε αυτά χρησιμοποιώντας τη βιβλιοθήκη Go.

Πώς να φορτώσετε ένα 3D μοντέλο και να εφαρμόσετε μετασχηματισμούς μέσω της βιβλιοθήκης Go;

mesh, err := fauxgl.LoadOBJ("model.obj")
if err != nil {
    panic(err)
}

// Apply transformations
matrix := fauxgl.Identity().
    Scale(fauxgl.Vector{1, 1, 1}).
    Rotate(fauxgl.V(0, 1, 0), fauxgl.Radians(45)).
    Translate(fauxgl.Vector{0, 0, -5})

mesh.Transform(matrix)

Διανυσματικές λειτουργίες μέσω της βιβλιοθήκης Go

Η βιβλιοθήκη MathGL παρέχει εκτενή υποστήριξη για διανυσματικά και μητρικά μαθηματικά, συμπεριλαμβανομένων των λειτουργιών για διανύσματα και μητρώα 2D, 3D και 4D. Αυτά είναι απαραίτητα για τη διαχείριση θέσεων, κατευθύνσεων, ταχυτήτων και άλλων χωρικών δεδομένων. Παρέχει υποστήριξη για Add, Sub, Dot, Cross, Normalize κ.λπ. και πολλαπλούς τύπους ακρίβειας (mgl32 για float32, mgl64 για float64). Εδώ είναι ένα απλό παράδειγμα που δείχνει πώς οι προγραμματιστές λογισμικού μπορούν να εκτελέσουν διαφορετικές λειτουργίες διανυσμάτων μέσα στις εφαρμογές Go τους.

Πώς να εκτελέσετε λειτουργίες διανυσμάτων μέσω της βιβλιοθήκης Go;

package main

import (
	"fmt"
	"github.com/go-gl/mathgl/mgl32"
)

func main() {
	// Create two 3D vectors
	v1 := mgl32.Vec3{1, 2, 3}
	v2 := mgl32.Vec3{4, 5, 6}

	// Vector addition
	sum := v1.Add(v2)
	fmt.Println("Vector sum:", sum) // [5 7 9]

	// Dot product
	dot := v1.Dot(v2)
	fmt.Println("Dot product:", dot) // 32

	// Cross product
	cross := v1.Cross(v2)
	fmt.Println("Cross product:", cross) // [-3 6 -3]
}

Προσαρμοσμένο σκίασμα και υλικά μέσω Go

Μπορείτε να ορίσετε πώς σκιαγραφούνται τα αντικείμενα χρησιμοποιώντας προσαρμόσιμους shaders μέσα σε εφαρμογές Go. Η ανοιχτού κώδικα βιβλιοθήκη FauxGL παρέχει ένα ευέλικτο σύστημα για τη συγγραφή της δικής σας λογικής σκίασης — επιτρέποντάς σας να ελέγχετε το χρώμα, το φωτισμό και ακόμη και προσαρμοσμένα εφέ σε επίπεδο pixel. Το παρακάτω δείχνει πώς οι προγραμματιστές λογισμικού μπορούν να εκτελέσουν απλή επίπεδη σκίαση μέσα σε εφαρμογές Go.

Πώς να εκτελέσετε απλή επίπεδη σκίαση μέσα σε εφαρμογές Go;

shader := func(vertex fauxgl.Vertex) fauxgl.Color {
    normal := vertex.Normal.Normalize()
    light := fauxgl.Vector{1, 1, 1}.Normalize()
    intensity := normal.Dot(light)
    baseColor := fauxgl.HexColor(0x3498db) // Light blue color
    return baseColor.MulScalar(intensity)
}

context.Shader = shader
context.DrawMesh(mesh)

 Ελληνικά