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

Biblioteca Go Gratuita para Renderização e Transformação 3D

Principal Biblioteca Gráfica 3D Open Source em Go para trabalhar com malhas 3D, sombreamento e materiais personalizados, transformações 3D, renderização multithread, anti-aliasing e etc.

O que é a Biblioteca FauxGL?

FauxGL é uma inovadora biblioteca Go 3D de código aberto criada por Michael Fogleman, oferecendo renderização 3D baseada em software puro Go, sem dependências externas. Este kit de ferramentas leve, porém poderoso, é ideal para desenvolvedores que buscam uma API Go 3D gratuita para soluções gráficas portáteis. Ele suporta recursos essenciais como transformações de vértices, importação e manipulação de malhas 3D, sombreamento personalizado, gerenciamento de materiais, controle de perspectiva e câmera, rasterização de triângulos, interpolação de cores, mapeamento de texturas, renderização em wireframe, buffer de profundidade e remoção de superfícies ocultas. Desenvolvedores de software podem criar facilmente desenhos 3D STL, adicionar seções a arquivos 3D e lidar com a renderização de diagramas 3D com precisão, tornando-o uma escolha versátil para projetos que exigem alto controle sobre o pipeline de renderização.

Ao contrário de soluções dependentes de GPU como OpenGL ou DirectX, o FauxGL processa inteiramente na CPU, tornando‑o perfeito para ambientes sem aceleração de hardware ou onde o controle direto de renderização é necessário. Embora não seja projetado para jogos de alta taxa de quadros, ele se destaca em renderização offline, teste de algoritmos, uso educacional e geração de visualizações. O FauxGL pode trabalhar com OBJ e FBX 3D, carregar formatos como STL, PLY e 3DS, e até converter arquivos 3D para PDF quando integrado a fluxos de trabalho mais amplos. Ele também oferece funções integradas para criar planos, esferas, cubos, cilindros e cones, permitindo renderização rápida de entidades de arquivos 3D e aplicação de transformações a diagramas 3D. O FauxGL se apresenta como uma demonstração limpa e expressiva das capacidades do Go na renderização gráfica 3D baseada em CPU.

Previous Next

Começando com o FauxGL

A forma recomendada de instalar o FauxGL é usando o GitHub. Por favor, use o comando a seguir para uma instalação tranquila.

Instale a API FauxGL via comando Get

go get github.com/fogleman/fauxgl 

Você pode baixar a biblioteca compartilhada compilada do repositório GitHub.

Renderização pura baseada em CPU via API Go

A biblioteca open source FauxGL suporta renderização puramente baseada em CPU e não usa a GPU de forma alguma. Cada triângulo, cada pixel e cada transformação são computados puramente na CPU. Isso a torna uma escolha perfeita para ambientes de renderização sem interface gráfica (como servidores) ou tarefas simples de processamento gráfico sem dependência de GPU. O script de código a seguir mostra como configurar uma cena dentro de aplicações Go.

Como configurar uma cena para renderização puramente baseada em CPU via 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!
}

Carregamento e Transformação de Modelos 3D

A biblioteca open source FauxGL ofereceu suporte completo para carregar e trabalhar com modelos 3D dentro de aplicações Go. Uma vez carregado, você pode aplicar facilmente transformações como escala, rotação, redimensionamento e translação. Aqui está um exemplo simples que demonstra como desenvolvedores de software podem carregar formatos Wavefront OBJ, um dos formatos de arquivo de modelo 3D mais comuns, e aplicar transformações a ele usando a biblioteca Go.

Como carregar um modelo 3D e aplicar transformações via 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ções Vetoriais via Biblioteca Go

A biblioteca MathGL oferece amplo suporte para matemática de vetores e matrizes, incluindo operações para vetores e matrizes 2D, 3D e 4D. Esses recursos são essenciais para lidar com posições, direções, velocidades e outros dados espaciais. Ela fornece suporte para Add, Sub, Dot, Cross, Normalize, etc., e tipos de precisão múltipla (mgl32 para float32, mgl64 para float64). Aqui está um exemplo simples que demonstra como desenvolvedores de software podem executar diferentes operações de vetor dentro de suas aplicações Go.

Como executar operações vetoriais via 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]
}

Sombras e Materiais Personalizados via Go

Você pode definir como os objetos são sombreados usando shaders personalizáveis dentro de aplicações Go. A biblioteca de código aberto FauxGL oferece um sistema flexível para escrever sua própria lógica de sombreamento — permitindo controlar cor, iluminação e até efeitos personalizados ao nível do pixel. O seguinte demonstra como desenvolvedores de software podem realizar sombreamento plano simples dentro de aplicações Go.

Como realizar sombreamento plano simples em aplicativos 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)

 Português