التعامل مع ملف ديراكت اكس xfile
صفحة 1 من اصل 1 • شاطر
التعامل مع ملف ديراكت اكس xfile
السلام عليكم ورحمه الله
01/...........اول شيئ نقوم بتصدير ملف اكس ونسميه مثلا cube.x وهو عباره عن مكعب او اي مجسم بواسطه برنامج بلندر
ليكن في علمك ان برنامج بلندر يصدر المشهد كاول فرام لذالك نقوم بازالته يدويا او بواسطه برنامج محول نصنعه نحن ... تابع لتفهم جيدا...
02/..........لدينا ملف اكس cube.x
افتح هذا الملف بواسطه اي محرر نص ستجد بداخله ما يلي
قم بحذف الفرام روت الاولى والفرام الثانيه وهي فرام المتركس الخاصه بالفرام الاولى
هذه الاشياء تكون في اوائل السطر لذالك احذفهم
قم بحفض الملف الان الملف اكس جاهز للاستعال واستخراج المجسمات والداتا بداخله
03........الخطوه الثالثه ...تذكر ليس دائما ملف اكس يمكن ان تعدله يدويا فقط ان كان محفوض بطريقه تكتس ...اما اذا تم حفضه ك binary فانه عباره رموز وخالوطه وليس تكس لذالك نقوم بصناعه برنامج محول وهي داله واحده تحذف لنا فرام المشهد وتجهز لنا ملف اكس المصدر من البلندر
مثل هذه الداله .......
يتبع انشاء الله هذا الموضوع .....ويكمل في وقت اخر لقله الوقت والسسلام عليكم
01/...........اول شيئ نقوم بتصدير ملف اكس ونسميه مثلا cube.x وهو عباره عن مكعب او اي مجسم بواسطه برنامج بلندر
ليكن في علمك ان برنامج بلندر يصدر المشهد كاول فرام لذالك نقوم بازالته يدويا او بواسطه برنامج محول نصنعه نحن ... تابع لتفهم جيدا...
02/..........لدينا ملف اكس cube.x
افتح هذا الملف بواسطه اي محرر نص ستجد بداخله ما يلي
- الكود:
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Cube {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh { // Cube mesh
8;
1.000000; 1.000000;-1.000000;,
1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000; 1.000000;-1.000000;,
1.000000; 0.999999; 1.000000;,
0.999999;-1.000001; 1.000000;,
-1.000000;-1.000000; 1.000000;,
-1.000000; 1.000000; 1.000000;;
6;
4;3,2,1,0;,
4;5,6,7,4;,
4;1,5,4,0;,
4;2,6,5,1;,
4;3,7,6,2;,
4;7,3,0,4;;
MeshNormals { // Cube normals
6;
0.000000; 0.000000;-1.000000;,
0.000000;-0.000000; 1.000000;,
1.000000;-0.000000; 0.000000;,
-0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000;-0.000000;,
0.000000; 1.000000; 0.000000;;
6;
4;0,0,0,0;,
4;1,1,1,1;,
4;2,2,2,2;,
4;3,3,3,3;,
4;4,4,4,4;,
4;5,5,5,5;;
} // End of Cube normals
MeshMaterialList { // Cube material list
1;
6;
0,
0,
0,
0,
0,
0;;
Material Material {
0.640000; 0.640000; 0.640000; 1.000000;;
96.078431;
0.500000; 0.500000; 0.500000;;
0.000000; 0.000000; 0.000000;;
}
} // End of Cube material list
} // End of Cube mesh
} // End of Cube
} // End of Root
قم بحذف الفرام روت الاولى والفرام الثانيه وهي فرام المتركس الخاصه بالفرام الاولى
هذه الاشياء تكون في اوائل السطر لذالك احذفهم
- الكود:
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
- الكود:
} // End of Root
قم بحفض الملف الان الملف اكس جاهز للاستعال واستخراج المجسمات والداتا بداخله
03........الخطوه الثالثه ...تذكر ليس دائما ملف اكس يمكن ان تعدله يدويا فقط ان كان محفوض بطريقه تكتس ...اما اذا تم حفضه ك binary فانه عباره رموز وخالوطه وليس تكس لذالك نقوم بصناعه برنامج محول وهي داله واحده تحذف لنا فرام المشهد وتجهز لنا ملف اكس المصدر من البلندر
مثل هذه الداله .......
- الكود:
'-----------------------------------------------------------------------------
' Name: addFrom_blender_x
' Desc: ÊÍæíá ÇáãáÝ ÇáãÕÏÑ ãä ÈÑäÇãÌ ÈáäÏÑ ÞÈá ÊÍãíá ÇáÏÇÊÇ
'-----------------------------------------------------------------------------
Public Function addFrom_blender_x(strFile As String)
g_bLoadSkins = True
Dim xfile As DirectXFile
Dim enumX As DirectXFileEnum
Dim ChildData As DirectXFileData
Dim FileData(20) As DirectXFileData
Dim kDirectXFileSave As DirectXFileSave
Dim k As Long
Set xfile = kDirectX8.DirectXFileCreate()
xfile.RegisterDefaultTemplates
On Local Error Resume Next
Set enumX = xfile.CreateEnumObject(strFile)
Set kDirectXFileSave = xfile.CreateSaveObject(App.Path & "\temp.x", 1)
Do
Set ChildData = enumX.GetNextDataObject()
If ChildData Is Nothing Then Exit Do
If ChildData.GetType = "TID_D3DRMFrame" Then
Do Until FileData(0).GetType = "TID_D3DRMFrame"
Set FileData(0) = ChildData.GetNextObject()
If FileData(0) Is Nothing Then Exit Do
If FileData(0).GetType = "TID_D3DRMFrame" Then kDirectXFileSave.SaveData FileData(0)
Loop
Do Until FileData(0) Is Nothing
Set FileData(0) = ChildData.GetNextObject()
If FileData(0) Is Nothing Then Set FileData(0) = ChildData.GetNextObject()
If FileData(0).GetType = "TID_D3DRMFrame" Then kDirectXFileSave.SaveData FileData(0)
Loop
ElseIf ChildData.GetType = "TID_D3DRMMesh" Then
kDirectXFileSave.SaveData ChildData
ElseIf ChildData.GetType = "TID_D3DRMAnimationSet" Then
kDirectXFileSave.SaveData ChildData
ElseIf ChildData.GetType = "TID_D3DRMMaterialSet" Then
kDirectXFileSave.SaveData ChildData
End If
Loop
Set xfile = Nothing
Set enumX = Nothing
Set ChildData = Nothing
Set kDirectXFileSave = Nothing
Exit Function
Call addFromFile(App.Path & "\temp.x", Nothing)
kill App.Path & "\temp.x"
End Function
يتبع انشاء الله هذا الموضوع .....ويكمل في وقت اخر لقله الوقت والسسلام عليكم
vb6 الى vb15- عضو
- عدد المساهمات : 10
نقاط : 28
تاريخ التسجيل : 28/10/2016
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى