View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
anggelus
Joined: 23 Feb 2005 Posts: 383 Location: Rīga (LV)
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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
mož man padomāt par vertex tweening'u? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
|