1. Produse
  2.   3D
  3.   GO
  4.   FauxGL
 
  

Bibliotecă Go gratuită pentru Randare și Transformare 3D

Principala bibliotecă grafică Go 3D Open Source pentru lucrul cu rețele 3D, umbrire și materiale personalizate, transformări 3D, randare multithread, anti-aliasing și altele.

Ce este Biblioteca FauxGL?

FauxGL este o bibliotecă inovatoare open source Go 3D, creată de Michael Fogleman, care oferă redare 3D bazată pe software pur Go, fără dependențe externe. Acest set de instrumente ușor, dar puternic, este ideal pentru dezvoltatori care caută un API gratuit Go 3D pentru soluții grafice portabile. Suportă funcționalități esențiale precum transformările vârfurilor, importul și manipularea mesh-urilor 3D, umbrire personalizată, gestionarea materialelor, perspectivă și controlul camerei, rasterizarea triunghiurilor, interpolarea culorilor, maparea texturilor, redarea în mod wireframe, tamponarea adâncimii și eliminarea suprafețelor ascunse. Dezvoltatorii de software pot crea cu ușurință desene STL 3D, adăuga secțiuni la fișierele 3D și gestiona redarea diagramelor 3D cu precizie, făcându-l o alegere versatilă pentru proiecte care necesită un control ridicat asupra pipeline-ului de redare.

Spre deosebire de soluțiile dependente de GPU, cum ar fi OpenGL sau DirectX, FauxGL procesează complet pe CPU, făcându-l perfect pentru medii fără accelerare hardware sau unde este necesar control direct al redării. Deși nu este conceput pentru jocuri cu rate înalte de cadre, excelează în redarea offline, testarea algoritmilor, utilizarea educațională și generarea de vizualizări. FauxGL poate lucra cu fișiere 3D OBJ și FBX, poate încărca formate precum STL, PLY și 3DS și chiar poate converti fișiere 3D în PDF atunci când este integrat în fluxuri de lucru mai largi. De asemenea, oferă funcții încorporate pentru crearea de plane, sfere, cuburi, cilindri și conuri, permițând redarea rapidă a entităților din fișiere 3D și aplicarea de transformări asupra diagramelor 3D. FauxGL reprezintă o demonstrație curată și expresivă a capacităților limbajului Go în redarea grafică 3D bazată pe CPU.

Previous Next

Începerea lucrului cu FauxGL

Calea recomandată pentru instalarea FauxGL este prin GitHub. Vă rugăm să utilizați comanda următoare pentru o instalare fără probleme.

Instalați API-ul FauxGL prin comanda Get

go get github.com/fogleman/fauxgl 

Puteți descărca biblioteca partajată compilată din depozitul Github.

Randare pură bazată pe CPU prin API-ul Go

Biblioteca open source FauxGL suportă redarea pur bazată pe CPU și nu folosește deloc GPU-ul. Fiecare triunghi, fiecare pixel și fiecare transformare sunt calculate exclusiv pe CPU. Aceasta o face o alegere perfectă pentru medii de redare fără interfață grafică (cum ar fi serverele) sau sarcini simple de procesare grafică fără dependență de GPU. Scriptul de cod de mai jos arată cum să configurezi o scenă în aplicațiile Go.

Cum să configurați o scenă pentru redare pur CPU prin biblioteca 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!
}

Încărcarea și transformarea modelelor 3D

Biblioteca open source FauxGL a oferit suport complet pentru încărcarea și lucrul cu modele 3D în aplicațiile Go. Odată încărcate, poți aplica cu ușurință transformări precum scalarea, rotația, redimensionarea și translația. Iată un exemplu simplu care demonstrează cum dezvoltatorii de software pot încărca formatele Wavefront OBJ, unul dintre cele mai comune formate de fișiere pentru modele 3D, și pot aplica transformări asupra lor utilizând biblioteca Go.

Cum să încărcați un model 3D și să aplicați transformări prin biblioteca 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)

Operații cu vectori prin biblioteca Go

Biblioteca MathGL oferă suport extins pentru matematica vectorilor și matricelor, inclusiv operații pentru vectori și matrici 2D, 3D și 4D. Acestea sunt esențiale pentru gestionarea pozițiilor, direcțiilor, vitezelor și altor date spațiale. Oferă suport pentru Add, Sub, Dot, Cross, Normalize etc. și tipuri de precizie multiplă (mgl32 pentru float32, mgl64 pentru float64). Iată un exemplu simplu care demonstrează cum dezvoltatorii de software pot efectua diferite operații cu vectori în aplicațiile lor Go.

Cum să efectuați operații cu vectori prin biblioteca 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]
}

Umbrire și materiale personalizate prin Go

Puteți defini modul în care obiectele sunt umbrite utilizând shader-e personalizabile în aplicațiile Go. Biblioteca open source FauxGL oferă un sistem flexibil pentru scrierea propriei logici de umbrire — permițându-vă să controlați culoarea, iluminarea și chiar efecte personalizate la nivel de pixel. Următorul exemplu arată cum dezvoltatorii de software pot realiza o umbrire simplă plată în aplicațiile Go.

Cum să realizați umbrire simplă plată în aplicațiile 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)

 Română