السلام عليكم
كيف أستخرج الـfaces من ملف مجسم X.
c++
أعرف أن أسئلتي كثرت في الأونه الأخيرة أسف إذا أزعجت أحد
السلام عليكم
كيف أستخرج الـfaces من ملف مجسم X.
c++
أعرف أن أسئلتي كثرت في الأونه الأخيرة أسف إذا أزعجت أحد
هل تريد عدد الاوجه ؟
int numFaces = PMesh->GetNumFaces();
او تريد الحصول علي مؤشر يحوي علي وعاء النقاط التي تكون الاوجهه ؟
IDirect3DVertexBuffer9* vb = 0; Mesh->GetVertexBuffer( &vb ); IDirect3DIndexBuffer9* ib = 0; Mesh->GetIndexBuffer( &ib );
مع الاعتبار ان الMesh هي من نوع ID3DXBaseMesh
بعد ذلك اذا كنت تريد ان تقرأ من الوعاء يحب ان تعمل lock للbuffers اولا ثم تقرآ ثم تغلق unlock
HRESULT ID3DXMesh::LockVertexBuffer(DWORD Flags, BYTE** ppData); HRESULT ID3DXMesh::LockIndexBuffer(DWORD Flags, BYTE** ppData); HRESULT ID3DXMesh::UnlockVertexBuffer(); HRESULT ID3DXMesh::UnlockIndexBuffer();
دوال مساعدة
DWORD GetFVF();— DWORD GetNumVertices(); DWORD GetNumFaces();—
ارجوا قراءة الSDK DOCs .
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
لأنني سأستخدمها في أحد المحركات الفيزيائية أرجو أن فهمت قصدي
تم تعديل هذه المشاركة بواسطة crazy Programm2007er في 8 أكتوبر 2008 في 19:54
ما هي دي الدوال اخي
و هذا تطبيق
// HR ( ) IS A MICRO IDirect3DVertexBuffer9* vb = 0; IDirect3DIndexBuffer9* ib = 0; HR(mMesh->GetVertexBuffer(&vb)); HR(mMesh->GetIndexBuffer(&ib)); HR(gd3dDevice->SetIndices(ib)); HR(gd3dDevice->SetVertexDeclaration(VertexPNT::Decl)); HR(gd3dDevice->SetStreamSource(0, vb, 0, sizeof(VertexPNT)));
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
شكرا على الرد
أنا أعمل الأن على لعبة سأضيفها قريبا في المنتدى بالديركت إكس مع السي بلس بلس مع المحرك الفيزيائي newton
حيث هناك في المحرك كي تستخدم TreeCollsion
توجد دالة وهي
NewtonTreeCollisionAddFace
لكن أنا لا أستطيع إستخدام ماكتبته في ردك مع إحترامي لك
حيث كي تقوم بإضافة TreeCollsion لمجسم mesh يجب أن تضيف جميع الfaces الخاصة بالمجسم فيNewtonTreeCollisionAddFace
أرجو أن تكون قد فهمتني
احمد صالح كتب:و هل فهمت الكود اللي كاتبه انا ؟
طبعا
اقتباسو ما هي بارامترات الدالة بتاعت نيوتن ؟
شاهد الصوره في المرفقات
اول بارمتر خاص بالمحرك لا علينا منه
ثاني بارمتر هو عدد الروؤس و ياتي من
DWORD GetNumVertices();
ثالث بارمتر و هو مؤشر إلي الروؤس كيف نآتي به ؟
// Yes, draw the picked triangle in solid mode. IDirect3DVertexBuffer9* vb = 0; IDirect3DIndexBuffer9* ib = 0; HR(mMesh->GetVertexBuffer(&vb)); HR(mMesh->GetIndexBuffer(&ib)); HR(gd3dDevice->SetIndices(ib)); HR(gd3dDevice->SetVertexDeclaration(VertexPNT::Decl)); HR(gd3dDevice->SetStreamSource(0, vb, 0, sizeof(VertexPNT)));
و قمنا بحفظ الروؤس في الهيكل VertexPNT
struct VertexPNT
{
VertexPNT()
:pos(0.0f, 0.0f, 0.0f),
normal(0.0f, 0.0f, 0.0f),
tex0(0.0f, 0.0f){}
VertexPNT(float x, float y, float z,
float nx, float ny, float nz,
float u, float v):pos(x,y,z), normal(nx,ny,nz), tex0(u,v){}
VertexPNT(const D3DXVECTOR3& v, const D3DXVECTOR3& n, const D3DXVECTOR2& uv)
:pos(v),normal(n), tex0(uv){}
D3DXVECTOR3 pos;
D3DXVECTOR3 normal;
D3DXVECTOR2 tex0;
static IDirect3DVertexDeclaration9* Decl;
};رابع بارمتر هو رقم الstride في المصفوفة
خامس بارمتر رقم الاوجه ( يعني اول وجه ، ثاني وجه ) ..إلخ
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
شكرا لقد أتعبتك معي
ولكن
اقتباسرابع بارمتر هو رقم الstride في المصفوفةخامس بارمتر رقم الاوجه ( يعني اول وجه ، ثاني وجه ) ..إلخ
لم أفهمها أرجو التوضيح لو سمحت
لو سمحت إذا لم تكن عليك كلفة أن تضيفها بالستخدام
NewtonTreeCollisionAddFace
لأني أواجه صعوبة في ذلك مثلا:
for (int i=0;i<length;i++){
NewtonTreeCollisionAddFace(1,2,3,4,5);
}تم تعديل هذه المشاركة بواسطة crazy Programm2007er في 9 أكتوبر 2008 في 11:28
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
شكرا جزيلا لك
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…