Безкоштовна Go бібліотека для 3D рендерингу та трансформації
Провідна відкрита Go 3D графічна бібліотека для роботи з 3D сітками, користувацьким затіненням та матеріалами, 3D трансформаціями, багатопотоковим рендерингом, згладжуванням та іншим.
Що таке бібліотека FauxGL?
FauxGL — це інноваційна бібліотека Go 3D з відкритим кодом, створена Майклом Фоглменом, що пропонує чисте Go‑програмне 3D‑рендеринг без зовнішніх залежностей. Цей легкий, але потужний інструментарій ідеальний для розробників, які шукають безкоштовний Go 3D API для портативних графічних рішень. Він підтримує основні функції, такі як трансформації вершин, імпорт та маніпуляція 3D‑мешами, кастомне затінення, робота з матеріалами, перспективний та камерний контроль, растеризація трикутників, інтерполяція кольору, текстурування, рендеринг каркасу, буфер глибини та видалення прихованих поверхонь. Розробники програмного забезпечення можуть легко створювати STL‑3D‑малюнки, додавати секції до 3D‑файлів і точно рендерити 3D‑діаграми, що робить його універсальним вибором для проєктів, які вимагають високого контролю над конвеєром рендерингу.
На відміну від рішень, що залежать від GPU, таких як OpenGL або DirectX, FauxGL працює повністю на CPU, що робить його ідеальним для середовищ без апаратного прискорення або коли потрібен прямий контроль над рендерингом. Хоча він не призначений для ігор з високою частотою кадрів, він відмінно підходить для офлайн-рендерингу, тестування алгоритмів, освітніх цілей та створення візуалізацій. FauxGL може працювати з 3D‑файлами OBJ і FBX, завантажувати формати такі як STL, PLY і 3DS, а також конвертувати 3D‑файли у PDF при інтеграції в ширші робочі процеси. Він також пропонує вбудовані функції для створення площин, сфер, кубів, циліндрів і конусів, що дозволяє швидко рендерити сутності 3D‑файлів та застосовувати трансформації до 3D‑діаграм. FauxGL є чистою, виразною демонстрацією можливостей Go у CPU‑базованому 3D‑графічному рендерингу.
Початок роботи з FauxGL
Рекомендований спосіб встановлення FauxGL — використання GitHub. Будь ласка, скористайтеся наступною командою для плавної інсталяції.
Встановіть API FauxGL за допомогою команди Get
go get github.com/fogleman/fauxgl Ви можете завантажити скомпільовану спільну бібліотеку з репозиторію Github.
Чисте рендеринг на процесорі через Go API
Відкрита бібліотека FauxGL підтримує чисте рендеринг на процесорі (CPU) і зовсім не використовує GPU. Кожен трикутник, кожен піксель і кожне перетворення обчислюються виключно на процесорі. Це робить її ідеальним вибором для безголових середовищ рендерингу (наприклад, серверів) або простих завдань графічної обробки без залежності від 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
Ви можете визначати, як об’єкти затінюються, використовуючи налаштовувані шейдери у Go‑додатках. Відкрита бібліотека FauxGL пропонує гнучку систему для написання власної логіки затінення — дозволяючи керувати кольором, освітленням та навіть кастомними ефектами на рівні пікселя. Нижче показано, як розробники програмного забезпечення можуть виконувати просте плоске затінення у 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)