1. สินค้า
  2.   3D
  3.   GO
  4.   FauxGL
 
  

ไลบรารี Go ฟรีสำหรับการเรนเดอร์และการแปลง 3D

ไลบรารีกราฟิก Go 3D แบบโอเพ่นซอร์สชั้นนำสำหรับการทำงานกับเมช 3D, การเชดดิ้งและวัสดุแบบกำหนดเอง, การแปลง 3D, การเรนเดอร์แบบหลายเธรด, การตัดขอบหยักและอื่น ๆ.

FauxGL Library คืออะไร?

FauxGL เป็นไลบรารี 3D แบบเปิดต้นฉบับสำหรับ Go ที่พัฒนาโดย Michael Fogleman ซึ่งนำเสนอการเรนเดอร์ 3D แบบซอฟต์แวร์ด้วย Go อย่างเดียวโดยไม่มีการพึ่งพาไลบรารีภายนอก ชุดเครื่องมือที่มีน้ำหนักเบาแต่ทรงพลังนี้เหมาะสำหรับนักพัฒนาที่กำลังมองหา 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 ในการเรนเดอร์กราฟิก 3D บน CPU

Previous Next

เริ่มต้นใช้งาน FauxGL

วิธีแนะนำในการติดตั้ง FauxGL คือการใช้ GitHub โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น

ติดตั้ง FauxGL API ผ่านคำสั่ง Get

go get github.com/fogleman/fauxgl 

คุณสามารถดาวน์โหลดไลบรารีที่คอมไพล์แล้วจากที่เก็บ Github

การเรนเดอร์แบบใช้ CPU อย่างเดียวผ่าน Go API

ไลบรารีโอเพ่นซอร์ส FauxGL รองรับการเรนเดอร์แบบใช้ CPU อย่างเดียวและไม่ใช้ GPU เลย ทุกสามเหลี่ยม ทุกพิกเซล และการแปลงทุกอย่างคำนวณโดยใช้ CPU อย่างเต็มที่ สิ่งนี้ทำให้เป็นตัวเลือกที่สมบูรณ์แบบสำหรับสภาพแวดล้อมการเรนเดอร์แบบไม่มีหัว (เช่น เซิร์ฟเวอร์) หรืองานประมวลผลกราฟิกง่าย ๆ ที่ไม่ต้องพึ่งพา GPU สคริปต์โค้ดต่อไปนี้แสดงวิธีการตั้งค่าฉากภายในแอปพลิเคชัน Go

วิธีตั้งค่าซีนสำหรับการเรนเดอร์แบบใช้ CPU อย่างเดียวผ่าน Go Library?

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 ได้ให้การสนับสนุนเต็มรูปแบบสำหรับการโหลดและทำงานกับโมเดล 3 มิติภายในแอปพลิเคชัน Go เมื่อโหลดเสร็จแล้ว คุณสามารถนำการแปลงต่าง ๆ เช่น การสเกล การหมุน การปรับขนาด และการย้ายตำแหน่งได้อย่างง่ายดาย นี่คือตัวอย่างง่าย ๆ ที่แสดงให้เห็นว่านักพัฒนาซอฟต์แวร์สามารถโหลดรูปแบบ Wavefront OBJ ซึ่งเป็นหนึ่งในรูปแบบไฟล์โมเดล 3 มิติที่พบบ่อยที่สุด และนำการแปลงไปใช้กับมันโดยใช้ไลบรารี Go

วิธีโหลดโมเดล 3D และใช้การแปลงผ่าน Go Library?

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 Library?

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 ได้อย่างไร

วิธีทำการแรเงาแบบ Flat อย่างง่ายภายในแอป 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)

 ไทย