الفئة TriMesh

TriMesh class

TriMesh يحتوي على بيانات خام يمكن لوحدة معالجة الرسوميات (GPU) استخدامها مباشرة. هذه الفئة أداة للمساعدة في إنشاء شبكة تحتوي فقط على بيانات لكل رأس.

public class TriMesh : Entity, IEnumerable<Vertex>

المُنشئات

الاسمالوصف
TriMesh(string, VertexDeclaration)تهيئة نسخة من TriMesh

الخصائص

الاسمالوصف
Capacity { get; }السعة المخصصة مسبقًا للرؤوس.
Excluded { get; set; }يحصل أو يضبط ما إذا كان يجب استبعاد هذا الكيان أثناء التصدير.
IndicesCount { get; }عدد الفهارس في هذا TriMesh
virtual Name { get; set; }يحصل أو يعيّن الاسم.
ParentNode { get; set; }يحصل أو يعيّن العقدة الأصلية الأولى، إذا تم تعيين العقدة الأصلية الأولى، سيتم فصل هذا الكيان عن العقد الأصلية الأخرى.
ParentNodes { get; }يحصل على جميع العقد الأصلية، يمكن إرفاق كيان بعدة عقد أصلية لتكرار الهندسة.
Properties { get; }يحصل على مجموعة جميع الخصائص.
Scene { get; }يحصل على المشهد الذي ينتمي إليه هذا الكائن
UnmergedVerticesCount { get; }عدد الرؤوس غير المدمجة التي تم تمريرها عبر BeginVertex وEndVertex.
VertexDeclaration { get; }تخطيط الرؤوس لـ TriMesh.
VerticesCount { get; }عدد الرؤوس في هذا TriMesh
VerticesSizeInBytes { get; }الحجم الكلي لجميع الرؤوس بالبايت

الطرق

الاسمالوصف
static CopyFrom(TriMesh, VertexDeclaration)نسخ TriMesh من الإدخال مع تخطيط رؤوس جديد
static FromMesh(Mesh, bool)إنشاء TriMesh من كائن شبكة مُعطى، حيث يتم بناء تعريف الرؤوس بناءً على بنية الشبكة المدخلة.
static FromMesh(VertexDeclaration, Mesh)إنشاء TriMesh من كائن شبكة مُعطى مع تخطيط رؤوس محدد.
static FromRawData(VertexDeclaration, byte[], int[], bool)إنشاء TriMesh من بيانات خام
AddTriangle(int, int, int)إضافة مثلث جديد
BeginVertex()بدء إضافة رأس
EndVertex()إنهاء إضافة رأس
FindProperty(string)يجد الخاصية. يمكن أن تكون خاصية ديناميكية (Created by CreateDynamicProperty/SetProperty) أو خاصية أصلية (Identified by its name)
GetBoundingBox()يحصل على صندوق الحدود للكيان الحالي في نظام إحداثيات مساحة الكائن الخاصة به.
virtual GetEntityRendererKey()يحصل على مفتاح عارض الكيان المسجل في العارض
GetEnumerator()احصل على المُعدِّد لتعداد Vertex
GetProperty(string)احصل على قيمة الخاصية المحددة
IndicesToArray(out int[])
IndicesToArray(out ushort[])
LoadVerticesFromBytes(byte[])تحميل الرؤوس من البايتات، يجب أن يكون طول البايتات مضاعفًا صحيحًا لحجم الرأس.
ReadDouble(int, VertexField)اقرأ الحقل من نوع double
ReadFloat(int, VertexField)اقرأ الحقل من نوع float
ReadFVector2(int, VertexField)اقرأ الحقل من نوع vector2
ReadFVector3(int, VertexField)قراءة حقل vector3
ReadFVector4(int, VertexField)قراءة حقل vector4
ReadVector2(int, VertexField)اقرأ الحقل من نوع vector2
ReadVector3(int, VertexField)قراءة حقل vector3
ReadVector4(int, VertexField)قراءة حقل vector4
RemoveProperty(Property)يزيل خاصية ديناميكية.
RemoveProperty(string)إزالة الخاصية المحددة بالاسم
SetProperty(string, object)يضبط قيمة الخاصية المحددة
override ToString()يحصل على تمثيل النص لـ TriMesh
VerticesToArray()تحويل بيانات الرؤوس إلى مصفوفة بايت
Write16bIndicesTo(Stream)اكتب بيانات الفهارس كعدد صحيح 16 بت إلى الدفق
Write32bIndicesTo(Stream)اكتب بيانات الفهارس كعدد صحيح 32 بت إلى الدفق
WriteVerticesTo(Stream)اكتب بيانات الرؤوس إلى الدفق المحدد

أمثلة

الكود التالي يوضح كيفية إنشاء TriMesh بتخطيط ذاكرة مخصص، وتصديره إلى ملف.

//عرّف إعلان الرأس كـ {FVector3 Position; FVector3 Normal; FVector2 UV}
VertexDeclaration vd = new VertexDeclaration();
vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Normal);
vd.AddField(VertexFieldDataType.FVector2, VertexFieldSemantic.UV);
//حوّل شبكة إلى شبكة ثلاثية الأضلاع باستخدام تخطيط الذاكرة المحدد
var mesh = (new Sphere()).ToMesh();
var triMesh = TriMesh.FromMesh(vd, mesh);
//احفظه إلى الدفق، 115 رأسًا * 32 بايت لكل رأس
using (var stream = new FileStream("output.bin", FileMode.Create))
{
    triMesh.WriteVerticesTo(stream);
    //احفظ الفهارس كـ ushort إلى الدفق، 504 فهرس * 2 بايت لكل فهرس
    triMesh.Write16bIndicesTo(stream);
}

انظر أيضًا