|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Jun 12, 2009 8:54 pm Post subject: |
|
Labi, labi, whatever, tas tāpat bija ļoti novienkāršots piemērs. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Mon Jun 15, 2009 8:46 am Post subject: |
|
Un tagad, cienījamie engine lietotāji - neizmantojot ne DirectX, ne OpenGL funkcijas lūdzams izveidojiet Picking funkciju.
Tiek doti: CML un Eigen freimworki (engine te nav pat tuvumā).
Ātrāk tiešām pats uzkodēšu c++, papētot inversās matricas matemātisko daļu. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Mon Jun 15, 2009 9:32 am Post subject: |
|
Quote: | lūdzams izveidojiet Picking funkciju. |
Vairumā dziņu tāda jau ir iebūvēta.
Irrlichtā paraugprogrammās ir viss picking kods, un tas ir "ļoti sarežģīts"..
Tur var pickot arī ar bounding boxu (un neko vairāk šim projektam nevajadzētu). Un tas, cik sapratu (neesmu pats Irrlicht lietojis, tik skatos uz kodu), ir ļoti "grūti" - jāuztaisa custom scene node, kurš saturēs tikai bounding boxu. Pret to jāpick'o..
ISceneNode* CSceneCollisionManager::getSceneNodeFromRayBB(core::line3d<f32> ray, s32 idBitMask=0, bool bNoDebugObjects = false);
Bet nu ja esi kļuvis eksperts pickingā jau 5 minūtēs, vai tev patīk visu vairākas reizes pārrakstīt, laipni lūddzu pamēģināt pašam un skatīties, kā izdodas. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Mon Jun 15, 2009 9:55 am Post subject: |
|
Diemžēl tās daļas (da jebkādas) ir tā iepītas engine struktūrā, ka izkastrēt būs problēmas.
Laigan neesmu manījis nevienā enginē kaut ko no picking. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bulkano
Joined: 22 Apr 2009 Posts: 39
|
Posted: Mon Jun 15, 2009 10:04 am Post subject: |
|
Eddy you made my day :D
Ar katru dienu arvein spožākas un spožākas pērles birst. |
|
Back to top |
|
|
DeRatizators
Joined: 27 Apr 2006 Posts: 492
|
Posted: Mon Jun 15, 2009 10:15 am Post subject: |
|
EDDY wrote: | Diemžēl tās daļas (da jebkādas) ir tā iepītas engine struktūrā, ka izkastrēt būs problēmas.
Laigan neesmu manījis nevienā enginē kaut ko no picking. |
Ko tu tur taisies kastrēt ?
Nezinu kas tādi Eigen un CML, bet, piemēram, picking kods no C4Engine wiki izskatās pilnīgi normāls. Nekāda dziņa kastrēšana nav vajadzīga, lol:
Code: | CombatWorld *world = static_cast<CombatWorld*>(TheWorldMgr->GetWorld());
if(world)
{
RTSCamera *cam = world->GetNavCamera();
Point3D camPosition = cam->GetNodePosition();
Point3D curFocus = cam->GetCurrentFocus();
CollisionData data;
CollisionState state = kCollisionStateNone;
Ray ray;
Point2D cursorPoint = world->GetCursorPosition();
cam->GetWorldRayFromPoint(Point(cursorPoint.x, cursorPoint.y), &ray);
float distance = Magnitude(camPosition - curFocus);
Point3D p1 = ray.origin;
Point3D p2 = ray.origin + ray.direction * ray.tmax;
// Test against all geometry
state = world->QueryWorld(p1, p2, 0.0f, 0, &data);
if(state != kCollisionStateNone)
{
//geo ir tavs objekts
Geometry *geo = data.geometry;
}
}
|
_________________ Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor. |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Mon Jun 15, 2009 10:55 am Post subject: |
|
Dziņa kastrēšana - izņemt no dziņa darbojošās funkcijas tādā veidā, lai tās varētu iepīt savā projektā. Labi, mazliet nepiedienīgi ...
Nu tavs piemērs nepārliecināja galīgi.
Kas ir GetCurrentFocus();, GetNodePosition(); un pārējie?
Nemaz nerunājot par QueryWorld(p1, p2, 0.0f, 0, &data);
Tie ir piesaistīti dzinim, tāpēc nekādi tas piemērs nevar palīdzēt.
Ja nu vienīgi es pēkšņi nenopērku C4 dzini .. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Jun 15, 2009 11:38 am Post subject: |
|
EDDY wrote: | Kas ir GetCurrentFocus();, GetNodePosition(); un pārējie?
Nemaz nerunājot par QueryWorld(p1, p2, 0.0f, 0, &data); :o |
Uz tādiem jautājumiem atbildi sniedz 4 burti RTFM.
Kas tavuprāt ir std:vector? Kas ir glBindBufferBase? ...
Kas tu domā zināšanas no zila gaisa rodas? Loģiski, ka tās kaut kur jāiemācās, jāizlasa, jānoklausās. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Mon Jun 15, 2009 11:47 am Post subject: |
|
Quote: | Tie ir piesaistīti dzinim, tāpēc nekādi tas piemērs nevar palīdzēt. |
Nu ja tas tev nepatīk, pieliec savam projektam visus pasaules dziņus, kurus var un nowrapo funkciju tā, lai strādā uz visiem..
Tiešām nesaproti, ka, lietojot dzini, tu to lieto? Nevis kastrē vai vēl kā. Viss spēles kods būs vai nu saistīts ar dzini, vai ar spēli, vai ar citiem library'iem, kurus būsi pielicis. Nav tur nekas jāčakarē, vienkārši uztaisi jaunu projektu, pieliec dziņa lib-failus, headerus un sāc kodēt spēli!
GetNodePosition() - objekta atrašanās vieta spēles pasaulē, kodā nav lietots.
GetCurrentFocus() - laikam tālākais punkts, ko kamera redz (un uz kuru skatās), bet tas kodā nav lietots.
(izņemot attāluma aprēķināšanu, bet to attālumu tur arī nelieto)
QueryWorld - svarīgākā funkcija - pārbauda pasaules objektu sadursmes ar nogriezni..
Un, kamēr nesapratīsi, cik dzinī tas ir vienkārši, skaties uz piemēru..
Un Irrlicht ir bez maksas. Manuprāt tavām vajadzībām būs ļoti OK.
Ja tik ļoti grafiku patīk veidot, varbūt vēl uz Unity apskaties. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Mon Jun 15, 2009 12:37 pm Post subject: |
|
bubu wrote: | EDDY wrote: | Kas ir GetCurrentFocus();, GetNodePosition(); un pārējie?
Nemaz nerunājot par QueryWorld(p1, p2, 0.0f, 0, &data); |
Uz tādiem jautājumiem atbildi sniedz 4 burti RTFM. |
Kāda man daļa gar manuāli, ja man nav C4 dzinis?
Ai_ta labi, miers ar jums.
Kaut vai papētam to cml - matrix::inverse();
Tā nav analogs DirectX-am, jo nepieciešamas divas matricas=ienākošā un izejošā.
Bet, protams, var rakstīt Code: | Pseidocode: Matrix_44 M = matrix::inverse(N); |
Tikai nezkāpēc DirectX nepatīk šī matrica. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Last edited by EDDY on Mon Jun 15, 2009 1:02 pm; edited 1 time in total |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Mon Jun 15, 2009 1:02 pm Post subject: |
|
Ja domāji D3DXMatrixInverse funkciju, tad ir gan.
Jo ar abu funkciju palīdzību var paņemt vienu matricu un uztaisīt jebkuru matricu par pirmās inverso.
Neviens netraucē rakstīt šādi: D3DXMatrixInverse( &m, &m );
P.S. kas tur DirectX'am (precīzāk būtu Direct3D[X]) nepatīk? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Mon Jun 15, 2009 1:04 pm Post subject: |
|
Pie tā visa, ir divi matricu veidi, bet abi strīdās ar DirectX.
Tā kā atliek pašam izgudrot velosipēdu, vai arī pielikt matricas transformāciju ekrānam (izšķirtspējai) un sašūnot 81 lauciņus ar if (x>.... && x<...., e.t.c.).
Vispār nesaprotu, kāpēc tam manam picking piemēram vajadzētu inverso matricu. Kas tur ir jāapgriež?
DirectX-ā nepatīk tā HLSL valoda. Vot, ja varētu iekš DirectX ielikt GLSL .... _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Mon Jun 15, 2009 1:14 pm Post subject: |
|
Quote: | Vispār nesaprotu, kāpēc tam manam picking piemēram vajadzētu inverso matricu. Kas tur ir jāapgriež? |
Pašam vien jādebugo. Piedod, tieši šādu gadījumu dēļ savu kristāla bumbu saplēsu..
Quote: | Vot, ja varētu iekš DirectX ielikt GLSL .... |
Lūdzu, uztaisi GLSL šeideru kompilētāju priekš Direct3D. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Mon Jun 15, 2009 2:30 pm Post subject: |
|
LOL! Ar katru postu, arvien lielāks cirks ar tevi, EDDY. _________________ long time; /* know C */ |
|
Back to top |
|
|
|
|
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
|