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

Libreria Go gratuita per rendering e trasformazione 3D

Principale libreria grafica Go 3D open source per lavorare con mesh 3D, shading e materiali personalizzati, trasformazioni 3D, rendering multithread, anti-aliasing e così via.

Che cos'è la libreria FauxGL?

FauxGL è una innovativa libreria 3D open source per Go di Michael Fogleman, che offre rendering 3D basato su software puro Go, senza dipendenze esterne. Questo toolkit leggero ma potente è ideale per gli sviluppatori che cercano un'API 3D gratuita per Go per soluzioni grafiche portabili. Supporta funzionalità essenziali come trasformazioni dei vertici, importazione e manipolazione di mesh 3D, shading personalizzato, gestione dei materiali, controllo della prospettiva e della telecamera, rasterizzazione dei triangoli, interpolazione dei colori, mappatura delle texture, rendering wireframe, buffering della profondità e rimozione delle superfici nascoste. Gli sviluppatori software possono facilmente creare disegni 3D STL, aggiungere sezioni a file 3D e gestire il rendering di diagrammi 3D con precisione, rendendolo una scelta versatile per progetti che richiedono un alto controllo sul pipeline di rendering.

A differenza delle soluzioni dipendenti dalla GPU come OpenGL o DirectX, FauxGL elabora interamente sulla CPU, rendendolo perfetto per ambienti senza accelerazione hardware o dove è necessario un controllo diretto del rendering. Sebbene non sia progettato per giochi ad alta frequenza di fotogrammi, eccelle nel rendering offline, nel test di algoritmi, nell'uso educativo e nella generazione di visualizzazioni. FauxGL può lavorare con file 3D OBJ e FBX, caricare formati come STL, PLY e 3DS, e persino convertire file 3D in PDF quando integrato in flussi di lavoro più ampi. Offre inoltre funzioni integrate per creare piani, sfere, cubi, cilindri e coni, consentendo un rapido rendering delle entità dei file 3D e l'applicazione di trasformazioni ai diagrammi 3D. FauxGL si presenta come una dimostrazione pulita ed espressiva delle capacità di Go nel rendering grafico 3D basato su CPU.

Previous Next

Iniziare con FauxGL

Il modo consigliato per installare FauxGL è utilizzare GitHub. Si prega di usare il comando seguente per un'installazione senza problemi.

Installa l'API FauxGL tramite il comando Get

go get github.com/fogleman/fauxgl 

Puoi scaricare la libreria condivisa compilata dal repository GitHub.

Rendering puro basato su CPU tramite API Go

La libreria open source FauxGL supporta il rendering puro basato su CPU e non utilizza affatto la GPU. Ogni triangolo, ogni pixel e ogni trasformazione sono calcolati interamente sulla CPU. Questo la rende una scelta perfetta per ambienti di rendering senza interfaccia grafica (come i server) o per compiti semplici di elaborazione grafica senza dipendenza dalla GPU. Il seguente script di codice mostra come impostare una scena all'interno delle applicazioni Go.

Come configurare una scena per il rendering puro basato su CPU tramite la libreria 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!
}

Caricamento e trasformazione di modelli 3D

La libreria open source FauxGL ha fornito un supporto completo per il caricamento e la gestione di modelli 3D all'interno delle applicazioni Go. Una volta caricati, è possibile applicare facilmente trasformazioni come scalatura, rotazione, ridimensionamento e traslazione. Ecco un semplice esempio che dimostra come gli sviluppatori software possano caricare formati Wavefront OBJ, uno dei formati di file 3D più comuni, e applicare trasformazioni utilizzando la libreria Go.

Come caricare un modello 3D e applicare trasformazioni tramite la libreria 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)

Operazioni vettoriali tramite libreria Go

La libreria MathGL offre un ampio supporto per la matematica dei vettori e delle matrici, includendo operazioni per vettori e matrici 2D, 3D e 4D. Queste sono essenziali per gestire posizioni, direzioni, velocità e altri dati spaziali. Fornisce supporto per Add, Sub, Dot, Cross, Normalize, ecc. e tipi di precisione multipla (mgl32 per float32, mgl64 per float64). Ecco un semplice esempio che dimostra come gli sviluppatori software possano eseguire diverse operazioni sui vettori all'interno delle loro applicazioni Go.

Come eseguire operazioni vettoriali tramite la libreria 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]
}

Ombreggiatura e materiali personalizzati tramite Go

Puoi definire come gli oggetti vengono ombreggiati utilizzando shader personalizzabili all'interno delle applicazioni Go. La libreria open source FauxGL offre un sistema flessibile per scrivere la tua logica di ombreggiatura — consentendoti di controllare colore, illuminazione e persino effetti personalizzati a livello di pixel. Quanto segue mostra come gli sviluppatori software possano eseguire una semplice ombreggiatura piatta all'interno delle applicazioni Go.

Come eseguire un semplice shading piatto all'interno delle app 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)

 Italiano