dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

directx'a animācijas
Goto page 1, 2, 3  Next
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 4:58 pm    Post subject: directx'a animācijas

man vajag lietot animācijas, lai palielinātu FPS...
apskatījos skinnedmesh'a kodu, īsti nesaprotu kā tur kas strādā (jo es neciešu dxut)
tātad: vai ir kādas iespējas noanimēt vienkārši modeļus d3d9'ā... vai man jāzog kods no iRRlicht'a?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 06, 2007 5:17 pm    Post subject:

Nesaprotu kas tevi spiež lietot to DXUT.. Tas, cik man zināms, ir tikai priekš loga izveidošanas, inputu apstrādes un vienkārša GUI. Tam nav nekāda sakara ar modeļu animāciju. Pēti vien to skinnedmesh (lai kas tas arī būtu) sourci, kamēr sapratīsi. Tavā vietā to neviens cits nesapratīs priekš tevis.

No Irrlicht nav nekas "jāzog". Irrlicht's ir open-source produkts ar ļoti labvēlīgu open-source licenci, kura pieprasa ievērot tikai šos trīs punktus:
Code:
  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgement in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be clearly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 5:20 pm    Post subject:

nu vo, DXUT mani neviens nespiež lietot, bet kods uz tā ir pavisam nesaprotams, jo daudz kas iet tā "uz īso" - vieglāk kautko izdarīt, bet kods nesaprotamāks!
apskatīšu iRR un tad redzēšu, no kā kodu ir vieglāk paņemt!

o b*aa! tas DXUT tajā skinnedmesh piemērā ir nu vnk nežēlīgi iepīts... būs jāmeklē kāds sakarīgs tutoriālis
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
anggelus



Joined: 23 Feb 2005
Posts: 383
Location: Rīga (LV)

PostPosted: Sat Oct 06, 2007 6:54 pm    Post subject:

panem kaut vai cal3d libu, elementaars lietoshanaa ar loti daudz iespejam.
http://home.gna.org/cal3d/
_________________
No comprendo lo que dice.
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 06, 2007 7:55 pm    Post subject:

Paskatījos to tavu skinnedmeshu no DirectX SDK.
Lai arī neko daudz nezinu un nemāku no DirectX, par nežēlīgu iepīšanu ar DXUT es to nesauktu. Galvenās funkcijas, kas jāskatās ir CreateSkinnedMesh, OnFrameMove un DrawMeshContainer. No DXUT tajās nav ne smakas. Tās tikai izmanto dažus globālus objektus (sampļa specifiskos), lai uzstādītu rendersteitus, šeiderus un matrices. Attiecīgās vietas nomaini ar objektiem un sistēmu, ko lieto savā kodā, un visa māksla.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 8:03 pm    Post subject:

ok, chekoju...
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 8:08 pm    Post subject:

bubu wrote:
Paskatījos to tavu skinnedmeshu no DirectX SDK.
Lai arī neko daudz nezinu un nemāku no DirectX, par nežēlīgu iepīšanu ar DXUT es to nesauktu. Galvenās funkcijas, kas jāskatās ir CreateSkinnedMesh, OnFrameMove un DrawMeshContainer. No DXUT tajās nav ne smakas. Tās tikai izmanto dažus globālus objektus (sampļa specifiskos), lai uzstādītu rendersteitus, šeiderus un matrices. Attiecīgās vietas nomaini ar objektiem un sistēmu, ko lieto savā kodā, un visa māksla.
hmm... saki? ko tad es tur tādu redzēju, ka nesapratu, no kuras alas izlīdis?
ahā:
Code:
class CAllocateHierarchy: public ID3DXAllocateHierarchy
{
public:
    STDMETHOD(CreateFrame)(THIS_ LPCTSTR Name, LPD3DXFRAME *ppNewFrame);
    STDMETHOD(CreateMeshContainer)(THIS_ LPCTSTR Name, LPD3DXMESHDATA pMeshData,
                            LPD3DXMATERIAL pMaterials, LPD3DXEFFECTINSTANCE pEffectInstances, DWORD NumMaterials,
                            DWORD *pAdjacency, LPD3DXSKININFO pSkinInfo,
                            LPD3DXMESHCONTAINER *ppNewMeshContainer);
    STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
    STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);
    [b]CAllocateHierarchy(CMyD3DApplication *pApp) :m_pApp(pApp) {}[/b]
public:
    [b]CMyD3DApplication* m_pApp;[/b]};

tie ir vajadzīgi, vai bez tiem var iztikt?
aha, nu tas laikam arī bija tas draņķis..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 06, 2007 8:21 pm    Post subject:

Un kāds šai klasei sakars ar DXUT? Tā ir normāla D3DX interfeisa ID3DXAllocateHierarchy implementācija, kuru izmanto šis samplis. Tb veids kā tas panāk to, ko tam vajag panākt (animētus modeļus?) Tā kā es nezinu DX, tad man nav ne jausmas, kam un kādiem mērķiem ir jāizmanto ID3DXAllocateHierarchy interfeiss. Lasi DirectX dokumentāciju!

Šoreiz iedošu linku uz to: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c_Summer_04/directx/graphics/reference/d3dx/interfaces/id3dxallocatehierarchy/_id3dxallocatehierarchy.asp
Tātad:
Quote:
This interface is implemented by the application to allocate or free frame and mesh container objects. Methods on this are called during loading and destroying frame hierarchies.

Kur šeit ir kaut viens vārds par DXUT?
Iemācies lasīt dokumentāciju, bez tās neko normālu neuzprogrammēsi!
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 8:34 pm    Post subject:

es tik par "CMyD3DApplication", ne jau par to funkciju!

aah, un tie visi normālie skinnedmesh piemēri izmanto šeiderus Sad
mož man padomāt par vertex tweening'u?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Oct 06, 2007 8:46 pm    Post subject:

Tad tā uzreiz vajadzēja teikt, par ko tu tur runā.
Man nav tāda:
Code:
class CAllocateHierarchy: public ID3DXAllocateHierarchy
{
public:
    STDMETHOD(CreateFrame)(THIS_ LPCSTR Name, LPD3DXFRAME *ppNewFrame);
    STDMETHOD(CreateMeshContainer)(THIS_
        LPCSTR Name,
        CONST D3DXMESHDATA *pMeshData,
        CONST D3DXMATERIAL *pMaterials,
        CONST D3DXEFFECTINSTANCE *pEffectInstances,
        DWORD NumMaterials,
        CONST DWORD *pAdjacency,
        LPD3DXSKININFO pSkinInfo,
        LPD3DXMESHCONTAINER *ppNewMeshContainer);
    STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
    STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);

    CAllocateHierarchy() {}
};


Un whatever kas tas ir - apskaties kā to izmanto, un aizstāj ar savu analogu objektu. Droši vien tas ir kautkāda klase, kura satur visu citu infromāciju par DirectX uzstādīto režīmu, izmantotajiem resursiem, utt.. Tak nevar uzrakstīt universālu sampli, no kura paņemot sourci 1:1 viss darbosies tieši tāpat. Vienmēr nāksies nedaudz pielabot vienu vai otru lietu.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Oct 06, 2007 8:56 pm    Post subject:

nu hmmm.... ok, skatīšos kā var pārbīdīt sourci uz savu dll'u...
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Oct 07, 2007 4:18 pm    Post subject:

pēc pusdienu ilgas čakarēšanās ar skinnedmeshiem tomēr izdomāju, ka labāk veidošu pats savu animēto modeļu sistēmu... visvienkāršākā animācija...
http://paste.php.lv/6206

un īsumā par modeļu formātu:
/************\
//modeļu_skaits
//vertexu_skaits_model1
/*vertexi
vertexi...*/
/*vertexu_skaits_model2....*/
//animāciju_skaits
//anim_1_start anim_1_stop
//anim_2_start anim_2_stop
//.....
\************/

paraugfaila saturs:
http://paste.php.lv/6207

nu +/- tā es to izveidoju
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Oct 07, 2007 6:28 pm    Post subject:

Drusku smiekli sanāca par tavu komentāru :)
Quote:
zmantoju DX9, std::xxx;


No std::xxx ir izmantots tikai failstrīms. Bet neviens cits labums nav.
Piemēram tavu int* VCOUNT un AModelFrame* ANModel vietā vajag izmantot std::vector<int> VCOUNT un std::vector<AModelFrame> ANModel. Gandrīz visu tav X* Y vietā vajag lietot std::vector<X> Y;
AModel(char* name) vietā vajag lietot AModel(const char* name). Tu tak netaisies mainī to name mainīgo konstruktorā. Vai pat vēl labāk AModel(const std::string& name).
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Oct 07, 2007 7:28 pm    Post subject:

vectorus neizmantoju tāpēc, ka modeļu animācijas nemainās kopš ielādēšanās brīdim! citādāk to būtu lietojis!
par to char* name - varu jau nomainīt, bet diezvai tas ko mainīs..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Oct 07, 2007 8:20 pm    Post subject:

Kāds sakars vektoram ar elementu mainīšanos/nemainīšanos? Parastā masīvā jau arī tu vari mainīt/nemainīt elementus.

Vektors ir labāks par parastu dinamisku masīvu, jo
1) debug modē tas pārbauda elementa indeksu, ļoti viegli var izķert kļūdas, ja netīšām izej ārpus robežām. Ar prastu masīvu ne viemēr to var noķert.
2) nav pašam jāatbrīvo izdalītā atmiņa ar delete. vektora destruktors to pats izdarīs.
3) mainīgs masīva garums runtaimā, ja nu tas vajadzīgs.

Ā un vēl - ja jau tu programmē C++, tad programmē C++.
C++'ā struktūras var definēt normālā veidā, nevis vēsturiskā C typedef'iskā veidā:
Code:
struct AModelFrame
{
    _DefVertex* vData;
};

struct STDANIMATION
{
    int FFrame, LFrame;
};


Un kāpēc klasē AModel visi memberi ir publiski? Tad jau tā nav normāla klase, bet gan struktūra (pēc būtības). Nav labi visu publisku atstāt.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group