1. Продукти
  2.   3D
  3.   GO
  4.   FauxGL
 
  

Безплатна 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 графично рендериране.

Previous Next

Започване с FauxGL

Препоръчителният начин за инсталиране на FauxGL е чрез GitHub. Моля, използвайте следната команда за гладка инсталация.

Инсталирайте FauxGL API чрез команда Get

go get github.com/fogleman/fauxgl 

Можете да изтеглите компилираната споделена библиотека от Github хранилището.

Чисто CPU-базирано рендериране чрез Go API

Отвореният код на библиотеката FauxGL поддържа чисто CPU-базирано рендериране и изобщо не използва GPU. Всеки триъгълник, всеки пиксел и всяка трансформация се изчисляват изцяло от CPU. Това я прави перфектен избор за безглава (headless) рендеринг среди (като сървъри) или прости задачи за графична обработка без зависимост от 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)

 Български