مكتبة Go مجانية للتصيير والتحويل ثلاثي الأبعاد

المكتبة الرائدة المفتوحة المصدر لرسومات Go ثلاثية الأبعاد للعمل مع شبكات ثلاثية الأبعاد، التظليل والمواد المخصصة، التحويلات ثلاثية الأبعاد، التصيير متعدد الخيوط، مكافحة التعرجات وغيرها.

ما هي مكتبة FauxGL؟

FauxGL هي مكتبة Go ثلاثية الأبعاد مفتوحة المصدر ومبتكرة من تطوير Michael Fogleman، تقدم تصييرًا ثلاثيًا أبعادًا قائمًا على البرمجيات بالكامل بلغة Go دون أي تبعيات خارجية. هذه الأداة الخفيفة الوزن لكنها قوية مثالية للمطورين الذين يبحثون عن واجهة برمجة تطبيقات Go ثلاثية الأبعاد مجانية لحلول رسومية محمولة. تدعم ميزات أساسية مثل تحويلات الرؤوس، استيراد وتعديل الشبكات ثلاثية الأبعاد، التظليل المخصص، معالجة المواد، التحكم في المنظور والكاميرا، تمثيل المثلثات، استيفاء الألوان، رسم الخرائط النسيجية، تصيير الإطار السلكي، تخزين العمق، وإزالة الأسطح المخفية. يمكن لمطوري البرمجيات بسهولة إنشاء رسومات STL ثلاثية الأبعاد، إضافة أقسام إلى ملفات ثلاثية الأبعاد، والتعامل مع تصيير المخططات ثلاثية الأبعاد بدقة، مما يجعلها خيارًا متعدد الاستخدامات للمشاريع التي تتطلب تحكمًا عاليًا في خط أنابيب التصيير.

على عكس الحلول المعتمدة على وحدة معالجة الرسومات مثل OpenGL أو DirectX، يقوم FauxGL بالمعالجة بالكامل على وحدة المعالجة المركزية، مما يجعله مثالياً للبيئات التي لا تتوفر فيها تسريع عتادي أو حيث يلزم التحكم المباشر في العرض. رغم أنه غير مصمم للألعاب ذات معدلات الإطارات العالية، إلا أنه يتفوق في العرض غير المتصل بالإنترنت، اختبار الخوارزميات، الاستخدام التعليمي، وتوليد التصورات. يمكن لـ FauxGL العمل مع ملفات 3D مثل OBJ و FBX، وتحميل صيغ مثل STL و PLY و 3DS، وحتى تحويل ملفات 3D إلى PDF عند دمجه في سير عمل أوسع. كما يوفر وظائف مدمجة لإنشاء طائرات، كرات، مكعبات، أسطوانات، ومخاريط، مما يسمح بعرض سريع لكيانات ملفات 3D وتطبيق التحولات على مخططات 3D. يمثل FauxGL عرضاً نظيفاً ومعبرًا لقدرات لغة Go في عرض الرسومات ثلاثية الأبعاد المعتمدة على وحدة المعالجة المركزية.

Previous Next

البدء مع FauxGL

الطريقة الموصى بها لتثبيت FauxGL هي عبر GitHub. يرجى استخدام الأمر التالي لتثبيت سلس.

تثبيت واجهة برمجة تطبيقات FauxGL عبر أمر Get

go get github.com/fogleman/fauxgl 

يمكنك تنزيل المكتبة المشتركة المجمعة من مستودع Github.

تصيير خالص قائم على وحدة المعالجة المركزية عبر واجهة برمجة تطبيقات Go

مكتبة FauxGL المفتوحة المصدر تدعم التصيير القائم بالكامل على وحدة المعالجة المركزية ولا تستخدم وحدة معالجة الرسومات على الإطلاق. كل مثلث، كل بكسل، وكل تحويل يتم حسابه بالكامل على وحدة المعالجة المركزية. هذا يجعلها خيارًا مثاليًا لبيئات التصيير بدون رأس (مثل الخوادم) أو مهام معالجة الرسومات البسيطة دون الاعتماد على وحدة معالجة الرسومات. يوضح البرنامج النصي التالي كيفية إعداد مشهد داخل تطبيقات Go.

كيف تقوم بإعداد مشهد للتصيير القائم على وحدة المعالجة المركزية فقط عبر مكتبة 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!
}

تحميل وتحويل نماذج ثلاثية الأبعاد

مكتبة FauxGL المفتوحة المصدر قدمت دعمًا كاملاً لتحميل والعمل مع نماذج ثلاثية الأبعاد داخل تطبيقات Go. بمجرد التحميل، يمكنك بسهولة تطبيق التحويلات مثل التحجيم، الدوران، تغيير الحجم، والترجمة. إليك مثالًا بسيطًا يوضح كيف يمكن لمطوري البرمجيات تحميل صيغ Wavefront OBJ، واحدة من أكثر صيغ ملفات النماذج ثلاثية الأبعاد شيوعًا، وتطبيق التحويل عليها باستخدام مكتبة Go.

كيف تقوم بتحميل نموذج ثلاثي الأبعاد وتطبيق التحويلات عبر مكتبة 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)

 عربي