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

directx'a animācijas
Goto page Previous  1, 2, 3
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Oct 08, 2007 8:09 pm    Post subject:

Tas neizklausās pēc tā, ka saproti.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Mon Oct 08, 2007 8:35 pm    Post subject:

vai tad tas nav tākā paraugs? pēc kā tad tas izklausās?
hmm, nu labāk es izskaidrot laikam nemācēš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: Mon Oct 08, 2007 9:08 pm    Post subject:

ai tas man vienalga, tagad viena problēma, bet man vnk jau galva kūp, šodien nav TĀS gribēšanas strādāt Rolling Eyes
problēma te:
kāpēc šī funkcija:
Code:

Xp double D3D2D_Draw2DPlane(double x1, double x2, double y1, double y2)
{
   VTX2D Plane[4] =
   {
      {x1,y1,0,0,0},
      {x2,y1,0,1,0},
      {x2,y2,0,1,1},
      {x1,y2,0,0,1},
   };
   d3ddev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,Plane,sizeof(VTX2D));
   return 0;
}

..strādā ok (parāda to 4stūri), bet šī funkcija:
Code:

Xp double D3D2D_DrawHealthBar(double x1, double x2, double y1, double y2, double value)
{
   DWORD CL = C1;
   DWORD CF = C2;
   float yy = y1+1+(((y2-1)-(y1+1))*(value/100));
   _DefVertex myHB[12] =
   {
      {x1,y1,0,0,0},
      {x2,y1,0,0,0},
      {x2,y2,0,0,0},
      {x2,y2,0,0,0},
      {x1,y2,0,0,0},
      {x1,y1,0,0,0},
      //--------//
      {x1+1,y1+1,0,0,0},
      {x2-1,y1+1,0,0,0},
      {x2-1,yy,0,0,0},
      {x2-1,yy,0,0,0},
      {x1+1,yy,0,0,0},
      {x1+1,y1+1,0,0,0},
   };
   d3ddev->DrawPrimitiveUP(D3DPT_TRIANGLELIST,4,myHB,sizeof(_DefVertex));
   return 0;
}

..tos 2 4stūrus neparāda? btw, _DefVertex ir tas pats, kas VTX2D, bet tas pašlaik nav svarīgi, kāpēc tā..
_________________
"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: Thu Oct 11, 2007 10:13 pm    Post subject:

nē nē ok viss "solved" - vnk es zīmēju ārpus xy robežām - no p.100,500 līdz p. 200,520 ; kas acīmredzot bija aiz 640x480 ortho projekcijas robežām...
_________________
"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 13, 2007 5:53 pm    Post subject:

hmm nu man viena vnk dīvaina problēma...
es beidzot pārvilku skinnedmesha piemēru uz savu dll, bet dabūju rotācijas problēmu - griežoties no 0* līdz 360* mans paša pagatavotais skinnedmesh apgriežas 2 apļus! kkkkkā?
domāju, ka kods nebūs vajadzīgs, bet te būs apmēram tas pats..
D3DXMATRIX matRR;
direction += 1;
if (direction > 360){direction = 0;}
D3DXMatrixRotationZ(&matRR,D3DXToRadian(direction));
d3ddev->SetTransform(D3DTS_WORLD,&matRR);
model->render(d3ddev);
nu kā redzams tur nekā tāda nav!
agrāk biju mēģinājis ar tiny.x darboties, bet tam bija galīgi nepareizas rotācijas asis, tāpēc izveidoju savu!
ehh, nevermind, pārtaisīju funkcijas tā, lai pie rendera tas matrix piekombinētos un viss tagad ok! varu kārtīgi atpūsties!
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Sun Oct 14, 2007 12:22 pm    Post subject:

Code:
direction += 1;
if (direction > 360){direction = 0;}

Šis kods nav pareizs. Ko īsti nozīmē 360? Tas nozīmē ka objekts ir pilnīgi apgriezies, tātad to pašu, ko 0 grādi, vai ne? Ja tavs objekts jau būs pagriezts par 360 grādiem, tad tas gaidīs vēl vienu soli un, kad būs sasniedzis 361 grādu, tikai tad tas aizleks uz 0.
Pareizs kods:
Code:
direction += 1;
if (direction >= 360){direction = 0;}

Un vēl pareizāks būtu:
Code:
direction += 1;
direction %= 360;

jo ja sanāk objektu pagriezt par vairāk kā 1 grādu, tad direction (kāpēc atkal leņķim tu izvēlējies nosaukumu direction???) var sasniegt piemēram 367.
Quote:
dabūju rotācijas problēmu - griežoties no 0* līdz 360* mans paša pagatavotais skinnedmesh apgriežas 2 apļus! kkkkkā?

Kods ko tu ieliki apgriezīs objektu ne tikai 2 reizes, bet tas griezīsies mūžigi.
_________________
long time; /* know C */
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 14, 2007 12:42 pm    Post subject:

Kā tas ir - mūžīgi?
Ah un man liekas, ka %= operācija snakem neies cauri. Viņš visu tur dara ar double tipa mainīgajiem, kuram nav mod operatora. Ir gan analoģiska fmod funkcija.
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Sun Oct 14, 2007 1:33 pm    Post subject:

Es saprotu, ka sneikam tas direction +=1 ir ciklā. Un ar mūžīgi es domāju programmas mūžu.
_________________
long time; /* know C */
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 14, 2007 2:22 pm    Post subject:

nu direction man piesējies kopš GM laikiem..
to es tikai kā piemēru teicu, jo vienkārši tajā (ne manā) kodā bija kautkāda muļķība iestrādāta, ka papildu matrica dubultojās (anim_matrix * addmatrix * addmatrix) bet es vnk paņēmu un pieliku matricu rendera funkcijā, nevis freimu apstrādes funkcijā..
_________________
"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 20, 2007 2:37 pm    Post subject:

nu tad vēl problēma: skinning's notiek krietni lēnāk kā citās spēlēs, pat ja visās lietots software skinnings..
ap 15000 mikrosekundēm paņem framemove un render funkcijas! bet kāpēc?
_________________
"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 20, 2007 2:59 pm    Post subject:

Tāpēc, ka lēns kods.
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 20, 2007 3:09 pm    Post subject:

nu bet piemēram ja es te ieliktu kodu, kāds tā paskatoties varētu pateikt, kur vaina kodā, jeb man jābīda manas PerfStart un PerfStop funkcijas attiecīgi pirms un pēc katras aizdomīgās funkcijas?

nnu man liekas, ka atradu vainu - lēnais vertexbufferis - tajā laikam ātri iekšā nerakstās..

hmm, ar dinamiskajiem vertexbufferiem ātrums tāds pats... vēl ideja - neoptimizēts xmesh's, bet ja tas nebūs vainīgs, tad es vnk nezinu..
nē, nav...

labi, uzmetu HW skinningu, viss ok!
ja kāds grib redzēt to kodu, kurš sanāca pēc skinnedmesh dxsdk samples pārveidošanas, dodiet ziņu! tur vnk acis kvadrātā būs.. bet ko padarīt, ja jau strādā Wink
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page Previous  1, 2, 3
Page 3 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