منتديات أهل الجزائر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

التعديل على المجسمات(modeling)

استعرض الموضوع التالي استعرض الموضوع السابق اذهب الى الأسفل

التعديل على المجسمات(modeling) Empty التعديل على المجسمات(modeling)

مُساهمة  vb6 الى vb20 الأحد يناير 29, 2017 2:55 am

السلام ورحمه الله تعالى وبركاته والصلاه والسلام على خير البريه cheers

لماذا vb6 لانها لغه مشهوره وسهله ولها امثله كثيره في الشبكه

في directx9 يوجد الدالتينD3DXMesh.GetAttributeTable......D3DXMesh.setAttributeTable


في directx8 يوجد فقط الداله  .....D3DXMesh.GetAttributeTable

بما ان الذي يهمنا هو directx8 ...

مثلا لدينا مجسم مكون من 1000 وجه  و 2000 نقطه ...نريد ان نعرف  الوجه رقم 500  لاي مقطع من المجسم واي متريال وتكشتر مفعل عليهcheers

dim mesh as D3DXMesh

dim  AttributeTable(10) as D3DXATTRIBUTERANGE 

dim id as long

بعد الاعلانات الان الداله

 mesh.GetAttributeTable AttribTable(0), id

كما ترى الداله تعود لنا بقيمتين

id  وهو عدد  الاجزاء في المجسم وهو نفسه عدد الماتريال وهو نفسه عدد التكستر

AttributeTable مصفوفه من 11  عنصر من 0 الى 10  ..تحمل قيمه من نوع التركيب D3DXATTRIBUTERANGE 

Type D3DXATTRIBUTERANGE

AttribId As Long

FaceCount As Long

FaceStart As Long

VertexCount As Long

VertexStart As Long

End Type

AttribTable(0).AttribId  تعني رقم المقطع في المجسم

AttribTable(0).FaceCount تعني تعني عدد الاوجه  في المقطع رقم0 المفعل عليها متريال وتكستر رقم 0

 

مثلا لدينا مجسم من 5000 وجه   و7000 نقطه   نريد تقسيمه الى ثلاثه اجزاء  كل مجموعه من النقاط نفعل عليها متريال وتكستر خاص بها  .. cheers

Dim data() As Long: ReDim data(mesh.GetNumFaces - 1) As Long

Dim i As Long: For i = 0 To mesh.GetNumFaces - 1
If i < 2000 Then
data(i) = 0
ElseIf i > 4000 Then
data(i) = 2
Else: data(i) = 1: End If: Next i

DXCopyMemory ByVal mesh.LockAttributeBuffer(D3DLOCK_DISCARD), data(0), Len(data(0)) * mesh.GetNumFaces()
mesh.unLockAttributeBuffer

ما الذي فعلناه في الداله السابقه  قمنا بالاعلان عن المصفوفه data()  من نوع long  عدد عناصرها هو عدد الاوجه في المجسم ثم اعطينا  قيمه لكل عنصر اي اعطينا عدد لكل وجه في المجسم يمثل رقم المقطع المقطع والماتريال والتكشتر

قمنا بااستدعاء attribitbuffer  لتغييره  ..بواسطه داله DXCopyMemory

وفي الاخير انهينا العمل  mesh.unLockAttributeBuffer

وفي الاخير ستجد هذه الدوال في مشروعنا مفتوح المصدر هنا  لمن يريد الانضمام لتحسين واجهه  البرنامج واضافه دوال وابداعات اخرى مشكور cheers

https://ahl-dz.yoo7.com/t167-topic
vb6 الى vb20
vb6 الى vb20
عضو
عضو

عدد المساهمات : 10
نقاط : 32
تاريخ التسجيل : 11/10/2016
الموقع : ahl-dz.yoo7.com/f28-montada

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع التالي استعرض الموضوع السابق الرجوع الى أعلى الصفحة

- مواضيع مماثلة

صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى