|
|
Pagina 7 din 9
[
5
|
6
|
7
|
8
|
9
]
| Mesaj |
Info autor |
Postat la 11 May 2008 14:27:05 Subiect: < fara subiect >
|
|
|
jos8cal info:
|
jos8cal:
Da` de ce ai nevoie de scalare? Ce animezi? Acum cu ce ma lupt este MAXScript. (trebuie sa il folosim pe asta intern deocamdata) Il iau dupa tutoriale. Limbajul in sine e usor de inteles dupa ce ai citit juma de ora ce si cum sta, e mult in genul Python ca 'feel', insa nu am aflat nimic inca de API. Good luck with that. MAXScript este destul de simplu si de powerfull raportat la SDK-ul de Max. Daca vreodata doresti sa-ti pierzi vremea si nervii, incearca SDK-ul. Vei face cunostinta cu Core-ul care a fost gindit acum multi, multi ani, dar din pacate atunci (ca si azi) era la moda sa te exprimi in OOP, chit ca nu intelegeai de ce o faci si la ce e bun. Acest magnific Core, are la baza un Mecanism revelat, prin care, in urma unui schimb de pointeri, obiectele ajung sa se cunoasca, sa faca schimb de pareri, un fel de Schimb de Mame. Bineinteles, totul este OOP, clase, nebunii. Si, evident, in Max9 a trebuit pilit nitel Mecanismul (Viziunile nu prea rezista in timp), deoarece existau momente in care obiectele uitau cu cine au facut schimb de Mame si atunci se considera ca violezi memoria, si paraseai max-ul pe usa din spate, in timp ce dumnezeii de pe buze plecasera deja in directia tuturor mamelor care au ajutat la perpetuarea speciei Umane si Indiene in particular. Marea problema a Core-ului exprimat prin API-ul de rigoare, este ca nimic nu este straightforward. Totul este o jungla cu singura menire de a te anihila, a te macina cu fiecare linie de cod pe care o citesti. Astfel ajungi sa-ti construiesti singur pluta de iesire din jungla si sa-ti inventezi lumea. Acum exemple. Vrei sa-ti faci un modificator de camera si nu stii unde sa-l pui. Userii fiind obisnuiti cu neobisnuitul, poti oricind sa pui un dialog la click dreapta si sa-l scuipi acolo. Evident, vei deveni fanul numarul 1 al tuturor celor care se asteptau sa-l gaseasca in lista de modificatori, sau ca si custom parameters la camera. (Pentru cunoscatori ma refer la modificatorul de camera cu care faci perspectiva cu 2 puncte de fuga). La fel, daca vrei sa-ti faci un exporter, poti sa-l pui la dialogul ascuns de la Utilities, poti sa-l pui in meniul File->Export sau poti sa-l pui la click dreapta. Poti sa uzi si canapeaua, mama nu se supara. Evident, daca faci si suport la munca ta, comunitatea pe care o suporti iti va sari in cap, spunindu-ti ca nu gasesc de unde se face exportul. Pentru ca evident nu se asteapta nimeni sa fie la File->Export, sau in Utilities sau mai stiu eu unde. Elementul surpriza trebuie sa fie prezent, drept pentru care tu il strici povestindu-le in manul unde sa-l gaseasca. De fapt tu il pusesei in lista de modificatori. Ca asa ai vazut pe undeva si merge perfect. More, bump mapping. Deoarece au inteles OOP, Creatorii ne sfatuiesc sa facem copy/paste la codul care calculeaza derivatele si asta in fiecare nod de textura pe care-l suportam: Cod sursă: Point3 TexturaMea::EvalNormalPerturb(ShadeContext& sc)
{
Point3 dPdu, dPdv;
if (!sc.doMaps) return Point3(0,0,0);
if (gbufID) sc.SetGBufferID(gbufID);
uvGen->GetBumpDP(sc,dPdu,dPdv);
Point2 dM = uvGen->EvalDeriv(sc,&mysamp);
return dM.x*dPdu+dM.y*dPdv;
}
Partea hilara este ca si intre ei nu se mai inteleg, deoarece Max-ul fiind un colaj de culturi si viziuni, Indienii care au fost sumonati sa se exprime prin SDK, sint putin nedumeriti cu privire la ce se intimpla: Further, the docs suggest that all classes should implement Object::GetParamBlockIndex() to map logical parameter ID's into ParamBlock indexes. Again, only some of the MAX core classes do this and some of them do it inconsistently. Citind rindurile de mai sus, nu poti decit sa te simti in siguranta si sa doresti sa te aventurezi prin jungla. Si ca in orice mare dictatura si aici era nevoie de un Cult al Personalitatii, evident sub un nume de Lolita. Este vorba despre ParamBlocks. Niste structuri cu menirea sa te ajute sa faci UI-ul rapid. Doamnelor si domnilor, Sfinti Parinti si frati Romani, ascultati un supravietuitor al Gulagului Autodesk. Daca vreti sa faceti UI, faceti-l de mina. Chit ca dureaza o saptamina. Doar cind nu se mai incarca scene mai vechi veti simti puterea si lumina care emana de la un SendMessage() curat si sincer. Acesti ParamBloci, se trimit la Engine-ul care este, prin constructor. Si fara numar. Adicalea constructor cu parametrii fara numar pe care clasa de baza ii parseaza si nu ii intelege aproape niciodata, daca nu esti atent. Un simplu INT pus prost, il omoara pe Max cind ii incarca clasa. Atentie, vorbesc de un constructor care are 600 de linii. De cod. In mare parte copy/paste prone to the fucking errors. ... In caz ca nu ati adormit, iesirea de jungla se chema Maya. Use it, MEL it and love it. Simplu, straightforward and powerfull.
Ultima editare efectuată de jos8cal pe 11 May 2008 15:54:29; 3 editări în total
|
Status:
Înregistrat pe: 10 Jun 2007 22:08:36
Vârsta: ? ani
Mesaje: 188
Locatie:
|
| |
Postat la 11 May 2008 15:37:44 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Hehe..  La recomandarea lui Nekitu, folosesc COLLADA. Adica nu ma ating deloc de MAXScript sau SDK-ul MAX, ci doar scriu un convertor COLLADA -> formatul meu, si las pe altii sa se distreze cu exportorul, ColladaMax. Nu am apucat sa intru in multe detalii, defapt nu stiu nimic despre animatii, dar pana acum pare roz.
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 11 May 2008 18:00:36 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
(trebuie sa il folosim pe asta intern deocamdata) Defapt ma refeream la 3DS Max in general, vs Maya, nu la MAXScript.
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 11 May 2008 19:44:42 Subiect: < fara subiect >
|
|
|
Dark info:
|
Dark:
Despre partea cu matricile vs. animatia vs. the world, transformarea este in felul urmator: Cod sursă:
clipPos = vertexPos * boneMatrix * worldViewProj
Acilea, clipPos este pozitia in clip space, adica ce trebuie sa scoti tu din vertex shader. vertexPos e pozitia in bind pose, sau rest pose, sau cum vrei sa-i zici, adica pozitia in care era modelul cind a fost bindat la schelet (aia cind sta cu miinile in T sau pe linga corp); cu alte cuvinte, pozitia din vertex buffer. boneMatrix e matricea pe care o calculezi facind blend intre matricile oaselor. Dupa ce inmultesti vertexul cu matricea oaselor, ajungi in object space. De aici trebuie sa inmultesti cu worldViewProj ca sa aduci in world space si sa proiectezi pe film (near plane). Acum, despre scalari. Daca ai scalari uniforme in oase, e totul frumos, transformi normala exact ca pe vertecsi. E foarte dubios sa vrei scalari neuniforme in oase. Pot fi utile daca vrei sa faci muschi si alte chestii care se umfla, dar aia se poate vraji si altfel, cu scalare uniforma, din influente. Iti trebuie un animator/technical artist inventiv, dar se face. Pentru scalari neuniforme in oase trebuie ori sa inversezi 4 matrici in shader (no way), ori sa trimiti 2 matrici pentru fiecare os (no way again). Exista insa o forma utila de scalare "neuniforma": sa impingi vertexul in directia normalei. Cu asta se pot face diverse efecte gen aura de quad damage din Quake3, sau modificarea proportiilor corpului. De exemplu toata customizarea de personaj din Conan, unde poti sa-ti faci personajul mai gras, slab, inalt, muschiulos etc. e facuta cu genul asta de scalare. Singurul lucru pe care trebuie sa-l faci e sa tii multiplicatorul de push undeva (cum ar fi in w-ul translatiei osului) si sa faci in cod: Cod sursă:
position += normal * bonePush;
O chestie despre cum se calculeaza matricea aia a oaselor: intuitiv, codul ar fi: Cod sursă:
animatedPos = boneWeights.x * mul(bones[boneIndices.x], vertexPos);
animatedPos += boneWeights.y * mul(bones[boneIndices.y], vertexPos);
animatedPos += boneWeights.z * mul(bones[boneIndices.z], vertexPos); animatedPos += boneWeights.w * mul(bones[boneIndices.w], vertexPos);
Asta inseamna 4 inmultiri vector-matrice pentru pozitie, plus inca 4 pentru normala. Daca vrei si normal mapping, mai ai 4 pentru tangenta. In loc de asta, faci: Cod sursă:
float4x4 boneMat = boneWeights.x * bones[boneIndices.x];
boneMat += boneWeights.y * bones[boneIndices.y];
boneMat += boneWeights.z * bones[boneIndices.z];
boneMat += boneWeights.w * bones[boneIndices.w];
animatedPos = mul(boneMat, vertexPos);
Adica blend-uiesti matricile in loc sa blend-uiesti pozitiile transformate. Vezi capitolul 4 din GPU Gems 1. Despre vertecsii influentati de mai putin de 4 oase: influentele pentru oasele lipsa sint 0 si gata. Pentru dynamic flow control in shader ai nevoie de SM 3 sau de bunavointa compilatorului de a face giumbuslucuri aritmetice, care ajung sa fie mai costisitoare decit sa faci inmultirea aia cu 0. Ai grija cu COLLADA, ca e un format de hobby, la fel de penal ca toate celelalte. Sigur, daca nu vrei sa-ti scrii exporter, poti sa exporti intr-un format "cunoscut", pentru care exista deja plug-in-uri, cum ar fi COLLADA, .x, prostia lui Ogre etc. Desi .x e un gunoi, as opta mai repede pentru el, deoarece COLLADA e XML si stocatul geometriei in fisiere text imi ridica parul pe spate.
Ultima editare efectuată de Dark pe 11 May 2008 19:48:34; 2 editări în total
"Am crezut ca esti ceva mai avansat" - Nekitu, 2008 A.D. Autobaza
|
Status:
Înregistrat pe: 12 May 2007 20:12:30
Vârsta: ? ani
Mesaje: 729
Locatie:
Programator
|
| |
Postat la 11 May 2008 20:29:21 Subiect: < fara subiect >
|
|
|
jos8cal info:
|
jos8cal:
In caz ca ai nelamuriri la metoda de care spune Dark cu miscatul pe directia normalei, vezi ca este povestita mai pe larg tot in cartea lui NVidia de care ziceai initial, la chiar primul capitol: http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter06.html Bine, nu e cu oase, dar e simplu de prins si extins.
|
Status:
Înregistrat pe: 10 Jun 2007 22:08:36
Vârsta: ? ani
Mesaje: 188
Locatie:
|
| |
Postat la 11 May 2008 23:25:43 Subiect: < fara subiect >
|
|
|
meeshoo info:
|
meeshoo:
Collada a fost facut conceput mai degraba pentru interchange intre aplicatii, cum se vrea si Fbx-ul. Adica nu e un format pe care sa il folosesti in forma finala a jocului, dar poti sa exporti din aplicatii 3D in COLLADA si apoi sa folosesti un tool de conversie din collada in formatul propriu binar. In felul asta te asiguri ca ai un exporter complex (care exporta inclusiv fizica si shaderi), deci scapi de grija de a scrie un exporter, iar pe de cealalta parte cei care se ocupa de intretinerea standardului iti ofera si un API bogat de accesare a unui fisier collada, astfel incat scrierea converterului pentru format propriu poate fi floare la ureche. Am facut mai demult un astfel de convertor pentru un engine scris in .NET (jadengine). Fiind si convertorul in .NET, nu am putut folosi API-ul celor din spatele COLLADA si a trebuit sa folosesc mai multe tooluri si hackuri ca sa obtin ceva asemanator, dar pana la urma a functionat 
Ultima editare efectuată de meeshoo pe 11 May 2008 23:27:55; 1 editări în total
|
Status:
Înregistrat pe: 15 May 2007 10:52:43
Vârsta: 29 ani
Mesaje: 316
Locatie: Cluj-Napoca
Programator
Jungle Troll Entertainment
|
| |
Postat la 12 May 2008 00:17:10 Subiect: < fara subiect >
|
|
|
Dark info:
|
Dark:
Totusi, un exporter de Maya e vreo 200-300 de linii. In Max e mai mare, dar nu chiar asa de mare. Buchisirea spec-ul de COLLADA, enervarea cu parser-ul de XML si enervarea cu atof() dureaza cam tot atit cit ar dura sa freci SDK-ul aplicatiei 3D favorite si sa convertesti unul din exemple intr-un exporter. In plus, daca ti se pune pe chelie sa exporti curbele de animatie intr-un anumit mod, stii ca apelezi o functie din API-ul aplicatiei si le iei. Dureaza oricum mai putin decit sa-l convingi pe exporterul de COLLADA ca vrei ceva de la el.
"Am crezut ca esti ceva mai avansat" - Nekitu, 2008 A.D. Autobaza
|
Status:
Înregistrat pe: 12 May 2007 20:12:30
Vârsta: ? ani
Mesaje: 729
Locatie:
Programator
|
| |
Postat la 12 May 2008 03:16:27 Subiect: Re:
|
|
|
nekitu info:
|
nekitu:
Dark a scris: Totusi, un exporter de Maya e vreo 200-300 de linii. In Max e mai mare, dar nu chiar asa de mare. Buchisirea spec-ul de COLLADA, enervarea cu parser-ul de XML si enervarea cu atof() dureaza cam tot atit cit ar dura sa freci SDK-ul aplicatiei 3D favorite si sa convertesti unul din exemple intr-un exporter. In plus, daca ti se pune pe chelie sa exporti curbele de animatie intr-un anumit mod, stii ca apelezi o functie din API-ul aplicatiei si le iei. Dureaza oricum mai putin decit sa-l convingi pe exporterul de COLLADA ca vrei ceva de la el. Nu stiu de ce esti refractar in privinta COLLADA, e XML dar e pentru scurt timp, ca il folosesti sa iti vina datele in converterul tau, din orice program de modelare. Am lucrat si in max si maya pentru exportere, insa API-urile mi se par varza, MEL e ok, dar e doar pt Maya, pentru MAX am facut maxporter ( http://maxporter.uv.ro ) insa numai eu stiu cate nopti am injurat SDK-ul de max, care e o abominatie. Asa ca recomand cu caldura COLLADA, nu ai ce sa inveti, iti da toata scena exportata mura in gura, API-ul de import e documentat ( FCollada exporters and importer, de la FeelingSoftware), sunt si cateva exemple, deci chiar nu vad care e problema, Crytek il adopta, Unreal il adopta, Nytro il adopta  , inseamna ca o fi ceva de capul lui  .
Ultima editare efectuată de nekitu pe 12 May 2008 03:32:16; 3 editări în total
SpoOoOoock! Life Is Too Short For Cheap Chocolate
|
|
| |
Postat la 12 May 2008 10:20:25 Subiect: Re: Re:
|
|
|
Dark info:
|
Dark:
nekitu a scris: Am lucrat si in max si maya pentru exportere, insa API-urile mi se par varza, Daca API-ul de Maya ti se pare varza, ai o MARE problema. nekitu a scris: Asa ca recomand cu caldura COLLADA, nu ai ce sa inveti, iti da toata scena exportata mura in gura Aha, deci sa-nteleg ca gunoiul ce urmeaza e mai usor de parsat decit sa chemi o amarita de functie din SDK (poza, ca are prea multe mai mic mai mare pentru forumul asta): Nu, pe bune, aia e o translatie de 4 frame-uri. Tu imi zici cu mina pe inima ca preferi sa parsezi asta in loc sa chemi o functie? Input semantics? Accessor? Stride? WTF? Mi-am pierdut aproximativ 10 minute din viata inregistrindu-ma pe site-ul amaritilor alora, downloading prostia lor de plug-jn de Max si testind o scena cu o cutie. Refuz sa-mi pierd inca 10 minute uitindu-ma pe SDK-ul lor, dar mi se pare teribil de amuzant sa alegi ruta Max -> Collada -> Collada Random SDK -> fisier in loc de Max -> fisier. nekitu a scris: Crytek il adopta, Unreal il adopta, Nytro il adopta  , inseamna ca o fi ceva de capul lui  . Crytek nu-l adopta, Unreal nu-l adopta. Engine-urile lor il suporta din motive de isterie generala. A infectat o multime de tool-uri de authoring, deci e bun ca bullet point pe lista de feature-uri si pentru o firma cu 400000 de programatori e un efort neglijabil. Progresul de la "suporta" la "adopta" se face in momentul in care cineva baga COLLADA asta in pipeline, adica atunci cind vreun proiect serios isi exporta intii asset-urile in COLLADA, dupa care le converteste in formatul propriu cu vreun filtru. O fi API-ul de Max o abominatie, dar asta e o abominatie si mai mare. Revin la ideea originala: COLLADA o fi bun pentru hobby, cind trebuie sa faci ceva quick'n'dirty; atunci cind iti iei 10 biblioteci de pe net si scrii 3 linii de cod sa vorbeasca intre ele ajungind la acelasi rezultat ca atunci cind folosesti Game Creator, FPS Creator sau mai stiu eu ce (ca alea nu-s "cool"). Are exporter, vai, am scapat de corvoada invatarii API-ului de Max. Are si un API de import, aplauze. Cuiva i se pare ca scuteste niste cod si niste frustrare schimbind un API cu celalalt si introducind un pas in plus in pipeline. Posibil sa mearga cind exporti 3 camere cu 2 cutii, dar n-o sa scaleze. Nu zic asta ca sa fac misto de aia care fac proiecte mici/indie, da' incerc sa pun lucrurile in perspectiva. Promovarea orbeasca a unei cirpeli doar pe motiv ca o suporta diverse softuri nu-i un lucru pozitiv. Ce urmeaza, ridicarea in slavi a lui OpenSG?
"Am crezut ca esti ceva mai avansat" - Nekitu, 2008 A.D. Autobaza
|
Status:
Înregistrat pe: 12 May 2007 20:12:30
Vârsta: ? ani
Mesaje: 729
Locatie:
Programator
|
| |
Postat la 12 May 2008 10:51:03 Subiect: < fara subiect >
|
|
|
nekitu info:
|
nekitu:
tu nu intelegi ca nu ai nevoie sa stii XML-ul ala ? ti-l parseaza lib-ul omule, si daca citesti mai bine, am zis de MEL ca e ok, insa ramai restrictionat pe Maya, inca odata esit incapatanat impotriva unui format care te poate salva de batai de cap in export, ai tu frica de fisiere text xml, aia e alta problema, ai fobie atunci  , inca odata recomand COLLADA, din o luna cat mi-a luat sa fac exportere pentru Max si Maya, cu COLLADA mi-au trebuit 4 zile, asa ca imi intelegi opinia, in fine, e doar o recomandare bazata pe experienta, fiecare utilizeaza ce vrea, tu ramai cu Maya MELjoy, si distruge-ti creierul in MAX, have fun  , masochistule.
SpoOoOoock! Life Is Too Short For Cheap Chocolate
|
|
| |
Postat la 13 Jun 2008 08:50:16 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
A iesit nVidia FX Composer 2.5 - al 2lea Beta. La incercat careva inca? Tot la fel de crashy e? 
Ultima editare efectuată de raicuandi pe 13 Jun 2008 08:51:24; 1 editări în total
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 08 Jul 2008 23:26:14 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Ah, ce folositor  Am vrut sa aflu de ceva timp, dar nu era tocmai o prioritate. Cum sa vezi un array in debuggerul Visual Studio cand variabila e un pointer./le: btw: a iesit FX Composer 2.5 final.
Ultima editare efectuată de raicuandi pe 08 Jul 2008 23:28:09; 1 editări în total
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 10 Jul 2008 09:09:37 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Aici lucrez eu...  (yep, back at Holopoint!) Inca una, in spatele cladirii  Cineva e fan mare Commander Keen  (si mai sunt cateva rasfirate prin oras!)
Ultima editare efectuată de raicuandi pe 10 Jul 2008 10:18:20; 1 editări în total
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 16 Jul 2008 07:52:25 Subiect: < fara subiect >
|
|
|
raicuandi info:
|
raicuandi:
Acum cateva zile curatam putin shaderele din Tillian Tribes. (primele shadere care le-am scris) Avem un pixel shader care acopera cam jumate din ecran tot timpul. E, dupa ce am inlocuit un branch cu ceva linear, framerate-ul a sarit +10...
Method 2: Move Your Mouse Pointer If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
|
Status:
Înregistrat pe: 24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator
|
| |
Postat la 16 Jul 2008 14:38:59 Subiect: < fara subiect >
|
|
|
Jinx info:
|
Jinx:
Congrats!
|
Status:
Înregistrat pe: 03 May 2007 22:45:14
Vârsta: 20 ani
Mesaje: 720
Locatie: Pitești, Argeș
Game designer
|
| |
Pagina 7 din 9
[
5
|
6
|
7
|
8
|
9
]
|
|
|