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

Nemokama Go biblioteka 3D atvaizdavimui ir transformacijai

Vyriausia atviro kodo Go 3D grafikos biblioteka darbui su 3D tinklais, individualiu apšvietimu ir medžiagomis, 3D transformacijomis, daugiagijiniu atvaizdavimu, anti‑aliasingu ir kt.

Kas yra FauxGL biblioteka?

FauxGL yra novatoriška atviro kodo Go 3D biblioteka, sukurta Michael Fogleman, siūlanti gryną Go, programinės įrangos pagrindu veikiančią 3D vaizdavimą be išorinių priklausomybių. Ši lengva, bet galinga priemonė yra ideali kūrėjams, ieškantiems nemokamos Go 3D API nešiojamiems grafikos sprendimams. Ji palaiko esmines funkcijas, tokias kaip viršūnių transformacijos, 3D tinklų importavimas ir manipuliavimas, pasirinktinis šešėlinimas, medžiagų tvarkymas, perspektyvos ir kameros valdymas, trikampių rasterizacija, spalvų interpolacija, tekstūrų taikymas, vielų rėmo (wireframe) vaizdavimas, gylio buferis ir paslėptų paviršių šalinimas. Programinės įrangos kūrėjai gali lengvai kurti STL 3D brėžinius, pridėti sekcijas prie 3D failų ir tiksliai tvarkyti 3D diagramų vaizdavimą, todėl tai yra universalus pasirinkimas projektams, reikalaujantiems didelės kontrolės vaizdavimo konvejerio.

Skirtingai nuo GPU priklausomų sprendimų, tokių kaip OpenGL ar DirectX, FauxGL veikia visiškai CPU, todėl jis puikiai tinka aplinkoms be aparatūrinio spartinimo arba kai reikalinga tiesioginė vaizdavimo kontrolė. Nors nėra sukurtas aukšto kadrų dažnio žaidimams, jis puikiai tinka neinternetiniam (offline) vaizdavimui, algoritmų testavimui, švietimo tikslams ir vizualizacijos generavimui. FauxGL gali dirbti su 3D OBJ ir FBX, įkelti formatus, tokius kaip STL, PLY ir 3DS, ir net konvertuoti 3D failus į PDF, kai integruojamas į platesnius darbo srautus. Jis taip pat siūlo įmontuotas funkcijas plokštumų, sferų, kubų, cilindrų ir konų kūrimui, leidžiančias greitai atvaizduoti 3D failų objektus ir taikyti transformacijas 3D diagramoms. FauxGL yra švarus, išraiškingas Go galimybių demonstravimas CPU pagrindu vykstančiame 3D grafikos vaizdavime.

Previous Next

Pradžia su FauxGL

Rekomenduojamas būdas įdiegti FauxGL yra naudoti GitHub. Prašome naudoti šią komandą sklandžiam įdiegimui.

Įdiekite FauxGL API per Get komandą

go get github.com/fogleman/fauxgl 

Galite atsisiųsti sukompiliuotą bendrinamą biblioteką iš GitHub saugyklos.

Grynas CPU pagrindu veikiantis atvaizdavimas per Go API

Atviro kodo FauxGL biblioteka palaiko grynąjį CPU pagrindu vykdomą atvaizdavimą ir visai nenaudoja GPU. Kiekvienas trikampis, kiekvienas pikselis ir kiekviena transformacija apskaičiuojama tik CPU. Tai daro ją puikiu pasirinkimu begalvėms (headless) atvaizdavimo aplinkoms (pvz., serveriams) arba paprastoms grafikos apdorojimo užduotims be GPU priklausomybės. Žemiau pateiktas kodo skriptas rodo, kaip nustatyti sceną Go programose.

Kaip nustatyti sceną grynam CPU pagrindu vykdomam vaizdavimui naudojant Go biblioteką?

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 modelio įkėlimas ir transformavimas

Atviro kodo FauxGL biblioteka suteikė visapusišką palaikymą 3D modelių įkėlimui ir naudojimui Go programose. Įkėlus, galite lengvai taikyti transformacijas, tokias kaip mastelio keitimas, sukimas, dydžio keitimas ir perkėlimas. Čia pateiktas paprastas pavyzdys, kuris parodo, kaip programinės įrangos kūrėjai gali įkelti Wavefront OBJ formatą, vieną iš populiariausių 3D modelių failų formatų, ir taikyti jam transformacijas naudojant Go biblioteką.

Kaip įkelti 3D modelį ir pritaikyti transformacijas naudojant Go biblioteką?

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)

Vektorų operacijos per Go biblioteką

MathGL biblioteka suteikia plačią vektorų ir matricų matematikos palaikymą, įskaitant operacijas su 2D, 3D ir 4D vektoriais bei matricomis. Tai būtina tvarkant pozicijas, kryptis, greičius ir kitus erdvinės informacijos duomenis. Ji palaiko operacijas Add, Sub, Dot, Cross, Normalize ir kt., bei kelias tikslumo rūšis (mgl32 – float32, mgl64 – float64). Štai paprastas pavyzdys, demonstruojantis, kaip programinės įrangos kūrėjai gali atlikti įvairias vektorių operacijas savo Go programose.

Kaip atlikti vektorių operacijas naudojant Go biblioteką?

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]
}

Individualizuotas šešėliavimas ir medžiagos per Go

Galite apibrėžti, kaip objektai bus apšviesti, naudodami pritaikomas šviesos šablonus (shaders) Go programose. Atviro kodo biblioteka FauxGL suteikia lankstią sistemą rašyti savo apšvietimo logiką – leidžiančią valdyti spalvą, apšvietimą ir net pritaikytus efektus pikselio lygyje. Toliau parodyta, kaip programinės įrangos kūrėjai gali atlikti paprastą plokščią apšvietimą Go programose.

Kaip atlikti paprastą plokščią šešėlinimą Go programose?

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)

 Lietuvių