مكتبة Three.js

Three.js هي مكتبة JavaScript تستخدم مع متصفحات الويب وواجهة برمجة تطبيقات (API) وتُستخدم لإنشاء رسومات كمبيوتر متحركة ثلاثية الأبعاد وعرضها في مستعرض ويب باستخدام WebGL . تمت استضافة الكود الأصلي في مستودع على GitHub .

نظرة عامة 
تسمح Three.js بإنشاء رسوم متحركة ثلاثية الأبعاد يتم تسريعها باستخدام وحدة المعالجة الرسومية (GPU) باستخدام لغة JavaScript كجزء من موقع ويب دون الاعتماد على المكونات الإضافية للمتصفح . هذا ممكن بسبب ظهور تقنية الـ WebGL ،  وهو واجهة برمجة تطبيقات ( API ) رسومية منخفضة المستوى تم إنشاؤها خصيصًا للويب.

تتيح المكتبات عالية المستوى مثل Three.js أو GLGE و SceneJS و PhiloGL وغيرها الكثير إمكانية تأليف رسوم متحركة معقدة ثلاثية الأبعاد للكمبيوتر لعرضها في المتصفح دون بذل الجهد المطلوب لتطبيق تقليدي مستقل أو إضافة للمتصفح.

التاريخ 
تم إصدار Three.js لأول مرة بواسطة Ricardo Cabello على GitHub في أبريل 2010. يمكن إرجاع أصول المكتبة إلى مشاركته في الديموسين في أوائل القرن الحادي والعشرين. تم تطوير الكود في الأصل بلغة ActionScript التي يستخدمها Adobe Flash ، ثم تم نقله لاحقًا إلى JavaScript في عام 2009. في ذهن Cabello ، كانت هناك نقطتان قويتان بررتا التحول عن ActionScript: أولاً ، قدمت JavaScript استقلالية أكبر للنظام الأساسي. ثانيًا ، لن تحتاج التطبيقات المكتوبة بلغة JavaScript إلى أن يجمعها المطور مسبقًا ، على عكس تطبيقات Flash.

تشمل المساهمات الإضافية من Cabello تصميم API ، و CanvasRenderer ، و SVGRenderer ، كونها مسؤولة عن دمج الـ Commits من قبل المساهمين المختلفين في المشروع.

مع ظهور WebGL ، تمكن Paul Brunt من تنفيذ تقنية العرض الجديدة بسهولة تامة حيث تم تصميم Three.js باستخدام كود العرض كـ Module وليس في جوهره. بدأ Branislav Uličný ، أحد المساهمين الأوائل ، بـ Three.js في عام 2010 بعد أن نشر عددًا من عروض WebGL التوضيحية على موقعه الخاص. لقد أراد إمكانات عارض WebGL في Three.js لتتجاوز قدرات CanvasRenderer أو SVGRenderer. تشمل مساهماته الرئيسية بشكل عام المواد والتظليل والمعالجة اللاحقة.

بعد فترة وجيزة من تقديم WebGL 1.0 على Firefox 4 في مارس 2011 ، انضم Joshua Koo. قام ببناء أول عرض توضيحي لـ Three.js للنص ثلاثي الأبعاد في سبتمبر 2011. غالبًا ما تتعلق مساهماته بتوليد الهندسة.

لدى Three.js أكثر من 1500 مساهم على GitHub.

الميزات 
يتضمن Three.js الميزات التالية:

 التأثيرات.
 المشاهد: إضافة وإزالة الكائنات في وقت التشغيل ؛ ضباب
 الكاميرات: المنظور والحركات. وحدات التحكم: كرة التتبع و FPS والمسار والمزيد
 الرسوم المتحركة: التركيبات ، الحركية إلى الأمام ، الحركية العكسية ، التحويل ، والإطار الرئيسي
 الأضواء: الأضواء المحيطة ، والاتجاه ، والنقطة ، والنقطة ؛ الظلال: يلقي ويستقبل
 المواد: لامبرت وفونج والتظليل الناعم والقوام والمزيد
 Shaders: الوصول إلى إمكانات OpenGL Shading Language ( GLSL ) الكاملة: توهج العدسة ، وتمرير العمق ، ومكتبة ما بعد المعالجة الشاملة
 الكائنات: الشبكات والجزيئات والعفاريت والخطوط والشرائط والعظام والمزيد - كل ذلك بمستوى التفاصيل
 الهندسة: المستوى ، المكعب ، الكرة ، الحلقة ، النص ثلاثي الأبعاد ، والمزيد ؛ المعدلات: مخرطة ، بثق ، وأنبوب
 برامج تحميل البيانات: ثنائي ، وصورة ، و JSON ، ومشهد
 الأدوات المساعدة: مجموعة كاملة من وظائف الوقت والرياضيات ثلاثية الأبعاد بما في ذلك frustum ، و matrix ، و quaternion ، و UVs ، والمزيد
 التصدير والاستيراد: أدوات مساعدة لإنشاء ملفات JSON متوافقة مع Three.js من الداخل: Blender و openCTM و FBX و Max و OBJ
 الدعم: وثائق API قيد الإنشاء. المنتدى العام وويكي يعملان بشكل كامل.
 أمثلة: أكثر من 150 ملفًا من أمثلة الترميز بالإضافة إلى الخطوط والنماذج والأنسجة والأصوات وملفات الدعم الأخرى
 تصحيح الأخطاء: Stats.js ،  WebGL Inspector ،  Three.js Inspector 
 الواقع الافتراضي والواقع المعزز عبر WebXR 

يعمل Three.js في جميع المتصفحات التي يدعمها WebGL 1.0.

يتم توفير Three.js بموجب ترخيص MIT .

أنظر أيضا 

 تجارب جوجل كروم
 قائمة أطر عمل WebGL
 إطار عمل جافا سكريبت
 مكتبة جافا سكريبت

مراجع

قراءة متعمقة 

 
 
  - "Three.js can make game development easier by taking care of low-level details"

روابط خارجية 

 
 ThreeJS Journey - Learning WebGL with Three.js

برمجيات تستخدم رخصة إم أي تي
مكتبات جافا سكريبت
برمجيات مجانية للرسوميات ثلاثية الأبعاد
برمجيات متعددة المنصات
برمجيات 2010