تمثيل شبكة ، خط ، أو هندسة نقطية. يتضمن مواقع الرأس ، ومؤشرات الوجه ، والمعايير ، والألوان ، والأشعة فوق البنفسجية ، والسمات المخصصة داخل المخازن المؤقتة ، مما يقلل من تكلفة تمرير كل هذه البيانات إلى وحدة معالجة الرسومات.
لقراءة وتحرير البيانات في سمات BufferGeometry ، راجع [page:BufferAttribute] التوثيق.
const geometry = new THREE.BufferGeometry();
// إنشاء شكل مربع بسيط. نحن نكرر الأعلى الأيسر والأسفل الأيمن
// الرؤوس لأن كل رأس يحتاج إلى الظهور مرة واحدة لكل مثلث.
const vertices = new Float32Array( [
-1.0, -1.0, 1.0, // v0
1.0, -1.0, 1.0, // v1
1.0, 1.0, 1.0, // v2
1.0, 1.0, 1.0, // v3
-1.0, 1.0, 1.0, // v4
-1.0, -1.0, 1.0 // v5
] );
// itemSize = 3 لأنه يوجد 3 قيم (مكونات) لكل رأس
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
const mesh = new THREE.Mesh( geometry, material );
const geometry = new THREE.BufferGeometry();
const vertices = new Float32Array( [
-1.0, -1.0, 1.0, // v0
1.0, -1.0, 1.0, // v1
1.0, 1.0, 1.0, // v2
-1.0, 1.0, 1.0, // v3
] );
const indices = [
0, 1, 2,
2, 3, 0,
];
geometry.setIndex( indices );
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
const mesh = new THREE.Mesh( geometry, material );
[example:webgl_buffergeometry شبكة بوجوه غير مفهرسة]
[example:webgl_buffergeometry_indexed شبكة بوجوه مفهرسة]
[example:webgl_buffergeometry_lines خطوط]
[example:webgl_buffergeometry_lines_indexed خطوط مفهرسة]
[example:webgl_buffergeometry_custom_attributes_particles جزيئات]
[example:webgl_buffergeometry_rawshader محركات الظل الخام]
يحتوي هذا الخريطة القائمة على الهوية على اسم السمة المراد تعيينها وكقيمة [page:BufferAttribute buffer] لتعيينه. بدلاً من الوصول إلى هذا الملكية مباشرة ، استخدم [page:.setAttribute] و [page:.getAttribute] ل الوصول إلى سمات هذه الهندسة.
مربع التحديد لـ bufferGeometry ، والذي يمكن حسابه بـ [page:.computeBoundingBox](). الافتراضي هو `null`.
كرة التحديد لـ bufferGeometry ، والتي يمكن حسابها بـ [page:.computeBoundingSphere](). الافتراضي هو `null`.
يحدد جزء الهندسة المراد عرضه. يجب عدم تعيين هذا
مباشرة ، بدلاً من ذلك استخدم [page:.setDrawRange]. الافتراضي هو
{ start: 0, count: Infinity }
بالنسبة لـ BufferGeometry غير المفهرس ، count هو عدد القمم التي يتم عرضها.
بالنسبة لـ BufferGeometry المفهرس ، count هو عدد المؤشرات التي يتم عرضها.
قسم الهندسة إلى مجموعات ، كل منها سيتم عرضه في
مكالمة WebGL رسم منفصلة. هذا يسمح باستخدام مجموعة من المواد
مع الهندسة.
كل مجموعة هي كائن من الشكل:
{ start: Integer, count: Integer, materialIndex: Integer }
حيث يحدد start العنصر الأول في هذه المكالمة - الأول
رأس للهندسة غير المفهرسة ، وإلا فإن المثلث الأول فهرس. عد
يحدد كم عدد القمم (أو المؤشرات) المضمنة ، و materialIndex
يحدد فهرس مجموعة المواد للاستخدام.
استخدم [page:.addGroup] لإضافة مجموعات ، بدلاً من تعديل هذا المصفوفة
مباشرة.
يجب أن ينتمي كل رأس وفهرس إلى مجموعة واحدة فقط - يجب ألا تشترك المجموعات
قمم أو مؤشرات ، ويجب ألا تترك القمم أو المؤشرات غير المستخدمة.
رقم فريد لهذا الحال bufferGeometry.
يتيح إعادة استخدام القمم عبر مثلثات متعددة ؛ هذا هو يسمى باستخدام "المثلثات المفهرسة". يرتبط كل مثلث بـ مؤشرات ثلاث قمم. لذلك تخزن هذه السمة فهرس كل رأس لكل وجه ثلاثي الأضلاع. إذا لم يتم تعيين هذه السمة ، فإن [page:WebGLRenderer renderer] يفترض أن كل ثلاثة مواقع متجاورة تمثل مثلثًا واحدًا. الافتراضي هو `null`.
علامة للقراءة فقط للتحقق مما إذا كان الكائن المحدد من نوع [name].
خريطة قائمة على [page:BufferAttribute]s التي تحمل تفاصيل هندسة المورف
الأهداف.
ملاحظة: بمجرد عرض الهندسة ، لا يمكن تغيير بيانات سمة المورف
يتغير. سيتعين عليك الاتصال [page:.dispose]() ، وإنشاء جديد
نسخة من [name].
يستخدم للتحكم في سلوك هدف المورف ؛ عند تعيينه على true ، المورف يتم التعامل مع بيانات الهدف كإزاحات نسبية ، بدلاً من كـ المواقع / المعايير المطلقة. الافتراضي هو `false`.
اسم اختياري لهذه الحالة bufferGeometry. الافتراضي هو فارغ سلسلة.
كائن يمكن استخدامه لتخزين بيانات مخصصة حول BufferGeometry. يجب ألا يحتوي على مراجع للوظائف حيث لن يتم استنساخها.
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من هذه الحالة كائن. يتم تعيين هذا تلقائيًا ولا يجب أن يكون تحرير.
[page:EventDispatcher EventDispatcher] الطرق متوفرة على هذا صف.
يضيف مجموعة إلى هذه الهندسة ؛ انظر [page:BufferGeometry.groups groups] خاصية للحصول على التفاصيل.
تطبق تحويل المصفوفة على الهندسة.
يطبق التدوير الممثل بالرباعي على الهندسة.
مركز الهندسة بناءً على مربع التحديد.
يمسح جميع المجموعات.
ينشئ نسخة من هذا BufferGeometry.
يحسب مربع التحديد للهندسة ، ويحدث [page:.boundingBox]
سمة.
لا يتم حساب مربعات التحديد افتراضيًا. يجب حسابها بشكل صريح
حساب ، وإلا كانت `null`.
يحسب كرة التحديد للهندسة ، ويحدث [page:.boundingSphere]
سمة.
لا تتم حساب كرات التحديد افتراضيًا. يجب حسابها بشكل صريح
حساب ، وإلا كانت `null`.
يحسب ويضيف سمة مماسية لهذه الهندسة.
الحساب مدعوم فقط للهندسات المفهرسة وإذا تم تعريف الوضعية ،
الطبيعية ، والأشعة فوق البنفسجية. عند استخدام خريطة طبيعية للفضاء المماس
خريطة ، تفضل خوارزمية MikkTSpace المقدمة من قبل
[page:BufferGeometryUtils.computeMikkTSpaceTangents] بدلاً من ذلك.
تحسب قمم الأوجه للبيانات القمية المعطاة. بالنسبة للهندسات المفهرسة ، يضبط الأسلوب كل قمة عادية لتكون متوسط أوجه الوجه التي تشارك هذه القمة. بالنسبة للهندسات غير المفهرسة ، لا تتشارك القمم ، ويضبط الأسلوب كل قمة عادية لتكون نفس وجه الوجه.
ينسخ BufferGeometry آخر إلى هذا BufferGeometry.
تحذف [page:BufferAttribute attribute] بالاسم المحدد.
يطلق الموارد المتعلقة بوحدة معالجة الرسومات التي تم تخصيصها من قبل هذا المثيل. اتصل بهذا الأسلوب كلما لم يعد هذا المثيل مستخدمًا في تطبيقك.
يرجع [page:BufferAttribute attribute] بالاسم المحدد.
يرجع [page:.index] buffer.
يعود `true` إذا كانت السمة بالاسم المحدد موجودة.
vector - نقطة عالمية للنظر إليها.
يدور الهندسة لمواجهة نقطة في الفضاء. يتم هذا عادةً كـ
عملية واحدة ، وليس أثناء حلقة. استخدم [page:Object3D.lookAt] لـ
الاستخدام النموذجي للشبكة في الوقت الفعلي.
سيكون كل متجه طبيعي في هندسة بقوة 1. هذا سوف تصحح الإضاءة على سطوح الهندسة.
قم بتدوير الهندسة حول المحور X. يتم هذا عادةً كعملية واحدة عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ تدوير شبكة نموذجية في الوقت الفعلي.
قم بتدوير الهندسة حول المحور Y. يتم هذا عادةً كعملية واحدة عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ تدوير شبكة نموذجية في الوقت الفعلي.
قم بتدوير الهندسة حول المحور Z. يتم هذا عادةً كعملية واحدة عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ تدوير شبكة نموذجية في الوقت الفعلي.
قم بتغيير حجم بيانات الهندسة. يتم هذا عادةً كعملية واحدة ، وليس أثناء حلقة. استخدام [page:Object3D.scale] لـ تغيير حجم شبكات نموذجية في الوقت الفعلي.
يضع سمة لهذه الهندسة. استخدام هذا بدلاً من خصائص الملكية ، لأن خريطة قائمة داخلية من [page:.attributes] يتم صيانته لتسريع التكرار على السمات.
قم بتعيين خاصية [page:.drawRange]. بالنسبة لـ BufferGeometry غير المفهرس ، count هو عدد القمم التي يتم عرضها. بالنسبة لـ BufferGeometry المفهرس ، count هو عدد المؤشرات التي يتم عرضها.
تضبط سمات هذا BufferGeometry من مصفوفة من النقاط.
ضبط buffer [page:.index].
قُم بتحويل هندسة buffer إلى three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
إرجاع إصدار غير مفهرس من BufferGeometry المفهرس.
قُم بترجمة الهندسة. يتم هذا عادةً كعملية واحدة ، وليس أثناء حلقة. استخدم [page:Object3D.position] لـ ترجمة شبكات نموذجية في الوقت الفعلي.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]